diff -Nru qutecom-2.2~rc3.hg643~dfsg1/build/build_make.sh qutecom-2.2+dfsg1/build/build_make.sh --- qutecom-2.2~rc3.hg643~dfsg1/build/build_make.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/build/build_make.sh 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ #!/bin/bash # -# Script to build WengoPhone on UNIX. +# Script to build QuteCom on UNIX. # # Copyright (c) 2006-2007 Andreas Schneider # @@ -62,7 +62,7 @@ cd ${BUILDDIR} -OPTIONS="--graphviz=${BUILDDIR}/wengophone.dot" +OPTIONS="--graphviz=${BUILDDIR}/qutecom.dot" while test -n "$1"; do PARAM="$1" @@ -144,8 +144,8 @@ DOT=$(which dot 2>/dev/null) if [ -n "${DOT}" ]; then - ${DOT} -Tpng -o${BUILDDIR}/wengophone.png ${BUILDDIR}/wengophone.dot - ${DOT} -Tsvg -o${BUILDDIR}/wengophone.svg ${BUILDDIR}/wengophone.dot + ${DOT} -Tpng -o${BUILDDIR}/qutecom.png ${BUILDDIR}/qutecom.dot + ${DOT} -Tsvg -o${BUILDDIR}/qutecom.svg ${BUILDDIR}/qutecom.dot fi exec >&0 2>&0 # so that the logging tee finishes diff -Nru qutecom-2.2~rc3.hg643~dfsg1/build/create_vcproj-VC80.bat qutecom-2.2+dfsg1/build/create_vcproj-VC80.bat --- qutecom-2.2~rc3.hg643~dfsg1/build/create_vcproj-VC80.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/build/create_vcproj-VC80.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -G "Visual Studio 8 2005" \ No newline at end of file +"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -G "Visual Studio 8 2005" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/CMakeLists.txt qutecom-2.2+dfsg1/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ cmake_minimum_required(VERSION 2.4.6) -project(wengophone) +project(qutecom) # Global variables set(APPLICATION_NAME QuteCom CACHE STRING "Name of application") @@ -19,7 +19,7 @@ string(REGEX REPLACE ${tmp_rx} "\\4" APPLICATION_VERSION_4 "${tmp}") # Add options values -include(DefineWengoOptions.cmake) +include(DefineQuteComOptions.cmake) include(DefineInstallationPaths.cmake) include(DefineCPackDefaults.cmake) @@ -56,7 +56,7 @@ endif(IMWRAPPER_BACKEND_MULTI) subdirs( - wengophone + qutecom crashreport ) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/CMakeLists.txt qutecom-2.2+dfsg1/crashreport/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -41,14 +41,14 @@ ) endif (WIN32) -# FIXME: This has been copied from wengophone/src/CMakeLists.txt, it would be +# FIXME: This has been copied from qutecom/src/CMakeLists.txt, it would be # nicer to avoid duplication. if (LINUX) - if (WENGOPHONE_RESOURCEDIR_PATH) + if (QUTECOM_RESOURCEDIR_PATH) ow_add_private_definitions( -DOW_RESOURCEDIR='"${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}"' ) - endif (WENGOPHONE_RESOURCEDIR_PATH) + endif (QUTECOM_RESOURCEDIR_PATH) endif (LINUX) if (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/FtpUpload.cpp qutecom-2.2+dfsg1/crashreport/FtpUpload.cpp --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/FtpUpload.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/FtpUpload.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/FtpUpload.h qutecom-2.2+dfsg1/crashreport/FtpUpload.h --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/FtpUpload.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/FtpUpload.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/main.cpp qutecom-2.2+dfsg1/crashreport/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/QtCrashReport.cpp qutecom-2.2+dfsg1/crashreport/QtCrashReport.cpp --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/QtCrashReport.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/QtCrashReport.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/crashreport/QtCrashReport.h qutecom-2.2+dfsg1/crashreport/QtCrashReport.h --- qutecom-2.2~rc3.hg643~dfsg1/crashreport/QtCrashReport.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/crashreport/QtCrashReport.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/changelog qutecom-2.2+dfsg1/debian/changelog --- qutecom-2.2~rc3.hg643~dfsg1/debian/changelog 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/changelog 2010-11-03 22:24:24.000000000 +0000 @@ -1,10 +1,37 @@ -qutecom (2.2~rc3.hg643~dfsg1-1~jaunty1~ppa1) jaunty; urgency=low +qutecom (2.2+dfsg1-2~jaunty1~ppa1) jaunty; urgency=low - * Upload to Jaunty PPA. - * Revert to source format 1.0. - * Use internal libpurple. + * Upload to QuteCom PPa. + * Remove epoch from verion 4.5 of libqt4-dev dependency. + * Revert to debain package source version 1.0. + + -- Ludovico Cavedon Wed, 03 Nov 2010 15:02:56 -0700 + +qutecom (2.2+dfsg1-2) experimental; urgency=low + + * Add build-dependency on libqtwebkit-dev or libqt4-dev older than 4.7. + * Use correct epoch number in libqt4-dev deendency. + * Fix handling for noopt flag in DEB_BUILD_OPTIONS. + * Add fix-linking-binutils-gold.patch: explicitly link phapi against libdl + on linux. Fixes linking failure with binutils-gold). + + -- Ludovico Cavedon Tue, 02 Nov 2010 23:56:45 -0700 + +qutecom (2.2+dfsg1-1) experimental; urgency=low + + * New upstream release. + * Update watch file and get-orig-source script for new release. + * Bump dependecy on Qt libraries to 4.5. + * Removed pacthes merged upstream: + - google-breakpad-stat.patch + - wait-purple.patch + - google-breakpad-gcc44.patch + * Refresh patches: + - remove-extra-copying-file.patch + * Add patches: + - fix-include-case.patch: fix case in #include. + * Remove empty Renkoo LICENSE.txt.xx file. - -- Ludovico Cavedon Sun, 03 Oct 2010 16:24:02 -0700 + -- Ludovico Cavedon Sat, 23 Oct 2010 02:11:17 -0700 qutecom (2.2~rc3.hg643~dfsg1-1) experimental; urgency=low diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/control qutecom-2.2+dfsg1/debian/control --- qutecom-2.2~rc3.hg643~dfsg1/debian/control 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/control 2010-11-03 22:24:24.000000000 +0000 @@ -4,7 +4,8 @@ Maintainer: Debian VoIP Team Uploaders: Marco Nenciarini , Ludovico Cavedon Build-Depends: cdbs (>= 0.4.27), bzip2, debhelper (>= 7), quilt, - patchutils (>= 0.2.25), cmake (>= 2.6), libqt4-dev (>= 4.3), + patchutils (>= 0.2.25), cmake (>= 2.6), libqt4-dev (>= 4.5), + libqtwebkit-dev | libqt4-dev (<< 4:4.7), libglib2.0-dev (>= 2.10.3), libavcodec-dev (>= 0.cvs20060823-3.1), libswscale-dev (>= 0.cvs20060823-3.1), libgnutls-dev (>= 1.2.9), libboost-serialization-dev, libboost-thread-dev, libboost-signals-dev, diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/copyright qutecom-2.2+dfsg1/debian/copyright --- qutecom-2.2~rc3.hg643~dfsg1/debian/copyright 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/copyright 2010-11-03 22:24:24.000000000 +0000 @@ -956,7 +956,7 @@ These flag icons are available for free use for any purpose with no requirement for attribution. -Files: wengophone/resources/chat/renkoo* +Files: qutecom/resources/chat/renkoo* Copyright: 2007, Torrey Rice/Renkoo 2003-2004 Lawrence E. Rosen. License: BSD diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/get-orig-source.sh qutecom-2.2+dfsg1/debian/get-orig-source.sh --- qutecom-2.2~rc3.hg643~dfsg1/debian/get-orig-source.sh 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/get-orig-source.sh 2010-11-03 22:24:24.000000000 +0000 @@ -17,6 +17,7 @@ curdir="$PWD" destdir=qutecom-$version desttar=qutecom_$version.orig.tar +uptar=qutecom_$upversion.orig.tar.gz if [ -d "$curdir/../tarballs" ]; then finaldir=$curdir/../tarballs @@ -29,10 +30,9 @@ exit 0 fi -workdir="$(mktemp -d)" +workdir="$(mktemp -d --tmpdir=$(pwd))" trap "rm -fr $workdir; echo Aborted." EXIT - # Download sources if [ -d $workdir/$destdir ]; then echo "Uptodate source found ($destdir), skipping download." @@ -49,12 +49,11 @@ mv "$hg_dirname" "$destdir" rm "$hg_filename" else - filename=$(basename $(uscan --destdir "$workdir" --force-download --download-version "$upversion" --dehs | sed -n 's/.*\(.*\)<\/upstream-url>.*/\1/p')) - dirname=$(basename "$filename" .tar.gz) + filename=$(basename $(uscan --no-symlink --destdir "." --force-download --download-version "$upversion" --dehs | sed -n 's/.*\(.*\)<\/upstream-url>.*/\1/p')) cd $workdir - tar zxf "$filename" - mv "$dirname" "$destdir" - rm "$filename" + tar zxf "../$filename" + mv [Qq]ute[Cc]om* "$destdir" + rm "../$filename" fi echo "done." fi @@ -73,7 +72,7 @@ echo "Cleaning tree to remove anything not needed for non-Windows builds..." # Remove windows binary stuff -rm -vrf $destdir/wengophone/nsis +rm -vrf $destdir/qutecom/nsis rm -vrf $destdir/libs/3rdparty/*/binary-lib find $destdir -iname \*.dll -print0 | xargs -0 rm -vf find $destdir -iname \*.lib -print0 | xargs -0 rm -vf diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/fix-include-case.patch qutecom-2.2+dfsg1/debian/patches/fix-include-case.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/fix-include-case.patch 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/fix-include-case.patch 2010-11-03 22:24:24.000000000 +0000 @@ -0,0 +1,28 @@ +Description: fix case of include +Origin: upstream, http://hg.qutecom.org/qutecom-2.2/rev/289be68d1812 +# HG changeset patch +# User laurent +# Date 1287524253 -7200 +# Node ID 289be68d1812aacf1edb2434123fd89c638b5995 +# Parent a0befd202cbc515be3d44501a021e34eb2b79c17 +build fix on linux + +diff -r a0befd202cbc -r 289be68d1812 qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp +--- a/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp Mon Oct 18 22:22:29 2010 +0200 ++++ b/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp Tue Oct 19 23:37:33 2010 +0200 +@@ -42,7 +42,7 @@ + + #include + #include +-#include ++#include + + #include + +@@ -251,4 +251,4 @@ + void QtContactWidget::languageChanged() + { + _ui->retranslateUi(this); +-} +\ No newline at end of file ++} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/fix-linking-binutils-gold.patch qutecom-2.2+dfsg1/debian/patches/fix-linking-binutils-gold.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/fix-linking-binutils-gold.patch 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/fix-linking-binutils-gold.patch 2010-11-03 22:24:24.000000000 +0000 @@ -0,0 +1,21 @@ +Description: Explicitely link phapi against libdl on linux. Fixes linking failure with binutils-gold). +Author: Ludovico Cavedon +Bug: http://trac.qutecom.org/ticket/262 +# HG changeset patch +# User Ludovico Cavedon +# Date 1288748482 25200 +# Node ID f52e8735f2f04a70e11c60614efcd7b1815f6bd7 +# Parent 4c82e1dde9c0881245622f972a96a9702cd5eedb +Explicitely link phapi against libdl on linux. Fixes linking failure with binutils-gold). + +diff -r 4c82e1dde9c0 -r f52e8735f2f0 wifo/phapi/CMakeLists.txt +--- a/wifo/phapi/CMakeLists.txt Thu Oct 21 14:37:10 2010 +0200 ++++ b/wifo/phapi/CMakeLists.txt Tue Nov 02 18:41:22 2010 -0700 +@@ -243,6 +243,7 @@ + ow_add_private_libraries( + pthread + rt ++ dl + ) + + ow_add_private_definitions( diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/google-breakpad-gcc44.patch qutecom-2.2+dfsg1/debian/patches/google-breakpad-gcc44.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/google-breakpad-gcc44.patch 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/google-breakpad-gcc44.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,21 +0,0 @@ -# HG changeset patch -# User Ludovico Cavedon -# Date 1244187042 25200 -# Node ID 8fa54078ac416633edd0e016c8aca7f3c9030f58 -# Parent 3a6131ab94afe1b31376543388251b07f0a183ed -Description: fix compilation of google-breakpad with gcc 4.4 -Author: Ludovico Cavedon - -Index: qutecom-2.2~rc3.hg640~dfsg1/libs/3rdparty/googlebreakpad/src/client/linux/handler/exception_handler.h -=================================================================== ---- qutecom-2.2~rc3.hg640~dfsg1.orig/libs/3rdparty/googlebreakpad/src/client/linux/handler/exception_handler.h 2010-08-22 07:57:02.000000000 -0700 -+++ qutecom-2.2~rc3.hg640~dfsg1/libs/3rdparty/googlebreakpad/src/client/linux/handler/exception_handler.h 2010-08-27 23:36:26.494645255 -0700 -@@ -41,6 +41,8 @@ - - #include - -+#include -+ - namespace google_breakpad { - - class MinidumpGenerator; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/google-breakpad-stat.patch qutecom-2.2+dfsg1/debian/patches/google-breakpad-stat.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/google-breakpad-stat.patch 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/google-breakpad-stat.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -Description: fix compilation with glibc 2.12 -Author: Reinhard Tartler -Bug: http://trac.qutecom.org/ticket/246 -Bug-Debian: http://bugs.debian.org/590234 - ---- a/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc -+++ b/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc -@@ -38,6 +38,7 @@ - #include - #include - #include -+#include - #include - #include - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/remove-extra-copying-file.patch qutecom-2.2+dfsg1/debian/patches/remove-extra-copying-file.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/remove-extra-copying-file.patch 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/remove-extra-copying-file.patch 2010-11-03 22:24:24.000000000 +0000 @@ -2,15 +2,15 @@ Author: Marco Nenciarini Forwarde: not-needed -Index: qutecom-2.2~rc3.hg396~dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt +Index: qutecom-2.2~rc3.hg396~dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt =================================================================== ---- qutecom-2.2~rc3.hg396~dfsg1.orig/wengophone/src/presentation/qt/CMakeLists-install-linux.txt 2009-11-11 23:25:47.000000000 -0800 -+++ qutecom-2.2~rc3.hg396~dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt 2009-11-11 23:26:36.000000000 -0800 +--- qutecom-2.2~rc3.hg396~dfsg1.orig/qutecom/src/presentation/qt/CMakeLists-install-linux.txt 2009-11-11 23:25:47.000000000 -0800 ++++ qutecom-2.2~rc3.hg396~dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt 2009-11-11 23:26:36.000000000 -0800 @@ -86,7 +86,3 @@ RENAME qutecom.png) endforeach(size) -install(FILES -- ${CMAKE_SOURCE_DIR}/wengophone/COPYING -- ${CMAKE_SOURCE_DIR}/wengophone/AUTHORS +- ${CMAKE_SOURCE_DIR}/qutecom/COPYING +- ${CMAKE_SOURCE_DIR}/qutecom/AUTHORS - DESTINATION ${DATA_INSTALL_DIR}) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/series qutecom-2.2+dfsg1/debian/patches/series --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/series 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/series 2010-11-03 22:24:24.000000000 +0000 @@ -1,8 +1,7 @@ -google-breakpad-gcc44.patch cmake-noavformat.patch remove-extra-copying-file.patch cmake-force-fpic.patch -google-breakpad-stat.patch #purple_perl_tcl_noload.patch #curl-openssl-mt-fix.patch -wait-purple.patch +fix-include-case.patch +fix-linking-binutils-gold.patch diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/patches/wait-purple.patch qutecom-2.2+dfsg1/debian/patches/wait-purple.patch --- qutecom-2.2~rc3.hg643~dfsg1/debian/patches/wait-purple.patch 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/patches/wait-purple.patch 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -Description: Make Qt thread wait for the imwrapper thread to exit. -Origin: http://lists.qutecom.org/pipermail/qutecom-dev/2010-September/002784.html - -Index: qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h -=================================================================== ---- qutecom-2.2~rc3.hg643~dfsg1.orig/libs/imwrapper/include/imwrapper/IMWrapperFactory.h 2010-08-31 02:07:50.000000000 -0700 -+++ qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h 2010-09-05 19:46:06.144079034 -0700 -@@ -23,6 +23,7 @@ - #include - - #include -+#include - - class IMChat; - class IMConnect; -@@ -38,9 +39,11 @@ - * @author Philippe Bernery - * @author Tanguy Krotoff - */ --class IMWrapperFactory : Interface { -+class IMWrapperFactory : Interface, public Trackable { - public: - -+ Event terminatedEvent; -+ - virtual ~IMWrapperFactory() { - } - -Index: qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp -=================================================================== ---- qutecom-2.2~rc3.hg643~dfsg1.orig/libs/imwrapper/src/purple/PurpleIMFactory.cpp 2010-08-31 02:07:50.000000000 -0700 -+++ qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp 2010-09-05 19:46:06.144079034 -0700 -@@ -356,6 +356,7 @@ - // Don't stop gMainLoop here: this is called when the user logoff, but we - // want to keep the loop running for the whole time the application is - // running. -+ PurpleIMFactory::getFactory().terminatedEvent(); - } - - void PurpleIMFactory::terminate() { -Index: qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp -=================================================================== ---- qutecom-2.2~rc3.hg643~dfsg1.orig/wengophone/src/presentation/qt/QtWengoPhone.cpp 2010-08-31 02:07:50.000000000 -0700 -+++ qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp 2010-09-05 19:46:06.179078876 -0700 -@@ -71,6 +71,7 @@ - #include - - #include -+#include - - #include - #include -@@ -111,6 +112,7 @@ - _chatWindow = NULL; - _activeTabBeforeCall = NULL; - _qtWebDirectory = NULL; -+ _want_to_exit = false; - - NetworkProxyDiscovery::getInstance().proxyNeedsAuthenticationEvent += - boost::bind(&QtWengoPhone::proxyNeedsAuthenticationEventHandler, this, _1, _2); -@@ -141,7 +143,15 @@ - //TODO delete created objects - } - -+void QtWengoPhone::terminatedEventHandler() { -+ if(_want_to_exit) -+ QCoreApplication::exit(EXIT_SUCCESS); -+} -+ - void QtWengoPhone::initUi() { -+ -+ IMWrapperFactory::getFactory().terminatedEvent += boost::bind(&QtWengoPhone::terminatedEventHandler,this); -+ - // Init parts of the UI which do not rely on Control layer - QApplication::setQuitOnLastWindowClosed(false); - -@@ -689,6 +699,8 @@ - //// - - _cWengoPhone.terminate(); -+ -+ _want_to_exit = true; - } - - void QtWengoPhone::phoneComboBoxClicked() { -@@ -698,7 +710,7 @@ - } - - void QtWengoPhone::exitEvent() { -- QCoreApplication::exit(EXIT_SUCCESS); -+ //QCoreApplication::exit(EXIT_SUCCESS); - } - - void QtWengoPhone::showHistory() { -Index: qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h -=================================================================== ---- qutecom-2.2~rc3.hg643~dfsg1.orig/wengophone/src/presentation/qt/QtWengoPhone.h 2010-08-31 02:07:50.000000000 -0700 -+++ qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h 2010-09-05 19:46:06.183101664 -0700 -@@ -99,6 +99,8 @@ - - void connectionStatusEventHandler(int totalSteps, int currentStep, const std::string & infoMsg); - -+ void terminatedEventHandler(); -+ - QWidget * getWidget() const; - - void setQtDialpad(QtDialpad * qtDialpad); -@@ -264,6 +266,8 @@ - std::auto_ptr _qtIMAccountMonitor; - - QtWebDirectory * _qtWebDirectory; -+ -+ bool _want_to_exit; - }; - - #endif //OWQTWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/rules qutecom-2.2+dfsg1/debian/rules --- qutecom-2.2~rc3.hg643~dfsg1/debian/rules 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/rules 2010-11-03 22:24:24.000000000 +0000 @@ -7,13 +7,7 @@ DEB_DESTDIR=$(CURDIR)/debian/qutecom DEB_DH_STRIP_ARGS := --dbg-package=qutecom-dbg -DEB_INSTALL_DOCS_qutecom := $(CURDIR)/wengophone/AUTHORS - -ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) - DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_BUILD_TYPE=Debug -else - DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_BUILD_TYPE=RelWithDebInfo -endif +DEB_INSTALL_DOCS_qutecom := $(CURDIR)/qutecom/AUTHORS DEB_CMAKE_EXTRA_FLAGS := -DQT_UIC_EXECUTABLE=/usr/bin/uic-qt4 \ -DCMAKE_BUILD_WITH_INSTALL_RPATH=ON \ @@ -24,11 +18,17 @@ -DSPEEX_INTERNAL=OFF \ -DSAMPLERATE_INTERNAL=OFF \ -DCURL_INTERNAL=OFF \ - -DLIBPURPLE_INTERNAL=ON \ + -DLIBPURPLE_INTERNAL=OFF \ -DPHAPI_VIDEO_SUPPORT=ON \ -DHAVE_SWSCALE=1 +ifeq (,$(filter noopt,$(DEB_BUILD_OPTIONS))) + DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_BUILD_TYPE=RelWithDebInfo +else + DEB_CMAKE_EXTRA_FLAGS += -DCMAKE_BUILD_TYPE=Debug +endif + ifeq ($(DEB_HOST_ARCH), i386) DEB_CMAKE_EXTRA_FLAGS += -DENABLE_CRASHREPORT=ON else @@ -41,7 +41,7 @@ common-install-impl:: mkdir -p $(DEB_DESTDIR)-data/usr/share/ - rm $(DEB_DESTDIR)/usr/share/qutecom/chat/Renkoo\ LICENSE.txt + rm $(DEB_DESTDIR)/usr/share/qutecom/chat/Renkoo\ LICENSE.txt* mv $(DEB_DESTDIR)/usr/share/* $(DEB_DESTDIR)-data/usr/share/ mv $(DEB_DESTDIR)-data/usr/share/applications $(DEB_DESTDIR)/usr/share/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/debian/watch qutecom-2.2+dfsg1/debian/watch --- qutecom-2.2~rc3.hg643~dfsg1/debian/watch 2010-11-03 22:24:21.000000000 +0000 +++ qutecom-2.2+dfsg1/debian/watch 2010-11-03 22:24:24.000000000 +0000 @@ -1,3 +1,3 @@ version=3 -opts="uversionmangle=s/-RC/~rc/,dversionmangle=s/\.dfsg\d+//" http://www.qutecom.com/downloads/qutecom-(.*).tar.gz +opts="uversionmangle=s/-RC/~rc/,dversionmangle=s/\.dfsg\d+//" http://www.qutecom.com/downloads/[Qq]ute[Cc]om-(.*).tar.gz diff -Nru qutecom-2.2~rc3.hg643~dfsg1/DEBUGGING.txt qutecom-2.2+dfsg1/DEBUGGING.txt --- qutecom-2.2~rc3.hg643~dfsg1/DEBUGGING.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/DEBUGGING.txt 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ # Adjusting log output -The WengoPhone logs in different components and provides 5 log levels: +The QuteCom logs in different components and provides 5 log levels: - 0: Debug - 1: Info - 2: Warn diff -Nru qutecom-2.2~rc3.hg643~dfsg1/DefineCPackDefaults.cmake qutecom-2.2+dfsg1/DefineCPackDefaults.cmake --- qutecom-2.2~rc3.hg643~dfsg1/DefineCPackDefaults.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/DefineCPackDefaults.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -82,11 +82,11 @@ # Linux-i686 ### general settings -set(CPACK_PACKAGE_NAME "wengophone") -set(CPACK_PACKAGE_VENDOR "Wengo") +set(CPACK_PACKAGE_NAME "qutecom") +set(CPACK_PACKAGE_VENDOR "QuteCom") set(CPACK_PACKAGE_DESCRIPTION_SUMMARY "SIP Softphone") -set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/wengophone/COPYING") +set(CPACK_RESOURCE_FILE_LICENSE "${CMAKE_SOURCE_DIR}/qutecom/COPYING") ### versions set(CPACK_PACKAGE_VERSION "2.0.99") diff -Nru qutecom-2.2~rc3.hg643~dfsg1/DefineQuteComOptions.cmake qutecom-2.2+dfsg1/DefineQuteComOptions.cmake --- qutecom-2.2~rc3.hg643~dfsg1/DefineQuteComOptions.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/DefineQuteComOptions.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +option(BUILDID_SUPPORT "Build QuteCom/phApi with buildId (builds faster without)" ON) + +option(QUTECOM_RESOURCEDIR_PATH "QuteCom: use ${DATA_INSTALL_DIR} as hardcoded resource path" ON) +option(QUTECOM_XV_SUPPORT "Build QuteCom with XV hardware acceleration support" ON) + +option(SIPWRAPPER_BACKEND_SIPX "SipX backend for SipWrapper" OFF) +option(SIPWRAPPER_BACKEND_PHAPI "PhApi backend for SipWrapper" OFF) +option(IMWRAPPER_BACKEND_MULTI "PhApi and Gaim backend for IMWrapper" ON) + +option(LOGGER_ENABLE_EVENT "Enable the event notification in Logger" OFF) + +option(PHAPI_VIDEO_SUPPORT "Build phApi with video support" ON) + +if (LINUX) + option(PHAPI_SAMPLERATE_SUPPORT "Build phApi with libsamplerate support" ON) + option(PHAPI_AUDIO_ALSA_SUPPORT "Build phApi with ALSA support" ON) + option(PHAPI_AUDIO_ARTS_SUPPORT "Build phApi with aRts support" OFF) + option(PHAPI_AUDIO_ESD_SUPPORT "Build phApi with ESD support" OFF) + option(PHAPI_AUDIO_OSS_SUPPORT "Build phApi with OSS support" ON) +endif (LINUX) + +option(PHAPI_HTTPTUNNEL_SUPPORT "Build phApi with httptunnel support" ON) +option(PHAPI_QOS_DEBUG_SUPPORT "Build phApi with QOS debug support" OFF) +option(PHAPI_EMBEDDED_SUPPORT "Build phApi with embedded target support" OFF) +option(PHAPI_CODEC_ILBC_SUPPORT "Build phApi with codec ILBC support" OFF) +option(PHAPI_CODEC_AMR_SUPPORT "Build phApi with codec AMR support" OFF) +option(PHAPI_SPEEXWB_REPLACES_AMRWB_HACK "Build phApi with Speex-WB/AMR-WB hack" OFF) +option(PHAPI_SPEEXWB_REPLACES_AMRNB_HACK "Build phApi with Speex-WB/AMR-NB hack" OFF) +option(PHAPI_SPEEXWB_REPLACES_G726WB_HACK "Build phApi with Speex-WB/G726-WB hack" OFF) +option(PHAPI_PYTHON_WRAPPER "Python wrapper for PhApi, used for unit testing" OFF) + +option(COPY_DATA_FILES_ON_CONFIGURE "Copy data files on configure" ON) + +if (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") + option(ENABLE_CRASHREPORT "Enable integrated crashreport system" OFF) +else (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") + option(ENABLE_CRASHREPORT "Enable integrated crashreport system" OFF) +endif (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") + +option(CUSTOM_ACCOUNT "Enable custom account" OFF) + +option(DISABLE_CALL_FORWARD "Disable call forwarding by http suport" ON) + +option(DISABLE_SMS "Disable sms by http support" ON) + +option(DISABLE_VOICE_MAIL "Disable voice mail by http support" ON) + +option(DISABLE_FILETRANSFER "Disable file transfer option" ON) + +option(DISABLE_MANUAL_CALL_FORWARD "Disable the option to manually forward a call" OFF) + +option(ENABLE_FACEBOOK "Enable Facebook support" OFF) +option(ENABLE_MYSPACE "Enable MySpace support" OFF) +option(ENABLE_SKYPE "Enable Skype support" OFF) +option(ENABLE_TWITTER "Enable Twitter support" OFF) + +if (WIN32) + option(ENABLE_CONSOLE "Force generate of executable with Console Window enabled" OFF) + option(FFMPEG_OLD_VERSION "Use the old version of ffmpeg" OFF) + option(OWSOUND_PORTAUDIO_SUPPORT "Build libsound with PortAudio support" ON) +endif (WIN32) + +option(ENABLE_UNIT_TEST "Enable Unit Test" OFF) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/DefineWengoOptions.cmake qutecom-2.2+dfsg1/DefineWengoOptions.cmake --- qutecom-2.2~rc3.hg643~dfsg1/DefineWengoOptions.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/DefineWengoOptions.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -option(BUILDID_SUPPORT "Build WengoPhone/phApi with buildId (builds faster without)" ON) - -option(WENGOPHONE_RESOURCEDIR_PATH "WengoPhone: use ${DATA_INSTALL_DIR} as hardcoded resource path" ON) -option(WENGOPHONE_XV_SUPPORT "Build WengoPhone with XV hardware acceleration support" ON) - -option(SIPWRAPPER_BACKEND_SIPX "SipX backend for SipWrapper" OFF) -option(SIPWRAPPER_BACKEND_PHAPI "PhApi backend for SipWrapper" OFF) -option(IMWRAPPER_BACKEND_MULTI "PhApi and Gaim backend for IMWrapper" ON) - -option(LOGGER_ENABLE_EVENT "Enable the event notification in Logger" OFF) - -option(PHAPI_VIDEO_SUPPORT "Build phApi with video support" ON) - -if (LINUX) - option(PHAPI_SAMPLERATE_SUPPORT "Build phApi with libsamplerate support" ON) - option(PHAPI_AUDIO_ALSA_SUPPORT "Build phApi with ALSA support" ON) - option(PHAPI_AUDIO_ARTS_SUPPORT "Build phApi with aRts support" OFF) - option(PHAPI_AUDIO_ESD_SUPPORT "Build phApi with ESD support" OFF) - option(PHAPI_AUDIO_OSS_SUPPORT "Build phApi with OSS support" ON) -endif (LINUX) - -option(PHAPI_HTTPTUNNEL_SUPPORT "Build phApi with httptunnel support" ON) -option(PHAPI_QOS_DEBUG_SUPPORT "Build phApi with QOS debug support" OFF) -option(PHAPI_EMBEDDED_SUPPORT "Build phApi with embedded target support" OFF) -option(PHAPI_CODEC_ILBC_SUPPORT "Build phApi with codec ILBC support" OFF) -option(PHAPI_CODEC_AMR_SUPPORT "Build phApi with codec AMR support" OFF) -option(PHAPI_SPEEXWB_REPLACES_AMRWB_HACK "Build phApi with Speex-WB/AMR-WB hack" OFF) -option(PHAPI_SPEEXWB_REPLACES_AMRNB_HACK "Build phApi with Speex-WB/AMR-NB hack" OFF) -option(PHAPI_SPEEXWB_REPLACES_G726WB_HACK "Build phApi with Speex-WB/G726-WB hack" OFF) -option(PHAPI_PYTHON_WRAPPER "Python wrapper for PhApi, used for unit testing" OFF) - -option(COPY_DATA_FILES_ON_CONFIGURE "Copy data files on configure" ON) - -if (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") - option(ENABLE_CRASHREPORT "Enable integrated crashreport system" OFF) -else (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") - option(ENABLE_CRASHREPORT "Enable integrated crashreport system" OFF) -endif (LINUX AND NOT "${CMAKE_SYSTEM_PROCESSOR}" MATCHES "i[3456]86") - -option(CUSTOM_ACCOUNT "Enable custom account" OFF) - -option(DISABLE_CALL_FORWARD "Disable call forwarding by http suport" ON) - -option(DISABLE_SMS "Disable sms by http support" ON) - -option(DISABLE_VOICE_MAIL "Disable voice mail by http support" ON) - -option(DISABLE_FILETRANSFER "Disable file transfer option" ON) - -option(DISABLE_MANUAL_CALL_FORWARD "Disable the option to manually forward a call" OFF) - -option(ENABLE_FACEBOOK "Enable Facebook support" OFF) -option(ENABLE_MYSPACE "Enable MySpace support" OFF) -option(ENABLE_SKYPE "Enable Skype support" OFF) -option(ENABLE_TWITTER "Enable Twitter support" OFF) - -if (WIN32) - option(ENABLE_CONSOLE "Force generate of executable with Console Window enabled" OFF) - option(FFMPEG_OLD_VERSION "Use the old version of ffmpeg" OFF) - option(OWSOUND_PORTAUDIO_SUPPORT "Build libsound with PortAudio support" ON) -endif (WIN32) - -option(ENABLE_UNIT_TEST "Enable Unit Test" OFF) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/Doxyfile qutecom-2.2+dfsg1/Doxyfile --- qutecom-2.2~rc3.hg643~dfsg1/Doxyfile 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/Doxyfile 2010-10-18 12:50:12.000000000 +0000 @@ -3,9 +3,9 @@ #--------------------------------------------------------------------------- # Project related configuration options #--------------------------------------------------------------------------- -PROJECT_NAME = WengoPhone +PROJECT_NAME = QuteCom PROJECT_NUMBER = -OUTPUT_DIRECTORY = /var/www/prod/visible/doxygen/openwengo/wengophone-ng/branches/wengophone-2.1/doc +OUTPUT_DIRECTORY = /var/www/prod/visible/doxygen/openqutecom/qutecom-ng/branches/qutecom-2.1/doc CREATE_SUBDIRS = NO OUTPUT_LANGUAGE = English USE_WINDOWS_ENCODING = NO @@ -86,8 +86,8 @@ libs/timer \ libs/trayicon \ libs/wenbox \ - wengophone/src \ - wengophone/mainpage.doxygen + qutecom/src \ + qutecom/mainpage.doxygen FILE_PATTERNS = RECURSIVE = YES EXCLUDE = diff -Nru qutecom-2.2~rc3.hg643~dfsg1/INSTALL.txt qutecom-2.2+dfsg1/INSTALL.txt --- qutecom-2.2~rc3.hg643~dfsg1/INSTALL.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/INSTALL.txt 2010-10-18 12:50:12.000000000 +0000 @@ -1,18 +1,18 @@ -# How to build the WengoPhone from source +# How to build the QuteCom from source Other links that should be cleanup: - OWBuild short introduction: [OWBuildIntro](OWBuildIntro) - OWBuild reference documentation: [OWBuild](OWBuild) -- How to get the source code: [GetTheSourceWengoPhoneNg](GetTheSourceWengoPhoneNg) +- How to get the source code: [GetTheSourceQuteComNg](GetTheSourceQuteComNg) - Previous build system instructions: [HowToBuildFromSourceNg](HowToBuildFromSourceNg) -- Another deprecated page: [OWBuildWengoPhone](OWBuildWengoPhone) +- Another deprecated page: [OWBuildQuteCom](OWBuildQuteCom) ## Requirements ### Common requirements -In order to build the WengoPhone, you need to install several components: +In order to build the QuteCom, you need to install several components: - A C++ compiler - [CMake](http://www.cmake.org/) >= 2.4.4. @@ -35,7 +35,7 @@ post][notgcc41] for more information. If GCC 4.0 is not available on your distro, you can use GCC 3.4. -[notgcc41]: http://dev.openwengo.com/pipermail/wengophone-devel/2006-December/004731.html +[notgcc41]: http://dev.openqutecom.com/pipermail/qutecom-devel/2006-December/004731.html Other components: @@ -58,7 +58,7 @@ don't have them on your system. Note that these version numbers are version we know works correctly. If you -build and run the WengoPhone successfully with an older version, please let us +build and run the QuteCom successfully with an older version, please let us know. ### Specific requirements for MacOS X @@ -78,7 +78,7 @@ There is a Windows installer for Boost libraries [here](http://www.boost-consulting.com/products/free) You can use either [Visual C++](http://msdn.microsoft.com/visualc/) or -[MinGW](http://www.mingw.org/) to build the WengoPhone. +[MinGW](http://www.mingw.org/) to build the QuteCom. #### Visual C++ @@ -94,10 +94,10 @@ [MinGW](http://www.mingw.org/) 5.2 can now be used to build the whole software. Please feel free to raise any issue you may have with MinGW on the -[wengophone-devel mailing list][wpdevel]. When using MinGW, you must install +[qutecom-devel mailing list][wpdevel]. When using MinGW, you must install the [Python Win32 extensions][pywin32]. -[wpdevel]: http://dev.openwengo.org/mailman/listinfo/wengophone-devel +[wpdevel]: http://dev.openqutecom.org/mailman/listinfo/qutecom-devel [pywin32]: http://starship.python.net/~skippy/win32/Downloads.html @@ -130,11 +130,11 @@ - CMAKE_C_COMPILER: The path to the C compiler - CMAKE_CXX_COMPILER: The path to the C++ compiler -### CMake options defined for the WengoPhone +### CMake options defined for the QuteCom -WengoPhone CMake options are defined in three files: +QuteCom CMake options are defined in three files: -- DefineWengoOptions.cmake: WengoPhone options +- DefineQuteComOptions.cmake: QuteCom options - libs/3rdparty/CMakeLists.txt: Whether to use internal or system versions of libraries - libs/3rdparty/portaudio/CMakeLists.txt: PortAudio options @@ -144,7 +144,7 @@ the build dir when running - GNU/Linux options: - ENABLE_CRASHREPORT: If ON (the default), intercept crashes and provide a - graphical interface to report information to Wengo on crash. If OFF, just quit + graphical interface to report information to QuteCom on crash. If OFF, just quit and dump core. - Windows options: - OWSOUND_PORTAUDIO_SUPPORT: If ON (the default), use PortAudio. If OFF, use @@ -161,28 +161,28 @@ ## Running -The WengoPhone binary can be found in the `build/debug` dir. +The QuteCom binary can be found in the `build/debug` dir. ### GNU/Linux -If you haven't installed the WengoPhone (using ‛make install'), you need to +If you haven't installed the QuteCom (using ‛make install'), you need to use the ‛--resources‛ option to indicate where resources are located, like this: cd build/debug - ./wengophone --resources /path/to/wengophone-2.2/wengophone/resources + ./qutecom --resources /path/to/qutecom-2.2/qutecom/resources ### MacOS X On MacOS X, the result of the compilation is a MacOS X bundle, named -`WengoPhone.app`. You can start it with `open debug/WengoPhone.app`. +`QuteCom.app`. You can start it with `open debug/QuteCom.app`. This is fine, but you won't see any logging information. If you want to see logging information you can either: -- Start the WengoPhone with gdb: - - `gdb debug/WengoPhone.app` +- Start the QuteCom with gdb: + - `gdb debug/QuteCom.app` - Type r(return) to start -- Run this command: `tail -f debug/WengoPhone.app/Content/MacOS/log-main.txt` +- Run this command: `tail -f debug/QuteCom.app/Content/MacOS/log-main.txt` ## Installation diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc qutecom-2.2+dfsg1/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc --- qutecom-2.2~rc3.hg643~dfsg1/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/3rdparty/googlebreakpad/src/common/linux/file_id.cc 2010-10-18 12:50:12.000000000 +0000 @@ -38,6 +38,7 @@ #include #include #include +#include #include #include Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/imwrapper1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/libs/imwrapper/imwrapper1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/Account.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/Account.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/Account.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/Account.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/EnumIMProtocol.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/EnumIMProtocol.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/EnumIMProtocol.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/EnumIMProtocol.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -41,9 +41,9 @@ IMProtocolICQ, IMProtocolJabber, IMProtocolGoogleTalk, - IMProtocolSIPSIMPLE, // Kept for compatibility with previous version of WengoPhone. @see ConfigImporter + IMProtocolSIPSIMPLE, // Kept for compatibility with previous version of QuteCom. @see ConfigImporter IMProtocolSIP, - IMProtocolWengo, + IMProtocolQuteCom, IMProtocolFaceBook, IMProtocolMySpace, IMProtocolSkype, diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/EnumPresenceState.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/EnumPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/EnumPresenceState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/EnumPresenceState.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccount.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -118,7 +118,7 @@ * This method exists because of Jabber that uses contactId with a 'Resource' * e.g.: 'blabla@jabber.org/Resource'. * - * It will add '/WengoPhone' to the login id if the login does not contain + * It will add '/QuteCom' to the login id if the login does not contain * a Resource. * * @param login the old login diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListFileStorage.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListFileStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListFileStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountList.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListStorage.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer1.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer1.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountListXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountParameters.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountParameters.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountParameters.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountParameters.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountParametersXMLSerializer.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountParametersXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountParametersXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountParametersXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer1.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer1.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMAccountXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMChat.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMChat.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMChat.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMChat.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMChatSession.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMChatSession.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMChatSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMChatSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -49,7 +49,7 @@ * IMChatSession chatSession(*chat); * chatSession.addIMContact(IMContact(account, "alice@hotmail.com")); * chatSession.addIMContact(IMContact(account, "caroline@hotmail.com")); - * chatSession.addIMContact(IMContact(account, "tanguy.krotoff@wengo.fr")); + * chatSession.addIMContact(IMContact(account, "tanguy.krotoff@qutecom.fr")); * chatSession.sendMessage("Hola! how are you?"); * * @@ -64,7 +64,7 @@ * //Waits for IMChat::newIMChatSessionCreatedEvent and gets the IMChatSession * chatSession.addIMContact(IMContact(account, "alice@hotmail.com")); * chatSession.addIMContact(IMContact(account, "caroline@hotmail.com")); - * chatSession.addIMContact(IMContact(account, "tanguy.krotoff@wengo.fr")); + * chatSession.addIMContact(IMContact(account, "tanguy.krotoff@qutecom.fr")); * chatSession.sendMessage("Hola! how are you?"); * * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMConnect.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMConnect.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMConnect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMConnect.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContact.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContact.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContact.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContact.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactList.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactSet.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactSet.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactSet.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactSet.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer1.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer1.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMContactXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMPresence.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMPresence.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMPresence.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMPresence.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/include/imwrapper/IMWrapperFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -23,6 +23,7 @@ #include #include +#include class IMChat; class IMConnect; @@ -38,9 +39,11 @@ * @author Philippe Bernery * @author Tanguy Krotoff */ -class IMWrapperFactory : Interface { +class IMWrapperFactory : Interface, public Trackable { public: + Event terminatedEvent; + virtual ~IMWrapperFactory() { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/Account.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/Account.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/Account.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/Account.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/EnumIMProtocol.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/EnumIMProtocol.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/EnumIMProtocol.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/EnumIMProtocol.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -38,7 +38,7 @@ _protocolMap[EnumIMProtocol::IMProtocolGoogleTalk] = "Google-Talk"; _protocolMap[EnumIMProtocol::IMProtocolSIPSIMPLE] = "SIP/SIMPLE"; _protocolMap[EnumIMProtocol::IMProtocolSIP] = "SIP"; - _protocolMap[EnumIMProtocol::IMProtocolWengo] = "Wengo"; + _protocolMap[EnumIMProtocol::IMProtocolQuteCom] = "QuteCom"; _protocolMap[EnumIMProtocol::IMProtocolFaceBook] = "FaceBook"; _protocolMap[EnumIMProtocol::IMProtocolMySpace] = "MySpace"; _protocolMap[EnumIMProtocol::IMProtocolSkype] = "Skype"; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/EnumPresenceState.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/EnumPresenceState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/EnumPresenceState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/EnumPresenceState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccount.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountList.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListFileStorage.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListFileStorage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListFileStorage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer1.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountListXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountParameters.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountParameters.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountParameters.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountParameters.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountParametersXMLSerializer.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountParametersXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountParametersXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountParametersXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountXMLSerializer1.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountXMLSerializer1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountXMLSerializer1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountXMLSerializer.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMAccountXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMAccountXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMChatSession.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMChatSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMChatSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMChatSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContact.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMContact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContact.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMContact.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -119,7 +119,7 @@ std::string IMContact::cleanContactId() const { - if (_protocol == EnumIMProtocol::IMProtocolWengo || _protocol == EnumIMProtocol::IMProtocolSIP || _protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) { + if (_protocol == EnumIMProtocol::IMProtocolQuteCom || _protocol == EnumIMProtocol::IMProtocolSIP || _protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) { return getDisplayContactId(); } @@ -186,7 +186,7 @@ //if(_alias != "") // return _alias; - if (_protocol == EnumIMProtocol::IMProtocolWengo || _protocol == EnumIMProtocol::IMProtocolSIP || _protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) + if (_protocol == EnumIMProtocol::IMProtocolQuteCom || _protocol == EnumIMProtocol::IMProtocolSIP || _protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) { std::string result = _contactId; size_t posFirstOf = result.find_first_of("@"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactSet.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactSet.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactSet.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactSet.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactXMLSerializer1.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactXMLSerializer1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactXMLSerializer1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -107,13 +107,13 @@ TiXmlText * contactId = im.FirstChild("id").FirstChild().Text(); if (contactId) { - // wengo or sip account should have a domain + // qutecom or sip account should have a domain // (unfortunately not saved before 2.1rc2... String completeLogin(contactId->Value()); if (!completeLogin.contains("@")) { - if (protocol == EnumIMProtocol::IMProtocolWengo) { - completeLogin += "@voip.wengo.fr"; + if (protocol == EnumIMProtocol::IMProtocolQuteCom) { + completeLogin += "@voip.qutecom.fr"; } //else if (protocol == EnumIMProtocol::IMProtocolSIP) { // // TO DO ? diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactXMLSerializer.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMContactXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMContactXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -102,12 +102,12 @@ TiXmlText * contactId = im.FirstChild("id").FirstChild().Text(); if (contactId) { - // wengo or sip account should have a domain + // qutecom or sip account should have a domain // (unfortunately not saved before 2.1rc2... String completeLogin(contactId->Value()); if (!completeLogin.contains("@")) { - if (protocol == EnumIMProtocol::IMProtocolWengo) { + if (protocol == EnumIMProtocol::IMProtocolQuteCom) { completeLogin += "@" + _defaultRealm; } //else if (protocol == EnumIMProtocol::IMProtocolSIP) { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMWrapperFactory.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/IMWrapperFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/IMWrapperFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/IMWrapperFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/multiim/multiim/MultiIMFactory.h qutecom-2.2+dfsg1/libs/imwrapper/src/multiim/multiim/MultiIMFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/multiim/multiim/MultiIMFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/multiim/multiim/MultiIMFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/multiim/MultiIMFactory.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/multiim/MultiIMFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/multiim/MultiIMFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/multiim/MultiIMFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -41,7 +41,7 @@ IMConnect * MultiIMFactory::createIMConnect(IMAccount & account) { if ((account.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (account.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (account.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (account.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.createIMConnect(account); } else { return _purpleIMFactory.createIMConnect(account); @@ -51,7 +51,7 @@ IMChat * MultiIMFactory::createIMChat(IMAccount & account) { if ((account.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (account.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (account.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (account.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.createIMChat(account); } else { return _purpleIMFactory.createIMChat(account); @@ -61,7 +61,7 @@ IMPresence * MultiIMFactory::createIMPresence(IMAccount & account) { if ((account.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (account.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (account.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (account.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.createIMPresence(account); } else { return _purpleIMFactory.createIMPresence(account); @@ -71,7 +71,7 @@ IMContactList * MultiIMFactory::createIMContactList(IMAccount & account) { if ((account.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (account.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (account.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (account.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.createIMContactList(account); } else { return _purpleIMFactory.createIMContactList(account); @@ -81,7 +81,7 @@ void MultiIMFactory::removeIMAccount(IMAccount imAccount) { if ((imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.removeIMAccount(imAccount); } else { return _purpleIMFactory.removeIMAccount(imAccount); @@ -91,7 +91,7 @@ void MultiIMFactory::imAccountUpdated(IMAccount imAccount) { if ((imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { + || (imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { return _phApiFactory.imAccountUpdated(imAccount); } else { return _purpleIMFactory.imAccountUpdated(imAccount); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMChat.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMChat.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMChat.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMChat.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMChat.h qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMChat.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMChat.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMChat.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMConnect.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMConnect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMConnect.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMConnect.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMConnect.h qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMConnect.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMConnect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMConnect.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMContactList.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMContactList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMContactList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMContactList.h qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMFactory.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMFactory.h qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMPresence.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMPresence.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMPresence.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMPresence.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMPresence.h qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMPresence.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/null/NullIMPresence.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/null/NullIMPresence.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleAccountMngr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleChatMngr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -188,7 +188,7 @@ if (gc->wants_to_die) { - purple_account_set_enabled(gc->account, "Wengo PURPLE", FALSE); + purple_account_set_enabled(gc->account, "QuteCom PURPLE", FALSE); } } } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleConnectMngr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleContactListMngr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumIMProtocol.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleEnumPresenceState.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMChat.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMChat.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMChat.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMChat.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMChat.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMChat.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMChat.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMChat.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMConnect.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -356,6 +356,7 @@ // Don't stop gMainLoop here: this is called when the user logoff, but we // want to keep the loop running for the whole time the application is // running. + //PurpleIMFactory::getFactory().terminatedEvent(); } void PurpleIMFactory::terminate() { @@ -363,9 +364,13 @@ AccountMngr->reset(); } - g_idle_add(purple_wg_destroy_lib, this); - - purpleStatusChangeWait(false); + if(purple_init) + { + g_idle_add(purple_wg_destroy_lib, this); + purpleStatusChangeWait(false); + } + + PurpleIMFactory::getFactory().terminatedEvent(); } IMConnect * PurpleIMFactory::createIMConnect(IMAccount &account) { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurpleIMPresence.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.cpp qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.h qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/src/purple/PurplePresenceMngr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/tests/serialize-test.cpp qutecom-2.2+dfsg1/libs/imwrapper/tests/serialize-test.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/imwrapper/tests/serialize-test.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/imwrapper/tests/serialize-test.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * serialize-test.cpp - * WengoPhoneNG + * QuteCom * * Created by Philippe BERNERY on 16/03/06. * Copyright 2006 __MyCompanyName__. All rights reserved. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/build/checkout_owbuild.bat qutecom-2.2+dfsg1/libs/owutil/build/checkout_owbuild.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/build/checkout_owbuild.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/build/checkout_owbuild.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -svn co https://dev.openwengo.com/svn/openwengo/owbuild/trunk/owbuild ../owbuild \ No newline at end of file +svn co https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/owbuild ../owbuild diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/build/create_vcproj_VC80.bat qutecom-2.2+dfsg1/libs/owutil/build/create_vcproj_VC80.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/build/create_vcproj_VC80.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/build/create_vcproj_VC80.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DOWUTIL_MODULE=1 -G "Visual Studio 8 2005" \ No newline at end of file +"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DOWUTIL_MODULE=1 -G "Visual Studio 8 2005" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/CMakeLists.txt qutecom-2.2+dfsg1/libs/owutil/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -1,17 +1,17 @@ include(CMakeLists-owbuild.txt) if (OWUTIL_MODULE) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/boost libs/3rdparty/boost) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/boost libs/3rdparty/boost) add_subdirectory(libs/3rdparty/boost) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/boost-test libs/3rdparty/boost-test) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/boost-test libs/3rdparty/boost-test) add_subdirectory(libs/3rdparty/boost-test) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/openssl libs/3rdparty/openssl) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/openssl libs/3rdparty/openssl) add_subdirectory(libs/3rdparty/openssl) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/tinyxml libs/3rdparty/tinyxml) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/tinyxml libs/3rdparty/tinyxml) add_subdirectory(libs/3rdparty/tinyxml) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/uuid libs/3rdparty/uuid) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/uuid libs/3rdparty/uuid) add_subdirectory(libs/3rdparty/uuid) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/curl libs/3rdparty/curl) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/curl libs/3rdparty/curl) add_subdirectory(libs/3rdparty/curl) endif (OWUTIL_MODULE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/dllexport.h qutecom-2.2+dfsg1/libs/owutil/cutil/dllexport.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/dllexport.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/dllexport.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/global.h qutecom-2.2+dfsg1/libs/owutil/cutil/global.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/global.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/global.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/owcutildll.h qutecom-2.2+dfsg1/libs/owutil/cutil/owcutildll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/owcutildll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/owcutildll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/safe-strings.h qutecom-2.2+dfsg1/libs/owutil/cutil/safe-strings.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/safe-strings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/safe-strings.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/src/fake.c qutecom-2.2+dfsg1/libs/owutil/cutil/src/fake.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/src/fake.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/src/fake.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/src/strndup/strndup.c qutecom-2.2+dfsg1/libs/owutil/cutil/src/strndup/strndup.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/src/strndup/strndup.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/src/strndup/strndup.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/strndup/strndup.h qutecom-2.2+dfsg1/libs/owutil/cutil/strndup/strndup.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/cutil/strndup/strndup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/cutil/strndup/strndup.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/HttpRequest.h qutecom-2.2+dfsg1/libs/owutil/http/HttpRequest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/HttpRequest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/HttpRequest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -33,10 +33,10 @@ class HttpRequest : public IHttpRequest, public Trackable { public: - /** HTTP port separator tag (e.g : in wengo.fr:8080). */ + /** HTTP port separator tag (e.g : in qutecom.fr:8080). */ static const std::string HTTP_PORT_SEPARATOR; - /** HTTP path separator tag (e.g / in wengo.fr/home/index.html). */ + /** HTTP path separator tag (e.g / in qutecom.fr/home/index.html). */ static const std::string HTTP_PATH_SEPARATOR; /** HTTP default port number (e.g 80). */ @@ -48,7 +48,7 @@ /** HTTP protocol tag (e.g http://). */ static const std::string HTTP_PROTOCOL; - /** HTTP GET method separator tag (e.g ? in wengo.fr/login.php?login=mylogin&password=mypassword). */ + /** HTTP GET method separator tag (e.g ? in qutecom.fr/login.php?login=mylogin&password=mypassword). */ static const std::string HTTP_GET_SEPARATOR; OWHTTP_API HttpRequest(); @@ -66,11 +66,11 @@ * Sends a HTTP request given a HTTP URL. * * A complete HTTP URL is something like: - * https://wengo.fr:8080/login.php?login=mylogin&password=mypassword + * https://qutecom.fr:8080/login.php?login=mylogin&password=mypassword * This is an overloaded member function, provided for convenience. * It behaves essentially like the above function. * - * @param url HTTP URL (e.g https://wengo.fr:8080/login.php) + * @param url HTTP URL (e.g https://qutecom.fr:8080/login.php) * @param data HTTP data (e.g login=mylogin&password=mypassword) * @param postMethod HTTP POST method if true, HTTP GET method if false * @see sendRequest(bool, const std::string &, unsigned int, const std::string &, const std::string &, bool) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/IHttpRequest.h qutecom-2.2+dfsg1/libs/owutil/http/IHttpRequest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/IHttpRequest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/IHttpRequest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -43,9 +43,9 @@ * } * }; * - * HttpRequest::setProxy("proxy.wengo.fr", 8080, "myProxyUsername", "myProxyPassword"); + * HttpRequest::setProxy("proxy.qutecom.fr", 8080, "myProxyUsername", "myProxyPassword"); * MyHttpRequest * http = new MyHttpRequest(); - * http->sendRequest("https://wengo.fr:8080/login.php", "login=mylogin&password=mypassword"); + * http->sendRequest("https://qutecom.fr:8080/login.php", "login=mylogin&password=mypassword"); * * * @author Tanguy Krotoff @@ -127,10 +127,10 @@ * Sends a HTTP request given a HTTP URL. * * A complete HTTP URL is something like: - * https://wengo.fr:8080/login.php?login=mylogin&password=mypassword + * https://qutecom.fr:8080/login.php?login=mylogin&password=mypassword * * @param sslProtocol true if HTTPS protocol (https://), false if HTTP protocol (http://) - * @param hostname HTTP server hostname (e.g wengo.fr, yahoo.fr) + * @param hostname HTTP server hostname (e.g qutecom.fr, yahoo.fr) * @param hostPort HTTP server port number (e.g 80, 8080) * @param path path on the server (e.g login.php) * @param data HTTP data (e.g login=mylogin&password=mypassword) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/owhttpdll.h qutecom-2.2+dfsg1/libs/owutil/http/owhttpdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/owhttpdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/owhttpdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.cpp qutecom-2.2+dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.h qutecom-2.2+dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/curl/CurlHttpRequest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/HttpRequest.cpp qutecom-2.2+dfsg1/libs/owutil/http/src/HttpRequest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/HttpRequest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/HttpRequest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -73,10 +73,10 @@ bool usesSSLProtocol(const std::string & url) { bool sslProtocol = false; if (url.find(HttpRequest::HTTPS_PROTOCOL) != string::npos) { - //https://wengo.fr:8080/softphone-sso/sso.php + //https://qutecom.fr:8080/softphone-sso/sso.php sslProtocol = true; } else if (url.find(HttpRequest::HTTP_PROTOCOL) != string::npos) { - //http://wengo.fr:8080/softphone-sso/sso.php + //http://qutecom.fr:8080/softphone-sso/sso.php sslProtocol = false; } else { LOG_FATAL("incorrect HTTP URL=" + url); @@ -87,10 +87,10 @@ void eraseProtocol(std::string & url) { if (usesSSLProtocol(url)) { - //https://wengo.fr:8080/softphone-sso/sso.php + //https://qutecom.fr:8080/softphone-sso/sso.php url.erase(0, HttpRequest::HTTPS_PROTOCOL.length()); } else { - //http://wengo.fr:8080/softphone-sso/sso.php + //http://qutecom.fr:8080/softphone-sso/sso.php url.erase(0, HttpRequest::HTTP_PROTOCOL.length()); } } @@ -99,7 +99,7 @@ unsigned int hostPort = HttpRequest::HTTP_DEFAULT_PORT; string::size_type posPortBegin = url.find(HttpRequest::HTTP_PORT_SEPARATOR); if (posPortBegin != string::npos) { - //http://wengo.fr:8080/softphone-sso/sso.php + //http://qutecom.fr:8080/softphone-sso/sso.php posPortBegin = posPortBegin + HttpRequest::HTTP_PATH_SEPARATOR.length(); string::size_type posPortEnd = url.find(HttpRequest::HTTP_PATH_SEPARATOR, posPortBegin); String tmp = url.substr(posPortBegin, posPortEnd - posPortBegin); @@ -115,22 +115,22 @@ String tmp = url; eraseProtocol(tmp); - //wengo.fr:8080/softphone-sso/sso.php + //qutecom.fr:8080/softphone-sso/sso.php unsigned hostPort = getHostPort(tmp); tmp.replace(HttpRequest::HTTP_PORT_SEPARATOR + String::fromNumber(hostPort), String::null); - //wengo.fr/softphone-sso/sso.php + //qutecom.fr/softphone-sso/sso.php string::size_type posHostnameEnd = tmp.find(HttpRequest::HTTP_PATH_SEPARATOR); return tmp.substr(0, posHostnameEnd); - //wengo.fr + //qutecom.fr } std::string getPath(const std::string & url) { - //https://wengo.fr:8080/softphone-sso/sso.php + //https://qutecom.fr:8080/softphone-sso/sso.php String tmp = url; eraseProtocol(tmp); StringList tmp2 = tmp.split(HttpRequest::HTTP_PATH_SEPARATOR); - //tmp2[0] == "wengo.fr:8080" + //tmp2[0] == "qutecom.fr:8080" if (!tmp2[0].empty()) { //tmp += HttpRequest::HTTP_PATH_SEPARATOR; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/HttpRequestFactory.h qutecom-2.2+dfsg1/libs/owutil/http/src/HttpRequestFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/HttpRequestFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/HttpRequestFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/null/NullHttpRequest.cpp qutecom-2.2+dfsg1/libs/owutil/http/src/null/NullHttpRequest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/null/NullHttpRequest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/null/NullHttpRequest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/null/NullHttpRequest.h qutecom-2.2+dfsg1/libs/owutil/http/src/null/NullHttpRequest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/null/NullHttpRequest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/null/NullHttpRequest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/qt/QtHttpRequest.cpp qutecom-2.2+dfsg1/libs/owutil/http/src/qt/QtHttpRequest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/qt/QtHttpRequest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/qt/QtHttpRequest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/qt/QtHttpRequest.h qutecom-2.2+dfsg1/libs/owutil/http/src/qt/QtHttpRequest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/src/qt/QtHttpRequest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/src/qt/QtHttpRequest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/CurlHttpRequestTest.h qutecom-2.2+dfsg1/libs/owutil/http/tests/CurlHttpRequestTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/CurlHttpRequestTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/tests/CurlHttpRequestTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/HttpRequestTest.h qutecom-2.2+dfsg1/libs/owutil/http/tests/HttpRequestTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/HttpRequestTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/tests/HttpRequestTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -40,7 +40,7 @@ //otherwise the callback is never called HttpRequest::setFactory(factory); - //HttpRequest::setProxy("proxy.wengo.fr", 8080, "myProxyUsername", "myProxyPassword"); + //HttpRequest::setProxy("proxy.qutecom.fr", 8080, "myProxyUsername", "myProxyPassword"); testSendRequest(); testSendRequestFailed(); } @@ -52,30 +52,30 @@ MyHttpRequest * http = new MyHttpRequest(); //Login tests with SSL - http->sendRequest(true, "ws.wengo.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", true); - http->sendRequest(true, "ws.wengo.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", true); - http->sendRequest(true, "ws.wengo.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", false); - http->sendRequest(true, "ws.wengo.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); - http->sendRequest(true, "ws.wengo.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); + http->sendRequest(true, "ws.qutecom.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", true); + http->sendRequest(true, "ws.qutecom.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", true); + http->sendRequest(true, "ws.qutecom.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", false); + http->sendRequest(true, "ws.qutecom.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); + http->sendRequest(true, "ws.qutecom.fr", 443, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); //Login test without SSL - http->sendRequest(false, "ws.wengo.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", true); - http->sendRequest(false, "ws.wengo.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", true); - http->sendRequest(false, "ws.wengo.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", false); - http->sendRequest(false, "ws.wengo.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); + http->sendRequest(false, "ws.qutecom.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", true); + http->sendRequest(false, "ws.qutecom.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", true); + http->sendRequest(false, "ws.qutecom.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=lopopo", false); + http->sendRequest(false, "ws.qutecom.fr", 80, "/softphone-sso/sso.php", "login=lolokiri@orange.fr&password=tata", false); /* //SMS tests without SSL - http->sendRequest(false, "ws.wengo.fr",80 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", true); - http->sendRequest(false, "ws.wengo.fr",80 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", false); + http->sendRequest(false, "ws.qutecom.fr",80 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", true); + http->sendRequest(false, "ws.qutecom.fr",80 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", false); //SMS tests with SSL - http->sendRequest(true, "ws.wengo.fr",443 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", true); - http->sendRequest(true, "ws.wengo.fr",443 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", false); + http->sendRequest(true, "ws.qutecom.fr",443 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", true); + http->sendRequest(true, "ws.qutecom.fr",443 ,"/sms/sendsms.php", "login=lolokiri@orange.fr&password=lopopo&message=megatest&target=0663736683", false); */ //Check update tests - http->sendRequest(false, "ws.wengo.fr",80 ,"/softphone-version/version.php", "", true); - http->sendRequest(false, "ws.wengo.fr",80 ,"/softphone-version/version.php", "", false); - http->sendRequest(true, "ws.wengo.fr",80 ,"/softphone-version/version.php", "", true); - http->sendRequest(true, "ws.wengo.fr",80 ,"/softphone-version/version.php", "", false); + http->sendRequest(false, "ws.qutecom.fr",80 ,"/softphone-version/version.php", "", true); + http->sendRequest(false, "ws.qutecom.fr",80 ,"/softphone-version/version.php", "", false); + http->sendRequest(true, "ws.qutecom.fr",80 ,"/softphone-version/version.php", "", true); + http->sendRequest(true, "ws.qutecom.fr",80 ,"/softphone-version/version.php", "", false); //Other tests http->sendRequest("http://www.google.fr", ""); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/NullHttpRequestTest.h qutecom-2.2+dfsg1/libs/owutil/http/tests/NullHttpRequestTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/NullHttpRequestTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/tests/NullHttpRequestTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/QtHttpRequestTest.h qutecom-2.2+dfsg1/libs/owutil/http/tests/QtHttpRequestTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/http/tests/QtHttpRequestTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/http/tests/QtHttpRequestTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MACMemoryDump.h qutecom-2.2+dfsg1/libs/owutil/memorydump/MACMemoryDump.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MACMemoryDump.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/MACMemoryDump.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -34,7 +34,7 @@ /** * Constructs a MemoryDump object. * - * @param applicationName name of the application (e.g WengoPhone) + * @param applicationName name of the application (e.g QuteCom) */ OWMEMORYDUMP_API MACMemoryDump(const std::string & applicationName, const std::string & revision); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MemoryDump.h qutecom-2.2+dfsg1/libs/owutil/memorydump/MemoryDump.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MemoryDump.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/MemoryDump.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -41,7 +41,7 @@ /** * Constructs a MemoryDump object. * - * @param applicationName name of the application (e.g WengoPhone) + * @param applicationName name of the application (e.g QuteCom) */ MemoryDump(const std::string & applicationName, const std::string & revision); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MSVCMemoryDump.h qutecom-2.2+dfsg1/libs/owutil/memorydump/MSVCMemoryDump.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/MSVCMemoryDump.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/MSVCMemoryDump.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -32,8 +32,8 @@ * * It creates a file inside the current directory named something like: * applicationName-dateTime.dmp - * Example: WengoPhone-0.93-0602124133.dmp - * with applicationName = WengoPhone-0.93 + * Example: QuteCom-0.93-0602124133.dmp + * with applicationName = QuteCom-0.93 * and dateTime = 0602124133 (month day hour minutes seconds) * dateTime is only here in order to be sure to generate a unique file. * @@ -49,7 +49,7 @@ * MemoryDump calls an external program (crashreport.exe) with the following arguments: * crashreport.exe -style=styleName "memoryDumpFile" applicationName languageFile * Example: - * crashreport.exe -style=wengokeramik "C:/Program Files/Wengo/WengoPhone-0.93-0602124133.dmp" WengoPhone wengo_fr.qm + * crashreport.exe -style=qutecomkeramik "C:/Program Files/QuteCom/QuteCom-0.93-0602124133.dmp" QuteCom qutecom_fr.qm * crashreport.exe can be wathever you want. * Currently it is a Qt application (MemoryDumpWindow) that sends via FTP the crashreport. * @@ -65,7 +65,7 @@ /** * Constructs a MemoryDump object. * - * @param applicationName name of the application (e.g WengoPhone) + * @param applicationName name of the application (e.g QuteCom) */ OWMEMORYDUMP_API MSVCMemoryDump(const std::string & applicationName, const std::string & revision); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/owmemorydumpdll.h qutecom-2.2+dfsg1/libs/owutil/memorydump/owmemorydumpdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/owmemorydumpdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/owmemorydumpdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/mac/MACMemoryDump.cpp qutecom-2.2+dfsg1/libs/owutil/memorydump/src/mac/MACMemoryDump.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/mac/MACMemoryDump.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/src/mac/MACMemoryDump.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -90,4 +90,4 @@ } return succeeded; -} \ No newline at end of file +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/MemoryDump.cpp qutecom-2.2+dfsg1/libs/owutil/memorydump/src/MemoryDump.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/MemoryDump.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/src/MemoryDump.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/unix/UNIXMemoryDump.cpp qutecom-2.2+dfsg1/libs/owutil/memorydump/src/unix/UNIXMemoryDump.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/unix/UNIXMemoryDump.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/src/unix/UNIXMemoryDump.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -94,4 +94,4 @@ } return succeeded; -} \ No newline at end of file +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/win32/MSVCMemoryDump.cpp qutecom-2.2+dfsg1/libs/owutil/memorydump/src/win32/MSVCMemoryDump.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/src/win32/MSVCMemoryDump.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/src/win32/MSVCMemoryDump.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/UNIXMemoryDump.h qutecom-2.2+dfsg1/libs/owutil/memorydump/UNIXMemoryDump.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/memorydump/UNIXMemoryDump.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/memorydump/UNIXMemoryDump.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -37,7 +37,7 @@ /** * Constructs a MemoryDump object. * - * @param applicationName name of the application (e.g WengoPhone) + * @param applicationName name of the application (e.g QuteCom) * @param revision svn revision */ OWMEMORYDUMP_API UNIXMemoryDump(const std::string & applicationName, const std::string & revision); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/owserializationdll.h qutecom-2.2+dfsg1/libs/owutil/serialization/owserializationdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/owserializationdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serialization/owserializationdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/Serializable.h qutecom-2.2+dfsg1/libs/owutil/serialization/Serializable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/Serializable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serialization/Serializable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/src/fake.cpp qutecom-2.2+dfsg1/libs/owutil/serialization/src/fake.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/src/fake.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serialization/src/fake.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/Storage.h qutecom-2.2+dfsg1/libs/owutil/serialization/Storage.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serialization/Storage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serialization/Storage.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/DateXMLSerializer.h qutecom-2.2+dfsg1/libs/owutil/serializer/DateXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/DateXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serializer/DateXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/owserializerdll.h qutecom-2.2+dfsg1/libs/owutil/serializer/owserializerdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/owserializerdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serializer/owserializerdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/src/DateXMLSerializer.cpp qutecom-2.2+dfsg1/libs/owutil/serializer/src/DateXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/src/DateXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serializer/src/DateXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/src/TimeXMLSerializer.cpp qutecom-2.2+dfsg1/libs/owutil/serializer/src/TimeXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/src/TimeXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serializer/src/TimeXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/TimeXMLSerializer.h qutecom-2.2+dfsg1/libs/owutil/serializer/TimeXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/serializer/TimeXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/serializer/TimeXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/CascadingSettings.h qutecom-2.2+dfsg1/libs/owutil/settings/CascadingSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/CascadingSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/CascadingSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/CascadingSettingsXMLSerializer.h qutecom-2.2+dfsg1/libs/owutil/settings/CascadingSettingsXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/CascadingSettingsXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/CascadingSettingsXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/owsettingsdll.h qutecom-2.2+dfsg1/libs/owutil/settings/owsettingsdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/owsettingsdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/owsettingsdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/Settings.h qutecom-2.2+dfsg1/libs/owutil/settings/Settings.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/Settings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/Settings.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/SettingsSerializer.h qutecom-2.2+dfsg1/libs/owutil/settings/SettingsSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/SettingsSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/SettingsSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/SettingsXMLSerializer.h qutecom-2.2+dfsg1/libs/owutil/settings/SettingsXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/SettingsXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/SettingsXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/CascadingSettings.cpp qutecom-2.2+dfsg1/libs/owutil/settings/src/CascadingSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/CascadingSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/src/CascadingSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/CascadingSettingsXMLSerializer.cpp qutecom-2.2+dfsg1/libs/owutil/settings/src/CascadingSettingsXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/CascadingSettingsXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/src/CascadingSettingsXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/Settings.cpp qutecom-2.2+dfsg1/libs/owutil/settings/src/Settings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/Settings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/src/Settings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/settings_framework1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/libs/owutil/settings/src/settings_framework1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/SettingsXMLSerializer.cpp qutecom-2.2+dfsg1/libs/owutil/settings/src/SettingsXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/SettingsXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/src/SettingsXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/StringListXMLSerializer.cpp qutecom-2.2+dfsg1/libs/owutil/settings/src/StringListXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/src/StringListXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/src/StringListXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/StringListXMLSerializer.h qutecom-2.2+dfsg1/libs/owutil/settings/StringListXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/StringListXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/StringListXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/tests/main.cpp qutecom-2.2+dfsg1/libs/owutil/settings/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/tests/SettingsTest.h qutecom-2.2+dfsg1/libs/owutil/settings/tests/SettingsTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/settings/tests/SettingsTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/settings/tests/SettingsTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/ISharedLibLoader.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/ISharedLibLoader.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/ISharedLibLoader.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/ISharedLibLoader.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/owshlibloaderdll.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/owshlibloaderdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/owshlibloaderdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/owshlibloaderdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/SharedLibLoader.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/SharedLibLoader.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/SharedLibLoader.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/SharedLibLoader.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.cpp qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/posix/PosixSharedLibLoader.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/SharedLibLoader.cpp qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/SharedLibLoader.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/SharedLibLoader.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/SharedLibLoader.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.cpp qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/src/win32/Win32SharedLibLoader.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/dlltest.cpp qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/dlltest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/dlltest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/dlltest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/dlltest.h qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/dlltest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/dlltest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/dlltest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/main.cpp qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/shlibloader/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/shlibloader/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/ClientSocket.h qutecom-2.2+dfsg1/libs/owutil/socket/ClientSocket.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/ClientSocket.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/ClientSocket.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/owsocketdll.h qutecom-2.2+dfsg1/libs/owutil/socket/owsocketdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/owsocketdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/owsocketdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/ServerSocket.h qutecom-2.2+dfsg1/libs/owutil/socket/ServerSocket.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/ServerSocket.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/ServerSocket.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/ClientSocket.cpp qutecom-2.2+dfsg1/libs/owutil/socket/src/ClientSocket.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/ClientSocket.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/src/ClientSocket.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/ServerSocket.cpp qutecom-2.2+dfsg1/libs/owutil/socket/src/ServerSocket.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/ServerSocket.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/src/ServerSocket.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/SocketCommon.h qutecom-2.2+dfsg1/libs/owutil/socket/src/SocketCommon.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/socket/src/SocketCommon.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/socket/src/SocketCommon.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/owsystemdll.h qutecom-2.2+dfsg1/libs/owutil/system/owsystemdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/owsystemdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/owsystemdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/Processes.h qutecom-2.2+dfsg1/libs/owutil/system/Processes.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/Processes.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/Processes.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/RegisterProtocol.h qutecom-2.2+dfsg1/libs/owutil/system/RegisterProtocol.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/RegisterProtocol.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/RegisterProtocol.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -27,7 +27,7 @@ /** * Binds a protocol to a command. * - * Registers protocols like http:// callto:// wengo:// + * Registers protocols like http:// callto:// qutecom:// * Under Windows, register the new protocol inside the registry database. * * @see http://www.w3.org/Addressing/schemes-gen.html diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/mac/Startup.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/mac/Startup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/mac/Startup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/mac/Startup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/null/Processes.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/null/Processes.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/null/Processes.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/null/Processes.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/null/Startup.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/null/Startup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/null/Startup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/null/Startup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/RegisterProtocol.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/RegisterProtocol.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/RegisterProtocol.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/RegisterProtocol.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/test/RegisterProtocol_test.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/test/RegisterProtocol_test.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/test/RegisterProtocol_test.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/test/RegisterProtocol_test.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -23,14 +23,14 @@ int main(int argc, char **argv) { - RegisterProtocol protocol("wengo2"); + RegisterProtocol protocol("qutecom2"); if (protocol.isBinded()) { printf("Protocol binded: yes\n"); } else { printf("Protocol binded: no\n"); } - if (protocol.bind("c:\\Program Files\\WengoPhone\\qtwengophone.exe", "c:\\Program Files\\WengoPhone\\qtwengophone.exe,0", "http://wengo.com")) { + if (protocol.bind("c:\\Program Files\\QuteCom\\qtqutecom.exe", "c:\\Program Files\\QuteCom\\qtqutecom.exe,0", "http://qutecom.com")) { printf("Protocol binded: ok\n"); } else { printf("Protocol binded: failed\n"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/test/WindowsRegistry_test.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/test/WindowsRegistry_test.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/test/WindowsRegistry_test.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/test/WindowsRegistry_test.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/unix/Processes.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/unix/Processes.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/unix/Processes.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/unix/Processes.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/Processes.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/win/Processes.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/Processes.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/win/Processes.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/Startup.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/win/Startup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/Startup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/win/Startup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/WindowsRegistry.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/win/WindowsRegistry.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/WindowsRegistry.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/win/WindowsRegistry.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/WindowsVersion.cpp qutecom-2.2+dfsg1/libs/owutil/system/src/win/WindowsVersion.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/src/win/WindowsVersion.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/src/win/WindowsVersion.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/Startup.h qutecom-2.2+dfsg1/libs/owutil/system/Startup.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/Startup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/Startup.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -38,9 +38,9 @@ /** * @param applicationName name of the application - * (e.g WengoPhone) + * (e.g QuteCom) * @param executablePath path to the executable - * (e.g C:/Program Files/Wengo/wengophone.exe -background) + * (e.g C:/Program Files/QuteCom/qutecom.exe -background) */ OWSYSTEM_API Startup(const std::string & applicationName, const std::string & executablePath); @@ -64,12 +64,12 @@ private: /** - * Name of the application (e.g WengoPhone). + * Name of the application (e.g QuteCom). */ std::string _applicationName; /** - * Path of the executable (e.g C:/Program Files/Wengo/wengophone.exe) + * Path of the executable (e.g C:/Program Files/QuteCom/qutecom.exe) */ std::string _executablePath; }; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/WindowsRegistry.h qutecom-2.2+dfsg1/libs/owutil/system/WindowsRegistry.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/WindowsRegistry.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/WindowsRegistry.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/WindowsVersion.h qutecom-2.2+dfsg1/libs/owutil/system/WindowsVersion.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/system/WindowsVersion.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/system/WindowsVersion.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Condition.h qutecom-2.2+dfsg1/libs/owutil/thread/Condition.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Condition.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/Condition.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Lockable.h qutecom-2.2+dfsg1/libs/owutil/thread/Lockable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Lockable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/Lockable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Mutex.h qutecom-2.2+dfsg1/libs/owutil/thread/Mutex.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Mutex.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/Mutex.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/owthreaddll.h qutecom-2.2+dfsg1/libs/owutil/thread/owthreaddll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/owthreaddll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/owthreaddll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/RecursiveMutex.h qutecom-2.2+dfsg1/libs/owutil/thread/RecursiveMutex.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/RecursiveMutex.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/RecursiveMutex.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Lockable.cpp qutecom-2.2+dfsg1/libs/owutil/thread/src/Lockable.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Lockable.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/src/Lockable.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Thread.cpp qutecom-2.2+dfsg1/libs/owutil/thread/src/Thread.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Thread.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/src/Thread.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Timer.cpp qutecom-2.2+dfsg1/libs/owutil/thread/src/Timer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/src/Timer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/src/Timer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/tests/main.cpp qutecom-2.2+dfsg1/libs/owutil/thread/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/tests/TimerTest.h qutecom-2.2+dfsg1/libs/owutil/thread/tests/TimerTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/tests/TimerTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/tests/TimerTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/ThreadEvent.h qutecom-2.2+dfsg1/libs/owutil/thread/ThreadEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/ThreadEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/ThreadEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Thread.h qutecom-2.2+dfsg1/libs/owutil/thread/Thread.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Thread.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/Thread.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Timer.h qutecom-2.2+dfsg1/libs/owutil/thread/Timer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/Timer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/Timer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/TryMutex.h qutecom-2.2+dfsg1/libs/owutil/thread/TryMutex.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/thread/TryMutex.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/thread/TryMutex.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Base64.h qutecom-2.2+dfsg1/libs/owutil/util/Base64.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Base64.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Base64.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Cloneable.h qutecom-2.2+dfsg1/libs/owutil/util/Cloneable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Cloneable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Cloneable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/CountryList.h qutecom-2.2+dfsg1/libs/owutil/util/CountryList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/CountryList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/CountryList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Date.h qutecom-2.2+dfsg1/libs/owutil/util/Date.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Date.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Date.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Event.h qutecom-2.2+dfsg1/libs/owutil/util/Event.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Event.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Event.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/File.h qutecom-2.2+dfsg1/libs/owutil/util/File.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/File.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/File.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Identifiable.h qutecom-2.2+dfsg1/libs/owutil/util/Identifiable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Identifiable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Identifiable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Interface.h qutecom-2.2+dfsg1/libs/owutil/util/Interface.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Interface.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Interface.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/IPostEvent.h qutecom-2.2+dfsg1/libs/owutil/util/IPostEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/IPostEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/IPostEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/List.h qutecom-2.2+dfsg1/libs/owutil/util/List.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/List.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/List.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Logger.h qutecom-2.2+dfsg1/libs/owutil/util/Logger.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Logger.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Logger.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/NonCopyable.h qutecom-2.2+dfsg1/libs/owutil/util/NonCopyable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/NonCopyable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/NonCopyable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/OWPicture.h qutecom-2.2+dfsg1/libs/owutil/util/OWPicture.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/OWPicture.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/OWPicture.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/owutildll.h qutecom-2.2+dfsg1/libs/owutil/util/owutildll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/owutildll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/owutildll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Path.h qutecom-2.2+dfsg1/libs/owutil/util/Path.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Path.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Path.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -48,7 +48,7 @@ * * The executable path returned always finished by "/" or "\". * - * On MacOS X, returns full path to exe. e.g: /Application/WengoPhone.app/Contents/MacOS/WengoPhone + * On MacOS X, returns full path to exe. e.g: /Application/QuteCom.app/Contents/MacOS/QuteCom * * @return application executable path */ @@ -81,7 +81,7 @@ /** * Gets the application bundle path. * - * e.g: /Application/WengoPhone.app/ + * e.g: /Application/QuteCom.app/ */ static std::string getApplicationBundlePath(); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/SafeDelete.h qutecom-2.2+dfsg1/libs/owutil/util/SafeDelete.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/SafeDelete.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/SafeDelete.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/SharedPtr.h qutecom-2.2+dfsg1/libs/owutil/util/SharedPtr.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/SharedPtr.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/SharedPtr.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Singleton.h qutecom-2.2+dfsg1/libs/owutil/util/Singleton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Singleton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Singleton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Slot.h qutecom-2.2+dfsg1/libs/owutil/util/Slot.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Slot.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Slot.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Base64.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Base64.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Base64.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Base64.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/CountryList.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/CountryList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/CountryList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/CountryList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Date.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Date.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Date.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Date.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/File.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/File.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/File.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/File.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Identifiable.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Identifiable.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Identifiable.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Identifiable.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Logger.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Logger.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Logger.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Logger.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/mac/UuidMac.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/mac/UuidMac.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/mac/UuidMac.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/mac/UuidMac.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/NonCopyable.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/NonCopyable.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/NonCopyable.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/NonCopyable.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/OWPicture.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/OWPicture.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/OWPicture.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/OWPicture.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Path.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Path.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Path.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Path.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Startup.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Startup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Startup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Startup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/String.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/String.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/String.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/String.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/StringList.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/StringList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/StringList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/StringList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Time.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Time.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Time.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Time.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/unix/UuidUnix.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/unix/UuidUnix.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/unix/UuidUnix.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/unix/UuidUnix.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Uuid.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/Uuid.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/Uuid.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/Uuid.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/WebBrowser.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/WebBrowser.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/WebBrowser.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/WebBrowser.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/win/UuidWin.cpp qutecom-2.2+dfsg1/libs/owutil/util/src/win/UuidWin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/src/win/UuidWin.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/src/win/UuidWin.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Startup.h qutecom-2.2+dfsg1/libs/owutil/util/Startup.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Startup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Startup.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -37,9 +37,9 @@ /** * @param applicationName name of the application - * (e.g WengoPhone) + * (e.g QuteCom) * @param executablePath path to the executable - * (e.g C:/Program Files/Wengo/wengophone.exe -background) + * (e.g C:/Program Files/QuteCom/qutecom.exe -background) */ Startup(const std::string & applicationName, const std::string & executablePath); @@ -63,12 +63,12 @@ private: /** - * Name of the application (e.g WengoPhone). + * Name of the application (e.g QuteCom). */ std::string _applicationName; /** - * Path of the executable (e.g C:/Program Files/Wengo/wengophone.exe) + * Path of the executable (e.g C:/Program Files/QuteCom/qutecom.exe) */ std::string _executablePath; }; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/String.h qutecom-2.2+dfsg1/libs/owutil/util/String.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/String.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/String.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -88,8 +88,8 @@ * * Example: *
-	 * String myString("WengO");
-	 * str = myString.toLowerCase();	//str == "wengo"
+	 * String myString("QuteCom");
+	 * str = myString.toLowerCase();	//str == "qutecom"
 	 * 
* * @return the string converted to lowercase @@ -101,8 +101,8 @@ * * Example: *
-	 * String myString("WengO");
-	 * str = myString.toUpperCase();	//str == "WENGO"
+	 * String myString("QuteCom");
+	 * str = myString.toUpperCase();	//str == "QUTECOM"
 	 * 
* * @return the string converted to uppercase diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/StringList.h qutecom-2.2+dfsg1/libs/owutil/util/StringList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/StringList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/StringList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -87,13 +87,13 @@ * Example: *
 	 * StringList strList;
-	 * strList += "wengo";
+	 * strList += "qutecom";
 	 * strList += "is";
 	 * strList += "good";
-	 * strList += "wengo";
-	 * unsigned int i = strList.contains("wengo");	//i = 2
-	 * unsigned int j = strList.contains("Wengo");	//j = 0
-	 * unsigned int k = strList.contains("Wengo", false);	//k = 2
+	 * strList += "qutecom";
+	 * unsigned int i = strList.contains("qutecom");	//i = 2
+	 * unsigned int j = strList.contains("QuteCom");	//j = 0
+	 * unsigned int k = strList.contains("QuteCom", false);	//k = 2
 	 * 
* * @param str value to look up inside the StringList diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/FileTest.h qutecom-2.2+dfsg1/libs/owutil/util/tests/FileTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/FileTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/tests/FileTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/LoggerTest.cpp qutecom-2.2+dfsg1/libs/owutil/util/tests/LoggerTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/LoggerTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/tests/LoggerTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/main.cpp qutecom-2.2+dfsg1/libs/owutil/util/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/StringListTest.h qutecom-2.2+dfsg1/libs/owutil/util/tests/StringListTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/StringListTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/tests/StringListTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -38,27 +38,27 @@ void testOperatorIndex() { StringList strList; - strList += "wengo0"; - strList += "wengo1"; - strList += "wengo2"; - strList += "wengo3"; - BOOST_CHECK(strList[0] == "wengo0"); - BOOST_CHECK(strList[1] == "wengo1"); - BOOST_CHECK(strList[2] == "wengo2"); - BOOST_CHECK(strList[3] == "wengo3"); + strList += "qutecom0"; + strList += "qutecom1"; + strList += "qutecom2"; + strList += "qutecom3"; + BOOST_CHECK(strList[0] == "qutecom0"); + BOOST_CHECK(strList[1] == "qutecom1"); + BOOST_CHECK(strList[2] == "qutecom2"); + BOOST_CHECK(strList[3] == "qutecom3"); BOOST_CHECK(strList[4] == String::null); BOOST_CHECK(strList[4].empty()); } void testContains() { StringList strList; - strList += "wengo"; + strList += "qutecom"; strList += "is"; strList += "good"; - strList += "wengo"; - BOOST_CHECK(strList.contains("wengo") == 2); - BOOST_CHECK(strList.contains("Wengo") == 0); - BOOST_CHECK(strList.contains("Wengo", false) == 2); + strList += "qutecom"; + BOOST_CHECK(strList.contains("qutecom") == 2); + BOOST_CHECK(strList.contains("QuteCom") == 0); + BOOST_CHECK(strList.contains("QuteCom", false) == 2); } void testSort() { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/StringTest.h qutecom-2.2+dfsg1/libs/owutil/util/tests/StringTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/tests/StringTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/tests/StringTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -31,8 +31,8 @@ public: StringTest() { - _lowerCaseString = "**** wengo is cool!!! ####"; - _upperCaseString = "**** WENGO IS COOL!!! ####"; + _lowerCaseString = "**** qutecom is cool!!! ####"; + _upperCaseString = "**** QUTECOM IS COOL!!! ####"; } void testIsEmpty() { @@ -74,8 +74,8 @@ } void testReplace() { - String str1("Wengo is not cool!"); - String str2("Wengo is cool!"); + String str1("QuteCom is not cool!"); + String str2("QuteCom is cool!"); str1.replace("not ", String::null); BOOST_CHECK(str1 == str2); @@ -84,32 +84,32 @@ str2.replace("cool", "not cool"); BOOST_CHECK(str1 == str2); - String str3("Wengo*Wengo/Wengo:Wengo"); + String str3("QuteCom*QuteCom/QuteCom:QuteCom"); String str4("cool*cool/cool:cool"); - str3.replace("Wengo", "cool"); + str3.replace("QuteCom", "cool"); BOOST_CHECK(str3 == str4); - String str5("WengoWengoWengoWengo"); + String str5("QuteComQuteComQuteComQuteCom"); String str6("coolcoolcoolcool"); - str5.replace("Wengo", "cool"); + str5.replace("QuteCom", "cool"); BOOST_CHECK(str5 == str6); } void testReplaceInRange() { - String str1("Wengo is not not cool!"); - String str2("Wengo is not cool!"); + String str1("QuteCom is not not cool!"); + String str2("QuteCom is not cool!"); str1.replaceInRange(9, 3, "not ", String::null); BOOST_CHECK(str1 == str2); - String str3("Wengo*Wengo/Wengo:Wengo"); - String str4("Wengo*cool/Wengo:Wengo"); - str3.replaceInRange(6, 11, "Wengo", "cool"); + String str3("QuteCom*QuteCom/QuteCom:QuteCom"); + String str4("QuteCom*cool/QuteCom:QuteCom"); + str3.replaceInRange(6, 11, "QuteCom", "cool"); BOOST_CHECK(str3 == str4); - String str5("WengoWengoWengoWengo"); - String str6("WengocoolWengoWengo"); - str5.replaceInRange(5, 10, "Wengo", "cool"); + String str5("QuteComQuteComQuteComQuteCom"); + String str6("QuteComcoolQuteComQuteCom"); + str5.replaceInRange(5, 10, "QuteCom", "cool"); BOOST_CHECK(str5 == str6); } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/ThreadEvent.h qutecom-2.2+dfsg1/libs/owutil/util/ThreadEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/ThreadEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/ThreadEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Time.h qutecom-2.2+dfsg1/libs/owutil/util/Time.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Time.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Time.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Trackable.h qutecom-2.2+dfsg1/libs/owutil/util/Trackable.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Trackable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Trackable.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/TwoWayMap.h qutecom-2.2+dfsg1/libs/owutil/util/TwoWayMap.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/TwoWayMap.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/TwoWayMap.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Uuid.h qutecom-2.2+dfsg1/libs/owutil/util/Uuid.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/Uuid.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/Uuid.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/WebBrowser.h qutecom-2.2+dfsg1/libs/owutil/util/WebBrowser.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/owutil/util/WebBrowser.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/owutil/util/WebBrowser.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/build/checkout_owbuild.bat qutecom-2.2+dfsg1/libs/pixertool/build/checkout_owbuild.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/build/checkout_owbuild.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/build/checkout_owbuild.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -svn co https://dev.openwengo.com/svn/openwengo/owbuild/trunk/owbuild ../owbuild \ No newline at end of file +svn co https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/owbuild ../owbuild diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/build/create_vcproj_VC80.bat qutecom-2.2+dfsg1/libs/pixertool/build/create_vcproj_VC80.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/build/create_vcproj_VC80.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/build/create_vcproj_VC80.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DPIXERTOOL_MODULE=1 -G "Visual Studio 8 2005" \ No newline at end of file +"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DPIXERTOOL_MODULE=1 -G "Visual Studio 8 2005" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/CMakeLists.txt qutecom-2.2+dfsg1/libs/pixertool/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -1,10 +1,10 @@ include(CMakeLists-owbuild.txt) if (PIXERTOOL_MODULE) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/ffmpeg libs/3rdparty/ffmpeg) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/ffmpeg libs/3rdparty/ffmpeg) add_subdirectory(libs/3rdparty/ffmpeg) set(OWUTIL_MODULE TRUE) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owutil/trunk libs/owutil) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owutil/trunk libs/owutil) add_subdirectory(libs/owutil) endif (PIXERTOOL_MODULE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/directx-pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/directx-pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/directx-pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/directx-pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/ffmpeg-pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/ffmpeg-pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/ffmpeg-pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/ffmpeg-pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/owpixertooldll.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/owpixertooldll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/owpixertooldll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/owpixertooldll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/pixertooldll.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/pixertooldll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/pixertooldll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/pixertooldll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/quicktime-pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/quicktime-pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/quicktime-pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/quicktime-pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/v4l2-pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/v4l2-pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/v4l2-pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/v4l2-pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/v4l-pixertool.h qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/v4l-pixertool.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/include/pixertool/v4l-pixertool.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/include/pixertool/v4l-pixertool.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/directx/directx-pixertool.cpp qutecom-2.2+dfsg1/libs/pixertool/src/directx/directx-pixertool.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/directx/directx-pixertool.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/directx/directx-pixertool.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/ffmpeg/ffmpeg-pixertool.c qutecom-2.2+dfsg1/libs/pixertool/src/ffmpeg/ffmpeg-pixertool.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/ffmpeg/ffmpeg-pixertool.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/ffmpeg/ffmpeg-pixertool.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/null-pixertool.cpp qutecom-2.2+dfsg1/libs/pixertool/src/null-pixertool.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/null-pixertool.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/null-pixertool.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/pixertool.cpp qutecom-2.2+dfsg1/libs/pixertool/src/pixertool.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/pixertool.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/pixertool.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/quicktime/quicktime-pixertool.c qutecom-2.2+dfsg1/libs/pixertool/src/quicktime/quicktime-pixertool.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/quicktime/quicktime-pixertool.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/quicktime/quicktime-pixertool.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/v4l/v4l-pixertool.c qutecom-2.2+dfsg1/libs/pixertool/src/v4l/v4l-pixertool.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/v4l/v4l-pixertool.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/v4l/v4l-pixertool.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/v4l2/v4l2-pixertool.c qutecom-2.2+dfsg1/libs/pixertool/src/v4l2/v4l2-pixertool.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/src/v4l2/v4l2-pixertool.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/src/v4l2/v4l2-pixertool.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/tests/PixerToolTest.cpp qutecom-2.2+dfsg1/libs/pixertool/tests/PixerToolTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/tests/PixerToolTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/tests/PixerToolTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/tests/PixerToolTest.h qutecom-2.2+dfsg1/libs/pixertool/tests/PixerToolTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/pixertool/tests/PixerToolTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/pixertool/tests/PixerToolTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/CMakeLists.txt qutecom-2.2+dfsg1/libs/qtutil/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -19,7 +19,7 @@ include/qtutil/EventFilter.h include/qtutil/QObjectThreadSafe.h include/qtutil/NonResizeableWidget.h - include/qtutil/WengoStyleLabel.h + include/qtutil/QuteComStyleLabel.h include/qtutil/ToolTipLineEdit.h include/qtutil/ClickableLabel.h include/qtutil/Wizard.h @@ -57,7 +57,7 @@ src/NonResizeableWidget.cpp src/StringListConvert.cpp src/Widget.cpp - src/WengoStyleLabel.cpp + src/QuteComStyleLabel.cpp src/ToolTipLineEdit.cpp src/ClickableLabel.cpp src/WidgetBackgroundImage.cpp diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/AnimatedButton.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/AnimatedButton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/AnimatedButton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/AnimatedButton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ClearLineEdit.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ClearLineEdit.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ClearLineEdit.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ClearLineEdit.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ClickableLabel.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ClickableLabel.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ClickableLabel.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ClickableLabel.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/CloseEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/CloseEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/CloseEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/CloseEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/DesktopService.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/DesktopService.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/DesktopService.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/DesktopService.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/DropDownWindow.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/DropDownWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/DropDownWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/DropDownWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/EnabledChangeEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/EnabledChangeEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/EnabledChangeEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/EnabledChangeEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/EventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/EventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/EventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/EventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ExpandButton.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ExpandButton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ExpandButton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ExpandButton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/FSResourceFileEngineHandler.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/FSResourceFileEngineHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/FSResourceFileEngineHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/FSResourceFileEngineHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/IconLineEdit.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/IconLineEdit.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/IconLineEdit.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/IconLineEdit.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ImageSelector.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ImageSelector.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ImageSelector.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ImageSelector.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/KeyEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/KeyEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/KeyEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/KeyEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/KeywordTranslator.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/KeywordTranslator.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/KeywordTranslator.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/KeywordTranslator.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/LanguageChangeEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/LanguageChangeEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/LanguageChangeEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/LanguageChangeEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/LinkLabel.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/LinkLabel.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/LinkLabel.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/LinkLabel.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/MacDesktopService.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/MacDesktopService.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/MacDesktopService.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/MacDesktopService.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/MouseEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/MouseEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/MouseEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/MouseEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/NonResizeableWidget.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/NonResizeableWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/NonResizeableWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/NonResizeableWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Object.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Object.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Object.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Object.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/OsdButton.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/OsdButton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/OsdButton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/OsdButton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/owqtutildll.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/owqtutildll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/owqtutildll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/owqtutildll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PaintEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PaintEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PaintEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PaintEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PixmapMerging.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PixmapMerging.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PixmapMerging.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PixmapMerging.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PostEvent.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PostEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/PostEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/PostEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QObjectThreadSafe.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QObjectThreadSafe.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QObjectThreadSafe.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QObjectThreadSafe.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QtThreadEvent.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QtThreadEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QtThreadEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QtThreadEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QuteComStyleLabel.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QuteComStyleLabel.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/QuteComStyleLabel.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/QuteComStyleLabel.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOMSTYLELABEL_H +#define OWQUTECOMSTYLELABEL_H + +#include + +#include +#include +#include + +/** + * TODO Refactoring + * ClickableSkinnedLabel + * + * @author Tanguy Krotoff + */ +class OWQTUTIL_API QuteComStyleLabel : public QLabel { + Q_OBJECT +public: + + enum Mode { + Normal, + Toggled, + }; + + QuteComStyleLabel(QWidget * parent, Mode = Normal, Qt::AlignmentFlag hAlign = Qt::AlignHCenter); + + ~QuteComStyleLabel(); + + void setPixmaps(const QPixmap & normalLeftPixmap, + const QPixmap & normalRightPixmap, + const QPixmap & normalFillPixmap, + const QPixmap & pressedLeftPixmap, + const QPixmap & pressedRightPixmap, + const QPixmap & pressedFillPixmap); + + /*void setLeftPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap); + + void setRightPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap);*/ + + void setTextColor(const QColor & color); + + //void setBackgroundColor(const QColor & color); + + void setTextAlignment(int alignment) { + _alignment = alignment; + } + + void setSelected(bool value) { + _selected = value; + } + + virtual QSize minimumSizeHint() const; + + virtual QSize sizeHint() const; + +public Q_SLOTS: + + void setText(const QString & text); + +Q_SIGNALS: + + void clicked(); + +private: + + void paintEvent(QPaintEvent * event); + + void resizeEvent(QResizeEvent * event); + + void drawText(QPainter * painter); + + void mouseMoveEvent(QMouseEvent * event); + + void mousePressEvent(QMouseEvent * event); + + void mouseReleaseEvent(QMouseEvent * event); + + QPixmap _normalFillPixmap; + + QPixmap _normalLeftPixmap; + + QPixmap _normalRightPixmap; + + QPixmap _pressedFillPixmap; + + QPixmap _pressedLeftPixmap; + + QPixmap _pressedRightPixmap; + + QColor _textColor; + + QColor _backgroundColor; + + bool _pressed; + + bool _selected; + + QWidget * _parent; + + int _alignment; + + bool _toggled; + + Mode _mode; +}; + +#endif //OWQUTECOMSTYLELABEL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ResizeEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ResizeEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ResizeEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ResizeEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/SafeConnect.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/SafeConnect.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/SafeConnect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/SafeConnect.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ScrollFrame.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ScrollFrame.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ScrollFrame.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ScrollFrame.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/StringListConvert.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/StringListConvert.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/StringListConvert.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/StringListConvert.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ThreadEventFilter.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ThreadEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ThreadEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ThreadEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ThumbnailView.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ThumbnailView.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ThumbnailView.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ThumbnailView.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ToolTipLineEdit.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ToolTipLineEdit.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/ToolTipLineEdit.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/ToolTipLineEdit.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/UpQComboBox.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/UpQComboBox.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/UpQComboBox.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/UpQComboBox.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WengoStyleLabel.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WengoStyleLabel.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WengoStyleLabel.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WengoStyleLabel.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOSTYLELABEL_H -#define OWWENGOSTYLELABEL_H - -#include - -#include -#include -#include - -/** - * TODO Refactoring - * ClickableSkinnedLabel - * - * @author Tanguy Krotoff - */ -class OWQTUTIL_API WengoStyleLabel : public QLabel { - Q_OBJECT -public: - - enum Mode { - Normal, - Toggled, - }; - - WengoStyleLabel(QWidget * parent, Mode = Normal, Qt::AlignmentFlag hAlign = Qt::AlignHCenter); - - ~WengoStyleLabel(); - - void setPixmaps(const QPixmap & normalLeftPixmap, - const QPixmap & normalRightPixmap, - const QPixmap & normalFillPixmap, - const QPixmap & pressedLeftPixmap, - const QPixmap & pressedRightPixmap, - const QPixmap & pressedFillPixmap); - - /*void setLeftPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap); - - void setRightPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap);*/ - - void setTextColor(const QColor & color); - - //void setBackgroundColor(const QColor & color); - - void setTextAlignment(int alignment) { - _alignment = alignment; - } - - void setSelected(bool value) { - _selected = value; - } - - virtual QSize minimumSizeHint() const; - - virtual QSize sizeHint() const; - -public Q_SLOTS: - - void setText(const QString & text); - -Q_SIGNALS: - - void clicked(); - -private: - - void paintEvent(QPaintEvent * event); - - void resizeEvent(QResizeEvent * event); - - void drawText(QPainter * painter); - - void mouseMoveEvent(QMouseEvent * event); - - void mousePressEvent(QMouseEvent * event); - - void mouseReleaseEvent(QMouseEvent * event); - - QPixmap _normalFillPixmap; - - QPixmap _normalLeftPixmap; - - QPixmap _normalRightPixmap; - - QPixmap _pressedFillPixmap; - - QPixmap _pressedLeftPixmap; - - QPixmap _pressedRightPixmap; - - QColor _textColor; - - QColor _backgroundColor; - - bool _pressed; - - bool _selected; - - QWidget * _parent; - - int _alignment; - - bool _toggled; - - Mode _mode; -}; - -#endif //OWWENGOSTYLELABEL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetBackgroundImage.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetBackgroundImage.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetBackgroundImage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetBackgroundImage.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetFactory.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Widget.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Widget.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Widget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Widget.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetRatioEnforcer.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetRatioEnforcer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetRatioEnforcer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetRatioEnforcer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetUtils.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WidgetUtils.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WidgetUtils.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WindowsDesktopService.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WindowsDesktopService.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/WindowsDesktopService.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/WindowsDesktopService.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Wizard.h qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Wizard.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/include/qtutil/Wizard.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/include/qtutil/Wizard.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/AnimatedButton.cpp qutecom-2.2+dfsg1/libs/qtutil/src/AnimatedButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/AnimatedButton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/AnimatedButton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ClearLineEdit.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ClearLineEdit.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ClearLineEdit.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ClearLineEdit.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ClickableLabel.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ClickableLabel.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ClickableLabel.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ClickableLabel.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/CloseEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/CloseEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/CloseEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/CloseEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/DesktopService.cpp qutecom-2.2+dfsg1/libs/qtutil/src/DesktopService.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/DesktopService.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/DesktopService.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/DropDownWindow.cpp qutecom-2.2+dfsg1/libs/qtutil/src/DropDownWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/DropDownWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/DropDownWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/EnabledChangeEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/EnabledChangeEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/EnabledChangeEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/EnabledChangeEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/EventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/EventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/EventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/EventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ExpandButton.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ExpandButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ExpandButton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ExpandButton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/FSResourceFileEngineHandler.cpp qutecom-2.2+dfsg1/libs/qtutil/src/FSResourceFileEngineHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/FSResourceFileEngineHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/FSResourceFileEngineHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/IconLineEdit.cpp qutecom-2.2+dfsg1/libs/qtutil/src/IconLineEdit.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/IconLineEdit.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/IconLineEdit.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ImageSelector.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ImageSelector.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ImageSelector.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ImageSelector.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/KeyEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/KeyEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/KeyEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/KeyEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/KeywordTranslator.cpp qutecom-2.2+dfsg1/libs/qtutil/src/KeywordTranslator.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/KeywordTranslator.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/KeywordTranslator.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/LanguageChangeEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/LanguageChangeEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/LanguageChangeEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/LanguageChangeEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/MacDesktopService.cpp qutecom-2.2+dfsg1/libs/qtutil/src/MacDesktopService.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/MacDesktopService.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/MacDesktopService.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/MouseEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/MouseEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/MouseEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/MouseEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/NonResizeableWidget.cpp qutecom-2.2+dfsg1/libs/qtutil/src/NonResizeableWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/NonResizeableWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/NonResizeableWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Object.cpp qutecom-2.2+dfsg1/libs/qtutil/src/Object.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Object.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/Object.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/OsdButton.cpp qutecom-2.2+dfsg1/libs/qtutil/src/OsdButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/OsdButton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/OsdButton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/PaintEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/PaintEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/PaintEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/PaintEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/PixmapMerging.cpp qutecom-2.2+dfsg1/libs/qtutil/src/PixmapMerging.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/PixmapMerging.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/PixmapMerging.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QObjectThreadSafe.cpp qutecom-2.2+dfsg1/libs/qtutil/src/QObjectThreadSafe.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QObjectThreadSafe.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QObjectThreadSafe.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailDirModel.cpp qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailDirModel.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailDirModel.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailDirModel.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailDirModel.h qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailDirModel.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailDirModel.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailDirModel.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailManager.cpp qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailManager.h qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailManager.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QtThumbnailManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QtThumbnailManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QuteComStyleLabel.cpp qutecom-2.2+dfsg1/libs/qtutil/src/QuteComStyleLabel.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/QuteComStyleLabel.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/QuteComStyleLabel.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,232 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include + +QuteComStyleLabel::QuteComStyleLabel(QWidget * parent, Mode mode, Qt::AlignmentFlag hAlign) + : QLabel(parent), _mode(mode) { + + _parent = parent; + _pressed = false; + _selected = false; + _toggled = false; + + //Default background color + _backgroundColor = _parent->palette().color(QPalette::Window); + //Default text color + _textColor = _parent->palette().color(QPalette::Text); + + _alignment = Qt::AlignVCenter | hAlign; +} + +QuteComStyleLabel::~QuteComStyleLabel() { +} + +void QuteComStyleLabel::paintEvent(QPaintEvent * event) { +/* + qDebug() << "Paint event"; + QLabel::paintEvent( event ); + return; +*/ + QRect rect = this->rect(); + + QPainter painter(this); + rect.adjust(-1, -1, 1, 1); + + //painter.fillRect(rect,QBrush(_backgroundColor)); + + if (!_pressed && !_selected) { + //Draw the left side if any + if (!_normalLeftPixmap.isNull()) { + painter.drawPixmap(0,0,_normalLeftPixmap); + } + //Fill the the label + if (!_normalFillPixmap.isNull()) { + QBrush brush(_normalFillPixmap); + + QRect fillRect = rect; + if (!_normalLeftPixmap.isNull()) { + fillRect.adjust(_normalLeftPixmap.rect().width()-1,0,0,0); + } + if (!_normalRightPixmap.isNull()) { + fillRect.adjust(0,0,0-_normalRightPixmap.rect().width(),0); + } + painter.fillRect(fillRect,brush); + } + //Draw the right side + if (!_normalRightPixmap.isNull()) { + painter.drawPixmap( (rect.width()-1) - _normalRightPixmap.rect().width(),0,_normalRightPixmap); + } + + } //if (! _pressed ) + + else { + //Draw the left side if any + if (!_pressedLeftPixmap.isNull()) { + painter.drawPixmap(0, 0, _pressedLeftPixmap); + } + //Fill the the label + if (!_pressedFillPixmap.isNull()) { + QBrush brush(_pressedFillPixmap); + + QRect fillRect = rect; + if (!_pressedLeftPixmap.isNull()) { + fillRect.adjust(_pressedLeftPixmap.rect().width() - 1, 0, 0, 0); + } + if (!_pressedRightPixmap.isNull()) { + fillRect.adjust(0, 0, 0 - _pressedRightPixmap.rect().width(), 0); + } + painter.fillRect(fillRect,brush); + } + //Draw the right side + if (!_pressedRightPixmap.isNull()) { + painter.drawPixmap((rect.width() - 1) - _pressedRightPixmap.rect().width(), 0, _pressedRightPixmap); + } + } + painter.end(); + QPainter p(this); + drawText(&p); + p.end(); +} + +void QuteComStyleLabel::drawText(QPainter * painter) { + QRect rect = this->rect(); + + painter->save(); + painter->setPen(_textColor); + painter->drawText(rect, _alignment, this->text(), &rect); + painter->restore(); +} + +void QuteComStyleLabel::resizeEvent ( QResizeEvent * event) { + QLabel::resizeEvent(event); +} + +void QuteComStyleLabel::setPixmaps(const QPixmap & normalLeftPixmap, + const QPixmap & normalRightPixmap, + const QPixmap & normalFillPixmap, + const QPixmap & pressedLeftPixmap, + const QPixmap & pressedRightPixmap, + const QPixmap & pressedFillPixmap) { + + _normalLeftPixmap = normalLeftPixmap; + _normalRightPixmap = normalRightPixmap; + _normalFillPixmap = normalFillPixmap; + + _pressedLeftPixmap = pressedLeftPixmap; + _pressedRightPixmap = pressedRightPixmap; + _pressedFillPixmap = pressedFillPixmap; +} + +/*void QuteComStyleLabel::setLeftPixmaps(const QPixmap & normalLeftPixmap, const QPixmap & pressedLeftPixmap) { + _normalLeftPixmap = normalLeftPixmap; + _pressedLeftPixmap = pressedLeftPixmap; +} + +void QuteComStyleLabel::setRightPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap) { + _normalRightPixmap = normalRightPixmap; + _pressedRightPixmap = pressedRightPixmap; +}*/ + +void QuteComStyleLabel::setTextColor(const QColor & color) { + _textColor = color; +} + +/*void QuteComStyleLabel::setBackgroundColor(const QColor & color) { + _backgroundColor = color; +}*/ + +void QuteComStyleLabel::mouseMoveEvent(QMouseEvent * event) { + _pressed = false; + QPoint mousePosition = event->pos(); + const QRect rect = this->rect(); + if ((mousePosition.x() >= rect.x()) && ( mousePosition.x() <= rect.width())) { + if ((mousePosition.y() >= rect.y()) && ( mousePosition.y() <= rect.height())) { + _pressed = true; + } + } + update(); +} + +void QuteComStyleLabel::mousePressEvent(QMouseEvent * event) { + if (event->button() == Qt::LeftButton) { + _pressed = true; + update(); + } +} + +void QuteComStyleLabel::mouseReleaseEvent(QMouseEvent * event) { + if (!_pressed) { + return; + } + //Gets the widget rect + const QRect rect = this->rect(); + + //Gets the mouse position relative to this widget + QPoint mousePosition = event->pos(); + if ((mousePosition.x() >= rect.x()) && (mousePosition.x() <= rect.width())) { + if ((mousePosition.y() >= rect.y()) && (mousePosition.y() <= rect.height())) { + clicked(); + if (_mode == Toggled) { + _toggled = !_toggled; + if (_toggled) { + _pressed = true; + } else { + _pressed = false; + } + } else { + _pressed = false; + } + update(); + } + } +} + +void QuteComStyleLabel::setText(const QString & text) { + QLabel::setText(text); + QFontMetrics fm(font()); + int textWidth = fm.width(text); + textWidth += 40; + QSize s = size(); + if (textWidth > s.width()) { + //setMaximumSize(textWidth,s.height()); + setMinimumSize(textWidth,s.height()); + } +} + +QSize QuteComStyleLabel::minimumSizeHint() const { + int width = + _normalLeftPixmap.width() + + _normalFillPixmap.width() + + _normalRightPixmap.width(); + + int height = + qMax(_normalLeftPixmap.height(), + qMax(_normalFillPixmap.height(), + _normalRightPixmap.height() + )); + + return QSize(width, height); +} + +QSize QuteComStyleLabel::sizeHint() const { + return minimumSizeHint(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ResizeEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ResizeEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ResizeEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ResizeEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/SafeConnect.cpp qutecom-2.2+dfsg1/libs/qtutil/src/SafeConnect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/SafeConnect.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/SafeConnect.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ScrollFrame.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ScrollFrame.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ScrollFrame.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ScrollFrame.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/StringListConvert.cpp qutecom-2.2+dfsg1/libs/qtutil/src/StringListConvert.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/StringListConvert.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/StringListConvert.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ThreadEventFilter.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ThreadEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ThreadEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ThreadEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ThumbnailView.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ThumbnailView.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ThumbnailView.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ThumbnailView.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ToolTipLineEdit.cpp qutecom-2.2+dfsg1/libs/qtutil/src/ToolTipLineEdit.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/ToolTipLineEdit.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/ToolTipLineEdit.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/UpQComboBox.cpp qutecom-2.2+dfsg1/libs/qtutil/src/UpQComboBox.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/UpQComboBox.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/UpQComboBox.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WengoStyleLabel.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WengoStyleLabel.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WengoStyleLabel.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WengoStyleLabel.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,232 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include - -WengoStyleLabel::WengoStyleLabel(QWidget * parent, Mode mode, Qt::AlignmentFlag hAlign) - : QLabel(parent), _mode(mode) { - - _parent = parent; - _pressed = false; - _selected = false; - _toggled = false; - - //Default background color - _backgroundColor = _parent->palette().color(QPalette::Window); - //Default text color - _textColor = _parent->palette().color(QPalette::Text); - - _alignment = Qt::AlignVCenter | hAlign; -} - -WengoStyleLabel::~WengoStyleLabel() { -} - -void WengoStyleLabel::paintEvent(QPaintEvent * event) { -/* - qDebug() << "Paint event"; - QLabel::paintEvent( event ); - return; -*/ - QRect rect = this->rect(); - - QPainter painter(this); - rect.adjust(-1, -1, 1, 1); - - //painter.fillRect(rect,QBrush(_backgroundColor)); - - if (!_pressed && !_selected) { - //Draw the left side if any - if (!_normalLeftPixmap.isNull()) { - painter.drawPixmap(0,0,_normalLeftPixmap); - } - //Fill the the label - if (!_normalFillPixmap.isNull()) { - QBrush brush(_normalFillPixmap); - - QRect fillRect = rect; - if (!_normalLeftPixmap.isNull()) { - fillRect.adjust(_normalLeftPixmap.rect().width()-1,0,0,0); - } - if (!_normalRightPixmap.isNull()) { - fillRect.adjust(0,0,0-_normalRightPixmap.rect().width(),0); - } - painter.fillRect(fillRect,brush); - } - //Draw the right side - if (!_normalRightPixmap.isNull()) { - painter.drawPixmap( (rect.width()-1) - _normalRightPixmap.rect().width(),0,_normalRightPixmap); - } - - } //if (! _pressed ) - - else { - //Draw the left side if any - if (!_pressedLeftPixmap.isNull()) { - painter.drawPixmap(0, 0, _pressedLeftPixmap); - } - //Fill the the label - if (!_pressedFillPixmap.isNull()) { - QBrush brush(_pressedFillPixmap); - - QRect fillRect = rect; - if (!_pressedLeftPixmap.isNull()) { - fillRect.adjust(_pressedLeftPixmap.rect().width() - 1, 0, 0, 0); - } - if (!_pressedRightPixmap.isNull()) { - fillRect.adjust(0, 0, 0 - _pressedRightPixmap.rect().width(), 0); - } - painter.fillRect(fillRect,brush); - } - //Draw the right side - if (!_pressedRightPixmap.isNull()) { - painter.drawPixmap((rect.width() - 1) - _pressedRightPixmap.rect().width(), 0, _pressedRightPixmap); - } - } - painter.end(); - QPainter p(this); - drawText(&p); - p.end(); -} - -void WengoStyleLabel::drawText(QPainter * painter) { - QRect rect = this->rect(); - - painter->save(); - painter->setPen(_textColor); - painter->drawText(rect, _alignment, this->text(), &rect); - painter->restore(); -} - -void WengoStyleLabel::resizeEvent ( QResizeEvent * event) { - QLabel::resizeEvent(event); -} - -void WengoStyleLabel::setPixmaps(const QPixmap & normalLeftPixmap, - const QPixmap & normalRightPixmap, - const QPixmap & normalFillPixmap, - const QPixmap & pressedLeftPixmap, - const QPixmap & pressedRightPixmap, - const QPixmap & pressedFillPixmap) { - - _normalLeftPixmap = normalLeftPixmap; - _normalRightPixmap = normalRightPixmap; - _normalFillPixmap = normalFillPixmap; - - _pressedLeftPixmap = pressedLeftPixmap; - _pressedRightPixmap = pressedRightPixmap; - _pressedFillPixmap = pressedFillPixmap; -} - -/*void WengoStyleLabel::setLeftPixmaps(const QPixmap & normalLeftPixmap, const QPixmap & pressedLeftPixmap) { - _normalLeftPixmap = normalLeftPixmap; - _pressedLeftPixmap = pressedLeftPixmap; -} - -void WengoStyleLabel::setRightPixmaps(const QPixmap & normalRightPixmap, const QPixmap & pressedRightPixmap) { - _normalRightPixmap = normalRightPixmap; - _pressedRightPixmap = pressedRightPixmap; -}*/ - -void WengoStyleLabel::setTextColor(const QColor & color) { - _textColor = color; -} - -/*void WengoStyleLabel::setBackgroundColor(const QColor & color) { - _backgroundColor = color; -}*/ - -void WengoStyleLabel::mouseMoveEvent(QMouseEvent * event) { - _pressed = false; - QPoint mousePosition = event->pos(); - const QRect rect = this->rect(); - if ((mousePosition.x() >= rect.x()) && ( mousePosition.x() <= rect.width())) { - if ((mousePosition.y() >= rect.y()) && ( mousePosition.y() <= rect.height())) { - _pressed = true; - } - } - update(); -} - -void WengoStyleLabel::mousePressEvent(QMouseEvent * event) { - if (event->button() == Qt::LeftButton) { - _pressed = true; - update(); - } -} - -void WengoStyleLabel::mouseReleaseEvent(QMouseEvent * event) { - if (!_pressed) { - return; - } - //Gets the widget rect - const QRect rect = this->rect(); - - //Gets the mouse position relative to this widget - QPoint mousePosition = event->pos(); - if ((mousePosition.x() >= rect.x()) && (mousePosition.x() <= rect.width())) { - if ((mousePosition.y() >= rect.y()) && (mousePosition.y() <= rect.height())) { - clicked(); - if (_mode == Toggled) { - _toggled = !_toggled; - if (_toggled) { - _pressed = true; - } else { - _pressed = false; - } - } else { - _pressed = false; - } - update(); - } - } -} - -void WengoStyleLabel::setText(const QString & text) { - QLabel::setText(text); - QFontMetrics fm(font()); - int textWidth = fm.width(text); - textWidth += 40; - QSize s = size(); - if (textWidth > s.width()) { - //setMaximumSize(textWidth,s.height()); - setMinimumSize(textWidth,s.height()); - } -} - -QSize WengoStyleLabel::minimumSizeHint() const { - int width = - _normalLeftPixmap.width() - + _normalFillPixmap.width() - + _normalRightPixmap.width(); - - int height = - qMax(_normalLeftPixmap.height(), - qMax(_normalFillPixmap.height(), - _normalRightPixmap.height() - )); - - return QSize(width, height); -} - -QSize WengoStyleLabel::sizeHint() const { - return minimumSizeHint(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetBackgroundImage.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WidgetBackgroundImage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetBackgroundImage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WidgetBackgroundImage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Widget.cpp qutecom-2.2+dfsg1/libs/qtutil/src/Widget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Widget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/Widget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetFactory.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WidgetFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WidgetFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetRatioEnforcer.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WidgetRatioEnforcer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetRatioEnforcer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WidgetRatioEnforcer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetUtils.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WidgetUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WidgetUtils.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WidgetUtils.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WindowsDesktopService.cpp qutecom-2.2+dfsg1/libs/qtutil/src/WindowsDesktopService.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/WindowsDesktopService.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/WindowsDesktopService.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Wizard.cpp qutecom-2.2+dfsg1/libs/qtutil/src/Wizard.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/src/Wizard.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/src/Wizard.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/fallback.ts qutecom-2.2+dfsg1/libs/qtutil/tests/fallback.ts --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/fallback.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/fallback.ts 2010-10-18 12:50:12.000000000 +0000 @@ -4,27 +4,27 @@ AIMSettings - + AIM Settings - + Password: - + Login: - + Forgot your AIM password? - + Get a new AIM Account @@ -32,27 +32,27 @@ AboutWindow - + @product@ - About - + About - + @product@, a voice over Internet phone - + Copyright (C)2008 Mbdsys - + 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 @@ -60,12 +60,12 @@ - + Authors - + Close @@ -73,42 +73,42 @@ AcceptDialog - + File Transfer - - toto@wengo.fr + + toto@qutecom.fr - + test.bmp - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - + &Accept - + &Cancel @@ -116,7 +116,7 @@ AccountSettings - + &Edit my profile @@ -124,52 +124,52 @@ AddAccount - + @product@ - Login - + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - + You don't have any account ? Click here - + Configure your account: - + @company@ account - + Generic SIP account - + Need help? - + &Back - + &Next - + Cancel @@ -177,178 +177,178 @@ AddIMContact - + @product@ - Add a Contact Account - + Contact Type (protocol): - + Contact ID: - + Account: - + Enable - + Login - + Add - + Cancel - AddSIPAccount + AddQuteComAccount - + @product@ - Login - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - : + + Click here if you don't have a @company@ account - + Password: - - Proxy: + + Forgot your @company@ password? - - SIP Domain / Realm: + + Email Address: - - Server: + + Need help? - - Account name: + + &Back - - Displayname: + + &Connect - - login / username: + + Cancel + + + AddSIPAccount - - Advanced + + @product@ - Login - - Activate presence and chat (SIP/SIMPLE) + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - Need help? + + : - - &Back + + Password: - - &Connect + + Proxy: - - Cancel + + SIP Domain / Realm: - - - AddWengoAccount - - @product@ - Login + + Server: - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + Account name: - - Click here if you don't have a @company@ account + + Displayname: - - Password: + + login / username: - - Forgot your @company@ password? + + Advanced - - Email Address: + + Activate presence and chat (SIP/SIMPLE) - + Need help? - + &Back - + &Connect - + Cancel @@ -356,42 +356,42 @@ AdvancedConfigWindow - + @product@ - Advanced Configuration - + Preference Name - + Status - + Type - + Value - + Default Value - + Close - + Save @@ -399,32 +399,32 @@ AdvancedSettings - + Advanced Settings - + Automatically answer incoming calls from - + Add - + Remove - + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - + Advanced Configuration Window @@ -432,32 +432,32 @@ AppearanceSettings - + Form - + Toolbar - + &Icons && Text - + Icons &Only - + &Hidden - + Chat Theme @@ -465,53 +465,53 @@ AudioSettings - + &Input device: - + &Output device: - + &Ringing device: - + &Make a test call - - + + Test - + &Half Duplex - + &Advanced >> - + Audio Codecs - + Reset - + Be aware, this section is for power users only. Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. @@ -520,7 +520,7 @@ AvatarFrame - + Form @@ -528,7 +528,7 @@ AvatarWidget - + Form @@ -536,17 +536,17 @@ BrowserSoftUpdateWindow - + @product@ - Update available - + Close - + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> @@ -554,49 +554,49 @@ CallForwardSettings - + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - + Disable call forwarding - + Forward all unanswered calls to message box - + Forward all unanswered calls to following phone numbers: - + 3rd: - + 1st: - + 2nd: - - - + + + (+ country code) phone number - + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) @@ -604,12 +604,12 @@ CallToaster - + Incoming Call - + Message @@ -617,78 +617,78 @@ ChatLogViewer - + Chat History - + &Contact - + @company@ - + &Tools - + &Help - + &Actions - + Main Toolbar - - - + + + Call Contact - - - + + + Send a File - + createChatConf - - - + + + Show Contact Info - + blockContact - + &Save History As... - + actionRestartChat @@ -696,113 +696,113 @@ ChatMainWindow - + MainWindow - + @company@ - + &Contact - + &Actions - + &Tools - + &Edit - + Main Toolbar - + &Close - - - + + + Call Contact - - - + + + Send a File - - - + + + Show Contact Info - + blockContact - + &Save History As... - + Cu&t - + Ctrl+X - + &Copy - + Ctrl+C - + &Paste - + Ctrl+V - + Start Chat Conference - + Conference @@ -810,37 +810,37 @@ ChatRoomInviteWidget - + Chat room - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - + (Conference participants) - + &Remove - + &Start - + Group Name - + &Add @@ -848,12 +848,12 @@ ChatToaster - + Message - + Incoming Chat @@ -861,7 +861,7 @@ ChatWidget - + Form @@ -869,37 +869,37 @@ ConferenceCallWidget - + @product@ - Create a Conference - + Start - + Cancel - + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - + Phone number 2: - + Phone number 1: - + ... @@ -907,32 +907,32 @@ ConferenceInviteWidget - + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - + &Add >> - + << &Remove - + Available Contacts - + &Start - + Cancel @@ -940,32 +940,32 @@ ContactGroupPopupMenu - + Remove Contact Group - + Rename Contact Group - + Delete group - + Do you really want to delete this group? - + &Yes - + &No @@ -973,25 +973,30 @@ ContactList - + Contact List + + + goupname + + ContactWidget - + No landline phone number set - + No mobile phone number set - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1049,37 +1054,37 @@ CreditWidget - + Call Forward Method - + Not Available - + Click here to change your call forward settings - + Call forward mode: - + Click here to buy @company@'s credits - + Purchase call out credits - + Call Voice Mail @@ -1095,7 +1100,7 @@ DialpadWidget - + Click on the various color changing items to send sounds to your interlocutor. @@ -1103,71 +1108,94 @@ EventWidget - - + + 0 - + Click here to call your voice mail - + New Voice Mail: - + Click here to see missed call(s) - + Missed Call(s): + FacebookSettings + + + Facebook Settings + + + + + Email Address + + + + + Password + + + + + +Get a new Facebook Account + + + + FileTransferDialog - + @product@ - File Transfer Manager - + Download - + Upload - + Click here to change your download folder - + ... - + Download folder: - + Clean all items in the list - + &Clean @@ -1175,22 +1203,22 @@ FileTransferItem - + Form - + <i>From:</i> - + Cancel - + Pause @@ -1198,52 +1226,52 @@ GeneralSettings - + When I start my computer - + Automatically start @product@ - + Start in background mode - + When I double-click on a contact - + Prefere start a free call if applicable - + Prefere start a chat - + Call cell phone or land line if contact not online - + Idle status - + minutes - + Show me as "Away" when I am inactive for: @@ -1251,27 +1279,27 @@ GoogleTalkSettings - + GoogleTalk Settings - + Password: - + Login: - + Forgot your GoogleTalk password? - + Get a new GoogleTalk Account @@ -1279,42 +1307,42 @@ HttpProxyLoginWindow - + @product@ - Local HTTP Proxy - + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - + HTTP Proxy Address: - + HTTP Proxy Port Number: - + HTTP Proxy Login: - + HTTP Proxy Password: - + OK - + Cancel @@ -1322,27 +1350,27 @@ ICQSettings - + ICQ Settings - + Password: - + Login: - + Forgot your ICQ password? - + Get a new ICQ Account @@ -1350,37 +1378,37 @@ IMAccountManager - + @product@ - My Instant Messaging Accounts (MSN, Jabber...) - + Protocol - + Login - + Delete - + Modify - + Close - + Add @@ -1388,17 +1416,17 @@ IMAccountTemplate - + IM Account Settings - + Save - + Cancel @@ -1406,27 +1434,27 @@ IMContactManager - + Delete - + Add - + Contact ID - + Contact Type (protocol) - + Click on the add button below to add a new ID @@ -1434,23 +1462,23 @@ IMProfileWidget - + Add an instant messaging account (MSN, AIM, GoogleTalk...) - + Add an IM account - - + + Enter your nickname here - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1484,62 +1512,62 @@ JabberSettings - + Jabber Settings - + Password: - + Login: - + Connect Server: - + <u>Advanced Options</u> - + Require TLS - + Resource: - + Port: - + Use TLS if available - + Allow plaintext authentication over unencrypted streams - + 5222 - + Force old (port 5223) SSL @@ -1547,12 +1575,27 @@ LanguagesSettings - + + Google Translate + + + + + language to convert the messages received + + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? - + More information here. @@ -1560,57 +1603,57 @@ LogAccount - + @product@ - Login - + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - + Configure a &New Profile - + Need help? - + &Connect - + Cancel - + Password: - + &Modify - + Account: - + Forgot your @company@ password? - + Delete @@ -1618,32 +1661,32 @@ MSNSettings - + MSN Settings - + Forgot your MSN password? - + Get a new MSN Account - + Password: - + Login: - + Use HTTP method @@ -1651,37 +1694,37 @@ MainWindow - + MainWindow - + Command::terminate() - + Command::start() - + Accept Call - + Send Chat Message - + Make Call - + Hang Up @@ -1689,45 +1732,68 @@ ManageBlockedUsersSettings - + @product@ - Manage blocked users - + Unblock User - + Close - + Manage blocked users - NoWengoAlert + MySpaceSettings + + + MySpace Settings + + + + + Email Address + + + + + Password + + + + + + Get a new MySpace Account + + + + + NoQuteComAlert - + @product@ - SMS - + I have a @company@ account - + Create a @company@ account - + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. @@ -1735,7 +1801,7 @@ NotificationSettings - + Select the events for which a sound should be played. @@ -1743,22 +1809,22 @@ NotificationSettingsItem - + Sound file - + Find a sound file - + Play sound file - + Play @@ -1766,22 +1832,22 @@ NotifyDialog - + File Transfer - + &Ok - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> @@ -1789,43 +1855,43 @@ PhoneCallWidget - - + + Communication is encrypted - + Status - + 00:00:00 - + Nickname - + &Accept - + &Reject - + Dialpad - + Audio Smileys @@ -1833,44 +1899,44 @@ PrivacySettings - + Privacy Rules - + When I sign into @company@ - + Always sign in as "Invisible" (appear offline to all users) - + Allow chats from - - + + Anyone - - + + Only people from my contact list - + Allow calls from - + Manage blocked users @@ -1878,62 +1944,62 @@ ProfileDetails - + General - + Network IDs (MSN, Jabber...) - + Advanced >> - + Fill in all your network Id to stay connected with your contacts - + Phone Numbers - + Home phone - + Mobile phone - + Contact - + Group: - + Last Name: - + First Name: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1941,77 +2007,77 @@ - + Details - + Web/blog: - + Country: - + State: - + City: - + Gender: - + Birth Date: - + Email: - + dd MMMM yyyy - + Unknown - + Male - + Female - + Notes - + Cancel - + Save @@ -2019,7 +2085,7 @@ QObject - + @product@ @@ -2027,12 +2093,12 @@ QtAccountSettings - + Accounts - + Accounts Settings @@ -2040,12 +2106,12 @@ QtAddAccount - + Please tell us if your account is provided<br/>by @company@ or by another service - + Configure your voip account @@ -2053,82 +2119,82 @@ QtAddAccountUtils - + Test - + Audio Test Call - + Video Test Call - QtAddSIPAccount + QtAddQuteComAccount - - Your profile name already exists! + + @product@ - Connexion - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + Please enter an email address. - - Configure your SIP profile + + Please enter your email address<br/>and your password - - - QtAddWengoAccount - - @product@ - Connexion + + Login + + + QtAddSIPAccount - - Please enter an email address. + + Your profile name already exists! - - Please enter your email address<br/>and your password + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - Login + + Configure your SIP profile QtAdvancedIMContactManager - + @product@ - + Are sure you want to delete this IM contact? - + &Delete - + Cancel @@ -2136,12 +2202,12 @@ QtAdvancedSettings - + Advanced - + Advanced Settings @@ -2149,50 +2215,50 @@ QtAppearanceSettings - - + + Me - + Hello - + How are you? - - - + + + Other - + I am fine - + Have to go - + Bye - + Appearance - + Appearance Settings @@ -2200,18 +2266,18 @@ QtAudioSettings - + Audio - + Audio Settings - - + + Advanced @@ -2219,7 +2285,7 @@ QtCallBar - + +(country code) number or nickname @@ -2227,18 +2293,18 @@ QtCallForwardSettings - - + + Call Forward - + Call Forward Settings - + To configure call forward settings you need to<BR> be logged in with a @company@ account. @@ -2246,7 +2312,7 @@ QtChatHistoryWidget - + Save As @@ -2254,7 +2320,12 @@ QtChatLogViewer - + + Account + + + + Edit Contact @@ -2262,7 +2333,7 @@ QtChatTabWidget - + Close chat @@ -2270,42 +2341,42 @@ QtChatWidget - + send - + Your file can not be sent: your contact must be connected on the @company@ network. - + Your contact wishes to send a file with @company@. - + Go to %1 to install it - + %1 is connected. - + %1 is disconnected. - + %1 has joined the chat - + %1 has left the chat @@ -2313,17 +2384,22 @@ QtChatWindow - + @product@ Chat - + + Account + + + + %1 is typing - + Edit Contact @@ -2331,22 +2407,22 @@ QtConferenceCallWidget - + Call @company@ - + Call SIP - + Call land line - + Call Mobile @@ -2354,28 +2430,28 @@ QtContactCallListWidget - - + + @product@ - Proceed Conference - + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - + Hold first interlocutor and call second one - + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - + Start Conference @@ -2383,22 +2459,22 @@ QtContactList - + @product@ - Merge Contacts - + Merge %1 with %2? - + &Yes - + &No @@ -2406,98 +2482,98 @@ QtContactManager - + Edit Contact - - + + Delete contact - + Do you really want to delete this contact? - + &Yes - + &No - + Call - + Free call - + Mobile phone - + Home phone - + Work phone - + @product@ - + Send SMS - + Go to website - + Send file - + Edit contact - + Block contact - + Forward to mobile phone - + Start chat - + Invite to conference @@ -2505,49 +2581,49 @@ QtContactWidget - + No landline phone number set - + No mobile phone number set - - + + Click here to call - - + + Click here to set a phone number - + Click here to edit the contact - + Click here to send a SMS - + Click here to start a chat - + Click here to start a free call - + Click here to send a file @@ -2563,12 +2639,12 @@ QtEventWidget - + @product@ - Voice Mail - + Do you want to call your voice mail? @@ -2576,88 +2652,88 @@ QtFileTransfer - + Choose a directory - + Overwrite File? - + A file called %1 already exists.Do you want to overwrite it? - + &Yes - + &No - + %1 is a directory. - + You can not send a directory. - + %1 is a shortcut. - + You can not send a shortcut. - - + + File size error - + %1 exceeds the maximum authorized size. - + %1 has size 0. - + Please upgrade<br> your @product@ - + The file cannot be received:you must upgrade your @product@ in order to receive it. - + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - + Tell your contact<br> to upgrade<br> his @product@ - + All Files (*.* *) @@ -2665,116 +2741,116 @@ QtFileTransferItem - - + + Downloading... - + Waiting for peer... - + From: - + To: - + Open - + Remove - - - + + + Cancel - + Resume - - + + Pause - + Starting - + Waiting for anwser... - + Done - + Failed - + An error occured during the file transfer - + This may be caused by : - + Your @product@ is not up to date. Please download the latest version on - + The @company@ network may be temporarily unavailable. Please try later. - + Paused - + Paused by peer - + Cancelled - + Cancelled by peer - + Uploading... @@ -2782,12 +2858,12 @@ QtGeneralSettings - + General - + General Settings @@ -2795,62 +2871,62 @@ QtHistory - + Incoming call - + Outgoing call - + Missed call - + Rejected call - + Outgoing SMS - + Chat session - + @product@ - Call History - + Do you want to call %1? - + Type - + Name/ID - + Date - + Duration @@ -2858,22 +2934,22 @@ QtHistoryWidget - + Open in SMS window - + Call this peer - + Show chat log - + Erase this entry @@ -2881,23 +2957,23 @@ QtIMAccountManager - + @product@ - + Are sure you want to delete this account? - + &Delete - + Cancel @@ -2905,40 +2981,40 @@ QtIMAccountMonitor - - - + + + Disconnected - + Error: %1 - + %1 (%2/%3) %1 is message, %2 is currentStep, %3 is totalSteps - + Online - + Invisible - + Away - + Do not disturb @@ -2946,12 +3022,12 @@ QtIMAccountPlugin - + @product@ - + Please enter a login @@ -2959,52 +3035,52 @@ QtIMAccountPresenceMenuManager - + Disconnect - + Online - + Away - + Do Not Disturb - + Invisible - + Delete Account - + Are sure you want to delete the account <b>%1</b>? - + @product@ - + &Delete - + Cancel @@ -3012,14 +3088,14 @@ QtIMProfileWidget - + %1 (%2) %3 %1 is login, %2 is protocol, %3 is status - + Edit My Profile @@ -3027,12 +3103,12 @@ QtLanguagesSettings - + Language - + Language Settings @@ -3040,32 +3116,32 @@ QtLogAccount - + Invalid account - + Warning - + Do you really want to delete this profile - + Yes - + No - + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account @@ -3073,7 +3149,7 @@ QtLoginDialog - + @product@ - Connexion @@ -3081,47 +3157,47 @@ QtNotificationSettings - + Incoming call (ringtone) - + Outgoing call (ringtone) - + Call closed (hang up tone) - + Incoming chat - + IM account connected - + IM account disconnected - + Contact online - + Notifications - + Notifications Settings @@ -3129,12 +3205,12 @@ QtNotificationSettingsItem - + Choose a sound file - + Sounds @@ -3142,119 +3218,119 @@ QtPhoneCall - + Status - + Ca&ncel - + Hang-up - + Transfert call - + Add contact - + Resume - - + + Hold - + Initialization... - + QuteCom - Information - + You must enter a phone number before forwarding - + Error - + Talking - Conference - + Talking - + Dialing - + User busy - + Call Rejected - + User/number not found - + User not available - - + + Ringing - + Incoming Call - + Redirected - + Closed - + Add a Contact @@ -3262,27 +3338,27 @@ QtPresenceMenuManager - + Online - + Away - + Do Not Disturb - + Invisible - + Log off @@ -3290,12 +3366,12 @@ QtPrivacySettings - + Privacy - + Privacy Settings @@ -3303,38 +3379,38 @@ QtProfileBar - + Click here to change your status - + Voice mail - + Set global presence to: - - + + active - + voicemail - + inactive - + unauthorized @@ -3342,51 +3418,191 @@ QtProfileDetails - - + + @product@ - + @product@ - No Group Selected - + A contact must have a group, please set a group. - + Select your avatar - + @company@ Avatars - + << Simple - + Advanced >> + QtQuteCom + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + + Can't place a call, you are not connected + + + + + You must enter a phone number + + + + + An error has occured trying to place the call + + + + + Call + + + + + + + + Conference + + + + + @product@ - Warning + + + + + You have unfinished call(s). + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + &Cancel + + + + + + Home + + + + + Account + + + + + Add a Contact + + + + + QtQuteComConfigDialog + + + General + + + + + Language + + + + + Accounts + + + + + Privacy + + + + + Audio + + + + + Video + + + + + Notifications + + + + + Call Forward + + + + + Advanced + + + + + Voicemail + + + + + security + + + + QtRenameGroup - + Bad group name - + Group name cannot be empty @@ -3394,17 +3610,17 @@ QtSecuritySettings - + Security - + Security Settings - + BETA @@ -3412,47 +3628,47 @@ QtSms - - - - + + + + @company@ SMS service - + Please fill in a phone number. - + You can not send an empty message. - + Your message is too long. This will send - + SMS. - + Do you want to continue? - + Your SMS has not been sent - + Your SMS has been sent @@ -3460,12 +3676,12 @@ QtSoftUpdate - + @product@ - Update failed - + @product@ update failed to start: try to update @product@ manually @@ -3473,68 +3689,68 @@ QtStatusBar - - + + Not connected - + Output volume is muted - + Output volume is 0 - + Click to adjust output volume - + Input volume is muted - + Input volume is 0 - + Click to adjust input volume - + An error occured: Server error. - + An error occured: Timeout. - + An error occured: Authentication error. - + Register done - + Unregister done - + Connecting @@ -3542,121 +3758,121 @@ QtSystray - - - - - - - - - - + + + + + + + + + + @product@ - + Call - + Quit @product@ - + Status - + Send a SMS - + Send SMS - + Start a chat - + Place Call - + Call @company@ - + Call Mobile - + Call land line - + Call SIP - + Send File - + Away - + Online - + Offline - + Invisible - + Do Not Disturb - + Multiple Status - + Unknown Status - + Connecting... - + Internet Connection Error @@ -3664,88 +3880,88 @@ QtToolBar - + Edit My Profile - + Add a Contact - + Hide Unavailable Contacts - + Show Unavailable Contacts - + Hide Groups - + Show Groups - + Disable &Video Calls - + Enable &Video Calls - + @product@ - Proceed Conference - + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - + @product@ - Warning - + You have unfinished call(s). - + Are you sure you want to log off? - + &Log Off - + &Cancel - - + + Log &Off... - + Log &On... @@ -3753,7 +3969,7 @@ QtTreeViewDelegate - + Contacts list @@ -3761,30 +3977,31 @@ QtUserProfile - + Network error. - - + + @product@ - Authorization Request - - + + &Authorize - - + + &Block - + + Edit Contact @@ -3792,41 +4009,41 @@ QtUserProfileHandler - - + + @product@ - + A problem occured while loading your profile. The last backuped profile has been loaded: you may have lost last changes made - + Your profile could not be loaded. Choose another profile or create a new one. - + Wrong email/password entered - + Wrong login/password entered - + Connection error - + Unexpected error (code: %1 @@ -3834,7 +4051,7 @@ QtVideoQt - + @product@ @@ -3842,36 +4059,36 @@ QtVideoSettings - + Video - + Video Settings - - + + Normal - - + + Good - - + + Very good - - + + Excellent @@ -3879,12 +4096,12 @@ QtVoicemailSettings - + Voicemail - + Voicemail Settings @@ -3892,792 +4109,718 @@ QtWebDirectory - + @product@ - Directory - QtWengoConfigDialog + QuteComConfigDialog - - General + + @product@ - Configuration - - Language + + Title - - Accounts + + Save - - Privacy + + Cancel + + + QuteComWindow - - Audio + + @product@ - - Video + + Contacts - - Notifications + + History - - Call Forward + + Dialpad - - Advanced + + &Help - - Voicemail + + &Tools - - security + + Clear &History - - - QtWengoPhone - - @product@ - Call Error + + &Actions - - Please hold all the phone calls before placing a new one + + &Contacts - - Can't place a call, you are not connected + + @company@ - - You must enter a phone number + + ToolBar - - An error has occured trying to place the call + + View My @company@ Account... - - Call + + &Close - - - - - Conference + + Ctrl+W - - @product@ - Warning + + @company@ &Forum... - - You have unfinished call(s). + + &About... - - Are you sure you want to exit the application? + + Add &Contact... - - &Exit + + Add - - &Cancel + + Add Contact - - - Home + + &Configuration... - - Account + + Send SMS... - - Add a Contact + + SMS - - - RenameGroupDialog - - @product@ - Rename Contact Group + + Send SMS - - OK + + View My &Profile... - - Cancel + + + View My Profile - - Enter the new group name: + + Start &Conference... - - - SecuritySettings - - Form + + Conference - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + Start Conference - - Enable call encryption - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + @company@ &Wiki/FAQ... - - - SimpleIMContactManager - - ICQ ID: + + Learn more about @company@ Services... - - - - - - Update your profile + + Show/Hide Unavailable &Contacts - - Jabber/GoogleTalk ID: + + &Chat Sessions - - SIP ID: + + &All - - Yahoo! ID: + + &Find Contact... - - @company@ ID: + + Search - - MSN ID: + + Find @company@ Contacts - - AIM ID: + + &Accept - - exemple: username@server + + &HangUp - - - SmsWindow - - @product@ - SMS + + &Hold/Resume - - Click here to add a phone number + + Show/Hide &Groups - - 0 /160 + + Log &Off... - - Send + + + Log Off - - Enter your signature here + + Show &Chat Window - - Signature: + + + Show Chat Window - - Phone number(s): + + &Outgoing Calls - - Enter phone number(s) here<br>They must be separated by & or ; or , + + &Incoming Calls - - - SoftUpdateWindow - - @product@ - Downloading update + + &Missed Calls - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) + + Enable/Disable &Video Calls - - Cancel + + Short Text &Messages (SMS) - - - StatusBarWidget - - - ... + + Show &File Transfer - - - UserFrame - - Form + + Rejected Calls - - - VideoSettings - - Enable video + + &Quit - - Webcam Selection + + Ctrl+Q - - Webcam device: + + &Text Under Icons - - Webcam Preview + + &Icons Only - - Connection Type + + &Hidden + + + RenameGroupDialog - - Video quality depends on your Internet connection bandwidth + + @product@ - Rename Contact Group - - Video quality + + OK - - Down (kbit/s) + + Cancel - - Up (kbit/s) + + Enter the new group name: + + + SecuritySettings - - Normal + + Form - - 0 to 512 + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - 0 to 128 + + Enable call encryption - - - Good + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + SimpleIMContactManager - - 512 to 2048 + + ICQ ID: - - 128 to 256 + + + + + + + + + + + Update your profile - - Very good + + SIP ID: - - 2048+ + + Yahoo! ID: - - 256+ + + @company@ ID: - - Excellent + + MSN ID: - - 8192+ + + AIM ID: - - 1024+ + + GoogleTalk ID: - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + Jabber ID: - - Make a test video call + + FaceBook ID: - - - VideoWindow - - @product@ - Video + + MySpace ID: - - ... + + Skype ID: - - - VoicemailSettings - - Form - - - - - Phone number of your voicemail: - - - - - Please fill in here the information about your voicemail + + Twitter ID: - WengoConfigDialog + SkypeSettings - - @product@ - Configuration + + Skype Settings - - Title + + Skype Id - - Save - - - - - Cancel + + + Get a new Skype Account - WengoPhoneWindow - - - @product@ - - - - - Contacts - - - - - History - - - - - Dialpad - - - - - &Help - - - - - &Tools - - - - - Clear &History - - - - - &Actions - - - - - &Contacts - - - - - @company@ - - - - - ToolBar - - + SmsWindow - - View My @company@ Account... + + @product@ - SMS - - &Close + + Click here to add a phone number - - Ctrl+W + + 0 /160 - - @company@ &Forum... + + Send - - &About... + + Enter your signature here - - Add &Contact... + + Signature: - - Add + + Phone number(s): - - Add Contact + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + SoftUpdateWindow - - &Configuration... + + @product@ - Downloading update - - Send SMS... + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) - - SMS + + Cancel + + + StatusBarWidget - - Send SMS + + + ... + + + TwitterSettings - - View My &Profile... + + Twitter Settings - - - View My Profile + + Email Address - - Start &Conference... + + Password - - Conference + + + Get a new Twitter Account + + + UserFrame - - Start Conference + + Form + + + VideoSettings - - @company@ &Wiki/FAQ... + + Enable video - - Learn more about @company@ Services... + + Webcam Selection - - Show/Hide Unavailable &Contacts + + Webcam device: - - &Chat Sessions + + Webcam Preview - - &All + + Connection Type - - &Find Contact... + + Video quality depends on your Internet connection bandwidth - - Search + + Video quality - - Find @company@ Contacts + + Down (kbit/s) - - &Accept + + Up (kbit/s) - - &HangUp + + Normal - - &Hold/Resume + + 0 to 512 - - Show/Hide &Groups + + 0 to 128 - - Log &Off... + + Good - - - Log Off + + 512 to 2048 - - Show &Chat Window + + 128 to 256 - - - Show Chat Window + + Very good - - &Outgoing Calls + + 2048+ - - &Incoming Calls + + 256+ - - &Missed Calls + + Excellent - - Enable/Disable &Video Calls + + 8192+ - - Short Text &Messages (SMS) + + 1024+ - - Show &File Transfer + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - Rejected Calls + + Make a test video call + + + VideoWindow - - &Quit + + @product@ - Video - - Ctrl+Q + + ... + + + VoicemailSettings - - &Text Under Icons + + Form - - &Icons Only + + Phone number of your voicemail: - - &Hidden + + Please fill in here the information about your voicemail @@ -4712,32 +4855,32 @@ YahooSettings - + Yahoo! Settings - + Use Yahoo! Japan server - + Password: - + Login: - + Forgot your Yahoo! password? - + Get a new Yahoo! Account diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/main.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testdropdownwindow.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testdropdownwindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testdropdownwindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testdropdownwindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testdropdownwindow.h qutecom-2.2+dfsg1/libs/qtutil/tests/testdropdownwindow.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testdropdownwindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testdropdownwindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testexpandbutton.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testexpandbutton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testexpandbutton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testexpandbutton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testexpandbutton.h qutecom-2.2+dfsg1/libs/qtutil/tests/testexpandbutton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testexpandbutton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testexpandbutton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testfsresourcefileenginehandler.h qutecom-2.2+dfsg1/libs/qtutil/tests/testfsresourcefileenginehandler.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testfsresourcefileenginehandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testfsresourcefileenginehandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testimageselector.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testimageselector.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testimageselector.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testimageselector.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testlinklabel.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testlinklabel.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testlinklabel.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testlinklabel.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -8,8 +8,8 @@ : QWidget() { _label1 = new LinkLabel(this); - _label1->setText("OpenWengo"); - _label1->setLink("http://www.openwengo.org"); + _label1->setText("QuteCom"); + _label1->setLink("http://www.openqutecom.org"); connect(_label1, SIGNAL(linkActivated(const QString&)), SLOT(slotClicked(const QString&)) ); connect(_label1, SIGNAL(linkHovered(const QString&)), SLOT(slotHovered(const QString&)) ); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testqobjectthreadsafe.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testqobjectthreadsafe.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testqobjectthreadsafe.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testqobjectthreadsafe.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/test.ts qutecom-2.2+dfsg1/libs/qtutil/tests/test.ts --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/test.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/test.ts 2010-10-18 12:50:12.000000000 +0000 @@ -4,27 +4,27 @@ AIMSettings - + AIM Settings - + Password: - + Login: - + Forgot your AIM password? - + Get a new AIM Account @@ -32,27 +32,27 @@ AboutWindow - + @product@ - About - + About - + @product@, a voice over Internet phone - + Copyright (C)2008 Mbdsys - + 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 @@ -60,12 +60,12 @@ - + Authors - + Close @@ -73,42 +73,42 @@ AcceptDialog - + File Transfer - - toto@wengo.fr + + toto@qutecom.fr - + test.bmp - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - + &Accept - + &Cancel @@ -116,7 +116,7 @@ AccountSettings - + &Edit my profile @@ -124,52 +124,52 @@ AddAccount - + @product@ - Login - + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - + You don't have any account ? Click here - + Configure your account: - + @company@ account - + Generic SIP account - + Need help? - + &Back - + &Next - + Cancel @@ -177,178 +177,178 @@ AddIMContact - + @product@ - Add a Contact Account - + Contact Type (protocol): - + Contact ID: - + Account: - + Enable - + Login - + Add - + Cancel - AddSIPAccount + AddQuteComAccount - + @product@ - Login - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - : + + Click here if you don't have a @company@ account - + Password: - - Proxy: + + Forgot your @company@ password? - - SIP Domain / Realm: + + Email Address: - - Server: + + Need help? - - Account name: + + &Back - - Displayname: + + &Connect - - login / username: + + Cancel + + + AddSIPAccount - - Advanced + + @product@ - Login - - Activate presence and chat (SIP/SIMPLE) + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - Need help? + + : - - &Back + + Password: - - &Connect + + Proxy: - - Cancel + + SIP Domain / Realm: - - - AddWengoAccount - - @product@ - Login + + Server: - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + Account name: - - Click here if you don't have a @company@ account + + Displayname: - - Password: + + login / username: - - Forgot your @company@ password? + + Advanced - - Email Address: + + Activate presence and chat (SIP/SIMPLE) - + Need help? - + &Back - + &Connect - + Cancel @@ -356,42 +356,42 @@ AdvancedConfigWindow - + @product@ - Advanced Configuration - + Preference Name - + Status - + Type - + Value - + Default Value - + Close - + Save @@ -399,32 +399,32 @@ AdvancedSettings - + Advanced Settings - + Automatically answer incoming calls from - + Add - + Remove - + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - + Advanced Configuration Window @@ -432,32 +432,32 @@ AppearanceSettings - + Form - + Toolbar - + &Icons && Text - + Icons &Only - + &Hidden - + Chat Theme @@ -465,53 +465,53 @@ AudioSettings - + &Input device: - + &Output device: - + &Ringing device: - + &Make a test call - - + + Test - + &Half Duplex - + &Advanced >> - + Audio Codecs - + Reset - + Be aware, this section is for power users only. Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. @@ -520,7 +520,7 @@ AvatarFrame - + Form @@ -528,7 +528,7 @@ AvatarWidget - + Form @@ -536,17 +536,17 @@ BrowserSoftUpdateWindow - + @product@ - Update available - + Close - + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> @@ -554,49 +554,49 @@ CallForwardSettings - + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - + Disable call forwarding - + Forward all unanswered calls to message box - + Forward all unanswered calls to following phone numbers: - + 3rd: - + 1st: - + 2nd: - - - + + + (+ country code) phone number - + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) @@ -604,12 +604,12 @@ CallToaster - + Incoming Call - + Message @@ -617,78 +617,78 @@ ChatLogViewer - + Chat History - + &Contact - + @company@ - + &Tools - + &Help - + &Actions - + Main Toolbar - - - + + + Call Contact - - - + + + Send a File - + createChatConf - - - + + + Show Contact Info - + blockContact - + &Save History As... - + actionRestartChat @@ -696,113 +696,113 @@ ChatMainWindow - + MainWindow - + @company@ - + &Contact - + &Actions - + &Tools - + &Edit - + Main Toolbar - + &Close - - - + + + Call Contact - - - + + + Send a File - - - + + + Show Contact Info - + blockContact - + &Save History As... - + Cu&t - + Ctrl+X - + &Copy - + Ctrl+C - + &Paste - + Ctrl+V - + Start Chat Conference - + Conference @@ -810,37 +810,37 @@ ChatRoomInviteWidget - + Chat room - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - + (Conference participants) - + &Remove - + &Start - + Group Name - + &Add @@ -848,12 +848,12 @@ ChatToaster - + Message - + Incoming Chat @@ -861,7 +861,7 @@ ChatWidget - + Form @@ -869,37 +869,37 @@ ConferenceCallWidget - + @product@ - Create a Conference - + Start - + Cancel - + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - + Phone number 2: - + Phone number 1: - + ... @@ -907,32 +907,32 @@ ConferenceInviteWidget - + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - + &Add >> - + << &Remove - + Available Contacts - + &Start - + Cancel @@ -940,32 +940,32 @@ ContactGroupPopupMenu - + Remove Contact Group - + Rename Contact Group - + Delete group - + Do you really want to delete this group? - + &Yes - + &No @@ -973,25 +973,30 @@ ContactList - + Contact List + + + goupname + + ContactWidget - + No landline phone number set - + No mobile phone number set - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1049,37 +1054,37 @@ CreditWidget - + Call Forward Method - + Not Available - + Click here to change your call forward settings - + Call forward mode: - + Click here to buy @company@'s credits - + Purchase call out credits - + Call Voice Mail @@ -1095,7 +1100,7 @@ DialpadWidget - + Click on the various color changing items to send sounds to your interlocutor. @@ -1103,71 +1108,94 @@ EventWidget - - + + 0 - + Click here to call your voice mail - + New Voice Mail: - + Click here to see missed call(s) - + Missed Call(s): + FacebookSettings + + + Facebook Settings + + + + + Email Address + + + + + Password + + + + + +Get a new Facebook Account + + + + FileTransferDialog - + @product@ - File Transfer Manager - + Download - + Upload - + Click here to change your download folder - + ... - + Download folder: - + Clean all items in the list - + &Clean @@ -1175,22 +1203,22 @@ FileTransferItem - + Form - + <i>From:</i> - + Cancel - + Pause @@ -1198,52 +1226,52 @@ GeneralSettings - + When I start my computer - + Automatically start @product@ - + Start in background mode - + When I double-click on a contact - + Prefere start a free call if applicable - + Prefere start a chat - + Call cell phone or land line if contact not online - + Idle status - + minutes - + Show me as "Away" when I am inactive for: @@ -1251,27 +1279,27 @@ GoogleTalkSettings - + GoogleTalk Settings - + Password: - + Login: - + Forgot your GoogleTalk password? - + Get a new GoogleTalk Account @@ -1279,42 +1307,42 @@ HttpProxyLoginWindow - + @product@ - Local HTTP Proxy - + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - + HTTP Proxy Address: - + HTTP Proxy Port Number: - + HTTP Proxy Login: - + HTTP Proxy Password: - + OK - + Cancel @@ -1322,27 +1350,27 @@ ICQSettings - + ICQ Settings - + Password: - + Login: - + Forgot your ICQ password? - + Get a new ICQ Account @@ -1350,37 +1378,37 @@ IMAccountManager - + @product@ - My Instant Messaging Accounts (MSN, Jabber...) - + Protocol - + Login - + Delete - + Modify - + Close - + Add @@ -1388,17 +1416,17 @@ IMAccountTemplate - + IM Account Settings - + Save - + Cancel @@ -1406,27 +1434,27 @@ IMContactManager - + Delete - + Add - + Contact ID - + Contact Type (protocol) - + Click on the add button below to add a new ID @@ -1434,23 +1462,23 @@ IMProfileWidget - + Add an instant messaging account (MSN, AIM, GoogleTalk...) - + Add an IM account - - + + Enter your nickname here - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1484,62 +1512,62 @@ JabberSettings - + Jabber Settings - + Password: - + Login: - + Connect Server: - + <u>Advanced Options</u> - + Require TLS - + Resource: - + Port: - + Use TLS if available - + Allow plaintext authentication over unencrypted streams - + 5222 - + Force old (port 5223) SSL @@ -1547,12 +1575,27 @@ LanguagesSettings - + + Google Translate + + + + + language to convert the messages received + + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? - + More information here. @@ -1560,57 +1603,57 @@ LogAccount - + @product@ - Login - + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - + Configure a &New Profile - + Need help? - + &Connect - + Cancel - + Password: - + &Modify - + Account: - + Forgot your @company@ password? - + Delete @@ -1618,32 +1661,32 @@ MSNSettings - + MSN Settings - + Forgot your MSN password? - + Get a new MSN Account - + Password: - + Login: - + Use HTTP method @@ -1651,37 +1694,37 @@ MainWindow - + MainWindow - + Command::terminate() - + Command::start() - + Accept Call - + Send Chat Message - + Make Call - + Hang Up @@ -1689,45 +1732,68 @@ ManageBlockedUsersSettings - + @product@ - Manage blocked users - + Unblock User - + Close - + Manage blocked users - NoWengoAlert + MySpaceSettings + + + MySpace Settings + + + + + Email Address + + + + + Password + + + + + + Get a new MySpace Account + + + + + NoQuteComAlert - + @product@ - SMS - + I have a @company@ account - + Create a @company@ account - + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. @@ -1735,7 +1801,7 @@ NotificationSettings - + Select the events for which a sound should be played. @@ -1743,22 +1809,22 @@ NotificationSettingsItem - + Sound file - + Find a sound file - + Play sound file - + Play @@ -1766,22 +1832,22 @@ NotifyDialog - + File Transfer - + &Ok - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> @@ -1789,43 +1855,43 @@ PhoneCallWidget - - + + Communication is encrypted - + Status - + 00:00:00 - + Nickname - + &Accept - + &Reject - + Dialpad - + Audio Smileys @@ -1833,44 +1899,44 @@ PrivacySettings - + Privacy Rules - + When I sign into @company@ - + Always sign in as "Invisible" (appear offline to all users) - + Allow chats from - - + + Anyone - - + + Only people from my contact list - + Allow calls from - + Manage blocked users @@ -1878,62 +1944,62 @@ ProfileDetails - + General - + Network IDs (MSN, Jabber...) - + Advanced >> - + Fill in all your network Id to stay connected with your contacts - + Phone Numbers - + Home phone - + Mobile phone - + Contact - + Group: - + Last Name: - + First Name: - + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> @@ -1941,77 +2007,77 @@ - + Details - + Web/blog: - + Country: - + State: - + City: - + Gender: - + Birth Date: - + Email: - + dd MMMM yyyy - + Unknown - + Male - + Female - + Notes - + Cancel - + Save @@ -2019,7 +2085,7 @@ QObject - + @product@ @@ -2027,12 +2093,12 @@ QtAccountSettings - + Accounts - + Accounts Settings @@ -2040,12 +2106,12 @@ QtAddAccount - + Please tell us if your account is provided<br/>by @company@ or by another service - + Configure your voip account @@ -2053,82 +2119,82 @@ QtAddAccountUtils - + Test - + Audio Test Call - + Video Test Call - QtAddSIPAccount + QtAddQuteComAccount - - Your profile name already exists! + + @product@ - Connexion - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + Please enter an email address. - - Configure your SIP profile + + Please enter your email address<br/>and your password - - - QtAddWengoAccount - - @product@ - Connexion + + Login + + + QtAddSIPAccount - - Please enter an email address. + + Your profile name already exists! - - Please enter your email address<br/>and your password + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - Login + + Configure your SIP profile QtAdvancedIMContactManager - + @product@ - + Are sure you want to delete this IM contact? - + &Delete - + Cancel @@ -2136,12 +2202,12 @@ QtAdvancedSettings - + Advanced - + Advanced Settings @@ -2149,50 +2215,50 @@ QtAppearanceSettings - - + + Me - + Hello - + How are you? - - - + + + Other - + I am fine - + Have to go - + Bye - + Appearance - + Appearance Settings @@ -2200,18 +2266,18 @@ QtAudioSettings - + Audio - + Audio Settings - - + + Advanced @@ -2219,7 +2285,7 @@ QtCallBar - + +(country code) number or nickname @@ -2227,18 +2293,18 @@ QtCallForwardSettings - - + + Call Forward - + Call Forward Settings - + To configure call forward settings you need to<BR> be logged in with a @company@ account. @@ -2246,7 +2312,7 @@ QtChatHistoryWidget - + Save As @@ -2254,7 +2320,12 @@ QtChatLogViewer - + + Account + + + + Edit Contact @@ -2262,7 +2333,7 @@ QtChatTabWidget - + Close chat @@ -2270,42 +2341,42 @@ QtChatWidget - + send - + Your file can not be sent: your contact must be connected on the @company@ network. - + Your contact wishes to send a file with @company@. - + Go to %1 to install it - + %1 is connected. - + %1 is disconnected. - + %1 has joined the chat - + %1 has left the chat @@ -2313,17 +2384,22 @@ QtChatWindow - + @product@ Chat - + + Account + + + + %1 is typing - + Edit Contact @@ -2331,22 +2407,22 @@ QtConferenceCallWidget - + Call @company@ - + Call SIP - + Call land line - + Call Mobile @@ -2354,28 +2430,28 @@ QtContactCallListWidget - - + + @product@ - Proceed Conference - + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - + Hold first interlocutor and call second one - + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - + Start Conference @@ -2383,22 +2459,22 @@ QtContactList - + @product@ - Merge Contacts - + Merge %1 with %2? - + &Yes - + &No @@ -2406,98 +2482,98 @@ QtContactManager - + Edit Contact - - + + Delete contact - + Do you really want to delete this contact? - + &Yes - + &No - + Call - + Free call - + Mobile phone - + Home phone - + Work phone - + @product@ - + Send SMS - + Go to website - + Send file - + Edit contact - + Block contact - + Forward to mobile phone - + Start chat - + Invite to conference @@ -2505,49 +2581,49 @@ QtContactWidget - + No landline phone number set - + No mobile phone number set - - + + Click here to call - - + + Click here to set a phone number - + Click here to edit the contact - + Click here to send a SMS - + Click here to start a chat - + Click here to start a free call - + Click here to send a file @@ -2563,12 +2639,12 @@ QtEventWidget - + @product@ - Voice Mail - + Do you want to call your voice mail? @@ -2576,88 +2652,88 @@ QtFileTransfer - + Choose a directory - + Overwrite File? - + A file called %1 already exists.Do you want to overwrite it? - + &Yes - + &No - + %1 is a directory. - + You can not send a directory. - + %1 is a shortcut. - + You can not send a shortcut. - - + + File size error - + %1 exceeds the maximum authorized size. - + %1 has size 0. - + Please upgrade<br> your @product@ - + The file cannot be received:you must upgrade your @product@ in order to receive it. - + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - + Tell your contact<br> to upgrade<br> his @product@ - + All Files (*.* *) @@ -2665,116 +2741,116 @@ QtFileTransferItem - - + + Downloading... - + Waiting for peer... - + From: - + To: - + Open - + Remove - - - + + + Cancel - + Resume - - + + Pause - + Starting - + Waiting for anwser... - + Done - + Failed - + An error occured during the file transfer - + This may be caused by : - + Your @product@ is not up to date. Please download the latest version on - + The @company@ network may be temporarily unavailable. Please try later. - + Paused - + Paused by peer - + Cancelled - + Cancelled by peer - + Uploading... @@ -2782,12 +2858,12 @@ QtGeneralSettings - + General - + General Settings @@ -2795,62 +2871,62 @@ QtHistory - + Incoming call - + Outgoing call - + Missed call - + Rejected call - + Outgoing SMS - + Chat session - + @product@ - Call History - + Do you want to call %1? - + Type - + Name/ID - + Date - + Duration @@ -2858,22 +2934,22 @@ QtHistoryWidget - + Open in SMS window - + Call this peer - + Show chat log - + Erase this entry @@ -2881,23 +2957,23 @@ QtIMAccountManager - + @product@ - + Are sure you want to delete this account? - + &Delete - + Cancel @@ -2905,40 +2981,40 @@ QtIMAccountMonitor - - - + + + Disconnected - + Error: %1 - + %1 (%2/%3) %1 is message, %2 is currentStep, %3 is totalSteps - + Online - + Invisible - + Away - + Do not disturb @@ -2946,12 +3022,12 @@ QtIMAccountPlugin - + @product@ - + Please enter a login @@ -2959,52 +3035,52 @@ QtIMAccountPresenceMenuManager - + Disconnect - + Online - + Away - + Do Not Disturb - + Invisible - + Delete Account - + Are sure you want to delete the account <b>%1</b>? - + @product@ - + &Delete - + Cancel @@ -3012,14 +3088,14 @@ QtIMProfileWidget - + %1 (%2) %3 %1 is login, %2 is protocol, %3 is status - + Edit My Profile @@ -3027,12 +3103,12 @@ QtLanguagesSettings - + Language - + Language Settings @@ -3040,32 +3116,32 @@ QtLogAccount - + Invalid account - + Warning - + Do you really want to delete this profile - + Yes - + No - + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account @@ -3073,7 +3149,7 @@ QtLoginDialog - + @product@ - Connexion @@ -3081,47 +3157,47 @@ QtNotificationSettings - + Incoming call (ringtone) - + Outgoing call (ringtone) - + Call closed (hang up tone) - + Incoming chat - + IM account connected - + IM account disconnected - + Contact online - + Notifications - + Notifications Settings @@ -3129,12 +3205,12 @@ QtNotificationSettingsItem - + Choose a sound file - + Sounds @@ -3142,119 +3218,119 @@ QtPhoneCall - + Status - + Ca&ncel - + Hang-up - + Transfert call - + Add contact - + Resume - - + + Hold - + Initialization... - + QuteCom - Information - + You must enter a phone number before forwarding - + Error - + Talking - Conference - + Talking - + Dialing - + User busy - + Call Rejected - + User/number not found - + User not available - - + + Ringing - + Incoming Call - + Redirected - + Closed - + Add a Contact @@ -3262,27 +3338,27 @@ QtPresenceMenuManager - + Online - + Away - + Do Not Disturb - + Invisible - + Log off @@ -3290,12 +3366,12 @@ QtPrivacySettings - + Privacy - + Privacy Settings @@ -3303,38 +3379,38 @@ QtProfileBar - + Click here to change your status - + Voice mail - + Set global presence to: - - + + active - + voicemail - + inactive - + unauthorized @@ -3342,51 +3418,191 @@ QtProfileDetails - - + + @product@ - + @product@ - No Group Selected - + A contact must have a group, please set a group. - + Select your avatar - + @company@ Avatars - + << Simple - + Advanced >> + QtQuteCom + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + + Can't place a call, you are not connected + + + + + You must enter a phone number + + + + + An error has occured trying to place the call + + + + + Call + + + + + + + + Conference + + + + + @product@ - Warning + + + + + You have unfinished call(s). + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + &Cancel + + + + + + Home + + + + + Account + + + + + Add a Contact + + + + + QtQuteComConfigDialog + + + General + + + + + Language + + + + + Accounts + + + + + Privacy + + + + + Audio + + + + + Video + + + + + Notifications + + + + + Call Forward + + + + + Advanced + + + + + Voicemail + + + + + security + + + + QtRenameGroup - + Bad group name - + Group name cannot be empty @@ -3394,17 +3610,17 @@ QtSecuritySettings - + Security - + Security Settings - + BETA @@ -3412,47 +3628,47 @@ QtSms - - - - + + + + @company@ SMS service - + Please fill in a phone number. - + You can not send an empty message. - + Your message is too long. This will send - + SMS. - + Do you want to continue? - + Your SMS has not been sent - + Your SMS has been sent @@ -3460,12 +3676,12 @@ QtSoftUpdate - + @product@ - Update failed - + @product@ update failed to start: try to update @product@ manually @@ -3473,68 +3689,68 @@ QtStatusBar - - + + Not connected - + Output volume is muted - + Output volume is 0 - + Click to adjust output volume - + Input volume is muted - + Input volume is 0 - + Click to adjust input volume - + An error occured: Server error. - + An error occured: Timeout. - + An error occured: Authentication error. - + Register done - + Unregister done - + Connecting @@ -3542,121 +3758,121 @@ QtSystray - - - - - - - - - - + + + + + + + + + + @product@ - + Call - + Quit @product@ - + Status - + Send a SMS - + Send SMS - + Start a chat - + Place Call - + Call @company@ - + Call Mobile - + Call land line - + Call SIP - + Send File - + Away - + Online - + Offline - + Invisible - + Do Not Disturb - + Multiple Status - + Unknown Status - + Connecting... - + Internet Connection Error @@ -3664,88 +3880,88 @@ QtToolBar - + Edit My Profile - + Add a Contact - + Hide Unavailable Contacts - + Show Unavailable Contacts - + Hide Groups - + Show Groups - + Disable &Video Calls - + Enable &Video Calls - + @product@ - Proceed Conference - + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - + @product@ - Warning - + You have unfinished call(s). - + Are you sure you want to log off? - + &Log Off - + &Cancel - - + + Log &Off... - + Log &On... @@ -3753,7 +3969,7 @@ QtTreeViewDelegate - + Contacts list @@ -3761,30 +3977,31 @@ QtUserProfile - + Network error. - - + + @product@ - Authorization Request - - + + &Authorize - - + + &Block - + + Edit Contact @@ -3792,41 +4009,41 @@ QtUserProfileHandler - - + + @product@ - + A problem occured while loading your profile. The last backuped profile has been loaded: you may have lost last changes made - + Your profile could not be loaded. Choose another profile or create a new one. - + Wrong email/password entered - + Wrong login/password entered - + Connection error - + Unexpected error (code: %1 @@ -3834,7 +4051,7 @@ QtVideoQt - + @product@ @@ -3842,36 +4059,36 @@ QtVideoSettings - + Video - + Video Settings - - + + Normal - - + + Good - - + + Very good - - + + Excellent @@ -3879,12 +4096,12 @@ QtVoicemailSettings - + Voicemail - + Voicemail Settings @@ -3892,792 +4109,718 @@ QtWebDirectory - + @product@ - Directory - QtWengoConfigDialog + QuteComConfigDialog - - General + + @product@ - Configuration - - Language + + Title - - Accounts + + Save - - Privacy + + Cancel + + + QuteComWindow - - Audio + + @product@ - - Video + + Contacts - - Notifications + + History - - Call Forward + + Dialpad - - Advanced + + &Help - - Voicemail + + &Tools - - security + + Clear &History - - - QtWengoPhone - - @product@ - Call Error + + &Actions - - Please hold all the phone calls before placing a new one + + &Contacts - - Can't place a call, you are not connected + + @company@ - - You must enter a phone number + + ToolBar - - An error has occured trying to place the call + + View My @company@ Account... - - Call + + &Close - - - - - Conference + + Ctrl+W - - @product@ - Warning + + @company@ &Forum... - - You have unfinished call(s). + + &About... - - Are you sure you want to exit the application? + + Add &Contact... - - &Exit + + Add - - &Cancel + + Add Contact - - - Home + + &Configuration... - - Account + + Send SMS... - - Add a Contact + + SMS - - - RenameGroupDialog - - @product@ - Rename Contact Group + + Send SMS - - OK + + View My &Profile... - - Cancel + + + View My Profile - - Enter the new group name: + + Start &Conference... - - - SecuritySettings - - Form + + Conference - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + Start Conference - - Enable call encryption - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + @company@ &Wiki/FAQ... - - - SimpleIMContactManager - - ICQ ID: + + Learn more about @company@ Services... - - - - - - Update your profile + + Show/Hide Unavailable &Contacts - - Jabber/GoogleTalk ID: + + &Chat Sessions - - SIP ID: + + &All - - Yahoo! ID: + + &Find Contact... - - @company@ ID: + + Search - - MSN ID: + + Find @company@ Contacts - - AIM ID: + + &Accept - - exemple: username@server + + &HangUp - - - SmsWindow - - @product@ - SMS + + &Hold/Resume - - Click here to add a phone number + + Show/Hide &Groups - - 0 /160 + + Log &Off... - - Send + + + Log Off - - Enter your signature here + + Show &Chat Window - - Signature: + + + Show Chat Window - - Phone number(s): + + &Outgoing Calls - - Enter phone number(s) here<br>They must be separated by & or ; or , + + &Incoming Calls - - - SoftUpdateWindow - - @product@ - Downloading update + + &Missed Calls - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) + + Enable/Disable &Video Calls - - Cancel + + Short Text &Messages (SMS) - - - StatusBarWidget - - - ... + + Show &File Transfer - - - UserFrame - - Form + + Rejected Calls - - - VideoSettings - - Enable video + + &Quit - - Webcam Selection + + Ctrl+Q - - Webcam device: + + &Text Under Icons - - Webcam Preview + + &Icons Only - - Connection Type + + &Hidden + + + RenameGroupDialog - - Video quality depends on your Internet connection bandwidth + + @product@ - Rename Contact Group - - Video quality + + OK - - Down (kbit/s) + + Cancel - - Up (kbit/s) + + Enter the new group name: + + + SecuritySettings - - Normal + + Form - - 0 to 512 + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - 0 to 128 + + Enable call encryption - - - Good + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + SimpleIMContactManager - - 512 to 2048 + + ICQ ID: - - 128 to 256 + + + + + + + + + + + Update your profile - - Very good + + SIP ID: - - 2048+ + + Yahoo! ID: - - 256+ + + @company@ ID: - - Excellent + + MSN ID: - - 8192+ + + AIM ID: - - 1024+ + + GoogleTalk ID: - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + Jabber ID: - - Make a test video call + + FaceBook ID: - - - VideoWindow - - @product@ - Video + + MySpace ID: - - ... + + Skype ID: - - - VoicemailSettings - - Form - - - - - Phone number of your voicemail: - - - - - Please fill in here the information about your voicemail + + Twitter ID: - WengoConfigDialog + SkypeSettings - - @product@ - Configuration + + Skype Settings - - Title + + Skype Id - - Save - - - - - Cancel + + + Get a new Skype Account - WengoPhoneWindow - - - @product@ - - - - - Contacts - - - - - History - - - - - Dialpad - - - - - &Help - - - - - &Tools - - - - - Clear &History - - - - - &Actions - - - - - &Contacts - - - - - @company@ - - - - - ToolBar - - + SmsWindow - - View My @company@ Account... + + @product@ - SMS - - &Close + + Click here to add a phone number - - Ctrl+W + + 0 /160 - - @company@ &Forum... + + Send - - &About... + + Enter your signature here - - Add &Contact... + + Signature: - - Add + + Phone number(s): - - Add Contact + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + SoftUpdateWindow - - &Configuration... + + @product@ - Downloading update - - Send SMS... + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) - - SMS + + Cancel + + + StatusBarWidget - - Send SMS + + + ... + + + TwitterSettings - - View My &Profile... + + Twitter Settings - - - View My Profile + + Email Address - - Start &Conference... + + Password - - Conference + + + Get a new Twitter Account + + + UserFrame - - Start Conference + + Form + + + VideoSettings - - @company@ &Wiki/FAQ... + + Enable video - - Learn more about @company@ Services... + + Webcam Selection - - Show/Hide Unavailable &Contacts + + Webcam device: - - &Chat Sessions + + Webcam Preview - - &All + + Connection Type - - &Find Contact... + + Video quality depends on your Internet connection bandwidth - - Search + + Video quality - - Find @company@ Contacts + + Down (kbit/s) - - &Accept + + Up (kbit/s) - - &HangUp + + Normal - - &Hold/Resume + + 0 to 512 - - Show/Hide &Groups + + 0 to 128 - - Log &Off... + + Good - - - Log Off + + 512 to 2048 - - Show &Chat Window + + 128 to 256 - - - Show Chat Window + + Very good - - &Outgoing Calls + + 2048+ - - &Incoming Calls + + 256+ - - &Missed Calls + + Excellent - - Enable/Disable &Video Calls + + 8192+ - - Short Text &Messages (SMS) + + 1024+ - - Show &File Transfer + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - Rejected Calls + + Make a test video call + + + VideoWindow - - &Quit + + @product@ - Video - - Ctrl+Q + + ... + + + VoicemailSettings - - &Text Under Icons + + Form - - &Icons Only + + Phone number of your voicemail: - - &Hidden + + Please fill in here the information about your voicemail @@ -4712,32 +4855,32 @@ YahooSettings - + Yahoo! Settings - + Use Yahoo! Japan server - + Password: - + Login: - + Forgot your Yahoo! password? - + Get a new Yahoo! Account diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testwidgetratioenforcer.cpp qutecom-2.2+dfsg1/libs/qtutil/tests/testwidgetratioenforcer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/qtutil/tests/testwidgetratioenforcer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/qtutil/tests/testwidgetratioenforcer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/CodecList.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/CodecList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/CodecList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/CodecList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumConferenceCallState.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumConferenceCallState.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumConferenceCallState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumConferenceCallState.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumNatType.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumNatType.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumNatType.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumNatType.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneCallState.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneCallState.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneCallState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneCallState.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneLineState.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneLineState.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneLineState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumPhoneLineState.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumTone.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumTone.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumTone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumTone.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumVideoQuality.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumVideoQuality.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/EnumVideoQuality.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/EnumVideoQuality.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapperFactory.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapperFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapperFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapperFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapper.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapper.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/SipWrapper.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -54,7 +54,7 @@ * has a lot of dependencies. * The last solution helps when it comes to distribute easily the final application. * - * In order to integrate a new SIP implementation for WengoPhone, + * In order to integrate a new SIP implementation for QuteCom, * create a subdirectory by the name of the SIP implementation. * Subclass the SipWrapper interface. SIP events/callbacks are handled via the Event class. * @@ -149,9 +149,9 @@ * TODO phAddAuthInfo() should be separated from phAddVline() * This method has to be reworked * - * @param displayName display name inside the SIP URI (e.g tanguy inside "tanguy ") + * @param displayName display name inside the SIP URI (e.g tanguy inside "tanguy ") * @param username most of the time same as identity - * @param identity first part of the SIP URI (e.g tanguy_k inside "sip:tanguy_k@wengo.fr") + * @param identity first part of the SIP URI (e.g tanguy_k inside "sip:tanguy_k@qutecom.fr") * @param password password corresponding to the SIP URI * @param realm realm/domain * @param proxyServer SIP proxy server diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/WebcamVideoFrame.h qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/WebcamVideoFrame.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/include/sipwrapper/WebcamVideoFrame.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/include/sipwrapper/WebcamVideoFrame.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/CodecList.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/CodecList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/CodecList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/CodecList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumNatType.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumNatType.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumNatType.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumNatType.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumPhoneCallState.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumPhoneCallState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumPhoneCallState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumPhoneCallState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumPhoneLineState.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumPhoneLineState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumPhoneLineState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumPhoneLineState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumVideoQuality.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumVideoQuality.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/EnumVideoQuality.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/EnumVideoQuality.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -554,7 +554,7 @@ content = info->szContent; } - // Wengo case: somebody ;tag=b6e249633711def8c2dbe3c2d4f39996-e1d6 + // QuteCom case: somebody ;tag=b6e249633711def8c2dbe3c2d4f39996-e1d6 // Standard case: "Mister somebody" ;tag=b6e249633711def1d6 String from = p->parseFromHeader(std::string(info->szRemoteIdentity)); String alias = p->getDisplayNameFromHeader(std::string(info->szRemoteIdentity)); @@ -904,7 +904,7 @@ } } } - //keep compatibility with Wengo prensence + //keep compatibility with QuteCom prensence /*QDomNodeList nl22 = nl1.item(0).toElement().elementsByTagName("note"); if (nl22.length() > 0) { @@ -973,7 +973,7 @@ switch(info->cause) { case NOTIFICATION_PRESENCE_ONLINE : - //if(presence.empty()) //Wengo + //if(presence.empty()) //QuteCom // presence = note; if(isOpen) @@ -1095,7 +1095,7 @@ size_t greaterIndex = buddyTmp.find('>'); if (colonIndex != std::string::npos) { - std::string wengoRealm = PhApiWrapper::PhApiWrapperHack->getWengoRealm(); + std::string qutecomRealm = PhApiWrapper::PhApiWrapperHack->getQuteComRealm(); return buddyTmp.substr(colonIndex + 1, greaterIndex - colonIndex - 1); } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCallbacks.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -63,7 +63,7 @@ /** - * Transforms a PhApi contacts (e.g: sip:joe@voip.wengo.fr) + * Transforms a PhApi contacts (e.g: sip:joe@voip.qutecom.fr) * in an IMWrapper compatible form (e.g: joe) */ std::string computeContactId(const std::string & contactFromPhApi); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiCodecList.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMChat.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMConnect.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiIMPresence.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPEvent.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiSFPWrapper.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -109,7 +109,7 @@ PhApiWrapper::PhApiWrapper(PhApiCallbacks & callbacks) : _phApiSFPWrapper(PhApiSFPWrapper::getInstance()) { _callbacks = &callbacks; - _wengoVline = -1; + _qutecomVline = -1; _isInitialized = false; _tunnelNeeded = false; _tunnelPort = 0; @@ -309,11 +309,11 @@ return -1; // TODO ? } - _wengoVline = hLine; - _wengoSipAddress = "sip:" + identity + "@" + realm; - _wengoRealm = realm; + _qutecomVline = hLine; + _qutecomSipAddress = "sip:" + identity + "@" + realm; + _qutecomRealm = realm; - //owplLineSetAdapter(hLine, "nortel", NULL, &_wengoVline); + //owplLineSetAdapter(hLine, "nortel", NULL, &_qutecomVline); if (!sipOptions.sip_use_options_request) owplLineSetAutoKeepAlive(hLine, 0, 0); else @@ -580,7 +580,7 @@ } void PhApiWrapper::disconnect(bool force) { - removeVirtualLine(_wengoVline, force); + removeVirtualLine(_qutecomVline, force); disconnectedEvent(*this, false, String::null); } @@ -592,7 +592,7 @@ for (it = buddies.begin(); it != buddies.end(); it++) { std::string sipAddress = makeSipAddress((*it).getContactId()); - owplMessageSend(_wengoVline, + owplMessageSend(_qutecomVline, sipAddress.c_str(), message.c_str(), "text/html; charset=utf-8", @@ -613,21 +613,21 @@ switch (state) { case IMChat::TypingStateTyping : - owplMessageSendTypingState(_wengoVline, + owplMessageSendTypingState(_qutecomVline, sipAddress.c_str(), OWPL_TYPING_STATE_TYPING, &messageId); break; case IMChat::TypingStateStopTyping : - owplMessageSendTypingState(_wengoVline, + owplMessageSendTypingState(_qutecomVline, sipAddress.c_str(), OWPL_TYPING_STATE_STOP_TYPING, &messageId); break; default : - owplMessageSendTypingState(_wengoVline, + owplMessageSendTypingState(_qutecomVline, sipAddress.c_str(), OWPL_TYPING_STATE_NOT_TYPING, &messageId); @@ -726,7 +726,7 @@ } std::string sipAddress = makeSipAddress(contactId); - owplMessageSendIcon(_wengoVline, + owplMessageSendIcon(_qutecomVline, sipAddress.c_str(), iconFilename.c_str(), &messageId); @@ -756,12 +756,12 @@ { for (InSubIter isub = _incomingSubscriptions.begin(); isub != _incomingSubscriptions.end(); isub++) if (isub->second.state == SUBCONFIRMED) - owplPresenceNotify(_wengoVline, isub->first, (open)?1:0, activities.c_str(), note.c_str(), 0); + owplPresenceNotify(_qutecomVline, isub->first, (open)?1:0, activities.c_str(), note.c_str(), 0); myPresenceStatusEvent(*this, EnumPresenceState::MyPresenceStatusOk, note); } - else if(owplPresencePublish(_wengoVline, (open)?1:0, activities.c_str(), note.c_str()) != OWPL_RESULT_SUCCESS) { + else if(owplPresencePublish(_qutecomVline, (open)?1:0, activities.c_str(), note.c_str()) != OWPL_RESULT_SUCCESS) { myPresenceStatusEvent(*this, EnumPresenceState::MyPresenceStatusError, note); } else { myPresenceStatusEvent(*this, EnumPresenceState::MyPresenceStatusOk, note); @@ -810,7 +810,7 @@ } // FIXME: will not work in multiline mode - owplSubscribeAccept(_wengoVline, sid, 202, (int) isOpen , presence_activities.c_str() , presence_note.c_str()); + owplSubscribeAccept(_qutecomVline, sid, 202, (int) isOpen , presence_activities.c_str() , presence_note.c_str()); } @@ -818,7 +818,7 @@ void PhApiWrapper::rejectSubscription(int sid) { // FIXME: will not work in multiline mode - owplSubscribeReject(_wengoVline, sid, 480); + owplSubscribeReject(_qutecomVline, sid, 480); terminateIncomingSubscribe(sid); } @@ -830,7 +830,7 @@ OWPL_SUB hSub; std::string sipAddress = makeSipAddress(contactId); - if(owplPresenceSubscribe(_wengoVline, sipAddress.c_str(), 0, &hSub) != OWPL_RESULT_SUCCESS) { + if(owplPresenceSubscribe(_qutecomVline, sipAddress.c_str(), 0, &hSub) != OWPL_RESULT_SUCCESS) { subscribeStatusEvent(*this, sipAddress, IMPresence::SubscribeStatusError); } else { getSubscribedContacts().insert(contactId); @@ -841,7 +841,7 @@ void PhApiWrapper::unsubscribeToPresenceOf(const std::string & contactId) { std::string sipAddress = makeSipAddress(contactId); - owplPresenceUnsubscribeFromUri(_wengoVline, sipAddress.c_str()); + owplPresenceUnsubscribeFromUri(_qutecomVline, sipAddress.c_str()); std::set::iterator it; it = getSubscribedContacts().find(contactId); @@ -864,7 +864,7 @@ winfoAllow += "\n"; winfoAllow += "\n"; - phLinePublish(_wengoVline, _wengoSipAddress.c_str(), winfo, contentType.c_str(), winfoAllow.c_str()); + phLinePublish(_qutecomVline, _qutecomSipAddress.c_str(), winfo, contentType.c_str(), winfoAllow.c_str()); */ // TODO REFACTOR // owplPresencePublishAllowed(...); @@ -884,7 +884,7 @@ winfoForbid += "\n"; winfoForbid += "\n"; - phLinePublish(_wengoVline, _wengoSipAddress.c_str(), winfo, contentType.c_str(), winfoForbid.c_str()); + phLinePublish(_qutecomVline, _qutecomSipAddress.c_str(), winfo, contentType.c_str(), winfoForbid.c_str()); */ // TODO REFACTOR // owplPresencePublishAllowed(...); @@ -1169,7 +1169,7 @@ } if (ncid.find('@') == ncid.npos) { - sipAddress += "@" + _wengoRealm; + sipAddress += "@" + _qutecomRealm; } return sipAddress; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.h qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/phapi/PhApiWrapper.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -269,12 +269,12 @@ bool isRegistered() const { return _registered; }; void setRegistered(bool registered) { _registered = registered; }; - int getActiveVline() const { return _wengoVline; }; + int getActiveVline() const { return _qutecomVline; }; void flipVideoImage(bool flip); - std::string getWengoRealm() { - return _wengoRealm; + std::string getQuteComRealm() { + return _qutecomRealm; }; std::set & getSubscribedContacts() { return _subscribedContacts; }; @@ -349,14 +349,14 @@ /** Checks if phApi has been initialized: if phInit() has been called. */ bool _isInitialized; - /** Virtual line for the Wengo SIP service. */ - int _wengoVline; + /** Virtual line for the QuteCom SIP service. */ + int _qutecomVline; - /** SIP address for the Wengo SIP service. */ - std::string _wengoSipAddress; + /** SIP address for the QuteCom SIP service. */ + std::string _qutecomSipAddress; - /** Realm for the Wengo SIP service. */ - std::string _wengoRealm; + /** Realm for the QuteCom SIP service. */ + std::string _qutecomRealm; /** Playback audio device. */ AudioDevice _outputAudioDevice; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/SipWrapperFactory.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/SipWrapperFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/SipWrapperFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/SipWrapperFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -20,7 +20,7 @@ #include "SipXCallbacks.h" #include "model/sipwrapper/SipCallbacks.h" -#include "model/WengoPhoneLogger.h" +#include "model/QuteComLogger.h" #include diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.h qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXCallbacks.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXFactory.h qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.cpp qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -20,7 +20,7 @@ #include "SipXWrapper.h" #include "SipXCallbacks.h" -#include "model/WengoPhoneLogger.h" +#include "model/QuteComLogger.h" #include "model/account/SipAccount.h" #include "model/sipwrapper/SipCallbacks.h" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.h qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sipwrapper/src/sipx/SipXWrapper.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinButton.cpp qutecom-2.2+dfsg1/libs/skinstyle/src/SkinButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinButton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinButton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinButton.h qutecom-2.2+dfsg1/libs/skinstyle/src/SkinButton.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinButton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinButton.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinInfoReader.cpp qutecom-2.2+dfsg1/libs/skinstyle/src/SkinInfoReader.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinInfoReader.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinInfoReader.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinInfoReader.h qutecom-2.2+dfsg1/libs/skinstyle/src/SkinInfoReader.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinInfoReader.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinInfoReader.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinStyle.cpp qutecom-2.2+dfsg1/libs/skinstyle/src/SkinStyle.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinStyle.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinStyle.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinStyle.h qutecom-2.2+dfsg1/libs/skinstyle/src/SkinStyle.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinStyle.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinStyle.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWidget.cpp qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWidget.h qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWindow.cpp qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWindow.h qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/src/SkinWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/src/SkinWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/main.cpp qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/SkinDemo.cpp qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/SkinDemo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/SkinDemo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/SkinDemo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/SkinDemo.h qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/SkinDemo.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/demo1/SkinDemo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/demo1/SkinDemo.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/main.cpp qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/SkinDemo.cpp qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/SkinDemo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/SkinDemo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/SkinDemo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/SkinDemo.h qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/SkinDemo.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/skinstyle/tests/winamp/SkinDemo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/skinstyle/tests/winamp/SkinDemo.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/include/softupdater/SoftUpdater.h qutecom-2.2+dfsg1/libs/softupdater/include/softupdater/SoftUpdater.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/include/softupdater/SoftUpdater.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/softupdater/include/softupdater/SoftUpdater.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/src/SoftUpdater.cpp qutecom-2.2+dfsg1/libs/softupdater/src/SoftUpdater.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/src/SoftUpdater.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/softupdater/src/SoftUpdater.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/tests/main.cpp qutecom-2.2+dfsg1/libs/softupdater/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/softupdater/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/softupdater/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -46,7 +46,7 @@ SoftUpdater * softUpdater = new SoftUpdater(); softUpdater->download( - "http://wengofiles.wengo.fr/nightlybuilds/installer/NG/win32/WengoPhoneNG-setup-release-symbols-20060326160934.exe", + "http://qutecomfiles.qutecom.fr/nightlybuilds/installer/NG/win32/QuteCom-setup-release-symbols-20060326160934.exe", "setup.exe"); return app.exec(); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/AudioDevice.h qutecom-2.2+dfsg1/libs/sound/include/sound/AudioDevice.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/AudioDevice.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/AudioDevice.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/AudioDeviceManager.h qutecom-2.2+dfsg1/libs/sound/include/sound/AudioDeviceManager.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/AudioDeviceManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/AudioDeviceManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/ISound.h qutecom-2.2+dfsg1/libs/sound/include/sound/ISound.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/ISound.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/ISound.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/IVolumeControl.h qutecom-2.2+dfsg1/libs/sound/include/sound/IVolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/IVolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/IVolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/owsounddll.h qutecom-2.2+dfsg1/libs/sound/include/sound/owsounddll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/owsounddll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/owsounddll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/Sound.h qutecom-2.2+dfsg1/libs/sound/include/sound/Sound.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/Sound.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/Sound.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/VolumeControl.h qutecom-2.2+dfsg1/libs/sound/include/sound/VolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/include/sound/VolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/include/sound/VolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/AudioDevice.cpp qutecom-2.2+dfsg1/libs/sound/src/AudioDevice.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/AudioDevice.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/AudioDevice.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/EnumDeviceType.cpp qutecom-2.2+dfsg1/libs/sound/src/EnumDeviceType.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/EnumDeviceType.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/EnumDeviceType.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/EnumDeviceType.h qutecom-2.2+dfsg1/libs/sound/src/EnumDeviceType.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/EnumDeviceType.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/EnumDeviceType.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_mixer.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_mixer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_mixer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_mixer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * ALSA mixer - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_mixer.h qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_mixer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_mixer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_mixer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * ALSA mixer - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_sndfile.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_sndfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_sndfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_sndfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* -*- Mode: C; tab-width:8; c-basic-offset:8; -*- * - * Copyright (C) 2007 Wengo + * Copyright (C) 2007 QuteCom * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_sndfile.h qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_sndfile.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/alsa_sndfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/alsa_sndfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * ALSA sndfile - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/AudioDeviceManager.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/AudioDeviceManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/AudioDeviceManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/AudioDeviceManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxAudioDevice.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxAudioDevice.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxAudioDevice.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxAudioDevice.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxAudioDevice.h qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxAudioDevice.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxAudioDevice.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxAudioDevice.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxSound.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxSound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxSound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxSound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxSound.h qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxSound.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxSound.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxSound.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxVolumeControl.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxVolumeControl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxVolumeControl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxVolumeControl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxVolumeControl.h qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxVolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/LinuxVolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/LinuxVolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/Sound.cpp qutecom-2.2+dfsg1/libs/sound/src/linux/Sound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/linux/Sound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/linux/Sound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/AudioDeviceManager.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/AudioDeviceManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/AudioDeviceManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/AudioDeviceManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/CoreAudioUtilities.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/CoreAudioUtilities.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/CoreAudioUtilities.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/CoreAudioUtilities.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/CoreAudioUtilities.h qutecom-2.2+dfsg1/libs/sound/src/mac/CoreAudioUtilities.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/CoreAudioUtilities.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/CoreAudioUtilities.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacAudioDevice.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/MacAudioDevice.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacAudioDevice.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacAudioDevice.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacAudioDevice.h qutecom-2.2+dfsg1/libs/sound/src/mac/MacAudioDevice.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacAudioDevice.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacAudioDevice.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacSound.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/MacSound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacSound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacSound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacSound.h qutecom-2.2+dfsg1/libs/sound/src/mac/MacSound.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacSound.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacSound.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacVolumeControl.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/MacVolumeControl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacVolumeControl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacVolumeControl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacVolumeControl.h qutecom-2.2+dfsg1/libs/sound/src/mac/MacVolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/MacVolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/MacVolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/Sound.cpp qutecom-2.2+dfsg1/libs/sound/src/mac/Sound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/mac/Sound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/mac/Sound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/portaudio/AudioDeviceManager.cpp qutecom-2.2+dfsg1/libs/sound/src/portaudio/AudioDeviceManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/portaudio/AudioDeviceManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/portaudio/AudioDeviceManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/Sound.cpp qutecom-2.2+dfsg1/libs/sound/src/Sound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/Sound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/Sound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/Sound.cpp qutecom-2.2+dfsg1/libs/sound/src/unix/Sound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/Sound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/unix/Sound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixSoundThread.cpp qutecom-2.2+dfsg1/libs/sound/src/unix/UnixSoundThread.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixSoundThread.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/unix/UnixSoundThread.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixSoundThread.h qutecom-2.2+dfsg1/libs/sound/src/unix/UnixSoundThread.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixSoundThread.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/unix/UnixSoundThread.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixVolumeControl.cpp qutecom-2.2+dfsg1/libs/sound/src/unix/UnixVolumeControl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixVolumeControl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/unix/UnixVolumeControl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixVolumeControl.h qutecom-2.2+dfsg1/libs/sound/src/unix/UnixVolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/unix/UnixVolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/unix/UnixVolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/VolumeControl.cpp qutecom-2.2+dfsg1/libs/sound/src/VolumeControl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/VolumeControl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/VolumeControl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/AudioDeviceManager.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/AudioDeviceManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/AudioDeviceManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/AudioDeviceManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/main.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.h qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/PlaySoundFile.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/SoundFile.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/SoundFile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/SoundFile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/SoundFile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/SoundFile.h qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/SoundFile.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/playsound/SoundFile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/playsound/SoundFile.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Sound.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/Sound.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Sound.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Sound.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundMixerException.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/SoundMixerException.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundMixerException.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/SoundMixerException.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundThread.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/SoundThread.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundThread.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/SoundThread.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundThread.h qutecom-2.2+dfsg1/libs/sound/src/win32/SoundThread.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/SoundThread.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/SoundThread.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDevice.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDevice.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDevice.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDevice.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDevice.h qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDevice.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDevice.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDevice.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDeviceId.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDeviceId.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDeviceId.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDeviceId.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDeviceId.h qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDeviceId.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32AudioDeviceId.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32AudioDeviceId.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32VolumeControl.cpp qutecom-2.2+dfsg1/libs/sound/src/win32/Win32VolumeControl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32VolumeControl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32VolumeControl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32VolumeControl.h qutecom-2.2+dfsg1/libs/sound/src/win32/Win32VolumeControl.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/src/win32/Win32VolumeControl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/src/win32/Win32VolumeControl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/playsound_qt3/main.cpp qutecom-2.2+dfsg1/libs/sound/tests/playsound_qt3/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/playsound_qt3/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/tests/playsound_qt3/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/main.cpp qutecom-2.2+dfsg1/libs/sound/tests/soundtest/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/tests/soundtest/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/SoundWidget.cpp qutecom-2.2+dfsg1/libs/sound/tests/soundtest/SoundWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/SoundWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/tests/soundtest/SoundWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/SoundWidget.h qutecom-2.2+dfsg1/libs/sound/tests/soundtest/SoundWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/sound/tests/soundtest/SoundWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/sound/tests/soundtest/SoundWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/include/CpuUsage.h qutecom-2.2+dfsg1/libs/systemperf/include/CpuUsage.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/include/CpuUsage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/systemperf/include/CpuUsage.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* - * WengoPhone, a voice over Internet phone + * QuteCom, a voice over Internet phone * Copyright (c) Dudi Avramov's - * Copyright (C) 2004-2005 Wengo + * Copyright (C) 2010 Mbdsys * * 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 @@ -43,4 +43,4 @@ LARGE_INTEGER m_OldPerfTime100nSec; }; -#endif \ No newline at end of file +#endif diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/src/test/main.cpp qutecom-2.2+dfsg1/libs/systemperf/src/test/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/src/test/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/systemperf/src/test/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* - * WengoPhone, a voice over Internet phone + * QuteCom, a voice over Internet phone * Copyright (c) Dudi Avramov's - * Copyright (C) 2004-2005 Wengo + * Copyright (C) 2010 Mbdsys * * 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 @@ -27,12 +27,12 @@ CCpuUsage usageA; CCpuUsage usageB; - printf("SystemWide Cpu Usage Wengophone cpu usage\n"); + printf("SystemWide Cpu Usage QuteCom cpu usage\n"); printf("==================== ====================\n"); while (true) { - // Display the system-wide cpu usage and the "wengophone" cpu usage + // Display the system-wide cpu usage and the "qutecom" cpu usage int SystemWideCpuUsage = usageA.GetCpuUsage(); - int ProcessCpuUsageByName = usageB.GetCpuUsage("wengophone"); + int ProcessCpuUsageByName = usageB.GetCpuUsage("qutecom"); printf("%19d%% %22d%% \r",SystemWideCpuUsage, ProcessCpuUsageByName); Sleep(1000); } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/src/win32/CpuUsage.cpp qutecom-2.2+dfsg1/libs/systemperf/src/win32/CpuUsage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/systemperf/src/win32/CpuUsage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/systemperf/src/win32/CpuUsage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* - * WengoPhone, a voice over Internet phone + * QuteCom, a voice over Internet phone * Copyright (c) Dudi Avramov's - * Copyright (C) 2004-2005 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/timer/include/wtimer.h qutecom-2.2+dfsg1/libs/timer/include/wtimer.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/timer/include/wtimer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/timer/include/wtimer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo SAS + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys SAS * * 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 @@ -17,8 +17,8 @@ * Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA */ -#ifndef _WENGO_TIMER_H_ -#define _WENGO_TIMER_H_ +#ifndef _QUTECOM_TIMER_H_ +#define _QUTECOM_TIMER_H_ /* * @author David Ferlier diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/clock_gettime/impl_timer.c qutecom-2.2+dfsg1/libs/timer/src/clock_gettime/impl_timer.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/clock_gettime/impl_timer.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/timer/src/clock_gettime/impl_timer.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/setitimer/impl_timer.c qutecom-2.2+dfsg1/libs/timer/src/setitimer/impl_timer.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/setitimer/impl_timer.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/timer/src/setitimer/impl_timer.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/timer_impl.c qutecom-2.2+dfsg1/libs/timer/src/timer_impl.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/timer_impl.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/timer/src/timer_impl.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo SAS + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys SAS * * 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 @@ -18,7 +18,7 @@ */ /* - * @author David Ferlier + * @author David Ferlier * * Functions to init timer library, and manipulate implementations. * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/win32_mm/impl_timer.c qutecom-2.2+dfsg1/libs/timer/src/win32_mm/impl_timer.c --- qutecom-2.2~rc3.hg643~dfsg1/libs/timer/src/win32_mm/impl_timer.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/timer/src/win32_mm/impl_timer.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/build/checkout_owbuild.bat qutecom-2.2+dfsg1/libs/webcam/build/checkout_owbuild.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/build/checkout_owbuild.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/build/checkout_owbuild.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -svn co https://dev.openwengo.com/svn/openwengo/owbuild/trunk/owbuild ../owbuild \ No newline at end of file +svn co https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/owbuild ../owbuild diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/build/create_vcproj_VC80.bat qutecom-2.2+dfsg1/libs/webcam/build/create_vcproj_VC80.bat --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/build/create_vcproj_VC80.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/build/create_vcproj_VC80.bat 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DWEBCAM_MODULE=1 -G "Visual Studio 8 2005" \ No newline at end of file +"%VS80COMNTOOLS%vsvars32.bat" && cmake .. -DCMAKE_VERBOSE_MAKEFILE=1 -DWEBCAM_MODULE=1 -G "Visual Studio 8 2005" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/CMakeLists.txt qutecom-2.2+dfsg1/libs/webcam/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -3,10 +3,10 @@ if (WEBCAM_MODULE) set(PIXERTOOL_MODULE TRUE) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owpixertool/trunk libs/pixertool) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owpixertool/trunk libs/pixertool) add_subdirectory(libs/pixertool) - ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/owbuild/trunk/libs-3rdparty-cmakelists/qt4/ libs/qt4) + ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/owbuild/trunk/libs-3rdparty-cmakelists/qt4/ libs/qt4) add_subdirectory(libs/qt4) endif (WEBCAM_MODULE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DefaultWebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/DefaultWebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DefaultWebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/DefaultWebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamUtils.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/DirectXWebcamUtils.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/DirectXWebcamUtils.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/IWebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/IWebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/IWebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/IWebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/NullWebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/NullWebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/NullWebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/NullWebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/NullWebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/NullWebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/NullWebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/NullWebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/owwebcamdll.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/owwebcamdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/owwebcamdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/owwebcamdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/QuicktimeWebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4L2WebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4L2WebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4L2WebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4L2WebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4L2WebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4L2WebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4L2WebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4L2WebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4LWebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4LWebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4LWebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4LWebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4LWebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4LWebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/V4LWebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/V4LWebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/webcamdll.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/webcamdll.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/webcamdll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/webcamdll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/WebcamDriverFactory.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/WebcamDriverFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/WebcamDriverFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/WebcamDriverFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/WebcamDriver.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/WebcamDriver.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/WebcamDriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/WebcamDriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/webcam.h qutecom-2.2+dfsg1/libs/webcam/include/webcam/webcam.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/include/webcam/webcam.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/include/webcam/webcam.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/directx/DirectXWebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/directx/DirectXWebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/directx/DirectXWebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/directx/DirectXWebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/directx/DirectXWebcamUtils.cpp qutecom-2.2+dfsg1/libs/webcam/src/directx/DirectXWebcamUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/directx/DirectXWebcamUtils.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/directx/DirectXWebcamUtils.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/null/NullWebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/null/NullWebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/null/NullWebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/null/NullWebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.mm qutecom-2.2+dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.mm --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.mm 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/quicktime/QuicktimeWebcamDriver.mm 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,641 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include + +#include + +#include + +#include +using namespace std; + +QuicktimeWebcamDriver::QuicktimeWebcamDriver(WebcamDriver * driver, int flags) + : IWebcamDriver(flags) { + EnterMovies(); + + _webcamDriver = driver; + _timer.timeoutEvent += boost::bind(&QuicktimeWebcamDriver::idleSeqGrab, this); + + _seqGrab = NULL; + _PGWorld = NULL; + _SGChanVideo = NULL; + _decomSeq = 0; + _isOpen = false; + + getDeviceList(); + getDefaultDevice(); +} + +QuicktimeWebcamDriver::~QuicktimeWebcamDriver() { +} + +void QuicktimeWebcamDriver::cleanup() { + _timer.stop(); + + if (_decomSeq) { + CDSequenceEnd(_decomSeq); + } + + if (_SGChanVideo) { + SGDisposeChannel(_seqGrab, _SGChanVideo); + } + + if (_seqGrab) { + CloseComponent(_seqGrab); + } + + if (_PGWorld) { + DisposeGWorld(_PGWorld); + } + + _boundsRect.top = 0; + _boundsRect.left = 0; + _boundsRect.right = 320; + _boundsRect.bottom = 240; + + _seqGrab = NULL; + _PGWorld = NULL; + _SGChanVideo = NULL; + _decomSeq = 0; + _isOpen = false; + _palette = PIX_OSI_UNSUPPORTED; +} + +void QuicktimeWebcamDriver::initializeCommonComponents() { + OSErr err = noErr; + + LOG_DEBUG("Opening component"); + _seqGrab = OpenDefaultComponent(SeqGrabComponentType, 0); + if (_seqGrab == NULL) { + LOG_ERROR("can't get default sequence grabber component"); + return; + } + + LOG_DEBUG("Initializing component"); + err = SGInitialize(_seqGrab); + if (err != noErr) { + LOG_ERROR("can't initialize sequence grabber component"); + return; + } + + LOG_DEBUG("SetDataRef"); + err = SGSetDataRef(_seqGrab, 0, 0, seqGrabDontMakeMovie); + if (err != noErr) { + LOG_ERROR("can't set the destination data reference"); + return; + } + + LOG_DEBUG("Creating new channel"); + err = SGNewChannel(_seqGrab, VideoMediaType, &_SGChanVideo); + if (err != noErr) { + LOG_ERROR("can't create a video channel"); + return; + } +} + +StringList QuicktimeWebcamDriver::getDeviceList() { + SGDeviceList sgDeviceList; + OSErr err = noErr; + StringList deviceList; + + if (!isOpen()) { + cleanup(); + initializeCommonComponents(); + + err = SGGetChannelDeviceList(_SGChanVideo, sgDeviceListIncludeInputs, &sgDeviceList); + if (err != noErr) { + LOG_ERROR("can't get device list"); + return deviceList; + } + + for (register short i = 0 ; i < (*sgDeviceList)->count ; i++) { + if (!((*sgDeviceList)->entry[i].flags & sgDeviceNameFlagDeviceUnavailable)) { + SGDeviceInputList inputs = (*sgDeviceList)->entry[i].inputs; + + for (register short j = 0 ; j < (*inputs)->count ; j++) { + if (!((*inputs)->entry[j].flags & sgDeviceInputNameFlagInputUnavailable)) { + deviceList += genDeviceName((*sgDeviceList)->entry[i].name, + (*inputs)->selectedIndex, + (*inputs)->entry[j].name); + } + } + } + } + + SGDisposeDeviceList(_seqGrab, sgDeviceList); + cleanup(); + + _deviceList = deviceList; + } + + return _deviceList; +} + +string QuicktimeWebcamDriver::getDefaultDevice() { + SGDeviceList sgDeviceList; + OSErr err = noErr; + + if (!isOpen()) { + cleanup(); + initializeCommonComponents(); + + err = SGGetChannelDeviceList(_SGChanVideo, sgDeviceListIncludeInputs, &sgDeviceList); + if (err != noErr) { + LOG_ERROR("can't get device list"); + return WEBCAM_NULL; + } + + if ((*sgDeviceList)->count) { + short i = (*sgDeviceList)->selectedIndex; + + SGDeviceInputList inputs = (*sgDeviceList)->entry[i].inputs; + + if ((*inputs)->count) { + short j = (*inputs)->selectedIndex; + + string dev = genDeviceName((*sgDeviceList)->entry[i].name, + (*inputs)->selectedIndex, + (*inputs)->entry[j].name); + + _defaultDevice = dev; + } + } + + SGDisposeDeviceList(_seqGrab, sgDeviceList); + cleanup(); + } + + return _defaultDevice; +} + +WebcamErrorCode QuicktimeWebcamDriver::setDevice(const std::string & deviceName) { + OSErr err = noErr; + unsigned colonPos = deviceName.find(":", 0); + string device = deviceName.substr(0, colonPos); + short input = atoi(deviceName.substr(colonPos + 1).c_str()); + + LOG_DEBUG("opening device: " + deviceName); + + initializeCommonComponents(); + + err = SGSetChannelDevice(_SGChanVideo, stdToPascalString(device)); + if (err != noErr) { + LOG_ERROR("can't set channel device"); + return WEBCAM_NOK; + } + + err = SGSetChannelDeviceInput(_SGChanVideo, input); + if (err != noErr) { + LOG_ERROR("can't set channel device input"); + return WEBCAM_NOK; + } + + LOG_DEBUG("createGWorld"); + if (!createGWorld()) { + return WEBCAM_NOK; + } + + LOG_DEBUG("SGSetDataProc"); + err = SGSetDataProc(_seqGrab, NewSGDataUPP(mySGDataProc), (long) this); + if (err != noErr) { + LOG_ERROR("can't set data proc"); + return WEBCAM_NOK; + } + + LOG_DEBUG("SGSetChannelUsage"); + err = SGSetChannelUsage(_SGChanVideo, seqGrabRecord); + if (err != noErr) { + LOG_ERROR("can't set channel usage"); + return WEBCAM_NOK; + } + + LOG_DEBUG("SGPrepare"); + err = SGPrepare(_seqGrab, false, true); + if (err != noErr) { + LOG_ERROR("can't prepare sequence grabber component"); + return WEBCAM_NOK; + } + + setupDecompressor(); + + _isOpen = true; + + return WEBCAM_OK; +} + +bool QuicktimeWebcamDriver::createGWorld() { + OSErr err = noErr; + + pixosi pixTable[] = { + PIX_OSI_BGR24, + PIX_OSI_ARGB32, + PIX_OSI_RGBA32 + }; + + /* FIXME: These formats are not supported because of offset suppressor in mySGDataProc. + PIX_OSI_RGB24, + PIX_OSI_YUV420P, + PIX_OSI_I420, + PIX_OSI_YUV422, + PIX_OSI_YUV411, + PIX_OSI_YUV422P, + PIX_OSI_YUV444P, + PIX_OSI_YUV424P, + PIX_OSI_YUV41P, + PIX_OSI_YUY2, + PIX_OSI_YUYV, + PIX_OSI_YVYU, + PIX_OSI_UYVY, + PIX_OSI_YV12, + PIX_OSI_NV12, + PIX_OSI_RGB565, + PIX_OSI_RGB555, + PIX_OSI_ARGB32, + PIX_OSI_RGB8, + PIX_OSI_RGB4, + PIX_OSI_RGB1 + }; + */ + + /* + The webcam will always be initialized with the first recognized palette + usually: + MacOSX G5 PPC knows + k32ARGBPixelFormat (OSI 20) + imac intel knows + k32ARGBPixelFormat (OSI 20) + k24BGRPixelFormat (OSI 22) + */ + for (register unsigned i = 0; i < sizeof(pixTable) / sizeof(pixosi); i++) { + LOG_DEBUG("attempting to create a GWorld with palette #" + String::fromNumber(pixTable[i])); + LOG_DEBUG("trying resolution: (top, left, right, bottom) = ("+String::fromNumber(_boundsRect.top)+","+String::fromNumber(_boundsRect.left)+","+String::fromNumber(_boundsRect.right)+","+String::fromNumber(_boundsRect.bottom)+")"); + err = QTNewGWorld(&_PGWorld, //Does'nt work with planar format + pix_quicktime_from_pix_osi(pixTable[i]), + &_boundsRect, + 0, + NULL, + 0); + if (err == noErr) { + LOG_DEBUG("success with palette #" + String::fromNumber(pixTable[i])); + _palette = pixTable[i]; + break; + } + } + + if (err != noErr) { + LOG_ERROR("can't create GWorld"); + return false; + } + + if (!LockPixels(GetPortPixMap(_PGWorld))) { + LOG_ERROR("can't lock pixmap for decompression"); + return false; + } + + err = SGSetGWorld(_seqGrab, _PGWorld, GetMainDevice()); + if (err != noErr) { + LOG_ERROR("can't set GWorld"); + return false; + } + + return true; +} + +bool QuicktimeWebcamDriver::isOpen() const { + return _isOpen; +} + +void QuicktimeWebcamDriver::startCapture() { + OSErr err = noErr; + + err = SGStartRecord(_seqGrab); + if (err != noErr) { + LOG_ERROR("can't start capture"); + return; + } + + _timer.start(100, 100); +} + +void QuicktimeWebcamDriver::pauseCapture() { +} + +void QuicktimeWebcamDriver::stopCapture() { + SGStop(_seqGrab); + + _timer.stop(); +} + +WebcamErrorCode QuicktimeWebcamDriver::setPalette(pixosi palette) { + if (_PGWorld) { + QTUpdateGWorld(&_PGWorld, + pix_quicktime_from_pix_osi(palette), + &_boundsRect, + 0, + NULL, + noNewDevice); + + PixMapHandle pixmap = GetGWorldPixMap(_PGWorld); + if ((*pixmap)->pixelFormat != (unsigned) pix_quicktime_from_pix_osi(palette)) { + LOG_WARN("can't set palette"); + return WEBCAM_NOK; + } + + _palette = palette; + + if (_decomSeq) + CDSequenceEnd(_decomSeq); + + setupDecompressor(); + + return WEBCAM_OK; + } else { + LOG_ERROR("can't set palette when no device were specified before"); + return WEBCAM_NOK; + } +} + +pixosi QuicktimeWebcamDriver::getPalette() const { + return _palette; +} + +WebcamErrorCode QuicktimeWebcamDriver::setFPS(unsigned fps) { + OSErr err = noErr; + + err = SGSetFrameRate(_SGChanVideo, fps); + if (err != noErr) { + return WEBCAM_NOK; + } + + return WEBCAM_OK; +} + +unsigned QuicktimeWebcamDriver::getFPS() const { + Fixed framerate; + OSErr err = noErr; + + err = SGGetFrameRate( + _SGChanVideo, + &framerate); + if (err != noErr) { + return 0; + } + + return (unsigned)framerate; +} + +WebcamErrorCode QuicktimeWebcamDriver::setResolution(unsigned width, unsigned height) { + OSErr err = noErr; + Rect newBounds; + + newBounds.top = 0; + newBounds.left = 0; + newBounds.right = width; + newBounds.bottom = height; + + LOG_DEBUG("try to change resolution: (width, height) = " + String::fromNumber(width) + "," + String::fromNumber(height)); + err = SGSetChannelBounds(_SGChanVideo, &newBounds); + if (err != noErr) { + LOG_DEBUG("could not change resolution..."); + err = SGGetSrcVideoBounds(_SGChanVideo, &_boundsRect); + if (err != noErr) { + LOG_WARN("can't get source video bounds"); + } + return WEBCAM_NOK; + } else { + _boundsRect.top = newBounds.top; + _boundsRect.left = newBounds.left; + _boundsRect.right = newBounds.right; + _boundsRect.bottom = newBounds.bottom; + LOG_DEBUG("new resolution: (top, left, right, bottom) = ("+String::fromNumber(newBounds.top)+","+String::fromNumber(newBounds.left)+","+String::fromNumber(newBounds.right)+","+String::fromNumber(newBounds.bottom)+")"); + } + + if (_decomSeq) { + CDSequenceEnd(_decomSeq); + } + + setupDecompressor(); + + return WEBCAM_OK; +} + +unsigned QuicktimeWebcamDriver::getWidth() const { + return _boundsRect.right - _boundsRect.left; +} + +unsigned QuicktimeWebcamDriver::getHeight() const { + return _boundsRect.bottom - _boundsRect.top; +} + +void QuicktimeWebcamDriver::setBrightness(int brightness) { +} + +int QuicktimeWebcamDriver::getBrightness() const { + return 0; +} + +void QuicktimeWebcamDriver::setContrast(int contrast) { +} + +int QuicktimeWebcamDriver::getContrast() const { + return 0; +} + +void QuicktimeWebcamDriver::flipHorizontally(bool flip) { +} + +void QuicktimeWebcamDriver::frameBufferAvailable(piximage * image) { + _webcamDriver->frameBufferAvailable(image); +} + +void QuicktimeWebcamDriver::logPixMap(PixMap * pm) { + LOG_DEBUG(string("\nPixMap:") + + "\n\tbaseAddr: " + String::fromNumber((unsigned)pm->baseAddr) + + "\n\tPixMap?: " + String::fromNumber((short)(pm->rowBytes & 32768 ? 1 : 0)) + + "\n\tthe other bit: " + String::fromNumber((short)(pm->rowBytes & 65536 ? 1 : 0)) + + "\n\trowBytes: " + String::fromNumber((short)(pm->rowBytes & (((unsigned short) 0xFFFF) >> 2))) + + "\n\tbounds: " + String::fromNumber(pm->bounds.top) + "-" + String::fromNumber(pm->bounds.bottom) + + "-" + String::fromNumber(pm->bounds.left) + "-" + String::fromNumber(pm->bounds.right) + + "\n\tpmVersion: " + String::fromNumber(pm->pmVersion) + + "\n\tpackType: " + String::fromNumber(pm->packType) + + "\n\tpackSize: " + String::fromNumber(pm->packSize) + + "\n\thRes: " + String::fromNumber(pm->hRes) + + "\n\tvRes: " + String::fromNumber(pm->vRes) + + "\n\tpixelType: " + String::fromNumber(pm->pixelType) + + "\n\tpixelSize: " + String::fromNumber(pm->pixelSize) + + "\n\tcmpCount: " + String::fromNumber(pm->cmpCount) + + "\n\tcmpSize: " + String::fromNumber(pm->cmpSize) + + "\n\tpixelFormat: " + pix_quicktime_to_string(pm->pixelFormat) + + "\n\tpmTable: " + String::fromNumber((unsigned)pm->pmTable) + + "\n\tpmExt: " + String::fromNumber((unsigned)pm->pmExt)); +} + +OSErr mySGDataProc(SGChannel c, + Ptr p, + long len, + long * offset, + long chRefCon, + TimeValue time, + short writeType, + long refCon) { + + CodecFlags ignore; + ComponentResult err = noErr; + QuicktimeWebcamDriver * webcamDriver = (QuicktimeWebcamDriver *)refCon; + piximage * image; + + if (webcamDriver->_PGWorld) { + /* Do not flood logger + LOG_DEBUG("decompressing"); + */ + err = DecompressSequenceFrameS(webcamDriver->_decomSeq, + p, + len, + 0, + &ignore, + NULL); + if (err != noErr) { + LOG_ERROR("can't decompress sequence frame in GWorld"); + return err; + } + } + + // Shifting data. MacOS X introduces an offset on each picture line + // FIXME: This shift does work only with RGB format + image = pix_alloc(webcamDriver->_palette, webcamDriver->getWidth(), webcamDriver->getHeight()); + /* Do not flood logger + LOG_DEBUG("allocated a trimmed image: palette: " + String::fromNumber(webcamDriver->_palette) + + ", width: " + String::fromNumber(webcamDriver->getWidth()) + + ", height: " + String::fromNumber(webcamDriver->getHeight())); + */ + + PixMap * pixmap = *GetGWorldPixMap(webcamDriver->_PGWorld); + uint8_t * data; + unsigned rowBytes = pixmap->rowBytes & (((unsigned short) 0xFFFF) >> 2); // The tow first bits are flags + unsigned pixelSize = pixmap->pixelSize / 8; // Pixel size in bytes + unsigned lineOffset = rowBytes - image->width * pixelSize; + /* Do not flood logger + LOG_DEBUG("rowBytes: " + String::fromNumber(rowBytes) + + ", pixelSize: " + String::fromNumber(pixelSize) + + ", lineOffset: " + String::fromNumber(lineOffset)); + + QuicktimeWebcamDriver::logPixMap(pixmap); + */ + + data = (uint8_t *) GetPixBaseAddr(GetGWorldPixMap(webcamDriver->_PGWorld)); + + for (unsigned line = 0 ; line < image->height ; line++) { + unsigned offset = line * (image->width * pixelSize + lineOffset); + memcpy(image->data + ((line * image->width) * pixelSize), data + offset, (rowBytes - lineOffset)); + } + + webcamDriver->frameBufferAvailable(image); + + pix_free(image); + + return noErr; +} + +void QuicktimeWebcamDriver::setupDecompressor() { + ComponentResult err = noErr; + Rect sourceRect = { 0, 0, getWidth(), getHeight() }; + MatrixRecord scaleMatrix; + ImageDescriptionHandle imageDesc = (ImageDescriptionHandle)NewHandle(sizeof(ImageDescription)); + + err = SGGetChannelSampleDescription(_SGChanVideo, (Handle)imageDesc); + + if (err != noErr) { + LOG_ERROR("can't get channel sample description:" + String::fromNumber(err)); + return; + } + + sourceRect.right = (**imageDesc).width; + sourceRect.bottom = (**imageDesc).height; + RectMatrix(&scaleMatrix, &sourceRect, &_boundsRect); + + err = DecompressSequenceBegin(&_decomSeq, + imageDesc, + _PGWorld, + NULL, + NULL, + &scaleMatrix, + srcCopy, + NULL, + 0, + codecNormalQuality, + bestSpeedCodec); + if (err != noErr) { + LOG_ERROR("can't begin decompress sequences"); + return; + } + + DisposeHandle((Handle)imageDesc); + imageDesc = NULL; +} + +void QuicktimeWebcamDriver::idleSeqGrab() { + OSErr err; + + err = SGIdle(_seqGrab); + if (err != noErr) { + SGStop(_seqGrab); + SGStartRecord(_seqGrab); + } +} + +string QuicktimeWebcamDriver::pascalToStdString(Str255 pStr) { + unsigned size = pStr[0]; + char buffer[255]; // A pascal string is not longer than 255 bytes + + memcpy(buffer, pStr + 1, size); + buffer[size] = 0; + + return buffer; +} + +unsigned char *QuicktimeWebcamDriver::stdToPascalString(const std::string & str) { + if (str.size() <= 255) { + static Str255 buffer; + buffer[0] = str.size(); + + memcpy(buffer + 1, str.c_str(), str.size()); + + return buffer; + } else { + return NULL; + } +} + +string QuicktimeWebcamDriver::genDeviceName(unsigned char * device, + short inputIndex, unsigned char * input) { + + char buffer[32]; + sprintf(buffer, "%d", inputIndex); + + string devName = pascalToStdString(device) + + ":" + + buffer + + ":" + + pascalToStdString(input); + + return devName; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/v4l/V4LWebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/v4l/V4LWebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/v4l/V4LWebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/v4l/V4LWebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/v4l2/V4L2WebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/v4l2/V4L2WebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/v4l2/V4L2WebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/v4l2/V4L2WebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * Copyright (C) 2007 Jarosław Lewandowski * Copyright (C) 2007 Andreas Schneider * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/webcam.cpp qutecom-2.2+dfsg1/libs/webcam/src/webcam.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/webcam.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/webcam.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/WebcamDriver.cpp qutecom-2.2+dfsg1/libs/webcam/src/WebcamDriver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/src/WebcamDriver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/src/WebcamDriver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/main.cpp qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/VideoWindow.cpp qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/VideoWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/VideoWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/VideoWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/VideoWindow.h qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/VideoWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/multi-visu/VideoWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/multi-visu/VideoWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/DirectXWebcamDriverTest.h qutecom-2.2+dfsg1/libs/webcam/tests/unit/DirectXWebcamDriverTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/DirectXWebcamDriverTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/unit/DirectXWebcamDriverTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/NullWebcamDriverTest.h qutecom-2.2+dfsg1/libs/webcam/tests/unit/NullWebcamDriverTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/NullWebcamDriverTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/unit/NullWebcamDriverTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/QuicktimeWebcamDriverTest.h qutecom-2.2+dfsg1/libs/webcam/tests/unit/QuicktimeWebcamDriverTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/QuicktimeWebcamDriverTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/unit/QuicktimeWebcamDriverTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/V4LWebcamDriverTest.h qutecom-2.2+dfsg1/libs/webcam/tests/unit/V4LWebcamDriverTest.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/V4LWebcamDriverTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/unit/V4LWebcamDriverTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/WebcamTest.cpp qutecom-2.2+dfsg1/libs/webcam/tests/unit/WebcamTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/unit/WebcamTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/unit/WebcamTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu/webcam_test.cpp qutecom-2.2+dfsg1/libs/webcam/tests/visu/webcam_test.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu/webcam_test.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/visu/webcam_test.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu/webcam_test.h qutecom-2.2+dfsg1/libs/webcam/tests/visu/webcam_test.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu/webcam_test.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/visu/webcam_test.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu-c/webcam_test.cpp qutecom-2.2+dfsg1/libs/webcam/tests/visu-c/webcam_test.cpp --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu-c/webcam_test.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/visu-c/webcam_test.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu-c/webcam_test.h qutecom-2.2+dfsg1/libs/webcam/tests/visu-c/webcam_test.h --- qutecom-2.2~rc3.hg643~dfsg1/libs/webcam/tests/visu-c/webcam_test.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/libs/webcam/tests/visu-c/webcam_test.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindALSA.cmake qutecom-2.2+dfsg1/owbuild/FindALSA.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindALSA.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindALSA.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -6,7 +6,7 @@ # ALSA_LIBRARIES - Link these to use ALSA # ALSA_DEFINITIONS - Compiler switches required for using ALSA # -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindBoost.cmake qutecom-2.2+dfsg1/owbuild/FindBoost.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindBoost.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindBoost.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -38,7 +38,7 @@ # BOOST_WSERIALIZATION_LIBRARY The Boost WSerialization libary. # # Copyright (c) 2006 Andreas Schneider -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindDIRECTX.cmake qutecom-2.2+dfsg1/owbuild/FindDIRECTX.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindDIRECTX.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindDIRECTX.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -46,4 +46,4 @@ if (DIRECTX_LIBRARY_DIR AND DIRECTX_INCLUDE_DIR) set(DIRECTX_FOUND TRUE) endif (DIRECTX_LIBRARY_DIR AND DIRECTX_INCLUDE_DIR) -endif (DIRECTX_LIBRARY_DIR AND DIRECTX_INCLUDE_DIR) \ No newline at end of file +endif (DIRECTX_LIBRARY_DIR AND DIRECTX_INCLUDE_DIR) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindGnuTLS.cmake qutecom-2.2+dfsg1/owbuild/FindGnuTLS.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindGnuTLS.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindGnuTLS.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -6,7 +6,7 @@ # GNUTLS_LIBRARIES - Link these to use GnuTLS # GNUTLS_DEFINITIONS - Compiler switches required for using GnuTLS # -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindMercurial.cmake qutecom-2.2+dfsg1/owbuild/FindMercurial.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindMercurial.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindMercurial.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # MERCURIAL_FOUND - true if the command line client was found # MERCURIAL_HG_EXECUTABLE - path to hg command line client # -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindPTHREAD.cmake qutecom-2.2+dfsg1/owbuild/FindPTHREAD.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindPTHREAD.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindPTHREAD.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # PTHREAD_FOUND - system has PTHREAD # PTHREAD_PUBLIC_LINK_FLAGS - linker flags to use PTHREAD # -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSamplerate.cmake qutecom-2.2+dfsg1/owbuild/FindSamplerate.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSamplerate.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindSamplerate.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ # SAMPLERATE_INCLUDE_DIRS - the libsamplerate include directory # SAMPLERATE_LIBRARIES - Link these to use libsamplerate # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSndFile.cmake qutecom-2.2+dfsg1/owbuild/FindSndFile.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSndFile.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindSndFile.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ # SNDFILE_INCLUDE_DIRS - the libsndfile include directory # SNDFILE_LIBRARIES - Link these to use libsndfile # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSubversion.cmake qutecom-2.2+dfsg1/owbuild/FindSubversion.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/FindSubversion.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/FindSubversion.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ # SUBVERSION_SVN_EXECUTABLE - path to svn command line client # SUBVERSION_SVN_VERSION_EXECUTABLE - path to svnversion command line client # -# Copyright (c) 2007 Wengo +# Copyright (c) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the New # BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/getcurrentdatetime.cpp qutecom-2.2+dfsg1/owbuild/owbuild/getcurrentdatetime.cpp --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/getcurrentdatetime.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/getcurrentdatetime.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2006-2007 Wengo + * Copyright (C) 2006-2010 Mbdsys * * Redistribution and use is allowed according to the terms of the BSD license. * For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateCompileFlags.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateCompileFlags.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateCompileFlags.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateCompileFlags.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -33,7 +33,7 @@ # It uses CMake function set_target_properties() with COMPILE_FLAGS property, see ow_finish_binary() # for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateDefinitions.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateDefinitions.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateDefinitions.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateDefinitions.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -39,7 +39,7 @@ # ow_add_private_definitions() adds defines to a variable (a list) # named ${PROJECT_NAME}_PRIVATE_DEFINITIONS, see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateIncludeDirs.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateIncludeDirs.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateIncludeDirs.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateIncludeDirs.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -36,7 +36,7 @@ # Internally ow_add_private_include_dirs() uses a variable named ${PROJECT_NAME}_PRIVATE_INCLUDE_DIRS # It wrapps CMake function include_directories(), see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLibraries.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLibraries.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLibraries.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLibraries.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -38,7 +38,7 @@ # and defines variable ${PROJECT_NAME}_PRIVATE_LIBRARIES, see ow_finish_binary() for # more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLibraryDirs.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLibraryDirs.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLibraryDirs.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLibraryDirs.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -36,7 +36,7 @@ # Internally ow_add_private_library_dirs() uses a variable named ${PROJECT_NAME}_PRIVATE_LIBRARY_DIRS # It uses CMake function link_directories(), see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLinkFlags.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLinkFlags.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPrivateLinkFlags.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPrivateLinkFlags.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -31,7 +31,7 @@ # using LINK_FLAGS property and defines variable ${PROJECT_NAME}_PRIVATE_LINK_FLAGS, # see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicDefinitions.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicDefinitions.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicDefinitions.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicDefinitions.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -11,7 +11,7 @@ # ${PROJECT_NAME}_DEFINITIONS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicIncludeDirs.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicIncludeDirs.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicIncludeDirs.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicIncludeDirs.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -11,7 +11,7 @@ # ${PROJECT_NAME}_INCLUDE_DIRS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLibraries.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLibraries.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLibraries.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLibraries.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -11,7 +11,7 @@ # ${PROJECT_NAME}_LIBRARIES complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLibraryDirs.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLibraryDirs.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLibraryDirs.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLibraryDirs.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -12,7 +12,7 @@ # ${PROJECT_NAME}_LIBRARY_DIRS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLinkFlags.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLinkFlags.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddPublicLinkFlags.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddPublicLinkFlags.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -10,7 +10,7 @@ # using LIN_FLAGS property # It defines variable ${PROJECT_NAME}_PUBLIC_LINK_FLAGS, see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddSharedLibraryDefinitions.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddSharedLibraryDefinitions.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddSharedLibraryDefinitions.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddSharedLibraryDefinitions.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -45,7 +45,7 @@ # If mylib project is set to static library rather than shared library from cache, # then defines will be automatically removed # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddSources.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAddSources.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAddSources.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAddSources.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -16,7 +16,7 @@ # Internally ow_add_sources() wrapps CMake function add_library or add_executable() # It defines variable ${PROJECT_NAME}_SRCS, see ow_create_project_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAutoconf.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWAutoconf.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWAutoconf.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWAutoconf.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,7 +7,7 @@ # Example: # ow_autoconf("./configure" "make") # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/owbuild-dump.txt qutecom-2.2+dfsg1/owbuild/owbuild/owbuild-dump.txt --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/owbuild-dump.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/owbuild-dump.txt 2010-10-18 12:50:12.000000000 +0000 @@ -37,7 +37,7 @@ # It uses CMake function set_target_properties() with COMPILE_FLAGS property, see ow_finish_binary() # for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -104,7 +104,7 @@ # ow_add_private_definitions() adds defines to a variable (a list) # named ${PROJECT_NAME}_PRIVATE_DEFINITIONS, see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -173,7 +173,7 @@ # Internally ow_add_private_include_dirs() uses a variable named ${PROJECT_NAME}_PRIVATE_INCLUDE_DIRS # It wrapps CMake function include_directories(), see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -239,7 +239,7 @@ # and defines variable ${PROJECT_NAME}_PRIVATE_LIBRARIES, see ow_finish_binary() for # more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -303,7 +303,7 @@ # Internally ow_add_private_library_dirs() uses a variable named ${PROJECT_NAME}_PRIVATE_LIBRARY_DIRS # It uses CMake function link_directories(), see ow_prepare_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -370,7 +370,7 @@ # using LINK_FLAGS property and defines variable ${PROJECT_NAME}_PRIVATE_LINK_FLAGS, # see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -409,7 +409,7 @@ # ${PROJECT_NAME}_DEFINITIONS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -456,7 +456,7 @@ # ${PROJECT_NAME}_INCLUDE_DIRS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -503,7 +503,7 @@ # ${PROJECT_NAME}_LIBRARIES complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -551,7 +551,7 @@ # ${PROJECT_NAME}_LIBRARY_DIRS complies with modules conventions from # http://www.cmake.org/cgi-bin/viewcvs.cgi/Modules/readme.txt?root=CMake&view=markup # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -597,7 +597,7 @@ # using LIN_FLAGS property # It defines variable ${PROJECT_NAME}_PUBLIC_LINK_FLAGS, see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -678,7 +678,7 @@ # If mylib project is set to static library rather than shared library from cache, # then defines will be automatically removed # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -727,7 +727,7 @@ # Internally ow_add_sources() wrapps CMake function add_library or add_executable() # It defines variable ${PROJECT_NAME}_SRCS, see ow_create_project_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -762,7 +762,7 @@ # Example: # ow_autoconf("./configure" "make") # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -798,7 +798,7 @@ # Deploying Applications on MacOSX from Trolltech: # http://doc.trolltech.com/qq/qq09-mac-deployment.html # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -830,7 +830,7 @@ # Deploying Applications on MacOSX from Trolltech: # http://doc.trolltech.com/qq/qq09-mac-deployment.html # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -860,7 +860,7 @@ # endif (WITH_FPIC) # # Copyright (C) 2006 Alexander Neundorf -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -883,7 +883,7 @@ # # Checks for the presence of the variable ${PROJECT_NAME} # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -912,7 +912,7 @@ # ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${BUILD_DIR}/.) # Copies all *.png files from ${CMAKE_CURRENT_SOURCE_DIR} to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -941,7 +941,7 @@ # ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${BUILD_DIR}/.) # Copies recursively ${CMAKE_CURRENT_SOURCE_DIR} directory to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -975,7 +975,7 @@ # ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/icon.png ${BUILD_DIR}/.) # Copies file icon.png to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1012,7 +1012,7 @@ # ${name}: name of the .dmg to create # ${dir}: path to .app to create the .dmg from # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1054,7 +1054,7 @@ # to Executable # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1096,7 +1096,7 @@ # to Plugin # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1130,7 +1130,7 @@ # and then initializes all project variables (${PROJECT_NAME}_INCLUDE_DIRS, # ${PROJECT_NAME}_LIBRARIES, ${PROJECT_NAME}_LIBRARY_DIRS, ${PROJECT_NAME}_DEFINITIONS...) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1224,7 +1224,7 @@ # ow_create_project_binary() calls ow_prepare_project_binary() first, performs some tasks and then calls # ow_finish_project_binary() in order to complete the binary generation processus # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1364,7 +1364,7 @@ # to Shared # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1406,7 +1406,7 @@ # to Static # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1434,7 +1434,7 @@ # Creates directory ${CMAKE_BINARY_DIR}/install/${PROJECT_NAME} and copies generated files # from install target inside # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1470,7 +1470,7 @@ # Microsoft Visual C++ Compiler Options: http://msdn2.microsoft.com/en-us/library/fwkeyyhe.aspx # Microsoft Visual C++ Linker Options: http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # Copyright (C) 2006-2007 Andreas Schneider # # Redistribution and use is allowed according to the terms of the BSD license. @@ -1556,7 +1556,7 @@ # Defines general default CMake configuration options # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1615,7 +1615,7 @@ # - BORLAND (Borland C++) # - WATCOM (Watcom C/C++ Compiler) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1651,7 +1651,7 @@ # This is for documentation propose: it is easier to make a search in one # file where all source code is contained # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1691,7 +1691,7 @@ # an error message and stop the compilation processus # # Copyright (C) 2006 Alexander Neundorf -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1723,7 +1723,7 @@ # ow_finish_project_binary() handles link libraries, compile flags (including defines), # link flags and api/build version # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1795,7 +1795,7 @@ # # which means: 2007-03-23 12:13:16 (YYYY-MM-DD HH:MM:SS) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1829,7 +1829,7 @@ # Output generated: # 4.0.1 # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # Copyright (C) 2007 Andreas Schneider # # Redistribution and use is allowed according to the terms of the BSD license. @@ -1869,7 +1869,7 @@ # message(STATUS "svn revision: " ${SVN_REVISION}) # # Copyright (C) 2006 Andreas Schneider -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1926,7 +1926,7 @@ # All variables defined by CMake: # http://www.cmake.org/Wiki/CMake_Useful_Variables/Get_Variables_From_CMake_Dashboards # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -1978,7 +1978,7 @@ # # hdiutil creates a .dmg file. # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2000,7 +2000,7 @@ # Shows general debug informations (OS, processor, compiler, build directory, build type...) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2035,7 +2035,7 @@ # Output generated: # list contains hello? YES # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2071,7 +2071,7 @@ # this line: # add_dependencies(your_main_target lrelease) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2177,7 +2177,7 @@ # $> make lupdate # This will create a file ${CMAKE_CURRENT_SOURCE_DIR}/lang.pro + update .ts files # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2350,12 +2350,12 @@ endmacro (ow_locale_update) -# FIXME This is specific to WengoPhone +# FIXME This is specific to QuteCom # Didn't find another way to do it :( # maybe via ${CMAKE_COMMAND} -D ow_locale_update( ${PRO_FILE} - ${CMAKE_CURRENT_SOURCE_DIR}/wengophone/src/presentation + ${CMAKE_CURRENT_SOURCE_DIR}/qutecom/src/presentation ${CMAKE_CURRENT_SOURCE_DIR}/crashreport ${CMAKE_CURRENT_SOURCE_DIR}/libs/qtutil ${CMAKE_CURRENT_SOURCE_DIR}/libs/owbrowser @@ -2381,7 +2381,7 @@ # # ow_create_project_binary(mytest) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2424,7 +2424,7 @@ # # ow_create_project_binary(mytest) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2457,7 +2457,7 @@ # and link_directories() CMake functions # See ow_finish_project_binary() and ow_create_project_binary() for complete documentation # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2487,7 +2487,7 @@ # - ow_project_log() # Internal function, shows debug informations about the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2550,7 +2550,7 @@ # Internally ow_set_library_version() uses variables named ${PROJECT_NAME}_BUILD_VERSION # and ${PROJECT_NAME}_API_VERSION, see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2582,12 +2582,12 @@ # if you don't have it already # # Example: -# ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/webcam/trunk libs/webcam -r 9053 -q) +# ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/webcam/trunk libs/webcam -r 9053 -q) # -# This will make a svn checkout from https://dev.openwengo.com/svn/openwengo/webcam/trunk (revision 9053 +# This will make a svn checkout from https://dev.openqutecom.com/svn/openqutecom/webcam/trunk (revision 9053 # and quiet mode) and copy it to directory ${CMAKE_CURRENT_SOURCE_DIR}/libs/webcam # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2617,7 +2617,7 @@ # Example: # ow_unique(unique ${${PROJECT_NAME}_PUBLIC_LINK_FLAGS} ${${PROJECT_NAME}_PRIVATE_LINK_FLAGS}) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2649,7 +2649,7 @@ # MacOSX only, uses privately a framework inside the current project: # imports properties from a framework to the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2759,7 +2759,7 @@ # All these variables are project attributes, ow_add_public_*() ow_add_private_*() are # accessors (setters) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2823,7 +2823,7 @@ # MacOSX only, uses publicly a framework inside the current project: # imports properties from a framework to the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2860,7 +2860,7 @@ # Term 'public' means that public attributes inherited will stay # public attributes once inherited and will be propagated to subprojects # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -2940,7 +2940,7 @@ # # -x exclude the archive. See above for reason. # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWChangeIdentificationName.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWChangeIdentificationName.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWChangeIdentificationName.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWChangeIdentificationName.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,7 +7,7 @@ # Deploying Applications on MacOSX from Trolltech: # http://doc.trolltech.com/qq/qq09-mac-deployment.html # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWChangeInstallName.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWChangeInstallName.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWChangeInstallName.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWChangeInstallName.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -10,7 +10,7 @@ # Deploying Applications on MacOSX from Trolltech: # http://doc.trolltech.com/qq/qq09-mac-deployment.html # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCheckCXXCompilerFlag.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCheckCXXCompilerFlag.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCheckCXXCompilerFlag.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCheckCXXCompilerFlag.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -8,7 +8,7 @@ # endif (WITH_FPIC) # # Copyright (C) 2006 Alexander Neundorf -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCheckProject.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCheckProject.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCheckProject.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCheckProject.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -3,7 +3,7 @@ # # Checks for the presence of the variable ${PROJECT_NAME} # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyDir.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyDir.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyDir.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyDir.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,7 +7,7 @@ # ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${BUILD_DIR}/.) # Copies all *.png files from ${CMAKE_CURRENT_SOURCE_DIR} to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyDirRecursive.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyDirRecursive.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyDirRecursive.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyDirRecursive.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,7 +7,7 @@ # ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${BUILD_DIR}/.) # Copies recursively ${CMAKE_CURRENT_SOURCE_DIR} directory to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyFile.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyFile.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCopyFile.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCopyFile.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,7 +7,7 @@ # ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/icon.png ${BUILD_DIR}/.) # Copies file icon.png to ${BUILD_DIR} directory # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateDMG.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateDMG.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateDMG.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateDMG.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # ${name}: name of the .dmg to create # ${dir}: path to .app to create the .dmg from # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateExecutable.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateExecutable.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateExecutable.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateExecutable.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -20,7 +20,7 @@ # to Executable # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreatePluginLibrary.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreatePluginLibrary.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreatePluginLibrary.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreatePluginLibrary.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -20,7 +20,7 @@ # to Plugin # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateProject.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateProject.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateProject.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateProject.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -12,7 +12,7 @@ # and then initializes all project variables (${PROJECT_NAME}_INCLUDE_DIRS, # ${PROJECT_NAME}_LIBRARIES, ${PROJECT_NAME}_LIBRARY_DIRS, ${PROJECT_NAME}_DEFINITIONS...) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateSharedLibrary.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateSharedLibrary.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateSharedLibrary.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateSharedLibrary.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -20,7 +20,7 @@ # to Shared # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateStaticLibrary.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateStaticLibrary.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWCreateStaticLibrary.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWCreateStaticLibrary.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -20,7 +20,7 @@ # to Static # This variable will be used later on by ow_create_project_binary() # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDeclareInstallScript.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDeclareInstallScript.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDeclareInstallScript.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDeclareInstallScript.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -8,7 +8,7 @@ # Creates directory ${CMAKE_BINARY_DIR}/install/${PROJECT_NAME} and copies generated files # from install target inside # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDeclarePackageScript.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDeclarePackageScript.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDeclarePackageScript.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDeclarePackageScript.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # These targets are used to generate a distributable package. They are dependent on # ${PROJECT_NAME}-install # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDefaultCompilerFlags.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDefaultCompilerFlags.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDefaultCompilerFlags.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDefaultCompilerFlags.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -6,7 +6,7 @@ # Microsoft Visual C++ Compiler Options: http://msdn2.microsoft.com/en-us/library/fwkeyyhe.aspx # Microsoft Visual C++ Linker Options: http://msdn2.microsoft.com/en-us/library/y0zzbyt4.aspx # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # Copyright (C) 2006-2007 Andreas Schneider # # Redistribution and use is allowed according to the terms of the BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDefaultConfig.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDefaultConfig.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDefaultConfig.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDefaultConfig.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ # Defines general default CMake configuration options # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDetectSystem.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDetectSystem.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDetectSystem.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDetectSystem.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -22,7 +22,7 @@ # - BORLAND (Borland C++) # - WATCOM (Watcom C/C++ Compiler) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDumpOWBuild.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWDumpOWBuild.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWDumpOWBuild.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWDumpOWBuild.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # This is for documentation propose: it is easier to make a search in one # file where all source code is contained # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWEnsureOutOfSourceBuild.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWEnsureOutOfSourceBuild.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWEnsureOutOfSourceBuild.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWEnsureOutOfSourceBuild.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ # an error message and stop the compilation processus # # Copyright (C) 2006 Alexander Neundorf -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWFinishProjectBinary.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWFinishProjectBinary.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWFinishProjectBinary.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWFinishProjectBinary.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -12,7 +12,7 @@ # ow_finish_project_binary() handles link libraries, compile flags (including defines), # link flags and api/build version # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetCurrentDateTime.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWGetCurrentDateTime.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetCurrentDateTime.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWGetCurrentDateTime.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -10,7 +10,7 @@ # # which means: 2007-03-23 12:13:16 (YYYY-MM-DD HH:MM:SS) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetGCCVersion.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWGetGCCVersion.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetGCCVersion.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWGetGCCVersion.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -8,7 +8,7 @@ # Output generated: # 4.0.1 # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # Copyright (C) 2007 Andreas Schneider # # Redistribution and use is allowed according to the terms of the BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetMercurialRevision.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWGetMercurialRevision.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetMercurialRevision.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWGetMercurialRevision.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -13,7 +13,7 @@ # message(STATUS "hg revision: " ${HG_REVISION}) # # Copyright (C) 2006 Andreas Schneider -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # Copyright (C) 2008 MBDSYS # # Redistribution and use is allowed according to the terms of the BSD license. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetSvnRevision.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWGetSvnRevision.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGetSvnRevision.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWGetSvnRevision.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -13,7 +13,7 @@ # message(STATUS "svn revision: " ${SVN_REVISION}) # # Copyright (C) 2006 Andreas Schneider -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGlobalVariables.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWGlobalVariables.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWGlobalVariables.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWGlobalVariables.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -12,7 +12,7 @@ # All variables defined by CMake: # http://www.cmake.org/Wiki/CMake_Useful_Variables/Get_Variables_From_CMake_Dashboards # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWHdiUtil.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWHdiUtil.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWHdiUtil.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWHdiUtil.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # # hdiutil creates a .dmg file. # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWInitializationInfo.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWInitializationInfo.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWInitializationInfo.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWInitializationInfo.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ # Shows general debug informations (OS, processor, compiler, build directory, build type...) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWListContains.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWListContains.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWListContains.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWListContains.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -15,7 +15,7 @@ # Output generated: # list contains hello? YES # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWLocaleRelease.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWLocaleRelease.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWLocaleRelease.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWLocaleRelease.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -13,7 +13,7 @@ # this line: # add_dependencies(your_main_target lrelease) # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWLocaleUpdate.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWLocaleUpdate.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWLocaleUpdate.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWLocaleUpdate.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -36,7 +36,7 @@ # $> make lupdate # This will create a file ${CMAKE_CURRENT_SOURCE_DIR}/lang.pro + update .ts files # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. @@ -209,12 +209,12 @@ endmacro (ow_locale_update) -# FIXME This is specific to WengoPhone +# FIXME This is specific to QuteCom # Didn't find another way to do it :( # maybe via ${CMAKE_COMMAND} -D ow_locale_update( ${PRO_FILE} - ${CMAKE_CURRENT_SOURCE_DIR}/wengophone/src/presentation + ${CMAKE_CURRENT_SOURCE_DIR}/qutecom/src/presentation ${CMAKE_CURRENT_SOURCE_DIR}/crashreport ${CMAKE_CURRENT_SOURCE_DIR}/libs/qtutil ${CMAKE_CURRENT_SOURCE_DIR}/libs/owbrowser diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPostBuildCopyDir.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWPostBuildCopyDir.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPostBuildCopyDir.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWPostBuildCopyDir.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -15,7 +15,7 @@ # # ow_create_project_binary(mytest) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPostBuildCopyFile.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWPostBuildCopyFile.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPostBuildCopyFile.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWPostBuildCopyFile.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -15,7 +15,7 @@ # # ow_create_project_binary(mytest) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPrepareProjectBinary.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWPrepareProjectBinary.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWPrepareProjectBinary.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWPrepareProjectBinary.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ # and link_directories() CMake functions # See ow_finish_project_binary() and ow_create_project_binary() for complete documentation # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWProjectLog.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWProjectLog.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWProjectLog.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWProjectLog.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ # - ow_project_log() # Internal function, shows debug informations about the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWSetLibraryVersion.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWSetLibraryVersion.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWSetLibraryVersion.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWSetLibraryVersion.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -18,7 +18,7 @@ # Internally ow_set_library_version() uses variables named ${PROJECT_NAME}_BUILD_VERSION # and ${PROJECT_NAME}_API_VERSION, see ow_finish_binary() for more details # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWSvnCheckout.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWSvnCheckout.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWSvnCheckout.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWSvnCheckout.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -7,12 +7,12 @@ # if you don't have it already # # Example: -# ow_svn_checkout(https://dev.openwengo.com/svn/openwengo/webcam/trunk libs/webcam -r 9053 -q) +# ow_svn_checkout(https://dev.openqutecom.com/svn/openqutecom/webcam/trunk libs/webcam -r 9053 -q) # -# This will make a svn checkout from https://dev.openwengo.com/svn/openwengo/webcam/trunk (revision 9053 +# This will make a svn checkout from https://dev.openqutecom.com/svn/openqutecom/webcam/trunk (revision 9053 # and quiet mode) and copy it to directory ${CMAKE_CURRENT_SOURCE_DIR}/libs/webcam # -# Copyright (C) 2007 Wengo +# Copyright (C) 2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUnique.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWUnique.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUnique.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWUnique.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -6,7 +6,7 @@ # Example: # ow_unique(unique ${${PROJECT_NAME}_PUBLIC_LINK_FLAGS} ${${PROJECT_NAME}_PRIVATE_LINK_FLAGS}) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePrivateFrameworks.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePrivateFrameworks.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePrivateFrameworks.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePrivateFrameworks.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ # MacOSX only, uses privately a framework inside the current project: # imports properties from a framework to the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePrivateLibraries.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePrivateLibraries.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePrivateLibraries.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePrivateLibraries.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -79,7 +79,7 @@ # All these variables are project attributes, ow_add_public_*() ow_add_private_*() are # accessors (setters) # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePublicFrameworks.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePublicFrameworks.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePublicFrameworks.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePublicFrameworks.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ # MacOSX only, uses publicly a framework inside the current project: # imports properties from a framework to the current project # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePublicLibraries.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePublicLibraries.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWUsePublicLibraries.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWUsePublicLibraries.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -6,7 +6,7 @@ # Term 'public' means that public attributes inherited will stay # public attributes once inherited and will be propagated to subprojects # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWZipDirectory.cmake qutecom-2.2+dfsg1/owbuild/owbuild/OWZipDirectory.cmake --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/OWZipDirectory.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/OWZipDirectory.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -21,7 +21,7 @@ # # -x exclude the archive. See above for reason. # -# Copyright (C) 2006-2007 Wengo +# Copyright (C) 2006-2010 Mbdsys # # Redistribution and use is allowed according to the terms of the BSD license. # For details see the accompanying COPYING file. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/README qutecom-2.2+dfsg1/owbuild/owbuild/README --- qutecom-2.2~rc3.hg643~dfsg1/owbuild/owbuild/README 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/owbuild/owbuild/README 2010-10-18 12:50:12.000000000 +0000 @@ -5,7 +5,7 @@ OWBuild is under BSD license, check COPYING file Check OWBuild website here: -http://dev.openwengo.org/trac/openwengo/trac.cgi/wiki/OWBuild +http://dev.openqutecom.org/trac/openqutecom/trac.cgi/wiki/OWBuild Coding Recommendations ---------------------- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/AUTHORS qutecom-2.2+dfsg1/qutecom/AUTHORS --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/AUTHORS 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/AUTHORS 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,121 @@ + +Active committers: + Marek Cervenka + Vadim Lebedev + Leonard Norrgard + Laurent Tarrisse + +Original Developers: + Philippe Bernery + Julien Bossart + Xavier Desjardins + David Ferlier + Aurélien Gateau + Julien Gilli + Tanguy Krotoff + Vadim Lebedev + Minh Phan Quang + Mathieu Stute + Jérôme Wagner + +Contributors: + Maxime Alexandre + Laurent Almeras + Dudi Avramov's + Yann Biancheri + Ludovico Cavedon + Guirec Courbon + Alain Delhaye + Julien De Luca + Luca DiMarco + Paolo Durante + Angius Fabrizio + Jean-François Gaud + Daniele Gobbetti + Thomas Hervé + Philippe Kajmar + Alec Leams + Séven LeMesle + Jarosław Lewandowski + Anne-Fleur L'Hostis + Arnaud Ligot + Thomas Monjalon + Dave Neary + Régis Nebor + Fabien Penso + Christophe Perez + Andreas Schneider + Matthias Schneider + Laurent Schweizer + Assane Sylla + Livio Torrero + Seb Tricaud + Sherry Yang + + +Emoticons from Nuno Pinheiro, http://pinheiro-kde.blogspot.com/ +Flags icons from Mark James, http://www.famfamfam.com/ + +**Based on the following softwares** +- phApi +Copyright (C) Vadim Lebedev +published under GNU GPL + +- eXosip +Copyright (C) Aymeric Moizard +published under GNU GPL + +- oSIP +Copyright (C) Aymeric Moizard +published under GNU LGPL + +- oRTP +Copyright (C) Simon Morlat +published under GNU LGPL + +- trayicon +Copyright (C) Justin Karneges +published under GNU LGPL + +- Boost +published under Boost Software License + +- cURL +Copyright (C) Daniel Stenberg +published under MIT/X-style license + +- FFmpeg +published under GNU LGPL + +- TinyXML +Copyright (C) Lee Thomason +published under zlib license + +- Qt Toolkit +Copyright (C) Trolltech AS +published under GNU GPL + +- sipX +Copyright (C) Pingtel Corp +published under GNU LGPL + +- PortAudio +Copyright (C) Ross Bencina and Phil Burk +published under BSD-style license + +- OpenSSL +published under Apache-style license + +- Speex +Copyright (C) Xiph.org Foundation +published under BSD-style license + +- Libpurple +published under GNU GPL + +- GLib +published under GNU LGPL + +- NSIS +Copyright (C) Nullsoft, Inc. +published under zlib-style license diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ +# TODO : test dir + +subdirs( + src/buildid + src + resources + #test +) + +if (COPY_DATA_FILES_ON_CONFIGURE) + ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/COPYING ${BUILD_DIR}) + # Copy AUTHORS to DATA_COPY_DIR because it's used by QtAbout + ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS ${DATA_COPY_DIR}/.) +endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/COPYING qutecom-2.2+dfsg1/qutecom/COPYING --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/COPYING 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/COPYING 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,340 @@ + GNU GENERAL PUBLIC LICENSE + Version 2, June 1991 + + Copyright (C) 1989, 1991 Free Software Foundation, Inc. + 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + Everyone is permitted to copy and distribute verbatim copies + of this license document, but changing it is not allowed. + + Preamble + + The licenses for most software are designed to take away your +freedom to share and change it. By contrast, the GNU General Public +License is intended to guarantee your freedom to share and change free +software--to make sure the software is free for all its users. This +General Public License applies to most of the Free Software +Foundation's software and to any other program whose authors commit to +using it. (Some other Free Software Foundation software is covered by +the GNU Library General Public License instead.) You can apply it to +your programs, too. + + When we speak of free software, we are referring to freedom, not +price. Our General Public Licenses are designed to make sure that you +have the freedom to distribute copies of free software (and charge for +this service if you wish), that you receive source code or can get it +if you want it, that you can change the software or use pieces of it +in new free programs; and that you know you can do these things. + + To protect your rights, we need to make restrictions that forbid +anyone to deny you these rights or to ask you to surrender the rights. +These restrictions translate to certain responsibilities for you if you +distribute copies of the software, or if you modify it. + + For example, if you distribute copies of such a program, whether +gratis or for a fee, you must give the recipients all the rights that +you have. You must make sure that they, too, receive or can get the +source code. And you must show them these terms so they know their +rights. + + We protect your rights with two steps: (1) copyright the software, and +(2) offer you this license which gives you legal permission to copy, +distribute and/or modify the software. + + Also, for each author's protection and ours, we want to make certain +that everyone understands that there is no warranty for this free +software. If the software is modified by someone else and passed on, we +want its recipients to know that what they have is not the original, so +that any problems introduced by others will not reflect on the original +authors' reputations. + + Finally, any free program is threatened constantly by software +patents. We wish to avoid the danger that redistributors of a free +program will individually obtain patent licenses, in effect making the +program proprietary. To prevent this, we have made it clear that any +patent must be licensed for everyone's free use or not licensed at all. + + The precise terms and conditions for copying, distribution and +modification follow. + + GNU GENERAL PUBLIC LICENSE + TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION + + 0. This License applies to any program or other work which contains +a notice placed by the copyright holder saying it may be distributed +under the terms of this General Public License. The "Program", below, +refers to any such program or work, and a "work based on the Program" +means either the Program or any derivative work under copyright law: +that is to say, a work containing the Program or a portion of it, +either verbatim or with modifications and/or translated into another +language. (Hereinafter, translation is included without limitation in +the term "modification".) Each licensee is addressed as "you". + +Activities other than copying, distribution and modification are not +covered by this License; they are outside its scope. The act of +running the Program is not restricted, and the output from the Program +is covered only if its contents constitute a work based on the +Program (independent of having been made by running the Program). +Whether that is true depends on what the Program does. + + 1. You may copy and distribute verbatim copies of the Program's +source code as you receive it, in any medium, provided that you +conspicuously and appropriately publish on each copy an appropriate +copyright notice and disclaimer of warranty; keep intact all the +notices that refer to this License and to the absence of any warranty; +and give any other recipients of the Program a copy of this License +along with the Program. + +You may charge a fee for the physical act of transferring a copy, and +you may at your option offer warranty protection in exchange for a fee. + + 2. You may modify your copy or copies of the Program or any portion +of it, thus forming a work based on the Program, and copy and +distribute such modifications or work under the terms of Section 1 +above, provided that you also meet all of these conditions: + + a) You must cause the modified files to carry prominent notices + stating that you changed the files and the date of any change. + + b) You must cause any work that you distribute or publish, that in + whole or in part contains or is derived from the Program or any + part thereof, to be licensed as a whole at no charge to all third + parties under the terms of this License. + + c) If the modified program normally reads commands interactively + when run, you must cause it, when started running for such + interactive use in the most ordinary way, to print or display an + announcement including an appropriate copyright notice and a + notice that there is no warranty (or else, saying that you provide + a warranty) and that users may redistribute the program under + these conditions, and telling the user how to view a copy of this + License. (Exception: if the Program itself is interactive but + does not normally print such an announcement, your work based on + the Program is not required to print an announcement.) + +These requirements apply to the modified work as a whole. If +identifiable sections of that work are not derived from the Program, +and can be reasonably considered independent and separate works in +themselves, then this License, and its terms, do not apply to those +sections when you distribute them as separate works. But when you +distribute the same sections as part of a whole which is a work based +on the Program, the distribution of the whole must be on the terms of +this License, whose permissions for other licensees extend to the +entire whole, and thus to each and every part regardless of who wrote it. + +Thus, it is not the intent of this section to claim rights or contest +your rights to work written entirely by you; rather, the intent is to +exercise the right to control the distribution of derivative or +collective works based on the Program. + +In addition, mere aggregation of another work not based on the Program +with the Program (or with a work based on the Program) on a volume of +a storage or distribution medium does not bring the other work under +the scope of this License. + + 3. You may copy and distribute the Program (or a work based on it, +under Section 2) in object code or executable form under the terms of +Sections 1 and 2 above provided that you also do one of the following: + + a) Accompany it with the complete corresponding machine-readable + source code, which must be distributed under the terms of Sections + 1 and 2 above on a medium customarily used for software interchange; or, + + b) Accompany it with a written offer, valid for at least three + years, to give any third party, for a charge no more than your + cost of physically performing source distribution, a complete + machine-readable copy of the corresponding source code, to be + distributed under the terms of Sections 1 and 2 above on a medium + customarily used for software interchange; or, + + c) Accompany it with the information you received as to the offer + to distribute corresponding source code. (This alternative is + allowed only for noncommercial distribution and only if you + received the program in object code or executable form with such + an offer, in accord with Subsection b above.) + +The source code for a work means the preferred form of the work for +making modifications to it. For an executable work, complete source +code means all the source code for all modules it contains, plus any +associated interface definition files, plus the scripts used to +control compilation and installation of the executable. However, as a +special exception, the source code distributed need not include +anything that is normally distributed (in either source or binary +form) with the major components (compiler, kernel, and so on) of the +operating system on which the executable runs, unless that component +itself accompanies the executable. + +If distribution of executable or object code is made by offering +access to copy from a designated place, then offering equivalent +access to copy the source code from the same place counts as +distribution of the source code, even though third parties are not +compelled to copy the source along with the object code. + + 4. You may not copy, modify, sublicense, or distribute the Program +except as expressly provided under this License. Any attempt +otherwise to copy, modify, sublicense or distribute the Program is +void, and will automatically terminate your rights under this License. +However, parties who have received copies, or rights, from you under +this License will not have their licenses terminated so long as such +parties remain in full compliance. + + 5. You are not required to accept this License, since you have not +signed it. However, nothing else grants you permission to modify or +distribute the Program or its derivative works. These actions are +prohibited by law if you do not accept this License. Therefore, by +modifying or distributing the Program (or any work based on the +Program), you indicate your acceptance of this License to do so, and +all its terms and conditions for copying, distributing or modifying +the Program or works based on it. + + 6. Each time you redistribute the Program (or any work based on the +Program), the recipient automatically receives a license from the +original licensor to copy, distribute or modify the Program subject to +these terms and conditions. You may not impose any further +restrictions on the recipients' exercise of the rights granted herein. +You are not responsible for enforcing compliance by third parties to +this License. + + 7. If, as a consequence of a court judgment or allegation of patent +infringement or for any other reason (not limited to patent issues), +conditions are imposed on you (whether by court order, agreement or +otherwise) that contradict the conditions of this License, they do not +excuse you from the conditions of this License. If you cannot +distribute so as to satisfy simultaneously your obligations under this +License and any other pertinent obligations, then as a consequence you +may not distribute the Program at all. For example, if a patent +license would not permit royalty-free redistribution of the Program by +all those who receive copies directly or indirectly through you, then +the only way you could satisfy both it and this License would be to +refrain entirely from distribution of the Program. + +If any portion of this section is held invalid or unenforceable under +any particular circumstance, the balance of the section is intended to +apply and the section as a whole is intended to apply in other +circumstances. + +It is not the purpose of this section to induce you to infringe any +patents or other property right claims or to contest validity of any +such claims; this section has the sole purpose of protecting the +integrity of the free software distribution system, which is +implemented by public license practices. Many people have made +generous contributions to the wide range of software distributed +through that system in reliance on consistent application of that +system; it is up to the author/donor to decide if he or she is willing +to distribute software through any other system and a licensee cannot +impose that choice. + +This section is intended to make thoroughly clear what is believed to +be a consequence of the rest of this License. + + 8. If the distribution and/or use of the Program is restricted in +certain countries either by patents or by copyrighted interfaces, the +original copyright holder who places the Program under this License +may add an explicit geographical distribution limitation excluding +those countries, so that distribution is permitted only in or among +countries not thus excluded. In such case, this License incorporates +the limitation as if written in the body of this License. + + 9. The Free Software Foundation may publish revised and/or new versions +of the General Public License from time to time. Such new versions will +be similar in spirit to the present version, but may differ in detail to +address new problems or concerns. + +Each version is given a distinguishing version number. If the Program +specifies a version number of this License which applies to it and "any +later version", you have the option of following the terms and conditions +either of that version or of any later version published by the Free +Software Foundation. If the Program does not specify a version number of +this License, you may choose any version ever published by the Free Software +Foundation. + + 10. If you wish to incorporate parts of the Program into other free +programs whose distribution conditions are different, write to the author +to ask for permission. For software which is copyrighted by the Free +Software Foundation, write to the Free Software Foundation; we sometimes +make exceptions for this. Our decision will be guided by the two goals +of preserving the free status of all derivatives of our free software and +of promoting the sharing and reuse of software generally. + + NO WARRANTY + + 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY +FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN +OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES +PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED +OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF +MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS +TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE +PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, +REPAIR OR CORRECTION. + + 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING +WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR +REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, +INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING +OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED +TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY +YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER +PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE +POSSIBILITY OF SUCH DAMAGES. + + END OF TERMS AND CONDITIONS + + How to Apply These Terms to Your New Programs + + If you develop a new program, and you want it to be of the greatest +possible use to the public, the best way to achieve this is to make it +free software which everyone can redistribute and change under these terms. + + To do so, attach the following notices to the program. It is safest +to attach them to the start of each source file to most effectively +convey the exclusion of warranty; and each file should have at least +the "copyright" line and a pointer to where the full notice is found. + + + Copyright (C) + + 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA + + +Also add information on how to contact you by electronic and paper mail. + +If the program is interactive, make it output a short notice like this +when it starts in an interactive mode: + + Gnomovision version 69, Copyright (C) year name of author + Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. + This is free software, and you are welcome to redistribute it + under certain conditions; type `show c' for details. + +The hypothetical commands `show w' and `show c' should show the appropriate +parts of the General Public License. Of course, the commands you use may +be called something other than `show w' and `show c'; they could even be +mouse-clicks or menu items--whatever suits your program. + +You should also get your employer (if you work as a programmer) or your +school, if any, to sign a "copyright disclaimer" for the program, if +necessary. Here is a sample; alter the names: + + Yoyodyne, Inc., hereby disclaims all copyright interest in the program + `Gnomovision' (which makes passes at compilers) written by James Hacker. + + , 1 April 1989 + Ty Coon, President of Vice + +This General Public License does not permit incorporating your program into +proprietary programs. If your program is a subroutine library, you may +consider it more useful to permit linking proprietary applications with the +library. If this is what you want to do, use the GNU Library General +Public License instead of this License. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/CppTemplate.cpp qutecom-2.2+dfsg1/qutecom/doc/CppTemplate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/CppTemplate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/doc/CppTemplate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,20 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "HeaderTemplate.h" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/HeaderTemplate.h qutecom-2.2+dfsg1/qutecom/doc/HeaderTemplate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/HeaderTemplate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/doc/HeaderTemplate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,36 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWHEADERTEMPLATE_H +#define OWHEADERTEMPLATE_H + +/** + * Header template with copyright and GNU GPL license. + * + * End of line character should be LF (UNIX) rather than CR LF (Windows). + * Code documentation should be inside header files using the javadoc standard. + * + * @see doc/QuteComCodeConventions.odt + * @see http://dev.openqutecom.com/trac/openqutecom/trac.cgi/wiki/QuteComCodeConventions + * @author Tanguy Krotoff + */ +class HeaderTemplate { +}; + +#endif //OWHEADERTEMPLATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/QuteCom_overview.svg qutecom-2.2+dfsg1/qutecom/doc/QuteCom_overview.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/doc/QuteCom_overview.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/doc/QuteCom_overview.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4421 @@ + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + image/svg+xml + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + Qt frontend + + + + + + + + + + + + + + + + GTK+ Frontend + + + + + + + + + + + + + + + + Cocoa frontend + + XPCOMComponent + + + + NG's Core + + + + ContactList + History + PhoneLine&PhoneCall + libGAIM + PhApi + + + + SIPWrapper + + + Sound + + Webcam + Homebrew Libraries + + SimpleAPI + qutecom/src/presentation/xpcom + + + + + ffmpeg + oSIP + eXosip + oRTP + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MSN + Yahoo! + + Jabber + qutecom/src/presentation/qt + qutecom/src/presentation/gtk + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + : Use relationship. + + + + + + + + + + + + : Work in -progress. + + + + + + + + + + + + + + + + + + + + + + + + + + + : Potential enhancement. + + netlib + + Tinyxml + + + shlibloader + global + + util + + qtutil + + Presence &IM + timer + + skinstyle + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/Doxyfile qutecom-2.2+dfsg1/qutecom/Doxyfile --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/Doxyfile 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/Doxyfile 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,260 @@ +# Doxyfile 1.4.4 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = QuteCom +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = src \ + mainpage.doxygen \ + QuteComCodeConventions.txt \ + COPYING +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = . +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/install-qutecom.sh qutecom-2.2+dfsg1/qutecom/install-qutecom.sh --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/install-qutecom.sh 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/install-qutecom.sh 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +#!/bin/sh +# +# This script installs QuteCom 2.0 + +# Download QuteCom +echo " " +echo "Password required to install in /opt directory... " +echo " " +cd /opt +sudo wget http://download.qutecom.com/qutecom/rc/2006-10-03/QuteCom-2.0-linux-bin-x86.tar.bz2 + +# Install QuteCom 2.0 +echo " " +echo "Installing QuteCom 2.0" + +# Extract the build +sudo tar -xjvf QuteCom-2.0-linux-bin-x86.tar.bz2 + +# Renaming the folder +sudo mv qutecom-ng-binary-latest/ qutecom + +# Make sure root owns the Swiftfox directory +sudo chown -hR root:root qutecom +#Applying permissions +sudo chmod 555 /opt/qutecom/* + +# Add link to /usr/bin +sudo ln -s /opt/qutecom/qutecom.sh /usr/bin/qtqutecom + +# Add QuteCom menu Entry +cd /usr/share/applications +sudo wget http://download.qutecom.com/qutecom/qutecom.desktop + +# Copy qutecom icon +cp /opt/qutecom/pics/qutecom.png /usr/share/pixmaps/qutecom.png + +# Download .protocol file +cd /usr/share/services +wget http://download.qutecom.com/qutecom/qutecom.protocol + +# Remove the downloaded tarball +sudo rm /opt/QuteCom-2.0-linux-bin-x86.tar.bz2 + +echo " " +echo "QuteCom 2.0 is now installed, enjoy your freedom to talk :) !" +echo " " +exit diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/mainpage.doxygen qutecom-2.2+dfsg1/qutecom/mainpage.doxygen --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/mainpage.doxygen 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/mainpage.doxygen 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/** + * @mainpage + +

Code Conventions

+ +Please read the file QuteComCodeConventions.odt or go to the wiki page +QuteComCodeConventions. + +This document only explain specific conventions for QuteCom. + +

Model component

+All classes are named after QuteComCodeConventions.sxw. + +All thread safe methods are named @a *ThreadSafe(). + +Events are always postfixed with Event and event callbacks with EventHandler. + +Besides this there is no specific conventions for this component. + +

Control component

+This component has some special conventions: + +All classes start with a big letter 'C' (meaning Control) e.g CQuteCom. + +

Presentation component

+All classes start with a big letter 'P' (meaning Presentation) e.g PQuteCom. + +All Qt classes start with 'Qt' e.g QtQuteCom. + +All GTK+ classes start with 'Gtk' e.g GtkQuteCom. + +Qt classes have to be thread safe. All the calls from the model/control part +should be threaded via QObjectThreadSafe (LibQtUtil). + +If a method @a addMessage(const std::string & message) is implemented inside a Qt class, +this method should call another one named @a addMessageThreadSafe() that uses +QObjectThreadSafe. +Same for the constructor that calls a method named @a initThreadSafe(). +So all thread safe methods are named @a *ThreadSafe(). + +For UML pictures the resolution should be 1280x960 (~100KB) +Name convention: $MODULE_framework1.jpg, $MODULE_framework2.jpg ... + +

License

+QuteCom is licensed under the GNU GPLv2 license. + */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/70QuteCom qutecom-2.2+dfsg1/qutecom/res/70QuteCom --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/70QuteCom 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/res/70QuteCom 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +#!/bin/bash + +. /usr/lib/pm-utils/functions + +suspend_qc() { + # Tell QuteCom that the system shuts down + #dbus-send --system \ + # --print-reply --reply-timeout=200 \ + # --dest=org.qutecom \ + # / \ + # org.qutecom.Wakeup.wakeup + true +} + +resume_qc() { + # Wake up QuteCom and make it do a new connection + dbus-send --system \ + / \ + org.qutecom.Wakeup.wakeup +} + +case "$1" in + hibernate|suspend) + suspend_qc + ;; + thaw|resume) + resume_qc + ;; + *) + ;; +esac + +exit $? Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom_16x16.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/res/qutecom_16x16.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom_32x32.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/res/qutecom_32x32.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom_48x48.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/res/qutecom_48x48.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom_64x64.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/res/qutecom_64x64.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom.desktop qutecom-2.2+dfsg1/qutecom/res/qutecom.desktop --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom.desktop 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/res/qutecom.desktop 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ +[Desktop Entry] +Name=QuteCom +Comment=Talk to people over the Internet and send instant messages over multiple protocols +Comment[fr]=Discuter avec des personnes sur Internet e envoie des messages instantanés en utilisant divers protocoles +Comment[it]=Comunicare con le persone via Internet e inviare messaggi istantanei multiprotocollo +GenericName=VoIP softphone and IM client +GenericName[fr]=Téléphone VoIP e client IM +GenericName[it]=Programma VoIP e client IM +Exec=qutecom +Icon=qutecom +StartupNotify=true +Terminal=false +Type=Application +Categories=Qt;Network;Telephony;VideoConference; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom-resume.sh qutecom-2.2+dfsg1/qutecom/res/qutecom-resume.sh --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/res/qutecom-resume.sh 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/res/qutecom-resume.sh 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +dbus-send --system / org.qutecom.Wakeup.wakeup \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/base.html qutecom-2.2+dfsg1/qutecom/resources/chat/base.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/base.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/base.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,43 @@ + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + 1.0 + CFBundleIdentifier + camflan.boxes.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Boxes + CFBundlePackageType + AdIM + DefaultBackgroundColor + ffffff + DefaultFontFamily + Helvetica Neue + DefaultFontSize + 12 + MessageViewVersion + 2 + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ + + + + +Message Style Mockup (tutorial) + + + + + + +
+ icon +
+
Camron Flanders
+
12:22
+
+ could you reply...I just need to test something + thanks + thanksa;sldkfjasl;dkfjasl;kdfjals;kdjfalksjdflaksdhfajkshdgklajshdgkasjdhgas;dlkgas;dlghasdl;ghasldkghals;kdhgalskdjgfalskjhfgals;kdhgasl;kdhglkh + +
+
+
+ +
+ icon +
+
Ashlyn Buck
+
+ yup +
+
+
+ +
+ icon +
+
Camron Flanders
+
+ thanks +
+
+
+
12.05p
+ +
+ icon +
+
Ashlyn Buck
+
+ no prob +
+
+
+ + +
10.08p
+
Ashlyn Buck has gone offline.
+ +
10.08p
+ +
+ user icon +
+
Camron Flanders
+
+ . +
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(106,181,241,1); + background: rgba(106,181,241,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(235,235,235,1); + background: rgba(235,235,235,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(170,181,192,1); + background: rgba(170,181,192,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(179,233,100,1); + background: rgba(179,233,100,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(245,166,34,1); + background: rgba(245,166,34,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(249,136,188,1); + background: rgba(249,136,188,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(209,168,231,1); + background: rgba(209,168,231,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.incoming .capsule { + border-color: rgba(247,224,0,1); + background: rgba(247,224,0,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(106,181,241,1); + background: rgba(106,181,241,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(235,235,235,1); + background: rgba(235,235,235,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(170,181,192,1); + background: rgba(170,181,192,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(179,233,100,1); + background: rgba(179,233,100,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(245,166,34,1); + background: rgba(245,166,34,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(249,136,188,1); + background: rgba(249,136,188,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(209,168,231,1); + background: rgba(209,168,231,1); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +.outgoing .capsule { + border-color: rgba(247,224,0,1); + background: rgba(247,224,0,1); +} + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,12 @@ +
+ user icon +
+
%sender%
+
%time%
+
+ %message% +
+
+
+
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +%message% +
Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,101 @@ +.message, .nextmessage { + position: relative; + display: block; + text-align: left; + word-wrap: break-word; +} + +div.message { + margin: 0px 0px 5px 0px; +} + +.nextmessage { + margin-top: 3px; + padding-top: 4px; + border-top-width: 1px; + border-top-style:groove; + border-top-color:rgba(0,0,0,.1); +} + +.buddyicon[background="Incoming/buddy_icon.png"], +.buddyicon[background="Outgoing/buddy_icon.png"] { + display: none; +} + +.buddyicon[background="Incoming/buddy_icon.png"] ~ .capsule, +.buddyicon[background="Outgoing/buddy_icon.png"] ~ .capsule { + margin-left: 3px; +} + +.buddyicon { + position: absolute; + width: 32px; + height: 32px; + top: 5px; + left: -2px; +} + +.capsule { + margin: 0px 4px 0px 36px; + border-width: 1px; + border-style: solid; + -webkit-border-radius:8px; + -webkit-box-shadow:0px 1px 2px rgba(129,129,129,.8); +} + +.context, .content { + padding: 5px 6px; +} + +.sender { + font-size: 90%; + padding: 1px 6px; + font-weight: bold; + line-height: 16px; + background: rgba(255, 255, 255, .8); + -webkit-border-top-left-radius:6px; + -webkit-border-top-right-radius:6px; +} + +.time, .status { + display: block; + position: relative; + color: #888; + font-size: 90%; + text-align: center; +} + +.time { + margin-top: 6px; + margin-bottom: 5px; +} + +.capsule_timestamp { + position: absolute; + right: 10px; + font-size: 90%; + top: 4px; + visibility: hidden; +} + +.message:hover .capsule_timestamp { + display:visible; + visibility: visible; +} + +.status { + margin-top: 11px; + margin-bottom: 11px; +} + +/* set defaults, otherwise it will be blank when "Normal" is chosen */ + +.incoming .capsule { + border-color: rgba(106,181,241,1); + background: rgba(106,181,241,1); +} + +.outgoing .capsule { + border-color: rgba(245,166,34,1); + background: rgba(245,166,34,1); +} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,12 @@ +
+ user icon +
+
%sender%
+
%time%
+
+ %message% +
+
+
+
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +%message% +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +
%time%
+
%message%
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/subtractSenderName.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/subtractSenderName.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/subtractSenderName.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/subtractSenderName.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.sender { + display:none; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/template.html qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/template.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/template.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/template.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,229 @@ + + + + + + + + + + + + + +%@ +
+
+%@ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/blue.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/clear.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/graphite.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/lime.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/orange.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/pink.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/purple.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/blue.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/clear.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/graphite.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/lime.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/orange.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/pink.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/purple.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url('../main.css'); +@import url('../Colors/i/yellow.css'); +@import url('../Colors/o/yellow.css'); +@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ + + + + + AllowTextColors + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Eclipse Adium Message Style + CFBundleIdentifier + com.adiumx.eclipse.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Eclipse + CFBundlePackageType + AdIM + DefaultBackgroundColor + ffffff + DefaultFontFamily + Lucida Grande + DefaultFontSize + 11 + DisplayNameForNoVariant + Camo Brown + MessageViewVersion + 2 + ShowsUserIcons + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbl25.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbl25.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/cbr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl25.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl25.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctl50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/000/ctr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/camo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/camo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/dots.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/dots.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/cbl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/cbl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/cbr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/cbr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctl50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctl50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/fff/ctr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/flower.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/flower.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/foam.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/foam.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/hot2.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/hot2.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/hot.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/hot.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/paper.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/paper.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/wood.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/images/wood.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +
+
+ +
+
+
%sender%
+
+ +
+
+
+
+
+
+
+
+
+%time% +%message% +
+
+
+
+
+
+
+
+
+
+
+ +
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +
+
+ +
+
+
%sender%
+
+ +
+
+
+
+
+
+
+
+
+%time% +%message% +
+
+
+
+
+
+
+
+
+
+
+ +
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+%time% +%message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+%time% +%message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(styles/000.css); body { background: url(images/camo.png); } .container.message.me { background: rgba(204,102,0,.5); } .container.message.me .text a { color: #cc9900; } .container.message.you { background: rgba(102,204,0,.5); } .container.message.you .text a { color: #99cc00; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #b2b24d; } .container.status { background: rgba(153,153,0,.5); } .container.status .text a { color: #b2b200; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Null.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Null.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Null.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Null.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/common.css); \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +
+
+ +
+
+
%sender%
+
+ +
+
+
+
+
+
+
+
+
+%time% +%message% +
+
+
+
+
+
+
+
+
+
+
+ +
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +
+
+ +
+
+
%sender%
+
+ +
+
+
+
+
+
+
+
+
+%time% +%message% +
+
+
+
+
+
+
+
+
+
+
+ +
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+%time% +%message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+%time% +%message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +
+
+ +
+
+
+
+
+
+
+
+
+%time% +%message% +
+
+
+
+
+
+
+
+
+
+ +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/000.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/000.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/000.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/000.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(common.css); /****** Container ******/ .container { text-shadow: #000 0 1px 1px; } .container .msgs .bot { background: url(../images/000/cbl33.png) no-repeat; } .container .msgs .bot .left { background: rgba(0, 0, 0, .33); } .container .msgs .bot .right > div { background: rgba(0, 0, 0, .5); } .container .msgs .bot .right { background: url(../images/000/cbr50.png) no-repeat right; } .container .msgs .post .text a { color: #ccc; /* dummy */ } .container .msgs .post .text a:active, .container .msgs .post .text a:before, .container .msgs .post .text a:after { color: #fff; } /****** Message ******/ .container.message .head .top { background: url(../images/000/ctl50.png) no-repeat; } .container.message .head .top > div { background: url(../images/000/ctr50.png) no-repeat right; } .container.message .head .top > div > div { background: rgba(0, 0, 0, .5); } .container.message .head .from { background: rgba(0, 0, 0, .5); color: #fff; text-shadow: rgba(0, 0, 0, 1) 0 0 3px; } .container.message .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.message .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.message .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.message .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.message .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.message .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.message .msgs .post .time { color: rgba(255, 255, 255, .75); } .container.message .msgs .post .text { color: rgba(255, 255, 255, 1); } .container.message .msgs .post + .post { border-color: rgba(255, 255, 255, .5); } /****** Context ******/ .container.context .head .top { background: url(../images/000/ctl50.png) no-repeat; } .container.context .head .top > div { background: url(../images/000/ctr50.png) no-repeat right; } .container.context .head .top > div > div { background: rgba(0, 0, 0, .5); } .container.context .head .from { background: rgba(0, 0, 0, .5); color: rgba(255, 255, 255, .75); text-shadow: rgba(0, 0, 0, .75) 0 0 3px; } .container.context .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.context .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.context .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.context .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.context .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.context .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.context .msgs .post .time { color: rgba(255, 255, 255, .5); } .container.context .msgs .post .text { color: rgba(255, 255, 255, .65); } .container.context .msgs .post + .post { border-color: rgba(255, 255, 255, .5); } /****** Status ******/ .container.status .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.status .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.status .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.status .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.status .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.status .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.status .msgs .post .time { color: rgba(255, 255, 255, .75); } .container.status .msgs .post .text { color: rgba(255, 255, 255, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/common.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/common.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/common.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/common.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +body { margin: 0; font-family: "Lucida Grande"; } .container > div { border-top: 1px solid rgba(255, 255, 255, .333); border-bottom: 1px solid rgba(0, 0, 0, .333); padding: 4px 6px; } .container.status .post .text { font-weight: bold; } .head { float: left; margin-left: 70px; } .head .top { padding-left: 8px; } .head .top > div { padding-right: 8px; } .head .top > div > div { height: 8px; } .head .from { padding-top: 1px; } .head .from > div { position: relative; z-index: 5; margin: -7px 7px 0; font-size: 12px; font-weight: bold; overflow: hidden; } .msgs { clear: both; } .msgs .top { padding-left: 8px; } .msgs .top .left { float: left; width: 62px; height: 8px; } .msgs .top .right { margin-left: 62px; padding-right: 8px; } .msgs .top .right > div { height: 8px; } .msgs .bot { padding-left: 8px; } .msgs .bot .left { float: left; width: 62px; height: 8px; } .msgs .bot .right { margin-left: 62px; padding-right: 8px; } .msgs .bot .right > div { height: 8px; } .msgs .mid .left { padding-left: 70px; } .msgs .mid .right { padding: 1px; } .msgs .mid .right > div { margin: -6px 2px; position: relative; z-index: 10; } .msgs .post .time { display: block; float: left; width: 65px; margin-left: -70px; font-size: 10px; text-align: center; overflow: hidden; } .msgs .post .text { display: block; font-size: 10px; overflow: hidden; } .msgs .post .text img { vertical-align: middle; } .msgs .post { clear: both; } .msgs .post + .post { margin-top: 2px; border-top-width: 1px; border-top-style: dotted; padding-top: 2px; } .msgs .post .text a:before { content: "<"; } .msgs .post .text a:after { content: ">"; } .msgs .post .text a { white-space: pre; text-decoration: none; } /* fix empty message fuckup */ .spacefuckup { display: block; clear: both; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/fff.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/fff.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/fff.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/styles/fff.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(common.css); /****** Container ******/ .container { text-shadow: #fff 0 1px 1px; } .container .msgs .bot { background: url(../images/fff/cbl33.png) no-repeat; } .container .msgs .bot .left { background: rgba(255, 255, 255, .33); } .container .msgs .bot .right > div { background: rgba(255, 255, 255, .5); } .container .msgs .bot .right { background: url(../images/fff/cbr50.png) no-repeat right; } .container .msgs .post .text a { color: #666; /* dummy */ } .container .msgs .post .text a:active, .container .msgs .post .text a:before, .container .msgs .post .text a:after { color: #000; } /****** Message ******/ .container.message .head .top { background: url(../images/fff/ctl50.png) no-repeat; } .container.message .head .top > div { background: url(../images/fff/ctr50.png) no-repeat right; } .container.message .head .top > div > div { background: rgba(255, 255, 255, .5); } .container.message .head .from { background: rgba(255, 255, 255, .5); color: #000; text-shadow: rgba(255, 255, 255, 1) 0 0 3px; } .container.message .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.message .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.message .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.message .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.message .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.message .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.message .msgs .post .time { color: rgba(0, 0, 0, .75); } .container.message .msgs .post .text { color: rgba(0, 0, 0, 1); } .container.message .msgs .post + .post { border-color: rgba(0, 0, 0, .5); } /****** Context ******/ .container.context .head .top { background: url(../images/fff/ctl50.png) no-repeat; } .container.context .head .top > div { background: url(../images/fff/ctr50.png) no-repeat right; } .container.context .head .top > div > div { background: rgba(255, 255, 255, .5); } .container.context .head .from { background: rgba(255, 255, 255, .5); color: rgba(0, 0, 0, .75); text-shadow: rgba(255, 255, 255, .75) 0 0 3px; } .container.context .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.context .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.context .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.context .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.context .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.context .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.context .msgs .post .time { color: rgba(0, 0, 0, .5); } .container.context .msgs .post .text { color: rgba(0, 0, 0, .75); } .container.context .msgs .post + .post { border-color: rgba(0, 0, 0, .5); } /****** Status ******/ .container.status .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.status .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.status .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.status .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.status .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.status .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.status .msgs .post .time { color: rgba(0, 0, 0, .75); } .container.status .msgs .post .text { color: rgba(0, 0, 0, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/000.css); body { background: url(../images/camo.png); } .container.message.you { background: rgba(204,102,0,.5); } .container.message.you .text a { color: #cc9900; } .container.message.me { background: rgba(102,204,0,.5); } .container.message.me .text a { color: #99cc00; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #b2b24d; } .container.status { background: rgba(153,153,0,.5); } .container.status .text a { color: #b2b200; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/dots.png); } .container.message.me { background: rgba(102, 102, 204, .5); } .container.message.me .text a { color: rgba(36, 48, 72, 1); } .container.message.you { background: rgba(102, 204, 102, .5); } .container.message.you .text a { color: rgba(36, 72, 48, 1); } .container.context { background: rgba(102, 102, 102, .5); } .container.context .text a { color: rgba(35, 61, 61, 1); } .container.status { background: rgba(102, 153, 153, .5); } .container.status .text a { color: rgba(35, 48, 48, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/dots.png); } .container.message.you { background: rgba(102, 102, 204, .5); } .container.message.you .text a { color: rgba(36, 48, 72, 1); } .container.message.me { background: rgba(102, 204, 102, .5); } .container.message.me .text a { color: rgba(36, 72, 48, 1); } .container.context { background: rgba(102, 102, 102, .5); } .container.context .text a { color: rgba(35, 61, 61, 1); } .container.status { background: rgba(102, 153, 153, .5); } .container.status .text a { color: rgba(35, 48, 48, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/flower.png); } .container.message.me { background: rgba(255,255,153,.5); } .container.message.me .text a { color: rgba(128, 115, 77, 1); } .container.message.you { background: rgba(255,153,153,.5); } .container.message.you .text a { color: rgba(128, 88, 77, 1); } .container.context { background: rgba(255,255,255,.5); } .container.context .text a { color: rgba(128, 115, 102, 1); } .container.status { background: rgba(255,204,153,.5); } .container.status .text a { color: rgba(128, 102, 77, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/flower.png); } .container.message.you { background: rgba(255,255,153,.5); } .container.message.you .text a { color: rgba(128, 115, 77, 1); } .container.message.me { background: rgba(255,153,153,.5); } .container.message.me .text a { color: rgba(128, 88, 77, 1); } .container.context { background: rgba(255,255,255,.5); } .container.context .text a { color: rgba(128, 115, 102, 1); } .container.status { background: rgba(255,204,153,.5); } .container.status .text a { color: rgba(128, 102, 77, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/000.css); body { background: url(../images/foam.png); } .container.message.me { background: rgba(68,102,204,.5); } .container.message.me .text a { color: #5577dd; } .container.message.you { background: rgba(34,34,34,.5); } .container.message.you .text a { color: #445588; } .container.context { background: rgba(128,128,128,.5); } .container.context .text a { color: #7384b7; } .container.status { background: rgba(51,68,119,.5); } .container.status .text a { color: #4c66b2; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/000.css); body { background: url(../images/foam.png); } .container.message.you { background: rgba(68,102,204,.5); } .container.message.you .text a { color: #5577dd; } .container.message.me { background: rgba(34,34,34,.5); } .container.message.me .text a { color: #445588; } .container.context { background: rgba(128,128,128,.5); } .container.context .text a { color: #7384b7; } .container.status { background: rgba(51,68,119,.5); } .container.status .text a { color: #4c66b2; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/paper.png); } .container.message.me { background: rgba(153,153,153,.5); } .container.message.you { background: rgba(255,255,255,.5); } .container.context { background: rgba(204,204,204,.5); } .container.status { background: rgba(204,204,204,.5); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/fff.css); body { background: url(../images/paper.png); } .container.message.you { background: rgba(153,153,153,.5); } .container.message.me { background: rgba(255,255,255,.5); } .container.context { background: rgba(204,204,204,.5); } .container.status { background: rgba(204,204,204,.5); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/000.css); body { background: url(../images/wood.png); } .container.message.me { background: rgba(119,17,17,.5); } .container.message.me .text a { color: #bb5d2a; } .container.message.you { background: rgba(187,153,68,.5); } .container.message.you .text a { color: #dda144; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #cca16f; } .container.status { background: rgba(136,85,34,.5); } .container.status .text a { color: #c37f33; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +@import url(../styles/000.css); body { background: url(../images/wood.png); } .container.message.you { background: rgba(119,17,17,.5); } .container.message.you .text a { color: #bb5d2a; } .container.message.me { background: rgba(187,153,68,.5); } .container.message.me .text a { color: #dda144; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #cca16f; } .container.status { background: rgba(136,85,34,.5); } .container.status .text a { color: #c37f33; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + GoneDark Message Style + CFBundleIdentifier + com.adiumx.gonedark.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Gone Dark + CFBundlePackageType + AdIM + DefaultFontFamily + Arial + DefaultFontSize + 11 + DefaultVariant + Cosmic + DisplayNameForNoVariant + Standard + MessageViewVersion + 4 + ShowsUserIcons + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,8 @@ + + \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundBarBlue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundBarBlue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundBarGreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundBarGreen.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundCosmic.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundCosmic.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundCrimson.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundCrimson.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundDelaware.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundDelaware.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundHeader.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundHeader.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/background.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/background.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundLava.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundLava.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundMutation.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundMutation.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundSteel.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundSteel.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUndersea.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUndersea.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCosmic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCosmic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCrimson.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCrimson.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageDelaware.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageDelaware.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageLava.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageLava.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageMutation.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageMutation.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImage.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImage.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageSteel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageSteel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageUndersea.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageUndersea.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/divider.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/divider.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/gloss.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/gloss.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/messageShadow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/messageShadow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/transGrey.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/images/transGrey.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ + +
+
%service%
+
%sender%
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ + +
+
%service%
+
%sender%
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+ +
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,158 @@ +body { + margin: 0; + padding: 0; + background: url(images/background.jpg) repeat-y center top #000 fixed; +} + +#header { + display: block; + height: 50px; + position: fixed; + top: 0; + width: 100%; + background: url(images/backgroundHeader.png) repeat-x top; + z-index: 100; +} + +#headerImage { + background: url(images/backgroundUserImage.png) no-repeat; + width: 32px; + height: 32px; + margin-left: 20px; + margin-top: 4px; + padding: 3px; + float: left; +} + +#headerChatStarted { + color: #ccc; + font: 10px "Trebuchet MS", TrebuchetMS; + float: left; + margin-left: 10px; + margin-top: 6px; +} + +#headerChatStarted h2 { + color: #86ce4c; + font-size: 19px; + font-weight: bold; + margin: 0; + padding: 0; +} + +#headerSpace { + height: 50px; +} + +.userName { + font: bold 15px "Trebuchet MS", TrebuchetMS; + margin-left: 20px; + margin-right: 20px; + margin-bottom: -3px; + /*text-shadow: 1px 0px 0px #000*/ + text-shadow: 0px -1px 5px #000; +} + +.service { + float: right; + font-size: 9px; + margin-right: 20px; + line-height: 15px; + color: #fff; + opacity: .4; + font-family: "Trebuchet MS", TrebuchetMS; +} + +.message1 .userName, .message1 .date { + color: #86ce4c; + +} + +.content { + border-top: 3px solid #86ce4c; + border-bottom: 1px solid #86ce4c; + color: #fff; + font-size: 11px; + line-height: 1.3em; + font-family: Arial, Helvetica, sans-serif; + background: url(images/transGrey.png); + word-wrap: break-word; +} + +.message1 a { + color: #b4fe2b; + text-decoration: underline; +} + +.message1 a:hover { + color: #f2fd0d; +} + +.gloss { + background: url(images/gloss.png) no-repeat center 4px; +} + +.contentText { + padding-top: 5px; + padding-bottom: 5px; + margin-right: 60px; + margin-left: 20px; + font-size: 11px; +} + +.divider { + background: url(images/divider.png) repeat-x center; + height: 2px; +} + +.shadow { + background: url(images/messageShadow.png) repeat-x top; + height: 9px; +} + +.date { + float: right; + font-size: 10px; + margin-right: 20px; + padding-top: 5px; + text-shadow: #000 1px 1px 0px; +} + +.message2 .userName, .message2 .date { + color: #42b6ff; +} + +.message2 a { + color: #42b6ff; + text-decoration: underline; +} + +.message2 a:hover { + color: #73ddfe; +} + +.message2 .content { + border-top: 3px solid #42b6ff; + border-bottom: 1px solid #42b6ff; +} + +.status { + color: #fff; + text-align: center; + margin-bottom: .3em; + opacity: .7; + font: bold 10px "Trebuchet MS", TrebuchetMS; +} + +#Chat { + overflow: hidden; + padding-top: 50px; + padding-bottom: 6px; + margin-bottom: 0px; +} + +.context { + opacity: .6; +} + +img.scaledToFitImage{ width:auto; } Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ + +
+
%service%
+
%sender%
+
+
+
%time%
+
%message%
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ + +
+
%service%
+
%sender%
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +
%message% (%time%)
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundCosmic.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date { + color: #ff57ab; +} + +.message2 .userName, .message2 .date { + color: #ccc; +} + +.content { + border-top: 3px solid #ff57ab; + border-bottom: 1px solid #ff57ab; +} + +.message2 .content { + border-top: 3px solid #ccc; + border-bottom: 1px solid #ccc; +} + + +#headerChatStarted h2 { + color: #ff57ab; +} + +#headerImage { + background: url(../images/backgroundUserImageCosmic.png) no-repeat; +} + +.message1 a { + color: #ff1387; +} + +.message1 a:hover { + color: #ff67d3; +} + +.message2 a { + color: #d5d5d5; +} + +.message2 a:hover { + color: #f0f0f0; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundCrimson.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date, #headerChatStarted h2 { + color: #e1000b; +} + +.message2 .userName, .message2 .date { + color: #b50000; +} + +.content { + border-top: 3px solid #e1000b; + border-bottom: 1px solid #e1000b; +} + +.message2 .content { + border-top: 3px solid #b50000; + border-bottom: 1px solid #b50000; +} + +#headerImage { + background: url(../images/backgroundUserImageCrimson.png) no-repeat; +} + +.message1 a { + color: #d3000a; +} + +.message1 a:hover { + color: #f4222c; +} + +.message2 a { + color: #d0000a; +} + +.message2 a:hover { + color: #f0151f; +} + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundDelaware.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date { + color: #b24573; +} + +.message2 .userName, .message2 .date { + color: #d2c599; +} + +.content { + border-top: 3px solid #b24573; + border-bottom: 1px solid #b24573; +} + +.message2 .content { + border-top: 3px solid #d2c599; + border-bottom: 1px solid #d2c599; +} + + +#headerChatStarted h2 { + color: #b24573; +} + +#headerImage { + background: url(../images/backgroundUserImageDelaware.png) no-repeat; +} + +.message1 a { + color: #e24d8a; +} + +.message1 a:hover { + color: #f27dac; +} + +.message2 a { + color: #ffedb3; +} + +.message2 a:hover { + color: #fff0c0; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundLava.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date { + color: #edb200; +} + +.message2 .userName, .message2 .date { + color: #da2c0b; +} + +.content { + border-top: 3px solid #edb200; + border-bottom: 1px solid #edb200; +} + +.message2 .content { + border-top: 3px solid #da2c0b; + border-bottom: 1px solid #da2c0b; +} + + +#headerChatStarted h2 { + color: #edb200; +} + +#headerImage { + background: url(../images/backgroundUserImageLava.png) no-repeat; +} + +.message1 a { + color: #ffc10f; +} + +.message1 a:hover { + color: #ffd665; +} + +.message2 a { + color: #ff3f1e; +} + +.message2 a:hover { + color: #ff5b31; +} + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundMutation.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date { + color: #b4df00; +} + +.message2 .userName, .message2 .date { + color: #e79d10; +} + +.content { + border-top: 3px solid #b4df00; + border-bottom: 1px solid #b4df00; +} + +.message2 .content { + border-top: 3px solid #e79d10; + border-bottom: 1px solid #e79d10; +} + + +#headerChatStarted h2 { + color: #b4df00; +} + +#headerImage { + background: url(../images/backgroundUserImageMutation.png) no-repeat; +} + +.message1 a { + color: #d9ff35; +} + +.message1 a:hover { + color: #eaff87; +} + +.message2 a { + color: #ffb022; +} + +.message2 a:hover { + color: #ffc863; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Cosmic.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Crimson.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Delaware Punch.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Lava Flow.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Mutation.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('../main.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Steel.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url('Undersea.css'); + +.gloss { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundSteel.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date, #headerChatStarted h2 { + color: #568aa8; +} + +.message2 .userName, .message2 .date { + color: #aac0cd; +} + +.content { + border-top: 3px solid #568aa8; + border-bottom: 1px solid #568aa8; +} + +.message2 .content { + border-top: 3px solid #aac0cd; + border-bottom: 1px solid #aac0cd; +} + +#headerImage { + background: url(../images/backgroundUserImageSteel.png) no-repeat; +} + +.message1 a { + color: #4d85a9; +} + +.message1 a:hover { + color: #7cadcc; +} + +.message2 a { + color: #b7cad6; +} + +.message2 a:hover { + color: #c5d6e1; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ +@import url('../main.css'); + +body { + background: url(../images/backgroundUndersea.jpg) repeat-y center top #000 fixed; +} + +.message1 .userName, .message1 .date { + color: #00a1ff; +} + +.message2 .userName, .message2 .date { + color: #7fadcd; +} + +.content { + border-top: 3px solid #00a1ff; + border-bottom: 1px solid #00a1ff; +} + +.message2 .content { + border-top: 3px solid #7fadcd; + border-bottom: 1px solid #7fadcd; +} + + +#headerChatStarted h2 { + color: #00a1ff; +} + +#headerImage { + background: url(../images/backgroundUserImageUndersea.png) no-repeat; +} + +.message1 a { + color: #2fb5ff; +} + +.message1 a:hover { + color: #66e7ff; +} + +.message2 a { + color: #a3d5f7; +} + +.message2 a:hover { + color: #cfecff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ + + + + + AllowTextColors + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Juice Adium Message Style + CFBundleIdentifier + com.adiumx.Juice.style + CFBundleInfoDictionaryVersion + 1.1 + CFBundleName + Juice + CFBundlePackageType + AdIM + DefaultFontFamily + Lucida Grande + DefaultFontSize + 10 + DisplayNameForNoVariant + Blueberry Oxygen - Positive + MessageViewVersion + 1 + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/defaults.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/defaults.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/defaults.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/defaults.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,13 @@ +#top_left {display: none;} +#top_right {display: none;} +#bottom_right {display: none;} +#bottom_left {display: none;} + +#topIMG {display: none;} +#rightIMG {display: none;} +#bottomIMG {display: none;} +#leftIMG {display: none;} + +#menu2 {display: none;} + +.service {display: none;} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + + + +X + +
 
+ + \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/back.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/back.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/trans.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/images/trans.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%time{%I:%M %p}%
%sender% says:

%message%

+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%time{%I:%M %p}%
%sender% said:

%message%

+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +

%message%

+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +

%message%

+
Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +@import url(defaults.css); + +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/back.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%time{%I:%M %p}%
%sender% says:

%message%

+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%time{%I:%M %p}%
%sender% said:

%message%

+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +

%message%

+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +

%message%

+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/sample.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/sample.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ + + + + + + + +
 
+ + +X + + +
+ +
+
Chris Egeberg :
5:36 PM

here's a long message that is just gonna go on for a while and crap like that.... WWWOOOOOOOOOOOOOOOOOOOOOOOO.

+
+ +
+
Courtney Wilkinson :
5:36 PM

In my next message I will type a link...

+
+
+ +
+
Chris Egeberg :
5:36 PM

Line 1

+

Line 2

+

Line 3

+

Line 4

+
+ +
+
Courtney Wilkinson :
5:36 PM

This is a message history message from your buddy.

+
+ +
+
Chris Egeberg :
5:36 PM

This is a message history message sent to your buddy.

+

and another old message

+
+ +
+
11:37 AM :

Buddy disconnected

+
+ +
+
Chris Egeberg :
5:36 PM

This is your first message after the history has been displayed.

+

You typed another message.

+
+ +
+
Courtney Wilkinson :
5:36 PM

Here is a message from your buddy

+
+ +
+
Chris Egeberg :
5:36 PM

here's a long message that is just gonna go on for a while and crap like that.... WWWOOOOOOOOOOOOOOOOOOOOOOOO.

+
+ +
+
Courtney Wilkinson :
5:36 PM

In my next message I will type a link...

+
+
+ +
+
Chris Egeberg :
5:36 PM

Line 1

+

Line 2

+

Line 3

+

Line 4

+
+ +
+
11:42 PM :

Buddy disconnected

+
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/showhide.js qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/showhide.js --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/showhide.js 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/showhide.js 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,10 @@ +function handleParent(parentId) +{ + myParent = document.getElementById("menu" + parentId) + + if (myParent.style.display=="none") { + myParent.style.display="block" + } else { + myParent.style.display="none" + } +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
+
%time% :

%message%

+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Template.html qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Template.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,134 @@ + + + + + + + + + + + + + +%@ +
+
+%@ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backblue.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backblue.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgrape.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgrape.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgrey.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backblue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backblue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backg.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backg.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgrape.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgrape.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgrey.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgrey.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblack.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblack.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblacksoft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblacksoft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundsoft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backgroundsoft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backlime.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backlime.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backstrawberry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backstrawberry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backtangerine.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/backtangerine.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Oxygen.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Oxygen.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Union.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Union.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Grape Gravity.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Grape Gravity.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Grape Mission.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Grape Mission.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Lime Horizon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Lime Horizon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Baby.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Baby.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Parabola.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Parabola.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Fusion.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Fusion.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Melt.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Melt.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/trans.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/images/trans.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backlime.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backstrawberry.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backstrawberry.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backtangerine.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} + +#Chat { padding-top: 50px; overflow: hidden } + +#menu1 { background: url("images/backtangerine.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } + +.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} + +.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } + +.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } + +.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } + +a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } +a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } + +.container { margin-bottom: 15px } + +.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } + +p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } + +.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} + +.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } + +.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } + +.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } + +.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} + +.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } + +.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } + +.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } + +.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } + +.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Minimal 2.0 + CFBundleIdentifier + com.adiumx.minimal_mod.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + minimal_mod + CFBundlePackageType + AdIM + DefaultFontFamily + Lucida Grande + DefaultFontSize + 10 + DefaultVariant + Black vs Red + MessageViewVersion + 4 + ShowsUserIcons + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ + \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/images/back_l+.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/images/back_l+.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,18 @@ +
+ + %time% + + + + +
+ + %sender% + + +
%message% +
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,18 @@ +
+ + %time% + + + + +
+ + %sender% + + +
%message% +
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+ + + +
+ + + + + %message% + +
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+ + + +
+ + + + +

%message%

+
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,223 @@ +/* +--------------------------------------------------------------------------- + PROJECT: Adium Message Style + +FILE NAME: minimal_mod.AdiumMessageStyle + + NAME: minimal_mod + [http://caenim.com/public/minimal_mod.AdiumMessageStyle.zip] + + DESIGNER: John Muhl [http://caenim.com/] + + CREATED: 2005.04.25 [first local version] + +REVISIONS: 1.0.2005.05.03 [first public version] + new image background image [back_l.png] + changed default font to Lucida Grande + removed all existing color variants + created 67 new color variants (lots contributed by amy b.) + removed consecutive message timestamp + changed sender name to ALL CAPS + changed all colors to "web safe" + increased user icons to 36x36 px + adjusted line height in messages + adjusted line height between sender and initial message + minor adjustments to text padding in messages + + 1.1.2005.09.18 + very (VERY!) minor changes to the line height & hyperlink decoration + corrected a few errors in the variants (fixes contributed by amy b.) + + 1.2.2005.10.04 + corrected zany user icon placement throughout: + fixed problem where user icons appeared diagonally + fixed vertical alignment problems with user icons + decreased user icon size to 24x24 px + removed forceable capitalization of user names + fixed vertical alignment problem in the status message + + 1.3.2005.11.18 + added service indicator to initial time stamp + lightened the dotted line between messages + removed all reference to specific typefaces; improves compatibility with Adium and user selected fonts + more minor changes to hyperlink decoration + updated: Black vs ... color variants + updated: Blue vs ... color variants + updated: Green vs ... color variants + updated: Grey vs ... color variants + updated: Orange vs ... color variants + updated: Pink vs ... color variants + updated: Purple vs ... color variants + updated: Red vs ... color variants + updated: White vs ... color variants + updated: Yellow vs ... color variants + added a "Conversation started at ... " header + + 1.4.2006.06.06 + fixed problem with six digit time stamps + removed a bunch of cruft; thanks to Catfish_Man for the catch + + TODO: wait for new issues to arise via users or personal use. + update for user with XtrasManager [currently does not work with message styles]. + hyperlink decoration tweaks [?]. + + BASED ON: Minimal Adium Message Style [default package 0.8 b12 version] + check http://www.adiumxtras.com/index.php?a=xtras&xtra_id=1576 for full credits +---------------------------------------------------------------------------*/ +body +{ + color: #333333; + background-color: #ffffff; + background-image: url("images/back_l.png"); + margin: 0; + background-repeat: repeat-y; + line-height: 1.4em; +} + +p +{ + margin: 0; + padding: 0; +} + +a { + border-bottom: 1px dashed; + text-decoration: none; } +a:hover{ + border-bottom: 1px solid; +} + +.convo_container +{ + width: 100%; + padding-bottom: 6px; +} + +.container +{ + padding-top: 4px; + border-top: 1px dotted #ccc; +} + +.container_next { padding-top: 2px; } + +.container, .container_next +{ + padding-left: 16px; + padding-right: 8px; + padding-bottom: 0px; + margin-left: 0px; + padding-bottom: 5px; +} + +.fromstatus +{ + float: left; + padding-right: 7px; + position: relative; + top: 2px; +} + +.next_label +{ + font-size: 16px; + font-family: Helvetica; + font-weight: normal; + position: relative; + top: 0px; + left: -12px; + text-align: right; + width: 10px; + float: left; + margin-right: -10px; +} + +.sender { text-align: left; } + +.sender, .fromstatus +{ + font-size: 11px; + font-family: Helvetica; + font-weight: bold; +} + +.sender, .next_label { overflow: hidden; } + +.time_initial +{ + color: #9F9F9F; + float: right; + text-align: right; + padding-left: 6px; + font-size: 9px; + font-family: Helvetica; +} + +.message { + overflow: auto; +} +.context_message { color: #999; } + +.message, .context_message +{ + width: auto; + text-align: left; +} + +.indent { text-indent: 12px; } +.clear { clear: both; } + +.buddyicon img +{ + float: left; + margin-top: 2px; + margin-right: 6px; + width: 24px; + height: 24px; + border-color: #CCCCCC; + border-width: 1px; +} + +.buddyicon img[src="Incoming/buddy_icon.png"], .buddyicon img[src="Outgoing/buddy_icon.png"] { display: none; } + +.placeholder { + margin-left: 30px; +} + +.placeholder[visible="Incoming/buddy_icon.png"], .placeholder[visible="Outgoing/buddy_icon.png"] { + margin-left: 0; +} + +.placeholder_next { + margin-left: 30px; +} + +.placeholder_next[visible="Incoming/buddy_icon.png"], .placeholder_next[visible="Outgoing/buddy_icon.png"] { + margin-left: 0; +} + +img +{ + vertical-align: middle; + top: -3px; +} + +#Chat { overflow: hidden; } + +img.scaledToFitImage{ width:auto; } + +#header{ + position: fixed; + top: 0px; + left: 0px; + right: 0px; + margin: 0; + padding: 5px; + overflow: auto; + color: white; + font-family: sans-serif; + text-align: center; + font-size: 10px; + background: rgba(0,0,0,.85); + z-index: 999; +} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,18 @@ +
+ + %time% + + + + +
+ + %sender% + + +
%message% +
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,18 @@ +
+ + %time% + + + + +
+ + %sender% + + +
%message% +
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+ + + +
+ + + + + %message% + +
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+ + + +
+ + + + +

%message%

+
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,10 @@ +
+ + %time% + + + %message% + + +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #0090ff; } +.outgoing { color: #333333; } +.status { color: #0090ff; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #0090ff; } +.outgoing_link a { color: #000000; } +.status_link a { color: #0090ff; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #333333; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #000000; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #333333; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #000000; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff7800; } +.outgoing { color: #333333; } +.status { color: #ff7800; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff7800; } +.outgoing_link a { color: #000000; } +.status_link a { color: #ff7800; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #ff3280; } .outgoing { color: #333333; } .status { color: #ff3280; } .greyed { color: #CCCCCC; } .incoming_link a { color: #ff3280; } .outgoing_link a { color: #000000; } .status_link a { color: #ff3280; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #333333; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #000000; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #0090ff; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #0090ff; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #0090ff; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #0090ff; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff7800; } +.outgoing { color: #0090ff; } +.status { color: #ff7800; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff7800; } +.outgoing_link a { color: #0090ff; } +.status_link a { color: #ff7800; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #0090ff; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #0090ff; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #6abb00; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #6abb00; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff7800; } +.outgoing { color: #6abb00; } +.status { color: #ff7800; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff7800; } +.outgoing_link a { color: #6abb00; } +.status_link a { color: #ff7800; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #6abb00; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #6abb00; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #707070; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #707070; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff7800; } +.outgoing { color: #707070; } +.status { color: #ff7800; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff7800; } +.outgoing_link a { color: #707070; } +.status_link a { color: #ff7800; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #707070; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #707070; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #ff7800; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff7800; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #ff7800; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #ff7800; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #ff7800; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #ff7800; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #0090ff; } +.outgoing { color: #ff3280; } +.status { color: #0090ff; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #0090ff; } +.outgoing_link a { color: #ff3280; } +.status_link a { color: #0090ff; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #ff3280; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff3280; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #ff3280; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #ff3280; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #ff7800; } .outgoing { color: #ff3280; } .status { color: #ff7800; } .greyed { color: #CCCCCC; } .incoming_link a { color: #ff7800; } .outgoing_link a { color: #ff3280; } .status_link a { color: #ff7800; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff0c00; } +.outgoing { color: #ff3280; } +.status { color: #ff0c00; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff0c00; } +.outgoing_link a { color: #ff3280; } +.status_link a { color: #ff0c00; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +.incoming { color: #6abb00; } .outgoing { color: #ff0c00; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff0c00; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #707070; } +.outgoing { color: #ff0c00; } +.status { color: #707070; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #707070; } +.outgoing_link a { color: #ff0c00; } +.status_link a { color: #707070; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.incoming { color: #ff7800; } +.outgoing { color: #ff0c00; } +.status { color: #ff7800; } +.greyed { color: #CCCCCC; } + +.incoming_link a { color: #ff7800; } +.outgoing_link a { color: #ff0c00; } +.status_link a { color: #ff7800; } +.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Mockie Adium Message Style + CFBundleIdentifier + com.adiumx.mockie.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Mockie + CFBundlePackageType + AdIM + MessageViewVersion + 4 + DefaultFontFamily + Lucida Grande + DefaultFontSize + 11 + DefaultVariant + Brown - Icon Left + ShowsUserIcons:Brown - Icon Hidden + + ShowsUserIcons:Indigo - Icon Hidden + + ShowsUserIcons:Orange - Icon Hidden + + ShowsUserIcons:Red - Icon Hidden + + DefaultBackgroundColor + eef3eb + DefaultBackgroundColor:Brown - Icon Alternate + eef3eb + DefaultBackgroundColor:Brown - Icon Hidden + eef3eb + DefaultBackgroundColor:Brown - Icon Right + eef3eb + DefaultBackgroundColor:Indigo - Icon Alternate + f8f0f0 + DefaultBackgroundColor:Indigo - Icon Hidden + f8f0f0 + DefaultBackgroundColor:Indigo - Icon Left + f8f0f0 + DefaultBackgroundColor:Indigo - Icon Right + f8f0f0 + DefaultBackgroundColor:Orange - Icon Alternate + f2fbee + DefaultBackgroundColor:Orange - Icon Hidden + f2fbee + DefaultBackgroundColor:Orange - Icon Left + f2fbee + DefaultBackgroundColor:Orange - Icon Right + f2fbee + DefaultBackgroundColor:Red - Icon Alternate + fff4f4 + DefaultBackgroundColor:Red - Icon Hidden + fff4f4 + DefaultBackgroundColor:Red - Icon Left + fff4f4 + DefaultBackgroundColor:Red - Icon Right + fff4f4 + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/blue/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/blue/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/blue/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/blue/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/brown/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/brown/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/brown/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/brown/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/context/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/context/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/context/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/context/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/green/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/green/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/green/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/green/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/indigo/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/indigo/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/indigo/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/indigo/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/maroon/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/maroon/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/maroon/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/maroon/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/olive/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/olive/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/olive/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/olive/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/orange/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/orange/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/orange/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/orange/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/red/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/red/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/red/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/images/red/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ +
+
+
+ %sender% +
+
%service%
+
+
%time%
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ +
+
+ +
+
+
+
+ %sender% +
+
%service%
+
+
%time%
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(styles/layout.css); +@import url(styles/basestyle.css); Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ +
+
+
+ %sender% +
+
%service%
+
+
%time%
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ +
+
+ +
+
+
+
+ %sender% +
+
%service%
+
+
%time%
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+
%message%
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/sample.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/sample.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,198 @@ + + + + + + + + + + + + + +
+
+
+ +
+
+
+
+ Colin the Great +
+
AIM
+
+
10:24:14

Testing context messages!

+
10:24:14

Not much

+
+
+
+
+
+ +
+
+
+
+ Jorge Salvador Caffarena (eevyl@mac.com) testing very long wassup +
+
AIM
+
+
10:24:14

more test

+
+
+
+
+ +
+
+
+ Colin the Great +
+
AIM
+
+
10:24:14

Ahoy!

+
+
+
+
+ Pepito has gone offline + + 10:23 + +
+
+
+
+ Colin has returned from idle + + 10:23 + +
+
+
+
+ +
+
+
+ Jorge Salvador Caffarena (eevyl@mac.com) testing very long wassup +
+
AIM
+
+
10:23:22

That is what happens when a long url is inserted, magic scroller

+
10:23:22

Not much http://www.apple.com/long/url/as/it/can/be/whatever/longer/than/anything/

+
+
+
+
+
+ +
+
+
+ Colin the Great +
+
AIM
+
+
10:23:22

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean quam lectus, tristique sit amet, luctus ut, euismod ut, velit. Quisque vulputate tortor nec justo. Suspendisse pede. Curabitur ac enim ac nunc porta bibendum. Ut vel dolor id orci tempus semper. Sed pretium enim eget nulla. Vestibulum mollis, tortor at accumsan luctus, dolor nulla aliquam elit, nec vehicula augue erat sit amet leo. Sed ornare est. Maecenas facilisis, erat quis varius vehicula, nibh lorem tempor quam, vel egestas massa wisi viverra orci. Etiam rutrum erat nec est. Donec facilisis, ligula nec venenatis interdum, mi wisi dapibus nulla, eu consectetuer libero justo id lectus. Sed vitae ipsum vitae lectus tincidunt malesuada. Nulla congue erat. Mauris auctor, neque ut pellentesque placerat, metus augue aliquam risus, vitae elementum diam ante a lectus. Etiam dignissim scelerisque lectus. Vivamus libero metus, ullamcorper sit amet, bibendum a, pretium quis, leo. Vivamus vel elit.

+
10:23:22

Not much

+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ %message% + %time% +
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/basestyle.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/basestyle.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/basestyle.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/basestyle.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,80 @@ +body { + top: -10px; +} + +.incoming { + color: black; +} + +.outgoing { + color: black; +} + +.sender { + color: white; + font-weight: bold; + font-size: 11px; +} + +.mask { + background-color: rgba(128,128,128,0.2); +} + +.protocol { + color: rgba(255,255,255,0.5); + font-weight: bold; + font-size: 11px; +} + +.time { + font-weight: normal; +} + +.status_container { + color: black; +} + +.bottomdivider { + border-bottom: 1px solid #BEBEBE; +} + +a, a:link { + text-decoration: none; +} + +.context .message { + background: rgba(255,255,255,0.6); + color: rgba(0,0,0,0.6); +} + +.context .time_consecutive, .context .time_initial { + color: rgba(0,0,0,0.6); +} + +.context .time_consecutive + div { + border-top: 1px solid rgba(0,0,0,0.2); +} + +.context .buddyicon { + background: rgba(0,0,0,0.2); +} + +.context .topleft { + background: no-repeat url(../images/context/topleft.png); +} + +.context .sender { + background: rgba(0,0,0,0.2); +} + +.context .protocol +{ + background: no-repeat url(../images/context/topright.png) right; +} + +.context + .actual { + border-top: 4px solid rgba(0,0,0,0.2); + padding-top: 5px; +} + +img.scaledToFitImage{ width:auto; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +body { + background-color: #eef3eb; +} + +.incoming .buddyicon { + background: rgba(178,125,75,0.2); +} + +.incoming .topleft { + background: url(../images/brown/topleft.png) no-repeat; +} + +.incoming .sender { + background: #b27d4b; +} + +.incoming .protocol +{ + background: no-repeat url(../images/brown/topright.png) right; +} + +.incoming .time_consecutive, .incoming .time_initial { + color: #b27d4b; +} + +.incoming .message +{ + background: rgba(226,219,203,0.9); +} + +.incoming .time_consecutive + div { + border-top: 1px solid rgba(178,125,75,0.4); +} + +.incoming a:hover +{ + background: #b27d4b; + color: white; +} + +.outgoing .buddyicon { + background: rgba(116,157,95,0.2); +} + +.outgoing .topleft { + background: no-repeat url(../images/olive/topleft.png); +} + +.outgoing .sender { + background: #749d5f; +} + +.outgoing .protocol +{ + background: no-repeat url(../images/olive/topright.png) right; +} + +.outgoing .time_consecutive, .outgoing .time_initial { + color: #749d5f; +} + +.outgoing .message { + background: rgba(213,225,207,0.9); +} + +.outgoing .time_consecutive + div { + border-top: 1px solid rgba(116,157,95,0.4); +} + +.outgoing a:hover { + background: #749d5f; + color: white; +} + +.status_container { + background-color: rgba(238,245,235,0.8); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +body { + background-color: #f8f0f0; +} + +#curtain { + background-color: rgba(255,255,255,0.8); +} + +.incoming .buddyicon { + background: rgba(75,93,178,0.2); +} + +.incoming .topleft { + background: no-repeat url(../images/indigo/topleft.png); +} + +.incoming .sender { + background: #4b5db2; +} + +.incoming .protocol +{ + background: no-repeat url(../images/indigo/topright.png) right; +} + +.incoming .time_consecutive, .incoming .time_initial { + color: #4b5db2; +} + +.incoming .message +{ + background: rgba(213,211,228,0.9); +} + +.incoming .time_consecutive + div { + border-top: 1px solid rgba(75,93,178,0.4); +} + +.incoming a:hover +{ + background: #4b5db2; + color: white; +} + +.outgoing .buddyicon { + background: rgba(177,74,75,0.2); +} + +.outgoing .topleft { + background: no-repeat url(../images/maroon/topleft.png); +} + +.outgoing .sender { + background: #b14a4b; +} + +.outgoing .protocol +{ + background: no-repeat url(../images/maroon/topright.png) right; +} + +.outgoing .time_consecutive, .outgoing .time_initial { + color: #b14a4b; +} + +.outgoing .message { + background: rgba(233,207,207,0.9); +} + +.outgoing .time_consecutive + div { + border-top: 1px solid rgba(177,74,75,0.4); +} + +.outgoing a:hover { + background: #b14a4b; + color: white; +} + +.status_container { + background: rgba(248,240,240,0.8); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +body { + background-color: #f2fbee; +} + +#curtain { + background-color: rgba(255,255,255,0.8); +} + +.incoming .buddyicon { + background: rgba(255,124,0,0.2); +} + +.incoming .topleft { + background: no-repeat url(../images/orange/topleft.png); +} + +.incoming .sender { + background: #FF7C00; +} + +.incoming .protocol +{ + background: no-repeat url(../images/orange/topright.png) right; +} + +.incoming .time_consecutive, .incoming .time_initial { + color: #FF7C00; +} + +.incoming .message { + background: rgba(244,225,190,0.9); +} + +.incoming .time_consecutive + div { + border-top: 1px solid rgba(255,124,0,0.4); +} + +.incoming a:hover { + background: #FF7C00; + color: white; +} + +.outgoing .buddyicon { + background: rgba(102,204,50,0.2); +} + +.outgoing .topleft { + background: no-repeat url(../images/green/topleft.png); +} + +.outgoing .sender { + background: #66CC32; +} + +.outgoing .protocol +{ + background: no-repeat url(../images/green/topright.png) right; +} + +.outgoing .time_consecutive, .outgoing .time_initial { + color: #66CC32; +} + +.outgoing .message +{ + background: rgba(213,241,200,0.9); +} + +.outgoing .time_consecutive + div { + border-top: 1px solid rgba(102,204,50,0.4); +} + +.outgoing a:hover +{ + background: #66CC32; + color: white; +} + +.status_container { + background-color: rgba(242,251,238,0.8); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +body { + background-color: #fff4f4; +} + +#curtain { + background-color: rgba(255,255,255,0.8); +} + +.incoming .buddyicon { + background: rgba(0,45,255,0.2); +} + +.incoming .topleft { + background: no-repeat url(../images/blue/topleft.png); +} + +.incoming .sender { + background: #002CFF; +} + +.incoming .protocol +{ + background: no-repeat url(../images/blue/topright.png) right; +} + +.incoming .time_consecutive, .incoming .time_initial { + color: #002cff; +} + +.incoming .message +{ + background: rgba(204,204,246,0.9); +} + +.incoming .time_consecutive + div { + border-top: 1px solid rgba(0,45,255,0.4); +} + +.incoming a:hover +{ + background: #002CFF; + color: white; +} + +.outgoing .buddyicon { + background: rgba(255,0,1,0.2); +} + +.outgoing .topleft { + background: no-repeat url(../images/red/topleft.png); +} + +.outgoing .sender { + background: #FF0001; +} + +.outgoing .protocol +{ + background: no-repeat url(../images/red/topright.png) right; +} + +.outgoing .time_consecutive, .outgoing .time_initial { + color: #FF0001; +} + +.outgoing .message { + background: rgba(255,195,195,0.9); +} + +.outgoing .time_consecutive + div { + border-top: 1px solid rgba(255,0,1,0.4); +} + +.outgoing a:hover { + background: #FF0001; + color: white; +} + +.status_container { + background: rgba(255,244,244,0.8); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,19 @@ +.incoming .buddyicon { + float: right; + margin: 0px 0px 5px 5px; +} + +.outgoing .buddyicon { + float: left; + margin: 0px 5px 5px 0px; +} + +.incoming .mask { + float: right; + margin-right: -37px; +} + +.outgoing .mask { + float: left; + margin-left: -37px; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +.buddyicon { + display: none; +} + +.mask { + display: none; +} + +p { + padding-right: 1px; +} + +.sender { + padding-right: 41px; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.buddyicon { + float: left; + margin: 0px 5px 5px 0px; +} + +.mask { + float: left; + margin-left: -37px; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/icon_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +.buddyicon { + float: right; + margin: 0px 0px 5px 5px; +} + +.mask { + float: right; + margin-right: -37px; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/layout.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/layout.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/layout.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/styles/layout.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,103 @@ +body { + margin: 0px 0px 0px 0px; +} + +#Chat { + overflow: hidden; + padding: 0px 10px 0px 10px; +} + +.incoming { + margin-top: 5px; + margin-bottom: 5px; + clear: both; +} + +.outgoing { + margin-top: 5px; + margin-bottom: 5px; + clear: both; +} + +.topleft { + height: 14px; + float: left; + width: 4px; +} + +.sender { + height: 14px; + margin-right: 4px; + overflow: hidden; + padding-right: 30px; +} + +.buddyicon { + display: block; + width: 32px; + height: 32px; + padding: 0px; + text-align: center; +} + +.mask { + width: 32px; + height: 32px; + padding: 0px; +} + +.protocol { + float: right; + position: relative; + height: 14px; + top: -14px; + padding-right: 4px; + right: 0px; + margin-bottom: -14px; + word-wrap: normal; +} + +.time_initial, .time_consecutive { + float: right; + padding-top: 2px; + padding-bottom: 2px; + padding-right: 4px; +} + +.message { + overflow: auto; + margin: 0; + padding: 0; +} +.message-next{ +} + +.text { + padding: 2px 4px; +} + +.status_container { + padding-left: 5px; + padding-right: 5px; + clear: both; + margin-bottom: 5px; +} + +.status_container + .status_container { + margin-top: -5px; + padding-top: 5px; +} + +.status_time { + float: right; + margin: 2px 2px 0 2px; +} + +.bottomdivider { + width: 100%; + position: fixed; + bottom: 0px; + margin: 0px; + padding: 0px; + left: 0px; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_brown_olive.css); +@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_brown_olive.css); +@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_brown_olive.css); +@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_brown_olive.css); +@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_indigo_maroon.css); +@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_indigo_maroon.css); +@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_indigo_maroon.css); +@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_indigo_maroon.css); +@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_orange_green.css); +@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_orange_green.css); +@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_orange_green.css); +@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_orange_green.css); +@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_red_blue.css); +@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_red_blue.css); +@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_red_blue.css); +@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url(../styles/colors_red_blue.css); +@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Modern Bubbling Adium Message Style + CFBundleIdentifier + com.adiumx.modern.bubbling.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Modern Bubbling + CFBundlePackageType + AdIM + DefaultBackgroundColor + FFFFFF + DefaultFontFamily + Helvetica + DefaultFontSize + 11 + DefaultVariant + Glass (Glass) + DisableCustomBackground + + MessageViewVersion + 3 + ShowsUserIcons + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,20 @@ + + \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/bg.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/bg.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/bg-white.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/bg-white.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/glass.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/glass.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/tiger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/tiger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/images/white/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,170 @@ +/** + * reflection.js v1.6 + * + * Contributors: Cow http://cow.neondragon.net + * Gfx http://www.jroller.com/page/gfx/ + * Sitharus http://www.sitharus.com + * Andreas Linde http://www.andreaslinde.de + * Tralala, coder @ http://www.vbulletin.org + * + * Freely distributable under MIT-style license. + */ + +/* From prototype.js */ +document.getElementsByClassName = function(className) { + var children = document.getElementsByTagName('*') || document.all; + var elements = new Array(); + + for (var i = 0; i < children.length; i++) { + var child = children[i]; + var classNames = child.className.split(' '); + for (var j = 0; j < classNames.length; j++) { + if (classNames[j] == className) { + elements.push(child); + break; + } + } + } + return elements; +} + +var Reflection = { + defaultHeight : 0.45, + defaultOpacity: 0.4, + + add: function(image, options) { + Reflection.remove(image); + + doptions = { "height" : Reflection.defaultHeight, "opacity" : Reflection.defaultOpacity } + if (options) { + for (var i in doptions) { + if (!options[i]) { + options[i] = doptions[i]; + } + } + } else { + options = doptions; + } + + try { + var d = document.createElement('div'); + var p = image; + + var classes = p.className.split(' '); + var newClasses = ''; + for (j=0;j= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); +} + +var intervall_scroll; + +function scrollToBottom() +{ + //document.body.scrollTop = (document.body.scrollHeight-window.innerHeight); + //return; + if ( intervall_scroll ) clearInterval( intervall_scroll ); + intervall_scroll = setInterval( function() { + var target_scroll = (document.body.scrollHeight-window.innerHeight); + var scrolldiff = target_scroll - document.body.scrollTop; + if ( document.body.scrollTop != target_scroll ) { + var saved_scroll = document.body.scrollTop; + document.body.scrollTop += scrolldiff / 5 + ( scrolldiff >= 0 ? (scrolldiff != 0 ) : -1 ); + } else { + saved_scroll = -1; + clearInterval( intervall_scroll ); + } + } , 10 ); + return; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,200 @@ + +/* + + Modern Bubbling v0.9.2 beta + an Adium Message Style + + Created by Jim Myhrberg (jim@zhuoqe.org). + http://zhuoqe.org/blog/category/modern-bubbling/ + +*/ + + +/* import default header style sheet */ +@import url("styles/_headers/_default.css"); + + +BODY { + background: #fff url("images/bg.jpg") bottom repeat-x; + color: #303030; + /*font-family: helvetica;*/ + /*font-size: 11px;*/ + margin-left: 10px; + margin-right: 10px; +} + +#Chat { + overflow: hidden; + padding-top: 5px; + padding-bottom: 12px; +} +.emoticon { + border-style: none; + position: relative; + margin: -3px 0px -5px 0px; +} + + +.history { + color: #b3b3b3; +} + +.status { + color: #c7c7c7; + font-family: helvetica, sans-serif; + font-size: 10px; + margin: 4px 0px 0px 0px; + text-align: center; + cursor: default; +} +.status .stime { + font-size: 9px; + /*visibility: hidden;*/ +} +/* +.status:hover .stime { + visibility: visible; +} +*/ + +/* @group message */ + +.message { + position: relative; + min-height: 42px; +} +.message .body { + padding: 9px 20px 22px 20px; + /*word-wrap: break-word;*/ + /*text-shadow: #ccc 0px 1px 1px;*/ + overflow: auto; +} +.message .time { + font-size: 9px; + position: absolute; + bottom: -2px; + text-align: center; + width: 100%; + color: #c7c7c7; + visibility: hidden; +} +.message:hover .time { + visibility: visible; +} + +.message .topleft { + background: url("images/modern/topleft.png") top left no-repeat; + width: 24px; + height: 14px; + position: absolute; + top: 0px; + left: 0px; + z-index: -1; +} +.message .top { + background: url("images/modern/top.png") top right repeat-x; + height: 14px; + position: absolute; + top: 0px; + right: 24px; + left: 24px; + z-index: -1; +} +.message .topright { + background: url("images/modern/topright.png") top right no-repeat; + width: 24px; + height: 16px; + position: absolute; + top: 0px; + right: 0px; + z-index: -1; +} +.message .left { + background: url("images/modern/left.png") top left repeat-y; + width: 24px; + position: absolute; + left: 0px; + top: 14px; + bottom: 29px; + z-index: -1; +} +.message .middle { + background: url("images/modern/middle.png") top left repeat; + position: absolute; + left: 24px; + right: 24px; + top: 14px; + bottom: 29px; + z-index: -1; +} +.message .right { + background: url("images/modern/right.png") top right repeat-y; + width: 24px; + position: absolute; + right: 0px; + top: 14px; + bottom: 29px; + z-index: -1; +} +.message .bottomleft { + background: url("images/modern/bottomleft.png") bottom left no-repeat; + width: 24px; + height: 29px; + position: absolute; + bottom: 0px; + left: 0px; + z-index: -1; +} +.message .bottom { + background: url("images/modern/bottom.png") bottom right repeat-x; + height: 29px; + position: absolute; + bottom: 0px; + right: 24px; + left: 24px; + z-index: -1; +} +.message .bottomright { + background: url("images/modern/bottomright.png") bottom right no-repeat; + width: 24px; + height: 29px; + position: absolute; + bottom: 0px; + right: 0px; + z-index: -1; +} + +.compact { + padding: 9px 20px 22px 20px; +} +.compact .cbody, .compact .cnbody { + position: relative; + word-wrap: break-word; +} +.compact .cnbody { + border-top: 1px dotted #ededed; + padding-top: 3px; + margin-top: 3px; +} +.compact .ctime { + font-size: 9px; + position: absolute; + width: 40px; + top: 3px; + color: #c7c7c7; + white-space: nowrap; + visibility: hidden; +} +.compact .cnbody .ctime { + top: 5px; +} +.compact .cbody:hover .ctime, .compact .cnbody:hover .ctime { + visibility: visible; +} + +/* @end */ + + + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ + +
+
+
%sender%
+
%service%
+
+
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%message%
+
%time%
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ + + +/* @group outgoing */ + +.outgoing { + float: right; + margin: 8px 0px 0px 38px; + position: relative; +} + +.outgoing .sender { + position: absolute; + right: 0px; + bottom: 11px; + width: 32px; + height: 32px; +} +.outgoing .icon { + +} +.outgoing .name { + font-size: 9px; + position: absolute; + right: 0px; + bottom: -14px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #6e6e6e; +} +.outgoing .sender:hover .name { + visibility: visible; +} +.outgoing .service { + font-size: 9px; + position: absolute; + right: 0px; + bottom: 34px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #c7c7c7; +} +.outgoing .sender:hover .service { + visibility: visible; +} +.outgoing .message { + margin-right: 38px; +} +.outgoing .message .bottomright { + background-image: url("../../images/modern/bottomright-arrow.png"); +} +.outgoing .compact .ctime { + left: -58px; + text-align: right; +} + +/* @end */ + + + +/* @group incoming */ + +.incoming { + float: left; + margin: 8px 38px 0px 0px; + position: relative; +} + +.incoming .sender { + position: absolute; + left: 0px; + bottom: 11px; + width: 32px; + height: 32px; +} +.incoming .icon { + +} +.incoming .name { + font-size: 9px; + position: absolute; + left: 0px; + bottom: -14px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #6e6e6e; +} +.incoming .sender:hover .name { + visibility: visible; +} +.incoming .service { + font-size: 9px; + position: absolute; + left: 0px; + bottom: 34px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #c7c7c7; +} +.incoming .sender:hover .service { + visibility: visible; +} +.incoming .message { + margin-left: 38px; +} +.incoming .message .bottomleft { + background-image: url("../../images/modern/bottomleft-arrow.png"); +} +.incoming .compact .ctime { + right: -58px; + text-align: left; +} + +/* @end */ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +/* import the glass header */ +@import url("../_headers/glass.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #586bb1; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-aqua/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #9ca0c0; +} +.incoming .message .topleft { + background: url("../../images/glass-aqua/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-aqua/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-aqua/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-aqua/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-aqua/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-aqua/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #586bb1; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-blue/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #9ca0c0; +} +.incoming .message .topleft { + background: url("../../images/glass-blue/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-blue/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-blue/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-blue/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-blue/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-blue/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #92c9c9; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #5beffc; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-cyan/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #a1e2e7; +} +.incoming .message .topleft { + background: url("../../images/glass-cyan/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-cyan/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-cyan/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-cyan/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-cyan/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-cyan/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group incoming */ + +.incoming .compact .cnbody { + border-top: 1px dotted #e5e5e5; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .topleft { + background: url("../../images/glass/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #757b8e; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-graphite/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c9cbd6; +} +.incoming .message .topleft { + background: url("../../images/glass-graphite/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-graphite/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-graphite/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-graphite/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-graphite/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-graphite/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #5db158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-green/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #89c582; +} +.incoming .message .topleft { + background: url("../../images/glass-green/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-green/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-green/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-green/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-green/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-green/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-green/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group incoming */ + +.incoming .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-grey/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .topleft { + background: url("../../images/glass-grey/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-grey/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-grey/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-grey/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-grey/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-grey/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #68c662; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-lime/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #aed18d; +} +.incoming .message .topleft { + background: url("../../images/glass-lime/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-lime/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-lime/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-lime/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-lime/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-lime/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b19158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #edc276; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-orange/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c6af7f; +} +.incoming .message .topleft { + background: url("../../images/glass-orange/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-orange/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-orange/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-orange/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-orange/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-orange/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b1799d; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #efa3d4; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-pink/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #dcc3dc; +} +.incoming .message .topleft { + background: url("../../images/glass-pink/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-pink/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-pink/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-pink/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-pink/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-pink/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #92569f; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #df83f2; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-purple/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c0a4c6; +} +.incoming .message .topleft { + background: url("../../images/glass-purple/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-purple/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-purple/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-purple/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-purple/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-purple/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #9f5657; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #f28385; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-red/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c5a3a4; +} +.incoming .message .topleft { + background: url("../../images/glass-red/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-red/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-red/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-red/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-red/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-red/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-red/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b19158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #ffef00; +} + +.incoming .message .bottomleft { + background-image: url("../../images/glass-yellow/bottomleft-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c6af7f; +} +.incoming .message .topleft { + background: url("../../images/glass-yellow/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-yellow/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-yellow/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-yellow/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-yellow/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-yellow/right.png") top right repeat-y; +} +/*.incoming .message .bottomleft { + background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; +}*/ +.incoming .message .bottom { + background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; +} +.incoming .message .bottomright { + background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #586bb1; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-aqua/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #9ca0c0; +} +.outgoing .message .topleft { + background: url("../../images/glass-aqua/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-aqua/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-aqua/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-aqua/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-aqua/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-aqua/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #586bb1; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-blue/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #9ca0c0; +} +.outgoing .message .topleft { + background: url("../../images/glass-blue/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-blue/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-blue/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-blue/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-blue/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-blue/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #92c9c9; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #5beffc; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-cyan/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #a1e2e7; +} +.outgoing .message .topleft { + background: url("../../images/glass-cyan/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-cyan/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-cyan/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-cyan/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-cyan/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-cyan/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group outgoing */ + +.outgoing .compact .cnbody { + border-top: 1px dotted #e5e5e5; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .topleft { + background: url("../../images/glass/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #757b8e; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-graphite/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c9cbd6; +} +.outgoing .message .topleft { + background: url("../../images/glass-graphite/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-graphite/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-graphite/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-graphite/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-graphite/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-graphite/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #5db158; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-green/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #89c582; +} +.outgoing .message .topleft { + background: url("../../images/glass-green/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-green/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-green/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-green/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-green/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-green/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-green/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group outgoing */ + +.outgoing .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-grey/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .topleft { + background: url("../../images/glass-grey/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-grey/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-grey/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-grey/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-grey/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-grey/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #68c662; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-lime/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #aed18d; +} +.outgoing .message .topleft { + background: url("../../images/glass-lime/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-lime/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-lime/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-lime/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-lime/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-lime/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b19158; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #edc276; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-orange/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c6af7f; +} +.outgoing .message .topleft { + background: url("../../images/glass-orange/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-orange/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-orange/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-orange/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-orange/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-orange/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b1799d; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #efa3d4; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-pink/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #dcc3dc; +} +.outgoing .message .topleft { + background: url("../../images/glass-pink/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-pink/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-pink/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-pink/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-pink/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-pink/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #92569f; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #df83f2; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-purple/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c0a4c6; +} +.outgoing .message .topleft { + background: url("../../images/glass-purple/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-purple/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-purple/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-purple/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-purple/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-purple/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #9f5657; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #f28385; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-red/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c5a3a4; +} +.outgoing .message .topleft { + background: url("../../images/glass-red/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-red/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-red/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-red/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-red/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-red/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-red/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b19158; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #ffef00; +} + +.outgoing .message .bottomright { + background-image: url("../../images/glass-yellow/bottomright-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c6af7f; +} +.outgoing .message .topleft { + background: url("../../images/glass-yellow/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-yellow/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-yellow/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-yellow/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-yellow/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-yellow/right.png") top right repeat-y; +} +.outgoing .message .bottomleft { + background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; +} +.outgoing .message .bottom { + background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; +} +/*.outgoing .message .bottomright { + background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ + +BODY { + background: #fff url("../../images/bg-white.jpg") top center repeat-y; +} + + +.message .topleft { + background: url("../../images/white/topleft.png") top left no-repeat; +} +.message .top { + background: url("../../images/white/top.png") top right repeat-x; +} +.message .topright { + background: url("../../images/white/topright.png") top right no-repeat; +} +.message .left { + background: url("../../images/white/left.png") top left repeat-y; +} +.message .middle { + background: url("../../images/white/middle.png") top left repeat; +} +.message .right { + background: url("../../images/white/right.png") top right repeat-y; +} +.message .bottomleft { + background: url("../../images/white/bottomleft.png") top left no-repeat; + height: 17px; + bottom: 12px; +} +.message .bottom { + background: url("../../images/white/bottom.png") top right repeat-x; + height: 17px; + bottom: 12px; +} +.message .bottomright { + background: url("../../images/white/bottomright.png") top right no-repeat; + height: 17px; + bottom: 12px; +} + + +.incoming .message .bottomleft { + background-image: url("../../images/white/bottomleft-arrow.png"); +} + +.outgoing .message .bottomright { + background-image: url("../../images/white/bottomright-arrow.png"); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ + +.message .topleft { + background: url("../../images/white/topleft.png") top left no-repeat; +} +.message .top { + background: url("../../images/white/top.png") top right repeat-x; +} +.message .topright { + background: url("../../images/white/topright.png") top right no-repeat; +} +.message .left { + background: url("../../images/white/left.png") top left repeat-y; +} +.message .middle { + background: url("../../images/white/middle.png") top left repeat; +} +.message .right { + background: url("../../images/white/right.png") top right repeat-y; +} +.message .bottomleft { + background: url("../../images/white/bottomleft.png") bottom left no-repeat; +} +.message .bottom { + background: url("../../images/white/bottom.png") bottom right repeat-x; +} +.message .bottomright { + background: url("../../images/white/bottomright.png") bottom right no-repeat; +} + + +.incoming .message .bottomleft { + background-image: url("../../images/white/bottomleft-arrow.png"); +} + +.outgoing .message .bottomright { + background-image: url("../../images/white/bottomright-arrow.png"); +} + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,79 @@ +/* @group header */ + +#header { + color: #FFF; + cursor: default; + font-family: helvetica, sans-serif; + overflow: hidden; + position: fixed; + top: 0px; + left: 0px; + z-index: 5; + width: 100%; + height: 49px; + text-shadow: #1f4971 0px 1px 2px; +} +#header_bar { + background: url("../../images/_headers/tiger.png") repeat-x top center; + width: 100%; + height: 49px; +} + +#header_bar .left { + font-size: 21px; + /*letter-spacing: 1px;*/ + position: fixed; + top: 8px; + left: 11px; +} +#header_bar .right { + font-size: 16px; + letter-spacing: 0px; + position: fixed; + top: 11px; + right: 10px; +} + + +/* @group toggle */ + +#toggle_hide { + cursor: pointer; + background: url("../../images/_headers/toggle-hide.png") no-repeat top left; + position: fixed; + top: 3px; + left: 3px; + width: 14px; + height: 10px; + visibility: hidden; + z-index: 6; +} + +#header:hover #toggle_hide { + visibility: visible; +} + +#header #toggle_hide:hover { + background-image: url("../../images/_headers/toggle-hide-hover.png"); +} + +#toggle_show { + cursor: pointer; + background: url("../../images/_headers/toggle-show.png") no-repeat top left; + position: fixed; + top: 3px; + left: 3px; + width: 14px; + height: 10px; + z-index: 6; +} + +#header #toggle_show:hover { + background-image: url("../../images/_headers/toggle-show-hover.png"); +} + +/* @end */ + + +/* @end */ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +/* @group header */ + +#header { + height: 40px; + text-shadow: #505050 0px 1px 2px; +} + +#header_bar { + background-image: url("../../images/_headers/glass.png"); + height: 40px; +} + +#header_bar .left { + font-size: 16px; + letter-spacing: 0px; + top: 6px; + left: 10px; +} + +#header_bar .right { + font-size: 14px; + letter-spacing: 0px; + top: 7px; + right: 10px; +} + +/* @end */ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ + + +/* @group outgoing */ + +.outgoing { + float: left; + margin: 8px 38px 0px 0px; + position: relative; +} + +.outgoing .sender { + position: absolute; + left: 0px; + bottom: 11px; + width: 32px; + height: 32px; +} +.outgoing .icon { + +} +.outgoing .name { + font-size: 9px; + position: absolute; + left: 0px; + bottom: -14px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #6e6e6e; +} +.outgoing .sender:hover .name { + visibility: visible; +} +.outgoing .service { + font-size: 9px; + position: absolute; + left: 0px; + bottom: 34px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #c7c7c7; +} +.outgoing .sender:hover .service { + visibility: visible; +} +.outgoing .message { + margin-left: 38px; +} +.outgoing .message .bottomleft { + background-image: url("../../images/modern/bottomleft-arrow.png"); +} +.outgoing .compact .ctime { + right: -58px; + text-align: left; +} + +/* @end */ + + + +/* @group incoming */ + +.incoming { + float: right; + margin: 8px 0px 0px 38px; + position: relative; +} + +.incoming .sender { + position: absolute; + right: 0px; + bottom: 11px; + width: 32px; + height: 32px; +} +.incoming .icon { + +} +.incoming .name { + font-size: 9px; + position: absolute; + right: 0px; + bottom: -14px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #6e6e6e; +} +.incoming .sender:hover .name { + visibility: visible; +} +.incoming .service { + font-size: 9px; + position: absolute; + right: 0px; + bottom: 34px; + min-width: 32px; + text-align: center; + visibility: hidden; + white-space: nowrap; + color: #c7c7c7; +} +.incoming .sender:hover .service { + visibility: visible; +} +.incoming .message { + margin-right: 38px; +} +.incoming .message .bottomright { + background-image: url("../../images/modern/bottomright-arrow.png"); +} +.incoming .compact .ctime { + left: -58px; + text-align: right; +} + +/* @end */ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +/* import the glass header */ +@import url("../_headers/glass.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #586bb1; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-aqua/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #9ca0c0; +} +.incoming .message .topleft { + background: url("../../images/glass-aqua/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-aqua/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-aqua/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-aqua/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-aqua/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-aqua/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #586bb1; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-blue/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #9ca0c0; +} +.incoming .message .topleft { + background: url("../../images/glass-blue/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-blue/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-blue/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-blue/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-blue/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-blue/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #92c9c9; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #5beffc; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-cyan/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #a1e2e7; +} +.incoming .message .topleft { + background: url("../../images/glass-cyan/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-cyan/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-cyan/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-cyan/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-cyan/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-cyan/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group incoming */ + +.incoming .compact .cnbody { + border-top: 1px dotted #e5e5e5; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .topleft { + background: url("../../images/glass/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #757b8e; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-graphite/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c9cbd6; +} +.incoming .message .topleft { + background: url("../../images/glass-graphite/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-graphite/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-graphite/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-graphite/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-graphite/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-graphite/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #5db158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-green/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #89c582; +} +.incoming .message .topleft { + background: url("../../images/glass-green/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-green/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-green/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-green/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-green/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-green/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-green/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group incoming */ + +.incoming .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-grey/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .topleft { + background: url("../../images/glass-grey/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-grey/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-grey/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-grey/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-grey/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-grey/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #68c662; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-lime/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #aed18d; +} +.incoming .message .topleft { + background: url("../../images/glass-lime/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-lime/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-lime/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-lime/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-lime/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-lime/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b19158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #edc276; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-orange/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c6af7f; +} +.incoming .message .topleft { + background: url("../../images/glass-orange/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-orange/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-orange/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-orange/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-orange/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-orange/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b1799d; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #efa3d4; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-pink/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #dcc3dc; +} +.incoming .message .topleft { + background: url("../../images/glass-pink/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-pink/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-pink/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-pink/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-pink/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-pink/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #92569f; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #df83f2; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-purple/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c0a4c6; +} +.incoming .message .topleft { + background: url("../../images/glass-purple/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-purple/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-purple/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-purple/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-purple/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-purple/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #9f5657; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #f28385; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-red/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c5a3a4; +} +.incoming .message .topleft { + background: url("../../images/glass-red/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-red/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-red/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-red/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-red/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-red/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-red/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group incoming */ + +.incoming .history { + color: #b19158; +} + +.incoming .compact .cnbody { + border-top: 1px dotted #ffef00; +} + +.incoming .message .bottomright { + background-image: url("../../images/glass-yellow/bottomright-arrow.png"); +} + +/* @group message */ + +.incoming .message .time { + color: #c6af7f; +} +.incoming .message .topleft { + background: url("../../images/glass-yellow/topleft.png") top left no-repeat; +} +.incoming .message .top { + background: url("../../images/glass-yellow/top.png") top right repeat-x; +} +.incoming .message .topright { + background: url("../../images/glass-yellow/topright.png") top right no-repeat; +} +.incoming .message .left { + background: url("../../images/glass-yellow/left.png") top left repeat-y; +} +.incoming .message .middle { + background: url("../../images/glass-yellow/middle.png") top left repeat; +} +.incoming .message .right { + background: url("../../images/glass-yellow/right.png") top right repeat-y; +} +.incoming .message .bottomleft { + background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; +} +.incoming .message .bottom { + background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; +} +/*.incoming .message .bottomright { + background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; +}*/ + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #586bb1; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-aqua/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #9ca0c0; +} +.outgoing .message .topleft { + background: url("../../images/glass-aqua/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-aqua/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-aqua/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-aqua/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-aqua/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-aqua/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #586bb1; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #8cb4ff; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-blue/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #9ca0c0; +} +.outgoing .message .topleft { + background: url("../../images/glass-blue/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-blue/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-blue/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-blue/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-blue/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-blue/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #92c9c9; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #5beffc; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-cyan/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #a1e2e7; +} +.outgoing .message .topleft { + background: url("../../images/glass-cyan/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-cyan/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-cyan/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-cyan/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-cyan/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-cyan/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group outgoing */ + +.outgoing .compact .cnbody { + border-top: 1px dotted #e5e5e5; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .topleft { + background: url("../../images/glass/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #757b8e; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-graphite/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c9cbd6; +} +.outgoing .message .topleft { + background: url("../../images/glass-graphite/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-graphite/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-graphite/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-graphite/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-graphite/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-graphite/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #5db158; +} +.outgoing .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-green/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #89c582; +} +.outgoing .message .topleft { + background: url("../../images/glass-green/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-green/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-green/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-green/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-green/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-green/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-green/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ + +/* @group outgoing */ + +.outgoing .compact .cnbody { + border-top: 1px dotted #d1d1d1; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-grey/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .topleft { + background: url("../../images/glass-grey/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-grey/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-grey/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-grey/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-grey/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-grey/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #68c662; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #77e770; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-lime/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #aed18d; +} +.outgoing .message .topleft { + background: url("../../images/glass-lime/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-lime/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-lime/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-lime/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-lime/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-lime/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b19158; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #edc276; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-orange/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c6af7f; +} +.outgoing .message .topleft { + background: url("../../images/glass-orange/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-orange/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-orange/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-orange/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-orange/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-orange/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b1799d; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #efa3d4; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-pink/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #dcc3dc; +} +.outgoing .message .topleft { + background: url("../../images/glass-pink/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-pink/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-pink/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-pink/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-pink/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-pink/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #92569f; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #df83f2; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-purple/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c0a4c6; +} +.outgoing .message .topleft { + background: url("../../images/glass-purple/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-purple/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-purple/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-purple/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-purple/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-purple/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #9f5657; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #f28385; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-red/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c5a3a4; +} +.outgoing .message .topleft { + background: url("../../images/glass-red/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-red/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-red/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-red/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-red/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-red/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-red/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ + +/* @group outgoing */ + +.outgoing .history { + color: #b19158; +} + +.outgoing .compact .cnbody { + border-top: 1px dotted #ffef00; +} + +.outgoing .message .bottomleft { + background-image: url("../../images/glass-yellow/bottomleft-arrow.png"); +} + +/* @group message */ + +.outgoing .message .time { + color: #c6af7f; +} +.outgoing .message .topleft { + background: url("../../images/glass-yellow/topleft.png") top left no-repeat; +} +.outgoing .message .top { + background: url("../../images/glass-yellow/top.png") top right repeat-x; +} +.outgoing .message .topright { + background: url("../../images/glass-yellow/topright.png") top right no-repeat; +} +.outgoing .message .left { + background: url("../../images/glass-yellow/left.png") top left repeat-y; +} +.outgoing .message .middle { + background: url("../../images/glass-yellow/middle.png") top left repeat; +} +.outgoing .message .right { + background: url("../../images/glass-yellow/right.png") top right repeat-y; +} +/*.outgoing .message .bottomleft { + background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; +}*/ +.outgoing .message .bottom { + background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; +} +.outgoing .message .bottomright { + background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; +} + +/* @end */ + +/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ + +BODY { + background: #fff url("../../images/bg-white.jpg") top center repeat-y; +} + + +.message .topleft { + background: url("../../images/white/topleft.png") top left no-repeat; +} +.message .top { + background: url("../../images/white/top.png") top right repeat-x; +} +.message .topright { + background: url("../../images/white/topright.png") top right no-repeat; +} +.message .left { + background: url("../../images/white/left.png") top left repeat-y; +} +.message .middle { + background: url("../../images/white/middle.png") top left repeat; +} +.message .right { + background: url("../../images/white/right.png") top right repeat-y; +} +.message .bottomleft { + background: url("../../images/white/bottomleft.png") top left no-repeat; + height: 17px; + bottom: 12px; +} +.message .bottom { + background: url("../../images/white/bottom.png") top right repeat-x; + height: 17px; + bottom: 12px; +} +.message .bottomright { + background: url("../../images/white/bottomright.png") top right no-repeat; + height: 17px; + bottom: 12px; +} + + +.incoming .message .bottomright { + background-image: url("../../images/white/bottomright-arrow.png"); +} + +.outgoing .message .bottomleft { + background-image: url("../../images/white/bottomleft-arrow.png"); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,37 @@ + +.message .topleft { + background: url("../../images/white/topleft.png") top left no-repeat; +} +.message .top { + background: url("../../images/white/top.png") top right repeat-x; +} +.message .topright { + background: url("../../images/white/topright.png") top right no-repeat; +} +.message .left { + background: url("../../images/white/left.png") top left repeat-y; +} +.message .middle { + background: url("../../images/white/middle.png") top left repeat; +} +.message .right { + background: url("../../images/white/right.png") top right repeat-y; +} +.message .bottomleft { + background: url("../../images/white/bottomleft.png") bottom left no-repeat; +} +.message .bottom { + background: url("../../images/white/bottom.png") bottom right repeat-x; +} +.message .bottomright { + background: url("../../images/white/bottomright.png") bottom right no-repeat; +} + + +.incoming .message .bottomright { + background-image: url("../../images/white/bottomright-arrow.png"); +} + +.outgoing .message .bottomleft { + background-image: url("../../images/white/bottomleft-arrow.png"); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-aqua.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-blue.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-cyan.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-glass.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-graphite.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-green.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-grey.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-lime.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-orange.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-pink.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-purple.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-red.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); +@import url("../styles/alternative/_glass.css"); + +@import url("../styles/alternative/glass-out-yellow.css"); +@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); + +@import url("../styles/alternative/_white-bubbling.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url("../main.css"); +@import url("../styles/alternative/_default.css"); + +@import url("../styles/alternative/_white.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-aqua.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-blue.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-cyan.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-glass.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-graphite.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-green.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-grey.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-lime.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-orange.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-pink.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-purple.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-red.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); +@import url("../styles/normal/_glass.css"); + +@import url("../styles/normal/glass-out-yellow.css"); +@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); + +@import url("../styles/normal/_white-bubbling.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +@import url("../main.css"); +@import url("../styles/normal/_default.css"); + +@import url("../styles/normal/_white.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + AllowTextColors + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Renkoo Message Style + CFBundleIdentifier + com.adiumx.renkoo.style + CFBundleInfoDictionaryVersion + 1.2 + CFBundleName + Renkoo + CFBundlePackageType + AdIM + DefaultBackgroundColor + ffffff + DefaultFontFamily + Lucida Grande + DefaultFontSize + 13 + MessageViewVersion + 4 + DisableCombineConsecutive + + + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +.outgoingItem .avatar { + float:right; +} + +.outgoingItem .indicator { + float:right; + position:relative; + left:11px; + top:8px; +} + +.myBubble { + margin-right:40px; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Demo.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Demo.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Demo.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Demo.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + +
+
+ + + + +
+ %sender% +
+
+ + + + + + + + + + + + + +
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +
Torrey @ 4:55 am
+
+
+ testing 1 +
%sender% @ %time%
+
+
+
+ testing 123 +
%sender% @ %time%
+
+
+
+ testing 123testing 123testing 123testing 123 + testing 123testing 123 +
%sender% @ %time%
+
+
+
+
+
+ +
+ + + + +
+ %sender% +
+
+ + + + + + + + + + + + + +
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquam sapien. Aliquam sed erat eu leo bibendum egestas. Praesent mauris. Quisque eget eros et neque scelerisque convallis. Phasellus orci. Pellentesque interdum tellus a erat. venenatis tristique. +
Torrey @ 4:55 am
+
+
+
+
+ +
+ + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
+
%chatName%
+
Conversation began %timeOpened%
+
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/alert.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/alert.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/blueIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/DummyContact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/DummyContact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/greenIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/redIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/silverBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/silverBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/silverCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/silverCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelHeading.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelHeading.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/steelIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/typing-left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/typing-left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/typing-right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/typing-right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowHeading.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowHeading.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowTL.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowTL.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowTR.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/images/yellowTR.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,10 @@ +
+
+
+ + %message% +
%time%
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ + %message% +
%time%
+
+ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,292 @@ +* { + word-wrap: break-word; + word-break:break-word; +} + +#header1 { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + margin: 0; + padding: 10px; + overflow: auto; + color: white; + font-family: Lucida Grande; + text-align: center; + font-size: 10px; + font-weight: regular; + background: rgba(0,0,0,.65); + z-index: 999; +} + +#heading { + position: fixed; + top: 0px; + left: 0px; + margin: 0; + padding: 5px; + font-weight: regular; + background-color:#fbfbed; + z-index: 999; + width:100%; + height:45px; + border-bottom:2px solid #d5d5d5; + background:url("images/steelHeading.jpg") repeat-x top left; + +} + +#heading .conversationIncomingIcon { + position:absolute; + left:5px; + top:5px; +} + +#heading .conversationIncomingIcon img { + width:48px; + height:48px; +} + +#heading .conversationWith { + position:relative; + left:60px; + margin:5px 0 0 0; + font: bold 16px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; + overflow:hide; +} + +#heading .conversationTime { + position:relative; + left:60px; + color:#6d6d6d; + font: bold 10px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; +} + +body { + margin-top: 65px; + background-color: white; + color: black; +} + +.status_container { + font: 10px Myriad, Lucida Grande, Arial; +} + + +body { +} + +.followUp { + clear:right; + height:1px; + font-size:1px; + line-height:1px; + margin:4px 0 4px 0; +} + +.chatItem { + opacity:0.96; +} + +.tableBubble { + width:100%; +} + +.tableBubble .tl { + height:8px; +} + +.tableBubble .tr { + width:8px; + height:8px; +} + +.message { + padding:0 1em 0 1.25em; + word-wrap: break-word; +} + +.tableBubble .message { + font-size:11px; +} + +.tableBubble .message img { + vertical-align:middle; +} + +.tableBubble .messageRight { + width:1px; +} + +.tableBubble .bl { + height:10px; +} + +.tableBubble .br { + width:8px; + height:10px; +} + +.tableBubble .timeStamp { + margin:2px; + margin-left:7px; + text-align:right; + float:right; +} + +.myBubble .indicator { + position:absolute; + top:8px; + left:0; + width:13px; + height:11px; +} + +.myBubble { + position:relative; + padding-left:10px; + margin-left:33px; + margin-right:10px; +} + +.chatItem .avatar { + width:26px; + height:26px; + float:left; +} + +/****** STatus ******/ + +.statusMessage { + opacity:0.8; + color:#676767; +} + +.statusMessage .myBubble .indicator { + background:url("images/steelIndicator.png") no-repeat top left; +} + +.statusMessage .tableBubble .tl { + background:url("images/steelCurves.png") no-repeat top left; +} + +.statusMessage .tableBubble .tr { + background:url("images/steelCurves.png") no-repeat top right; +} + +.statusMessage .tableBubble .head { + background:url("images/steelCurves.png") no-repeat -10px 0; +} + +.statusMessage .tableBubble .message { + background:url("images/steelBackground.png") repeat-y top left; +} + +.statusMessage .tableBubble .messageRight { + background:url("images/steelBackground.png") repeat-y top right; +} + +.statusMessage .tableBubble .bl { + background:url("images/steelCurves.png") no-repeat bottom left; +} + +.statusMessage .tableBubble .br { + background:url("images/steelCurves.png") no-repeat bottom right; +} + +.statusMessage .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + +.statusMessage .timeStamp { + color:#676767; +} + + +/*incoming */ + +.incomingItem .myBubble .indicator { + background:url("images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + +.incomingItem .timeStamp { + color:#bdb410; +} + +/* outgoing */ + + +.outgoingItem .myBubble .indicator { + background:url("images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + +.outgoingItem .timeStamp { + color:#9ecf35; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/noname.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/noname.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/noname.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/noname.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.name { + display:none; +} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ + %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +
+
+
+ %message% +
%time%
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +
+
+ %message% +
%time%
+
+ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/outgoing_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/outgoing_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +
+ + + + +
+
+ + + + + + + + + + + + + +
+ %message% +
%time%
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Template.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Template.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,436 @@ + + + + + + + + + + + + + + + + + + + + +%@ +
+
+%@ +
+ + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,90 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + +/*incoming */ + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,90 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,92 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,92 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Renkoo LICENSE.txt qutecom-2.2+dfsg1/qutecom/resources/chat/Renkoo LICENSE.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Renkoo LICENSE.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Renkoo LICENSE.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +The images, css and html is dual licensed under the BSD and AFL license. +The source files for the bubbles can be found at http://www.itorrey.com/adiumx/ + +The fading javascript is not covered in this license. The code is fadomatic and is covered under its own license as set by its author. + +BSD LICENSE +Copyright (c) 2007, Torrey Rice/Renkoo63 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Torrey Rice and Renkoo nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. + +Renkoo is a service mark of Renkoo, Inc. + +http://www.opensource.org/licenses/bsd-license.php + + + +# Larry Rosen has ceased to use or recommend any version # of the Academic Free License below version 2.1 The Academic Free License v. 2.1 This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work: Licensed under the Academic Free License version 2.1 1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following: a) to reproduce the Original Work in copies; b) to prepare derivative works ("Derivative Works") based upon the Original Work; c) to distribute copies of the Original Work and Derivative Works to the public; d) to perform the Original Work publicly; and e) to display the Original Work publicly. 2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works. 3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work. 4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license. 5) This section intentionally omitted. 6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. 7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer. 8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. 9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. 10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. 11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. 030003 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License. 12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. 13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. 14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner. \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + AllowTextColors + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Renkoo Naked Message Style + CFBundleIdentifier + com.adiumx.renkooNaked.style + CFBundleInfoDictionaryVersion + 1.2 + CFBundleName + Renkoo Naked + CFBundlePackageType + AdIM + DefaultBackgroundColor + ffffff + DefaultFontFamily + Lucida Grande + DefaultFontSize + 13 + MessageViewVersion + 4 + DisableCombineConsecutive + + + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +.outgoingItem .avatar { + float:right; +} + +.outgoingItem .indicator { + float:right; + position:relative; + left:11px; + top:8px; +} + +.myBubble { + margin-right:40px; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Demo.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Demo.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Demo.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Demo.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + + + + + + + +
+
+ + + + +
+ %sender% +
+
+ + + + + + + + + + + + + +
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. +
Torrey @ 4:55 am
+
+
+ testing 1 +
%sender% @ %time%
+
+
+
+ testing 123 +
%sender% @ %time%
+
+
+
+ testing 123testing 123testing 123testing 123 + testing 123testing 123 +
%sender% @ %time%
+
+
+
+
+
+ +
+ + + + +
+ %sender% +
+
+ + + + + + + + + + + + + +
+ Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquam sapien. Aliquam sed erat eu leo bibendum egestas. Praesent mauris. Quisque eget eros et neque scelerisque convallis. Phasellus orci. Pellentesque interdum tellus a erat. venenatis tristique. +
Torrey @ 4:55 am
+
+
+
+
+ +
+ + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
+
%chatName%
+
Conversation began %timeOpened%
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,10 @@ +
+
+
+ + %message% +
%time%
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ + %message% +
%time%
+
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,292 @@ +* { + word-wrap: break-word; + word-break:break-word; +} + +#header1 { + position: fixed; + top: 0px; + left: 0px; + right: 0px; + margin: 0; + padding: 10px; + overflow: auto; + color: white; + font-family: Lucida Grande; + text-align: center; + font-size: 10px; + font-weight: regular; + background: rgba(0,0,0,.65); + z-index: 999; +} + +#heading { + position: fixed; + top: 0px; + left: 0px; + margin: 0; + padding: 5px; + font-weight: regular; + background-color:#fbfbed; + z-index: 999; + width:100%; + height:45px; + border-bottom:2px solid #d5d5d5; + background:url("images/steelHeading.jpg") repeat-x top left; + +} + +#heading .conversationIncomingIcon { + position:absolute; + left:5px; + top:5px; +} + +#heading .conversationIncomingIcon img { + width:48px; + height:48px; +} + +#heading .conversationWith { + position:relative; + left:60px; + margin:5px 0 0 0; + font: bold 16px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; + overflow:hide; +} + +#heading .conversationTime { + position:relative; + left:60px; + color:#6d6d6d; + font: bold 10px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; +} + +body { + margin-top: 65px; + background-color: white; + color: black; +} + +.status_container { + font: 10px Myriad, Lucida Grande, Arial; +} + + +body { +} + +.followUp { + clear:right; + height:1px; + font-size:1px; + line-height:1px; + margin:4px 0 4px 0; +} + +.chatItem { + opacity:0.96; +} + +.tableBubble { + width:100%; +} + +.tableBubble .tl { + height:8px; +} + +.tableBubble .tr { + width:8px; + height:8px; +} + +.message { + padding:0 1em 0 1.25em; + word-wrap: break-word; +} + +.tableBubble .message { + font-size:11px; +} + +.tableBubble .message img { + vertical-align:middle; +} + +.tableBubble .messageRight { + width:1px; +} + +.tableBubble .bl { + height:10px; +} + +.tableBubble .br { + width:8px; + height:10px; +} + +.tableBubble .timeStamp { + margin:2px; + margin-left:7px; + text-align:right; + float:right; +} + +.myBubble .indicator { + position:absolute; + top:8px; + left:0; + width:13px; + height:11px; +} + +.myBubble { + position:relative; + padding-left:10px; + margin-left:33px; + margin-right:10px; +} + +.chatItem .avatar { + width:26px; + height:26px; + float:left; +} + +/****** STatus ******/ + +.statusMessage { + opacity:0.8; + color:#676767; +} + +.statusMessage .myBubble .indicator { + background:url("images/steelIndicator.png") no-repeat top left; +} + +.statusMessage .tableBubble .tl { + background:url("images/steelCurves.png") no-repeat top left; +} + +.statusMessage .tableBubble .tr { + background:url("images/steelCurves.png") no-repeat top right; +} + +.statusMessage .tableBubble .head { + background:url("images/steelCurves.png") no-repeat -10px 0; +} + +.statusMessage .tableBubble .message { + background:url("images/steelBackground.png") repeat-y top left; +} + +.statusMessage .tableBubble .messageRight { + background:url("images/steelBackground.png") repeat-y top right; +} + +.statusMessage .tableBubble .bl { + background:url("images/steelCurves.png") no-repeat bottom left; +} + +.statusMessage .tableBubble .br { + background:url("images/steelCurves.png") no-repeat bottom right; +} + +.statusMessage .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + +.statusMessage .timeStamp { + color:#676767; +} + + +/*incoming */ + +.incomingItem .myBubble .indicator { + background:url("images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + +.incomingItem .timeStamp { + color:#bdb410; +} + +/* outgoing */ + + +.outgoingItem .myBubble .indicator { + background:url("images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + +.outgoingItem .timeStamp { + color:#9ecf35; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/noname.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/noname.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/noname.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/noname.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.name { + display:none; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ + %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +
+ + + + +
+ +
+
+ + + + + + + + + + + + + +
+ + %message% +
%sender% @ %time%
+ +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,9 @@ +
+
+
+ %message% +
%time%
+
+ +
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +
+
+ %message% +
%time%
+
+ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +
+ + + + +
+
+ + + + + + + + + + + + + +
+ %message% +
%time%
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Template.html qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Template.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,233 @@ + + + + + + + + + + + + + + + + + + + +%@ +
+
+%@ +
+ + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,90 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + +/*incoming */ + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Blue on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#7fc5f8; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Blue on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Green on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#9ecf35; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Green on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,90 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Red on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#f88f8f; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Red on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,92 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Steel on Yellow.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,92 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#a9a9a9; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + + +/*incoming */ + +.incomingItem .timeStamp { + color:#bdb410; +} + +.incomingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Yellow Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Steel on Yellow.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Blue.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#7fc5f8; +} + +.incomingItem .myBubble .indicator { + background:url("../images/blueIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/blueCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/blueCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/blueCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/blueBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/blueBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/blueCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/blueCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ddf0fe; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Blue Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Blue.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Green.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#9ecf35; +} + + +.incomingItem .myBubble .indicator { + background:url("../images/greenIndicator.png") no-repeat top left; +} + +.incomingItem .timeStamp { + color:#9ecf35; +} + +.incomingItem .tableBubble .tl { + background:url("../images/greenCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/greenCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/greenCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/greenBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/greenBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/greenCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/greenCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#e2efc4; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Green Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Green.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Red.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#f88f8f; +} + +.incomingItem .myBubble .indicator { + background:url("../images/redIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/redCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/redCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/redCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/redBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/redBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/redCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/redCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ffdada; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Red Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Red.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +@import url("Yellow on Steel.css"); +@import url("../alternating.css"); + + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator2.png") no-repeat top left; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +@import url("../main.css"); + +/* outgoing */ + + +.outgoingItem .timeStamp { + color:#bdb410; +} + +.outgoingItem .myBubble .indicator { + background:url("../images/yellowIndicator.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tl { + background:url("../images/yellowCurves.png") no-repeat top left; +} + +.outgoingItem .tableBubble .tr { + background:url("../images/yellowCurves.png") no-repeat top right; +} + +.outgoingItem .tableBubble .head { + background:url("../images/yellowCurves.png") no-repeat -10px 0; +} + +.outgoingItem .tableBubble .message { + background:url("../images/yellowBackground.png") repeat-y top left; +} + +.outgoingItem .tableBubble .messageRight { + background:url("../images/yellowBackground.png") repeat-y top right; +} + +.outgoingItem .tableBubble .bl { + background:url("../images/yellowCurves.png") no-repeat bottom left; +} + +.outgoingItem .tableBubble .br { + background:url("../images/yellowCurves.png") no-repeat bottom right; +} + +.outgoingItem .followUp { + background-color:#f4f0a7; + border-bottom:1px solid #fff; +} + + +/*incoming */ + +.incomingItem .timeStamp { + color:#a9a9a9; +} + +.incomingItem .myBubble .indicator { + background:url("../images/steelIndicator.png") no-repeat top left; +} + +.incomingItem .tableBubble .tl { + background:url("../images/steelCurves.png") no-repeat top left; +} + +.incomingItem .tableBubble .tr { + background:url("../images/steelCurves.png") no-repeat top right; +} + +.incomingItem .tableBubble .head { + background:url("../images/steelCurves.png") no-repeat -10px 0; +} + +.incomingItem .tableBubble .message { + background:url("../images/steelBackground.png") repeat-y top left; +} + +.incomingItem .tableBubble .messageRight { + background:url("../images/steelBackground.png") repeat-y top right; +} + +.incomingItem .tableBubble .bl { + background:url("../images/steelCurves.png") no-repeat bottom left; +} + +.incomingItem .tableBubble .br { + background:url("../images/steelCurves.png") no-repeat bottom right; +} + +.incomingItem .followUp { + background-color:#ececec; + border-bottom:1px solid #fff; +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Steel Alternating.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +@import url("Yellow on Steel.css"); +@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,36 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Satin Adium Message Style + CFBundleIdentifier + com.adiumx.satin.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Satin + CFBundlePackageType + AdIM + DefaultBackgroundColor + ffffff + DefaultFontFamily + Helvetica + DefaultFontSize + 10 + DisplayNameForNoVariant + GBO-Left Icon + MessageViewVersion + 1 + ShowsUserIcons:GBO-No Icon + + ShowsUserIcons:GBP-No Icon + + ShowsUserIcons:RBP-No Icon + + ShowsUserIcons:Monochrome-No Icon + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,12 @@ +
+ \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/buddy_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/buddy_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_close_pressed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_close_pressed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_open_pressed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_button_open_pressed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg15degRot.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg15degRot.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg1.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg1.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_bot_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_bot_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_bot_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_bot_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_context_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/message/message_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_context_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_context_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/black/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/gray/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/orange/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/images/status/purple/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon_alt.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon_alt.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,17 @@ +
+
%sender%
%service%
+
+
+
+
+
+
+
+
+

%time%%message%

+
+
+
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,17 @@ +
+
%sender%
%service%
+
+
+
+
+
+
+
+
+

%time%%message%

+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
+

%time%%message%

+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
+

%time%%message%

+
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("styles/defaults.css"); +@import url("styles/layout_left.css"); +@import url("styles/green_blue_orange_left.css"); \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon_alt.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon_alt.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,17 @@ +
+
%sender%
%service%
+
+
+
+
+
+
+
+
+

%time%%message%

+
+
+
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,17 @@ +
+
%sender%
%service%
+
+
+
+
+
+
+
+
+

%time%%message%

+
+
+
+
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
+

%time%%message%

+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
+

%time%%message%

+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/showhide.js qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/showhide.js --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/showhide.js 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/showhide.js 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,166 @@ + closeBtn = new Image(); + closeBtn.src = "images/header/header_button_close.png"; + closePBtn = new Image(); + closePBtn.src = "images/header/header_button_close_pressed.png"; + openBtn = new Image(); + openBtn.src = "images/header/header_button_open.png"; + openPBtn = new Image(); + openPBtn.src = "images/header/header_button_open_pressed.png"; + + isDebug = true; + + //Do this on load + function initEvents() { + if(document.getElementById("heading") == null) { + document.getElementById("bodyNode").style.marginTop = "68px"; + } + + if(isDebug == false) { + document.getElementById("debug").style.display = "none"; + } + + alignChat(true); + } + + //Debugging function + function trace(msg) { + var node = document.createElement("div"); + var debugCon = document.getElementById("debug"); + node.innerHTML = msg; + debugCon.appendChild(node); + } + + + //Appending new content to the message view + function appendMessage(html) { + shouldScroll = nearBottom(); + + //Remove any existing insertion point + insert = document.getElementById("insert"); + if(insert) insert.parentNode.removeChild(insert); + + //Append the new message to the bottom of our chat block + chat = document.getElementById("Chat"); + range = document.createRange(); + range.selectNode(chat); + documentFragment = range.createContextualFragment(html); + chat.appendChild(documentFragment); + + alignChat(shouldScroll); + } + function appendNextMessage(html){ + shouldScroll = nearBottom(); + + //Locate the insertion point + insert = document.getElementById("insert"); + + //make new node + range = document.createRange(); + range.selectNode(insert.parentNode); + newNode = range.createContextualFragment(html); + + //swap + insert.parentNode.replaceChild(newNode,insert); + + alignChat(shouldScroll); + } + + //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired. + function nearBottom() { + return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); + } + function scrollToBottom() { + document.body.scrollTop = document.body.offsetHeight; + } + + //Dynamically exchange the active stylesheet + function setStylesheet( id, url ) { + var code = ""; + var range = document.createRange(); + var head = document.getElementsByTagName( "head" ).item(0); + range.selectNode( head ); + documentFragment = range.createContextualFragment( code ); + head.removeChild( document.getElementById( id ) ); + head.appendChild( documentFragment ); + } + + //Swap an image with its alt-tag text on click + document.onclick = imageCheck; + function imageCheck() { + node = event.target; + if(node.tagName == 'IMG' && node.alt && node.className!="avatar") { + a = document.createElement('a'); + a.setAttribute('onclick', 'imageSwap(this)'); + a.setAttribute('src', node.src); + a.className = node.className; + text = document.createTextNode(node.alt); + a.appendChild(text); + node.parentNode.replaceChild(a, node); + } + } + function imageSwap(node) { + shouldScroll = nearBottom(); + + //Swap the image/text + img = document.createElement('img'); + img.setAttribute('src', node.src); + img.className = node.className; + img.setAttribute('alt', node.firstChild.nodeValue); + node.parentNode.replaceChild(img, node); + + alignChat(shouldScroll); + } + + //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down + function alignChat(shouldScroll) { + + var windowHeight = window.innerHeight; + + if(windowHeight > 0) { + var contentElement = document.getElementById('Chat'); + var contentHeight = contentElement.offsetHeight; + if (windowHeight - contentHeight > 0) { + contentElement.style.position = 'relative'; + contentElement.style.top = '0px'; + } else { + contentElement.style.position = 'static'; + } + } + + if(shouldScroll) scrollToBottom(); + } + + function toggleParent(parentId) { + myParent = document.getElementById(parentId); + toggleBtn = document.images["togglebutton"]; + if (myParent.style.display=="none") { + myParent.style.display="block"; + toggleBtn.src = closeBtn.src; + document.getElementById("bodyNode").style.marginTop = "68px"; + } else { + myParent.style.display="none"; + toggleBtn.src = openBtn.src; + document.getElementById("bodyNode").style.marginTop = "5px"; + } + alignChat(shouldScroll); + return true; + } + + function buttonPressed(parentId) { + myParent = document.getElementById(parentId); + me = event.target; + if (myParent.style.display=="none") { + me.src = openPBtn.src; + } else { + me.src = closePBtn.src; + } + return true; + } + + function windowDidResize() { + alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs + } + + window.onresize = windowDidResize; \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%message%
+
%time%
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/defaults.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/defaults.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/defaults.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/defaults.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +body {margin: 10px 15px 10px 15px;} + +p {margin: 0px;overflow: hidden;} + +.spacer {clear: both;} + +.nameheader { + font-family: "Helvetica" sans-serif; + font-size: 11px; + font-weight: bold; + font-style: normal; + opacity: 1.0; + #border: 1px solid #999999; + } +.name { + #border: 1px solid #999999; + } +.protocol { + #border: 1px solid #999999; + } + +.message { + font-size: 10px; + color: #454545; + text-shadow: 0px 1px 0px rgba(255,255,255,0.9); + } +.messagetime { + font-family: "Helvetica" sans-serif; + font-size: 9px; + color: #999999; + float: right; + padding-top: 2px; + vertical-align: baseline; + } +.messagetime.consecutive { + padding-left: 11px; + } + +.status { + font-family: "Helvetica" sans-serif; + font-size: 9px; + font-weight: bold; + color: rgba(255,255,255,1.0); + #border: 1px solid #999999; + } +.statusmessage { + text-align: left; + #border: 1px solid #999999; + } +.statustime { + text-align: right; + #border: 1px solid #999999; + } + +.nextmessageline { + border-bottom: 1px dotted #CCCCCC; + height: 1px; + margin-top: 2px; + margin-bottom: 2px; + } + +#chat { + overflow: hidden; + margin-bottom: 10px; + } + +#header { + display: block; + height: 69px; + position: fixed; + top: 0; + width: 100%; + z-index: 100; + margin-left: -15px; + } +#headerFill { + background: url("../images/header/header_fill.png") repeat-x top; + #position: relative; + width: "100%"; + height: 59px; + margin-left: 82px; + margin-right: 82px; + } +#headerLeft { + background: url("../images/header/header_left.png") no-repeat; + position: absolute; + top: 0; + left: 0; + width: 82px; + height: 59px; + float: left; + #display: block; + } +#headerRight { + background: url("../images/header/header_right.png") no-repeat; + position: absolute; + top: 0; + right: 0; + width: 82px; + height: 59px; + float: right; + #display: block; + } +#headerImage { + background: url("../images/header/header_sender_bg.png") no-repeat; + position: relative; + #-webkit-transform:rotate(14deg); + width: 46px; + height: 46px; + margin-left: 14px; + margin-top: 4px; + padding: 3px 5px 7px 6px; + float: left; + z-index: 200; + } +#headerChatWho { + color: #787878; + font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; + position: relative; + float: left; + margin-left: 5px; + margin-top: 8px; + text-shadow: 0px 1px 0px rgba(255,255,255,1.9); + z-index: 200; + } +#headerChatWho h2 { + color: #676767; + font-size: 24px; + font-weight: 100; + margin-top: -2px; + padding: 0; + } +#headerChatStarted { + color: #787878; + font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; + position: absolute; + float: right; + right: 0px; + margin-right: 28px; + margin-top: 35px; + text-shadow: 0px 1px 0px rgba(255,255,255,1.9); + z-index: 200; + } +.togglebutton { + visibility: visible; + padding: 0px; + position: fixed; + z-index: 200; + top: 0; + right: 0; + } + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/orange/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/orange/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/orange/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/orange/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/orange/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/orange/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } + +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/orange/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/orange/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/orange/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/orange/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/orange/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/orange/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } + +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(84,155,38,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(84,155,38,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; + color: rgba(84,155,38,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; + color: rgba(84,155,38,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/header.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/header.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/header.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/header.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,87 @@ +// This file is not currently referenced. + +#header { + display: block; + height: 69px; + position: fixed; + top: 0; + width: 100%; + z-index: 100; + margin-left: -15px; + } +#headerFill { + background: url("../images/header/header_fill.png") repeat-x top; + #position: relative; + width: "100%"; + height: 59px; + margin-left: 82px; + margin-right: 82px; + } +#headerLeft { + background: url("../images/header/header_left.png") no-repeat; + position: absolute; + top: 0; + left: 0; + width: 82px; + height: 59px; + float: left; + #display: block; + } +#headerRight { + background: url("../images/header/header_right.png") no-repeat; + position: absolute; + top: 0; + right: 0; + width: 82px; + height: 59px; + float: right; + #display: block; + } +#headerImage { + background: url("../images/header/header_sender_bg.png") no-repeat; + position: relative; + #-webkit-transform:rotate(14deg); + width: 46px; + height: 46px; + margin-left: 14px; + margin-top: 4px; + padding: 3px 5px 7px 6px; + float: left; + z-index: 200; + } +#headerChatWho { + color: #787878; + font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; + position: relative; + float: left; + margin-left: 5px; + margin-top: 8px; + text-shadow: 0px 1px 0px rgba(255,255,255,1.9); + z-index: 200; + } +#headerChatWho h2 { + color: #676767; + font-size: 24px; + font-weight: 100; + margin-top: -2px; + padding: 0; + } +#headerChatStarted { + color: #787878; + font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; + position: absolute; + float: right; + right: 0px; + margin-right: 28px; + margin-top: 35px; + text-shadow: 0px 1px 0px rgba(255,255,255,1.9); + z-index: 200; + } +.togglebutton { + visibility: visible; + padding: 0px; + position: fixed; + z-index: 200; + top: 0; + right: 0; + } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_all.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_all.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_all.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_all.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +.in {margin-bottom: 0px;} +.out {margin-bottom: 0px;} + +.nameheader { + position: relative; + height: 25px; + top: 0px; + padding: 0px 0px 0px 0px; + } +.name { + position: relative; + height: 25px; + top: 0px; + text-overflow: ellipsis; + overflow: hidden; + } +.protocol { + position: absolute; + height: 18px; + top: 0px; + } +.message { + margin-left: 0px; + padding: 0px 11px 12px 0px; + } +.messagetop { + position: relative; + height: 12px; + top: -8px; + padding: 0px 0px 0px 0px; + margin: 0px 12px 0px 12px; + } +.messagetopleft { + position: relative; + float: left; + height: 12px; + top: 0px; + left: -12px; + padding: 0px 12px 0px 0px; + margin: 0px -13px 0px 0px; + } +.messagetopright { + position: relative; + float: right; + height: 12px; + top: 0px; + right: -12px; + padding: 0px 0px 0px 12px; + margin: 0px 0px 0px -13px; + } +.messagetextcontainer { + position: relative; + margin: -8px 0px 0px 0px; + padding: 0px 0px 0px 12px; + } +.status { + position: relative; + height: 23px; + top: 0px; + padding: 0px 30px 0px 30px; + margin: 0px 30px 0px 30px; + } +.statusmessage { + position: relative; + height: 17px; + top: 0px; + left: 0px; + padding: 5px 0px 0px 12px; + margin: 0px 0px 6px -60px; + text-overflow: ellipsis; + overflow: hidden; + } +.statustime { + position: absolute; + float: right; + height: 17px; + top: 0px; + right: 0px; + padding: 5px 12px 0px 0px; + margin: 0px -30px 0px 0px; + } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ +@import url("layout_all.css"); + +.out .nameheader { + margin: 0px 77px 6px 25px; + } +.in .nameheader { + margin: 0px 24px 6px 78px; + } +.out .name { + left: 0px; + padding: 4px 0px 0px 12px; + margin: 0px 0px 0px -25px; + } +.in .name { + float: right; + right: 0px; + padding: 4px 12px 0px 0px; + margin: 0px -25px 0px 0px; + } +.out .protocol { + float: right; + right: 0px; + padding: 5px 12px 1px 66px; + margin: 0px -78px -2px 0px; + } +.in .protocol { + left: 0px; + padding: 5px 66px 1px 12px; + margin: 0px 0px -2px -78px; + } +.messagecontainer { + padding: 0px 0px 0px 0px; + } +.out .messagecontainer { + margin: 0px 0px 0px 48px; + } +.in .messagecontainer { + margin: 0px 48px 0px 0px; + } +.buddyicon { + position: relative; + top: -6px; + z-index: 4; + } +.buddyicon img { + height: 32px; + width: 32px; + z-index: 3; + } +.junkIcon { + #background: url("../images/buddy_background.png") top left no-repeat; + #height: 40px; + #width: 40px; + #padding: 2px 0px 0px 4px; + #border: 1px solid #999999; + } +.junkIcon img { + #margin-top: 2px; + #margin-left: 4px; + } +.out .buddyicon { + float: left; + margin-left: 10px; + margin-right: 0px; + margin-bottom: 0px; + margin-top: 0px; + } +.in .buddyicon { + float: right; + margin-left: 0px; + margin-bottom: 0px; + margin-top: 0px; + margin-right: 10px; + } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ +@import url("layout_all.css"); + +.in .nameheader { + margin: 0px 77px 6px 25px; + } +.out .nameheader { + margin: 0px 24px 6px 78px; + } +.in .name { + left: 0px; + padding: 4px 0px 0px 12px; + margin: 0px 0px 0px -25px; + } +.out .name { + float: right; + right: 0px; + padding: 4px 12px 0px 0px; + margin: 0px -25px 0px 0px; + } +.in .protocol { + float: right; + right: 0px; + padding: 5px 12px 1px 66px; + margin: 0px -78px -2px 0px; + } +.out .protocol { + left: 0px; + padding: 5px 66px 1px 12px; + margin: 0px 0px -2px -78px; + } +.messagecontainer { + padding: 0px 0px 0px 0px; + } +.in .messagecontainer { + margin: 0px 0px 0px 48px; + } +.out .messagecontainer { + margin: 0px 48px 0px 0px; + } +.buddyicon { + position: relative; + top: -6px; + #background: url("../images/buddy_background.png") top left no-repeat; + #height: 40px; + #width: 40px; + z-index: 4; + #padding: 2px 0px 0px 4px; + #border: 1px solid #999999; + } +.buddyicon img { + height: 32px; + width: 32px; + #margin-top: 2px; + #margin-left: 4px; + z-index: 3; + } +.in .buddyicon { + float: left; + margin-left: 10px; + margin-right: 0px; + margin-bottom: 0px; + margin-top: 0px; + } +.out .buddyicon { + float: right; + margin-left: 0px; + margin-bottom: 0px; + margin-top: 0px; + margin-right: 10px; + } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ +@import url("layout_all.css"); + +.nameheader { + margin: 0px 77px 6px 25px; + } +.name { + left: 0px; + padding: 4px 0px 0px 12px; + margin: 0px 0px 0px -25px; + } +.protocol { + float: right; + right: 0px; + padding: 5px 12px 1px 66px; + margin: 0px -78px -2px 0px; + } + +.messagecontainer { + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 0px; + } +.buddyicon {display: none;} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +@import url("layout_all.css"); + +.nameheader { + margin: 0px 77px 6px 25px; + } +.name { + left: 0px; + padding: 4px 0px 0px 12px; + margin: 0px 0px 0px -25px; + } +.protocol { + float: right; + right: 0px; + padding: 5px 12px 1px 50px; + margin: 0px -78px 0px 0px; + } +.messagecontainer { + padding: 0px 0px 0px 0px; + margin: 0px 0px 0px 48px; + } +.buddyicon img { + height: 32px; + width: 32px; + z-index: 3; + } +.buddyicon { + position: relative; + top: -6px; + z-index: 4; + float: left; + margin-left: 10px; + margin-right: 0px; + margin-bottom: 0px; + margin-top: 0px; + } +.junkIcon { + #background: url("../images/buddy_background.png") top left no-repeat; + #height: 40px; + #width: 40px; + #padding: 2px 0px 0px 4px; + #border: 1px solid #999999; + } +.junkIcon img { + #margin-top: 2px; + #margin-left: 4px; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/layout_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +@import url("layout_all.css"); + +.nameheader { + margin: 0px 24px 6px 78px; + } +.name { + float: right; + right: 0px; + padding: 4px 12px 0px 0px; + margin: 0px -25px 0px 0px; + } +.protocol { + left: 0px; + padding: 5px 66px 1px 12px; + margin: 0px 0px -2px -78px; + } +.messagecontainer { + padding: 0px 0px 0px 0px; + margin: 0px 48px 0px 0px; + } +.buddyicon { + position: relative; + top: -6px; + #background: url("../images/buddy_background.png") top left no-repeat; + #height: 40px; + #width: 40px; + z-index: 4; + float: right; + margin-left: 0px; + margin-bottom: 0px; + margin-top: 0px; + margin-right: 10px; + #padding: 2px 0px 0px 4px; + #border: 1px solid #999999; + } +.buddyicon img { + height: 32px; + width: 32px; + #margin-top: 2px; + #margin-left: 4px; + z-index: 3; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/message_common.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/message_common.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/message_common.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/message_common.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +body { + background: #FFFFFF url("../images/background.png") bottom fixed repeat-x; + } + +.content .message { + background: url("../images/message/message_bot_right.png") bottom right no-repeat; + } +.context .message { + background: url("../images/message/message_context_bot_right.png") bottom right no-repeat; + } +.content .messagetextcontainer { + background: url("../images/message/message_bot_left.png") bottom left no-repeat; + } +.context .messagetextcontainer { + background: url("../images/message/message_context_bot_left.png") bottom left no-repeat; + } +.content .messagetop { + background: url("../images/message/message_top_fill.png") top repeat-x; + } +.context .messagetop { + background: url("../images/message/message_context_top_fill.png") top repeat-x; + } +.content .messagetopleft { + background: url("../images/message/message_top_left.png") left top no-repeat; + } +.context .messagetopleft { + background: url("../images/message/message_context_top_left.png") left top no-repeat; + } +.content .messagetopright { + background: url("../images/message/message_top_right.png") right top no-repeat; + } +.context .messagetopright { + background: url("../images/message/message_context_top_right.png") right top no-repeat; + } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(78,78,78,1); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(78,78,78,0.8); + } +.in.content .nameheader { + background: url("../images/sender/sender_mono_fill.png") top repeat-x; + color: rgba(248,248,248,1); + } +.in.context .nameheader { + background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; + color: rgba(248,248,248,0.9); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/mono/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/mono/sender_right_history.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/gray/sender_right.png") right top no-repeat; + color: rgba(78,78,78,0.8); + } +.out.context .protocol { + background: url("../images/sender/standard/gray/sender_right_history.png") right top no-repeat; + color: rgba(78,78,78,0.6); + } +.in.content .protocol { + background: url("../images/sender/flipped/mono/sender_left.png") left top no-repeat; + color: rgba(248,248,248,0.9); + } +.in.context .protocol { + background: url("../images/sender/flipped/mono/sender_left_history.png") left top no-repeat; + color: rgba(248,248,248,0.8); + } + +.status { + background: url("../images/status/black/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/black/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/black/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(78,78,78,1); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(78,78,78,0.8); + } +.in.content .nameheader { + background: url("../images/sender/sender_mono_fill.png") top repeat-x; + color: rgba(248,248,248,1); + } +.in.context .nameheader { + background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; + color: rgba(248,248,248,0.9); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/mono/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/mono/sender_left_history.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/gray/sender_left.png") left top no-repeat; + color: rgba(78,78,78,0.8); + } +.out.context .protocol { + background: url("../images/sender/flipped/gray/sender_left_history.png") left top no-repeat; + color: rgba(78,78,78,0.6); + } +.in.content .protocol { + background: url("../images/sender/standard/mono/sender_right.png") right top no-repeat; + color: rgba(248,248,248,0.9); + } +.in.context .protocol { + background: url("../images/sender/standard/mono/sender_right_history.png") right top no-repeat; + color: rgba(248,248,248,0.8); + } + +.status { + background: url("../images/status/black/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/black/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/black/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(78,78,78,1); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(78,78,78,0.8); + } +.in.content .nameheader { + background: url("../images/sender/sender_mono_fill.png") top repeat-x; + color: rgba(248,248,248,1); + } +.in.context .nameheader { + background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; + color: rgba(248,248,248,0.9); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/mono/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/mono/sender_left_history.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/gray/sender_right.png") right top no-repeat; + color: rgba(78,78,78,0.8); + } +.out.context .protocol { + background: url("../images/sender/standard/gray/sender_right_history.png") right top no-repeat; + color: rgba(78,78,78,0.6); + } +.in.content .protocol { + background: url("../images/sender/standard/mono/sender_right.png") right top no-repeat; + color: rgba(248,248,248,0.9); + } + +.in.context .protocol { + background: url("../images/sender/standard/mono/sender_right_history.png") right top no-repeat; + color: rgba(248,248,248,0.8); + } + +.status { + background: url("../images/status/black/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/black/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/black/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(78,78,78,1); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(78,78,78,0.8); + } +.in.content .nameheader { + background: url("../images/sender/sender_mono_fill.png") top repeat-x; + color: rgba(248,248,248,1); + } +.in.context .nameheader { + background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; + color: rgba(248,248,248,0.9); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/mono/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/mono/sender_right_history.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/gray/sender_left.png") left top no-repeat; + color: rgba(78,78,78,0.8); + } +.out.context .protocol { + background: url("../images/sender/flipped/gray/sender_left_history.png") left top no-repeat; + color: rgba(78,78,78,0.6); + } +.in.content .protocol { + background: url("../images/sender/flipped/mono/sender_left.png") left top no-repeat; + color: rgba(248,248,248,0.9); + } +.in.context .protocol { + background: url("../images/sender/flipped/mono/sender_left_history.png") left top no-repeat; + color: rgba(248,248,248,0.8); + } + +.status { + background: url("../images/status/black/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/black/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/black/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(170,17,17,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(170,17,17,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/red/sender_right.png") right top no-repeat; + color: rgba(170,17,17,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/red/sender_context_right.png") right top no-repeat; + color: rgba(170,17,17,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(170,17,17,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(170,17,17,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/red/sender_left.png") left top no-repeat; + color: rgba(170,17,17,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/red/sender_context_left.png") left top no-repeat; + color: rgba(170,17,17,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(170,17,17,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(170,17,17,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.out.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } +.in.content .name { + background: url("../images/sender/standard/sender_left.png") left top no-repeat; + } +.in.context .name { + background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/standard/red/sender_right.png") right top no-repeat; + color: rgba(170,18,18,0.4); + } +.out.context .protocol { + background: url("../images/sender/standard/red/sender_context_right.png") right top no-repeat; + color: rgba(170,18,18,0.3); + } +.in.content .protocol { + background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; + color: rgba(39,55,152,0.4); + } + +.in.context .protocol { + background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +@import url("message_common.css"); + +.out.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(178,18,18,0.8); + } +.out.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(178,18,18,0.5); + } +.in.content .nameheader { + background: url("../images/sender/sender_fill.png") top repeat-x; + color: rgba(39,55,152,0.8); + } +.in.context .nameheader { + background: url("../images/sender/sender_context_fill.png") top repeat-x; + color: rgba(39,55,152,0.5); + } + +.out.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.out.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } +.in.content .name { + background: url("../images/sender/flipped/sender_right.png") right top no-repeat; + } +.in.context .name { + background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; + } + +.out.content .protocol { + background: url("../images/sender/flipped/red/sender_left.png") left top no-repeat; + color: rgba(178,18,18,0.4); + } +.out.context .protocol { + background: url("../images/sender/flipped/red/sender_context_left.png") left top no-repeat; + color: rgba(178,18,18,0.3); + } +.in.content .protocol { + background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; + color: rgba(39,55,152,0.4); + } +.in.context .protocol { + background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; + color: rgba(39,55,152,0.3); + } + +.status { + background: url("../images/status/purple/status_fill.png") top repeat-x; + } +.statusmessage { + background: url("../images/status/purple/status_left.png") left top no-repeat; + } +.statustime { + background: url("../images/status/purple/status_right.png") right top no-repeat; + } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Template.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Template.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,190 @@ + + + + + + + + + + + + + +%@ +
+
+%@ +
+ + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/test.html qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/test.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/test.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/test.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,181 @@ + + + + + + + + + +
+ + + +
+ +
+
Evan has gone offline blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
+
11:26:20
+
+
+ +
+
Evan come back online
+
11:26:45
+
+
+ +
+
Jeff (Me)
Yahoo!
+
+
+
+
+
+
+

This is going to be a message from the past5:27:45

+
+

Instant Messaging is really fun!!!20:29

+
+

Right?20:50

+
+
+
+
+
+ +
+
Evan (Buddy)
AIM
+
+
+
+
+
+
+

Not if your life depended on it5:28:01

+
+
+
+
+
+ +
+
Evan has gone away: this is going to be a really long status message so I can make sure wrapping is handled correctly...
+
11:28:13
+
+
+ +
+
A really long alias if it will fit into this view blah blah blah blah blah blah blah blah
AIM
+
+
+
+
+
+
+

This is a new message11:29:20

+
+

Instant Messaging is supposed to be fun...29:41

+
+

Right?30:50

+
+
+
+
+
+ +
+
Evan has gone idle
+
11:31:05
+
+
+ +
+
Jeff (Me)
Yahoo!
+
+
+
+
+
+
+

If given the opportunity, a person would write a book about their life story. It may be the most boring thing in the world to read, but you're the one who put them on your buddy list ;).11:31:50

+
+
+
+
+
+ +
+
Evan (Buddy)
Yahoo!
+
+
+
+
+
+
+

If given the opportunity, a person would write a book about their life story. It may be the most boring thing in the world to read, but you're the one who put them on your buddy list ;).11:38:20

+
+
+
+
+
+ +
+
Jeff (Me)
Yahoo!
+
+
+
+
+
+
+

I have no idea what you're talking about!11:40:10

+
+
+
+
+
+
+
+ + + \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_left.css"); +@import url("../styles/green_blue_orange_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_hidden.css"); +@import url("../styles/green_blue_orange_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_right.css"); +@import url("../styles/green_blue_orange_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_right.css"); +@import url("../styles/green_blue_orange_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_left.css"); +@import url("../styles/green_blue_purple_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_left.css"); +@import url("../styles/green_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_hidden.css"); +@import url("../styles/green_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_right.css"); +@import url("../styles/green_blue_purple_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_right.css"); +@import url("../styles/green_blue_purple_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_left.css"); +@import url("../styles/monochrome_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_left.css"); +@import url("../styles/monochrome_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_hidden.css"); +@import url("../styles/monochrome_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_right.css"); +@import url("../styles/monochrome_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_right.css"); +@import url("../styles/monochrome_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_left.css"); +@import url("../styles/red_blue_purple_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_left.css"); +@import url("../styles/red_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_hidden.css"); +@import url("../styles/red_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_alternate_right.css"); +@import url("../styles/red_blue_purple_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +@import url("../styles/defaults.css"); +@import url("../styles/layout_right.css"); +@import url("../styles/red_blue_purple_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Simplicity Adium Message Style + CFBundleIdentifier + com.adiumx.simplicity.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Simplicity + CFBundlePackageType + AdIM + MessageViewVersion + 1 + DefaultFontFamily + Helvetica + DefaultFontSize + 12 + DisplayNameForNoVariant + Name + ShowsUserIcons + + DisableCustomBackground + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ (%time%) %sender% (%time%): + %message% +
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ (%time%) %sender% (%time%): + %message% +
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%message%
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ +@import url(styles/layout.css); +@import url(styles/base.css); + +.prefix .timestampbefore { + display: none; +} + +.prefix .sender { + display: inline; +} + +.prefix .timestampafter { + display: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ (%time%) %sender% (%time%): + %message% +
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ (%time%) %sender% (%time%): + %message% +
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
+
%message%
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/sample.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/sample.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,147 @@ + + + + + + + + + +
+
+
(20:41:49) eevyleevyl@mac.com (20:41:49): %message%
+
%message%
+
+
+
(20:41:49) eevyleevyl@mac.com (20:41:49): huhuhuhu
+
huhuhu
+
whatever we may take
+
+
+
+ (20:41:49) eevyleevyl@mac.com (20:41:49): + hu
+
+
+
+ (20:41:49) eevyleevyl@mac.com (20:41:49): + huhuhuhu +
+
huhuhu
+
whatever we may take
+
+
+ eevyl went away + (16:19) +
+
+ Away Message: Busy / Ocupado + (16:19) +
+
+ eevyl came back + (16:19) +
+
+
+ (20:41:49) eevyleevyl@mac.com (20:41:49): + huhuhuhu atest eth us heteshlthe tletshiet iso ehtioioseh tiseoteuo thseo oseht eh tset hshet stli ethsil etile thilsethilwsethilsthlsitehs ei +
+
+
huhuhu
+
+
ujdfbhfffdfsabhudfsabhjdfahbfjlfdabhjlsfdbjfdbhjfdbjfadbjafdlsafjbdlafdjlbafdsbjafdsbjfadsbjfdasjbfdasbjafdsbj
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,7 @@ +
+
+ %message% + %time% +
+
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/base.css qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/base.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/base.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/base.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,83 @@ + + +body { + padding: 0px; + margin: 0px; +} + +.incoming { + margin-left:-23px; + } + +.outgoing { + margin-left:-23px; + } + +.prefix +{ + font: bold 11px "Lucida Grande"; +} + +/**/ + +.incoming .prefix { + color: rgb(0,32,127); +} + +.incoming .messagebody +{ + background: #E5F2FF; + border-top: 1px solid #6B8FB3; +} + +.incoming .nextmessagebody { + background: #E5F2FF; +} + +.incoming .nextmessagetext { + border-top: 1px solid #B6CFEB; +} + +/**/ + +/**/ + +.outgoing .prefix +{ + color: rgb(0,127,0); +} + +.outgoing .messagebody +{ + background: #E6FFEA; + border-top: 1px solid #6BB377; +} + +.outgoing .nextmessagebody { + background: #E6FFEA; +} + +.outgoing .nextmessagetext { + border-top: 1px solid #B8E6BF; +} + +/**/ + +.incoming.context .prefix { + color: #516cbb; +} + +.outgoing.context .prefix { + color: #28cb28; +} + +.context .messagebody, .context .nextmessagebody { + color: gray; + background-color: #FFF; +} + +.status_message { + text-align: center; + font: 11px Helvetica, sans-serif; + color: gray; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/layout.css qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/layout.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/layout.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/styles/layout.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +body +{ + margin: 0px; +} + +#Chat { + overflow: hidden; +} + +.bottomdivider { + width: 100%; + position: fixed; + bottom: 0px; + margin: 0px; + padding: 0px; + left: 0px; +} + +.status_message { + padding: 0px 7px 0px 7px; +} + +.prefix { + position: relative; +} + +.messagebody { + padding: 1px 7px 1px 30px; + overflow: auto; +} + +.nextmessagebody { + padding: 1px 7px 1px 30px; + overflow: auto; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ +@import url(../styles/layout.css); +@import url(../styles/base.css); + +.prefix .timestampbefore { + display: none; +} + +.prefix .sender { + display: inline; +} + +.prefix .timestampafter { + display: inline; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,14 @@ +@import url(../styles/layout.css); +@import url(../styles/base.css); + +.prefix .timestampbefore { + display: inline; +} + +.prefix .sender { + display: inline; +} + +.prefix .timestampafter { + display: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Smooth Operator Adium Message Style + CFBundleIdentifier + com.adiumx.smooth.operator.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Smooth Operator + CFBundlePackageType + AdIM + DefaultBackgroundColor + FFFFFF + DefaultFontFamily + Lucida Grande + DefaultFontSize + 10 + DefaultVariant + Normal + DisableCustomBackground + + MessageViewVersion + 4 + ShowsUserIcons + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/bottom_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/bottom_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/bottom_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/bottom_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/buddy_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/buddy_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/context_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_left_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_right_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/status_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/images/top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ %sender% +
+
+ %time% +
+
+ +
+
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ %sender% +
+
+ %time% +
+
+ +
+
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
%time{%M:%S}%
+
%message%
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
%time{%M:%S}%
+
%message%
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,210 @@ +body { + background: white url(images/background.png) center top repeat-x fixed; + font-weight: normal; +} + +.incoming { color: #a6002c; } +.context .incoming { color:#A65369; } + +.outgoing { color: #001190; } +.context .outgoing { color: #47508F; } + +.container { + position: relative; + background: url("images/bottom_right.png") bottom right no-repeat; + margin: 15px 0px 0px 43px; + min-height: 25px; +} + +.context { + background: url("images/context_bottom_right.png") bottom right no-repeat; +} + +.sender { + top: -16px; + left: -41px; + right: 38px; + position: absolute; + background: url("images/top_left.png") top left no-repeat; + font-size: 11px; + font-weight: bold; + text-transform: lowercase; + text-shadow: 1px 1px 3px #ccc; + padding: 13px 5px 0 56px; + margin-bottom: 0; + overflow: hidden; + white-space: nowrap; + text-overflow: ellipsis; +} + +.context .sender { + background: url("images/context_top_left.png") top left no-repeat; +} + +.time_initial { + position: absolute; + right: 0; + top: -16px; + background: url("images/top_right.png") top right no-repeat; + font-size: 9px; + font-weight: bold; + text-transform: uppercase; + text-shadow: 1px 1px 3px #ccc; + color: #808080; + padding: 14px 16px 0 5px; + margin-bottom: 0; + } + +.context .time_initial { + background: url("images/context_top_right.png") top right no-repeat; +} + +.time_consecutive { + float: left; + background: 29px url("images/arrow.png") no-repeat; + margin-left: -40px; + margin-top: 10px; + font-size: 9px; + text-shadow: 1px 1px 3px #ddd; + color: #bfbfbf; + } + + +.buddyicon { + position: absolute; + background: url("images/buddy_background.png"); + top: -5px; + left: -29px; + z-index: 4; + width: 40px; + } + +.buddyicon img { + position: absolute; + top: 3px; + left: 3px; + z-index: 3; + } + +.message { + position: relative; + background: url("images/bottom_left.png") bottom left repeat-y; + margin: 0px -24px 0px -41px; + text-shadow: 1px 1px 3px #ccc; + padding: 10px 0 10px 56px; + min-height: 25px; + color: #404040; +} + +.context .message { + background: url("images/context_bottom_left.png") bottom left repeat-y; + color: #666666; + } + +.text { + padding: 6px 40px 6px 0; + margin: 0; + overflow: auto; +} + +.time_consecutive + .text{ /* Next message in same bubble */ + margin-top: 7px; + padding-top: 0px; +} +.status_container { + position: relative; + margin: 0px 5px 5px 5px; + color: #fff; + text-shadow: 1px 1px 3px #aaa; + font-size: 9px; + font-weight: bold; + text-transform: lowercase; +} +.status_top { + background: url("images/status_top.png") top repeat-x; + height: 9px; + margin: 0px 9px 0px 9px; +} +.status_bottom { + background: url("images/status_bottom.png") bottom repeat-x; + height: 9px; + margin: 0px 9px 0px 9px; +} + +.status_message_upperleft { + position: absolute; + top: 0; + left: 0; + width: 9px; + height: 9px; + background: url("images/status_left_top.png") top left no-repeat; +} +.status_message_upperright { + position: absolute; + top: 0; + right: 0; + width: 9px; + height: 9px; + background: url("images/status_right_top.png") top right no-repeat; +} +.status_message_lowerleft { + position: absolute; + bottom: 0; + left: 0; + width: 9px; + height: 9px; + background: url("images/status_left_bottom.png") bottom left no-repeat; +} +.status_message_lowerright { + position: absolute; + bottom: 0; + right: 0; + width: 9px; + height: 9px; + background: url("images/status_right_bottom.png") bottom right no-repeat; +} + +.status_message { + padding: 0px 9px 0px 9px; + position: relative; + margin: 0px; +} +.status_message_text { + background: url("images/status_background.png"); + padding-right: 40px; +} +.status_left { + background: url("images/status_left.png") repeat-y; + position: absolute; + top: 0; + left: 0px; + width: 9px; + height: 100%; +} +.status_right { + background: url("images/status_right.png") repeat-y; + position: absolute; + top: 0; + right: 0; + width: 9px; + height: 100%; +} +.status_time { + position: absolute; + top: 7px; + right: 11px; + text-transform: uppercase; + font-size: 8px; +} + +IMG { + vertical-align:middle; + top:-3px; +} + +img.scaledToFitImage{ width:auto; } + +#Chat { + overflow: hidden; + margin-bottom: -8px; +} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ %sender% +
+
+ %time% +
+
+ +
+
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+ %sender% +
+
+ %time% +
+
+ +
+
+
%message%
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
%time{%M:%S}%
+
%message%
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +
%time{%M:%S}%
+
%message%
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Smooth Operator/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,15 @@ +
+
+
+
+
+ %message% +
+
+
+
+ %time% +
+
+
+
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + English + CFBundleGetInfoString + Stockholm Adium Message Style + CFBundleIdentifier + com.adiumx.stockholm.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Stockholm + CFBundlePackageType + AdIM + DefaultFontFamily + Lucida Grande + DefaultFontSize + 11 + DefaultVariant + Blue - Grey + DisplayNameForNoVariant + Normal + MessageViewVersion + 4 + ShowsUserIcons + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/alternating.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/alternating.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,152 @@ +@import url("../main.css"); + +/* HEADER */ +.outgoingheader_ctx_left { + background: url("images/ctx_right_a.png") top right no-repeat; + width:4px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.outgoingheader_ctx_center { + background: url("images/ctx_fill.png") top right repeat-x; + height:21px; + position:absolute; + left:3px; + right:2px; + top:0px; +} + +.outgoingheader_ctx_right { + background: url("images/ctx_left_a.png") top right no-repeat; + width:2px; + height:21px; + position: absolute; + right:0px; + top:0px; +} +.incomingheader_left { + width:2px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.incomingheader_center { + height:21px; + position:absolute; + left:2px; + right:3px; + top:0px; +} + +.incomingheader_right { + width:4px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + +.outgoingheader_left { + width:4px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.outgoingheader_center { + height:21px; + position:absolute; + left:3px; + right:2px; + top:0px; +} + +.outgoingheader_right { + width:2px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + +/* MESSAGE */ +.outgoing_left { + float: right; + margin 0px; + width:39px; + padding: 3px 0px 0px 0px; +} +.outgoing_right { + width:auto; + margin: 11px 44px 0px 0px; + position: relative; +} +.outgoing_right[background="Incoming/buddy_icon.png"], +.outgoing_right[background="Outgoing/buddy_icon.png"] { + margin: 11px 5px 0px 0px !important; +} +.outgoing_buddyicon { + height: 38px; + width: 38px; + background: #FFF; + border: 0px; + z-index: 3 !important; + position: absolute; + right:6px; + top:1px; +} +.outgoing_iconoverlay { + height: 41px; + width: 39px; + background: url("images/icon_overlay_a.png") top right no-repeat; + z-index: 4 !important; + position: absolute; + right:5px; + top:0px; + +} +.outgoingmessage_right { + background: url("images/message_right_a.png") top right repeat-y; + width:3px; + height: 100%; + position: absolute; + left: 0px; + top:21px; +} +.outgoingmessage_left { + background: url("images/message_left_a.png") top right repeat-y; + width:2px; + height: 100%; + position: absolute; + right: 0px; + top:21px; +} +.outgoingmessage_bottomleft { + background: url("images/message_bottomleft_a.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + right:0px; +} +.outgoingmessage_bottomright { + background: url("images/message_bottomright_a.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + left:0px; + +} +.outgoingmessage_bottomcenter { + background: url("images/message_bottom.png") bottom left repeat-x; + height: 4px; + position: absolute; + right:2px; + left:3px; +} + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/bkg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/bkg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/blue_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/ctx_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/green_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/grey_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/icon_overlay_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/icon_overlay_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/icon_overlay.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/icon_overlay.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomright_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomright_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/message_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/orange_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/red_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_bottomcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_bottomcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_leftside.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_leftside.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_topcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_topcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_l_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_bottomcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_bottomcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_rightside.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_rightside.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_topcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_topcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/images/status_r_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +
+
+
+ +
+
+
+
+
+
+
+
+
%sender%
+
%time%
+
+
+
+
+
+
+
+

%message%

+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +
+
+
+ +
+
+
+
+
+
+
+
+
%sender%
+
%time%
+
+
+
+
+
+
+
+

%message%

+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,39 @@ +
+
+
+ +
+
+
+
+
+
+
+
+
%sender%
+
%time%
+
+
+
+
+
+
+
+
+
Incoming file:
+ +
%message%
+ + +
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+ %message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+ %message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,397 @@ +body { + margin:0; + padding:0; + color: #141414; + background: url(images/bkg.png) repeat-x top left; + position: relative; + top:0px; + background-attachment: fixed; + background-color:#EBEBEB; +} +p { + margin: 0; + padding: 0px; + overflow: auto; +} + +a { + color: #0033CC; +} + +img { + border: none; +} + +.container, .ctx_container { + margin: 0 2px 0 6px; + padding-bottom:4px; + position: relative; + clear: both; +} +.contents_left { + float: left; + margin 0px; + width:39px; + padding: 3px 0px 0px 0px; +} +.contents_right { + width:auto; + margin: 11px 5px 0px 39px; + position: relative; +} +.contents_right[background="Incoming/buddy_icon.png"], +.contents_right[background="Outgoing/buddy_icon.png"] { + margin: 11px 5px 0px 0px !important; +} + +/* ICON */ + + +.iconsubstitute[background="Incoming/buddy_icon.png"], +.iconsubstitute[background="Outgoing/buddy_icon.png"] { + display: none; +} + +.buddyicon { + height: 38px; + width: 38px; + background: #FFF; + border: 0px; + z-index: 1 !important; + position: absolute; + left:1px; + top:1px; +} +.iconoverlay { + height: 41px; + width: 39px; + background: url("images/icon_overlay.png") top right no-repeat; + z-index: 2 !important; + position: absolute; + left:0px; + top:0px; + +} + + +/* HEADER */ + +.header { + font-size: 11px; + height:21px; + color: #FFF; + font-family:Lucida Grande; + font-weight:bold; + text-shadow: #4D4D4D 1px 1px 1px; +} + +.sender { + padding:2px 30px 0 6px; + overflow:hidden; + height:15px; +} + +.time { + position: absolute; + right:5px; + top:2px; +} + +.time { + position: absolute; + right:5px; + top:2px; +} + + +/* MESSAGE */ + +.message { + background-color: #F0F0F0; +} + +.message_top { + position: relative; + overflow:hidden; +} + +.message_left { + background: url("images/message_left.png") top right repeat-y; + width:2px; + height: 100%; + position: absolute; + left: 0px; + top:21px; +} + +.message_right { + background: url("images/message_right.png") top right repeat-y; + width:3px; + height: 100%; + position: absolute; + right: 0px; + top:21px; +} + + +.text, .text_ctx { + line-height: 1.3em; + padding: 1px 10px 1px 8px; + margin-left: 1px; + margin-right: 1px; +} + +.text_ctx { + color: #979797 !important; +} + +.message_bottom { + position: relative; +} + +.message_bottomleft { + background: url("images/message_bottomleft.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + left:-1px; +} + +.message_bottomcenter { + background: url("images/message_bottom.png") bottom left repeat-x; + height: 4px; + position: absolute; + right:3px; + left:2px; +} + + +.message_bottomright { + background: url("images/message_bottomright.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + right:0px; +} + + +/* STATUS */ + +.status_container { + font-size: 10px; + font-family:Lucida Grande; + margin:11px 2px 0px 6px; + position:relative; + clear:both; +} + +.status__r_top { + position: relative; +} + +.status_r_topcorner { + background: url("images/status_r_topcorner.png") top right no-repeat; + width:3px; + height:3px; + position: absolute; + right:5px; + top:0px; +} +.status_r_top { + background: url("images/status_r_top.png") top right repeat-x; + height:3px; + position: absolute; + right:8px; + left:39px; + top:0px; +} + +.status_l_topcorner { + background: url("images/status_l_topcorner.png") top left no-repeat; + width:3px; + height:3px; + position: absolute; + left:0px; + top:0px; +} +.status_l_top { + background: url("images/status_l_top.png") top right repeat-x; + height:3px; + width:36px; + position: absolute; + left:3px; + top:0px; +} + +.status__r_bottom { + position: relative; +} + +.status_r_bottomcorner { + background: url("images/status_r_bottomcorner.png") top right no-repeat; + width:3px; + height:3px; + position: absolute; + right:5px; + bottom:-1px; +} +.status_r_bottom { + background-color: #E4E4E4; + height:1px; + position: absolute; + right:8px; + left:39px; +} + +.status_l_bottomcorner { + background: url("images/status_l_bottomcorner.png") top right no-repeat; + width:3px; + height:3px; + position: absolute; + left:0px; + bottom:-1px; +} +.status_l_bottom { + background: url("images/status_l_bottom.png") top right repeat-x; + height:3px; + width:36px; + position: absolute; + left:3px; + bottom:-1px; +} + +.status_leftside { + background: url("images/status_leftside.png") top right repeat-y; + width:39px; + position: absolute; + left: 0px; + top:3px; + bottom:2px; +} + +.status_rightside { + background: url("images/status_rightside.png") top right repeat-y; + width:3px; + position: absolute; + right: 5px; + top:3px; + bottom:2px; +} + +.status_left { + color:#FFF; + font-size:9.5px; + width:36px; + text-align:center; + float: left; + font-weight:bold; + position: absolute; + left: 2px; + top: 4px; + overflow:hidden; + white-space: nowrap; +} +.status_right { + background:#F0F0F0; + color:#787878; + font-size:9.5px; + min-height:15px; + margin: 0px 8px 0px 39px; + padding:4px 7px 0px 7px; + text-align:left; +} +.status_bump { + height:3px; +} + +/* NEXT */ + +.combine { + margin-top: 3px; + padding-top: 2px; + border-top: 1px solid #DDDDDD; +} + +.combine:hover .ctime { + visibility: visible; +} + +.combine .ctime { + float: right; + color: #8f8f8f; + top: 14px; + margin-right: -3px; + text-align:right; + visibility: hidden; +} + + + +/* CONTEXT */ + +.ctx_container { + opacity: .85; +} + +.header_ctx_left { + background: url("images/ctx_left.png") top right no-repeat; + width:2px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.header_ctx_center { + background: url("images/ctx_fill.png") top right repeat-x; + height:21px; + position:absolute; + left:2px; + right:3px; + top:0px; +} + +.header_ctx_right { + background: url("images/ctx_right.png") top right no-repeat; + width:4px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + + +#Chat { + overflow: hidden; + padding-bottom: 10px; +} + +/* FILE HANDLER */ + +.filetext { + line-height: 1.3em; + font-size: 10px; + padding: 1px 10px 1px 8px; + margin-left: 1px; + margin-right: 1px; +} + +.fileicon { + height: 32px; + width: 32px; + vertical-align: bottom; + padding: 3px 5px 3px 0; + float: left; +} +.fileincoming { + padding-top:10px; +} + +.filename a { + text-decoration: none; +} + +.filemessage { + padding: 7px 0 5px 0; + clear: both; +} \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +
+
+
+ +
+
+
+
+
+
+
+
+
%sender%
+
%time%
+
+
+
+
+
+
+
+

%message%

+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +
+
+
+ +
+
+
+
+
+
+
+
+
%sender%
+
%time%
+
+
+
+
+
+
+
+

%message%

+
+
+
+
+
+
+
+
+
+
+
+ \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+ %message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +
+
%time%
+ %message% +
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/regular.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/regular.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/regular.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/regular.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,162 @@ +@import url("../main.css"); + +/* HEADER */ +.incomingheader_left { + width:2px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.incomingheader_center { + height:21px; + position:absolute; + left:2px; + right:3px; + top:0px; +} + +.incomingheader_right { + width:4px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + +.outgoingheader_left { + width:2px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.outgoingheader_center { + height:21px; + position:absolute; + left:2px; + right:3px; + top:0px; +} + +.outgoingheader_right { + width:4px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + +.outgoingheader_ctx_left { + background: url("images/ctx_left.png") top right no-repeat; + width:2px; + height:21px; + position: absolute; + left:0px; + top:0px; +} + +.outgoingheader_ctx_center { + background: url("images/ctx_fill.png") top right repeat-x; + height:21px; + position:absolute; + left:2px; + right:3px; + top:0px; +} + +.outgoingheader_ctx_right { + background: url("images/ctx_right.png") top right no-repeat; + width:4px; + height:21px; + position: absolute; + right:0px; + top:0px; +} + +/* MESSAGE */ +.outgoing_left { + float: left; + margin 0px; + width:39px; + padding: 3px 0px 0px 0px; +} +.outgoing_right { + width:auto; + margin: 11px 5px 0px 39px; + position: relative; +} +.outgoing_right[background="Incoming/buddy_icon.png"], +.outgoing_right[background="Outgoing/buddy_icon.png"] { + margin: 11px 5px 0px 0px !important; +} + +.outgoing_buddyicon { + height: 38px; + width: 38px; + background: #FFF; + border: 0px; + z-index: 1 !important; + position: absolute; + left:1px; + top:1px; +} +.outgoing_iconoverlay { + height: 41px; + width: 39px; + background: url("images/icon_overlay.png") top right no-repeat; + z-index: 2 !important; + position: absolute; + left:0px; + top:0px; + +} +.outgoingmessage_top { + position: relative; + overflow:hidden; +} + +.outgoingmessage_left { + background: url("images/message_left.png") top right repeat-y; + width:2px; + height: 100%; + position: absolute; + left: 0px; + top:21px; +} + +.outgoingmessage_right { + background: url("images/message_right.png") top right repeat-y; + width:3px; + height: 100%; + position: absolute; + right: 0px; + top:21px; +} +.outgoingmessage_bottomleft { + background: url("images/message_bottomleft.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + left:-1px; +} + +.outgoingmessage_bottomcenter { + background: url("images/message_bottom.png") bottom left repeat-x; + height: 4px; + position: absolute; + right:3px; + left:2px; +} + + +.outgoingmessage_bottomright { + background: url("images/message_bottomright.png") top right no-repeat; + width:3px; + height:4px; + position: absolute; + right:0px; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,23 @@ +
+
+
+
+
+
+
+
+
+ +
+
%shortTime%
%message%
+
+
+
+
+
+
+
+
+
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../alternating.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../alternating.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_left_a.png") top right no-repeat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../alternating.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../alternating.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_left_a.png") top right no-repeat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,29 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_right_a.png") top right no-repeat; + +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_left_a.png") top right no-repeat; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../alternating.css"); + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../alternating.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_right_a.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_left_a.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../regular.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../regular.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../regular.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +@import url("../regular.css"); + +.incomingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/blue_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/blue_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/blue_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/green_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/green_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/green_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/grey_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/grey_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/grey_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +@import url("../regular.css"); + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/orange_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/orange_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/orange_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +@import url("../regular.css"); + + + +.incomingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.incomingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.incomingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} + +.outgoingheader_left { + background: url("../images/red_left.png") top right no-repeat; +} + +.outgoingheader_center { + background: url("../images/red_fill.png") top right repeat-x; +} + +.outgoingheader_right { + background: url("../images/red_right.png") top right no-repeat; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Info.plist qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Info.plist 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ + + + + + CFBundleDevelopmentRegion + German + CFBundleGetInfoString + Vacation + CFBundleIdentifier + com.mac-home.vacation.style + CFBundleInfoDictionaryVersion + 1.0 + CFBundleName + Vacation + CFBundlePackageType + AdIM + DefaultFontFamily + Skia + DefaultFontSize + 12 + DefaultVariant + Sonnenuntergang 1 + DisplayNameForNoVariant + Standard + MessageViewVersion + 2 + ShowsUserIcons + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageDark.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageDark.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageDark.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageDark.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.content { + background-image: url(../images/messageDarkBG.png); +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.content { + background-image: url(../images/messageVeryDarkBG.png); +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.shadow { + background-image: none; +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +.shadow { + background-image: url(../images/messageShadow.png); +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Header.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Header.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,23 @@ + + \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Apfelbaum.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Apfelbaum.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Bambus.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Bambus.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/GlitzerndeWelle.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/GlitzerndeWelle.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneBlaetter.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneBlaetter.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneMauern.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneMauern.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Mittelmeer.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Mittelmeer.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SchattigerLaubbaum.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SchattigerLaubbaum.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Sonnenblick.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Sonnenblick.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnenuntergangRheinufer.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnenuntergangRheinufer.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnigeBaumkrone.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnigeBaumkrone.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/header_bg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/header_bg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/glass.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/glass.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/tiger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/tiger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageDarkBG.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageDarkBG.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageShadow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageShadow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageVeryDarkBG.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/images/MessageVeryDarkBG.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +
+
+
%sender%
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +
+
+
%sender%
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
%time%
+
%message%
+ +
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/main.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/main.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,113 @@ +/* import default header style sheet */ +@import url("styles/_headers/_default.css"); + + +body { + background: url(images/_backgroundimages/SchattigerLaubbaum.jpg) no-repeat fixed; + +} + +.sender .name { + color: #ddffee; + font-family: "Trebuchet MS", TrebuchetMS; + font-size: 16px; + font-weight: bold; + margin-bottom: -4px; + margin-left: 10px; + margin-right: 20px; + text-shadow: #000000 0px 0px 4px; +} + +.sender .name.co { + text-align: right; +} + +/*message content*/ +.content { + background: url(images/MessageDarkBG.png); + border: 0px black solid; + color: #ffffff; + font-family: "Trebuchet MS", TrebuchetMS; + font-size: 11px; + line-height: 1.3em; + word-wrap: break-word; +} + +.contentText { + color: #ffffff; + padding-top: 5px; + padding-bottom: 5px; + margin-right: 20px; + margin-left: 20px; + font-family: Skia, sans-serif; + font-size: 11px; + text-align: justify; +} + +.contentSpacer { + padding-top: 5px; + padding-bottom: 4px; +} + +.message { +} + +.message a { + color: #ffffff; +} + +.message a:hover { + color: #ffffff; +} + +.shadow { + background: url(images/MessageShadow.png) repeat-x top; + height: 9px; +} + +.date { + color: #ffffff; + float: right; + font-family: Arial; + font-size: 10px; + margin-left: 20px; + margin-right: 20px; + margin-bottom: 5px; + opacity: 1; + padding-top: 5px; + text-shadow: #000 0px 0px 2px; +} + +.status { + color: #ddffee; + font-family: "Trebuchet MS", TrebuchetMS; + font-size: 11px; + font-weight: bold; + margin-bottom: .5em; + opacity: 1; + text-align: center; + text-shadow: #000000 0px 0px 2px; +} + +.status a { + color: #ddffee; +} + +.status a:hover { + color: #ddffee; +} + +#Chat { + overflow: visible; + padding-top: 50px; + padding-bottom: 6px; + margin-bottom: 0px; +} + +.context { + opacity: .6; +} + +img.scaledToFitImage{ + width: auto; +} \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +
+
+
%sender%
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,16 @@ + +
+
+
%sender%
+
+
+
+
%time%
+
%message%
+
+
+
+
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +
%time%
+
%message%
+ +
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Status.html qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Status.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,2 @@ +
%message% (%time%)
+
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,108 @@ +/* @group header */ + +#header { + color: #FFF; + cursor: default; + font-family: helvetica, sans-serif; + overflow: hidden; + position: fixed; + top: 0px; + left: 0px; + z-index: 5; + width: 100%; + height: 65px; + text-shadow: #1f4971 0px 1px 2px; +} + +#header_bar { + background: url("../../images/header_bg.png") repeat; + border-bottom: 1px solid white; + width: 100%; + height: 64px; + position: relative; +} + +#header_bar .chattitel { + margin: 0px 125px 0px 125px; + padding-top: 10px; + font-size: 18px; + font-weight: bold; + text-align: center; +} + +#header_bar .uhrzeit { + font-size: 15px; + color: #dfdfdf; + letter-spacing: 0px; +} + +#header_bar .sitzplatz { + margin-top: 20px; + font-size: 11px; + color: #dfdfdf; + padding: 6px; +} + +#header_bar .sitzplatz.me { + float: left; +} + +#header_bar .sitzplatz.co { + float: right; +} + +img.picture { + width: 64px; + height: 64px; + border-right: 1px solid white; + float: left; +} + +img.picture.co { + border-right: 0px; + border-left: 1px solid white; + float: right; +} + +/* @group toggle */ + +#toggle_hide { + cursor: pointer; + background: url("../../images/_headers/toggle-hide.png") no-repeat top left; + position: fixed; + top: 3px; + left: 3px; + width: 14px; + height: 10px; + visibility: hidden; + z-index: 6; +} + +#header:hover #toggle_hide { + visibility: visible; +} + +#header #toggle_hide:hover { + background-image: url("../../images/_headers/toggle-hide-hover.png"); +} + +#toggle_show { + cursor: pointer; + background: url("../../images/_headers/toggle-show.png") no-repeat top left; + position: fixed; + top: 3px; + left: 3px; + width: 14px; + height: 10px; + z-index: 6; +} + +#header #toggle_show:hover { + background-image: url("../../images/_headers/toggle-show-hover.png"); +} + +/* @end */ + + +/* @end */ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +/* @group header */ + +#header { + height: 40px; + text-shadow: #505050 0px 1px 2px; +} + +#header_bar { + background-image: url("../../images/_headers/glass.png"); + height: 40px; +} + +#header_bar .left { + font-size: 16px; + letter-spacing: 0px; + top: 6px; + left: 10px; +} + +#header_bar .right { + font-size: 14px; + letter-spacing: 0px; + top: 7px; + right: 10px; +} + +/* @end */ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/Apfelbaum.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/Bambus.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/GlitzerndeWelle.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/MediterraneBlaetter.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/MediterraneMauern.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/Mittelmeer.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/SchattigerLaubbaum.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/Sonnenblick.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/SonnenuntergangRheinufer.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,5 @@ +@import url("../main.css"); + +body { + background: url(../images/_backgroundimages/SonnigeBaumkrone.jpg) no-repeat fixed; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/resources/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,10 @@ +if (COPY_DATA_FILES_ON_CONFIGURE) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/chat/* ${DATA_COPY_DIR}/chat/.) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/config/* ${DATA_COPY_DIR}/config/.) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/pics/* ${DATA_COPY_DIR}/pics/.) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/sounds/* ${DATA_COPY_DIR}/sounds/.) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/webpages/* ${DATA_COPY_DIR}/webpages/.) + if (WIN32) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/css/* ${DATA_COPY_DIR}/css/.) + endif (WIN32) +endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/branding.xml qutecom-2.2+dfsg1/qutecom/resources/config/branding.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/branding.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/config/branding.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ + +QuteCom +QuteCom + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/resources/config/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/config/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +if (COPY_DATA_FILES_ON_CONFIGURE) + ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${DATA_COPY_DIR}/config/.) +endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/config.xml qutecom-2.2+dfsg1/qutecom/resources/config/config.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/config.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/config/config.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,282 @@ + + +15 + +1 +sounds/callclosed.wav + + + SPEEX/8000 + SPEEX/16000 + ILBC/8000 + + PCMU/8000 + PCMA/8000 + + GSM/8000 + G722/8000 + + + +sounds/doublecall.wav +0 + + +sounds/ringin.wav +sounds/outgoingcall.wav + + + + ALSA: default + default + DeviceTypeWaveIn + + + + + ALSA: default + default + DeviceTypeWaveOut + + + + + ALSA: default + default + DeviceTypeWaveOut + + +1 +sounds/tones/ + +0 +unauthorized + + + + + + + button.qutecom.com + button.wdeal.com + + + +phapi-plugins + + + + +1 +0 +2 +1 +0 +1 +1 +1 +qutecom + + +Hidden + +1 + +detect + + +renkoo +renkoo + + + +NatTypeSymmetric +0 + + +0 + +5060 +stun.qutecom.fr +1 +0 +80 + +0 + +0 +0 +0 +0 +1 +1 +1 + + + +0 +0 +0 +0 +0 + +500 + +100 +100 +300 + +1 +0 +VideoQualityNormal + +0 + +0 + + + + ALSA: default + default + DeviceTypeWaveIn + + + + + ALSA: default + default + DeviceTypeWaveOut + + + + + ALSA: default + default + DeviceTypeWaveOut + + +WenboxStatusNotConnected + +/cirpack/index.php +/directory/index.php +/info/info.php +www.qutecom.org +/sms/sendsms.php +/downloads/update/ +/softphone-sso/sso2.php +/softphone-subscription/index.php +voip.qutecom.fr +333@voip.qutecom.fr +335@voip.qutecom.fr + + + +5060 + +5060 + +0 + + + +2940 +300 +true +false +false +false + + + +http://www.qutecom.com/public/public.php?page=subscribe_qutecoms&wl=qutecom&lang=@lang@ + + +http://www.qutecom.org + + +http://www.qutecom.org + + +http://www.qutecom.com/public/public.php?page=product_sms&wl=qutecom&lang=@lang@ + + +http://www.qutecom.com/public/public.php?page=product_voicemail&wl=qutecom&lang=@lang@ + + +http://www.qutecom.com/public/public.php?page=main_smart_directory_ng&wl=qutecom&lang=@lang@ + + +http://www.qutecom.com/public/public.php?page=smart_directory_ng&wl=qutecom&lang=@lang@ + + +http://www.qutecom.org + + +https://secure.qutecom.com/selfcare/qutecom/auth/auth.php?page=homepage&wl=qutecom&lang=@lang@&login=@login@&password=@password@ + + +https://secure.qutecom.com/selfcare/qutecom/auth/auth.php?page=reload&wl=qutecom&lang=@lang@&login=@login@&password=@password@ + + +http://www.qutecom.com/public/public.php?page=download&wl=qutecom&lang=@lang@&login=@login@&password=@password@ + + +https://secure.qutecom.com/selfcare/qutecom/auth/auth.php?page=display_account&wl=qutecom&lang=@lang@&login=@login@&password=@password@ + + +http://www.qutecom.org + + +http://www.qutecom.com/public/public.php?page=lostpassword&wl=qutecom&lang=@lang@ + +https://launchpad.net/qutecom +http://www.qutecom.com/auth/auth.php +https://secure.qutecom.com/selfcare/qutecom/auth/auth.php +http://www.qutecom.org + +1 +1 +unknown +unknown + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/imaccountparameters.xml qutecom-2.2+dfsg1/qutecom/resources/config/imaccountparameters.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/config/imaccountparameters.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/config/imaccountparameters.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,36 @@ + +0 +1 +0 + +0 + + +0 +scs.msg.yahoo.com +cs.yahoo.co.jp +5050 +filetransfer.msg.yahoo.com +filetransfer.msg.yahoo.co.jp +80 +us +messenger.hotmail.com +1863 +gateway.messenger.hotmail.com +1 +login.oscar.aol.com +5190 +ISO-8859-1 + +5222 +QuteCom +1 +1 +0 +0 + + +im.myspace.akadns.net +1863 + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/css/qutecom.css qutecom-2.2+dfsg1/qutecom/resources/css/qutecom.css --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/css/qutecom.css 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/css/qutecom.css 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,138 @@ +/* Turn the border of all lists to red, and it's background to light gray: */ + + + /*QMainWindow,QDialog,QWidget#centralWidget + { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E0E0E0, stop: 1 #FFFFFF); + /* border: 0.3px solid gray; + /*border-radius: 1px; + margin-top: 3ex; /* leave space at the top for the title */ + /*} + /*QLabel + { + background-color:solid gray + + }*/ + /*QTreeView#treeView + { + background-image: url(:/pics/arcor.png); + background-repeat: no-repeat; + background-position:bottom right; + } + + QTreeWidget#treeWidget + { + background-image: url(:/pics/arcor.png); + background-repeat: no-repeat; + background-position:bottom right; + }*/ + +QLineEdit +{ + border: 1px solid grey; + border-radius: 5px; + /* padding: 10px;*/ +} + +QComboBox +{ + border: 1px solid grey; + border-radius: 5px; + padding-left: 1px; + padding-top: 1px; + padding-bottom: 1px; + /* padding-right:15px;*/ +} + +QComboBox::down-arrow +{ + image: url(:/pics/history/filter.png); + background-color:White; +} + +QComboBox QAbstractItemView +{ + border: 1px solid grey; +} + + +QComboBox::drop-down +{ + subcontrol-origin: padding; + subcontrol-position: top right; + width: 20px; + + border-left-width: 1px; + border-left-color: darkgray; + border-left-style: solid; + border-top-right-radius: 5px; + border-bottom-right-radius: 5px; +} + +QDateTimeEdit +{ + border: 1px solid grey; + border-bottom-left-radius: 5px; + border-top-left-radius: 5px; + padding-left: 1px; + padding-top: 1px; + padding-bottom: 1px; + /* padding-right:15px;*/ +} + + /*QGroupBox { + background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, + stop: 0 #E0E0E0, stop: 1 #FFFFFF); + border: 2px solid gray; + border-radius: 5px; + margin-top: 1ex; /* leave space at the top for the title + }*/ + + QHeaderView::section { + background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, + stop:0 #616161, stop: 0.5 #505050, + stop: 0.6 #434343, stop:1 #656565); + color: white; + padding-left: 4px; + border: 1px solid #6c6c6c; + } + /* + QLineEdit { + border: 2px solid gray; + border-radius: 10px; + padding: 0 8px; + background: white; + selection-background-color: darkgray; + } + + QLineEdit[echoMode="2"] { + lineedit-password-character: 9679; + } + + QLineEdit:read-only { + background: lightblue; + } + + /*QMenu { + background-color: lightblue; /* sets background of the menu */ + /*border: 1px solid black; + } + + QMenu::item { + /* sets background of menu item. set this to something non-transparent + if you want menu color and menu item color to be different + background-color: transparent; + } + + QMenu::item:selected { /* when user selects item using mouse or keyboard + background-color: white; + }*/ + +LogAccount +{ + QLabel#loginLabel + { + background-image: url(:/pics/headers/login.png); + } +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/css/README.txt qutecom-2.2+dfsg1/qutecom/resources/css/README.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/css/README.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/css/README.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,6 @@ +Any file ending with .css placed here will be loaded by the QuteCom to +customize its appearance. + +For more information regarding Qt stylesheets, have a look at this url: + +http://doc.trolltech.com/qt/stylesheet Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/about_logo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/about_logo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/accept-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/accept-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/add-contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/add-contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/delete.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/delete.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/hangup-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/hangup-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/hold-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/hold-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/resume-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/resume-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/send_file.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/send_file.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/actions/send-sms-16.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/actions/send-sms-16.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/add.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/add.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/application-icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/application-icon.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/audio/microphone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/audio/microphone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/audio/speaker.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/audio/speaker.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatar_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatar_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/default-avatar.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/default-avatar.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export11_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export11_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export12_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export12_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export13_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export13_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export14_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export14_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export15_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export15_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export16_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export16_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export17_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export17_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export18_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export18_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export1_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export1_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export19_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export19_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export20_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export20_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export21_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export21_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export22_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export22_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export23_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export23_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export24_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export24_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export25_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export25_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export26_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export26_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export27_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export27_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export28_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export28_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export2_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export2_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export29_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export29_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export30_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export30_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export31_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export31_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export32_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export32_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export33_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export33_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export34_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export34_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export35_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export35_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export36_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export36_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export37_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export37_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export38_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export38_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export3_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export3_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export39_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export39_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export40_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export40_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export4_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export4_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export5_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export5_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export6_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export6_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export7_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export7_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export8_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export8_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/avatars/export9_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/avatars/export9_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/callbar/call_bar_button_hangup_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/callbar/call_bar_button_hangup_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/callbar/call_bar_button_hangup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/callbar/call_bar_button_hangup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/callbar/call_bar_button_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/callbar/call_bar_button_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/callbar/call_bar_button.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/callbar/call_bar_button.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/callbar/call_bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/callbar/call_bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/cancel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/cancel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/bar_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/bar_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/block-a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/block-a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat_emoticon_button_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat_emoticon_button_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat_emoticon_button.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat_emoticon_button.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat_emoticon_button.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat_emoticon_button.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat-room.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat-room.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/chat_send.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/chat_send.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/contact-details.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/contact-details.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_bold_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_bold_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_bold.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_bold.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_italic_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_italic_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_italic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_italic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_underline_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_underline_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/font_underline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/font_underline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/hide_avatar_frame.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/hide_avatar_frame.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/new_chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/new_chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/chat/show_avatar_frame.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/chat/show_avatar_frame.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/close_normal.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/close_normal.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/close_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/close_on.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/resources/pics/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/pics/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +if (COPY_DATA_FILES_ON_CONFIGURE) + # For some unknown reason, the commented line below fails under Windows + # (Tested with cmake 2.4.5 and cmake 2.4.6). CMake enters an infinite loop + # while copying "protocols/overlay_presence_away.png", it outputs an + # endless string of broken chars. To workaround this, copy each folder by + # hand :-( + + #ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${DATA_COPY_DIR}/pics/) + + ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${DATA_COPY_DIR}/pics/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/actions/*.png ${DATA_COPY_DIR}/pics/actions/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/audio/*.png ${DATA_COPY_DIR}/pics/audio/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/callbar/*.png ${DATA_COPY_DIR}/pics/callbar/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/chat/*.png ${DATA_COPY_DIR}/pics/chat/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/config/*.png ${DATA_COPY_DIR}/pics/config/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/contact/*.png ${DATA_COPY_DIR}/pics/contact/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/dialpad/*.png ${DATA_COPY_DIR}/pics/dialpad/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/emoticons/*.png ${DATA_COPY_DIR}/pics/emoticons/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/filetransfer/*.png ${DATA_COPY_DIR}/pics/filetransfer/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/headers/*.png ${DATA_COPY_DIR}/pics/headers/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/history/*.png ${DATA_COPY_DIR}/pics/history/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/iconbar/*.png ${DATA_COPY_DIR}/pics/iconbar/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/phonecall/*.png ${DATA_COPY_DIR}/pics/phonecall/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/profilebar/*.png ${DATA_COPY_DIR}/pics/profilebar/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/protocols/*.png ${DATA_COPY_DIR}/pics/protocols/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/status/*.png ${DATA_COPY_DIR}/pics/status/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/statusbar/*.png ${DATA_COPY_DIR}/pics/statusbar/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/systray/*.png ${DATA_COPY_DIR}/pics/systray/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/toaster/*.png ${DATA_COPY_DIR}/pics/toaster/) + + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.mng ${DATA_COPY_DIR}/pics/) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${DATA_COPY_DIR}/pics/) +endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/advanced.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/advanced.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/appearance.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/appearance.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/appearance.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/appearance.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/audio.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/audio.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/call-forward.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/call-forward.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/general.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/general.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/imaccounts.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/imaccounts.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/languages.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/languages.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/notifications.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/notifications.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/privacy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/privacy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/video.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/video.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/config/voicemail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/config/voicemail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/call.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/call.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/home.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/home.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/landline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/landline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/mobile.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/mobile.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/contact/sms.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/contact/sms.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/delete.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/delete.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/10_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/10_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/11_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/11_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/12_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/12_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/1_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/1_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/2_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/2_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/3_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/3_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/4_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/4_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/5_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/5_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/6_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/6_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/7_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/7_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/8_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/8_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/9_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/9_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/audiosmileys.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/audiosmileys.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/dialpad/dialpad.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/dialpad/dialpad.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/down.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/down.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/edit.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/edit.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/angel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/angel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/angry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/angry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/ap.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/ap.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/asl.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/asl.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/au.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/au.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/bat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/bat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/bearingteeth.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/bearingteeth.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/beer.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/beer.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/blank_look.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/blank_look.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/boy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/boy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/brb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/brb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/cake.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/cake.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/camera.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/camera.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/cat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/cat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/ci.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/ci.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/clock.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/clock.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/cocktail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/cocktail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/coins.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/coins.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/confused.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/confused.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/co.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/co.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/cry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/cry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/cup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/cup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/devil.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/devil.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/dog.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/dog.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/dunno.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/dunno.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/embarrassed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/embarrassed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/envelope.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/envelope.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/film.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/film.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/girl.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/girl.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/h5.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/h5.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/handcuffs.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/handcuffs.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/icondef.xml qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/icondef.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/icondef.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/icondef.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,674 @@ + + + + + :-) + :) + regular.png + + + :-D + :D + :> + :-d + megasmile.png + + + :-O + :o + omg.png + + + :-p + :p + tongue.png + + + ;-) + ;) + wink.png + + + :-( + :( + sad.png + + + 8o| + bearingteeth.png + + + :-@ + :@ + angry.png + + + 8-) + nerd.png + + + :'( + cry.png + + + :-S + :-s + confused.png + + + :-$ + embarrassed.png + + + :-| + :| + dunno.png + + + :-* + (K) + kiss.png + + + :-# + secret.png + + + (H) + shade.png + + + (A) + angel.png + + + +o( + sick.png + + + (brb) + brb.png + + + (6) + devil.png + + + (Y) + thumbs_up.png + + + (N) + thumbs_down.png + + + (X) + girl.png + + + (Z) + boy.png + + + (L) + love.png + + + (P) + camera.png + + + (G) + present.png + + + (%) + handcuffs.png + + + (F) + rose.png + + + (D) + cocktail.png + + + (B) + beer.png + + + (C) + cup.png + + + (^) + cake.png + + + (pi) + pizza.png + + + (M) + messenger.png + + + (sn) + snail.png + + + (tu) + tu.png + + + (bah) + sheep.png + + + :-[ + :[ + bat.png + + + (?) + asl.png + + + (@) + cat.png + + + (&) + dog.png + + + (8) + note.png + + + (ip) + ip.png + + + (S) + moon.png + + + (*) + star.png + + + (R) + rainbow.png + + + (#) + sun.png + + + (li) + li.png + + + (st) + st.png + + + (co) + co.png + + + (mp) + mp.png + + + (T) + phone.png + + + (E) + envelope.png + + + (ap) + ap.png + + + (au) + au.png + + + (~) + film.png + + + (O) + clock.png + + + (so) + so.png + + + (ci) + ci.png + + + (h5) + h5.png + + + (mo) + coins.png + + + + + :-) + :) + (-: + (: + regular.png + + + :-D + :D + megasmile.png + + + :-O + :O + omg.png + + + :-P + :P + tongue.png + + + ;-) + ;) + wink.png + + + :-( + :( + sad.png + + + :-/ + :-\ + confused.png + + + :"> + embarrassed.png + + + :-> + :> + sarcastic.png + + + :-| + :| + blank_look.png + + + B-) + shade.png + + + :-B + nerd.png + + + X-( + X( + nerd.png + + + :-X + :X + love.png + + + |-) + |) + l-) + l) + sleepy.png + + + @};- + rose.png + + + 0:-) + angel.png + + + >:) + devil.png + + + >:) + devil.png + + + :-$ + sshh.png + + + ~o) + cup.png + + + :-& + sick.png + + + =* + kiss.png + + + + + :-) + :) + regular.png + + + :-D + :D + :> + :-d + megasmile.png + + + :-O + :o + omg.png + + + :-p + :p + tongue.png + + + ;-) + ;) + wink.png + + + :-( + :( + sad.png + + + 8o| + bearingteeth.png + + + :-@ + :@ + angry.png + + + 8-) + nerd.png + + + :'( + cry.png + + + :-S + :-s + confused.png + + + :-$ + embarrassed.png + + + :-| + :| + dunno.png + + + :-* + (K) + kiss.png + + + :-# + secret.png + + + (H) + shade.png + + + (A) + angel.png + + + +o( + sick.png + + + (brb) + brb.png + + + (6) + devil.png + + + (Y) + thumbs_up.png + + + (N) + thumbs_down.png + + + (X) + girl.png + + + (Z) + boy.png + + + (L) + love.png + + + (P) + camera.png + + + (G) + present.png + + + (%) + handcuffs.png + + + (F) + rose.png + + + (D) + cocktail.png + + + (B) + beer.png + + + (C) + cup.png + + + (^) + cake.png + + + (pi) + pizza.png + + + (M) + messenger.png + + + (sn) + snail.png + + + (tu) + tu.png + + + (bah) + sheep.png + + + :-[ + :[ + bat.png + + + (?) + asl.png + + + (@) + cat.png + + + (&) + dog.png + + + (8) + note.png + + + (ip) + ip.png + + + (S) + moon.png + + + (*) + star.png + + + (R) + rainbow.png + + + (#) + sun.png + + + (li) + li.png + + + (st) + st.png + + + (co) + co.png + + + (mp) + mp.png + + + (T) + phone.png + + + (E) + envelope.png + + + (ap) + ap.png + + + (au) + au.png + + + (~) + film.png + + + (O) + clock.png + + + (so) + so.png + + + (ci) + ci.png + + + (h5) + h5.png + + + (mo) + coins.png + + + + + + :-) + :) + regular.png + + + :-D + :D + :> + :-d + megasmile.png + + + :-O + :o + omg.png + + + :-p + :p + tongue.png + + + ;-) + ;) + wink.png + + + :-( + :( + sad.png + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/ip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/ip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/kiss.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/kiss.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/li.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/li.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/love.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/love.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/megasmile.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/megasmile.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/messenger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/messenger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/moon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/moon.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/mp.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/mp.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/nerd.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/nerd.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/note.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/note.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/omg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/omg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/pizza.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/pizza.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/present.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/present.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/rainbow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/rainbow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/regular.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/regular.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/rose.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/rose.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sad.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sad.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sarcastic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sarcastic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/secret.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/secret.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/shade.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/shade.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sheep.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sheep.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sick.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sick.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sleepy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sleepy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/snail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/snail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/so.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/so.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sshh.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sshh.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/star.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/star.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/st.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/st.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/sun.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/sun.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/thumbs_down.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/thumbs_down.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/thumbs_up.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/thumbs_up.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/tongue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/tongue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/tu.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/tu.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/emoticons/wink.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/emoticons/wink.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/exit.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/exit.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/filetransfer/cleanup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/filetransfer/cleanup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/filetransfer/download_folder.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/filetransfer/download_folder.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/filetransfer/send-file.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/filetransfer/send-file.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/group_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/group_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/group_open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/group_open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/headers/conference.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/headers/conference.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/headers/file-transfer.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/headers/file-transfer.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/headers/login.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/headers/login.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/help.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/help.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/call_incoming.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/call_incoming.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/call_missed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/call_missed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/call_outgoing.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/call_outgoing.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/filter.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/filter.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/history/sms_sent.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/history/sms_sent.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/add_contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/add_contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/conference.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/conference.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/search_contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/search_contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/sms.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/sms.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/iconbar/webcam.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/iconbar/webcam.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/important.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/important.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/phonecall/avatar_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/phonecall/avatar_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/phonecall/encryption.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/phonecall/encryption.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/play.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/play.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_separator_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_separator_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_on_start_status_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_separator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_separator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_start_status_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_start_status_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_start_status_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_start_status_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_start_status_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_start_status_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_start_status_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_start_status_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/bar_start_status_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/bar_start_status_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/credit/call_forward.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/credit/call_forward.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/credit/qutecom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/credit/qutecom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/event/call_missed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/event/call_missed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/event/voicemessage_new.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/event/voicemessage_new.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/indicator_contract.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/indicator_contract.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/profilebar/indicator_expand.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/profilebar/indicator_expand.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/aim_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/aim_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/aim.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/aim.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/facebook_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/facebook_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/facebook.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/facebook.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/google-talk_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/google-talk_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/google-talk.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/google-talk.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/icq_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/icq_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/icq.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/icq.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/jabber_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/jabber_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/jabber.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/jabber.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/msn_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/msn_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/msn.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/msn.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/myspace_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/myspace_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/myspace.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/myspace.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_presence_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_presence_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_presence_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_presence_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_presence_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_presence_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_presence_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_presence_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_presence_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_presence_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/overlay_progress.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/overlay_progress.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/qutecom_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/qutecom_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/qutecom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/qutecom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/sip_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/sip_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/sip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/sip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/skype_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/skype_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/skype.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/skype.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/twitter_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/twitter_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/twitter.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/twitter.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/yahoo_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/yahoo_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/protocols/yahoo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/protocols/yahoo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/testcall.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/testcall.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/testcall.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/testcall.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/unknown.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/unknown.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/unknown-qutecom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/unknown-qutecom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/unknown-qutecom-sip.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/unknown-qutecom-sip.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/unknown-sip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/unknown-sip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/status/wdeal.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/status/wdeal.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/audio_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/audio_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/audio_status_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/audio_status_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/input_volume_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/input_volume_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/input_volume_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/input_volume_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/internet_status_connecting.mng and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/internet_status_connecting.mng differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/internet_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/internet_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/network_status_connecting.mng and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/network_status_connecting.mng differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/network_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/network_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/network_status_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/network_status_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/output_volume_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/output_volume_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/output_volume_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/output_volume_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/statusbar/output_volume.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/statusbar/output_volume.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/connecting.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/connecting.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/disconnected.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/disconnected.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/systray/online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/systray/online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/toaster/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/toaster/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/toaster/hangup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/toaster/hangup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/toaster/pickup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/toaster/pickup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/toaster/toaster-background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/toaster/toaster-background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/update.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/update.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/up.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/up.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/video_attach.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/video_attach.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/video_detach.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/video_detach.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/video_flip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/video_flip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/video_fullscreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/video_fullscreen.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/pics/video_unfullscreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/pics/video_unfullscreen.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/qutecom.qrc qutecom-2.2+dfsg1/qutecom/resources/qutecom.qrc --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/qutecom.qrc 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/qutecom.qrc 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,306 @@ + + + +pics/about_logo.png +pics/actions/accept-phone.png +pics/actions/add-contact.png +pics/actions/chat.png +pics/actions/delete.png +pics/actions/hangup-phone.png +pics/actions/hold-phone.png +pics/actions/resume-phone.png +pics/actions/send-sms-16.png +pics/actions/send_file.png +pics/add.png +pics/audio/microphone.png +pics/audio/speaker.png +pics/avatar_background.png +pics/avatars/default-avatar.png +pics/avatars/export11_96.png +pics/avatars/export12_96.png +pics/avatars/export13_96.png +pics/avatars/export14_96.png +pics/avatars/export15_96.png +pics/avatars/export16_96.png +pics/avatars/export17_96.png +pics/avatars/export18_96.png +pics/avatars/export19_96.png +pics/avatars/export1_96.png +pics/avatars/export20_96.png +pics/avatars/export21_96.png +pics/avatars/export22_96.png +pics/avatars/export23_96.png +pics/avatars/export24_96.png +pics/avatars/export25_96.png +pics/avatars/export26_96.png +pics/avatars/export27_96.png +pics/avatars/export28_96.png +pics/avatars/export29_96.png +pics/avatars/export2_96.png +pics/avatars/export30_96.png +pics/avatars/export31_96.png +pics/avatars/export32_96.png +pics/avatars/export33_96.png +pics/avatars/export34_96.png +pics/avatars/export35_96.png +pics/avatars/export36_96.png +pics/avatars/export37_96.png +pics/avatars/export38_96.png +pics/avatars/export39_96.png +pics/avatars/export3_96.png +pics/avatars/export40_96.png +pics/avatars/export4_96.png +pics/avatars/export5_96.png +pics/avatars/export6_96.png +pics/avatars/export7_96.png +pics/avatars/export8_96.png +pics/avatars/export9_96.png +pics/callbar/call_bar_button.png +pics/callbar/call_bar_button_hangup.png +pics/callbar/call_bar_button_hangup_on.png +pics/callbar/call_bar_button_on.png +pics/callbar/call_bar_fill.png +pics/cancel.png +pics/chat/bar_end.png +pics/chat/bar_fill.png +pics/chat/block-a.png +pics/chat/chat-room.png +pics/chat/chat_close.png +pics/chat/chat_emoticon_button.png +pics/chat/chat_emoticon_button_on.png +pics/chat/chat_send.png +pics/chat/contact-details.png +pics/chat/font_bold.png +pics/chat/font_bold_on.png +pics/chat/font_italic.png +pics/chat/font_italic_on.png +pics/chat/font_underline.png +pics/chat/font_underline_on.png +pics/chat/hide_avatar_frame.png +pics/chat/new_chat.png +pics/chat/show_avatar_frame.png +pics/close_normal.png +pics/close_on.png +pics/config/advanced.png +pics/config/audio.png +pics/config/call-forward.png +pics/config/general.png +pics/config/imaccounts.png +pics/config/languages.png +pics/config/notifications.png +pics/config/privacy.png +pics/config/video.png +pics/config/voicemail.png +pics/contact/call.png +pics/contact/chat.png +pics/contact/home.png +pics/contact/landline.png +pics/contact/mobile.png +pics/contact/sms.png +pics/delete.png +pics/dialpad/10_on.png +pics/dialpad/11_on.png +pics/dialpad/12_on.png +pics/dialpad/1_on.png +pics/dialpad/2_on.png +pics/dialpad/3_on.png +pics/dialpad/4_on.png +pics/dialpad/5_on.png +pics/dialpad/6_on.png +pics/dialpad/7_on.png +pics/dialpad/8_on.png +pics/dialpad/9_on.png +pics/dialpad/audiosmileys.png +pics/dialpad/dialpad.png +pics/down.png +pics/edit.png +pics/emoticons/angel.png +pics/emoticons/angry.png +pics/emoticons/ap.png +pics/emoticons/asl.png +pics/emoticons/au.png +pics/emoticons/bat.png +pics/emoticons/bearingteeth.png +pics/emoticons/beer.png +pics/emoticons/blank_look.png +pics/emoticons/boy.png +pics/emoticons/brb.png +pics/emoticons/cake.png +pics/emoticons/camera.png +pics/emoticons/cat.png +pics/emoticons/ci.png +pics/emoticons/clock.png +pics/emoticons/co.png +pics/emoticons/cocktail.png +pics/emoticons/coins.png +pics/emoticons/confused.png +pics/emoticons/cry.png +pics/emoticons/cup.png +pics/emoticons/devil.png +pics/emoticons/dog.png +pics/emoticons/dunno.png +pics/emoticons/embarrassed.png +pics/emoticons/envelope.png +pics/emoticons/film.png +pics/emoticons/girl.png +pics/emoticons/h5.png +pics/emoticons/handcuffs.png +pics/emoticons/ip.png +pics/emoticons/kiss.png +pics/emoticons/li.png +pics/emoticons/love.png +pics/emoticons/megasmile.png +pics/emoticons/messenger.png +pics/emoticons/moon.png +pics/emoticons/mp.png +pics/emoticons/nerd.png +pics/emoticons/note.png +pics/emoticons/omg.png +pics/emoticons/phone.png +pics/emoticons/pizza.png +pics/emoticons/present.png +pics/emoticons/rainbow.png +pics/emoticons/regular.png +pics/emoticons/rose.png +pics/emoticons/sad.png +pics/emoticons/sarcastic.png +pics/emoticons/secret.png +pics/emoticons/shade.png +pics/emoticons/sheep.png +pics/emoticons/sick.png +pics/emoticons/sleepy.png +pics/emoticons/snail.png +pics/emoticons/so.png +pics/emoticons/sshh.png +pics/emoticons/st.png +pics/emoticons/star.png +pics/emoticons/sun.png +pics/emoticons/thumbs_down.png +pics/emoticons/thumbs_up.png +pics/emoticons/tongue.png +pics/emoticons/tu.png +pics/emoticons/wink.png +pics/exit.png +pics/filetransfer/cleanup.png +pics/filetransfer/download_folder.png +pics/filetransfer/send-file.png +pics/group_close.png +pics/group_open.png +pics/headers/conference.png +pics/headers/file-transfer.png +pics/headers/login.png +pics/help.png +pics/history/call_incoming.png +pics/history/call_missed.png +pics/history/call_outgoing.png +pics/history/chat.png +pics/history/sms_sent.png +pics/iconbar/add_contact.png +pics/iconbar/chat.png +pics/iconbar/conference.png +pics/iconbar/search_contact.png +pics/iconbar/sms.png +pics/iconbar/webcam.png +pics/important.png +pics/open.png +pics/phonecall/avatar_background.png +pics/phonecall/encryption.png +pics/play.png +pics/profilebar/bar_end.png +pics/profilebar/bar_fill.png +pics/profilebar/bar_on_end.png +pics/profilebar/bar_on_fill.png +pics/profilebar/bar_on_separator_left.png +pics/profilebar/bar_on_start_status_away.png +pics/profilebar/bar_on_start_status_donotdisturb.png +pics/profilebar/bar_on_start_status_invisible.png +pics/profilebar/bar_on_start_status_offline.png +pics/profilebar/bar_on_start_status_online.png +pics/profilebar/bar_separator.png +pics/profilebar/bar_start_status_away.png +pics/profilebar/bar_start_status_donotdisturb.png +pics/profilebar/bar_start_status_invisible.png +pics/profilebar/bar_start_status_offline.png +pics/profilebar/bar_start_status_online.png +pics/profilebar/credit/call_forward.png +pics/profilebar/credit/qutecoms.png +pics/profilebar/event/call_missed.png +pics/profilebar/event/voicemessage_new.png +pics/profilebar/indicator_contract.png +pics/profilebar/indicator_expand.png +pics/protocols/aim.png +pics/protocols/aim_off.png +pics/protocols/icq.png +pics/protocols/icq_off.png +pics/protocols/jabber.png +pics/protocols/jabber_off.png +pics/protocols/google-talk.png +pics/protocols/google-talk_off.png +pics/protocols/msn.png +pics/protocols/msn_off.png +pics/protocols/overlay_error.png +pics/protocols/overlay_presence_away.png +pics/protocols/overlay_presence_donotdisturb.png +pics/protocols/overlay_presence_invisible.png +pics/protocols/overlay_presence_offline.png +pics/protocols/overlay_presence_online.png +pics/protocols/overlay_progress.png +pics/protocols/sip.png +pics/protocols/sip_off.png +pics/protocols/qutecom.png +pics/protocols/qutecom_off.png +pics/protocols/yahoo.png +pics/protocols/yahoo_off.png +pics/protocols/facebook.png +pics/protocols/myspace.png +pics/protocols/skype.png +pics/protocols/twitter.png +pics/protocols/facebook_off.png +pics/protocols/myspace_off.png +pics/protocols/skype_off.png +pics/protocols/twitter_off.png +pics/status/away.png +pics/status/donotdisturb.png +pics/status/invisible.png +pics/status/offline.png +pics/status/online.png +pics/status/testcall.png +pics/status/unknown-sip.png +pics/status/unknown-qutecom.png +pics/status/unknown.png +pics/status/wdeal.png +pics/statusbar/audio_status_error.png +pics/statusbar/audio_status_ok.png +pics/statusbar/input_volume_error.png +pics/statusbar/input_volume_ok.png +pics/statusbar/internet_status_connecting.mng +pics/statusbar/internet_status_error.png +pics/statusbar/network_status_connecting.mng +pics/statusbar/network_status_error.png +pics/statusbar/network_status_ok.png +pics/statusbar/output_volume_error.png +pics/statusbar/output_volume_ok.png +pics/systray/away.png +pics/systray/connecting.png +pics/systray/disconnected.png +pics/systray/donotdisturb.png +pics/systray/invisible.png +pics/systray/offline.png +pics/systray/online.png +pics/toaster/chat.png +pics/toaster/hangup.png +pics/toaster/pickup.png +pics/toaster/toaster-background.png +pics/up.png +pics/update.png +pics/video_attach.png +pics/video_detach.png +pics/video_flip.png +pics/video_fullscreen.png +pics/video_unfullscreen.png + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/callclosed.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/callclosed.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/callhold.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/callhold.wav differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/resources/sounds/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +if (COPY_DATA_FILES_ON_CONFIGURE) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${DATA_COPY_DIR}/sounds) +endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/contactoffline.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/contactoffline.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/contactonline.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/contactonline.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/doublecall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/doublecall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/incomingcall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/incomingcall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/incomingchat.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/incomingchat.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/incomingmms.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/incomingmms.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/incomingsms.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/incomingsms.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/once_a2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/once_a2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/once_b1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/once_b1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/once_b2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/once_b2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/once_c1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/once_c1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/once_c2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/once_c2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/outgoingcallbusy.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/outgoingcallbusy.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/outgoingcall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/outgoingcall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/ringin.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/ringin.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/combo_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/combo_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/dialpad.xml qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/dialpad.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/dialpad.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/dialpad.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,17 @@ + + + + + + + + + + + + + + + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_0.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_0.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_3.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_3.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_4.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_4.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_5.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_5.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_6.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_6.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_7.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_7.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_8.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_8.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_9.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_9.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_pound.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_pound.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/default/sound_star.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/default/sound_star.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/combo_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/combo_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_image.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_image.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_image.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_image.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,23186 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + MEDHI N. + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_mask.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_mask.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_mask.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad_mask.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad.xml qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad.xml --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/dialpad.xml 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/dialpad.xml 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_0.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_0.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_0.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_0.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_1.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_1.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_1.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_1.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,105 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_2.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_2.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_2.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_2.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,99 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_3.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_3.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_3.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_3.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,94 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_4.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_4.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_4.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_4.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,117 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_5.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_5.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_5.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_5.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,1080 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_6.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_6.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_6.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_6.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_7.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_7.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_7.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_7.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,164 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_8.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_8.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_8.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_8.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,300 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_9.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_9.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_9.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_9.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_pound.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_pound.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_pound.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_pound.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,24 @@ + + + + + +]> + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_star.svg qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_star.svg --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/layer_star.svg 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/layer_star.svg 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ + + + + + +]> + + + + + + + + + + + + + + + + + + + + + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_0.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_0.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_3.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_3.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_4.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_4.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_5.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_5.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_6.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_6.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_7.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_7.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_8.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_8.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_9.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_9.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_pound.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_pound.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/sounds/tones/jungle/sound_star.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/sounds/tones/jungle/sound_star.wav differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/resources/webpages/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/webpages/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +if (COPY_DATA_FILES_ON_CONFIGURE) + ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${DATA_COPY_DIR}/webpages/.) +endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu_bas_d.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu_bas_d.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu_bas_g.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu_bas_g.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu_bas.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu_bas.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu_d.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu_d.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu_g.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu_g.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/bleu.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/bleu.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/houpeto-anim.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/houpeto-anim.gif differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/loading.html qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/loading.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/loading.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/loading.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ + + + + + QuteCom 2.2 + + + + + +
+
+ Please wait while logging in... +
+
+ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/logged-off.html qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/logged-off.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/logged-off.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/logged-off.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ + + + + + QuteCom 2.0 + + + + + +
+ +
+ Logged off... +
+ +
+ + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/sip.html qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/sip.html --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/resources/webpages/windows/sip.html 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/resources/webpages/windows/sip.html 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,203 @@ + + + + + QuteCom 2.0 + + + + + + +
+
+ + + +
+
 
+
+ Welcome on the QuteCom software +
+
 
+
+
+
+ +
+

+ + Welcome to the QuteCom softphone.
+
+ This program allows you to make computer-to-computer phone calls and to + create conference calls. If your provider supports SIP/Simple, you can + also use chat and see your contacts' presence status. You may also be + able to buy credit with your provider to make phone calls to land lines + and mobile phones.
+ + +

+
+ +
+
+
 
+
 
+
+ +
+
+ + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/buildid/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/src/buildid/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/buildid/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/buildid/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +ow_create_static_library(owbuildid) + +ow_use_private_libraries( + tinyxml + curl + ffmpeg + owutil +) + +if(IMWRAPPER_BACKEND_MULTI) + ow_use_private_libraries( + glib2 + libpurple + ) +endif(IMWRAPPER_BACKEND_MULTI) + +if (NOT APPLE AND OWSOUND_PORTAUDIO_SUPPORT) + ow_use_private_libraries( + portaudio + ) +endif (NOT APPLE AND OWSOUND_PORTAUDIO_SUPPORT) + +if (BUILDID_SUPPORT) + ow_add_private_definitions( + -DDD_BUILDID=${CURRENT_DATE_TIME}LL + -DDD_VERSION=${APPLICATION_VERSION} + -DDD_REVISION=${SVN_REVISION} + -DDD_SOFTPHONE_NAME=qutecom + ) +else (BUILDID_SUPPORT) + ow_add_private_definitions( + -DDD_BUILDID=0LL + -DDD_VERSION=0 + -DDD_REVISION=0 + -DDD_SOFTPHONE_NAME=qutecom + ) +endif (BUILDID_SUPPORT) + +ow_add_public_include_dirs( + ${CMAKE_CURRENT_SOURCE_DIR} +) + +ow_add_sources( + ../QuteComBuildId.cpp +) + +ow_create_project_binary() diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/src/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,213 @@ +ow_create_static_library(owphone) + +ow_use_public_libraries( + owsettings + owsystem + owhttp + owserialization + owserializer + owsocket + owimwrapper + owsipwrapper + owsound +) + +if(IMWRAPPER_BACKEND_MULTI) + ow_use_public_libraries( + owmultiimwrapper + ) +endif(IMWRAPPER_BACKEND_MULTI) + +ow_use_private_libraries( + webcam + netlib + owsl + tinyxml + owphapiwrapper + owbuildid + owqtutil + qt4 +) + +if (APPLE) + ow_use_public_frameworks( + SystemConfiguration + ) +endif (APPLE) + +ow_add_public_include_dirs( + ${CMAKE_CURRENT_SOURCE_DIR} + ${CMAKE_CURRENT_SOURCE_DIR}/model/coipmanager/include + ${CMAKE_CURRENT_SOURCE_DIR}/model/coipmanager/filesessionmanager/include +) + +ow_add_sources( + model/QuteCom.cpp + model/SipCallbacks.cpp + model/config/Config.cpp + model/config/ConfigImporter.cpp + model/config/ConfigXMLSerializer.cpp + model/config/ConfigManager.cpp + model/config/ConfigManagerFileStorage.cpp + model/config/EnumToolBarMode.cpp + model/config/LanguageList.cpp + model/config/StartupSettingListener.cpp + model/config/CommandLineParser.cpp + model/connect/Connect.cpp + model/connect/ConnectHandler.cpp + model/chat/ChatHandler.cpp + model/phonecall/SipAddress.cpp + model/phonecall/PhoneCall.cpp + model/phonecall/PhoneCallState.cpp + model/phonecall/PhoneCallStateClosed.cpp + model/phonecall/PhoneCallStateUnknown.cpp + model/phonecall/PhoneCallStateDialing.cpp + model/phonecall/PhoneCallStateError.cpp + model/phonecall/PhoneCallStateHold.cpp + model/phonecall/PhoneCallStateIncoming.cpp + model/phonecall/PhoneCallStateTalking.cpp + model/phonecall/PhoneCallStateResumed.cpp + model/phonecall/PhoneCallStateRinging.cpp + model/phonecall/PhoneCallStateRingingStart.cpp + model/phonecall/PhoneCallStateRingingStop.cpp + model/phonecall/PhoneCallStateMissed.cpp + model/phonecall/ConferenceCall.cpp + model/phonecall/ConferenceCallParticipant.cpp + model/phoneline/PhoneLine.cpp + model/phoneline/PhoneLineStateUnknown.cpp + model/phoneline/PhoneLineStateProgress.cpp + model/phoneline/PhoneLineStateOk.cpp + model/phoneline/PhoneLineStateClosed.cpp + model/phoneline/PhoneLineStateTimeout.cpp + model/phoneline/PhoneLineStateServerError.cpp + model/phoneline/PhoneLineStateAuthenticationError.cpp + model/network/NetworkProxyDiscovery.cpp + model/network/NetworkDiscovery.cpp + model/network/NetworkObserver.cpp + model/account/qutecom/QuteComAccount.cpp + model/account/qutecom/QuteComAccountParser.cpp + model/account/qutecom/QuteComAccountXMLSerializer.cpp + model/account/SipAccount.cpp + model/account/SipAccountXMLSerializer.cpp + model/presence/Presence.cpp + model/presence/PresenceHandler.cpp + model/presence/MyPresenceStateOnline.cpp + model/presence/MyPresenceStateOffline.cpp + model/presence/MyPresenceStateAway.cpp + model/presence/MyPresenceStateDoNotDisturb.cpp + model/presence/MyPresenceStateInvisible.cpp + model/contactlist/Contact.cpp + model/contactlist/ContactProfile.cpp + model/contactlist/ContactPresenceState.cpp + model/contactlist/ContactPresenceStateAway.cpp + model/contactlist/ContactPresenceStateOnline.cpp + model/contactlist/ContactPresenceStateOffline.cpp + model/contactlist/ContactPresenceStateDoNotDisturb.cpp + model/contactlist/ContactPresenceStateUnknown.cpp + model/contactlist/ContactPresenceStateUnavailable.cpp + model/contactlist/ContactXMLSerializer.cpp + model/contactlist/ContactXMLSerializer1.cpp + model/contactlist/ContactList.cpp + model/contactlist/ContactListXMLSerializer.cpp + model/contactlist/ContactListXMLSerializer1.cpp + model/contactlist/ContactGroup.cpp + model/contactlist/ContactListFileStorage.cpp + model/contactlist/ContactListFileStorage1.cpp + model/contactlist/ContactListRPCStorage.cpp + model/contactlist/IMContactListHandler.cpp + model/profile/Avatar.cpp + model/profile/AvatarList.cpp + model/profile/IMAccountManager.cpp + model/profile/Profile.cpp + model/profile/ProfileXMLSerializer.cpp + model/profile/UserProfile.cpp + model/profile/UserProfileHandler.cpp + model/profile/UserProfileXMLSerializer.cpp + model/profile/UserProfileFileStorage.cpp + model/profile/UserProfileFileStorage1.cpp + model/profile/EnumSex.cpp + model/profile/StreetAddress.cpp + model/profile/StreetAddressXMLSerializer.cpp + model/history/History.cpp + model/history/HistoryMemento.cpp + model/history/HistoryMementoCollection.cpp + model/webservices/QuteComWebService.cpp + model/webservices/sms/WsSms.cpp + model/webservices/info/WsInfo.cpp + model/webservices/softupdate/WsSoftUpdate.cpp + model/webservices/callforward/WsCallForward.cpp + model/webservices/url/WsUrl.cpp + model/classic/ClassicExterminator.cpp + model/commandserver/CommandServer.cpp + model/commandserver/CommandClient.cpp + + # FIXME: This part will be removed when coipmanager will be moved to libs + model/coipmanager/src/CoIpManager.cpp + model/coipmanager/src/Session.cpp + + model/coipmanager/filesessionmanager/src/FileSessionManager.cpp + model/coipmanager/filesessionmanager/src/IFileSession.cpp + model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp + model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp + model/coipmanager/filesessionmanager/src/ISendFileSession.cpp + model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp + model/coipmanager/filesessionmanager/src/SendFileSession.cpp + model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp + model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp + model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp + ## + + model/dtmf/Tone.cpp + model/dtmf/DtmfTheme.cpp + model/dtmf/DtmfThemeManager.cpp + + control/CQuteCom.cpp + control/chat/CChatHandler.cpp + control/dtmf/CDtmfThemeManager.cpp + control/phoneline/CPhoneLine.cpp + control/phonecall/CPhoneCall.cpp + control/phonecall/CConferenceCall.cpp + control/profile/CUserProfile.cpp + control/profile/CUserProfileHandler.cpp + control/contactlist/CContactList.cpp + control/webservices/sms/CSms.cpp + control/webservices/softupdate/CSoftUpdate.cpp + control/webservices/info/CWsInfo.cpp + control/webservices/callforward/CWsCallForward.cpp + control/history/CHistory.cpp + + presentation/PFactory.cpp +) + +qt4_wrap_cpp(${PROJECT_NAME}_SRCS + model/network/NetworkObserver.h +) + +if (PHAPI_SPEEXWB_REPLACES_G726WB_HACK) + ow_add_private_definitions( + -DPH_SPEEXWB_REPLACES_G726WB + ) +endif (PHAPI_SPEEXWB_REPLACES_G726WB_HACK) + +if (LINUX) + if (QUTECOM_RESOURCEDIR_PATH) + ow_add_private_definitions( + -DOW_RESOURCEDIR='"${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}"' + ) + endif (QUTECOM_RESOURCEDIR_PATH) +endif (LINUX) + +if (PHAPI_CODEC_ILBC_SUPPORT) + ow_add_private_definitions( + -DENABLE_ILBC=1 + ) +endif (PHAPI_CODEC_ILBC_SUPPORT) + +ow_create_project_binary() + +# TODO: test, xpcom, gtk? +subdirs( + #presentation/gtk + presentation/qt + #presentation/xpcom +) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/chat/CChatHandler.cpp qutecom-2.2+dfsg1/qutecom/src/control/chat/CChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/chat/CChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/chat/CChatHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CChatHandler.h" + +#include +#include + +#include +#include + +#include + +#include +#include +#include + +CChatHandler::CChatHandler(ChatHandler & chatHandler, CUserProfile & cUserProfile) + : _chatHandler(chatHandler), + _cUserProfile(cUserProfile) { + + _pChatHandler = NULL; + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CChatHandler::initPresentationThreadSafe, this)); + PFactory::postEvent(event); +} + +CChatHandler::~CChatHandler() { + + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&PChatHandler::deletePresentation, _pChatHandler)); + PFactory::postEvent(event); +} + +void CChatHandler::initPresentationThreadSafe() { + + _pChatHandler = PFactory::getFactory().createPresentationChatHandler(*this); + _chatHandler.newIMChatSessionCreatedEvent += boost::bind(&CChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); +} + +Presentation * CChatHandler::getPresentation() const { + return _pChatHandler; +} + +CQuteCom & CChatHandler::getCQuteCom() const { + return _cUserProfile.getCQuteCom(); +} + +CUserProfile & CChatHandler::getCUserProfile() const { + return _cUserProfile; +} + +void CChatHandler::newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CChatHandler::newIMChatSessionCreatedEventHandlerThreadSafe, this, _1), imChatSession); + PFactory::postEvent(event); +} + +void CChatHandler::newIMChatSessionCreatedEventHandlerThreadSafe(IMChatSession & imChatSession) { + LOG_DEBUG("new IMChatSessionCreatedEvent"); + if (_pChatHandler) { + _pChatHandler->newIMChatSessionCreatedEvent(imChatSession); + } +} + +void CChatHandler::createSession(const std::string & imAccountId, const IMContactSet & imContactSet) { + _chatHandler.createSession(imAccountId, imContactSet); +} + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/chat/CChatHandler.h qutecom-2.2+dfsg1/qutecom/src/control/chat/CChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/chat/CChatHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/chat/CChatHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCCHATHANDLER_H +#define OWCCHATHANDLER_H + +#include + +class Presentation; +class ChatHandler; +class CUserProfile; +class CQuteCom; +class IMAccount; +class IMContactSet; +class IMChatSession; +class PChatHandler; + +/** + * + * @ingroup control + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class CChatHandler : public Control { +public: + + CChatHandler(ChatHandler & chatHandler, CUserProfile & cUserProfile); + + ~CChatHandler(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + CUserProfile & getCUserProfile() const; + + /** + * @see ChatHandler::createSession() + */ + void createSession(const std::string & imAccountId, const IMContactSet & imContactSet); + +private: + + void initPresentationThreadSafe(); + + void newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession); + + void newIMChatSessionCreatedEventHandlerThreadSafe(IMChatSession & imChatSession); + + ChatHandler & _chatHandler; + + PChatHandler * _pChatHandler; + + CUserProfile & _cUserProfile; +}; + +#endif //OWCCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/contactlist/CContactList.cpp qutecom-2.2+dfsg1/qutecom/src/control/contactlist/CContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/contactlist/CContactList.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/contactlist/CContactList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,322 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CContactList.h" + +#include +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +CContactList::CContactList(ContactList & contactList, CQuteCom & cQuteCom) + : _contactList(contactList), + _cQuteCom(cQuteCom) { + + _pContactList = NULL; + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::initPresentationThreadSafe, this)); + PFactory::postEvent(event); +} + +CContactList::~CContactList() { + /*delete _pContactList;*/ + _pContactList = NULL; +} + +void CContactList::initPresentationThreadSafe() { + _pContactList = PFactory::getFactory().createPresentationContactList(*this); + + _contactList.contactGroupAddedEvent += boost::bind(&CContactList::contactGroupAddedEventHandler, this, _1, _2); + _contactList.contactGroupRemovedEvent += boost::bind(&CContactList::contactGroupRemovedEventHandler, this, _1, _2); + _contactList.contactAddedEvent += boost::bind(&CContactList::contactAddedEventHandler, this, _1, _2); + _contactList.contactRemovedEvent += boost::bind(&CContactList::contactRemovedEventHandler, this, _1, _2); + _contactList.contactMovedEvent += boost::bind(&CContactList::contactMovedEventHandler, this, _1, _2, _3, _4); + _contactList.contactChangedEvent += boost::bind(&CContactList::contactChangedEventHandler, this, _1, _2); +} + +Presentation * CContactList::getPresentation() const { + return _pContactList; +} + +CQuteCom & CContactList::getCQuteCom() const { + return _cQuteCom; +} + +void CContactList::contactAddedEventHandler(ContactList & sender, Contact & contact) { + //We do not emit the event if the Contact has no group because the GUI + //does not support a Contact with no group + if (!contact.getGroupId().empty()) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactAddedEventHandlerThreadSafe, this, _1), contact.getUUID()); + PFactory::postEvent(event); + } +} + +void CContactList::contactAddedEventHandlerThreadSafe(std::string contactId) { + _pContactList->contactAddedEvent(contactId); +} + +void CContactList::contactRemovedEventHandler(ContactList & sender, Contact & contact) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactRemovedEventHandlerThreadSafe, this, _1), contact.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactRemovedEventHandlerThreadSafe(std::string contactId) { + _pContactList->contactRemovedEvent(contactId); +} + +void CContactList::contactMovedEventHandler(ContactList & sender, ContactGroup & dstContactGroup, + ContactGroup & srcContactGroup, Contact & contact) { + + typedef ThreadEvent3 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactMovedEventHandlerThreadSafe, this, _1, _2, _3), + dstContactGroup.getUUID(), srcContactGroup.getUUID(), contact.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactMovedEventHandlerThreadSafe(std::string dstGroupId, std::string srcGroupId, std::string contactId) { + _pContactList->contactMovedEvent(dstGroupId, srcGroupId, contactId); +} + +void CContactList::contactGroupAddedEventHandler(ContactList & sender, ContactGroup & contactGroup) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupAddedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactGroupAddedEventHandlerThreadSafe(std::string groupId) { + _pContactList->contactGroupAddedEvent(groupId); +} + +void CContactList::contactGroupRemovedEventHandler(ContactList & sender, ContactGroup & contactGroup) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupRemovedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactGroupRemovedEventHandlerThreadSafe(std::string groupId) { + _pContactList->contactGroupRemovedEvent(groupId); +} + +void CContactList::contactGroupRenamedEventHandler(ContactList & sender, ContactGroup & contactGroup) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupRenamedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactGroupRenamedEventHandlerThreadSafe(std::string groupId) { + _pContactList->contactGroupRenamedEvent(groupId); +} + +void CContactList::contactChangedEventHandler(ContactList & sender, Contact & contact) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactChangedEventHandlerThreadSafe, this, _1), contact.getUUID()); + PFactory::postEvent(event); +} + +void CContactList::contactChangedEventHandlerThreadSafe(std::string contactId) { + if(_pContactList) + _pContactList->contactChangedEvent(contactId); +} + +std::vector< std::pair > CContactList::getContactGroups() const { + std::vector< std::pair > result; + + RecursiveMutex::ScopedLock lock(_contactList._mutex); + ContactList::ContactGroupSet contactGroups = _contactList.getContactGroupSet(); + //_contactList.unlock(); + + for (ContactList::ContactGroupSet::const_iterator it = contactGroups.begin(); + it != contactGroups.end(); ++it) { + result.push_back(std::pair((*it).getUUID(), (*it).getName())); + } + + return result; +} + +std::string CContactList::getContactGroupName(const std::string & groupId) const { + std::string result; + + RecursiveMutex::ScopedLock lock(_contactList._mutex); + //_contactList.lock(); + + ContactGroup * contactGroup = _contactList.getContactGroup(groupId); + if (contactGroup) { + result = contactGroup->getName(); + } + + //_contactList.unlock(); + + return result; +} + +std::string CContactList::getContactGroupIdFromName(const std::string & groupName) const { + return _contactList.getContactGroupIdFromName(groupName); +} + +ContactProfile CContactList::getContactProfile(const std::string & contactId) const { + ContactProfile result; + Contact * contact = getContact(contactId); + if (contact) { + result = *contact; + } + + return result; +} + +Contact * CContactList::getContact(const std::string & contactId) const { + return _contactList.getContact(contactId); +} + +StringList CContactList::getContactIds() const { + StringList result; + + RecursiveMutex::ScopedLock lock(_contactList._mutex); + //_contactList.lock(); + + const ContactList::Contacts & contacts = _contactList.getContacts(); + for (ContactList::Contacts::const_iterator it = contacts.begin(); + it != contacts.end(); ++it) { + result += (*it).getUUID(); + } + + //_contactList.unlock(); + + return result; +} + +void CContactList::addContact(const ContactProfile & contactProfile) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::addContactThreadSafe, this, _1), contactProfile); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::addContactThreadSafe(ContactProfile contactProfile) { + Contact & contact = _contactList.createContact(); + contact = contactProfile; + + LOG_DEBUG("adding new contact=" + contact.getFirstName() + " in group=" + contact.getGroupId()); +} + +void CContactList::removeContact(const std::string & contactId) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::removeContactThreadSafe, this, _1), contactId); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::removeContactThreadSafe(std::string contactId) { + Contact * contact = getContact(contactId); + if (contact) { + _contactList.removeContact(*contact); + } +} + +void CContactList::updateContact(const ContactProfile & contactProfile) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::updateContactThreadSafe, this, _1), contactProfile); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::updateContactThreadSafe(ContactProfile contactProfile) { + Contact * contact = getContact(contactProfile.getUUID()); + if (contact) { + (*contact) = contactProfile; + } +} + +void CContactList::addContactGroup(const std::string & name) { + /* + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::addContactGroupThreadSafe, this, _1), name); + _modelThread.postEvent(event); + */ + //FIXME: Here we do not change the thread because QtProfileDetails needs this method to be blocking + //We should change the code in QtProfileDetails + _contactList.addContactGroup(name); +} + +void CContactList::addContactGroupThreadSafe(std::string name) { + _contactList.addContactGroup(name); +} + +void CContactList::removeContactGroup(const std::string & groupId) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::removeContactGroupThreadSafe, this, _1), groupId); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::removeContactGroupThreadSafe(std::string groupId) { + _contactList.removeContactGroup(groupId); +} + +void CContactList::renameContactGroup(const std::string & groupId, const std::string & name) { + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::renameContactGroupThreadSafe, this, _1, _2), groupId, name); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::renameContactGroupThreadSafe(std::string groupId, std::string name) { + _contactList.renameContactGroup(groupId, name); +} + +void CContactList::merge(const std::string & dstContactId, const std::string & srcContactId) { + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::mergeThreadSafe, this, _1, _2), dstContactId, srcContactId); + QuteCom::getInstance().postEvent(event); +} + +void CContactList::mergeThreadSafe(std::string dstContactId, std::string srcContactId) { + Contact * dstContact = getContact(dstContactId); + Contact * srcContact = getContact(srcContactId); + if (dstContact && srcContact) { + _contactList.mergeContacts(*dstContact, *srcContact); + } +} + +std::string CContactList::findContactThatOwns(const IMContact & imContact) { + std::string result; + + Contact * contact = _contactList.findContactThatOwns(imContact); + if (contact) { + result = contact->getUUID(); + } + + return result; +} + +std::string CContactList::findContactThatOwns(const std::string & number) { + std::string result; + + Contact * contact = _contactList.findContactThatOwns(number); + if (contact) { + result = contact->getUUID(); + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/contactlist/CContactList.h qutecom-2.2+dfsg1/qutecom/src/control/contactlist/CContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/contactlist/CContactList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/contactlist/CContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,262 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCCONTACTLIST_H +#define OWCCONTACTLIST_H + +#include + +#include + +#include +#include + +class Presentation; +class ContactList; +class Contact; +class ContactGroup; +class ContactProfile; +class CQuteCom; +class PContactList; +class IMContact; + +/** + * + * @ingroup control + * @author Tanguy Krotoff + */ +class CContactList : public Control { + friend class CUserProfile; +public: + + CContactList(ContactList & contactList, CQuteCom & cQuteCom); + + ~CContactList(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + /** + * Gets a list of pair of . + */ + std::vector< std::pair > getContactGroups() const; + + /** + * Gets the name of a ContactGroup given its UUID. + * + * @param groupId the UUID of the desired group + * @return the group name, a null string if not found + */ + std::string getContactGroupName(const std::string & groupId) const; + + /** + * @see ContactList::getContactGroupIdFromName() + */ + std::string getContactGroupIdFromName(const std::string & groupName) const; + + /** + * Constructs a ContactProfile from a Contact contained in the model. + * + * If no Contact with the given contactId exists an empty ContactProfile + * is returned. + * + * Used by the GUI to get data from the model. + * + * @param contactId the Contact UUID od the desired Contact + * @return a ContactProfile based on the found Contact + */ + ContactProfile getContactProfile(const std::string & contactId) const; + + /** + * @see ContactList::findContactThatOwns() + */ + std::string findContactThatOwns(const IMContact & imContact); + + std::string findContactThatOwns(const std::string & number); + + /** + * Gets all existing Contact Ids. + * + * @return a string list containing the UUID of the Contacts. + */ + StringList getContactIds() const; + + /** + * Adds a Contact to the ContactList. + * + * This method is used by GUI to add a Contact into the model. + * + * The Contact will be created from the given ContactProfile. + * + * @param contactProfile the ContactProfile that will be used to create the Contact + */ + void addContact(const ContactProfile & contactProfile); + + /** + * @see ContactList::removeContact() + */ + void removeContact(const std::string & contactId); + + /** + * Updates a Contact from a ContactProfile. + * + * @param contactProfile the ContactProfile which will full the Contact + */ + void updateContact(const ContactProfile & contactProfile); + + /** + * Adds a contact group. + * + * @param name name of the ContactGroup to add + */ + void addContactGroup(const std::string & name); + + /** + * @see ContactList::removeContactGroup() + */ + void removeContactGroup(const std::string & groupId); + + /** + * @see ContactList::renameContactGroup() + */ + void renameContactGroup(const std::string & groupId, const std::string & name); + + /** + * @see ContactList::mergeContacts() + */ + void merge(const std::string & dstContactId, const std::string & srcContactId); + + /** + * FIXME: this part should not exist. It is here until QtChatRoomInviteDlg + * will be refactored. + */ + ContactList & getContactList() { return _contactList; } + +private: + + void initPresentationThreadSafe(); + + /** + * Returns a pointer to the Contact associated with the given contactId + * or NULL if not found. + * + * Used by the Control to retrieve a Contact grom a contact UUID given by + * the GUI. + * + * @param contactId the UUID of the desired Contact + * @return the found Contact + */ + Contact * getContact(const std::string & contactId) const; + + /** + * @see ContactList::contactAddedEvent + */ + void contactAddedEventHandler(ContactList & sender, Contact & contact); + + void contactAddedEventHandlerThreadSafe(std::string contactId); + + /** + * @see ContactList::contactRemovedEvent + */ + void contactRemovedEventHandler(ContactList & sender, Contact & contact); + + void contactRemovedEventHandlerThreadSafe(std::string contactId); + + /** + * @see ContactList::contactGroupAddedEvent + */ + void contactGroupAddedEventHandler(ContactList & sender, ContactGroup & contactGroup); + + void contactGroupAddedEventHandlerThreadSafe(std::string groupId); + + /** + * @see ContactList::contactGroupRemovedEvent + */ + void contactGroupRemovedEventHandler(ContactList & sender, ContactGroup & contactGroup); + + void contactGroupRemovedEventHandlerThreadSafe(std::string groupId); + + /** + * @see ContactList::contactGroupRenamedEvent + */ + void contactGroupRenamedEventHandler(ContactList & sender, ContactGroup & contactGroup); + + void contactGroupRenamedEventHandlerThreadSafe(std::string groupId); + + /** + * @see ContactList::contactGroupMovedEvent + */ + void contactMovedEventHandler(ContactList & sender, ContactGroup & dstContactGroup, + ContactGroup & srcContactGroup, Contact & contact); + + void contactMovedEventHandlerThreadSafe(std::string dstGroupId, std::string srcGroupId, std::string contactId); + + /** + * @see ContactList::contactChangedEvent + */ + void contactChangedEventHandler(ContactList & sender, Contact & contact); + + void contactChangedEventHandlerThreadSafe(std::string contactId); + + /** + * @see addContact + */ + void addContactThreadSafe(ContactProfile contactProfile); + + /** + * @see removeContact + */ + void removeContactThreadSafe(std::string contactId); + + /** + * @see updateContact + */ + void updateContactThreadSafe(ContactProfile contactProfile); + + /** + * @see addContactGroup + */ + void addContactGroupThreadSafe(std::string name); + + /** + * @see removeContactGroup + */ + void removeContactGroupThreadSafe(std::string groupId); + + /** + * @see renameContactGroup + */ + void renameContactGroupThreadSafe(std::string groupId, std::string name); + + /** + * @see merge + */ + void mergeThreadSafe(std::string dstContactId, std::string srcContactId); + + /** Direct link to the model. */ + ContactList & _contactList; + + /** Direct link to the presentation via an interface. */ + PContactList * _pContactList; + + CQuteCom & _cQuteCom; +}; + +#endif //OWCCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/Control.h qutecom-2.2+dfsg1/qutecom/src/control/Control.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/Control.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/Control.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTROL_H +#define OWCONTROL_H + +#include +#include + +class CQuteCom; +class Presentation; +class Control; + +/** + * @defgroup control Control Component + * + * Like the model component, the control is part of the heart of QuteCom. + * It is developped in pure C++ using libraries like LibUtil, Boost, TinyXML and Curl. + * This component has a very limited 'intelligence', everything is in fact done + * inside the model component. + * + * The control component goal is to make the jonction between the model component + * and the presentation component. + * + * The control component receives informations from the model component via the design + * pattern observer. On the other hand it sends informations to the model component directly. + * The control component dialogs with the presentation component via interfaces thus allowing + * different graphical interfaces to be implemented (Qt, GTK+...). + * + * Control component deal with the switch between the thread from the model and the thread + * from the presentation component. + * + * All classes inside the control component are named using a leading 'C' letter and + * are inside the subdirectory control. + */ + +/** + * Interface for control component classes. + * + * @ingroup control + * @author Tanguy Krotoff + */ +class Control : Interface, public Trackable { +public: + + virtual ~Control() { + } + + /** + * Gets the Presentation associated with this Control. + * + * @return Presentation layer associated with this Control + */ + virtual Presentation * getPresentation() const = 0; + + /** + * Gets the root Control object. + * + * The root Control object is the one that creates all the Control objects. + * + * @return root Control object + */ + virtual CQuteCom & getCQuteCom() const = 0; + +protected: + + /** + * Creates the presentation component in a thread safe way (via a postEvent()). + */ + virtual void initPresentationThreadSafe() = 0; +}; + +#endif //OWCONTROL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/CQuteCom.cpp qutecom-2.2+dfsg1/qutecom/src/control/CQuteCom.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/CQuteCom.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/CQuteCom.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,143 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CQuteCom.h" + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +CQuteCom::CQuteCom(QuteCom & qutecomPhone, bool runInBackground) + : _qutecomPhone(qutecomPhone) { + + _pQuteCom = PFactory::getFactory().createPresentationQuteCom(*this, runInBackground); + + _cUserProfileHandler = new CUserProfileHandler(_qutecomPhone.getUserProfileHandler(), *this); + + _qutecomPhone.initFinishedEvent += boost::bind(&CQuteCom::initFinishedEventHandler, this, _1); + _qutecomPhone.exitEvent += boost::bind(&CQuteCom::exitEventHandler, this); + + //DTMFThemeManager + _qutecomPhone.dtmfThemeManagerCreatedEvent += boost::bind(&CQuteCom::dtmfThemeManagerCreatedEventHandler, this, _1, _2); + + CommandServer & commandServer = CommandServer::getInstance(_qutecomPhone); + commandServer.showAddContactEvent += boost::bind(&CQuteCom::showAddContactEventHandler, this, _1); + commandServer.bringMainWindowToFrontEvent += boost::bind(&CQuteCom::bringMainWindowToFrontEventHandler, this); + + // Start the model thread + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CQuteCom::start, this)); + PFactory::postEvent(event); +} + +CQuteCom::~CQuteCom() { + /*if (_pQuteCom) { + delete _pQuteCom; + }*/ +} + +void CQuteCom::initPresentationThreadSafe() { +} + +Presentation * CQuteCom::getPresentation() const { + return _pQuteCom; +} + +CQuteCom & CQuteCom::getCQuteCom() const { + return (CQuteCom &) *this; +} + +CUserProfileHandler & CQuteCom::getCUserProfileHandler() const { + return *_cUserProfileHandler; +} + +QuteCom & CQuteCom::getQuteCom() const { + return _qutecomPhone; +} + +void CQuteCom::start() { + _qutecomPhone.start(); +} + +void CQuteCom::terminate() { + _qutecomPhone.prepareToTerminate(); +} + +void CQuteCom::dtmfThemeManagerCreatedEventHandler(QuteCom & sender, DtmfThemeManager & dtmfThemeManager) { + _cDtmfThemeManager = new CDtmfThemeManager(dtmfThemeManager, *this); +} + +void CQuteCom::initFinishedEventHandler(QuteCom & sender) { + LOG_DEBUG("QuteCom::init() finished"); +} + +void CQuteCom::exitEventHandler() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CQuteCom::exitEventHandlerThreadSafe, this)); + PFactory::postEvent(event); +} + +void CQuteCom::exitEventHandlerThreadSafe() { + _qutecomPhone.terminate(); + if (_pQuteCom) { + _pQuteCom->exitEvent(); + } +} + +void CQuteCom::showAddContactEventHandler(ContactInfo contactInfo) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CQuteCom::showAddContactEventHandlerThreadSafe, this, _1), contactInfo); + PFactory::postEvent(event); +} + +void CQuteCom::showAddContactEventHandlerThreadSafe(ContactInfo contactInfo) { + if (_pQuteCom) { + _pQuteCom->showAddContact(contactInfo); + } +} + +void CQuteCom::bringMainWindowToFrontEventHandler() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CQuteCom::bringMainWindowToFrontEventHandlerThreadSafe, this)); + PFactory::postEvent(event); +} + +void CQuteCom::bringMainWindowToFrontEventHandlerThreadSafe() { + if (_pQuteCom) { + _pQuteCom->bringMainWindowToFront(); + } +} + +void CQuteCom::enableSerialization(bool enable) { + _qutecomPhone.enableSerialization(enable); +} + +CDtmfThemeManager & CQuteCom::getCDtmfThemeManager() const { + return *_cDtmfThemeManager; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/CQuteCom.h qutecom-2.2+dfsg1/qutecom/src/control/CQuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/CQuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/CQuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCQUTECOM_H +#define OWCQUTECOM_H + +#include + +class ContactInfo; +class PQuteCom; +class QuteCom; +class Presentation; +class CUserProfileHandler; +class DtmfThemeManager; +class CDtmfThemeManager; + +/** + * @ingroup control + * @author Tanguy Krotoff + * @author Philippe Bernery + * @author Mathieu Stute + */ +class CQuteCom : public Control { +public: + + CQuteCom(QuteCom & qutecomPhone, bool runInBackground); + + ~CQuteCom(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + CDtmfThemeManager & getCDtmfThemeManager() const; + + /** FIXME should be removed. */ + QuteCom & getQuteCom() const; + + /** + * Entry point of the application, equivalent to main(). + * + * Starts the object QuteCom thus almost everything. + * Starts the model component thread (the thread QuteCom). + * + * @see QuteCom::init() + * @see QuteCom::run() + */ + void start(); + + /** + * @see QuteCom::terminate() + */ + void terminate(); + + /** + * Gets the CUserProfileHandler + */ + CUserProfileHandler & getCUserProfileHandler() const; + + /** + * @see QuteCom::enableSerialization. + */ + void enableSerialization(bool enable); + +private: + + void initPresentationThreadSafe(); + + void initFinishedEventHandler(QuteCom & sender); + + void showAddContactEventHandler(ContactInfo contactInfo); + + void showAddContactEventHandlerThreadSafe(ContactInfo contactInfo); + + void bringMainWindowToFrontEventHandler(); + + void bringMainWindowToFrontEventHandlerThreadSafe(); + + void exitEventHandler(); + + void exitEventHandlerThreadSafe(); + + void dtmfThemeManagerCreatedEventHandler(QuteCom & sender, DtmfThemeManager & dtmfThemeManager); + + /** Direct link to the model. */ + QuteCom & _qutecomPhone; + + /** Direct link to the presentation via an interface. */ + PQuteCom * _pQuteCom; + + CUserProfileHandler * _cUserProfileHandler; + + /** DtmfThemeManager */ + CDtmfThemeManager * _cDtmfThemeManager; +}; + +#endif //OWCQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.cpp qutecom-2.2+dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CDtmfThemeManager.h" +#include + +#include + +#include + +#include + +#include +#include + +CDtmfThemeManager::CDtmfThemeManager(DtmfThemeManager & dtmfThemeManager, CQuteCom & cQuteCom) + : _dtmfThemeManager(dtmfThemeManager), + _cQuteCom(cQuteCom) { + + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CDtmfThemeManager::initPresentationThreadSafe, this)); + PFactory::postEvent(event); +} + +CDtmfThemeManager::~CDtmfThemeManager() { + //delete _dtmfThemeManager; +} + +void CDtmfThemeManager::initPresentationThreadSafe() { + PFactory::getFactory().createPresentationDtmfThemeManager(*this); +} + +Presentation * CDtmfThemeManager::getPresentation() const { + return 0; +} + +CQuteCom & CDtmfThemeManager::getCQuteCom() const { + return _cQuteCom; +} + +void CDtmfThemeManager::playTone(const std::string & themeName, const std::string & key) const { + + //get the theme + const DtmfTheme* theme = _dtmfThemeManager.getDtmfTheme(themeName); + + //play the tone + if (theme) { + theme->playTone(key); + } else { + LOG_WARN("This theme does not exist !"); + } +} + +StringList CDtmfThemeManager::getThemeList() const { + return _dtmfThemeManager.getThemeList(); +} + +const DtmfTheme * CDtmfThemeManager::getDtmfTheme(const std::string & themeName) const { + return _dtmfThemeManager.getDtmfTheme(themeName); +} + +bool CDtmfThemeManager::refreshDtmfThemes() { + return _dtmfThemeManager.refreshDtmfThemes(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.h qutecom-2.2+dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/dtmf/CDtmfThemeManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCDTMFTHEMEMANAGER_H +#define OWCDTMFTHEMEMANAGER_H + +#include + +#include + +class Presentation; +class CQuteCom; +class DtmfThemeManager; +class DtmfTheme; + +/** + * Control for DtmfThemeManager. + * + * @ingroup control + * @author Xavier Desjardins + */ +class CDtmfThemeManager : public Control { +public: + + /** + * Default constructor. + */ + CDtmfThemeManager(DtmfThemeManager & dtmfThemeManager, CQuteCom & cQuteCom); + + ~CDtmfThemeManager(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + //play a tone + void playTone(const std::string & themeName, const std::string & key) const; + + //get theme list + StringList getThemeList() const; + + //get a theme + const DtmfTheme * getDtmfTheme(const std::string & themeName) const; + + //refresh DTMFThemes + bool refreshDtmfThemes(); + +private: + + void initPresentationThreadSafe(); + + /** Link to the model. */ + DtmfThemeManager & _dtmfThemeManager; + + /** Link to the CQuteCom. */ + CQuteCom & _cQuteCom; + + /** Link to the presentation via an interface. */ +}; + +#endif //OWCDTMFTHEMEMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/history/CHistory.cpp qutecom-2.2+dfsg1/qutecom/src/control/history/CHistory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/history/CHistory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/history/CHistory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,246 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CHistory.h" +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +CHistory::CHistory(History & history, CQuteCom & cQuteCom, CUserProfile & cUserProfile) + : _history(history), + _cQuteCom(cQuteCom), + _cUserProfile(cUserProfile) { + + _pHistory = NULL; + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::initPresentationThreadSafe, this)); + PFactory::postEvent(event); + + // TODO NCOUTURIER bind handler + _cUserProfile.getUserProfile().getChatHandler().newIMChatSessionCreatedEvent += boost::bind(&CHistory::newIMChatSessionCreatedEventHandler, this, _1, _2); +} + +CHistory::~CHistory() { + //delete _pHistory; +} + +void CHistory::initPresentationThreadSafe() { + _pHistory = PFactory::getFactory().createPresentationHistory(*this); + + _history.historyLoadedEvent += boost::bind(&CHistory::historyLoadedEventHandler, this, _1); + _history.mementoAddedEvent += boost::bind(&CHistory::historyMementoAddedEventHandler, this, _1, _2); + _history.mementoUpdatedEvent += boost::bind(&CHistory::historyMementoUpdatedEventHandler, this, _1, _2); + _history.mementoRemovedEvent += boost::bind(&CHistory::historyMementoRemovedEventHandler, this, _1, _2); + _history.unseenMissedCallsChangedEvent += boost::bind(&CHistory::unseenMissedCallsChangedEventhandler, this, _1, _2); +} + +Presentation * CHistory::getPresentation() const { + return _pHistory; +} + +CQuteCom & CHistory::getCQuteCom() const { + return _cQuteCom; +} + +History & CHistory::getHistory() { + return _history; +} + +void CHistory::historyMementoAddedEventHandler(History & sender, unsigned id) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoAddedEventHandlerThreadSafe, this, _1), id); + PFactory::postEvent(event); +} + +void CHistory::historyMementoAddedEventHandlerThreadSafe(unsigned id) { + _pHistory->mementoAddedEvent(id); +} + +void CHistory::historyMementoUpdatedEventHandler(History & sender, unsigned id) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoUpdatedEventHandlerThreadSafe, this, _1), id); + PFactory::postEvent(event); +} + +void CHistory::historyMementoUpdatedEventHandlerThreadSafe(unsigned id) { + _pHistory->mementoUpdatedEvent(id); +} + +void CHistory::historyMementoRemovedEventHandler(History & sender, unsigned id) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoRemovedEventHandlerThreadSafe, this, _1), id); + PFactory::postEvent(event); +} + +void CHistory::historyMementoRemovedEventHandlerThreadSafe(unsigned id) { + _pHistory->mementoRemovedEvent(id); +} + +void CHistory::historyLoadedEventHandler(History & sender) { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyLoadedEventHandlerThreadSafe, this)); + PFactory::postEvent(event); +} + +void CHistory::historyLoadedEventHandlerThreadSafe() { + _pHistory->historyLoadedEvent(); +} + +void CHistory::unseenMissedCallsChangedEventhandler(History & sender, int count) { + /*typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::unseenMissedCallsChangedEventHandlerThreadSafe, this, _1), count); + PFactory::postEvent(event);*/ +} + +void CHistory::unseenMissedCallsChangedEventHandlerThreadSafe(int count) { + _pHistory->unseenMissedCallsChangedEvent(count); +} + +void CHistory::removeHistoryMemento(unsigned id) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::removeHistoryMementoThreadSafe, this, _1), id); + QuteCom::getInstance().postEvent(event); +} + +void CHistory::removeHistoryMementoThreadSafe(unsigned id) { + _history.removeMemento(id); +} + +void CHistory::clear(HistoryMemento::State state) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::clearThreadSafe, this, _1), state); + QuteCom::getInstance().postEvent(event); +} + +void CHistory::clearThreadSafe(HistoryMemento::State state) { + _history.clear(state); +} + +std::string CHistory::getMementoData(unsigned id) const { + return _history.getMemento(id)->getData(); +} + +std::string CHistory::getMementoPeer(unsigned id) const { + return _history.getMemento(id)->getPeer(); +} + +void CHistory::replay(unsigned id) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::replayThreadSafe, this, _1), id); + QuteCom::getInstance().postEvent(event); +} + +void CHistory::replayThreadSafe(unsigned id) { + _history.replay(id); +} + +HistoryMementoCollection * CHistory::getMementos(HistoryMemento::State state, int count) { + return _history.getMementos(state, count); +} + +void CHistory::resetUnseenMissedCalls() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::resetUnseenMissedCallsThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void CHistory::resetUnseenMissedCallsThreadSafe() { + _history.resetUnseenMissedCalls(); +} + +int CHistory::getUnseenMissedCalls() { + return _history.getUnseenMissedCalls(); +} + +void CHistory::newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession) { + if(_history.addChatMementoSession(&imChatSession)){ + + HistoryMementoCollection * hmc = _history.getSessionCollection(imChatSession.getId()); + std::string name = "toto_le_testeur_fou"; + std::string message = "ceci est un message bidon"; + Date date; + Time time; + + for (HistoryMap::const_iterator it = hmc->begin(); it != hmc->end(); ++it) { + HistoryMemento* hm = it->second; + name = hm->getPeer(); + message = hm->getData(); + date = hm->getDate(); + time = hm->getTime(); + imChatSession.setReceivedMessage(name,message,date,time); + } + _lastReceivedMesssageIndex[imChatSession.getId()] = -1 + hmc->size(); + imChatSession.imChatSessionWillDieEvent += boost::bind(&CHistory::imChatSessionWillDieEventHandler, this, _1); + imChatSession.messageReceivedEvent += boost::bind(&CHistory::messageReceivedEventHandler, this, _1); + imChatSession.messageSentEvent += boost::bind(&CHistory::messageSentEventHandler, this, _1, _2); + } +} + +void CHistory::imChatSessionWillDieEventHandler(IMChatSession & sender) { + _history.removeChatMementoSession(&sender); + _lastReceivedMesssageIndex.erase(sender.getId()); +} + +void CHistory::messageReceivedEventHandler(IMChatSession & sender) { + IMChatSession::IMChatMessageList imChatMessageList = sender.getReceivedMessage(_lastReceivedMesssageIndex[sender.getId()]+1); + if(imChatMessageList.size() > 0) { + _lastReceivedMesssageIndex[sender.getId()] += imChatMessageList.size(); + IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); + while(imChatMessageListIterator < imChatMessageList.end()) { + IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; + HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, + imChatMessage->getIMContact().getContactId(), + -1, /* don't care about the call id */ + imChatMessage->getMessage(), + imChatMessage->getIMContact().getAlias()); + _history.addChatMemento(memento, sender.getId()); + imChatMessageListIterator++; + } + } +} + +void CHistory::messageSentEventHandler(IMChatSession & sender, std::string message) { + //HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, + // ((SipAccount *)_cUserProfile.getUserProfile().getQuteComAccount())->getDisplayName(), + // -1, /* don't care about the call id */ + // message); + IMAccount * imAccount = + _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(sender.getIMChat().getIMAccountId()); + HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, + imAccount->getLogin(), + -1, /* don't care about the call id */ + message); + OWSAFE_DELETE(imAccount); + _history.addChatMemento(memento, sender.getId()); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/history/CHistory.h qutecom-2.2+dfsg1/qutecom/src/control/history/CHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/history/CHistory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/history/CHistory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCHISTORY_H +#define OWCHISTORY_H + +#include +#include + +#include + +#include + +#include +#include + +class Presentation; +class CQuteCom; +class PHistory; +class CUserProfile; + +/** + * Control for History. + * + * @ingroup control + * @author Mathieu Stute + */ +class CHistory : public Control { +public: + + /** + * Default constructor. + */ + CHistory(History & history, CQuteCom & cQuteCom, CUserProfile & cUserProfile); + + ~CHistory(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + /** + * @see History::removeMemento + */ + void removeHistoryMemento(unsigned id); + + /** + * @see History::clear + */ + void clear(HistoryMemento::State state = HistoryMemento::Any); + + /** + * @see History::replay + */ + void replay(unsigned id); + + /** + * @see History::getMementos + */ + HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1); + + /** + * Gets the memento data. + * + * @param id the memento id + * @return the memento data (the sms text) + */ + std::string getMementoData(unsigned id) const; + + /** + * Gets the memento peer. + * + * @param id the memento id + * @return the memento peer + */ + std::string getMementoPeer(unsigned id) const; + + /** + * Resets unseen missed calls. + */ + void resetUnseenMissedCalls(); + + /** + * Gets the unseen missed calls count. + * + * @return unseen missed calls count + */ + int getUnseenMissedCalls(); + + /** + * FIXME to remove + * Retreives the History. + * + * @return the History + */ + History & getHistory(); + +private: + + void initPresentationThreadSafe(); + + void historyMementoAddedEventHandler(History & sender, unsigned id); + void historyMementoAddedEventHandlerThreadSafe(unsigned id); + + void historyMementoUpdatedEventHandler(History & sender, unsigned id); + void historyMementoUpdatedEventHandlerThreadSafe(unsigned id); + + void historyMementoRemovedEventHandler(History & sender, unsigned id); + void historyMementoRemovedEventHandlerThreadSafe(unsigned id); + + void historyLoadedEventHandler(History & sender); + void historyLoadedEventHandlerThreadSafe(); + + void unseenMissedCallsChangedEventhandler(History & sender, int count); + void unseenMissedCallsChangedEventHandlerThreadSafe(int count); + + void newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession); + + void imChatSessionWillDieEventHandler(IMChatSession & sender); + + void messageReceivedEventHandler(IMChatSession & sender); + + void messageSentEventHandler(IMChatSession & sender, std::string message); + + void removeHistoryMementoThreadSafe(unsigned id); + + void clearThreadSafe(HistoryMemento::State state); + + void replayThreadSafe(unsigned id); + + void resetUnseenMissedCallsThreadSafe(); + + /** Link to the model. */ + History & _history; + + /** Link to the CQuteCom. */ + CQuteCom & _cQuteCom; + + /** Link to the CUserProfile **/ + CUserProfile & _cUserProfile; + + /** Link to the presentation via an interface. */ + PHistory * _pHistory; + + /** Index of the last message recorded in the History for each sessionID **/ + std::map _lastReceivedMesssageIndex; +}; + +#endif //OWCHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CConferenceCall.cpp qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CConferenceCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CConferenceCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CConferenceCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CConferenceCall.h" + +#include +#include + +#include + +#include +#include + +#include +#include + +CConferenceCall::CConferenceCall(ConferenceCall & conferenceCall, CQuteCom & cQuteCom) + : _conferenceCall(conferenceCall), + _cQuteCom(cQuteCom) { + + _pConferenceCall = NULL; + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CConferenceCall::initPresentationThreadSafe, this)); + PFactory::postEvent(event); +} + +CConferenceCall::~CConferenceCall() { +} + +void CConferenceCall::initPresentationThreadSafe() { + _pConferenceCall = PFactory::getFactory().createPresentationConferenceCall(*this); + + _conferenceCall.stateChangedEvent += boost::bind(&CConferenceCall::stateChangedEventHandler, this, _1, _2); + _conferenceCall.phoneCallAddedEvent += boost::bind(&CConferenceCall::phoneCallAddedEventHandler, this, _1, _2); + _conferenceCall.phoneCallRemovedEvent += boost::bind(&CConferenceCall::phoneCallRemovedEventHandler, this, _1, _2); +} + +Presentation * CConferenceCall::getPresentation() const { + return _pConferenceCall; +} + +CQuteCom & CConferenceCall::getCQuteCom() const { + return _cQuteCom; +} + +void CConferenceCall::addPhoneCall(CPhoneCall & cPhoneCall) { + //_conferenceCall.addPhoneCall(cPhoneCall.getPhoneCall()); +} + +void CConferenceCall::removePhoneCall(CPhoneCall & cPhoneCall) { + //_conferenceCall.removePhoneCall(cPhoneCall.getPhoneCall()); +} + +void CConferenceCall::addPhoneNumber(const std::string & phoneNumber) { + _conferenceCall.addPhoneNumber(phoneNumber); +} + +void CConferenceCall::removePhoneNumber(const std::string & phoneNumber) { + _conferenceCall.removePhoneNumber(phoneNumber); +} + +void CConferenceCall::stateChangedEventHandler(ConferenceCall & sender, EnumConferenceCallState::ConferenceCallState state) { + _pConferenceCall->stateChangedEvent(state); +} + +void CConferenceCall::phoneCallAddedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall) { + //_pConferenceCall->phoneCallAddedEvent(phoneCall); +} + +void CConferenceCall::phoneCallRemovedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall) { + //_pConferenceCall->phoneCallRemovedEvent(phoneCall); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CConferenceCall.h qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CConferenceCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCCONFERENCECALL_H +#define OWCCONFERENCECALL_H + +#include + +#include + +class CQuteCom; +class CPhoneCall; +class PhoneCall; +class ConferenceCall; +class Presentation; +class PConferenceCall; + +/** + * Control layer for a conference call. + * + * @see ConferenceCall + * @ingroup control + * @author Tanguy Krotoff + */ +class CConferenceCall : public Control { +public: + + CConferenceCall(ConferenceCall & conferenceCall, CQuteCom & cQuteCom); + + ~CConferenceCall(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + /** + * @see ConferenceCall::addPhoneCall() + */ + void addPhoneCall(CPhoneCall & cPhoneCall); + + /** + * @see ConferenceCall::removePhoneCall() + */ + void removePhoneCall(CPhoneCall & cPhoneCall); + + /** + * @see ConferenceCall::addPhoneNumber() + */ + void addPhoneNumber(const std::string & phoneNumber); + + /** + * @see ConferenceCall::removePhoneNumber() + */ + void removePhoneNumber(const std::string & phoneNumber); + +private: + + void initPresentationThreadSafe(); + + void stateChangedEventHandler(ConferenceCall & sender, EnumConferenceCallState::ConferenceCallState state); + + void phoneCallAddedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall); + + void phoneCallRemovedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall); + + ConferenceCall & _conferenceCall; + + PConferenceCall * _pConferenceCall; + + CQuteCom & _cQuteCom; +}; + +#endif //OWCCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CPhoneCall.cpp qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CPhoneCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,187 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CPhoneCall.h" + +#include +#include + +#include + +#include +#include + +#include +#include + +CPhoneCall::CPhoneCall(PhoneCall & phoneCall, CQuteCom & cQuteCom) + : _phoneCall(phoneCall), + _cQuteCom(cQuteCom) { + + _pPhoneCall = NULL; + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::initPresentationThreadSafe, this)); + PFactory::postEvent(event); +} + +CPhoneCall::~CPhoneCall() { + delete _pPhoneCall; +} + +void CPhoneCall::initPresentationThreadSafe() { + _pPhoneCall = PFactory::getFactory().createPresentationPhoneCall(*this); + + _phoneCall.stateChangedEvent += boost::bind(&CPhoneCall::stateChangedEventHandler, this, _1, _2); + _phoneCall.videoFrameReceivedEvent += boost::bind(&CPhoneCall::videoFrameReceivedEventHandler, this, _1, _2, _3); +} + +Presentation * CPhoneCall::getPresentation() const { + return _pPhoneCall; +} + +CQuteCom & CPhoneCall::getCQuteCom() const { + return _cQuteCom; +} + +std::string CPhoneCall::getPeerSipAddress() const { + return _phoneCall.getPeerSipAddress().getSipAddress(); +} + +std::string CPhoneCall::getPeerUserName() const { + return _phoneCall.getPeerSipAddress().getUserName(); +} + +std::string CPhoneCall::getPeerDisplayName() const { + return _phoneCall.getPeerSipAddress().getDisplayName(); +} + +int CPhoneCall::getDuration() const { + return _phoneCall.getDuration(); +} + +void CPhoneCall::stateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::stateChangedEventHandlerThreadSafe, this, _1), state); + PFactory::postEvent(event); +} + +void CPhoneCall::stateChangedEventHandlerThreadSafe(EnumPhoneCallState::PhoneCallState state) { + if (!_pPhoneCall) { + return; + } + + if (state == EnumPhoneCallState::PhoneCallStateClosed) { + // the peer has closed the call + unbindAndClose(); + //// + } else { + _pPhoneCall->stateChangedEvent(state); + } +} + +void CPhoneCall::videoFrameReceivedEventHandler(PhoneCall & sender, piximage * remoteVideoFrame, piximage * localVideoFrame) { + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::videoFrameReceivedEventHandlerThreadSafe, this, _1, _2), remoteVideoFrame, localVideoFrame); + PFactory::postEvent(event); +} + +void CPhoneCall::videoFrameReceivedEventHandlerThreadSafe(piximage * remoteVideoFrame, piximage * localVideoFrame) { + if (_pPhoneCall) { + _pPhoneCall->videoFrameReceivedEvent(remoteVideoFrame, localVideoFrame); + } +} + +void CPhoneCall::hangUp() { + // here we're called from the presentation thread + unbindAndClose(); + //// + + // let's go to the model thread + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::hangUpThreadSafe, this)); + QuteCom::getInstance().postEvent(event); + //// +} + +void CPhoneCall::hangUpThreadSafe() { + _phoneCall.close(); +} + +void CPhoneCall::accept() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::acceptThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void CPhoneCall::acceptThreadSafe() { + _phoneCall.accept(); +} + +void CPhoneCall::hold() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::holdThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void CPhoneCall::holdThreadSafe() { + _phoneCall.hold(); +} + +void CPhoneCall::resume() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::resumeThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void CPhoneCall::resumeThreadSafe() { + _phoneCall.resume(); +} + +void CPhoneCall::blindTransfer(const std::string & phoneNumber) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::blindTransferThreadSafe, this, _1), phoneNumber); + QuteCom::getInstance().postEvent(event); +} + +void CPhoneCall::blindTransferThreadSafe(std::string phoneNumber) { + _phoneCall.blindTransfer(phoneNumber); +} + +CodecList::AudioCodec CPhoneCall::getAudioCodecUsed() { + return _phoneCall.getAudioCodecUsed(); +} + +CodecList::VideoCodec CPhoneCall::getVideoCodecUsed() { + return _phoneCall.getVideoCodecUsed(); +} + +EnumPhoneCallState::PhoneCallState CPhoneCall::getState() const { + return _phoneCall.getState(); +} + +void CPhoneCall::unbindAndClose() { + _phoneCall.videoFrameReceivedEvent -= boost::bind(&CPhoneCall::videoFrameReceivedEventHandler, this, _1, _2, _3); + _phoneCall.stateChangedEvent -= boost::bind(&CPhoneCall::stateChangedEventHandler, this, _1, _2); + _pPhoneCall->close(); + _pPhoneCall = NULL; +} + +bool CPhoneCall::isCallEncrypted() const { + return _phoneCall.isCallEncrypted(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CPhoneCall.h qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phonecall/CPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phonecall/CPhoneCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCPHONECALL_H +#define OWCPHONECALL_H + +#include + +#include +#include + +#include + +#include + +class Presentation; +class CQuteCom; +class PPhoneCall; +class PhoneCall; +class QuteCom; + +/** + * Control layer for a phone call. + * + * @see PhoneCall + * @ingroup control + * @author Tanguy Krotoff + */ +class CPhoneCall : public Control { +public: + + CPhoneCall(PhoneCall & phoneCall, CQuteCom & cQuteCom); + + ~CPhoneCall(); + + Presentation * getPresentation() const; + + CQuteCom & getCQuteCom() const; + + /** + * FIXME this breaks the control layer. + * Used inside QtContactCallListWidget in order to create a ConferenceCall. + */ + PhoneCall & getPhoneCall() const { + return _phoneCall; + } + + /** + * @see PhoneCall::getState() + */ + EnumPhoneCallState::PhoneCallState getState() const; + + /** + * @see PhoneCall::close() + * @see PhoneCall::reject() + */ + void hangUp(); + + /** + * @see PhoneCall::accept() + */ + void accept(); + + /** + * @see PhoneCall::mute() + */ + void mute(); + + /** + * @see PhoneCall::hold() + */ + void hold(); + + /** + * @see PhoneCall::resume() + */ + void resume(); + + /** + * @see PhoneCall::blindTransfer() + */ + void blindTransfer(const std::string & phoneNumber); + + /** + * @see PhoneCall::getAudioCodecUsed() + */ + CodecList::AudioCodec getAudioCodecUsed(); + + /** + * @see PhoneCall::getVideoCodecUsed() + */ + CodecList::VideoCodec getVideoCodecUsed(); + + /** + * Gets the peer SIP address (phone number) of the current call. + * + * @return SIP address + */ + std::string getPeerSipAddress() const; + + /** + * Gets the peer username part of the SIP address. + * + * @return peer username + */ + std::string getPeerUserName() const; + + /** + * Gets the peer display name part of the SIP address. + * + * @return peer display name + */ + std::string getPeerDisplayName() const; + + /** + * @see PhoneCall::getDuration() + */ + int getDuration() const; + + /** + * @see PhoneCall::isCallEncrypted + */ + bool isCallEncrypted() const; + +private: + + void unbindAndClose(); + + void initPresentationThreadSafe(); + + void stateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); + + void videoFrameReceivedEventHandler(PhoneCall & sender, piximage * remoteVideoFrame, piximage * localVideoFrame); + + void stateChangedEventHandlerThreadSafe(EnumPhoneCallState::PhoneCallState state); + + void videoFrameReceivedEventHandlerThreadSafe(piximage * remoteVideoFrame, piximage * localVideoFrame); + + void hangUpThreadSafe(); + + void acceptThreadSafe(); + + void holdThreadSafe(); + + void resumeThreadSafe(); + + void blindTransferThreadSafe(std::string phoneNumber); + + PhoneCall & _phoneCall; + + PPhoneCall * _pPhoneCall; + + CQuteCom & _cQuteCom; +}; + +#endif //OWCPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phoneline/CPhoneLine.cpp qutecom-2.2+dfsg1/qutecom/src/control/phoneline/CPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phoneline/CPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phoneline/CPhoneLine.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CPhoneLine.h" + +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include + +CPhoneLine::CPhoneLine(IPhoneLine & phoneLine, CQuteCom & cQuteCom) + : _phoneLine(phoneLine), + _cQuteCom(cQuteCom) { + + _pPhoneLine = PFactory::getFactory().createPresentationPhoneLine(*this); + + _phoneLine.stateChangedEvent += boost::bind(&CPhoneLine::stateChangedEventHandler, this, _1, _2); + _phoneLine.phoneCallCreatedEvent += boost::bind(&CPhoneLine::phoneCallCreatedEventHandler, this, _1, _2); + _phoneLine.phoneCallClosedEvent += boost::bind(&CPhoneLine::phoneCallClosedEventHandler, this, _1, _2); + + // Notify the presentation of the current state of the phoneline + EnumPhoneLineState::PhoneLineState state = phoneLine.getState().getCode(); + stateChangedEventHandler(phoneLine, state); +} + +CPhoneLine::~CPhoneLine() { + OWSAFE_DELETE(_pPhoneLine); +} + +int CPhoneLine::makeCall(const std::string & phoneNumber) { + return _phoneLine.makeCall(phoneNumber); +} + +void CPhoneLine::stateChangedEventHandler(IPhoneLine & sender, EnumPhoneLineState::PhoneLineState state) { + _pPhoneLine->stateChangedEvent(state); +} + +void CPhoneLine::phoneCallCreatedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall) { + CPhoneCall * cPhoneCall = new CPhoneCall(phoneCall, _cQuteCom); + _cPhoneCallMap[&phoneCall] = cPhoneCall; + _pPhoneLine->phoneCallCreatedEvent(*cPhoneCall); + + LOG_DEBUG("CPhoneCall created"); +} + +void CPhoneLine::phoneCallClosedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall) { + CPhoneCall * cPhoneCall = _cPhoneCallMap[&phoneCall]; + if (!cPhoneCall) { + LOG_FATAL("cPhoneCall cannot be NULL"); + } + _pPhoneLine->phoneCallClosedEvent(*cPhoneCall); +} + +bool CPhoneLine::hasPendingCalls() const { + return _phoneLine.hasPendingCalls(); +} + +void CPhoneLine::closePendingCalls() { + _phoneLine.closePendingCalls(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phoneline/CPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/control/phoneline/CPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/phoneline/CPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/phoneline/CPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCPHONELINE_H +#define OWCPHONELINE_H + +#include +#include + +#include +#include + +class IPhoneLine; +class PPhoneLine; +class PhoneCall; +class CQuteCom; +class CPhoneCall; + +/** + * + * @ingroup control + * @author Tanguy Krotoff + */ +class CPhoneLine : public Trackable { +public: + + CPhoneLine(IPhoneLine & phoneLine, CQuteCom & cQuteCom); + + ~CPhoneLine(); + + PPhoneLine * getPresentation() const { + return _pPhoneLine; + } + + CQuteCom & getCQuteCom() const { + return _cQuteCom; + } + + /** + * @see IPhoneLine::hasPendingcalls + */ + bool hasPendingCalls() const; + + /** + * @see IPhoneLine::closePendingCalls + */ + void closePendingCalls(); + + int makeCall(const std::string & phoneNumber); + +private: + + void stateChangedEventHandler(IPhoneLine & sender, EnumPhoneLineState::PhoneLineState state); + + void phoneCallCreatedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall); + + void phoneCallClosedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall); + + IPhoneLine & _phoneLine; + + PPhoneLine * _pPhoneLine; + + CQuteCom & _cQuteCom; + + typedef std::map CPhoneCallMap; + + CPhoneCallMap _cPhoneCallMap; +}; + +#endif //OWCPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfile.cpp qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,260 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CUserProfile.h" + +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +CUserProfile::CUserProfile(UserProfile & userProfile, CQuteCom & cQuteCom) + : _userProfile(userProfile), + _cQuteCom(cQuteCom), + _cContactList(userProfile.getContactList(), cQuteCom), + _cChatHandler(userProfile.getChatHandler(), *this) { + + _cHistory = NULL; + _cPhoneLine = NULL; + _cSms = NULL; + _cSoftUpdate = NULL; + _cWsCallForward = NULL; + + _pUserProfile = PFactory::getFactory().createPresentationUserProfile(*this); + + _userProfile.phoneLineCreatedEvent += + boost::bind(&CUserProfile::phoneLineCreatedEventHandler, this, _1, _2); + _userProfile.wsSmsCreatedEvent += + boost::bind(&CUserProfile::wsSmsCreatedEventHandler, this, _1, _2); + _userProfile.wsSoftUpdateCreatedEvent += + boost::bind(&CUserProfile::wsSoftUpdateCreatedEventHandler, this, _1, _2); + _userProfile.wsCallForwardCreatedEvent += + boost::bind(&CUserProfile::wsCallForwardCreatedEventHandler, this, _1, _2); + + _userProfile.loginStateChangedEvent += + boost::bind(&CUserProfile::loginStateChangedEventHandler, this, _1, _2); + _userProfile.networkDiscoveryStateChangedEvent += + boost::bind(&CUserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); + + _userProfile.getHistory().historyLoadedEvent += + boost::bind(&CUserProfile::historyLoadedEventHandler, this, _1); + + _userProfile.getPresenceHandler().authorizationRequestEvent += + boost::bind(&CUserProfile::authorizationRequestEventHandler, this, _1, _2, _3); + + _userProfile.getPresenceHandler().incomingSubscribeEvent += + boost::bind(&CUserProfile::incomingSubscribeEventHandler, this, _1, _2, _3, _4, _5); + + //Check if a PhoneLine already exist + if (_userProfile.getActivePhoneLine()) { + phoneLineCreatedEventHandler(_userProfile, *_userProfile.getActivePhoneLine()); + } + + historyLoadedEventHandler(_userProfile.getHistory()); + + if (_userProfile.getWsSms()) { + wsSmsCreatedEventHandler(_userProfile, *_userProfile.getWsSms()); + } + + if (_userProfile.getWsSoftUpdate()) { + wsSoftUpdateCreatedEventHandler(_userProfile, *_userProfile.getWsSoftUpdate()); + } + + if (_userProfile.getWsCallForward()) { + wsCallForwardCreatedEventHandler(_userProfile, *_userProfile.getWsCallForward()); + } +} + +CUserProfile::~CUserProfile() { + OWSAFE_DELETE(_pUserProfile); + OWSAFE_DELETE(_cHistory); + OWSAFE_DELETE(_cSms); + OWSAFE_DELETE(_cSoftUpdate); + OWSAFE_DELETE(_cPhoneLine); +} + +void CUserProfile::loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state) { + _pUserProfile->loginStateChangedEventHandler(sender, state); +} + +void CUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state) { + _pUserProfile->networkDiscoveryStateChangedEventHandler(sender, state); +} + +void CUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message) { + _pUserProfile->authorizationRequestEventHandler(sender, imContact, message); +} + +void CUserProfile::incomingSubscribeEventHandler(PresenceHandler & sender, + const std::string & imaccountId, int sid,const std::string & from,const std::string & evtType) +{ + _pUserProfile->incomingSubscribeEventHandler(sender,imaccountId, sid, from, evtType); +} + +void CUserProfile::phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine) { + if (!_cPhoneLine) { + _cPhoneLine = new CPhoneLine(phoneLine, _cQuteCom); + LOG_DEBUG("CPhoneLine created"); + } +} + +void CUserProfile::wsSmsCreatedEventHandler(UserProfile & sender, WsSms & sms) { + if (!_cSms) { + _cSms = new CSms(sms, _cQuteCom); + LOG_DEBUG("CSms created"); + } +} + +void CUserProfile::wsCallForwardCreatedEventHandler(UserProfile & sender, WsCallForward & wsCallForward) { + if (!_cWsCallForward) { + _cWsCallForward = new CWsCallForward(_cQuteCom, wsCallForward); + } +} + +void CUserProfile::wsSoftUpdateCreatedEventHandler(UserProfile & sender, WsSoftUpdate & wsSoftUpdate) { + if (!_cSoftUpdate) { + _cSoftUpdate = new CSoftUpdate(wsSoftUpdate, _cQuteCom); + LOG_DEBUG("CSoftUpdate created"); + + //Check for QuteCom update + if (_userProfile.getSipAccount()) { + //if (_userProfile.getSipAccount()->getType() == SipAccount::SipAccountTypeQuteCom) { + wsSoftUpdate.checkForUpdate(); + //} + } + } +} + +void CUserProfile::historyLoadedEventHandler(History & history) { + if (!_cHistory) { + _cHistory = new CHistory(history, _cQuteCom, *this); + } +} + +void CUserProfile::disconnect() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::disconnectThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void CUserProfile::disconnectThreadSafe() { + _userProfile.disconnect(); +} + +void CUserProfile::makeContactCall(const std::string & contactId) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::makeContactCallThreadSafe, this, _1), contactId); + QuteCom::getInstance().postEvent(event); +} + +void CUserProfile::makeContactCallThreadSafe(std::string contactId) { + Contact * contact = _cContactList.getContact(contactId); + if (contact) { + EnumMakeCallError::MakeCallError error = _userProfile.makeCall(*contact); + if (error != EnumMakeCallError::NoError) { + makeCallErrorEvent(*this, error); + } + } +} + +void CUserProfile::makeCall(const std::string & phoneNumber) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::makeCallThreadSafe, this, _1), phoneNumber); + QuteCom::getInstance().postEvent(event); +} + +void CUserProfile::makeCallThreadSafe(std::string phoneNumber) { + EnumMakeCallError::MakeCallError error = _userProfile.makeCall(phoneNumber); + if (error != EnumMakeCallError::NoError) { + makeCallErrorEvent(*this, error); + } +} + +void CUserProfile::startIM(const std::string & contactId) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::startIMThreadSafe, this, _1), contactId); + QuteCom::getInstance().postEvent(event); +} + +void CUserProfile::startIMThreadSafe(std::string contactId) { + Contact * contact = _cContactList.getContact(contactId); + if (contact) { + _userProfile.startIM(*contact); + } +} + +//void CUserProfile::setQuteComAccount(const QuteComAccount & qutecomAccount) { +// typedef ThreadEvent1 MyThreadEvent; +// MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::setQuteComAccountThreadSafe, this, _1), qutecomAccount); +// QuteCom::getInstance().postEvent(event); +//} +// +//void CUserProfile::setQuteComAccountThreadSafe(QuteComAccount qutecomAccount) { +// _userProfile.setQuteComAccount(qutecomAccount); +//} + +void CUserProfile::setSipAccount(const SipAccount & sipAccount) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::setSipAccountThreadSafe, this, _1), sipAccount); + QuteCom::getInstance().postEvent(event); +} + +void CUserProfile::setSipAccountThreadSafe(SipAccount sipAccount) { + _userProfile.setSipAccount(sipAccount); +} + +PhoneCall * CUserProfile::getActivePhoneCall() const { + PhoneCall * result = NULL; + + //FIXME: model must not be used directly by the GUI + IPhoneLine * phoneLine = _userProfile.getActivePhoneLine(); + if (phoneLine) { + result = phoneLine->getActivePhoneCall(); + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfile.h qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,254 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCUSERPROFILE_H +#define OWCUSERPROFILE_H + +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +class CHistory; +class CPhoneLine; +class CSms; +class CSoftUpdate; +class CQuteCom; +class CWsCallForward; +class History; +class IMAccount; +class IPhoneLine; +class PhoneCall; +class PUserProfile; +class UserProfile; +class QuteComAccount; +class WsCallForward; +class WsSms; +class WsSoftUpdate; +class PresenceHandler; + +/** + * Control layer for UserProfile. + * + * FIXME: 'init()' must be called on UserProfile before constructing CUserProfile. + * + * @author Philippe Bernery + */ +class CUserProfile : public Trackable { +public: + + Event makeCallErrorEvent; + + CUserProfile(UserProfile & userProfile, CQuteCom & cQuteCom); + + ~CUserProfile(); + + /** + * @see UserProfile::disconnect + */ + void disconnect(); + + /** + * @see UserProfile::makeCall() + */ + void makeContactCall(const std::string & contactId); + + /** + * @see UserProfile::makeCall() + */ + void makeCall(const std::string & phoneNumber); + + /** + * @see UserProfile::startIM + */ + void startIM(const std::string & contactId); + + /** + * @see UserProfile::setSipAccount + */ + void setSipAccount(const SipAccount & sipAccount); + + /** + * Gets the active phone call. + * + * Used for playing DTMF. + * + * @return active phone call or NULL + */ + PhoneCall * getActivePhoneCall() const; + + /** + * Gets the CHistory. + * + * @return the CHistory + */ + CHistory * getCHistory() const { + return _cHistory; + } + + /** + * Gets the CContactList. + * + * @return the CContactList + */ + CContactList & getCContactList() { + return _cContactList; + } + + /** + * @return the CWsCallForward object. + */ + CWsCallForward * getCWsCallForward() { + return _cWsCallForward; + } + + /** + * @return the CQuteCom object. + */ + CQuteCom & getCQuteCom() { + return _cQuteCom; + } + + /** + * Gets the UserProfile. + * + * TODO: This method should not exist (because it allows the GUI to access + * the model directly) and so should be removed ASAP. + */ + UserProfile & getUserProfile() { + return _userProfile; + } + + /** + * Gets the Presentation layer. + */ + PUserProfile * getPresentation() { + return _pUserProfile; + } + + CPhoneLine * getCPhoneLine() { + return _cPhoneLine; + } + +private: + + /** + * @see UserProfile::loginStateChangedEvent + */ + void loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state); + + /** + * @see UserProfile::networkDiscoveryStateChangedEvent + */ + void networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state); + + /** + * @see PresenceHandler::authorizationRequestEvent + */ + void authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message); + + /** + * @see PresenceHandler::authorizationRequestEvent + */ + void incomingSubscribeEventHandler(PresenceHandler & sender, + const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType); + + /** + * @see UserProfile::historyLoadedEvent + */ + void historyLoadedEventHandler(History & sender); + + /** + * @see UserProfile::phoneLineCreatedEvent + */ + void phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine); + + /** + * @see UserProfile::wsSmsCreatedEvent + */ + void wsSmsCreatedEventHandler(UserProfile & sender, WsSms & wsSms); + + /** + * @see UserProfile::wsSoftUpdateCreatedEvent + */ + void wsSoftUpdateCreatedEventHandler(UserProfile & sender, WsSoftUpdate & wsSoftUpdate); + + /** + * @see UserProfile::wsCallForwardCreatedEvent + */ + void wsCallForwardCreatedEventHandler(UserProfile & sender, WsCallForward & wsCallForward); + + /** + * @see disconnect() + */ + void disconnectThreadSafe(); + + /** + * @see makeCall() + */ + void makeContactCallThreadSafe(std::string contactId); + + /** + * @see makeCall() + */ + void makeCallThreadSafe(std::string phoneNumber); + + /** + * @see startIM + */ + void startIMThreadSafe(std::string contactId); + + /** + * @see setSipAccount + */ + void setSipAccountThreadSafe(SipAccount sipAccount); + + UserProfile & _userProfile; + + CQuteCom & _cQuteCom; + + PUserProfile * _pUserProfile; + + CContactList _cContactList; + + CHistory * _cHistory; + + CWsCallForward * _cWsCallForward; + + CChatHandler _cChatHandler; + + CSms * _cSms; + + CSoftUpdate * _cSoftUpdate; + + CPhoneLine * _cPhoneLine; +}; + +#endif //OWCUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfileHandler.cpp qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfileHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,200 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CUserProfileHandler.h" + +#include +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +CUserProfileHandler::CUserProfileHandler(UserProfileHandler & userProfileHandler, CQuteCom & cQuteCom) + : _userProfileHandler(userProfileHandler), + _cQuteCom(cQuteCom) { + + _cUserProfile = NULL; + + _pUserProfileHandler = PFactory::getFactory().createPresentationUserProfileHandler(*this); + + _userProfileHandler.noCurrentUserProfileSetEvent += + boost::bind(&CUserProfileHandler::noCurrentUserProfileSetEventHandler, this, _1); + _userProfileHandler.currentUserProfileWillDieEvent += + boost::bind(&CUserProfileHandler::currentUserProfileWillDieEventHandler, this, _1); + _userProfileHandler.userProfileInitializedEvent += + boost::bind(&CUserProfileHandler::userProfileInitializedEventHandler, this, _1, _2); + _userProfileHandler.sipAccountConnectionFailedEvent += + boost::bind(&CUserProfileHandler::sipAccountConnectionFailedEventHandler, this, _1, _2); + _userProfileHandler.profileLoadedFromBackupsEvent += + boost::bind(&CUserProfileHandler::profileLoadedFromBackupsEventHandler, this, _1, _2); + _userProfileHandler.profileCannotBeLoadedEvent += + boost::bind(&CUserProfileHandler::profileCannotBeLoadedEventHandler, this, _1, _2); + _userProfileHandler.networkDiscoveryStateChangedEvent += + boost::bind(&CUserProfileHandler::networkDiscoveryStateChangedEventHandler, this, _1, _2); +} + +CUserProfileHandler::~CUserProfileHandler() { + OWSAFE_DELETE(_pUserProfileHandler); + OWSAFE_DELETE(_cUserProfile); +} + +std::vector CUserProfileHandler::getUserProfileNames(bool onlyRealDir) { + return _userProfileHandler.getUserProfileNames(onlyRealDir); +} + +void CUserProfileHandler::setCurrentUserProfile(const std::string & login, const SipAccount & sipAccount) { + + if(!sipAccount.isEmpty() || !login.empty()) + _pUserProfileHandler->setCurrentUserProfileEventHandler(); + if (sipAccount.getType() == SipAccount::SipAccountTypeQuteCom) { + const QuteComAccount & qutecomAccount = dynamic_cast(sipAccount); + + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&CUserProfileHandler::setUserProfileWithQuteComAccountThreadSafe, this, _1, _2), + login, qutecomAccount); + + QuteCom::getInstance().postEvent(event); + } else { + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&CUserProfileHandler::setUserProfileWithSipAccountThreadSafe, this, _1, _2), + login, sipAccount); + + QuteCom::getInstance().postEvent(event); + } +} + +void CUserProfileHandler::setUserProfileWithSipAccountThreadSafe(std::string profileName, SipAccount sipAccount) { + _userProfileHandler.setCurrentUserProfile(profileName, sipAccount); +} + +void CUserProfileHandler::setUserProfileWithQuteComAccountThreadSafe(std::string profileName, QuteComAccount qutecomAccount) { + _userProfileHandler.setCurrentUserProfile(profileName, qutecomAccount); +} + +void CUserProfileHandler::logOff() { + // close active call(s) + if (_cUserProfile) { + CPhoneLine * cPhoneLine = _cUserProfile->getCPhoneLine(); + if (cPhoneLine) { + cPhoneLine->closePendingCalls(); + } + } + //// + + // hack to avoid crashes when logging off while an IMAccount is connecting + UserProfile * currentUserProfile = getUserProfileHandler().getCurrentUserProfile(); + if (currentUserProfile) { + currentUserProfile->getConnectHandler().userProfileIsLoggingOff(); + } + + setCurrentUserProfile(String::null, SipAccount::empty); +} + +bool CUserProfileHandler::userProfileExists(const std::string & name) const { + return _userProfileHandler.userProfileExists(name); +} + +SipAccount CUserProfileHandler::getSipAccountOfUserProfile(const std::string & name) { + UserProfile * userProfile = _userProfileHandler.getUserProfile(name); + SipAccount result; + + if (userProfile) { + result = *userProfile->getSipAccount(); + } + + OWSAFE_DELETE(userProfile); + + return result; +} + +void CUserProfileHandler::currentUserProfileReleased() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&CUserProfileHandler::currentUserProfileReleasedThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void CUserProfileHandler::currentUserProfileReleasedThreadSafe() { + OWSAFE_DELETE(_cUserProfile); + + PFactory::getFactory().reset(); + + _userProfileHandler.currentUserProfileReleased(); +} + +void CUserProfileHandler::noCurrentUserProfileSetEventHandler(UserProfileHandler & sender) { + _pUserProfileHandler->noCurrentUserProfileSetEventHandler(); +} + +void CUserProfileHandler::currentUserProfileWillDieEventHandler(UserProfileHandler & sender) { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&CUserProfileHandler::currentUserProfileWillDieEventHandlerThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void CUserProfileHandler::currentUserProfileWillDieEventHandlerThreadSafe() { + _pUserProfileHandler->currentUserProfileWillDieEventHandler(); +} + +void CUserProfileHandler::userProfileInitializedEventHandler(UserProfileHandler & sender, UserProfile & userProfile) { + Mutex::ScopedLock scopedLock(_mutex); + if(!_cUserProfile) + { + _cUserProfile = new CUserProfile(userProfile, _cQuteCom); + _pUserProfileHandler->userProfileInitializedEventHandler(); + } +} + +void CUserProfileHandler::sipAccountConnectionFailedEventHandler(SipAccount & sipAccount, EnumSipLoginState::SipLoginState state) { + _pUserProfileHandler->sipAccountConnectionFailedEventHandler(sipAccount, state); +} + +void CUserProfileHandler::profileLoadedFromBackupsEventHandler(UserProfileStorage &sender, std::string profileName) { + _pUserProfileHandler->profileLoadedFromBackupsEventHandler(profileName); +} + +void CUserProfileHandler::profileCannotBeLoadedEventHandler(UserProfileStorage &sender, std::string profileName) { + _pUserProfileHandler->profileCannotBeLoadedEventHandler(profileName); +} + +void CUserProfileHandler::networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state) { + + if ((state == SipAccount::NetworkDiscoveryStateError) || + (state == SipAccount::NetworkDiscoveryStateHTTPError) || + (state == SipAccount::NetworkDiscoveryStateSIPError)) { + _pUserProfileHandler->networkErrorEventHandler(sender); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfileHandler.h qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/profile/CUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/profile/CUserProfileHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,172 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCUSERPROFILEHANDLER_H +#define OWCUSERPROFILEHANDLER_H + +#include + +#include + +#include + +#include + +class CUserProfile; +class CQuteCom; +class PUserProfileHandler; +class UserProfile; +class UserProfileHandler; +class UserProfileStorage; + +/** + * Control of UserProfileHandler. + * + * @author Philippe Bernery + */ +class CUserProfileHandler : public Trackable { +public: + + CUserProfileHandler(UserProfileHandler & userProfileHandler, CQuteCom & cQuteCom); + + ~CUserProfileHandler(); + + /** + * @see UserProfileHandler::getUserProfileNames + */ + std::vector getUserProfileNames(bool onlyRealDir = false); + + /** + * @return true if the UserProfile named 'name' exists + */ + bool userProfileExists(const std::string & name) const; + + /** + * @see UserProfileHandler::setUserProfile + */ + void setCurrentUserProfile(const std::string & profileName, + const SipAccount & sipAccount); + + /** + * Convenience method to log the user off + */ + void logOff(); + + /** + * @see UserProfileHandler::currentUserProfileReleased + */ + void currentUserProfileReleased(); + + /** + * Return a copy of the SipAccount of the UserProfile named 'name'. + * + * @param name the UserProfile name + * @return the SipAccount of the UserProfile named 'name' + */ + SipAccount getSipAccountOfUserProfile(const std::string & name); + + /** + * @return the current CUserProfile. + * Can be NULL. + */ + CUserProfile * getCUserProfile() const { + Mutex::ScopedLock scopedLock(_mutex); + return _cUserProfile; + } + + /** + * @return the Presentation layer. + */ + PUserProfileHandler * getPresentation() const { return _pUserProfileHandler; } + + /** + * @return the Model layer + */ + UserProfileHandler & getUserProfileHandler() const { return _userProfileHandler; } + +private: + + /** + * @see UserProfileHandler::noCurrentUserProfileSetEvent + */ + void noCurrentUserProfileSetEventHandler(UserProfileHandler & sender); + + /** + * @see UserProfileHandler::currentUserProfileWillDieEvent + */ + void currentUserProfileWillDieEventHandlerThreadSafe(); + void currentUserProfileWillDieEventHandler(UserProfileHandler & sender); + + /** + * @see UserProfileHandler::userProfileInitializedEvent + */ + void userProfileInitializedEventHandler(UserProfileHandler & sender, + UserProfile & userProfile); + + /** + * @see UserProfileHandler::sipAccountConnectionFailedEvent + */ + void sipAccountConnectionFailedEventHandler(SipAccount & sipAccount, EnumSipLoginState::SipLoginState); + + /** + * @see UserProfileStorage::profileLoadedFromBackupsEvent + */ + void profileLoadedFromBackupsEventHandler(UserProfileStorage &sender, + std::string profileName); + + /** + * @see UserProfileStorage::profileCannotBeLoadedEvent + */ + void profileCannotBeLoadedEventHandler(UserProfileStorage &sender, + std::string profileName); + + /** + * @see setCurrentUserProfile + */ + void setUserProfileWithSipAccountThreadSafe(std::string profileName, + SipAccount sipAccount); + + /** + * @see setCurrentUserProfile + */ + void setUserProfileWithQuteComAccountThreadSafe(std::string profileName, + QuteComAccount qutecomAccount); + /** + * @see currentUserProfileReleased + */ + void currentUserProfileReleasedThreadSafe(); + + /** + * @see UserProfileHandler::networkDiscoveryStateChangedEvent + */ + void networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state); + + CUserProfile * _cUserProfile; + + PUserProfileHandler * _pUserProfileHandler; + + UserProfileHandler & _userProfileHandler; + + CQuteCom & _cQuteCom; + + mutable Mutex _mutex; +}; + +#endif //OWCUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.cpp qutecom-2.2+dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CWsCallForward.h" + +#include + +CWsCallForward::CWsCallForward(CQuteCom & cQuteCom, WsCallForward & wsCallForward) + : _wsCallForward(wsCallForward), _cQuteCom(cQuteCom) { + + _wsCallForward.wsCallForwardEvent += wsCallForwardEvent; +} + +CWsCallForward::~CWsCallForward() { +} + +CQuteCom& CWsCallForward::getCQuteCom() { + return _cQuteCom; +} + +void CWsCallForward::disableCallForward() { + _wsCallForward.disableCallForward(); +} + +void CWsCallForward::forwardToVoiceMail() { + _wsCallForward.forwardToVoiceMail(); +} + +void CWsCallForward::forwardToNumber(const std::string & number1, + const std::string & number2, const std::string & number3) { + _wsCallForward.forwardToNumber(number1, number2, number3); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.h qutecom-2.2+dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/callforward/CWsCallForward.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,71 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CWSCALLFORWARD_H +#define CWSCALLFORWARD_H + +#include + +#include + +class CQuteCom; + +/** + * + * @ingroup control + * @author Mathieu Stute + */ +class CWsCallForward : public Trackable { + +public: + + CWsCallForward(CQuteCom & cQuteCom, WsCallForward & wsCallForward); + + ~CWsCallForward(); + + /** + * @see WsCallForward + */ + Event wsCallForwardEvent; + + /** + * @see WsCallForward + */ + void disableCallForward(); + + /** + * @see WsCallForward + */ + void forwardToVoiceMail(); + + /** + * @see WsCallForward + */ + void forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3); + + CQuteCom& getCQuteCom(); + +private: + + WsCallForward & _wsCallForward; + + CQuteCom& _cQuteCom; +}; + +#endif /* CWSCALLFORWARD_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/info/CWsInfo.cpp qutecom-2.2+dfsg1/qutecom/src/control/webservices/info/CWsInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/info/CWsInfo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/info/CWsInfo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CWsInfo.h" + +CWsInfo::CWsInfo(WsInfo & wsInfo, CQuteCom & cQuteCom) + : _wsInfo(wsInfo), _cQuteCom(cQuteCom) { + + _wsInfo.wsInfoQuteComsEvent += wsInfoQuteComsEvent; + _wsInfo.wsInfoSmsCountEvent += wsInfoSmsCountEvent; + _wsInfo.wsInfoActiveMailEvent += wsInfoActiveMailEvent; + _wsInfo.wsInfoVoiceMailEvent += wsInfoVoiceMailEvent; + _wsInfo.wsInfoLandlineNumberEvent += wsInfoLandlineNumberEvent; + _wsInfo.wsCallForwardInfoEvent += wsCallForwardInfoEvent; +} + +CWsInfo::~CWsInfo() { +} + +void CWsInfo::getQuteComsCount() { + _wsInfo.getQuteComsCount(true); + _wsInfo.execute(); +} + +void CWsInfo::getSmsCount() { + _wsInfo.getSmsCount(true); + _wsInfo.execute(); +} + +void CWsInfo::getActiveMail() { + _wsInfo.getActiveMail(true); + _wsInfo.execute(); +} + +void CWsInfo::getUnreadVoiceMail() { + _wsInfo.getUnreadVoiceMail(true); + _wsInfo.execute(); +} + +void CWsInfo::getCallForwardInfo() { + _wsInfo.getCallForwardInfo(true); + _wsInfo.execute(); +} + +void CWsInfo::getLandlineNumber() { + _wsInfo.getLandlineNumber(true); + _wsInfo.execute(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/info/CWsInfo.h qutecom-2.2+dfsg1/qutecom/src/control/webservices/info/CWsInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/info/CWsInfo.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/info/CWsInfo.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,130 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CWSINFO_H +#define CWSINFO_H + +#include + +#include + +#include + +class CQuteCom; + +/** + * + * @ingroup control + * @author Mathieu Stute + */ +class CWsInfo : public Trackable { +public: + + /** + * @see WsInfo::wsInfoQuteComsEvent + */ + Event wsInfoQuteComsEvent; + + /** + * @see WsInfo::wsInfoSmsCountEvent + */ + Event wsInfoSmsCountEvent; + + /** + * @see WsInfo::wsInfoActiveMailEvent + */ + Event wsInfoActiveMailEvent; + + /** + * @see WsQuteComInfo::wsInfoVoiceMailEvent + */ + Event wsInfoVoiceMailEvent; + + /** + * @see WsQuteComInfo::wsInfoLandlineNumberEvent + */ + Event wsInfoLandlineNumberEvent; + + /** + * @see WsQuteComInfo::wsCallForwardInfoEvent + */ + Event wsCallForwardInfoEvent; + + /** + * default constructor. + * + * @param wsInfo reference to WsQuteComInfo. + * @param cQuteCom reference to CQuteCom. + */ + CWsInfo(WsInfo & wsInfo, CQuteCom & cQuteCom); + + /** + * default destructor. + */ + ~CWsInfo(); + + /** + * Get a reference to CQuteCom. + * + * @return _cQuteCom. + */ + CQuteCom & getCQuteCom() const { + return _cQuteCom; + } + + /** + * qutecom's request. + */ + void getQuteComsCount(); + + /** + * sms count request. + */ + void getSmsCount(); + + /** + * active mail request. + */ + void getActiveMail(); + + /** + * voice mail count request. + */ + void getUnreadVoiceMail(); + + /** + * call forward request. + */ + void getCallForwardInfo(); + + /** + * Landline number request. + */ + void getLandlineNumber(); + +private: + + WsInfo & _wsInfo; + + CQuteCom & _cQuteCom; +}; + +#endif //CWSINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/sms/CSms.cpp qutecom-2.2+dfsg1/qutecom/src/control/webservices/sms/CSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/sms/CSms.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/sms/CSms.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CSms.h" + +#include +#include + +CSms::CSms(WsSms & wsSms, CQuteCom & cQuteCom) + : _wsSms(wsSms), + _cQuteCom(cQuteCom) { + + _pSms = PFactory::getFactory().createPresentationSms(*this); + + _wsSms.smsStatusEvent += smsStatusEvent; +} + +CSms::~CSms() { + delete _pSms; +} + +int CSms::sendSMS(const std::string & phoneNumber, const std::string & message) { + return _wsSms.sendSMS(phoneNumber, message); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/sms/CSms.h qutecom-2.2+dfsg1/qutecom/src/control/webservices/sms/CSms.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/sms/CSms.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/sms/CSms.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CSMS_H +#define CSMS_H + +#include + +#include + +#include + +class CQuteCom; +class PSms; + +/** + * + * @ingroup control + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class CSms : public Trackable { +public: + + /** + * @see Sms::smsStatusEvent + */ + Event smsStatusEvent; + + CSms(WsSms & sms, CQuteCom & cQuteCom); + + ~CSms(); + + CQuteCom & getCQuteCom() const { + return _cQuteCom; + } + + /** + * @see Sms::sendSMS() + */ + int sendSMS(const std::string & phoneNumber, const std::string & message); + +private: + + WsSms & _wsSms; + + CQuteCom & _cQuteCom; + + PSms * _pSms; +}; + +#endif //CSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.cpp qutecom-2.2+dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CSoftUpdate.h" + +#include +#include +#include + +#include + +CSoftUpdate::CSoftUpdate(WsSoftUpdate & wsSoftUpdate, CQuteCom & cQuteCom) + : _wsSoftUpdate(wsSoftUpdate), + _cQuteCom(cQuteCom) { + + _pSoftUpdate = PFactory::getFactory().createPresentationSoftUpdate(*this); + + _wsSoftUpdate.updateQuteComEvent += + boost::bind(&CSoftUpdate::updateQuteComEventHandler, this, _1, _2, _3, _4, _5); +} + +CSoftUpdate::~CSoftUpdate() { + OWSAFE_DELETE(_pSoftUpdate); +} + +void CSoftUpdate::updateQuteComEventHandler(WsSoftUpdate & sender, + const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize) { + + _pSoftUpdate->updateQuteComEvent(downloadUrl, buildId, version, fileSize); +} + +void CSoftUpdate::checkForUpdate() { + _wsSoftUpdate.checkForUpdate(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.h qutecom-2.2+dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/control/webservices/softupdate/CSoftUpdate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CSOFTUPDATE_H +#define CSOFTUPDATE_H + +#include + +#include + +class WsSoftUpdate; +class CQuteCom; +class PSoftUpdate; + +/** + * + * @ingroup control + * @author Tanguy Krotoff + */ +class CSoftUpdate : public Trackable { +public: + + CSoftUpdate(WsSoftUpdate & wsSoftUpdate, CQuteCom & cQuteCom); + + ~CSoftUpdate(); + + CQuteCom & getCQuteCom() const { + return _cQuteCom; + } + + void checkForUpdate(); + +private: + + void updateQuteComEventHandler(WsSoftUpdate & sender, + const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize); + + WsSoftUpdate & _wsSoftUpdate; + + CQuteCom & _cQuteCom; + + PSoftUpdate * _pSoftUpdate; +}; + +#endif //CSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/EnumSipLoginState.h qutecom-2.2+dfsg1/qutecom/src/model/account/EnumSipLoginState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/EnumSipLoginState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/EnumSipLoginState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWENUMSIPLOGINSTATE_H +#define OWENUMSIPLOGINSTATE_H + +#include + +/** + * SIP account login state. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class EnumSipLoginState : NonCopyable { +public: + + enum SipLoginState { + /** Initial login state. */ + SipLoginStateUnknown, + + /** This SIP account is ready to login. */ + SipLoginStateReady, + + /** Registration has been successful, login ok connection done. */ + SipLoginStateConnected, + + /** This SIP account has been disconnected. */ + SipLoginStateDisconnected, + + /** Login/Password incorrect. */ + SipLoginStatePasswordError, + + /** A network error occured. */ + SipLoginStateNetworkError, + + /** Try to connect. */ + SipLoginStateProgress + }; + + /** + * Converts a state into a string. + * + * @return the string + */ + //static std::string toString(SipLoginState state); +}; + +#endif //OWENUMSIPLOGINSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/LocalNetworkAccount.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/LocalNetworkAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/LocalNetworkAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/LocalNetworkAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "LocalNetworkAccount.h" + +#include + +LocalNetworkAccount::LocalNetworkAccount() { + //init(); +} + +void LocalNetworkAccount::init() { + _identity = "guest"; + _username = "sip:guest@guest"; + _realm = String::null; + _displayName = "guest"; + _registerServerHostname = String::null; + _registerServerPort = -1; + _proxyServerHostname = String::null; + _proxyServerPort = -1; + _password = String::null; +} + +std::string LocalNetworkAccount::serialize() { + return String::null; +} + +bool LocalNetworkAccount::unserialize(const std::string & /*data*/) { + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/LocalNetworkAccount.h qutecom-2.2+dfsg1/qutecom/src/model/account/LocalNetworkAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/LocalNetworkAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/LocalNetworkAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LOCALNETWORKACCOUNT_H +#define LOCALNETWORKACCOUNT_H + +#include "SipAccountType.h" +#include "model/config/ConfigItem.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class LocalNetworkAccount : public SipAccountType, public ConfigItem { +public: + + LocalNetworkAccount(); + + void init(); + + std::string serialize(); + + bool unserialize(const std::string & data); + + std::string getName() const { + return "LocalNetworkAccount"; + } +}; + +#endif //LOCALNETWORKACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,329 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComAccount.h" + +#include "QuteComBuildId.h" +#include "QuteComAccountParser.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +using namespace std; + +unsigned short QuteComAccount::_testStunRetry = 2; + + +QuteComAccount::QuteComAccount() + : SipAccount(), QuteComWebService(this) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _protocol = EnumIMProtocol::IMProtocolQuteCom; + _ssoRequestOk = false; + _qutecomLoginOk = false; + _ssoWithSSL = false; + _discoveringNetwork = false; + _needsHttpTunnel = false; + _stunServer = config.getNetworkStunServer(); + _lastNetworkDiscoveryState = NetworkDiscoveryStateError; + + _ssoTimer.timeoutEvent += boost::bind(&QuteComAccount::ssoTimeoutEventHandler, this); + _ssoTimer.lastTimeoutEvent += boost::bind(&QuteComAccount::ssoLastTimeoutEventHandler, this); +} + +QuteComAccount::QuteComAccount(const std::string & login, const std::string & password, bool rememberPassword) + : SipAccount(), + QuteComWebService(this) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _protocol = EnumIMProtocol::IMProtocolQuteCom; + _qutecomLogin = login; + _qutecomPassword = password; + _rememberPassword = rememberPassword; + _ssoRequestOk = false; + _qutecomLoginOk = false; + _ssoWithSSL = false; + _needsHttpTunnel = false; + _stunServer = config.getNetworkStunServer(); + _discoveringNetwork = false; + _lastNetworkDiscoveryState = NetworkDiscoveryStateError; + + _ssoTimer.timeoutEvent += boost::bind(&QuteComAccount::ssoTimeoutEventHandler, this); + _ssoTimer.lastTimeoutEvent += boost::bind(&QuteComAccount::ssoLastTimeoutEventHandler, this); +} + +QuteComAccount::QuteComAccount(const QuteComAccount & qutecomAccount) + : SipAccount(*this), + QuteComWebService(this) { + copy(qutecomAccount); + + _ssoTimer.timeoutEvent += boost::bind(&QuteComAccount::ssoTimeoutEventHandler, this); + _ssoTimer.lastTimeoutEvent += boost::bind(&QuteComAccount::ssoLastTimeoutEventHandler, this); +} + +QuteComAccount & QuteComAccount::operator = (const QuteComAccount & qutecomAccount) { + copy(qutecomAccount); + + return *this; +} + +bool QuteComAccount::operator == (const SipAccount & other) const { + if (other.getType() != SipAccount::SipAccountTypeQuteCom) { + return false; + } + + const QuteComAccount & gother = dynamic_cast(other); + + return ( _qutecomLogin == gother._qutecomLogin && + _qutecomPassword == gother._qutecomPassword); +} + +QuteComAccount * QuteComAccount::clone() const { + return new QuteComAccount(*this); +} + +void QuteComAccount::copy(const QuteComAccount & qutecomAccount) { + SipAccount::copy(qutecomAccount); + + _qutecomLogin = qutecomAccount._qutecomLogin; + _qutecomPassword = qutecomAccount._qutecomPassword; + _rememberPassword = qutecomAccount._rememberPassword; + _ssoRequestOk = qutecomAccount._ssoRequestOk; + _qutecomLoginOk = qutecomAccount._qutecomLoginOk; + _ssoWithSSL = qutecomAccount._ssoWithSSL; + _stunServer = qutecomAccount._stunServer; + _discoveringNetwork = false; + _lastNetworkDiscoveryState = qutecomAccount._lastNetworkDiscoveryState; +} + +QuteComAccount::~QuteComAccount() { + Mutex::ScopedLock lock(_mutex); + + _ssoTimer.stop(); +} + +EnumSipLoginState::SipLoginState QuteComAccount::discoverNetwork() { + static const unsigned LOGIN_TIMEOUT = 10000; + static const unsigned LIMIT_RETRY = 5; + + if (!discoverForSSO()) { + LOG_ERROR("error while discovering network for SSO"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateHTTPError; + return EnumSipLoginState::SipLoginStateNetworkError; + } + + _ssoTimerFinished = false; + _ssoTimer.start(0, LOGIN_TIMEOUT, LIMIT_RETRY); + while (!_ssoTimerFinished) { + Thread::msleep(100); + } + + if (!_ssoRequestOk) { + LOG_ERROR("error while doing SSO request"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateError; + return EnumSipLoginState::SipLoginStateNetworkError; + } else if (_ssoRequestOk && !_qutecomLoginOk) { + LOG_ERROR("SSO request Ok but login/password are invalid"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; + return EnumSipLoginState::SipLoginStatePasswordError; + } + + if (!discoverForSIP()) { + LOG_ERROR("error while discovering network for SIP"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateSIPError; + return EnumSipLoginState::SipLoginStateNetworkError; + } + + LOG_DEBUG("initialization Ok"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; + return EnumSipLoginState::SipLoginStateReady; +} + +bool QuteComAccount::discoverForSSO() { + // + // Please contact network@openqutecom.com before any modifications. + // + + LOG_DEBUG("discovering network parameters for SSO connection"); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + string url = config.getQuteComServerHostname() + ":" + String::fromNumber(443) + config.getQuteComSSOPath(); + if (_networkDiscovery.testHTTP(url, true)) { + _ssoWithSSL = true; + LOG_DEBUG("SSO can connect on port 443 with SSL"); + return true; + } + + url = config.getQuteComServerHostname() + ":" + String::fromNumber(80) + config.getQuteComSSOPath(); + if (_networkDiscovery.testHTTP(url, false)) { + _ssoWithSSL = false; + LOG_DEBUG("SSO can connect on port 80 without SSL"); + return true; + } + + LOG_ERROR("SSO cannot connect"); + return false; +} + +bool QuteComAccount::discoverForSIP() { + // + // Please contact network@openqutecom.com before any modifications. + // + + LOG_DEBUG("discovering network parameters for SIP connection"); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _localSIPPort = _networkDiscovery.getFreeLocalPort(); + + if (!config.getNetWorkTunnelNeeded()) { + LOG_DEBUG("SIP will use " + String::fromNumber(_localSIPPort) + " as local SIP port"); + + // Stun test + unsigned short iTestStun; + for (iTestStun = 0; iTestStun < _testStunRetry; iTestStun++) { + LOG_DEBUG("testUDP (Stun): " + String::fromNumber(iTestStun + 1)); + if (_networkDiscovery.testUDP(_stunServer)) { + break; + } + } + + if (iTestStun == _testStunRetry) { + // Stun test failed + _networkDiscovery.setNatConfig(EnumNatType::NatTypeFullCone); + } + //// + + // SIP test with UDP + for (unsigned short i = 0; i < _testSIPRetry; i++) { + LOG_DEBUG("testSIP test number: " + String::fromNumber(i + 1)); + + if (_networkDiscovery.testSIP(_sipProxyServerHostname,_username, _sipProxyServerPort, _localSIPPort)) { + LOG_DEBUG("SIP can connect via UDP"); + _needsHttpTunnel = false; + return true; + } + } + //// + } + + LOG_DEBUG("cannot connect via UDP"); + + // SIP test with Http + if (_networkDiscovery.testSIPHTTPTunnel(_httpTunnelServerHostname, 80, false, + _sipProxyServerHostname, _sipProxyServerPort)) { + + _needsHttpTunnel = true; + _httpTunnelServerPort = 80; + _httpTunnelWithSSL = false; + + LOG_DEBUG("SIP can connect via a tunnel on port 80 without SSL"); + return true; + } + + if (_networkDiscovery.testSIPHTTPTunnel(_httpTunnelServerHostname, 443, false, + _sipProxyServerHostname, _sipProxyServerPort)) { + + _needsHttpTunnel = true; + _httpTunnelServerPort = 443; + _httpTunnelWithSSL = false; + + LOG_DEBUG("SIP can connect via a tunnel on port 443 without SSL"); + return true; + } + + if (_networkDiscovery.testSIPHTTPTunnel(_httpsTunnelServerHostname, 443, true, + _sipProxyServerHostname, _sipProxyServerPort)) { + + _needsHttpTunnel = true; + _httpsTunnelServerPort = 443; + _httpTunnelWithSSL = true; + + LOG_DEBUG("SIP can connect via a tunnel on port 443 with SSL"); + return true; + } + //// + + LOG_ERROR("SIP cannot connect"); + return false; +} + +void QuteComAccount::ssoTimeoutEventHandler() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + setHostname(config.getQuteComServerHostname()); + setGet(false); + setHttps(_ssoWithSSL); + setServicePath(config.getQuteComSSOPath()); + setQuteComAuthentication(true); + + LOG_DEBUG("setting proxy settings for SSO request"); + NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); + + HttpRequest::setProxy(networkProxy.getServer(), networkProxy.getServerPort(), + networkProxy.getLogin(), networkProxy.getPassword()); + + if (_ssoWithSSL) { + setPort(443); + LOG_DEBUG("sending SSO request with SSL"); + } else { + setPort(80); + LOG_DEBUG("sending SSO request without SSL"); + } + + call(this); +} + +void QuteComAccount::ssoLastTimeoutEventHandler() { + _ssoTimerFinished = true; +} + +void QuteComAccount::answerReceived(const std::string & answer, int requestId) { + if (!answer.empty()) { + LOG_DEBUG("SSO request has been processed successfully"); + _ssoRequestOk = true; + QuteComAccountParser parser(*this, answer); + if (parser.isLoginPasswordOk()) { + LOG_DEBUG("login/password Ok"); + _qutecomLoginOk = true; + _ssoTimer.stop(); + _ssoTimerFinished = true; + //SIP connection test can now be launched + } else { + LOG_DEBUG("login/password not Ok"); + _qutecomLoginOk = false; + _ssoTimer.stop(); + _ssoTimerFinished = true; + } + } +} + +bool QuteComAccount::isEmpty() const { + return (_qutecomLogin.empty() || _qutecomPassword.empty()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.h qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,156 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOMACCOUNT_H +#define OWQUTECOMACCOUNT_H + +#include +#include + +#include + +#include + +class NetworkObserver; + +/** + * Connects to the single sign-on (SSO) system of the QuteCom SIP service. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QuteComAccount : public SipAccount, public QuteComWebService { + + friend class QuteComAccountXMLSerializer; + + friend class QuteComAccountParser; + +public: + QuteComAccount(); + + QuteComAccount(const std::string & login, const std::string & password, bool rememberPassword); + + virtual ~QuteComAccount(); + + QuteComAccount(const QuteComAccount & qutecomAccount); + + virtual QuteComAccount * clone() const; + + virtual QuteComAccount & operator = (const QuteComAccount & qutecomAccount); + + virtual bool operator == (const SipAccount & other) const; + + //virtual void init(); + + /** Gets the QuteCom login (e-mail address). */ + const std::string & getQuteComLogin() const { return _qutecomLogin; } + + /** Gets the QuteCom Password. */ + const std::string & getQuteComPassword() const { return _qutecomPassword; } + + /** Sets the QuteCom login (e-mail address). */ + void setQuteComLogin(const std::string newlogin) { _qutecomLogin = newlogin; } + + /** Sets the QuteCom Password. */ + void setQuteComPassword(const std::string newpass) { _qutecomPassword = newpass; } + + virtual const std::string getUserProfileName() const { + return _qutecomLogin; + } + + /** + * @return password set by user + */ + virtual const std::string getUserPassword() const { return _qutecomPassword; } + + /** + * @return the full identity + * e.g: robobob666@voip.qutecom.fr + */ + virtual const std::string getFullIdentity() const { + return _qutecomLogin; + } + + virtual const std::string getVisibleName() const { + return _qutecomLogin; + } + + virtual SipAccountType getType() const { + return SipAccount::SipAccountTypeQuteCom; + } + + /** + * @return true if empty + */ + virtual bool isEmpty() const; + +private: + + void copy(const QuteComAccount & qutecomAccount); + + virtual EnumSipLoginState::SipLoginState discoverNetwork(); + + /** + * Discovers network for SSO request. + * + * Please contact network@openqutecom.com before any modifications. + */ + bool discoverForSSO(); + + /** + * Discovers network for SIP. + * + * Please contact network@openqutecom.com before any modifications. + */ + bool discoverForSIP(); + + void qutecomLoginEventHandler(); + + void answerReceived(const std::string & answer, int requestId); + + void ssoTimeoutEventHandler(); + + void ssoLastTimeoutEventHandler(); + + std::string _qutecomLogin; + + std::string _qutecomPassword; + + Timer _ssoTimer; + + /** True if SSO request can be done with SSL. */ + bool _ssoWithSSL; + + /** True if SSO request is Ok. */ + bool _ssoRequestOk; + + /** True if SSO request is Ok and login/password are valid. */ + bool _qutecomLoginOk; + + /** True when _timer is finished. */ + bool _ssoTimerFinished; + + /** Number of testStun retry. */ + static unsigned short _testStunRetry; +}; + +#endif //OWQUTECOMACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,129 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComAccountParser.h" + +#include +#include +#include + +#include + +#include +#include + +#include +using namespace std; + +static const std::string STATUS_CODE_OK = "200"; + +QuteComAccountParser::QuteComAccountParser(QuteComAccount & account, const std::string & data) { + + TiXmlDocument doc; + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(& doc); + + TiXmlHandle sso = docHandle.FirstChild("sso"); + + //sso status code + TiXmlElement * elem = sso.FirstChild("status").Element(); + if (elem) { + std::string statusCode = elem->Attribute("code"); + LOG_DEBUG("SSO status code=" + statusCode); + if (statusCode != STATUS_CODE_OK) { + _loginPasswordOk = false; + return; + } else { + _loginPasswordOk = true; + } + } + + //iterate over "d" element + TiXmlElement * element = sso.FirstChild("d").Element(); + while (element) { + + std::string key = std::string(element->Attribute("k")); + std::string value; + const char * tmp = element->Attribute("v"); + if (tmp) { + value = std::string(tmp); + } + + if (key == "sip.auth.userid") { + account._identity = value; + } else if (key == "sip.auth.password") { + account._password = value; + } else if (key == "sip.auth.realm") { + account._realm = value; + } else if (key == "sip.address.name") { + account._username = value; + } else if (key == "sip.address.displayname") { + account._displayName = value; + } else if (key == "sip.address.server.host") { + account._registerServerHostname = value; + } else if (key == "sip.address.server.port") { + account._registerServerPort = String(value).toInteger(); + } else if (key == "sip.outbound") { + //TODO: pass this parameter to phapi by phconfig + } else if (key == "sip.outbound.proxy.host") { + account._sipProxyServerHostname = value; + } else if (key == "sip.outbound.proxy.port") { + account._sipProxyServerPort = String(value).toInteger(); + } else if (key == "netlib.stun.host") { + account._stunServer = value; + } + + else if (key == "netlib.tunnel.http") { + StringList httpTunnels; + TiXmlElement * elt = element->FirstChildElement("l"); + while (elt) { + + const char * tmp = elt->Attribute("v"); + if (tmp) { + httpTunnels += std::string(tmp); + } + + elt = elt->NextSiblingElement("l"); + } + account._httpTunnelServerHostname = chooseHttpTunnel(httpTunnels); + + } else if (key == "netlib.tunnel.https") { + StringList httpsTunnels; + TiXmlElement * elt = element->FirstChildElement("l"); + while (elt) { + + const char * tmp = elt->Attribute("v"); + if (tmp) { + httpsTunnels += std::string(tmp); + } + + elt = elt->NextSiblingElement("l"); + } + account._httpsTunnelServerHostname = chooseHttpTunnel(httpsTunnels); + } + + element = element->NextSiblingElement("d"); + } +} + +std::string QuteComAccountParser::chooseHttpTunnel(const StringList & httpTunnels) { + srand(time(NULL)); + return httpTunnels[rand() % httpTunnels.size()]; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.h qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountParser.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,111 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOMACCOUNTPARSER_H +#define OWQUTECOMACCOUNTPARSER_H + +#include "QuteComAccount.h" + +#include + +class StringList; + +/** + * Parses the XML datas from the Single Sign On authentication on the QuteCom platform (SSO). + * + * This a separated class rather than to be inside the class QuteComAccount, + * this allows more modularity and encapsulates the use of TinyXML. + * + * XML scheme + * + * http://ws.qutecom.fr/softphone-sso/sso.php?login=LOGIN&password=PASSWORD + * + * Replace LOGIN and PASSWORD by the login/password provided by QuteCom. + * + * If the login/password are wrong it will return: + *
+ * 
+ * 
+ *     Unauthorized
+ * 
+ * 
+ * + * If the login/password are correct it will return: + *
+ * 
+ * 
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ * 	
+ *	
+ *		
+ *		
+ *	
+ *	
+ *		
+ *		
+ *		
+ *		
+ *	
+ * 
+ * 
+ * + * @ingroup model + * @author Mathieu Stute + * @author Tanguy Krotoff + */ +class QuteComAccountParser { +public: + + QuteComAccountParser(QuteComAccount & account, const std::string & data); + + /** + * Check if password is correct + * + * @return true if login ok + */ + bool isLoginPasswordOk() const { + return _loginPasswordOk; + } + +private: + + /** + * Choose a random http tunnel + * + * @param httpTunnels a list of http tunnel ip + * @return a http tunnel ip + */ + std::string chooseHttpTunnel(const StringList & httpTunnels); + + bool _loginPasswordOk; +}; + +#endif //OWQUTECOMACCOUNTPARSER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComAccountXMLSerializer.h" + +#include + +#include +#include +#include + +#include + +QuteComAccountXMLSerializer::QuteComAccountXMLSerializer(QuteComAccount & qutecomAccount) + : _qutecomAccount(qutecomAccount) { +} + +std::string QuteComAccountXMLSerializer::serialize() { + std::string result; + + result += "\n"; + + result += "" + _qutecomAccount.getQuteComLogin() + "\n"; + + result += "" + Base64::encode(_qutecomAccount.getQuteComPassword()) + "\n"; + + result += "" + String::fromBoolean(_qutecomAccount.isPasswordRemembered()) + "\n"; + + result += "" + _qutecomAccount.getVoicemailNumber() + "\n"; + + result += "\n"; + + return result; +} + +bool QuteComAccountXMLSerializer::unserialize(const std::string & data) { + TiXmlDocument doc; + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlHandle qutecomaccount = docHandle.FirstChild("qutecomaccount"); + + // Retrieving login + TiXmlNode * login = qutecomaccount.FirstChild("login").Node(); + if (login && login->FirstChild()) { + _qutecomAccount._qutecomLogin = login->FirstChild()->Value(); + } else { + LOG_ERROR("Invalid QuteComAccount: no login set"); + return false; + } + //// + + // Retrieving password + TiXmlNode * password = qutecomaccount.FirstChild("password").Node(); + if (password && password->FirstChild()) { + _qutecomAccount._qutecomPassword = Base64::decode(password->FirstChild()->Value()); + } + //// + + // Retrieving autologin + TiXmlNode * rememberpassword = qutecomaccount.FirstChild("rememberp").Node(); + if (rememberpassword && rememberpassword->FirstChild()) { + String rememberpasswordStr = rememberpassword->FirstChild()->Value(); + _qutecomAccount._rememberPassword = rememberpasswordStr.toBoolean(); + } + //// + + // Retrieving voicemail number + TiXmlNode * voicemail = qutecomaccount.FirstChild("voicemail").FirstChild().Node(); + if (voicemail) { + _qutecomAccount.setVoicemailNumber(voicemail->Value()); + } + //// + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/qutecom/QuteComAccountXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QUTECOMACCOUNTXMLSERIALIZER_H +#define QUTECOMACCOUNTXMLSERIALIZER_H + +#include + +class QuteComAccount; + +/** + * Serialize a QuteComAccount object. + * + * @author Philippe Bernery + */ +class QuteComAccountXMLSerializer : public Serializable { +public: + + QuteComAccountXMLSerializer(QuteComAccount & qutecomAccount); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + QuteComAccount & _qutecomAccount; + +}; + +#endif //QUTECOMACCOUNTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccount.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,326 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "SipAccount.h" + +#include +#include +#include +#include + +#include +#include +#include + +SipAccount SipAccount::empty; +unsigned short SipAccount::_testSIPRetry = 4; +int SipAccount::_initTimerMaximum = 4; +int SipAccount::_initTimerInterval = 5000; + +SipAccount::SipAccount() + : Account(EnumIMProtocol::IMProtocolSIP) { + + _registerServerPort = 0; + _sipProxyServerPort = 0; + _httpTunnelServerPort = 0; + _httpsTunnelServerPort = 0; + _needsHttpTunnel = false; + _httpTunnelWithSSL = false; + _localSIPPort = 0; + _isConnected = false; + _rememberPassword = true; + _visibleName = ""; + _voicemail = "123"; + _enablePIM = true; + _initSuccessful = false; + + _discoveringNetwork = false; + _lastNetworkDiscoveryState = NetworkDiscoveryStateError; + + //_lastNetworkDiscoveryState = NetworkDiscoveryStateUnknown; + _lastLoginState = EnumSipLoginState::SipLoginStateUnknown; + + //_initTimer.timeoutEvent += boost::bind(&SipAccount::initTimeoutEventHandler, this); + _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); + _initTimerCounter = 0; +} + +SipAccount::SipAccount(const std::string & username,const std::string & userid , + const std::string & password, const std::string & realm, + const std::string & registerservername, unsigned registerserverport, + const std::string & SIPproxyservername, unsigned SIPproxyserverport, + bool rememberPasswod, bool enablePIM) { + + _protocol = EnumIMProtocol::IMProtocolSIP; + _identity = userid; + _username = username; + _realm = realm; + _password = password; + _registerServerHostname = registerservername; + _registerServerPort = registerserverport; + _sipProxyServerHostname = SIPproxyservername; + _sipProxyServerPort = SIPproxyserverport; + _enablePIM = enablePIM; + _voicemail = "123"; + _rememberPassword = rememberPasswod; + _discoveringNetwork = false; + _lastNetworkDiscoveryState = NetworkDiscoveryStateError; + _initSuccessful = false; + + _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); + _initTimerCounter = 0; +} + +SipAccount::SipAccount(const SipAccount & sipAccount) + : Account(sipAccount) { + copy(sipAccount); +} + +SipAccount & SipAccount::operator = (const SipAccount & sipAccount) { + copy(sipAccount); + + return *this; +} + +SipAccount * SipAccount::clone() const { + return new SipAccount(*this); +} + +SipAccount::~SipAccount() { + Mutex::ScopedLock lock(_mutex); + + if (NetworkObserver::hasInstance()) { + NetworkObserver::getInstance().connectionIsDownEvent -= + boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); + NetworkObserver::getInstance().connectionIsUpEvent -= + boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1); + } + + _initTimer.stop(); +} + +void SipAccount::copy(const SipAccount & sipAccount) { + Account::copy(sipAccount); + + _registerServerHostname = sipAccount._registerServerHostname; + _registerServerPort = sipAccount._registerServerPort; + _sipProxyServerHostname = sipAccount._sipProxyServerHostname; + _sipProxyServerPort = sipAccount._sipProxyServerPort; + _httpTunnelServerHostname = sipAccount._httpTunnelServerHostname; + _httpTunnelServerPort = sipAccount._httpTunnelServerPort; + _httpsTunnelServerHostname = sipAccount._httpsTunnelServerHostname; + _httpsTunnelServerPort = sipAccount._httpsTunnelServerPort; + _needsHttpTunnel = sipAccount._needsHttpTunnel; + _httpTunnelWithSSL = sipAccount._httpTunnelWithSSL; + _localSIPPort = sipAccount._localSIPPort; + _isConnected = sipAccount._isConnected; + _rememberPassword = sipAccount._rememberPassword; + _displayName = sipAccount._displayName; + _identity = sipAccount._identity; + _username = sipAccount._username; + _password = sipAccount._password; + _realm = sipAccount._realm; + _lastNetworkDiscoveryState = sipAccount._lastNetworkDiscoveryState; + _lastLoginState = sipAccount._lastLoginState; + _visibleName = sipAccount._visibleName; + _voicemail = sipAccount._voicemail; + _enablePIM = sipAccount._enablePIM; + _initSuccessful = sipAccount._initSuccessful; + + _discoveringNetwork = false; + + _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); + _initTimerCounter = sipAccount._initTimerCounter; +} + +bool SipAccount::operator == (const SipAccount & other) const { + if (other.getType() != SipAccountTypeBasic) { + return false; + } + else + loginStateChangedEvent(*(SipAccount *)this, EnumSipLoginState::SipLoginStateNetworkError); + + return ( _identity == other._identity && + _username == other._username && + _realm == other._realm && + _password == other._password && + _registerServerHostname == other._registerServerHostname && + _registerServerPort == other._registerServerPort && + _sipProxyServerHostname == other._sipProxyServerHostname && + _sipProxyServerPort == other._sipProxyServerPort ); +} + +void SipAccount::setConnected(bool connected) { + Mutex::ScopedLock lock(_mutex); + + if (_isConnected != connected) { + _isConnected = connected; + if (_isConnected) { + loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateConnected); + } else { + loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateDisconnected); + } + } +} + +void SipAccount::phoneLineAuthenticationError() { + loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStatePasswordError); +} + +void SipAccount::init() { + Mutex::ScopedLock lock(_mutex); + + _initSuccessful = false; + + if (NetworkObserver::getInstance().isConnected()) { + _initTimerCounter = 0; + _initTimer.start(0, _initTimerInterval, 1); + } + else + loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateNetworkError); + + NetworkObserver::getInstance().connectionIsDownEvent += + boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); + NetworkObserver::getInstance().connectionIsUpEvent += + boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1); +} + +void SipAccount::initLastTimeoutEventHandler() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&SipAccount::initLastTimeoutEventHandlerThreadSafe, this)); + QuteCom::getInstance().postEvent(event); +} + +void SipAccount::initLastTimeoutEventHandlerThreadSafe() { + Mutex::ScopedLock lock(_mutex); + + _initTimer.stop(); + + if (++_initTimerCounter >= _initTimerMaximum) { + loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateNetworkError); + networkDiscoveryStateChangedEvent(*this, _lastNetworkDiscoveryState); + } else { + if (!_discoveringNetwork) { + _discoveringNetwork = true; + _lastLoginState = discoverNetwork(); + if (_lastLoginState != EnumSipLoginState::SipLoginStateNetworkError) { + + loginStateChangedEvent(*this, _lastLoginState); + networkDiscoveryStateChangedEvent(*this, _lastNetworkDiscoveryState); + + /*NetworkObserver::getInstance().connectionIsDownEvent -= + boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); + NetworkObserver::getInstance().connectionIsUpEvent -= + boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1);*/ + _initSuccessful = true; + } else { + // restart timer + _initTimer.start(_initTimerInterval, 0, 1); + } + _discoveringNetwork = false; + } + } +} + +void SipAccount::connectionIsUpEventHandler(NetworkObserver & sender) { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&SipAccount::connectionIsUpEventHandlerThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void SipAccount::connectionIsUpEventHandlerThreadSafe() { + Mutex::ScopedLock lock(_mutex); + + if (!_initSuccessful) { + _initTimerCounter = 0; + _initTimer.start(0, _initTimerInterval, 1); + } +} + +void SipAccount::connectionIsDownEventHandler(NetworkObserver & sender) { + //typedef ThreadEvent0 MyThreadEvent; + //MyThreadEvent * event = + // new MyThreadEvent(boost::bind(&SipAccount::connectionIsDownEventHandlerThreadSafe, this)); + + //QuteCom::getInstance().postEvent(event); + connectionIsDownEventHandlerThreadSafe(); +} + +void SipAccount::connectionIsDownEventHandlerThreadSafe() { + Mutex::ScopedLock lock(_mutex); + + _initTimer.stop(); +} + +bool SipAccount::discoverForSIP() { + // + // Please contact network@openqutecom.com before any modifications. + // + + LOG_DEBUG("discovering network parameters for SIP connection"); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _localSIPPort = _networkDiscovery.getFreeLocalPort(); + + if (!config.getNetWorkTunnelNeeded()) { + LOG_DEBUG("SIP will use " + String::fromNumber(_localSIPPort) + " as local SIP port"); + + // SIP test with UDP + for (unsigned short i = 0; i < _testSIPRetry; i++) { + LOG_DEBUG("testSIP test number: " + String::fromNumber(i + 1)); + + if (_networkDiscovery.testSIP(_sipProxyServerHostname,_username, (unsigned short) _sipProxyServerPort, (unsigned short) _localSIPPort)) { + LOG_DEBUG("SIP can connect via UDP"); + _needsHttpTunnel = false; + return true; + } + } + //// + } + + LOG_ERROR("cannot connect via UDP"); + + return false; +} + +EnumSipLoginState::SipLoginState SipAccount::discoverNetwork() { + if (!discoverForSIP()) { + LOG_ERROR("error while discovering network for SIP"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateSIPError; + return EnumSipLoginState::SipLoginStateNetworkError; + } + + LOG_DEBUG("initialization Ok"); + _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; + return EnumSipLoginState::SipLoginStateReady; +} + +bool SipAccount::isEmpty() const { + return ( _identity.empty() || + _username.empty() || + _realm.empty() || + _registerServerHostname.empty() || + _registerServerPort == 0 || + _sipProxyServerHostname.empty() || + _sipProxyServerPort == 0 ); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccount.h qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,577 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWSIPACCOUNT_H +#define OWSIPACCOUNT_H + +#include "EnumSipLoginState.h" + +#include + +#include +#include + +#include +#include + +#include + +#include + +class NetworkObserver; + +/** + * Contains informations of a SIP account. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + * @author Xavier Desjardins + */ +class SipAccount : public Account { +public: + + /** Empty SipAccount. */ + static SipAccount empty; + + /** + * Emitted when the account tried to register. + * + * @param sender this class + * @param state the SIP account login state + */ + Event< void (SipAccount & sender, EnumSipLoginState::SipLoginState state) > loginStateChangedEvent; + + enum NetworkDiscoveryState { + /** Initial NetworkDiscoveryState. */ + NetworkDiscoveryStateUnknown, + + /** Network discovery has been successful. */ + NetworkDiscoveryStateOk, + + /** An error occured in testHTTP. */ + NetworkDiscoveryStateHTTPError, + + /** An error occured in testSIP. */ + NetworkDiscoveryStateSIPError, + + /** A proxy has been detected and it needs authentication. */ + NetworkDiscoveryStateProxyNeedsAuthentication, + + /** A sip error occured while discovering the network. */ + NetworkDiscoveryStateError + }; + + /** + * Emitted when an event occured while detecting network configuration. + * + * @param sender this class + * @param state state of the network discovery + */ + Event< void (SipAccount & sender, NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; + + SipAccount(); + + SipAccount(const std::string & username,const std::string & userid , + const std::string & password, const std::string & realm, + const std::string & registerservername, unsigned registerserverport, + const std::string & SIPproxyservername, unsigned SIPproxyserverport, + bool rememberPassword, bool enablePIM); + + SipAccount(const SipAccount & sipAccount); + + virtual ~SipAccount(); + + virtual SipAccount * clone() const; + + virtual SipAccount & operator = (const SipAccount & sipAccount); + + virtual bool operator== (const SipAccount & other) const; + + /** + * Initializes the SIP account. + * + * Discover network and set configuration. + */ + virtual void init(); + + /** + * @return the full identity + * e.g: identity: toto + * realm: voip.qutecom.fr + * full identity: toto@voip.qutecom.fr + */ + virtual const std::string getFullIdentity() const { + return getIdentity() + std::string("@") + getRealm(); + } + + /** + * @return the sip address + * e.g: identity: toto + * realm: voip.qutecom.fr + * full identity: sip:toto@voip.qutecom.fr + */ + const std::string getSIPAddress() const { + return std::string("sip:") + getIdentity() + std::string("@") + getRealm(); + } + + /** + * @return the user identity + */ + const std::string & getIdentity() const { + return _identity; + } + /** + * @param identity the user identity + */ + void setIdentity(const std::string & identity) { _identity = identity; } + + /** + * @return the user name. Will be sent in the "From: " header + * of a SIP transaction. Usually same as Identity + */ + const std::string & getUsername() const { + return _username; + } + /** + * @param the user name. Will be sent in the "From: " header + * of a SIP transaction. Usually same as Identity + */ + void setUsername(const std::string & username) { _username = username; } + + /** + * @return the realm of this SipAccount. + * e.g: from a qutecom account: test@voip.openqutecom.org, + * getRealm will return voip.openqutecom.org + */ + const std::string & getRealm() const { + return _realm; + } + + /** + * @param the realm of this SipAccount. + * e.g: from a qutecom account: test@voip.openqutecom.org, + * getRealm will return voip.openqutecom.org + */ + void setRealm(const std::string & realm) { _realm = realm; } + + /** + * @return the password. + */ + const std::string & getPassword() const { + return _password; + } + + /** + * @param the password. + */ + void setPassword(const std::string & password){ _password = password; } + + /** + * @return the display name + */ + const std::string & getDisplayName() const { + return _displayName; + } + + /** + * @param the display name + */ + void setDisplayName(const std::string & displayName) { _displayName = displayName; } + + /** + * @return the register server address + */ + const std::string & getRegisterServerHostname() const { + return _registerServerHostname; + } + + /** + * @param the register server address + */ + void setRegisterServerHostname(const std::string & server) { _registerServerHostname = server; } + + /** + * @return the register server port + */ + unsigned getRegisterServerPort() const { + return _registerServerPort; + } + + /** + * @param the register server port + */ + void setRegisterServerPort(unsigned port) { _registerServerPort = port; } + + /** + * @return the SIP proxy server address + */ + const std::string & getSIPProxyServerHostname() const { + return _sipProxyServerHostname; + } + + /** + * @param SIP proxy server address. + */ + void setSIPProxyServerHostname(const std::string & server) { _sipProxyServerHostname = server; } + + /** + * @return the SIP proxy server port + */ + unsigned getSIPProxyServerPort() const { + return _sipProxyServerPort; + } + + /** + * @param SIP proxy server port. + */ + void setSIPProxyServerPort(unsigned port) { _sipProxyServerPort = port; } + + /** + * @return the http tunnel server address. Currently only useful for a QuteComAccount + */ + const std::string & getHttpTunnelServerHostname() const { + return _httpTunnelServerHostname; + } + + /** + * @return the http tunnel server port. Currently only useful for a QuteComAccount + */ + unsigned getHttpTunnelServerPort() const { + return _httpTunnelServerPort; + } + + /** + * @return the https tunnel server address. Currently only useful for a QuteComAccount + */ + const std::string & getHttpsTunnelServerHostname() const { + return _httpsTunnelServerHostname; + } + + /** + * @return the https tunnel server port. Currently only useful for a QuteComAccount + */ + unsigned getHttpsTunnelServerPort() const { + return _httpsTunnelServerPort; + } + + /** + * @return true if HttpTunnel must be used with SSL + */ + bool httpTunnelHasSSL() const { + return _httpTunnelWithSSL; + } + + /** + * @return true if the SIP connection needs a HttpTunnel + */ + bool isHttpTunnelNeeded() const { + return _needsHttpTunnel; + } + + /** + * @return the local SIP port to use + */ + unsigned getLocalSIPPort() const { + return _localSIPPort; + } + + /** + * @return True if remember password is activated. + */ + bool isPasswordRemembered() const { + return _rememberPassword; + } + + /** + * @return Set remember password. + */ + void setRememberPassword(bool newState) { + _rememberPassword = newState; + } + + /** + * @return true if this SipAccount is connected + */ + bool isConnected() const { + return _isConnected; + } + + /** + * Sets connection state. + */ + void setConnected(bool connected); + + /** + * PhoneLine can not connect. + */ + void phoneLineAuthenticationError(); + + enum SipAccountType { + /** Basic SIP account. */ + SipAccountTypeBasic, + + /** QuteCom SIP account. */ + SipAccountTypeQuteCom + }; + + /** + * Gets the type of SIP account for this SipAccount. + * + * @return SIP account type + */ + virtual SipAccountType getType() const { + return SipAccountTypeBasic; + } + + NetworkDiscoveryState getLastNetworkDiscoveryState() const { + return _lastNetworkDiscoveryState; + } + + EnumSipLoginState::SipLoginState getLastLoginState() const { + return _lastLoginState; + } + + /** + * Gets the VLine used by this SipAccount. + */ + int getVLineID() const { + return _vLineId; + } + + /** + * Sets the VLine ID used by this SipAccount. + */ + void setVLineID(int vLineId) { + _vLineId = vLineId; + } + + /** + * @return true if empty + */ + virtual bool isEmpty() const; + + /** + * @return password set by user + */ + virtual const std::string getUserPassword() const { + return _password; + } + + /** + * @return userprofile's name + */ + virtual const std::string getUserProfileName() const { + return _userProfileName; + } + + /** + * Sets the userprofile's name + * + * @param newUserProfileName name of the userprofile + */ + void setUserProfileName(std::string newUserProfileName) { + _userProfileName = newUserProfileName; + } + + /** + * Sets visible name + * + * param name name to be displayed to the user + */ + void setVisibleName(const std::string name) { + _visibleName = name; + } + + /** + * @return name setted by the user + */ + virtual const std::string getVisibleName() const { + return _visibleName; + } + + /** + * @return voicemail number + */ + const std::string getVoicemailNumber() { + return _voicemail; + } + + /** + * Sets the voicemail number + * @param number new voicemail number + */ + void setVoicemailNumber(std::string number) { + _voicemail = number; + } + + /** + * Activate PIM(SIP/SIMPLE) support. + * @param enable if True SIP/SIMPLE is enabled. + */ + void enablePIM(const bool enable) { + _enablePIM = enable; + } + + /** + * @return True if SIP/SIMPLE is enabled. + */ + bool isPIMEnabled() const { + return _enablePIM; + } + +protected: + + /** + * Copy a SipAccount. + */ + virtual void copy(const SipAccount & sipAccount); + + //virtual void initTimeoutEventHandler(); + + void initLastTimeoutEventHandler(); + void initLastTimeoutEventHandlerThreadSafe(); + + /** + * @see NetworkObserver::connectionIsUpEvent + */ + void connectionIsUpEventHandler(NetworkObserver & sender); + void connectionIsUpEventHandlerThreadSafe(); + + /** + * Handle NetworkObserver::connectionIsDownEvent + */ + void connectionIsDownEventHandler(NetworkObserver & sender); + void connectionIsDownEventHandlerThreadSafe(); + + + /** + * Discovers network for SIP. + * + * Please contact network@openqutecom.com before any modifications. + */ + virtual bool discoverForSIP(); + + virtual EnumSipLoginState::SipLoginState discoverNetwork(); + + /** The identity. */ + std::string _identity; + + /** The username. */ + std::string _username; + + /** The realm. */ + std::string _realm; + + /** The password. */ + std::string _password; + + /** The display name. */ + std::string _displayName; + + /** The register server hostname. */ + std::string _registerServerHostname; + + /** The register server port. */ + unsigned _registerServerPort; + + /** The SIP proxy server hostname. */ + std::string _sipProxyServerHostname; + + /** The SIP proxy server port. */ + unsigned _sipProxyServerPort; + + /** True if the SIP connection needs a HttpTunnel. */ + bool _needsHttpTunnel; + + /** The HttpTunnel server address. Currently only useful for a QuteComAccount */ + std::string _httpTunnelServerHostname; + + /** The HttpTunnel server port. Currently only useful for a QuteComAccount */ + unsigned _httpTunnelServerPort; + + /** The HttpsTunnel server address. Currently only useful for a QuteComAccount */ + std::string _httpsTunnelServerHostname; + + /** The HttpsTunnel server port. Currently only useful for a QuteComAccount */ + unsigned _httpsTunnelServerPort; + + /** True if HttpTunnel must use SSL. */ + bool _httpTunnelWithSSL; + + /** The local SIP port to use. */ + unsigned _localSIPPort; + + /** The NetworkDiscovery object. */ + NetworkDiscovery _networkDiscovery; + + /** True if network discovery is running. */ + bool _discoveringNetwork; + + /** True if this SipAccount is connected. */ + bool _isConnected; + + /** True if this SipAccount must remember is password. */ + bool _rememberPassword; + + /** The STUN server used by NetworkDiscovery to check NAT and UDP connection. */ + std::string _stunServer; + + /** Used to remember the last NetworkDiscoveryState. */ + NetworkDiscoveryState _lastNetworkDiscoveryState; + + /** Used to remember the last LoginState. */ + EnumSipLoginState::SipLoginState _lastLoginState; + + /** VLine ID used by this SipAccount. */ + int _vLineId; + + /** Number of testSIP retry. */ + static unsigned short _testSIPRetry; + + /** name of the userprofile that uses this sipaccount */ + std::string _userProfileName; + + /** name set and visiable by user */ + std::string _visibleName; + + /** voicemail number */ + std::string _voicemail; + + /** enable Presence and Instant Messaging support (SIP/SIMPLE) */ + bool _enablePIM; + + Mutex _mutex; + + Timer _initTimer; + + /** True if initialization has been successul. */ + bool _initSuccessful; + + /** count timer call */ + int _initTimerCounter; + + /** maxium timer call */ + static int _initTimerMaximum; + + /** init timer time interval */ + static int _initTimerInterval; +}; + +#endif //OWSIPACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountType.h qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountType.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountType.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountType.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SIPACCOUNTTYPE_H +#define SIPACCOUNTTYPE_H + +#include "SipAccount.h" + +class SipAccountType : public SipAccount { +public: + + virtual ~SipAccountType() { } + + virtual void init() = 0; + + virtual const std::string & getIdentity() const { return _identity; } + + virtual const std::string & getUsername() const { return _username; } + + virtual const std::string & getRealm() const { return _realm; } + + virtual const std::string & getDisplayName() const { return _displayName; } + + virtual const std::string & getRegisterServerHostname() const { return _registerServerHostname; } + + virtual unsigned getRegisterServerPort() const { return _registerServerPort; } + + virtual const std::string & getProxyServerHostname() const { return _proxyServerHostname; } + + virtual unsigned getProxyServerPort() const { return _proxyServerPort; } + + virtual const std::string & getPassword() const { return _password; } + + virtual const std::string & getTunnelServerHostname() const { return _tunnelServerHostname; } + + virtual unsigned getTunnelServerPort() const { return _tunnelServerPort; } + +protected: + std::string _identity; + std::string _username; + std::string _realm; + std::string _displayName; + std::string _registerServerHostname; + unsigned _registerServerPort; + std::string _proxyServerHostname; + unsigned _proxyServerPort; + std::string _password; + std::string _tunnelServerHostname; + unsigned _tunnelServerPort; +}; + +#endif //SIPACCOUNTTYPE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,158 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "SipAccountXMLSerializer.h" + +#include + +#include +#include +#include + +#include + +SipAccountXMLSerializer::SipAccountXMLSerializer(SipAccount & sipAccount) + : _sipAccount(sipAccount) { +} + +std::string SipAccountXMLSerializer::serialize() { + std::string result; + + result += "\n"; + result += "" + _sipAccount.getVisibleName() + "\n"; + result += "" + _sipAccount.getIdentity() + "\n"; + result += "" + _sipAccount.getUsername() + "\n"; + result += "" + _sipAccount.getDisplayName() + "\n"; + result += "" + Base64::encode(_sipAccount.getPassword()) + "\n"; + result += "" + _sipAccount.getRealm() + "\n"; + result += "" + _sipAccount.getRegisterServerHostname() + "\n"; + result += "" + String::fromNumber(_sipAccount.getRegisterServerPort()) + "\n"; + result += "" + _sipAccount.getSIPProxyServerHostname() + "\n"; + result += "" + String::fromNumber(_sipAccount.getSIPProxyServerPort()) + "\n"; + result += "" + _sipAccount.getVoicemailNumber() + "\n"; + result += "" + String::fromBoolean(_sipAccount.isPIMEnabled()) + "\n"; + result += "\n"; + + return result; +} + +bool SipAccountXMLSerializer::unserialize(const std::string & data) { + + TiXmlDocument doc; + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlHandle sipaccount = docHandle.FirstChild("sipaccount"); + + // Retrieving visible name + TiXmlNode * visiblename = sipaccount.FirstChild("visiblename").FirstChild().Node(); + if (visiblename) { + _sipAccount.setVisibleName(visiblename->Value()); + } else { + LOG_ERROR("Invalid QuteComAccount: no visiblename set"); + return false; + } + //// + + // Retrieving identity + TiXmlNode * identity = sipaccount.FirstChild("identity").FirstChild().Node(); + if (identity) { + _sipAccount.setIdentity(identity->Value()); + } else { + LOG_ERROR("Invalid QuteComAccount: no identity set"); + return false; + } + //// + + // Retrieving username + TiXmlNode * username = sipaccount.FirstChild("username").FirstChild().Node(); + if (username) { + _sipAccount.setUsername(username->Value()); + } + //// + + // Retrieving displayname + TiXmlNode * displayname = sipaccount.FirstChild("displayname").FirstChild().Node(); + if (displayname) { + _sipAccount.setDisplayName(displayname->Value()); + } + //// + + // Retrieving password + TiXmlNode * password = sipaccount.FirstChild("password").FirstChild().Node(); + if (password) { + _sipAccount.setPassword(Base64::decode(password->Value())); + //_sipAccount.setPassword(password->Value()); + } + //// + + // Retrieving realm + TiXmlNode * realm = sipaccount.FirstChild("realm").FirstChild().Node(); + if (realm) { + _sipAccount.setRealm(realm->Value()); + } + //// + + // Retrieving registerserver + TiXmlNode * registerserver = sipaccount.FirstChild("registerserver").FirstChild().Node(); + if (registerserver) { + _sipAccount.setRegisterServerHostname(registerserver->Value()); + } + //// + + // Retrieving registerport + TiXmlNode * registerport = sipaccount.FirstChild("registerport").FirstChild().Node(); + if (registerport) { + String sSipRegisterServerPort = registerport->Value(); + _sipAccount.setRegisterServerPort(sSipRegisterServerPort.toInteger()); + } + //// + + // Retrieving sipproxyserver + TiXmlNode * sipproxyserver = sipaccount.FirstChild("sipproxyserver").FirstChild().Node(); + if (sipproxyserver) { + _sipAccount.setSIPProxyServerHostname(sipproxyserver->Value()); + } + //// + + // Retrieving sipproxyport + TiXmlNode * sipproxyport = sipaccount.FirstChild("sipproxyport").FirstChild().Node(); + if (sipproxyport) { + String sSipProxyServerPort = sipproxyport->Value(); + _sipAccount.setSIPProxyServerPort(sSipProxyServerPort.toInteger()); + } + //// + + // Retrieving voicemail number + TiXmlNode * voicemail = sipaccount.FirstChild("voicemail").FirstChild().Node(); + if (voicemail) { + _sipAccount.setVoicemailNumber(voicemail->Value()); + } + //// + + // Retrieving pim + TiXmlNode * pim = sipaccount.FirstChild("pim").FirstChild().Node(); + if (pim) { + String validStr = pim->Value(); + _sipAccount.enablePIM(validStr.toBoolean()); + } + //// + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/account/SipAccountXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWSIPACCOUNTXMLSERIALIZER_H +#define OWSIPACCOUNTXMLSERIALIZER_H + +#include + +class SipAccount; + +/** + * SipAccount serialization. + * + * @author Philippe Bernery + */ +class SipAccountXMLSerializer : public Serializable { +public: + + SipAccountXMLSerializer(SipAccount & sipAccount); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + SipAccount & _sipAccount; + +}; + +#endif //OWSIPACCOUNTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/chat/ChatHandler.cpp qutecom-2.2+dfsg1/qutecom/src/model/chat/ChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/chat/ChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/chat/ChatHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,148 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ChatHandler.h" + +#include + +#include +#include +#include + +#include +#include + +ChatHandler::ChatHandler(UserProfile & userProfile) + : _userProfile(userProfile) { + + _userProfile.getIMAccountManager().imAccountAddedEvent += + boost::bind(&ChatHandler::imAccountAddedEventHandler, this, _1, _2); + _userProfile.getIMAccountManager().imAccountRemovedEvent += + boost::bind(&ChatHandler::imAccountRemovedEventHandler, this, _1, _2); +} + +ChatHandler::~ChatHandler() { + RecursiveMutex::ScopedLock lock(_mutex); + + for (IMChatSessionList::const_iterator it = _imChatSessionList.begin(); + it != _imChatSessionList.end(); + it++) { + delete (*it); + } + + for (IMChatMap::const_iterator it = _imChatMap.begin(); + it != _imChatMap.end(); + ++it) { + delete (*it).second; + } +} + +void ChatHandler::createSession(const std::string & imAccountId, const IMContactSet & imContactSet) { + RecursiveMutex::ScopedLock lock(_mutex); + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + + if (imAccount) { + LOG_DEBUG("creating new IMChatSession for: " + imAccount->getLogin()); + IMChatMap::iterator it = _imChatMap.find(imAccount->getUUID()); + if (it != _imChatMap.end()) { + (*it).second->createSession(imContactSet); + } else { + LOG_ERROR("No IMChat created for this IMAccount"); + } + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount not found!"); + } +} + +void ChatHandler::newIMChatSessionCreatedEventHandler(IMChat & sender, IMChatSession & imChatSession) { + RecursiveMutex::ScopedLock lock(_mutex); + + LOG_DEBUG("a new IMChatSession has been created"); + _imChatSessionList.push_back(&imChatSession); + imChatSession.imChatSessionWillDieEvent += + boost::bind(&ChatHandler::imChatSessionWillDieEventHandler, this, _1); + newIMChatSessionCreatedEvent(*this, imChatSession); +} + +void ChatHandler::imChatSessionWillDieEventHandler(IMChatSession & sender) { + RecursiveMutex::ScopedLock lock(_mutex); + + IMChatSessionList::iterator it = + std::find(_imChatSessionList.begin(), _imChatSessionList.end(), &sender); + + if (it != _imChatSessionList.end()) { + _imChatSessionList.erase(it); + } else { + LOG_ERROR("IMChatSession not in ChatHandler"); + } +} + +void ChatHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + LOG_DEBUG("new account added: login: " + imAccount->getLogin() + + " protocol: " + EnumIMProtocol::toString(imAccount->getProtocol())); + + IMChatMap::iterator it = _imChatMap.find(imAccountId); + if (it == _imChatMap.end()) { + IMChat * imChat = IMWrapperFactory::getFactory().createIMChat(*imAccount); + imChat->newIMChatSessionCreatedEvent += + boost::bind(&ChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); + + _imChatMap.insert(std::pair(imAccountId, imChat)); + } else { + LOG_ERROR("this IMAccount has already been added " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void ChatHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + IMChatMap::iterator it = _imChatMap.find(imAccountId); + + if (it != _imChatMap.end()) { + //TODO close all IMChatSession opened with this IMAccount + delete (*it).second; + _imChatMap.erase(it); + } else { + LOG_ERROR("this IMAccount has not been added: " + imAccountId); + } +} + +void ChatHandler::unregisterAllEvents() { + _userProfile.getIMAccountManager().imAccountAddedEvent -= + boost::bind(&ChatHandler::imAccountAddedEventHandler, this, _1, _2); + _userProfile.getIMAccountManager().imAccountRemovedEvent -= + boost::bind(&ChatHandler::imAccountRemovedEventHandler, this, _1, _2); + + for (IMChatMap::const_iterator it = _imChatMap.begin(); + it != _imChatMap.end(); + ++it) { + (*it).second->newIMChatSessionCreatedEvent -= + boost::bind(&ChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/chat/ChatHandler.h qutecom-2.2+dfsg1/qutecom/src/model/chat/ChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/chat/ChatHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/chat/ChatHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCHATHANDLER_H +#define OWCHATHANDLER_H + +#include + +#include + +#include +#include +#include + +#include + +class IMAccountManager; +class IMChat; +class IMChatSession; +class IMContactSet; +class UserProfile; + +/** + * Allows to create an instant messaging chat session. + * + * @see IMChatSession + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ChatHandler : NonCopyable, public Trackable { +public: + + ChatHandler(UserProfile & userProfile); + + ~ChatHandler(); + + /** + * Emitted when a new IMChatSession has been created. + * + * @param sender this class + * @param imChatSession the new IMChatSession + */ + Event newIMChatSessionCreatedEvent; + + /** + * Creates a new IMChatSession. + * The newChatSessionCreatedEvent is emitted when an IMChatSession is created + * + * @param imAccount the Id of the IMAccount for which we want to create the new IMChatSession + */ + void createSession(const std::string & imAccountId, const IMContactSet & imContactSet); + + /** + * Tells ChatHandler to unregister to all registered Events. + */ + void unregisterAllEvents(); + +private: + + /** + * @see IMChat::newIMChatSessionCreatedEvent + */ + void newIMChatSessionCreatedEventHandler(IMChat & sender, IMChatSession & imChatSession); + + /** + * @see IMAccountManager::imAccountAddedEvent + */ + void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMAccountManager::imAccountRemovedEvent + */ + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMChatSession::imChatSessionWillDieEvent + */ + void imChatSessionWillDieEventHandler(IMChatSession & sender); + + typedef std::map IMChatMap; + IMChatMap _imChatMap; + + typedef std::list IMChatSessionList; + IMChatSessionList _imChatSessionList; + + UserProfile & _userProfile; + + mutable RecursiveMutex _mutex; +}; + +#endif //OWCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/classic/ClassicExterminator.cpp qutecom-2.2+dfsg1/qutecom/src/model/classic/ClassicExterminator.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/classic/ClassicExterminator.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/classic/ClassicExterminator.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ClassicExterminator.h" + +#include +#include + +#include +#include + +#include + +static const char * QUTECOM_VALUE = "QuteCom"; +static const char * CLASSIC_EXECUTABLE_NAME = "qutecom.exe"; + +void ClassicExterminator::removeClassicFromStartup() { + Startup startup(QUTECOM_VALUE, String::null); + startup.setStartup(false); +} + +void ClassicExterminator::killClassicExecutable() { + Processes::killProcess(std::string(CLASSIC_EXECUTABLE_NAME)); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/classic/ClassicExterminator.h qutecom-2.2+dfsg1/qutecom/src/model/classic/ClassicExterminator.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/classic/ClassicExterminator.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/classic/ClassicExterminator.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCLASSICEXTERMINATOR_H +#define OWCLASSICEXTERMINATOR_H + +/** + * QuteCom classic exterminator. + * + * @ingroup model + * @author Mathieu Stute + */ +class ClassicExterminator { +public: + + static void removeClassicFromStartup(); + + static void killClassicExecutable(); +}; + +#endif //OWCLASSICEXTERMINATOR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys +* +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA +*/ + +#ifndef OWPHAPIFILESESSIONMANAGER_H +#define OWPHAPIFILESESSIONMANAGER_H + +#include + +#include + +#include + +/** +* TODO create file session for receive +* +* @author Nicolas Couturier +*/ +class PhApiFileSessionManager : public IFileSessionManager { + +public : + + PhApiFileSessionManager(UserProfile & userProfile); + + virtual ~PhApiFileSessionManager(); + + bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const; + + ISendFileSession * createSendFileSession(); + +private : + + void newIncomingFileEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void needUpgradeEventHandler(PhApiSFPWrapper & sender); + + void peerNeedsUpgradeEventHandler(PhApiSFPWrapper & sender, const std::string contactID); + +}; + +#endif //OWPHAPIFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHAPIRECEIVEFILESESSION_H +#define OWPHAPIRECEIVEFILESESSION_H + +#include + +#include + +/** + * TODO + * + * @author Nicolas Couturier + */ +class PhApiReceiveFileSession : public IReceiveFileSession { + +public: + + PhApiReceiveFileSession(); + + PhApiReceiveFileSession(const PhApiReceiveFileSession & phApiReceiveFileSession); + + virtual PhApiReceiveFileSession * clone() const; + + PhApiReceiveFileSession(int callID, std::string contactID, std::string fileName, unsigned int fileSize); + + virtual ~PhApiReceiveFileSession(); + + void start(); + + void pause(); + + void resume(); + + void stop(); + +private : + + void transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, int fileSize); + + void transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage); + + void transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + void transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); + + int _currentCallID; + +}; + +#endif //OWPHAPIRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHAPISENDFILESESSION_H +#define OWPHAPISENDFILESESSION_H + +#include + +class UserProfile; +class PhApiSFPWrapper; + +/** + * TODO + * + * @author Nicolas Couturier + */ +class PhApiSendFileSession : public ISendFileSession { + +public: + + PhApiSendFileSession(UserProfile & userProfile); + + PhApiSendFileSession(const PhApiSendFileSession & phApiSendFileSession); + + virtual PhApiSendFileSession * clone() const; + + virtual ~PhApiSendFileSession(); + + void start(); + + void pause(); + + void resume(); + + void stop(); + +private : + + void inviteToTransferEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri, std::string fileName, std::string fileType, size_t fileSize); + + void waitingForAnswerEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri); + + void transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, size_t fileSize); + + void transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage); + + void transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + void transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); + + std::string extractContactIDFromURI(std::string uri) const; + + /** + * The file that is being sent / received currently + */ + std::vector::iterator _currentFile; + + /** + * The contact that is curently sending / receiving the file + */ + IMContactSet::iterator _currentContact; + + /** + * The call id of the file current file transfer + */ + int _currentCallID; + + bool _initialized; + + UserProfile & _userProfile; + +}; + +#endif //OWPHAPISENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../include/phapifilesessionmanager/PhApiFileSessionManager.h" +#include "../include/phapifilesessionmanager/PhApiSendFileSession.h" +#include "../include/phapifilesessionmanager/PhApiReceiveFileSession.h" + +#include "../../../../../../../../libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h" + +#include +#include + +#include + +#include + +PhApiFileSessionManager::PhApiFileSessionManager(UserProfile & userProfile) + : IFileSessionManager(userProfile) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string pluginPath = config.getPhApiPluginPath(); + +#if defined(WIN32) || defined(WIN32_WCE) + pluginPath += "sfp-plugin.dll"; +#else + pluginPath += "libsfp-plugin.so"; +#endif + + owplPluginLoad(pluginPath.c_str()); + + owplPluginSetParam("11000", 5, "SFPPlugin", "sfp_file_transfer_port"); + owplPluginSetParam("tcp", 3, "SFPPlugin", "sfp_default_ip_protocol"); + + PhApiSFPCallbacks::setCallbacks(); + PhApiSFPEvent::newIncomingFileEvent += + boost::bind(&PhApiFileSessionManager::newIncomingFileEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::needUpgradeEvent += + boost::bind(&PhApiFileSessionManager::needUpgradeEventHandler, this, _1); + PhApiSFPEvent::peerNeedsUpgradeEvent += + boost::bind(&PhApiFileSessionManager::peerNeedsUpgradeEventHandler, this, _1, _2); +} + +PhApiFileSessionManager::~PhApiFileSessionManager() { +} + +ISendFileSession * PhApiFileSessionManager::createSendFileSession() { + return new PhApiSendFileSession(_userProfile); +} + +bool PhApiFileSessionManager::isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const { + // FIXME + if (protocol == EnumIMProtocol::IMProtocolQuteCom) { + return true; + } else { + return false; + } +} + +void PhApiFileSessionManager::newIncomingFileEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + PhApiReceiveFileSession * session = new PhApiReceiveFileSession(callID, contactID, fileName, (unsigned int)fileSize); + newIReceiveFileSessionCreatedEvent(*this, session); +} + +void PhApiFileSessionManager::needUpgradeEventHandler(PhApiSFPWrapper & sender) { + needUpgradeEvent(*this); +} + +void PhApiFileSessionManager::peerNeedsUpgradeEventHandler(PhApiSFPWrapper & sender, const std::string contactID) { + peerNeedsUpgradeEvent(*this, contactID); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,183 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../include/phapifilesessionmanager/PhApiReceiveFileSession.h" + +#include + +#include +#include + +PhApiReceiveFileSession::PhApiReceiveFileSession(){} + +PhApiReceiveFileSession::PhApiReceiveFileSession(int callID, std::string contactID, std::string fileName, unsigned int fileSize) +: IReceiveFileSession() { + _imContact = IMContact(EnumIMProtocol::IMProtocolQuteCom, contactID); + _fileName = fileName; + _fileSize = fileSize; + _currentCallID = callID; + + PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); + PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiReceiveFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiReceiveFileSession::transferProgressionEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiReceiveFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiReceiveFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); +} + +PhApiReceiveFileSession::PhApiReceiveFileSession(const PhApiReceiveFileSession & phApiReceiveFileSession) +: IReceiveFileSession(phApiReceiveFileSession) { + _imContact = phApiReceiveFileSession._imContact; + _fileName = phApiReceiveFileSession._fileName; + _fileSize = phApiReceiveFileSession._fileSize; + _currentCallID = phApiReceiveFileSession._currentCallID; + + PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); + PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiReceiveFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiReceiveFileSession::transferProgressionEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiReceiveFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiReceiveFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); +} + +PhApiReceiveFileSession * PhApiReceiveFileSession::clone() const { + return new PhApiReceiveFileSession(*this); +} + +PhApiReceiveFileSession::~PhApiReceiveFileSession(){} + +void PhApiReceiveFileSession::start() { + LOG_DEBUG("starting file transfer"); + PhApiSFPWrapper::getInstance().receiveFile(_currentCallID, File::convertPathSeparators(_filePath+_fileName)); + LOG_DEBUG("end of transfer start"); +} + +void PhApiReceiveFileSession::pause(){ + LOG_DEBUG("pausing file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().pauseTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer pause"); +} + +void PhApiReceiveFileSession::resume(){ + LOG_DEBUG("resuming file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().resumeTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer resume"); +} + +void PhApiReceiveFileSession::stop(){ + LOG_DEBUG("stopping file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().cancelTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer stop"); +} + +void PhApiReceiveFileSession::transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID){ + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelled, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelledByPeer, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferBegan, _imContact, File(getFilePath()+getFileName())); + } +} + +void PhApiReceiveFileSession::transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, _imContact, File(getFilePath()+getFileName())); + moduleFinishedEvent(*this); + } +} + +void PhApiReceiveFileSession::transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage){ + if(callID == _currentCallID){ + fileTransferProgressionEvent(*this, _imContact, File(getFilePath()+getFileName()), percentage); + } +} + +void PhApiReceiveFileSession::transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPausedByPeer, _imContact, File(getFilePath()+getFileName())); + } +} + +void PhApiReceiveFileSession::transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPaused, _imContact, File(getFilePath()+getFileName())); + } +} + +void PhApiReceiveFileSession::transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumedByPeer, _imContact, File(getFilePath()+getFileName())); + } +} + +void PhApiReceiveFileSession::transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumed, _imContact, File(getFilePath()+getFileName())); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,245 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../include/phapifilesessionmanager/PhApiSendFileSession.h" + +#include +#include + +#include +#include + +#include + +#include +#include + +PhApiSendFileSession::PhApiSendFileSession(UserProfile & userProfile) +: ISendFileSession(), _userProfile(userProfile) { + _initialized = false; + _currentCallID = -1; + + PhApiSFPEvent::inviteToTransferEvent += boost::bind(&PhApiSendFileSession::inviteToTransferEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::waitingForAnswerEvent += boost::bind(&PhApiSendFileSession::waitingForAnswerEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiSendFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); + PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiSendFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiSendFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiSendFileSession::transferProgressionEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiSendFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiSendFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiSendFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiSendFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); +} + +PhApiSendFileSession::PhApiSendFileSession(const PhApiSendFileSession & phApiSendFileSession) +: ISendFileSession(phApiSendFileSession), _userProfile(phApiSendFileSession._userProfile) { + _initialized = phApiSendFileSession._initialized; + _currentCallID = phApiSendFileSession._currentCallID; + + PhApiSFPEvent::inviteToTransferEvent += boost::bind(&PhApiSendFileSession::inviteToTransferEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::waitingForAnswerEvent += boost::bind(&PhApiSendFileSession::waitingForAnswerEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiSendFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); + PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiSendFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiSendFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiSendFileSession::transferProgressionEventHandler, this, _1, _2, _3); + PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiSendFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiSendFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiSendFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); + PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiSendFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); +} + +PhApiSendFileSession * PhApiSendFileSession::clone() const { + return new PhApiSendFileSession(*this); +} + +PhApiSendFileSession::~PhApiSendFileSession() { +} + +void PhApiSendFileSession::start() { + LOG_DEBUG("starting file transfer"); + if(!_initialized){ + _currentContact = _imContactSet.begin(); + _currentFile = _fileVector.begin(); + _initialized = true; + } + if(_account != NULL && _imContactSet.size()>0 && _fileVector.size()>0){ + //QuteComAccount * wAccount = dynamic_cast(_account); + QuteComAccount * wAccount = _userProfile.getQuteComAccount(); + PhApiSFPWrapper & wrapper = PhApiSFPWrapper::getInstance(); + int vlid = wAccount->getVLineID(); + std::string fullIdentity = wAccount->getDisplayName()+std::string(" <")+wAccount->getSIPAddress()+std::string(">"); + std::string contactUri = std::string("sip:")+(*_currentContact).getContactId(); + std::string fileType = (*_currentFile).getExtension(); + if(fileType == String::null) { + fileType = "*"; + } + _currentCallID = wrapper.sendFile(vlid, + fullIdentity, + contactUri, + (*_currentFile).getFullPath(), + (*_currentFile).getFileName(), + fileType, + (*_currentFile).getSize()); + } + LOG_DEBUG("end of transfer start"); +} + +void PhApiSendFileSession::pause() { + LOG_DEBUG("pausing file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().pauseTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer pause"); +} + +void PhApiSendFileSession::resume() { + LOG_DEBUG("resuming file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().resumeTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer resume"); +} + +void PhApiSendFileSession::stop() { + LOG_DEBUG("stopping file transfer"); + if(_currentCallID > 0){ + PhApiSFPWrapper::getInstance().cancelTransfer(_currentCallID); + } + LOG_DEBUG("end of transfer stop"); +} + +void PhApiSendFileSession::inviteToTransferEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventInviteToTransfer, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::waitingForAnswerEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri){ + if(callID == _currentCallID && (*_currentContact).getContactId().compare(extractContactIDFromURI(uri)) == 0){ + fileTransferEvent(*this, IFileSession::IFileSessionEventWaitingForAnswer, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelled, *_currentContact, *_currentFile); + moduleFinishedEvent(*this); + } +} + +void PhApiSendFileSession::transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelledByPeer, *_currentContact, *_currentFile); + moduleFinishedEvent(*this); + } +} + +void PhApiSendFileSession::sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferBegan, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, *_currentContact, *_currentFile); + moduleFinishedEvent(*this); + } +} + +void PhApiSendFileSession::transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, *_currentContact, *_currentFile); + // send one file to each contact, then go to the next file + _currentCallID = -1; + _currentContact++; + if(_currentContact == _imContactSet.end()){ + _currentContact = _imContactSet.begin(); + if(_currentFile != _fileVector.end()){ + _currentFile++; + } + } + if(_currentFile != _fileVector.end()){ + start(); + }else{ + moduleFinishedEvent(*this); + } + } +} + +void PhApiSendFileSession::transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, *_currentContact, *_currentFile); + moduleFinishedEvent(*this); + } +} + +void PhApiSendFileSession::transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, *_currentContact, *_currentFile); + moduleFinishedEvent(*this); + } +} + +void PhApiSendFileSession::transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage){ + if(callID == _currentCallID){ + fileTransferProgressionEvent(*this, *_currentContact, *_currentFile, percentage); + } +} + +void PhApiSendFileSession::transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPausedByPeer, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPaused, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumedByPeer, *_currentContact, *_currentFile); + } +} + +void PhApiSendFileSession::transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ + if(callID == _currentCallID) { + fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumed, *_currentContact, *_currentFile); + } +} + +std::string PhApiSendFileSession::extractContactIDFromURI(std::string uri) const{ + std::string::size_type usernameStartIndex = uri.find(":"); + std::string::size_type usernameEndIndex = uri.find("@"); + if(usernameStartIndex == std::string::npos || usernameStartIndex == std::string::npos || usernameStartIndex > usernameEndIndex){ + return ""; + } + return uri.substr(usernameStartIndex, usernameEndIndex-usernameStartIndex+1); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TESTFILESESSIONMANAGER_H +#define TESTFILESESSIONMANAGER_H + +#include + +class TestFileSessionManager : public IFileSessionManager { +public: + + TestFileSessionManager(UserProfile & userProfile); + + virtual ~TestFileSessionManager(); + + ISendFileSession * createSendFileSession(); + + bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const; +}; + +#endif //TESTFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,43 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TESTSENDFILESESSION_H +#define TESTSENDFILESESSION_H + +#include + +class TestSendFileSession : public ISendFileSession { +public: + + TestSendFileSession(); + + virtual ~TestSendFileSession(); + + // Inherited from FileSessionImplementation + virtual void start(); + + virtual void pause(); + + virtual void resume(); + + virtual void stop(); + //// +}; + +#endif //TESTSENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../include/testfilesessionmanager/TestFileSessionManager.h" +#include "../include/testfilesessionmanager/TestSendFileSession.h" + +TestFileSessionManager::TestFileSessionManager(UserProfile & userProfile) + : IFileSessionManager(userProfile) { +} + +TestFileSessionManager::~TestFileSessionManager() { +} + +ISendFileSession * TestFileSessionManager::createSendFileSession() { + return new TestSendFileSession(); +} + +bool TestFileSessionManager::isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const { + if (protocol == EnumIMProtocol::IMProtocolMSN) { + return true; + } else { + return false; + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "../include/testfilesessionmanager/TestSendFileSession.h" + +#include +#include + +TestSendFileSession::TestSendFileSession() + : ISendFileSession() { +} + +TestSendFileSession::~TestSendFileSession() { +} + +void TestSendFileSession::start() { + LOG_DEBUG("starting download"); + + Thread::msleep(100); + + LOG_DEBUG("finished"); + moduleFinishedEvent(*this); +} + +void TestSendFileSession::pause() { +} + +void TestSendFileSession::resume() { +} + +void TestSendFileSession::stop() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWFILESESSIONMANAGER_H +#define OWFILESESSIONMANAGER_H + +#include + +#include + +#include +#include + +class Account; +class IFileSessionManager; +class IReceiveFileSession; +class ISendFileSession; +class SendFileSession; +class UserProfile; + +/** + * File Session Manager. + * + * Used to manage classes related to File Transfer + * + * @author Philippe Bernery + */ +class FileSessionManager { + friend class SendFileSession; +public: + + /** + * Emitted when a new FileSession is created. + * Can be emitted after a call to createFileSession or + * because subsystem created it (surely because someone + * is trying to send us a file). + * + * @param sender this class + * @param fileSession pointer to the newly created FileSession. + * Here the FileSession is a pointer because the received of the event is + * responsible of the deleting of this object. + */ + Event< void (FileSessionManager & sender, ReceiveFileSession fileSession)> newReceiveFileSessionCreatedEvent; + + Event needUpgradeEvent; + + Event peerNeedsUpgradeEvent; + + FileSessionManager(UserProfile & userProfile); + + virtual ~FileSessionManager(); + + /** + * Creates a SendFileSession. Caller is responsible for deleting the + * Session. + */ + SendFileSession * createSendFileSession(); + + // HACK : Unique file transfer hack + /** + * Queues a SendFileSession and starts it if it is the only session. + * + * @param the session to queue + */ + void queueSession(SendFileSession * session); + +private: + + /** + * @see IFileSessionManager::newIReceiveFileSessionCreatedEvent + */ + void newIReceiveFileSessionCreatedEventHandler(IFileSessionManager & sender, + IReceiveFileSession * iReceiveFileSession); + + void needUpgradeEventHandler(IFileSessionManager & sender); + + void peerNeedsUpgradeEventHandler(IFileSessionManager & sender, const std::string contactID); + + // HACK : Unique file transfer hack + /** + * Handler used to start the next session in queue + * + * @param the SendFileSession that finished, as a CoIpModule + */ + void moduleFinishedEventHandler(CoIpModule & sender); + + /** + * Create a ISendFileSession suitable for the given contact. + * + * @return a pointer to the new FileSession. + * Must be destroyed by the caller. + */ + ISendFileSession * createFileSessionForContact(const std::string & contactId); + + /** Vector of available FileSessionManager. */ + std::vector _fileSessionManagerVector; + + /** Link to UserProfile. */ + UserProfile & _userProfile; + + // HACK : Unique file transfer hack + /** Queue to ensure that only one session is active at a time */ + std::queue _sendSessions; + +}; + +#endif //OWFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,116 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIFILESESSION_H +#define OWIFILESESSION_H + +#include +#include +#include + +class Account; + +/** + * Must be inherited to be used. + * + * @author Philippe Bernery + */ +class IFileSession : public CoIpModule { +public: + + enum IFileSessionEvent { + + /** Emitted when a ask for transferring a file has been sent. */ + IFileSessionEventInviteToTransfer, + + /** Emitted when the invite to transfer has been received by the peer but + * he has not yet accept the tranfer. */ + IFileSessionEventWaitingForAnswer, + + /** Emitted when a file transfer is finished. */ + IFileSessionEventFileTransferFinished, + + /** Emitted when a file transfer failed. */ + IFileSessionEventFileTransferFailed, + + /** Emitted when a File transfer is paused by the user. */ + IFileSessionEventFileTransferPaused, + + /** Emitted when a File transfer is paused by peer. */ + IFileSessionEventFileTransferPausedByPeer, + + /** Emitted when a File transfer is resumed by the user. */ + IFileSessionEventFileTransferResumed, + + /** Emitted when a File transfer is resumed by peer. */ + IFileSessionEventFileTransferResumedByPeer, + + /** Emitted when a File transfer has been cancelled by the user. */ + IFileSessionEventFileTransferCancelled, + + /** Emitted when a File transfer has been cancelled by peer. */ + IFileSessionEventFileTransferCancelledByPeer, + + /** Emitted when the transfer of a File starts. */ + IFileSessionEventFileTransferBegan, + + }; + + /** + * Emitted when something happened in this IFileSession. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + */ + Event< void (IFileSession & sender, IFileSessionEvent event, + IMContact imContact, File sentFile) > fileTransferEvent; + + /** + * Information about progression of a download. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + * @param percentage completion of the transfer in percentage + */ + Event< void (IFileSession & sender, IMContact imContact, + File sentFile, int percentage) > fileTransferProgressionEvent; + + IFileSession(); + + IFileSession(const IFileSession & iFileSession); + + virtual IFileSession * clone() const = 0; + + virtual ~IFileSession(); + + /** + * Sets the Account to use. + */ + void setAccount(const Account * account); + +protected: + + /** The Account to use for File transfer. */ + Account * _account; + +}; + +#endif //OWIFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIFILESESSIONMANAGER_H +#define OWIFILESESSIONMANAGER_H + +#include +#include +#include +#include + +class IReceiveFileSession; +class ISendFileSession; +class UserProfile; + +/** + * File Session Manager. + * + * Used to manage classes related to File Transfer + * + * @author Philippe Bernery + */ +class IFileSessionManager : public Trackable { +public: + + /** + * Emitted when a new IReceiveFileSession is created. + * + * @param sender this class + * @param fileSession pointer to the newly created ISendFileSession. + * Here the ISendFileSession is a pointer because the received of the event is + * responsible of deleting of this object. + */ + Event< void (IFileSessionManager & sender, IReceiveFileSession * iReceiveFileSession)> + newIReceiveFileSessionCreatedEvent; + + Event needUpgradeEvent; + + Event peerNeedsUpgradeEvent; + + IFileSessionManager(UserProfile & userProfile); + + virtual ~IFileSessionManager(); + + /** + * @return true if the protocol is supported by this FileSessionManager. + */ + virtual bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const = 0; + + /** + * Creates an ISendFileSession in FileSessionModeSend mode. + */ + virtual ISendFileSession * createSendFileSession() = 0; + +protected: + + UserProfile & _userProfile; + +}; + +#endif //OWIFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIRECEIVEFILESESSION_H +#define OWIRECEIVEFILESESSION_H + +#include "IFileSession.h" + +#include + +#include + +/** + * + * + * @author Philippe Bernery + */ +class IReceiveFileSession : public IFileSession { +public: + + IReceiveFileSession(); + + IReceiveFileSession(const IReceiveFileSession & iReceiveFileSession); + + virtual IReceiveFileSession * clone() const = 0; + + virtual ~IReceiveFileSession(); + + /** + * Gets the IMContact who sends the File. + */ + IMContact getIMContact() const { return _imContact; } + + /** + * Sets the path for saving the File. + */ + void setFilePath(const std::string & path) { _filePath = path; } + + /** + * Gets the path to the File to be saved. + */ + std::string getFilePath() const { return _filePath; } + + /** + * Gets the name of the file to receive. + */ + std::string getFileName() const { return _fileName; } + + /** + * Gets the size of the file to receive. + */ + unsigned getFileSize() const { return _fileSize; } + +protected: + + /** Path to save place of the file. */ + std::string _filePath; + + /** Name of the file to receive. */ + std::string _fileName; + + /** Size of the file to receive. */ + unsigned _fileSize; + + /** Sender of File. */ + IMContact _imContact; + +}; + +#endif //OWIRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWISENDFILESESSION_H +#define OWISENDFILESESSION_H + +#include "IFileSession.h" + +#include + +#include + +#include + +/** + * + * + * @author Philippe Bernery + */ +class ISendFileSession : public IFileSession { +public: + + ISendFileSession(); + + ISendFileSession(const ISendFileSession & iSendFileSession); + + virtual ISendFileSession * clone() const = 0; + + virtual ~ISendFileSession(); + + /** + * Sets the IMContactSet. + */ + void setIMContactSet(const IMContactSet & imContactSet) { _imContactSet = imContactSet; } + + /** + * Gets the IMContactSet. + */ + IMContactSet getIMContactSet() const { return _imContactSet; } + + /** + * Sets the File List. + */ + void setFileList(const std::vector & fileList) { _fileVector = fileList; } + + /** + * Gets the File list. + */ + std::vector getFileList() const { return _fileVector; } + +protected: + + /** List of Contact to send the files to. */ + IMContactSet _imContactSet; + + /** List of File to send. */ + std::vector _fileVector; + +}; + +#endif //OWISENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWRECEIVEFILESESSION_H +#define OWRECEIVEFILESESSION_H + +#include +#include +#include +#include +#include + +class FileSessionManager; +class IFileSession; +class IReceiveFileSession; +class UserProfile; + +/** + * File Session. + * + * Interface to File transfer services. + * + * - Receive mode: 'start' accepts the transfer and 'stop' refuses it. + * + * @see TestFileSession for an example + * + * @author Philippe Bernery + */ +class ReceiveFileSession : public Session { +public: + + /** + * Emitted when something happened in this ReceiveFileSession. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + */ + Event< void (ReceiveFileSession & sender, IFileSession::IFileSessionEvent event, + IMContact imContact, File sentFile) > fileTransferEvent; + + /** + * Information about progression of a download. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + * @param percentage completion of the transfer in percentage + */ + Event< void (ReceiveFileSession & sender, IMContact imContact, + File sentFile, int percentage) > fileTransferProgressionEvent; + + /** + * Creates a ReceiveFileSession. + * + * @param userProfile link to UserProfile + * @param fileSessionImp the IFileSession to use for receiving the file + */ + ReceiveFileSession(UserProfile & userProfile, IReceiveFileSession * fileSessionImp); + + ReceiveFileSession(const ReceiveFileSession & receiveFileSession); + + virtual ~ReceiveFileSession(); + + // Inherited from Session + virtual void start(); + + virtual void pause(); + + virtual void resume(); + + virtual void stop(); + //// + + /** + * Gets the IMContact who sends the File. + */ + IMContact getIMContact() const; + + /** + * Sets the path for saving the File. + */ + void setFilePath(const std::string & path); + + /** + * Gets the path to the File to be saved. + */ + std::string getFilePath() const; + + /** + * Gets the name of the file to receive. + */ + std::string getFileName() const; + + /** + * Gets the size of the file to receive. + */ + unsigned getFileSize() const; + + /** + * Gets the last event. + */ + IFileSession::IFileSessionEvent getLastEvent() const { return _lastEvent; }; + +private: + + /** + * @see IFileSession::fileTransferEvent + */ + void fileTransferEventHandler(IFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); + + /** + * @see IFileSession::fileTransferProgressionEvent + */ + void fileTransferProgressionEventHandler(IFileSession & sender, + IMContact imContact, File sentFile, int percentage); + + // Inherited from Session + virtual void addContact(const std::string & /*contactId*/) { } + + virtual void removeContact(const std::string & /*contactId*/) { } + //// + + /** + * @see Module::moduleFinishedEvent + */ + void moduleFinishedEventHandler(CoIpModule & sender); + + /** Last occured event. */ + IFileSession::IFileSessionEvent _lastEvent; + + /** Pointer to running IFileSession. */ + IReceiveFileSession * _currentFileSessionImp; +}; + +#endif //OWRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,133 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWSENDFILESESSION_H +#define OWSENDFILESESSION_H + +#include +#include +#include +#include + +class FileSessionManager; +class ISendFileSession; +class UserProfile; + +/** + * File Session. + * + * Interface to File transfer services. + * + * - Send mode: 'start' starts sending files by creating a FileSession per + * Contact and per file. 'stop' stops the transfer. + * + * @see TestFileSession for an example + * + * @author Philippe Bernery + */ +class SendFileSession : public Session { +public: + + /** + * Emitted when something happened in this SendFileSession. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + */ + Event< void (SendFileSession & sender, IFileSession::IFileSessionEvent event, + IMContact imContact, File sentFile) > fileTransferEvent; + + /** + * Information about progression of a download. + * + * @param sender this class + * @param imContact the peer that send or receive the file + * @param sentFile the sent File + * @param percentage completion of the transfer in percentage + */ + Event< void (SendFileSession & sender, IMContact imContact, + File sentFile, int percentage) > fileTransferProgressionEvent; + + /** + * Creates a SendFileSession. + * + * @param fileSessionManager reference to the main FileSessionManager. + * @param userProfile link to UserProfile + */ + SendFileSession(FileSessionManager & fileSessionManager, UserProfile & userProfile); + + SendFileSession(const SendFileSession & sendFileSession); + + virtual ~SendFileSession(); + + // Inherited from Session + virtual void start(); + + virtual void pause(); + + virtual void resume(); + + virtual void stop(); + //// + + /** + * Adds a file to the transfer queue. + * + * Thread safe. + * + * @param file the file to add. The File object is copied. + */ + void addFile(const File & file); + + /** + * Gets the File list. + */ + std::vector getFileList() const { return _fileVector; } + +private: + + /** + * @see IFileSession::fileTransferEvent + */ + void fileTransferEventHandler(IFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); + + /** + * @see IFileSession::fileTransferProgressionEvent + */ + void fileTransferProgressionEventHandler(IFileSession & sender, + IMContact imContact, File sentFile, int percentage); + + /** + * @see Module::moduleFinishedEvent + */ + void moduleFinishedEventHandler(CoIpModule & sender); + + /** List of Files to send. */ + std::vector _fileVector; + + /** Pointer to running IFileSession. */ + ISendFileSession * _currentFileSessionImp; + + /** Link to FileSessionManager. */ + FileSessionManager & _fileSessionManager; +}; + +#endif //OWSENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,131 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include + +#include "../implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h" + +#include +#include +#include +#include +#include +#include + +#include + +FileSessionManager::FileSessionManager(UserProfile & userProfile) + : _userProfile(userProfile) { + + PhApiFileSessionManager * phapiManager = new PhApiFileSessionManager(_userProfile); + phapiManager->newIReceiveFileSessionCreatedEvent += boost::bind(&FileSessionManager::newIReceiveFileSessionCreatedEventHandler, this, _1, _2); + + phapiManager->needUpgradeEvent += boost::bind(&FileSessionManager::needUpgradeEventHandler, this, _1); + + phapiManager->peerNeedsUpgradeEvent += boost::bind(&FileSessionManager::peerNeedsUpgradeEventHandler, this, _1, _2); + + _fileSessionManagerVector.push_back(phapiManager); + + +} + +FileSessionManager::~FileSessionManager() { + for (std::vector::const_iterator it = _fileSessionManagerVector.begin(); + it != _fileSessionManagerVector.end(); + ++it) { + delete (*it); + } +} + +SendFileSession * FileSessionManager::createSendFileSession() { + SendFileSession * newFileSession = new SendFileSession(*this, _userProfile); + // HACK : Unique file transfer hack + newFileSession->moduleFinishedEvent += boost::bind(&FileSessionManager::moduleFinishedEventHandler, this, _1); + return newFileSession; +} + +ISendFileSession * FileSessionManager::createFileSessionForContact(const std::string & contactId) { + ISendFileSession * result = NULL; + + Contact * contact = _userProfile.getContactList().getContact(contactId); + if (contact) { + + ContactProfile contactProfile = *contact; + + for (std::vector::const_iterator it = _fileSessionManagerVector.begin(); + it != _fileSessionManagerVector.end(); + ++it) { + + for (IMContactSet::const_iterator contactIterator = contactProfile.getIMContactSet().begin(); + contactIterator != contactProfile.getIMContactSet().end(); + contactIterator++) { + + if ((*it)->isProtocolSupported((*contactIterator).getProtocol())) { + result = (*it)->createSendFileSession(); + IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount((*contactIterator).getIMAccountId()); + result->setAccount(imAccount); + IMContactSet imContactSet; + imContactSet.insert(*contactIterator); + result->setIMContactSet(imContactSet); + } + } + } + } + + if (!result) { + LOG_ERROR("no FileSession implementation available"); + } + + return result; +} + +void FileSessionManager::newIReceiveFileSessionCreatedEventHandler(IFileSessionManager & sender, IReceiveFileSession * iReceiveFileSession) { + LOG_DEBUG("new IReceiveFileSession created event"); + + ReceiveFileSession newFileSession(_userProfile, iReceiveFileSession); + + newReceiveFileSessionCreatedEvent(*this, newFileSession); +} + +void FileSessionManager::needUpgradeEventHandler(IFileSessionManager & sender) { + needUpgradeEvent(*this); +} + +void FileSessionManager::peerNeedsUpgradeEventHandler(IFileSessionManager & sender, const std::string contactID) { + peerNeedsUpgradeEvent(*this, contactID); +} + +// HACK : Unique file transfer hack +void FileSessionManager::queueSession(SendFileSession * session) { + _sendSessions.push(session); + if(_sendSessions.size() == 1) { + _sendSessions.front()->start(); + } +} + +// HACK : Unique file transfer hack +void FileSessionManager::moduleFinishedEventHandler(CoIpModule & sender) { + _sendSessions.pop(); + if(_sendSessions.size() > 0) { + _sendSessions.front()->start(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include + +IFileSession::IFileSession() { + _account = NULL; +} + +IFileSession::IFileSession(const IFileSession & iFileSession) + : CoIpModule() { + _account = iFileSession._account->clone(); +} + +IFileSession::~IFileSession() { + OWSAFE_DELETE(_account); +} + +void IFileSession::setAccount(const Account * account) { + OWSAFE_DELETE(_account); + + _account = account->clone(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +IFileSessionManager::IFileSessionManager(UserProfile & userProfile) + : _userProfile(userProfile) { +} + +IFileSessionManager::~IFileSessionManager() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +IReceiveFileSession::IReceiveFileSession() { + _fileSize = 0; +} + +IReceiveFileSession::IReceiveFileSession(const IReceiveFileSession & iReceiveFileSession) + : IFileSession() { + _filePath = iReceiveFileSession._filePath; + _fileName = iReceiveFileSession._fileName; + _fileSize = iReceiveFileSession._fileSize; + _imContact = iReceiveFileSession._imContact; +} + +IReceiveFileSession::~IReceiveFileSession() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +ISendFileSession::ISendFileSession() { +} + +ISendFileSession::ISendFileSession(const ISendFileSession & iSendFileSession) + : IFileSession() { + _imContactSet = iSendFileSession._imContactSet; + _fileVector = iSendFileSession._fileVector; +} + +ISendFileSession::~ISendFileSession() { +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,138 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include + +#include + +ReceiveFileSession::ReceiveFileSession(UserProfile & userProfile, + IReceiveFileSession * fileSessionImp) + : Session(userProfile) { + + _currentFileSessionImp = fileSessionImp; + _currentFileSessionImp->moduleFinishedEvent += + boost::bind(&ReceiveFileSession::moduleFinishedEventHandler, this, _1); + _currentFileSessionImp->fileTransferEvent += + boost::bind(&ReceiveFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); + _currentFileSessionImp->fileTransferProgressionEvent += + boost::bind(&ReceiveFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); +} + +ReceiveFileSession::ReceiveFileSession(const ReceiveFileSession & receiveFileSession) + : Session(receiveFileSession) { + if (receiveFileSession._currentFileSessionImp) { + _currentFileSessionImp = receiveFileSession._currentFileSessionImp->clone(); + _currentFileSessionImp->moduleFinishedEvent += + boost::bind(&ReceiveFileSession::moduleFinishedEventHandler, this, _1); + _currentFileSessionImp->fileTransferEvent += + boost::bind(&ReceiveFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); + _currentFileSessionImp->fileTransferProgressionEvent += + boost::bind(&ReceiveFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + } else { + _currentFileSessionImp = NULL; + } +} + +ReceiveFileSession::~ReceiveFileSession() { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + OWSAFE_DELETE(_currentFileSessionImp); +} + +void ReceiveFileSession::start() { + if (_currentFileSessionImp) { + _currentFileSessionImp->start(); + } +} + +void ReceiveFileSession::pause() { + if (_currentFileSessionImp) { + _currentFileSessionImp->pause(); + } +} + +void ReceiveFileSession::resume() { + if (_currentFileSessionImp) { + _currentFileSessionImp->resume(); + } +} + +void ReceiveFileSession::stop() { + if (_currentFileSessionImp) { + _currentFileSessionImp->stop(); + } +} + +IMContact ReceiveFileSession::getIMContact() const { + if (_currentFileSessionImp) { + return _currentFileSessionImp->getIMContact(); + } else { + return IMContact(); + } +} + +void ReceiveFileSession::setFilePath(const std::string & path) { + if (_currentFileSessionImp) { + _currentFileSessionImp->setFilePath(path + File::getPathSeparator()); + } +} + +std::string ReceiveFileSession::getFilePath() const { + if (_currentFileSessionImp) { + return _currentFileSessionImp->getFilePath(); + } else { + return String::null; + } +} + +std::string ReceiveFileSession::getFileName() const { + if (_currentFileSessionImp) { + return _currentFileSessionImp->getFileName(); + } else { + return String::null; + } +} + +unsigned ReceiveFileSession::getFileSize() const { + if (_currentFileSessionImp) { + return _currentFileSessionImp->getFileSize(); + } else { + return 0; + } +} + +void ReceiveFileSession::moduleFinishedEventHandler(CoIpModule & sender) { + moduleFinishedEvent(*this); +} + +void ReceiveFileSession::fileTransferEventHandler(IFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { + + _lastEvent = event; + + fileTransferEvent(*this, event, imContact, sentFile); +} + +void ReceiveFileSession::fileTransferProgressionEventHandler(IFileSession & sender, + IMContact imContact, File sentFile, int percentage) { + + fileTransferProgressionEvent(*this, imContact, sentFile, percentage); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,177 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +SendFileSession::SendFileSession(FileSessionManager & fileSessionManager, UserProfile & userProfile) + : Session(userProfile), + _fileSessionManager(fileSessionManager) { + _currentFileSessionImp = NULL; +} + +SendFileSession::SendFileSession(const SendFileSession & sendFileSession) + : Session(sendFileSession), + _fileSessionManager(sendFileSession._fileSessionManager) { + + _fileVector = sendFileSession._fileVector; + + if (sendFileSession._currentFileSessionImp) { + _currentFileSessionImp = sendFileSession._currentFileSessionImp->clone(); + _currentFileSessionImp->moduleFinishedEvent += + boost::bind(&SendFileSession::moduleFinishedEventHandler, this, _1); + _currentFileSessionImp->fileTransferEvent += + boost::bind(&SendFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); + _currentFileSessionImp->fileTransferProgressionEvent += + boost::bind(&SendFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + } else { + _currentFileSessionImp = NULL; + } +} + +SendFileSession::~SendFileSession() { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + OWSAFE_DELETE(_currentFileSessionImp); +} + +void SendFileSession::start() { + // A FileSession will be created for each different protocols. + + // Check if a FileSession is not currently running. + if (_currentFileSessionImp) { + return; + } + + // Check if we have files to send and contacts to send to + if (_fileVector.empty() || _contactIdList.empty()) { + moduleFinishedEvent(*this); + return; + } + + bool done = false; + while (!done) { + std::string contact = *_contactIdList.begin(); + ISendFileSession * fileSessionImp = + _fileSessionManager.createFileSessionForContact(contact); + + if (fileSessionImp) { + done = true; + _currentFileSessionImp = fileSessionImp; + _currentFileSessionImp->moduleFinishedEvent += + boost::bind(&SendFileSession::moduleFinishedEventHandler, this, _1); + _currentFileSessionImp->fileTransferEvent += + boost::bind(&SendFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); + _currentFileSessionImp->fileTransferProgressionEvent += + boost::bind(&SendFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + + _currentFileSessionImp->setFileList(_fileVector); + + _currentFileSessionImp->start(); + } else { + LOG_ERROR("cannot find any account usable with this contact." + " Removing contact from list and checking next one."); + _contactIdList.erase(_contactIdList.begin()); + done = _contactIdList.empty(); + if (done) { + moduleFinishedEvent(*this); + return; + } + } + } +} + +void SendFileSession::pause() { + if (_currentFileSessionImp) { + _currentFileSessionImp->pause(); + } +} + +void SendFileSession::resume() { + if (_currentFileSessionImp) { + _currentFileSessionImp->resume(); + } +} + +void SendFileSession::stop() { + if (_currentFileSessionImp) { + _currentFileSessionImp->stop(); + } +} + +void SendFileSession::addFile(const File & file) { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + _fileVector.push_back(file); +} + +void SendFileSession::moduleFinishedEventHandler(CoIpModule & sender) { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + //Removing Contacts from the _contactIdList + ISendFileSession & fileSessionImp = + dynamic_cast(sender); + IMContactSet imContactSet = fileSessionImp.getIMContactSet(); + for (IMContactSet::const_iterator imIt = imContactSet.begin(); + imIt != imContactSet.end(); + ++imIt) { + Contact * contact = + _userProfile.getContactList().findContactThatOwns(*imIt); + if (contact) { + std::string contactId = contact->getUUID(); + for (StringList::iterator strIt = _contactIdList.begin(); + strIt != _contactIdList.end(); + ++strIt) { + if (contactId == (*strIt)) { + _contactIdList.erase(strIt); + break; + } + } + } + } + //// + + OWSAFE_DELETE(_currentFileSessionImp); + start(); // Recall start to launch the next FileSession. +} + + +void SendFileSession::fileTransferEventHandler(IFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { + + fileTransferEvent(*this, event, imContact, sentFile); +} + +void SendFileSession::fileTransferProgressionEventHandler(IFileSession & sender, + IMContact imContact, File sentFile, int percentage) { + + fileTransferProgressionEvent(*this, imContact, sentFile, percentage); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpManager.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCOIPMANAGER_H +#define OWCOIPMANAGER_H + +#include + +class UserProfile; + +/** + * Entry point for CoIpManager model. + * + * @author Philippe Bernery + */ +class CoIpManager { +public: + + CoIpManager(UserProfile & userProfile); + + ~CoIpManager(); + + FileSessionManager & getFileSessionManager() { + return _fileSessionManager; + } + +private: + + UserProfile & _userProfile; + + FileSessionManager _fileSessionManager; + +}; + +#endif //OWCOIPMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpModule.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpModule.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpModule.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/CoIpModule.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCOIPMODULE_H +#define OWCOIPMODULE_H + +#include +#include +#include + +/** + * Base class for all CoIp module. + * + * @author Philippe Bernery + */ +class CoIpModule : Interface, public Trackable { +public: + + /** + * Sent when the module is finished. + * + * @param sender this class + */ + Event< void (CoIpModule & sender) > moduleFinishedEvent; + + /** + * Starts the Module. + */ + virtual void start() = 0; + + /** + * Pauses the Module. + * + * No effect if paused or stopped. + */ + virtual void pause() = 0; + + /** + * Resumes the Module. + * + * No effect if not paused. + */ + virtual void resume() = 0; + + /** + * Stops the Module. + */ + virtual void stop() = 0; +}; + +#endif //OWCOIPMODULE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/Session.h qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/Session.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/include/coipmanager/Session.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/include/coipmanager/Session.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,111 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWSESSION_H +#define OWSESSION_H + +#include +#include +#include +#include +#include +#include +#include + +#include + +class UserProfile; + +/** + * Base class for all kind of Session. + * + * @author Philippe Bernery + */ +class Session : public CoIpModule { +public: + + Session(UserProfile & userProfile); + + Session(const Session & session); + + virtual ~Session(); + + /** + * Adds a Contact to the Session. + * + * Thread safe. + */ + virtual void addContact(const std::string & contactId); + + /** + * Removes a Contact from the Session. + * + * Thread safe. + * + * No effect if contactId not found. + */ + virtual void removeContact(const std::string & contactId); + + /** + * Sets the list of Contact by giving a StringList. + * + * Thread safe. + * + * The list is copied. + */ + virtual void setContactList(const StringList & contactList); + + StringList getContactList() const { + return _contactIdList; + } + +protected: + + /** + * Looks for the first Account that is connected and where the Contact + * associated with contactId has a connected IMContact. + */ + IMAccount findFirstValidAccount(const std::string & contactId) const; + + /** + * Finds the first Account that is common to the UserProfile and + * Contacts given in parameter. + * That is to say Contact must be linked to this Account. + * + * @return the found Account or NULL if no common Account found. + */ + Account * findCommonAccount(const StringList & contactIdList) const; + + /** + * Finds for each Contact the IMContact that is linked to the given + * Account. + */ + IMContactSet getLinkedIMContacts(const Account & account) const; + + /** Link to UserProfile. */ + UserProfile & _userProfile; + + /** Mutex for Thread safe operation. */ + RecursiveMutex _mutex; + + /** List of Contact Ids. */ + StringList _contactIdList; +}; + +#endif //OWSESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/src/CoIpManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/src/CoIpManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/src/CoIpManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/src/CoIpManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +CoIpManager::CoIpManager(UserProfile & userProfile) + : _userProfile(userProfile), + _fileSessionManager(userProfile) { +} + +CoIpManager::~CoIpManager() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/src/Session.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/src/Session.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/src/Session.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/src/Session.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include +#include + +#include +#include +#include + +Session::Session(UserProfile & userProfile) + : _userProfile(userProfile) { +} + +Session::Session(const Session & session) + : CoIpModule(), + _userProfile(session._userProfile) { + _contactIdList = session._contactIdList; +} + +Session::~Session() { +} + +void Session::addContact(const std::string & contactId) { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + _contactIdList.push_back(contactId); +} + +void Session::removeContact(const std::string & contactId) { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + for (StringList::iterator it = _contactIdList.begin(); + it != _contactIdList.end(); + ++it) { + if ((*it) == contactId) { + _contactIdList.erase(it); + } + } +} + +void Session::setContactList(const StringList & contactList) { + RecursiveMutex::ScopedLock scopedLock(_mutex); + + _contactIdList = contactList; +} + +IMAccount Session::findFirstValidAccount(const std::string & contactId) const { + Contact * contact = _userProfile.getContactList().getContact(contactId); + if (contact) { + Contact workingContact(*contact); + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + for (IMAccountList::const_iterator upIt = imAccountList.begin(); + upIt != imAccountList.end(); + ++upIt) { + for (IMContactSet::const_iterator imIt = workingContact.getIMContactSet().begin(); + imIt != workingContact.getIMContactSet().end(); + ++imIt) { + if ((*upIt).getUUID() == (*imIt).getIMAccountId()) { + return (*upIt); + } + } + } + } + + return IMAccount(); +} + +Account * Session::findCommonAccount(const StringList & contactIdList) const { + return NULL; +} + +IMContactSet Session::getLinkedIMContacts(const Account & account) const { + IMContactSet result; + +/* for (StringList::const_iterator it = _contactIdList.begin(); + it != _contactIdList.end(); + ++it) { + Contact * myContact = _userProfile.getContactList().getContact(*it); + const IMContact * imContact = myContact->getFirstValidIMContact(account); + if (imContact) { + result.insert(*imContact); + } + } +*/ + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/tests/main.cpp qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/coipmanager/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/coipmanager/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +static Contact * contact1 = NULL; +static Contact * contact2 = NULL; + +void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, + ReceiveFileSession fileSession); + +void moduleFinishedEventHandler(CoIpModule & sender); + +int main(int argc, char **argv) { + // Setting factories + IMWrapperFactory * imFactory = NULL; + SipWrapperFactory * sipFactory = NULL; + + PhApiFactory * phApiFactory = new PhApiFactory(); + GaimIMFactory * gaimIMFactory = new GaimIMFactory(); + sipFactory = phApiFactory; + imFactory = new MultiIMFactory(*phApiFactory, *gaimIMFactory); + + SipWrapperFactory::setFactory(sipFactory); + IMWrapperFactory::setFactory(imFactory); + //// + + UserProfile userProfile; + CoIpManager coIpManager(userProfile); + + // Populating IMAccount list. + IMAccount imAccount1("jacob@msn", "cobaj", EnumIMProtocol::IMProtocolMSN); + userProfile.addIMAccount(imAccount1); + //// + + // Populating ContactList + userProfile.getContactList().addContactGroup("test"); + std::string groupId = userProfile.getContactList().getContactGroupIdFromName("test"); + + contact1 = &(userProfile.getContactList().createContact()); + contact1->setGroupId(groupId); + IMContact imContact11(imAccount1, "bilibob@msn"); + IMContact imContact12(EnumIMProtocol::IMProtocolYahoo, "bilibob@yahoo"); + contact1->addIMContact(imContact11); + contact1->addIMContact(imContact12); + + contact2 = &(userProfile.getContactList().createContact()); + contact2->setGroupId(groupId); + IMContact imContact21(imAccount1, "jacobine@msn"); + IMContact imContact22(EnumIMProtocol::IMProtocolYahoo, "jacobine@yahoo"); + contact2->addIMContact(imContact21); + contact2->addIMContact(imContact22); + //// + + FileSessionManager & fileSessionManager = coIpManager.getFileSessionManager(); + fileSessionManager.newReceiveFileSessionCreatedEvent += + &newReceiveFileSessionCreatedEventHandler; + + // Creating the file session + SendFileSession * fileSession = fileSessionManager.createSendFileSession(); + + File file("/Users/philou/Desktop/La_chanson_de_l_informatique.pps"); + LOG_DEBUG("size: " + String::fromNumber(file.getSize())); + fileSession->addFile(file); + + fileSession->addContact(contact1->getUUID()); + fileSession->addContact(contact2->getUUID()); + + fileSession->moduleFinishedEvent += + &moduleFinishedEventHandler; + + LOG_DEBUG("Starting FileSession"); + fileSession->start(); + //// + + return 0; +} + +void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, + ReceiveFileSession fileSession) { + LOG_DEBUG("ReceiveFileSession created"); +} + +void moduleFinishedEventHandler(CoIpModule & sender) { + LOG_DEBUG("FileSession finished"); + + delete &sender; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandClient.cpp qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandClient.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandClient.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandClient.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "CommandClient.h" + +#include "CommandServer.h" + +#include + +#include + +#include + +#ifdef OS_WINDOWS +#include +#endif + +CommandClient::CommandClient() { + _socket = new ClientSocket(); +} + +CommandClient::~CommandClient() { +#ifdef OS_WINDOWS + // FIXME: This Sleep() has been copied from main.cpp when CommandClient was + // created. Not sure it's really necessary. + Sleep(1000); + WSACleanup(); +#endif + OWSAFE_DELETE(_socket); +} + +bool CommandClient::connect() { + // FIXME: Modify ClientSocket::connect() to return a bool + _socket->connect("127.0.0.1", CommandServer::Port); + return true; +} + +void CommandClient::call(const std::string& number) { + _socket->write(CommandServer::QueryCall + number); +} + +void CommandClient::bringToFront() { + _socket->write(CommandServer::QueryBringToFront); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandClient.h qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandClient.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandClient.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandClient.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef COMMANDCLIENT_H +#define COMMANDCLIENT_H + +#include + +class ClientSocket; + +class CommandClient { +public: + CommandClient(); + ~CommandClient(); + bool connect(); + void call(const std::string& number); + void bringToFront(); + +private: + ClientSocket* _socket; +}; + +#endif /* COMMANDCLIENT_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandServer.cpp qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandServer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandServer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandServer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,269 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CommandServer.h" + +#include "ContactInfo.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +CommandServer * CommandServer::_commandServerInstance = NULL; +const std::string CommandServer::QueryStatus = "1|s"; +const std::string CommandServer::QueryCall = "1|o|call/"; +const std::string CommandServer::QuerySms = "1|o|sms/"; +const std::string CommandServer::QueryChat = "1|o|chat/"; +const std::string CommandServer::QueryAddContact = "1|o|addc/"; +const std::string CommandServer::QueryBringToFront = "1|o|bringToFront"; + +const std::string NICKNAME_STR = "pseudo"; +const std::string SIP_STR = "sip"; +const std::string FIRSTNAME_STR = "firstname"; +const std::string LASTNAME_STR = "lastname"; +const std::string COUNTRY_STR = "country"; +const std::string CITY_STR = "city"; +const std::string STATE_STR = "state"; +const std::string GROUP_STR = "group"; +const std::string WDEALSERVICETITLE_STR = "title"; +const std::string URL_STR = "url"; + +CommandServer::CommandServer(QuteCom & qutecomPhone) + : _qutecomPhone(qutecomPhone) { + + _serverSocket = new ServerSocket("127.0.0.1", Port); + _serverSocket->serverStatusEvent += boost::bind(&CommandServer::serverStatusEventHandler, this, _1, _2); + _serverSocket->connectionEvent += boost::bind(&CommandServer::connectionEventHandler, this, _1, _2); + _serverSocket->incomingRequestEvent += boost::bind(&CommandServer::incomingRequestEventHandler, this, _1, _2, _3); + _serverSocket->writeStatusEvent += boost::bind(&CommandServer::writeStatusEventHandler, this, _1, _2, _3); + _serverSocket->init(); +} + +CommandServer::~CommandServer() { + OWSAFE_DELETE(_serverSocket); +} + +CommandServer & CommandServer::getInstance(QuteCom & qutecomPhone) { + if (!_commandServerInstance) { + _commandServerInstance = new CommandServer(qutecomPhone); + } + + return *_commandServerInstance; +} + +void CommandServer::serverStatusEventHandler(ServerSocket & sender, ServerSocket::Error error) { + if (error == ServerSocket::NoError) { + LOG_DEBUG("connected"); + } else { + LOG_WARN("not connected"); + } +} + +void CommandServer::connectionEventHandler(ServerSocket & sender, const std::string & connectionId) { + LOG_DEBUG("client connection=" + connectionId); +} + +void CommandServer::incomingRequestEventHandler(ServerSocket & sender, const std::string & connectionId, const std::string & data) { + LOG_DEBUG("incoming request connectionId=" + connectionId + " data=" + data); + String query = String(data); + + if (query == QueryStatus) { + + //Find the phoneline status and answer + UserProfile * userprofile = _qutecomPhone.getUserProfileHandler().getCurrentUserProfile(); + if (userprofile) { + IPhoneLine * phoneLine = userprofile->getActivePhoneLine(); + if (phoneLine && phoneLine->isConnected()) { + _serverSocket->writeToClient(connectionId, QueryStatus + "|1"); + } else { + _serverSocket->writeToClient(connectionId, QueryStatus + "|0"); + } + } + + } else if (query == QueryBringToFront) { + bringMainWindowToFrontEvent(); + + } else if (query.beginsWith(QueryCall)) { + + //Extract the number from query & place the call + StringList l = query.split("/"); + if (l.size() == 2) { + LOG_DEBUG("call peer=" + l[1]); + UserProfile * userprofile = _qutecomPhone.getUserProfileHandler().getCurrentUserProfile(); + if (userprofile) { + IPhoneLine * phoneLine = userprofile->getActivePhoneLine(); + if (phoneLine && phoneLine->isConnected()) { + phoneLine->makeCall(l[1]); + _serverSocket->writeToClient(connectionId, data + "|1"); + return; + } + } + } + _serverSocket->writeToClient(connectionId, data + "|0"); + + } else if (query.beginsWith(QuerySms)) { + + LOG_WARN("not yet implemented"); + + } else if (query.contains(QueryChat)) { + + UserProfile * userProfile = _qutecomPhone.getUserProfileHandler().getCurrentUserProfile(); + if (userProfile) { + IPhoneLine * phoneLine = userProfile->getActivePhoneLine(); + if (phoneLine && phoneLine->isConnected()) { + + // extract the nickname from 1|o|chat/pseudo=value&sip=value + StringList l = query.split("/"); + std::string nickname; + if (l.size() == 2) { + int sepPos = l[1].find("&"); + nickname = l[1].substr(7, sepPos - 7); + } + //// + + // get THE QuteCom account + IMAccountList imAccountList = userProfile->getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolQuteCom); + //// + + // create the IMContactSet + IMAccount *imAccount = userProfile->getIMAccountManager().getIMAccount((*imAccountList.begin()).getUUID()); + IMContact imContact(*imAccount, nickname); + IMContactSet imContactSet; + imContactSet.insert(imContact); + //// + + // create the chat session + ChatHandler & chatHandler = userProfile->getChatHandler(); + chatHandler.createSession(imAccount->getUUID(), imContactSet); + //// + + OWSAFE_DELETE(imAccount); + } + } + // failed + _serverSocket->writeToClient(connectionId, QueryChat + "|0"); + + } else if (query.beginsWith(QueryAddContact)) { + + UserProfile * userProfile = _qutecomPhone.getUserProfileHandler().getCurrentUserProfile(); + if (userProfile) { + + ContactInfo contactInfo; + String tmp = query.substr(QueryAddContact.size(), query.size() - 1); + + StringList args = tmp.split("&"); + for (unsigned i = 0; i < args.size(); i++) { + + String tmp = args[i]; + if (!tmp.size()) { + continue; + } + + StringList list = tmp.split("="); + if ((!(list.size() == 2)) || list[0].empty()) { + continue; + } + + // remove the first and the last quote if any + String value = list[1]; + + if (list[0] == NICKNAME_STR) { + contactInfo.qutecomName = value; + } else if (list[0] == SIP_STR) { + contactInfo.sip = value; + } else if (list[0] == FIRSTNAME_STR) { + contactInfo.firstname = value; + } else if (list[0] == LASTNAME_STR) { + contactInfo.lastname = value; + } else if (list[0] == COUNTRY_STR) { + contactInfo.country = value; + } else if (list[0] == CITY_STR) { + contactInfo.city = value; + } else if (list[0] == STATE_STR) { + contactInfo.state = value; + } else if (list[0] == GROUP_STR) { + contactInfo.group = value; + } else if (list[0] == WDEALSERVICETITLE_STR) { + contactInfo.wdealServiceTitle = value; + } else if (list[0] == URL_STR) { + if (value.beginsWith("\"")) { + value = value.substr(1, value.size() - 2); + } + contactInfo.website = value; + } + } + + showAddContactEvent(contactInfo); + } + + } else { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //"emulate" a http server. Needed for Flash sockets + std::string tmp = "\n" + "\n" + "\n"; + StringList domains = config.getCmdServerAuthorizedDomains(); + StringList::const_iterator it = domains.begin(), end = domains.end(); + for (;it!=end; ++it) { + tmp += "\n"; + } + tmp += "\n" + ""; + _serverSocket->writeToClient(connectionId, buildHttpForFlash(tmp)); + } +} + +void CommandServer::writeStatusEventHandler(ServerSocket & sender, const std::string & writeId, ServerSocket::Error error) { + if (error == ServerSocket::NoError) { + LOG_DEBUG("writeId=" + writeId + " write success"); + } else { + LOG_WARN("writeId=" + writeId + " write failed"); + } +} + +std::string CommandServer::buildHttpForFlash(const std::string & xml) { + + std::string httpHeader = + "HTTP/1.1 200 OK\n" + "Date: Thu, 29 Jun 2006 11:02:50 GMT\n" + "Server: Apache/2.0.46 (CentOS)\n" + "Last-Modified: Thu, 29 Jun 2006 10:41:12 GMT\n" + "Accept-Ranges: bytes\n" + "Connection: close\n" + "Content-Type: text/xml"; + + //Add the xml Content-Length and the header separator + httpHeader += "Content-Length: " + String::fromNumber(xml.size()) + "\n\n"; + + return httpHeader + xml; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandServer.h qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandServer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/CommandServer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/commandserver/CommandServer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCOMMANDSERVER_H +#define OWCOMMANDSERVER_H + +#include +#include + +class QuteCom; +class ContactInfo; + +/** + * Command server. Listen for local connections, + * implements a simple command protocol. + * + * Syntax for query string is: + * |s + * |o|[/] + * - is the version of the communication protocol ("1" for now) + * - "s" stands for "status" + * - "o" stands for "order" + * - is a string + * - are optional params for + * + * @author Mathieu Stute + */ +class CommandServer { +public: + static const int Port = 25902; + + static const std::string QueryStatus; + + static const std::string QueryCall; + + static const std::string QuerySms; + + static const std::string QueryChat; + + static const std::string QueryAddContact; + + static const std::string QueryBringToFront; + + /** + * A contact has to be added to the contact list. + * + * work around a f*c*i*g VS 2003 bug that produces an INTERNAL COMPILER ERROR. + * + * @param contactInfo contact informations (firstname, lastname, SIP address...) + */ + Event showAddContactEvent; + + Event bringMainWindowToFrontEvent; + + CommandServer(QuteCom & qutecomPhone); + + ~CommandServer(); + + static CommandServer & getInstance(QuteCom & qutecomPhone); + +private: + + static std::string buildHttpForFlash(const std::string & xml); + + /** + * @see ServerSocket::serverStatusEvent + */ + void serverStatusEventHandler(ServerSocket & sender, ServerSocket::Error error); + + /** + * @see ServerSocket::connectionEvent + */ + void connectionEventHandler(ServerSocket & sender, const std::string & connectionId); + + /** + * @see ServerSocket::incomingRequestEvent + */ + void incomingRequestEventHandler(ServerSocket & sender, const std::string & connectionId, const std::string & data); + + /** + * @see ServerSocket::writeStatusEvent + */ + void writeStatusEventHandler(ServerSocket & sender, const std::string & writeId, ServerSocket::Error error); + + ServerSocket * _serverSocket; + + static CommandServer * _commandServerInstance; + + QuteCom & _qutecomPhone; +}; + +#endif //OWCOMMANDSERVER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/ContactInfo.h qutecom-2.2+dfsg1/qutecom/src/model/commandserver/ContactInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/commandserver/ContactInfo.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/commandserver/ContactInfo.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTINFO_H +#define OWCONTACTINFO_H + +#include + +/** + * Contact informations retrieved from the flash add contact button. + * + * Originaly done as a workaround for a f*c*i*g VS 2003 bug that produces an INTERNAL COMPILER ERROR. + * + * @author Mathieu Stute + * @author Tanguy Krotoff + */ +class ContactInfo { +public: + + /** QuteCom name= qutecom pseudo. */ + std::string qutecomName; + + /** Wdeal service title/name. */ + std::string wdealServiceTitle; + + /** Contact SIP address. */ + std::string sip; + + /** Contact first name. */ + std::string firstname; + + /** Contact last name. */ + std::string lastname; + + /** Contact country. */ + std::string country; + + /** Contact city. */ + std::string city; + + /** Contact state. */ + std::string state; + + /** Contact group. */ + std::string group; + + /** Contact website url. */ + std::string website; +}; + +#endif //OWCONTACTINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/CommandLineParser.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/CommandLineParser.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/CommandLineParser.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/CommandLineParser.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,151 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "CommandLineParser.h" + +#include +#include +using namespace boost::program_options; +using namespace std; + +#include +#include +#include + +#include + +static std::string getDefaultResourcesDir() { + // Init resourcesDir + std::string resourcesDir; +#if defined(OS_WINDOWS) + resourcesDir = Path::getApplicationDirPath(); +#elif defined(OS_MACOSX) + resourcesDir = Path::getApplicationResourcesDirPath(); +#elif defined(OS_LINUX) and defined(OW_RESOURCEDIR) + resourcesDir = OW_RESOURCEDIR + File::getPathSeparator(); +#endif + + //Check if resourcesDir exist, if not then Path::getApplicationDirPath() + if (!File::exists(resourcesDir)) { + resourcesDir = Path::getApplicationDirPath(); + } + + return resourcesDir; +} + +static std::string getDefaultUserConfigDir(const std::string& binaryName) { + std::string configDir = Path::getConfigurationDirPath(); +#if defined(OS_LINUX) + configDir += '.'; +#endif + configDir += binaryName; + configDir += Path::getPathSeparator(); + return configDir; +} + +// FIXME: binaryName should get read from buildconfig, but it's only available +// in the qt subdir for now :-( +CommandLineParser::CommandLineParser(const std::string& binaryName, int argc, char * argv[]) { + _severalQuteComAllowed = false; + _runInBackground = false; + _resourcesDir = getDefaultResourcesDir(); + _userConfigDir = getDefaultUserConfigDir(binaryName); + + try { + options_description desc("Allowed options"); + desc.add_options() + //First parameter describes option name/short name + //The second is parameter to option + //The third is description + ("help,h", "print usage message") + ("background,b", "run in background mode") + ("several,s", "allow several QuteCom at the same time") + ("configpath,q", value(), "pass a path to load configuration directory") + ("resources", value(), "use a custom resources directory") + ("command,c", value(), "pass a command to the qutecom") + ; + + variables_map vm; + store(parse_command_line(argc, argv, desc), vm); + + // Handle help first + if (vm.count("help")) { + cout << desc << endl; + exit(0); + } + + // Now init config + if (vm.count("resources")) { + _resourcesDir = vm["resources"].as(); + } + + if (vm.count("configpath")) { + _userConfigDir = vm["configpath"].as(); + std::string pathSeparator = File::getPathSeparator(); + + int size = _userConfigDir.size(); + if (_userConfigDir[size-1] != pathSeparator[0]) { + + // remove " at the end + if (_userConfigDir[size-1] == '\"') { + _userConfigDir = _userConfigDir.substr(0,size-1); + } + //// + + // add path separator + _userConfigDir += pathSeparator; + //// + } + } + + //Set executable name + std::string executableName; + if (argv[0]) { + char * p = strrchr(argv[0], Path::getPathSeparator()[0]); + _executableName = std::string(p ? p + 1 : argv[0]); + } + + if (vm.count("background")) { + _runInBackground = true; + } + + if (vm.count("several")) { + _severalQuteComAllowed = true; + } + + if (vm.count("command")) { + static String commandCall = "call/"; + String command = String(vm["command"].as()); + + //FIXME is it right to do that here? + command.remove("qutecom://"); + + if (command.beginsWith(commandCall)) { + _command = command.split("/")[1]; + } + } + + } + catch(exception & e) { + cerr << e.what() << endl; + } +} + +CommandLineParser::~CommandLineParser() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/CommandLineParser.h qutecom-2.2+dfsg1/qutecom/src/model/config/CommandLineParser.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/CommandLineParser.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/CommandLineParser.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCOMMANDLINEPARSER_H +#define OWCOMMANDLINEPARSER_H + +#include + +/** + * Parse command line option. + * + * @ingroup model + * @author Mathieu Stute + * @euthor Xavier Desjardins + * @euthor Aurelien Gateau + */ +class CommandLineParser { +public: + + CommandLineParser(const std::string& binaryName, int argc, char * argv[]); + + ~CommandLineParser(); + + bool isSeveralQuteComAllowed() const { + return _severalQuteComAllowed; + } + + bool getRunInBackground() const { + return _runInBackground; + } + + std::string getResourcesDir() const { + return _resourcesDir; + } + + std::string getUserConfigDir() const { + return _userConfigDir; + } + + std::string getCommand() const { + return _command; + } + + std::string getExecutableName() const { + return _executableName; + } + +private: + bool _severalQuteComAllowed; + bool _runInBackground; + std::string _resourcesDir; + std::string _userConfigDir; + std::string _command; + std::string _executableName; +}; + +#endif //OWCOMMANDLINEPARSER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Config.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/Config.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Config.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/Config.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,836 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Config.h" + +#include +#include + +#include + +#include + +#include + +#include +#include +#include +#include + +#ifdef OS_MACOSX + #include +#endif + +using namespace std; + +const string Config::CONFIG_VERSION_KEY = "config.version"; + +const string Config::NETWORK_SSO_SSL_KEY = "network.sso.ssl"; +const string Config::NETWORK_NAT_TYPE_KEY = "network.nat.type"; +const string Config::NETWORK_SIP_LOCAL_PORT_KEY = "network.sip.localport"; +const string Config::NETWORK_TUNNEL_NEEDED_KEY = "network.tunnel.needed"; +const string Config::NETWORK_TUNNEL_SSL_KEY = "network.tunnel.ssl"; +const string Config::NETWORK_TUNNEL_SERVER_KEY = "network.tunnel.server"; +const string Config::NETWORK_TUNNEL_PORT_KEY = "network.tunnel.port"; +const string Config::NETWORK_PROXY_DETECTED_KEY = "network.proxy.detected"; +const string Config::NETWORK_PROXY_SERVER_KEY = "network.proxy.server"; +const string Config::NETWORK_PROXY_PORT_KEY = "network.proxy.port"; +const string Config::NETWORK_PROXY_LOGIN_KEY = "network.proxy.login"; +const string Config::NETWORK_PROXY_PASSWORD_KEY = "network.proxy.password"; +const string Config::NETWORK_STUN_SERVER_KEY = "network.stun.server"; + +const string Config::CODEC_PLUGIN_PATH_KEY = "codec.plugin.path"; +const string Config::PHAPI_PLUGIN_PATH_KEY = "phapi.plugin.path"; + +const string Config::AUDIO_CODEC_LIST_KEY = "audio.codec.list"; +const string Config::AUDIO_OUTPUT_DEVICEID_KEY = "audio.output.deviceid"; +const string Config::AUDIO_INPUT_DEVICEID_KEY = "audio.input.deviceid"; +const string Config::AUDIO_RINGER_DEVICEID_KEY = "audio.ringer.deviceid"; +const string Config::AUDIO_ENABLE_RINGING_KEY = "audio.ringing.enable"; + +const string Config::AUDIO_INCOMINGCALL_FILE_KEY = "audio.incomingcall.file"; +const string Config::AUDIO_OUTGOINGCALL_FILE_KEY = "audio.outgoingcall.file"; +const string Config::AUDIO_DOUBLECALL_FILE_KEY = "audio.doublecall.file"; +const string Config::AUDIO_CALLCLOSED_FILE_KEY = "audio.callclosed.file"; +const string Config::AUDIO_INCOMINGCHAT_FILE_KEY = "audio.incomingchat.file"; +const string Config::AUDIO_IMACCOUNTCONNECTED_FILE_KEY = "audio.imaccountconnected.file"; +const string Config::AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY = "audio.imaccountdisconnected.file"; +const string Config::AUDIO_CONTACTONLINE_FILE_KEY = "audio.contactonline.file"; + +const string Config::AUDIO_SMILEYS_DIR_KEY = "audio.smileys.dir"; +const string Config::AUDIO_AEC_KEY = "audio.aec"; +const string Config::AUDIO_HALFDUPLEX_KEY = "audio.halfduplex"; + +const string Config::PROFILE_LAST_USED_NAME_KEY = "profile.last_used_name"; +const string Config::PROFILE_WIDTH_KEY = "profile.width"; +const string Config::PROFILE_HEIGHT_KEY = "profile.height"; +const string Config::PROFILE_POSX_KEY = "profile.posx"; +const string Config::PROFILE_POSY_KEY = "profile.posy"; + +const string Config::CALL_FORWARD_MODE_KEY = "call.forward.mode"; +const string Config::CALL_FORWARD_PHONENUMBER1_KEY = "call.forward.phonenumber1"; +const string Config::CALL_FORWARD_PHONENUMBER2_KEY = "call.forward.phonenumber2"; +const string Config::CALL_FORWARD_PHONENUMBER3_KEY = "call.forward.phonenumber3"; + +const string Config::VOICE_MAIL_ACTIVE_KEY = "voicemail.active"; + +const string Config::GENERAL_AUTOSTART_KEY = "general.autostart"; +const string Config::GENERAL_STARTBACKGROUNDMODE_KEY = "general.start.background.mode"; +const string Config::GENERAL_CLICK_START_FREECALL_KEY = "general.click.start.freecall"; +const string Config::GENERAL_CLICK_START_CHAT_KEY = "general.click.start.chat"; +const string Config::GENERAL_CLICK_CALL_CELLPHONE_KEY = "general.click.call.cellphone"; +const string Config::GENERAL_AWAY_TIMER_KEY = "general.away.timer"; +const string Config::GENERAL_SHOW_GROUPS_KEY = "general.show.groups"; +const string Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY = "general.show.offline.contacts"; +const string Config::GENERAL_HYPERLINKPROTOCOL_KEY = "general.hyperlinkprotocol"; +const string Config::GENERAL_TOOLBARMODE_KEY = "general.toolbarmode"; + +const string Config::APPEARANCE_CHATTHEME_KEY = "chat.theme"; +const string Config::APPEARANCE_CHATTHEMEVARIANT_KEY = "chat.theme.variant"; + +const string Config::LANGUAGE_AUTODETECT_KEYVALUE = "detect"; +const string Config::LANGUAGE_KEY = "language"; + +const string Config::NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY = "notification.show.toaster.on.incoming.call"; +const string Config::NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY = "notification.show.toaster.on.incoming.chat"; +const string Config::NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY = "notification.show.toaster.on.contact"; +const string Config::NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY = "notification.donotdisturb.nowindow"; +const string Config::NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY = "notification.donotdisturb.noaudio"; +const string Config::NOTIFICATION_AWAY_NO_WINDOW_KEY = "notification.away.nowindow"; +const string Config::NOTIFICATION_AWAY_NO_AUDIO_KEY = "notification.away.noaudio"; + +const string Config::PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY = "privacy.allow.call.from.anyone"; +const string Config::PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY = "privacy.allow.call.only.from.contact.list"; +const string Config::PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY = "privacy.allow.chat.from.anyone"; +const string Config::PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY = "privacy.allow.chat.only.from.contact.list"; +const string Config::PRIVACY_SIGN_AS_INVISIBLE_KEY = "privacy.sign.as.invisible"; + +const string Config::VIDEO_ENABLE_KEY = "video.enable"; +const string Config::VIDEO_WEBCAM_DEVICE_KEY = "video.webcam.device"; +const string Config::VIDEO_QUALITY_KEY = "video.quality"; +const string Config::VIDEO_ENABLE_XVIDEO_KEY = "video.xvideo.enable"; +const string Config::VIDEO_ENABLE_FLIP_KEY = "video.flip.enable"; + +const string Config::QUTECOM_SERVER_HOSTNAME_KEY = "qutecom.server.hostname"; +const string Config::QUTECOM_SMS_PATH_KEY = "qutecom.sms.path"; +const string Config::QUTECOM_SSO_PATH_KEY = "qutecom.sso.path"; +const string Config::QUTECOM_INFO_PATH_KEY = "qutecom.info.path"; +const string Config::QUTECOM_SUBSCRIBE_PATH_KEY = "qutecom.subscribe.path"; +const string Config::QUTECOM_SOFTUPDATE_PATH_KEY = "qutecom.softupdate.path"; +const string Config::QUTECOM_CIRPACK_PATH_KEY = "qutecom.cirpack.path"; +const string Config::QUTECOM_DIRECTORY_PATH_KEY = "qutecom.directory.path"; +const string Config::QUTECOM_AUDIOTESTCALL_KEY = "qutecom.testcall.audio"; +const string Config::QUTECOM_VIDEOTESTCALL_KEY = "qutecom.testcall.video"; +const string Config::QUTECOM_REALM_KEY = "qutecom.realm"; + +const string Config::SIP_REGISTER_SERVER = "sip.register.server"; +const string Config::SIP_REGISTER_PORT = "sip.register.port"; +const string Config::SIP_PROXY_SERVER = "sip.proxy.server"; +const string Config::SIP_PROXY_PORT = "sip.proxy.port"; +const string Config::SIP_REALM = "sip.realm"; +const string Config::SIP_SIMPLE_SUPPORT = "sip.simplesupport"; +const string Config::SIP_AUDIOTESTCALL_KEY = "sip.testcall.audio"; +const string Config::SIP_VIDEOTESTCALL_KEY = "sip.testcall.video"; + +const string Config::SIP_REGISTER_TIMEOUT = "sip.register.timeout"; +const string Config::SIP_PUBLISH_TIMEOUT = "sip.publish.timeout"; +const string Config::SIP_USE_OPTIONS = "sip.use.options"; +const string Config::SIP_P2P_PRESENCE= "sip.p2p.presence"; +const string Config::SIP_CHAT_WITHOUT_PRESENCE= "sip.chat.without.presence"; + +const string Config::LAST_CHAT_HISTORY_SAVE_DIR_KEY = "last.chat.history.save.dir"; + +const string Config::APPLICATION_ICON_PATH = "/pics/application-icon.png"; + +const string Config::IEACTIVEX_ENABLE_KEY = "ieactivex.enable"; + +const string Config::CMDSERVER_AUTHORIZEDDOMAINS_KEY = "cmdserver.authorizeddomains"; + +const string Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY = "filetransfer.downloadfolder"; +const string Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY = "filetransfer.lastuploadedfilefolder"; + +const string Config::LINUX_PREFERED_BROWSER_KEY = "linux.prefered.browser"; + +const string Config::CALL_ENCRYPTION_MODE_KEY = "call.encryption.mode"; + +const string Config::URL_ACCOUNTCREATION_KEY = "url.accountcreation"; + +const string Config::URL_FORUM_KEY = "url.forum"; + +const string Config::URL_CALLOUT_KEY = "url.callout"; + +const string Config::URL_SMS_KEY = "url.sms"; + +const string Config::URL_VOICEMAIL_KEY = "url.voicemail"; + +const string Config::URL_EXTERNALDIRECTORY_KEY = "url.externaldirectory"; + +const string Config::URL_INTERNALDIRECTORY_KEY = "url.internaldirectory"; + +const string Config::URL_FAQ_KEY = "url.faq"; + +const string Config::URL_ACCOUNT_KEY = "url.account"; + +const string Config::URL_BUYQUTECOMS_KEY = "url.buyqutecoms"; + +const string Config::URL_DOWNLOAD_KEY = "url.download"; + +const string Config::URL_PHONENUMBER_KEY = "url.phonenumber"; + +const string Config::URL_WIKI_KEY = "url.wiki"; + +const string Config::URL_LOSTPASSWORD_KEY = "url.lostpassword"; + +const string Config::URL_LAUNCHPAD_KEY = "url.launchpad"; + +const string Config::URL_HOME_HTTP_KEY = "url.home.http"; +const string Config::URL_HOME_HTTPS_KEY = "url.home.https"; + +const string Config::URL_COMPANYWEBSITE_KEY = "url.companywebsite"; + +const string Config::FEATURE_SMS_KEY = "feature.sms"; +const string Config::FEATURE_AUDIOCONFERENCE_KEY = "feature.audioconference"; + +const string Config::SIP_USE_TYPING_STATE="sip.use.typing_state"; + +const string Config::TRANSLATION_SENT_KEY="translation.sent"; +const string Config::TRANSLATION_RECEIVED_KEY="translation.received"; + +string Config::_configDir; + +Config::Config(const string & name) + : CascadingSettings() { + + _name = name; + + // Version is set to sticky otherwise it would be impossible to detect + // config version changes + addStickyKey(CONFIG_VERSION_KEY); +} + +Config::~Config() { +} + +string Config::getName() const { + return _name; +} + +int Config::getConfigVersion() const { + return getIntegerKeyValue(CONFIG_VERSION_KEY); +} + +bool Config::getNetworkSSOSSL() const { + return getBooleanKeyValue(NETWORK_SSO_SSL_KEY); +} + +string Config::getNetworkNatType() const { + return getStringKeyValue(NETWORK_NAT_TYPE_KEY); +} + +int Config::getNetworkSipLocalPort() const { + return getIntegerKeyValue(NETWORK_SIP_LOCAL_PORT_KEY); +} + +bool Config::getNetworkTunnelSSL() const { + return getBooleanKeyValue(NETWORK_TUNNEL_SSL_KEY); +} + +string Config::getNetworkTunnelServer() const { + return getStringKeyValue(NETWORK_TUNNEL_SERVER_KEY); +} + +bool Config::getNetWorkTunnelNeeded() const { + return getBooleanKeyValue(NETWORK_TUNNEL_NEEDED_KEY); +} + +int Config::getNetworkTunnelPort() const { + return getIntegerKeyValue(NETWORK_TUNNEL_PORT_KEY); +} + +bool Config::getNetworkProxyDetected() const { + return getBooleanKeyValue(NETWORK_PROXY_DETECTED_KEY); +} + +string Config::getNetworkProxyServer() const { + return getStringKeyValue(NETWORK_PROXY_SERVER_KEY); +} + +int Config::getNetworkProxyPort() const { + return getIntegerKeyValue(NETWORK_PROXY_PORT_KEY); +} + +string Config::getNetworkProxyLogin() const { + return getStringKeyValue(NETWORK_PROXY_LOGIN_KEY); +} + +string Config::getNetworkProxyPassword() const { + return getStringKeyValue(NETWORK_PROXY_PASSWORD_KEY); +} + +string Config::getNetworkStunServer() const { + return getStringKeyValue(NETWORK_STUN_SERVER_KEY); +} + +string Config::getCodecPluginPath() const { + return getStringKeyValue(CODEC_PLUGIN_PATH_KEY); +} + +string Config::getPhApiPluginPath() const { + return getStringKeyValue(PHAPI_PLUGIN_PATH_KEY); +} + +StringList Config::getAudioCodecList() const { + StringList res = getStringListKeyValue(AUDIO_CODEC_LIST_KEY); + return res; +} + +bool Config::getAudioAEC() const { + return getBooleanKeyValue(AUDIO_AEC_KEY); +} + +bool Config::getAudioHalfDuplex() const { + return getBooleanKeyValue(AUDIO_HALFDUPLEX_KEY); +} + +bool Config::getAudioRingingEnable() const { + return getBooleanKeyValue(AUDIO_ENABLE_RINGING_KEY); +} + +string Config::getLastChatHistorySaveDir() const { + return getStringKeyValue(LAST_CHAT_HISTORY_SAVE_DIR_KEY); +} + +string Config::getApplicationIconPath() const { + return getResourcesDir() + APPLICATION_ICON_PATH; +} + +string Config::getAudioSmileysDir() const { + return getResourceKeyValue(AUDIO_SMILEYS_DIR_KEY); +} + +string Config::getAudioIncomingCallFile() const { + return getResourceKeyValue(AUDIO_INCOMINGCALL_FILE_KEY); +} + +string Config::getAudioOutgoingCallFile() const { + return getResourceKeyValue(AUDIO_OUTGOINGCALL_FILE_KEY); +} + +string Config::getAudioDoubleCallFile() const { + return getResourceKeyValue(AUDIO_DOUBLECALL_FILE_KEY); +} + +string Config::getAudioCallClosedFile() const { + return getResourceKeyValue(AUDIO_CALLCLOSED_FILE_KEY); +} + +string Config::getAudioIncomingChatFile() const { + return getResourceKeyValue(AUDIO_INCOMINGCHAT_FILE_KEY); +} + +string Config::getAudioIMAccountConnectedFile() const { + return getResourceKeyValue(AUDIO_IMACCOUNTCONNECTED_FILE_KEY); +} + +string Config::getAudioIMAccountDisconnectedFile() const { + return getResourceKeyValue(AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY); +} + +string Config::getAudioContactOnlineFile() const { + return getResourceKeyValue(AUDIO_CONTACTONLINE_FILE_KEY); +} + +/** + * Code factorization. + * + * @see Config::getAudioRingerDeviceId() + * @see Config::getAudioInputDeviceId() + * @see Config::getAudioOutputDeviceId() + * @param storedDeviceData the stored audio device + * @param currentdeviceList the actual audio devices list + * @param currentDefaultDevice the actual default device + */ +static StringList getProperAudioDeviceId( + const StringList & storedDeviceData, + const std::list & currentdeviceList, + const StringList & currentDefaultDevice) { + + StringList result; + + // if no device stored use the default one + if (storedDeviceData.empty()) { + result = currentDefaultDevice; + + // else check if the stored device is currently available + // do not exec this check under Linux because when devices + // are busy they are not in currentdeviceList + } else { +#ifndef OS_LINUX + bool found = false; + + std::list::const_iterator it; + for (it = currentdeviceList.begin(); it != currentdeviceList.end(); ++it) { + + if ((*it).getData() == storedDeviceData) { + found = true; + } + } + + // if the stored device has been found we use it + if (found) { + result = storedDeviceData; + } else { + result = currentDefaultDevice; + } +#else + result = storedDeviceData; +#endif + } + return result; +} + +StringList Config::getAudioOutputDeviceId() const { + return getProperAudioDeviceId( + getStringListKeyValue(AUDIO_OUTPUT_DEVICEID_KEY), + AudioDeviceManager::getInstance().getOutputDeviceList(), + AudioDeviceManager::getInstance().getDefaultOutputDevice().getData() + ); +} + +StringList Config::getAudioInputDeviceId() const { + return getProperAudioDeviceId( + getStringListKeyValue(AUDIO_INPUT_DEVICEID_KEY), + AudioDeviceManager::getInstance().getInputDeviceList(), + AudioDeviceManager::getInstance().getDefaultInputDevice().getData() + ); +} + +StringList Config::getAudioRingerDeviceId() const { + return getProperAudioDeviceId( + getStringListKeyValue(AUDIO_RINGER_DEVICEID_KEY), + AudioDeviceManager::getInstance().getOutputDeviceList(), + AudioDeviceManager::getInstance().getDefaultOutputDevice().getData() + ); +} + +string Config::getQuteComServerHostname() const { + return getStringKeyValue(QUTECOM_SERVER_HOSTNAME_KEY); +} + +string Config::getQuteComSSOPath() const { + return getStringKeyValue(QUTECOM_SSO_PATH_KEY); +} + +string Config::getQuteComSMSPath() const { + return getStringKeyValue(QUTECOM_SMS_PATH_KEY); +} + +string Config::getQuteComSubscribePath() const { + return getStringKeyValue(QUTECOM_SUBSCRIBE_PATH_KEY); +} + +string Config::getQuteComInfoPath() const { + return getStringKeyValue(QUTECOM_INFO_PATH_KEY); +} + +string Config::getQuteComSoftUpdatePath() const { + return getStringKeyValue(QUTECOM_SOFTUPDATE_PATH_KEY); +} + +string Config::getQuteComCirpackPath() const { + return getStringKeyValue(QUTECOM_CIRPACK_PATH_KEY); +} + +string Config::getQuteComDirectoryPath() const { + return getStringKeyValue(QUTECOM_DIRECTORY_PATH_KEY); +} + +string Config::getQuteComRealm() const { + return getStringKeyValue(QUTECOM_REALM_KEY); +} + +string Config::getQuteComAudioTestCall() const { + return getStringKeyValue(QUTECOM_AUDIOTESTCALL_KEY); +} + +string Config::getQuteComVideoTestCall() const { + return getStringKeyValue(QUTECOM_VIDEOTESTCALL_KEY); +} + +std::string Config::getSipRegisterServer() const { + return getStringKeyValue(SIP_REGISTER_SERVER); +} + +int Config::getSipRegisterPort() const { + return getIntegerKeyValue(SIP_REGISTER_PORT); +} + +std::string Config::getSipProxyServer() const { + return getStringKeyValue(SIP_PROXY_SERVER); +} + +int Config::getSipProxyPort() const { + return getIntegerKeyValue(SIP_PROXY_PORT); +} + +std::string Config::getSipRealm() const { + return getStringKeyValue(SIP_REALM); +} + +bool Config::getSipSimpleSupport() const { + return getBooleanKeyValue(SIP_SIMPLE_SUPPORT); +} + +string Config::getSipAudioTestCall() const { + return getStringKeyValue(SIP_AUDIOTESTCALL_KEY); +} + +string Config::getSipVideoTestCall() const { + return getStringKeyValue(SIP_VIDEOTESTCALL_KEY); +} + +int Config::getSipRegisterTimeOut() const { + return getIntegerKeyValue(SIP_REGISTER_TIMEOUT); +} + +int Config::getSipPublishTimeOut() const { + return getIntegerKeyValue(SIP_PUBLISH_TIMEOUT); +} + +bool Config::getSipUseOptions() const { + return getBooleanKeyValue(SIP_USE_OPTIONS); +} + +bool Config::getSipP2pPresence() const { + return getBooleanKeyValue(SIP_P2P_PRESENCE); +} + +bool Config::getSipChatWithoutPresence() const { + return getBooleanKeyValue(SIP_CHAT_WITHOUT_PRESENCE); +} + +string Config::getProfileLastUsedName() const { + return getStringKeyValue(PROFILE_LAST_USED_NAME_KEY); +} + +int Config::getProfileWidth() const { + return getIntegerKeyValue(PROFILE_WIDTH_KEY); +} + +int Config::getProfileHeight() const { + return getIntegerKeyValue(PROFILE_HEIGHT_KEY); +} + +int Config::getProfilePosX() const { + return getIntegerKeyValue(PROFILE_POSX_KEY); +} + +int Config::getProfilePoxY() const { + return getIntegerKeyValue(PROFILE_POSY_KEY); +} + +string Config::getCallForwardMode() const { + return getStringKeyValue(CALL_FORWARD_MODE_KEY); +} + +string Config::getCallForwardPhoneNumber1() const { + return getStringKeyValue(CALL_FORWARD_PHONENUMBER1_KEY); +} + +string Config::getCallForwardPhoneNumber2() const { + return getStringKeyValue(CALL_FORWARD_PHONENUMBER2_KEY); +} + +string Config::getCallForwardPhoneNumber3() const { + return getStringKeyValue(CALL_FORWARD_PHONENUMBER3_KEY); +} + +bool Config::getVoiceMailActive() const { + return getBooleanKeyValue(VOICE_MAIL_ACTIVE_KEY); +} + +bool Config::getGeneralAutoStart() const { + return getBooleanKeyValue(GENERAL_AUTOSTART_KEY); +} + +bool Config::getGeneralStartBackgroundMode() const { + return getBooleanKeyValue(GENERAL_STARTBACKGROUNDMODE_KEY); +} + +bool Config::getGeneralClickStartFreeCall() const { + return getBooleanKeyValue(GENERAL_CLICK_START_FREECALL_KEY); +} + +bool Config::getGeneralClickStartChat() const { + return getBooleanKeyValue(GENERAL_CLICK_START_CHAT_KEY); +} + +bool Config::getGeneralClickCallCellPhone() const { + return getBooleanKeyValue(GENERAL_CLICK_CALL_CELLPHONE_KEY); +} + +int Config::getGeneralAwayTimer() const { + return getIntegerKeyValue(GENERAL_AWAY_TIMER_KEY); +} + +bool Config::getShowGroups() const { + return getBooleanKeyValue(GENERAL_SHOW_GROUPS_KEY); +} + +bool Config::getShowOfflineContacts() const { + return getBooleanKeyValue(GENERAL_SHOW_OFFLINE_CONTACTS_KEY); +} + +std::string Config::getHyperlinkProtocol() const { + return getStringKeyValue(GENERAL_HYPERLINKPROTOCOL_KEY); +} + +std::string Config::getToolBarMode() const { + return getStringKeyValue(GENERAL_TOOLBARMODE_KEY); +} + +string Config::getChatTheme() const { + return getStringKeyValue(APPEARANCE_CHATTHEME_KEY); +} + +string Config::getChatThemeVariant() const { + return getStringKeyValue(APPEARANCE_CHATTHEMEVARIANT_KEY); +} + +string Config::getLanguage() const { + return getStringKeyValue(LANGUAGE_KEY); +} + +bool Config::getNotificationShowToasterOnIncomingCall() const { + return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY); +} + +bool Config::getNotificationShowToasterOnIncomingChat() const { + return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY); +} + +bool Config::getNotificationShowToasterOnContactOnline() const { + return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY); +} + +bool Config::getNotificationDoNotDisturbNoWindow() const { + return getBooleanKeyValue(NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY); +} + +bool Config::getNotificationDoNotDisturbNoAudio() const { + return getBooleanKeyValue(NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY); +} + +bool Config::getNotificationAwayNoWindow() const { + return getBooleanKeyValue(NOTIFICATION_AWAY_NO_WINDOW_KEY); +} + +bool Config::getNotificationAwayNoAudio() const { + return getBooleanKeyValue(NOTIFICATION_AWAY_NO_AUDIO_KEY); +} + +bool Config::getPrivacyAllowCallFromAnyone() const { + return getBooleanKeyValue(PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY); +} + +bool Config::getPrivacyAllowCallOnlyFromContactList() const { + return getBooleanKeyValue(PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY); +} + +bool Config::getPrivacyAllowChatsFromAnyone() const { + return getBooleanKeyValue(PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY); +} + +bool Config::getPrivacyAllowChatOnlyFromContactList() const { + return getBooleanKeyValue(PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY); +} + +bool Config::getPrivacySignAsInvisible() const { + return getBooleanKeyValue(PRIVACY_SIGN_AS_INVISIBLE_KEY); +} + +bool Config::getVideoEnable() const { + if (getVideoWebcamDevice().empty()) { + return false; + } else { + return getBooleanKeyValue(VIDEO_ENABLE_KEY); + } +} + +string Config::getVideoWebcamDevice() const { + WebcamDriver * webcam = WebcamDriver::getInstance(); + + string deviceName = getStringKeyValue(VIDEO_WEBCAM_DEVICE_KEY); + + //FIXME see fixme DirectXWebcamDriver.h + //string defaultDevice = webcam->getDefaultDevice(); + string defaultDevice = deviceName; + + if (defaultDevice == WEBCAM_NULL) { + defaultDevice = String::null; + } + StringList deviceList = webcam->getDeviceList(); + + if (deviceName.empty()) { + return defaultDevice; + } else if (!deviceList.contains(deviceName)) { + return defaultDevice; + } else { + return deviceName; + } +} + +string Config::getVideoQuality() const { + return getStringKeyValue(VIDEO_QUALITY_KEY); +} + +bool Config::getXVideoEnable() const { + return getBooleanKeyValue(VIDEO_ENABLE_XVIDEO_KEY); +} + +bool Config::getVideoFlipEnable() const { + return getBooleanKeyValue(VIDEO_ENABLE_FLIP_KEY); +} + +bool Config::getIEActiveXEnable() const { + return getBooleanKeyValue(IEACTIVEX_ENABLE_KEY); +} + +StringList Config::getCmdServerAuthorizedDomains() const { + return getStringListKeyValue(CMDSERVER_AUTHORIZEDDOMAINS_KEY); +} + +string Config::getFileTransferDownloadFolder() const { + return getStringKeyValue(FILETRANSFER_DOWNLOAD_FOLDER_KEY); +} + +string Config::getLinuxPreferedBrowser() const { + return getStringKeyValue(LINUX_PREFERED_BROWSER_KEY); +} + +string Config::getLastUploadedFileFolder() const { + return getStringKeyValue(FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY); +} + +bool Config::getCallEncryptionMode() const { + return getBooleanKeyValue(CALL_ENCRYPTION_MODE_KEY); +} +string Config::getAccountCreationUrl() const { + return getStringKeyValue(URL_ACCOUNTCREATION_KEY); +} + +string Config::getForumUrl() const { + return getStringKeyValue(URL_FORUM_KEY); +} + +string Config::getCalloutUrl() const { + return getStringKeyValue(URL_CALLOUT_KEY); +} + +string Config::getSmsUrl() const { + return getStringKeyValue(URL_SMS_KEY); +} + +string Config::getVoiceMailUrl() const { + return getStringKeyValue(URL_VOICEMAIL_KEY); +} + +string Config::getExternalDirectoryUrl() const { + return getStringKeyValue(URL_EXTERNALDIRECTORY_KEY); +} + +string Config::getInternalDirectoryUrl() const { + return getStringKeyValue(URL_INTERNALDIRECTORY_KEY); +} + +string Config::getFaqUrl() const { + return getStringKeyValue(URL_FAQ_KEY); +} + +string Config::getAccountUrl() const { + return getStringKeyValue(URL_ACCOUNT_KEY); +} + +string Config::getBuyQuteComsUrl() const { + return getStringKeyValue(URL_BUYQUTECOMS_KEY); +} + +string Config::getDownloadUrl() const { + return getStringKeyValue(URL_DOWNLOAD_KEY); +} + +string Config::getPhoneNumberUrl() const { + return getStringKeyValue(URL_PHONENUMBER_KEY); +} + +string Config::getWikiUrl() const { + return getStringKeyValue(URL_WIKI_KEY); +} + +string Config::getLostPasswordUrl() const { + return getStringKeyValue(URL_LOSTPASSWORD_KEY); +} + +string Config::getLaunchpadUrl() const { + return getStringKeyValue(URL_LAUNCHPAD_KEY); +} + +string Config::getHttpHomeUrl() const { + return getStringKeyValue(URL_HOME_HTTP_KEY); +} + +string Config::getHttpsHomeUrl() const { + return getStringKeyValue(URL_HOME_HTTPS_KEY); +} + +string Config::getCompanyWebSiteUrl() const { + return getStringKeyValue(URL_COMPANYWEBSITE_KEY); +} + +bool Config::getSmsFeatureEnabled() const { + return getBooleanKeyValue(FEATURE_SMS_KEY); +} + +bool Config::getAudioConferenceFeatureEnabled() const { + return getBooleanKeyValue(FEATURE_AUDIOCONFERENCE_KEY); +} + +std::string Config::getConfigDir() { + if (_configDir.empty()) { + LOG_FATAL("getConfigDir() called before setConfigDir()"); + } + return _configDir; +} + +void Config::setConfigDir(const std::string& configDir) { + _configDir = configDir; +} + +bool Config::getSipUseTypingState() const +{ + return getBooleanKeyValue(SIP_USE_TYPING_STATE); +} + +string Config::getTranslationSent() const { + return getStringKeyValue(TRANSLATION_SENT_KEY); +} + +string Config::getTranslationReceived() const { + return getStringKeyValue(TRANSLATION_RECEIVED_KEY); +} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/config_framework1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/config/config_framework1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Config.h qutecom-2.2+dfsg1/qutecom/src/model/config/Config.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Config.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/Config.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,680 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONFIG_H +#define OWCONFIG_H + +#include + +#include +#include + +/** + * Stores the configuration options of QuteCom. + * + * Tries to make it impossible to make a mistake. + * + * @see CascadingSettings + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class Config : public CascadingSettings { +public: + + static const std::string CONFIG_VERSION_KEY; + int getConfigVersion() const; + + Config(const std::string & name); + + ~Config(); + + /** + * Gets the name associated with the Config. + * + * @return Config name + */ + std::string getName() const; + + /** True if SSL connection to SSO is available. */ + static const std::string NETWORK_SSO_SSL_KEY; + bool getNetworkSSOSSL() const; + + /** + * Type of NAT. + * + * @see EnumNatType::NatType + */ + static const std::string NETWORK_NAT_TYPE_KEY; + std::string getNetworkNatType() const; + + /** Client SIP Port to use. */ + static const std::string NETWORK_SIP_LOCAL_PORT_KEY; + int getNetworkSipLocalPort() const; + + /** True if tunnel is SSL. */ + static const std::string NETWORK_TUNNEL_SSL_KEY; + bool getNetworkTunnelSSL() const; + + /** Tunnel server. Empty if no tunnel is needed */ + static const std::string NETWORK_TUNNEL_SERVER_KEY; + std::string getNetworkTunnelServer() const; + + /** True if HTTP tunnel needed. */ + static const std::string NETWORK_TUNNEL_NEEDED_KEY; + bool getNetWorkTunnelNeeded() const; + + /** Tunnel server port. */ + static const std::string NETWORK_TUNNEL_PORT_KEY; + int getNetworkTunnelPort() const; + + /** Is proxy detected ?. */ + static const std::string NETWORK_PROXY_DETECTED_KEY; + bool getNetworkProxyDetected() const; + + /** Proxy server. Empty if no proxy */ + static const std::string NETWORK_PROXY_SERVER_KEY; + std::string getNetworkProxyServer() const; + + /** Proxy server port. */ + static const std::string NETWORK_PROXY_PORT_KEY; + int getNetworkProxyPort() const; + + /** Proxy login. Empty if not needed */ + static const std::string NETWORK_PROXY_LOGIN_KEY; + std::string getNetworkProxyLogin() const; + + /** Proxy Password. Empty if not needed */ + static const std::string NETWORK_PROXY_PASSWORD_KEY; + std::string getNetworkProxyPassword() const; + + /** Stun server. */ + static const std::string NETWORK_STUN_SERVER_KEY; + std::string getNetworkStunServer() const; + + /** + * @name PhApi configuration Methods + * @{ + */ + + /** Path to codecs. */ + static const std::string CODEC_PLUGIN_PATH_KEY; + std::string getCodecPluginPath() const; + + /** Path to PhApi plugins (e.g SFP plugin). */ + static const std::string PHAPI_PLUGIN_PATH_KEY; + std::string getPhApiPluginPath() const; + + /** + * @} + */ + + /** + * @name Audio Methods + * @{ + */ + + /** audio codec list */ + static const std::string AUDIO_CODEC_LIST_KEY; + StringList getAudioCodecList() const; + + /** Playback audio device name. */ + static const std::string AUDIO_OUTPUT_DEVICEID_KEY; + StringList getAudioOutputDeviceId() const; + + /** Record audio device name. */ + static const std::string AUDIO_INPUT_DEVICEID_KEY; + StringList getAudioInputDeviceId() const; + + /** Ringer audio device name. */ + static const std::string AUDIO_RINGER_DEVICEID_KEY; + StringList getAudioRingerDeviceId() const; + + /** Ringing/incoming call/ringtone audio file name. */ + static const std::string AUDIO_INCOMINGCALL_FILE_KEY; + std::string getAudioIncomingCallFile() const; + + /** Ringing/incoming call/ringtone audio file name. */ + static const std::string AUDIO_OUTGOINGCALL_FILE_KEY; + std::string getAudioOutgoingCallFile() const; + + /** Ringing/double call/ringtone audio file name. */ + static const std::string AUDIO_DOUBLECALL_FILE_KEY; + std::string getAudioDoubleCallFile() const; + + /** Call closed audio file name. */ + static const std::string AUDIO_CALLCLOSED_FILE_KEY; + std::string getAudioCallClosedFile() const; + + /** Incoming chat audio file name. */ + static const std::string AUDIO_INCOMINGCHAT_FILE_KEY; + std::string getAudioIncomingChatFile() const; + + /** IM account connected audio file name. */ + static const std::string AUDIO_IMACCOUNTCONNECTED_FILE_KEY; + std::string getAudioIMAccountConnectedFile() const; + + /** IM account disconnected audio file name. */ + static const std::string AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY; + std::string getAudioIMAccountDisconnectedFile() const; + + /** Contact online audio file name. */ + static const std::string AUDIO_CONTACTONLINE_FILE_KEY; + std::string getAudioContactOnlineFile() const; + + /** Audio smileys directory. */ + static const std::string AUDIO_SMILEYS_DIR_KEY; + std::string getAudioSmileysDir() const; + + /** AEC (echo canceller) enable or not. */ + static const std::string AUDIO_AEC_KEY; + bool getAudioAEC() const; + + /** Half duplex mode enable or not. */ + static const std::string AUDIO_HALFDUPLEX_KEY; + bool getAudioHalfDuplex() const; + + /** Ringing enable or not. */ + static const std::string AUDIO_ENABLE_RINGING_KEY; + bool getAudioRingingEnable() const; + + /** @} */ + + /** + * @name QuteCom Specific Methods + * @{ + */ + + /** QuteCom server hostname. */ + static const std::string QUTECOM_SERVER_HOSTNAME_KEY; + std::string getQuteComServerHostname() const; + + /** QuteCom SSO path on the server. */ + static const std::string QUTECOM_SSO_PATH_KEY; + std::string getQuteComSSOPath() const; + + /** QuteCom SMS path on the server. */ + static const std::string QUTECOM_SMS_PATH_KEY; + std::string getQuteComSMSPath() const; + + /** QuteCom info web service path on the server. */ + static const std::string QUTECOM_INFO_PATH_KEY; + std::string getQuteComInfoPath() const; + + /** QuteCom subscription web service path on the server. */ + static const std::string QUTECOM_SUBSCRIBE_PATH_KEY; + std::string getQuteComSubscribePath() const; + + /** QuteCom update path on the QuteCom server. */ + static const std::string QUTECOM_SOFTUPDATE_PATH_KEY; + std::string getQuteComSoftUpdatePath() const; + + /** + * QuteCom cirpack web service path on the server. + * FIXME no cirpack information please! + */ + static const std::string QUTECOM_CIRPACK_PATH_KEY; + std::string getQuteComCirpackPath() const; + + /** QuteCom directory web service path on the server. */ + static const std::string QUTECOM_DIRECTORY_PATH_KEY; + std::string getQuteComDirectoryPath() const; + + /** QuteCom realm. */ + static const std::string QUTECOM_REALM_KEY; + std::string getQuteComRealm() const; + + static const std::string QUTECOM_AUDIOTESTCALL_KEY; + std::string getQuteComAudioTestCall() const; + + static const std::string QUTECOM_VIDEOTESTCALL_KEY; + std::string getQuteComVideoTestCall() const; + + /** @} */ + + /** + * @name Sip Methods + * @{ + */ + static const std::string SIP_REGISTER_SERVER; + std::string getSipRegisterServer() const; + + static const std::string SIP_REGISTER_PORT; + int getSipRegisterPort() const; + + static const std::string SIP_PROXY_SERVER; + std::string getSipProxyServer() const; + + static const std::string SIP_PROXY_PORT; + int getSipProxyPort() const; + + static const std::string SIP_REALM; + std::string getSipRealm() const; + + static const std::string SIP_SIMPLE_SUPPORT; + bool getSipSimpleSupport() const; + + static const std::string SIP_AUDIOTESTCALL_KEY; + std::string getSipAudioTestCall() const; + + static const std::string SIP_VIDEOTESTCALL_KEY; + std::string getSipVideoTestCall() const; + + /** @} */ + + /** + * @name Sip Options + * @{ + */ + static const std::string SIP_REGISTER_TIMEOUT; + int getSipRegisterTimeOut() const; + + static const std::string SIP_PUBLISH_TIMEOUT; + int getSipPublishTimeOut() const; + + static const std::string SIP_USE_OPTIONS; + bool getSipUseOptions() const; + + static const std::string SIP_P2P_PRESENCE; + bool getSipP2pPresence() const; + + static const std::string SIP_CHAT_WITHOUT_PRESENCE; + bool getSipChatWithoutPresence() const; + /** @} */ + + /** + * @name Profile Methods + * @{ + */ + + /** Gets the name of the last used UserProfile. */ + static const std::string PROFILE_LAST_USED_NAME_KEY; + std::string getProfileLastUsedName() const; + + /** Profile all widget enabled. */ + static const std::string PROFILE_ALL_KEY; + bool getProfileAll() const; + + /** Profile window width. */ + static const std::string PROFILE_WIDTH_KEY; + int getProfileWidth() const; + + /** Profile window height. */ + static const std::string PROFILE_HEIGHT_KEY; + int getProfileHeight() const; + + /** Profile window position X. */ + static const std::string PROFILE_POSX_KEY; + int getProfilePosX() const; + + /** Profile window position Y. */ + static const std::string PROFILE_POSY_KEY; + int getProfilePoxY() const; + + /** @} */ + + /** + * @name Call Forwarding Methods + * @{ + */ + + /** Call forward mode. */ + static const std::string CALL_FORWARD_MODE_KEY; + std::string getCallForwardMode() const; + + /** Forward call phone number 1. */ + static const std::string CALL_FORWARD_PHONENUMBER1_KEY; + std::string getCallForwardPhoneNumber1() const; + + /** Forward call phone number 2. */ + static const std::string CALL_FORWARD_PHONENUMBER2_KEY; + std::string getCallForwardPhoneNumber2() const; + + /** Forward call phone number 3. */ + static const std::string CALL_FORWARD_PHONENUMBER3_KEY; + std::string getCallForwardPhoneNumber3() const; + + /** Active voice mail. */ + static const std::string VOICE_MAIL_ACTIVE_KEY; + bool getVoiceMailActive() const; + + /** @} */ + + /** + * @name General Settings Methods + * @{ + */ + + /** Automatically start QuteCom when computer starts. */ + static const std::string GENERAL_AUTOSTART_KEY; + bool getGeneralAutoStart() const; + + /** Start in background mode. */ + static const std::string GENERAL_STARTBACKGROUNDMODE_KEY; + bool getGeneralStartBackgroundMode() const; + + /** Start a free call if applicable. */ + static const std::string GENERAL_CLICK_START_FREECALL_KEY; + bool getGeneralClickStartFreeCall() const; + + /** Start a chat-only when applicable. */ + static const std::string GENERAL_CLICK_START_CHAT_KEY; + bool getGeneralClickStartChat() const; + + /** Call cell phone or land line if contact not available. */ + static const std::string GENERAL_CLICK_CALL_CELLPHONE_KEY; + bool getGeneralClickCallCellPhone() const; + + /** Show me as away when I am inactive for. */ + static const std::string GENERAL_AWAY_TIMER_KEY; + static const int NO_AWAY_TIMER = -1; + int getGeneralAwayTimer() const; + + /** Show / Hide groups in the contacts list. */ + static const std::string GENERAL_SHOW_GROUPS_KEY; + bool getShowGroups() const; + + /** Show / Hide offline contacts in the contacts list. */ + static const std::string GENERAL_SHOW_OFFLINE_CONTACTS_KEY; + bool getShowOfflineContacts() const; + + /** + * The protocol used to create hyperlinks: For example in + * 'qutecom://someone', 'qutecom' is the protocol. + */ + static const std::string GENERAL_HYPERLINKPROTOCOL_KEY; + std::string getHyperlinkProtocol() const; + + /** The toolbar mode. See config.xml for possible values. */ + static const std::string GENERAL_TOOLBARMODE_KEY; + std::string getToolBarMode() const; + + /** @} */ + + /** + * @name Appearance Methods + * @{ + */ + static const std::string APPEARANCE_CHATTHEME_KEY; + std::string getChatTheme() const; + + static const std::string APPEARANCE_CHATTHEMEVARIANT_KEY; + std::string getChatThemeVariant() const; + /** @} */ + + /** ISO 639 code of the current language for translating QuteCom. */ + static const std::string LANGUAGE_KEY; + static const std::string LANGUAGE_AUTODETECT_KEYVALUE; + std::string getLanguage() const; + + /** + * @name Notification Settings Methods + * @{ + */ + + /** Shows toaster for incoming calls. */ + static const std::string NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY; + bool getNotificationShowToasterOnIncomingCall() const; + + /** Shows toaster for incoming chats. */ + static const std::string NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY; + bool getNotificationShowToasterOnIncomingChat() const; + + /** Shows toaster when a contact is turning online. */ + static const std::string NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY; + bool getNotificationShowToasterOnContactOnline() const; + + /** Do not show any toaster or window when in do not disturb mode. */ + static const std::string NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY; + bool getNotificationDoNotDisturbNoWindow() const; + + /** Switch off audio notifications when in do not disturb mode mode. */ + static const std::string NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY; + bool getNotificationDoNotDisturbNoAudio() const; + + /** Do not show any call toaster when in away mode. */ + static const std::string NOTIFICATION_AWAY_NO_WINDOW_KEY; + bool getNotificationAwayNoWindow() const; + + /** Switch off audio notifications when in away mode. */ + static const std::string NOTIFICATION_AWAY_NO_AUDIO_KEY; + bool getNotificationAwayNoAudio() const; + + /** @} */ + + /** + * @name Privacy Methods + * @{ + */ + + /** Allow calls from: anyone. */ + static const std::string PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY; + bool getPrivacyAllowCallFromAnyone() const; + + /** Allow calls from: only people from my contact list. */ + static const std::string PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY; + bool getPrivacyAllowCallOnlyFromContactList() const; + + /** Allow chats from: anyone. */ + static const std::string PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY; + bool getPrivacyAllowChatsFromAnyone() const; + + /** Allow chats from: only people from my contact list. */ + static const std::string PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY; + bool getPrivacyAllowChatOnlyFromContactList() const; + + /** When I sign into QuteCom: always sign in as invisible. */ + static const std::string PRIVACY_SIGN_AS_INVISIBLE_KEY; + bool getPrivacySignAsInvisible() const; + + /** @} */ + + /** + * @name Video Methods + * @{ + */ + + static const std::string VIDEO_ENABLE_KEY; + bool getVideoEnable() const; + + static const std::string VIDEO_WEBCAM_DEVICE_KEY; + std::string getVideoWebcamDevice() const; + + static const std::string VIDEO_QUALITY_KEY; + std::string getVideoQuality() const; + + static const std::string VIDEO_ENABLE_XVIDEO_KEY; + bool getXVideoEnable() const; + + static const std::string VIDEO_ENABLE_FLIP_KEY; + bool getVideoFlipEnable() const; + + /** @} */ + + /** + * @name Path Methods + * @{ + */ + + /** + * Location of configuration files on the hard disk. + * This is not stored in the config file. + */ + static void setConfigDir(const std::string&); + static std::string getConfigDir(); + + /** Last location where a chat history has benn saved */ + static const std::string LAST_CHAT_HISTORY_SAVE_DIR_KEY; + std::string getLastChatHistorySaveDir() const; + + static const std::string APPLICATION_ICON_PATH; + std::string getApplicationIconPath() const; + + /** @} */ + + /** + * @name Other Methods + * @{ + */ + + /** Enables Internet Explorer ActiveX support (relevant only under Windows). */ + static const std::string IEACTIVEX_ENABLE_KEY; + bool getIEActiveXEnable() const; + + /** + * Returns the authorized domains that can pass commands to the softphone. + * @see CommandServer + */ + static const std::string CMDSERVER_AUTHORIZEDDOMAINS_KEY; + StringList getCmdServerAuthorizedDomains() const; + + /** @} */ + + /** + * @name File Transfer Options + * @{ + */ + + /** Download folder. */ + static const std::string FILETRANSFER_DOWNLOAD_FOLDER_KEY; + std::string getFileTransferDownloadFolder() const; + + /** Path to the last uploaded file. */ + static const std::string FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY; + std::string getLastUploadedFileFolder() const; + + /** @} */ + + /** + * @name Linux Options + * @{ + */ + + /** Prefered browser. */ + static const std::string LINUX_PREFERED_BROWSER_KEY; + std::string getLinuxPreferedBrowser() const; + + /** @} */ + + /** + * @name Security Options + * @{ + */ + + /** Call encryption mode. */ + static const std::string CALL_ENCRYPTION_MODE_KEY; + bool getCallEncryptionMode() const; + + /** @} */ + + + /** + * @name Urls + * @{ + */ + static const std::string URL_ACCOUNTCREATION_KEY; + std::string getAccountCreationUrl() const; + + static const std::string URL_FORUM_KEY; + std::string getForumUrl() const; + + static const std::string URL_CALLOUT_KEY; + std::string getCalloutUrl() const; + + static const std::string URL_SMS_KEY; + std::string getSmsUrl() const; + + static const std::string URL_VOICEMAIL_KEY; + std::string getVoiceMailUrl() const; + + static const std::string URL_EXTERNALDIRECTORY_KEY; + std::string getExternalDirectoryUrl() const; + + static const std::string URL_INTERNALDIRECTORY_KEY; + std::string getInternalDirectoryUrl() const; + + static const std::string URL_FAQ_KEY; + std::string getFaqUrl() const; + + static const std::string URL_ACCOUNT_KEY; + std::string getAccountUrl() const; + + static const std::string URL_BUYQUTECOMS_KEY; + std::string getBuyQuteComsUrl() const; + + static const std::string URL_DOWNLOAD_KEY; + std::string getDownloadUrl() const; + + static const std::string URL_PHONENUMBER_KEY; + std::string getPhoneNumberUrl() const; + + static const std::string URL_WIKI_KEY; + std::string getWikiUrl() const; + + static const std::string URL_LOSTPASSWORD_KEY; + std::string getLostPasswordUrl() const; + + static const std::string URL_LAUNCHPAD_KEY; + std::string getLaunchpadUrl() const; + + static const std::string URL_HOME_HTTP_KEY; + std::string getHttpHomeUrl() const; + + static const std::string URL_HOME_HTTPS_KEY; + std::string getHttpsHomeUrl() const; + + static const std::string URL_COMPANYWEBSITE_KEY; + std::string getCompanyWebSiteUrl() const; + + /** @} */ + + /** + * @name Feature Methods + * @{ + */ + static const std::string FEATURE_SMS_KEY; + bool getSmsFeatureEnabled() const; + + static const std::string FEATURE_AUDIOCONFERENCE_KEY; + bool getAudioConferenceFeatureEnabled() const; + + static const std::string SIP_USE_TYPING_STATE; + bool getSipUseTypingState() const; + /** @} */ + + /** + * @name translation Methods + * @{ + */ + + static const std::string TRANSLATION_SENT_KEY; + std::string getTranslationSent() const; + + static const std::string TRANSLATION_RECEIVED_KEY; + std::string getTranslationReceived() const; + +private: + + /** Name of this configuration. */ + std::string _name; + + static std::string _configDir; +}; + +#endif //OWCONFIG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigImporter.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigImporter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigImporter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigImporter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,1062 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConfigImporter.h" + +#include "Config.h" +#include "ConfigManager.h" + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +using namespace std; + +typedef struct telNumber_s { + string key; + string value; +} telNumber_t; + +typedef std::list telNumberList; +typedef std::list::iterator telNumberIt; + +typedef struct address_s { + string street; + string city; + string post_code; + string state; + string country; +} address_t; + +typedef struct birthday_s { + int day; + int month; + int year; +} birthday_t; + +#define MALE 0 +#define FEMALE 1 +#define UNKNOWN 2 + +typedef struct vcard_s { + string id; + string fname; + string lname; + int gender; + string company; + string website; + birthday_t birthday; + string note; + address_t address; + telNumberList numbers; + StringList emails; + string owner; + bool blocked; +} vcard_t; + +typedef std::list vcardList; +typedef std::list::iterator vcardIt; + +static const char * HOME_NUMBER_KEY = "home"; +static const char * WORK_NUMBER_KEY = "work"; +static const char * CELL_NUMBER_KEY = "cell"; +static const char * FAX_NUMBER_KEY = "fax"; +static const char * OTHER_NUMBER_KEY = "other"; + +telNumber_t * createNewNodeNumber(const std::string & key, const std::string & value) { + telNumber_t * number = new telNumber_t(); + + memset(number, 0, sizeof(telNumber_t)); + number->key = key; + number->value = value; + + return number; +} + +StringList mySplit(const std::string & str, char sep) { + string word; + StringList wordList; + istringstream strStream(str); + + while (std::getline(strStream, word, sep)) { + wordList += word; + } + + return wordList; +} + +static void initVcard(vcard_t * mVcard) { + if (mVcard) { + mVcard->gender = UNKNOWN; + mVcard->blocked = false; + mVcard->birthday.day = 1; + mVcard->birthday.month = 1; + mVcard->birthday.year = 1900; + } +} + +static const int CONFIG_UNKNOWN = 0; +static const int CONFIG_VERSION1 = 1; +static const int CONFIG_VERSION2 = 2; +static const int CONFIG_VERSION3 = 3; +static const int CONFIG_VERSION4 = 4; +static const int CONFIG_VERSION5 = 5; +static const int CONFIG_VERSION6 = 6; +static const int CONFIG_VERSION7 = 7; +static const int CONFIG_VERSION8 = 8; +static const int CONFIG_VERSION9 = 9; +static const int CONFIG_VERSION10 = 10; +static const int CONFIG_VERSION11 = 11; +static const int CONFIG_VERSION12 = 12; +static const int CONFIG_VERSION13 = 13; +static const int CONFIG_VERSION14 = 14; +static const int CONFIG_VERSION15 = 15; + +static const std::string USERPROFILE_FILENAME = "userprofile.xml"; +static const std::string USERCONFIG_FILENAME = "user.config"; +static const std::string IMACCOUNTS_FILENAME = "imaccounts.xml"; +static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; +static const std::string NEW_HISTORY_FILENAME = "history.xml"; +static const std::string OLD_HISTORY_FILENAME = "_history"; +static const std::string CONFIG_FILENAME = "config.xml"; +static const std::string FAKE_LOGIN = "**fake_identity**"; +static const std::string FAKE_PASSWORD = "**fake_password**"; +static const std::string CONTACT_PREFIX = "#IMPORTED_CONTACT#"; + +void ConfigImporter::importConfig() { + Config& config = ConfigManager::getInstance().getCurrentConfig(); + int systemVersion = boost::any_cast( config.getDefaultValue(Config::CONFIG_VERSION_KEY) ); + int localVersion = detectLastVersion(); + + if (localVersion != CONFIG_UNKNOWN && localVersion < systemVersion) { + if (localVersion == CONFIG_VERSION1) { + importConfigFromV1toV3(); + localVersion = CONFIG_VERSION3; + } + + if (localVersion == CONFIG_VERSION2) { + importConfigFromV2toV3(); + localVersion = CONFIG_VERSION3; + } + + if (localVersion == CONFIG_VERSION3) { + importConfigFromV3toV4(); + localVersion = CONFIG_VERSION4; + } + + if (localVersion == CONFIG_VERSION4) { + importConfigFromV4toV5(); + localVersion = CONFIG_VERSION5; + } + + if (localVersion == CONFIG_VERSION5) { + importConfigFromV5toV6(); + localVersion = CONFIG_VERSION6; + } + + if (localVersion == CONFIG_VERSION6) { + importConfigFromV6toV7(); + localVersion = CONFIG_VERSION7; + } + + if (localVersion == CONFIG_VERSION7) { + importConfigFromV7toV8(); + localVersion = CONFIG_VERSION8; + } + + if (localVersion == CONFIG_VERSION8) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION9; + } + + if (localVersion == CONFIG_VERSION9) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION10; + } + + if (localVersion == CONFIG_VERSION10) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION11; + } + + if (localVersion == CONFIG_VERSION11) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION12; + } + + if (localVersion == CONFIG_VERSION12) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION13; + } + + if (localVersion == CONFIG_VERSION13) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION14; + } + + if (localVersion == CONFIG_VERSION14) { + // Nothing to do, just bump the version number + localVersion = CONFIG_VERSION15; + } + + if (localVersion < systemVersion) { + LOG_FATAL("importer: config=" + String::fromNumber(localVersion) + + " failed to reach config=" + String::fromNumber(systemVersion)); + } + + // Set the new version number + Settings settings = readConfigFile(); + settings.set(Config::CONFIG_VERSION_KEY, systemVersion); + writeConfigFile(settings); + } +} + +unsigned ConfigImporter::detectLastVersion() { + string ConfigPathV1 = getQuteComClassicConfigPath(); + string ConfigPathV2 = Config::getConfigDir(); + + bool dirV1Exists = !ConfigPathV1.empty() + && File::exists(ConfigPathV1.substr(0, ConfigPathV1.size() - 1)); + bool dirV2Exists = !ConfigPathV2.empty() + && File::exists(ConfigPathV2.substr(0, ConfigPathV2.size() - 1)); + + if (dirV2Exists) { + if (File::exists(ConfigPathV2 + "profiles")) { + + std::string configFilename = ConfigPathV2 + CONFIG_FILENAME; + if (!File::exists(configFilename)) { + return CONFIG_UNKNOWN; + } + Settings settings = readConfigFile(); + if (settings.contains(Config::CONFIG_VERSION_KEY)) { + return settings.getIntegerKeyValue(Config::CONFIG_VERSION_KEY); + } else { + // If the config version does not exist, it means that the + // config is older than version 4. + return CONFIG_VERSION3; + } + } else if (File::exists(ConfigPathV2 + "user.config")) { + return CONFIG_VERSION2; + } else if (dirV1Exists) { + return CONFIG_VERSION1; + } + } else if (dirV1Exists) { + return CONFIG_VERSION1; + } + + return CONFIG_UNKNOWN; +} + +string ConfigImporter::getQuteComClassicConfigPath() { + string result; + +#if defined(OS_WINDOWS) + result = File::convertPathSeparators(Path::getHomeDirPath() + "wengo/"); +#elif defined(OS_LINUX) + result = File::convertPathSeparators(Path::getHomeDirPath() + ".wengo/"); +#endif + + return result; +} + +/** + * Works like std::getline() but will remove any ending '\r'. This is necessary + * because the QuteCom Classic creates files ending with '\r\n', regardless + * of the platform + */ +static void getStrippedLine(std::ifstream& stream, std::string& line) { + std::getline(stream, line); + if (line[line.size() - 1] == '\r') { + line = line.substr(0, line.size() - 1); + } +} + +bool ConfigImporter::classicVcardParser(const string & vcardFile, void * structVcard) { + vcard_t * mVcard = (vcard_t *) structVcard; + std::ifstream fileStream; + string lastLine; + + fileStream.open(vcardFile.c_str()); + if (!fileStream) { + LOG_ERROR("cannot open the file: " + vcardFile); + return false; + } + + getStrippedLine(fileStream, lastLine); + if (lastLine != "BEGIN:VCARD") { + return false; + } + + String key, value, tmp; + + getStrippedLine(fileStream, tmp); + + while (!lastLine.empty()) { + int pos = lastLine.find(":", 0); + key = lastLine.substr(0, pos); + value = lastLine.substr(pos + 1, lastLine.length() - (pos + 1)); + + if (!value.empty()) { + if (!key.compare("N")) { + StringList mList = mySplit(value, ';'); + mVcard->lname = mList[0]; + mVcard->fname = mList[1]; + + if (!mList[4].compare("Mme.")) { + mVcard->gender = FEMALE; + } + else if (!mList[4].compare("Mr.")) { + mVcard->gender = MALE; + } + else { + mVcard->gender = UNKNOWN; + } + } + else if (!key.compare("TEL;TYPE=home")) { + mVcard->numbers.push_back(createNewNodeNumber(HOME_NUMBER_KEY, value)); + } + + else if (!key.compare("TEL;TYPE=work")) { + mVcard->numbers.push_back (createNewNodeNumber(WORK_NUMBER_KEY, value)); + } + + else if (!key.compare("TEL;TYPE=cell")) { + mVcard->numbers.push_back(createNewNodeNumber(CELL_NUMBER_KEY, value)); + } + + else if (!key.compare("TEL;TYPE=pref")) { + mVcard->id = CONTACT_PREFIX + value; + } + + else if (!key.compare("TEL;TYPE=fax")) { + mVcard->numbers.push_back(createNewNodeNumber(FAX_NUMBER_KEY, value)); + } + + else if (!key.compare("TEL;TYPE=other")) { + mVcard->numbers.push_back(createNewNodeNumber(OTHER_NUMBER_KEY, value)); + } + + else if (!key.compare("EMAIL")) { + mVcard->emails += value; + } + + else if (!key.compare("ORG")) { + mVcard->company = value; + } + + else if (!key.compare("URL")) { + mVcard->website = value; + } + + else if (!key.compare("BDAY")) { + StringList mList = mySplit(value, '-'); + mVcard->birthday.year = atoi(mList[0].c_str()); + mVcard->birthday.month = atoi(mList[1].c_str()); + mVcard->birthday.day = atoi(mList[2].c_str()); + } + else if (!key.compare("NOTE")) { + mVcard->note = value; + } + + else if (!key.compare("ADR;TYPE=home;TYPE=pref")) { + StringList mList = mySplit(value, ';'); + mVcard->address.street = mList[2]; + mVcard->address.city = mList[3]; + mVcard->address.state = mList[4]; + mVcard->address.post_code = mList[5]; + mVcard->address.country = mList[6]; + } + else { + LOG_DEBUG("KEY " + key + " not supported"); + } + } + + lastLine = tmp.trim(); + getStrippedLine(fileStream, tmp); + + if (!tmp.empty()) { + if (tmp.find(":", 0) == string::npos) { + lastLine += tmp.trim(); + getStrippedLine(fileStream, tmp); + } + } + } + + return true; +} + +bool ConfigImporter::classicXMLParser(const string & xmlFile, void *structVcard) { + vcard_t *mVcard = (vcard_t *) structVcard; + std::ifstream fileStream; + String lastLine; + + mVcard->blocked = false; + + fileStream.open(xmlFile.c_str()); + if (!fileStream) { + LOG_ERROR("cannot open the file: " + xmlFile); + return false; + } + + std::getline(fileStream, lastLine); + + while (!lastLine.empty()) { + lastLine = lastLine.trim(); + + if (!strncmp(lastLine.c_str(), "", 9)) { + int pos1 = lastLine.find_first_of('>'); + int pos2 = lastLine.find_last_of('<'); + string resp = ((String)lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); + + if (resp == "true") { + mVcard->blocked = true; + } + } + + std::getline(fileStream, lastLine); + } + + return true; +} + +string ConfigImporter::classicVCardToString(void *structVcard) { + vcard_t * mVcard = (vcard_t *) structVcard; + string res = "\n"; + + //Todo: look at ProfileXMLSerializer and try to use the same serializer + if (!mVcard->id.empty()) { + res += ("" + mVcard->id + "\n"); + } + + res += "\n"; + if (!mVcard->fname.empty()) { + res += ("fname + "]]>\n"); + } + if (!mVcard->lname.empty()) { + res += ("lname + "]]>\n"); + } + res += "\n"; + + if (mVcard->gender == MALE) { + res += ("male\n"); + } + else if (mVcard->gender == FEMALE) { + res += ("female\n"); + } + + if (!mVcard->website.empty()) { + res += ("" + mVcard->website + "\n"); + } + + if (mVcard->birthday.day && mVcard->birthday.month && mVcard->birthday.year) { + res += "\n\n"; + res += ("" + String::fromNumber(mVcard->birthday.day) + "\n"); + res += ("" + String::fromNumber(mVcard->birthday.month) + "\n"); + res += ("" + String::fromNumber(mVcard->birthday.year) + "\n"); + res += "\n\n"; + } + + if (!mVcard->company.empty()) { + res += "" + mVcard->company + "\n"; + } + + telNumberIt it; + for (it = mVcard->numbers.begin(); it != mVcard->numbers.end(); it++) { + if (!(*it)->key.compare("home") && !((*it)->value.empty())) { + res += "" + (*it)->value + "\n"; + } + else if (!(*it)->key.compare("work") && !((*it)->value.empty())) { + res += "" + (*it)->value + "\n"; + } + else if (!(*it)->key.compare("cell") && !((*it)->value.empty())) { + res += "" + (*it)->value + "\n"; + } + else if (!(*it)->key.compare("fax") && !((*it)->value.empty())) { + res += "" + (*it)->value + "\n"; + } + } + + res += "
\n"; + if (!mVcard->address.street.empty()) { + res += ("address.street + "]]>\n"); + } + if (!mVcard->address.city.empty()) { + res += ("address.city + "]]>\n"); + } + if (!mVcard->address.state.empty()) { + res += ("address.state + "]]>\n"); + } + if (!mVcard->address.post_code.empty()) { + res += ("address.post_code + "]]>\n"); + } + if (!mVcard->address.country.empty()) { + res += ("address.country + "]]>\n"); + } + res += "
\n"; + + if (!mVcard->id.empty()) { + res += "\n"; + res += ("" + mVcard->id + "\n"); + res += ("" + mVcard->owner + ""); + res += "\n"; + } + + if (mVcard->emails.size() >= 1 && !mVcard->emails[0].empty()) { + res += ("" + mVcard->emails[0] + "\n"); + } + if (mVcard->emails.size() >= 2 && !mVcard->emails[1].empty()) { + res += ("" + mVcard->emails[1] + "\n"); + } + if (mVcard->emails.size() >= 3 && !mVcard->emails[2].empty()) { + res += ("" + mVcard->emails[2] + "\n"); + } + + if (!mVcard->note.empty()) { + res += ("note + "]]>\n"); + } + + res += ("\n"); + + res += "
\n"; + return res; +} + +void ConfigImporter::addContactDetails(Contact & contact, void * structVcard) { + vcard_t * mVcard = (vcard_t *) structVcard; + + contact.setFirstName(mVcard->fname); + contact.setLastName(mVcard->lname); + contact.setCompany(mVcard->company); + contact.setBirthdate(Date(mVcard->birthday.day, mVcard->birthday.month, mVcard->birthday.year)); + contact.setNotes(mVcard->note); + contact.setWebsite(mVcard->website); + if (!mVcard->address.city.empty()) { + StreetAddress adress; + adress.setStreet(mVcard->address.street); + adress.setCity(mVcard->address.city); + adress.setZipCode(mVcard->address.post_code); + adress.setStateProvince(mVcard->address.state); + adress.setCountry(mVcard->address.country); + contact.setStreetAddress(adress); + } + + if (mVcard->gender != UNKNOWN) { + contact.setSex(mVcard->gender == MALE ? EnumSex::SexMale : EnumSex::SexFemale); + } + + telNumberIt it; + for (it = mVcard->numbers.begin(); it != mVcard->numbers.end(); it++) { + if (!(*it)->key.compare(HOME_NUMBER_KEY) && !((*it)->value.empty())) { + contact.setHomePhone((*it)->value); + } + else if (!(*it)->key.compare(WORK_NUMBER_KEY) && !((*it)->value.empty())) { + contact.setWorkPhone((*it)->value); + } + else if (!(*it)->key.compare(CELL_NUMBER_KEY) && !((*it)->value.empty())) { + contact.setMobilePhone((*it)->value); + } + else if (!(*it)->key.compare(FAX_NUMBER_KEY) && !((*it)->value.empty())) { + contact.setFax((*it)->value); + } + else if (!(*it)->key.compare(OTHER_NUMBER_KEY) && !((*it)->value.empty())) { + contact.setOtherPhone((*it)->value); + } + } + + if (mVcard->emails.size() >= 1 && !mVcard->emails[0].empty()) { + contact.setPersonalEmail(mVcard->emails[0]); + } + if (mVcard->emails.size() >= 2 && !mVcard->emails[1].empty()) { + contact.setWorkPhone(mVcard->emails[1]); + } + if (mVcard->emails.size() >= 3 && !mVcard->emails[2].empty()) { + contact.setOtherPhone(mVcard->emails[2]); + } +} + +bool ConfigImporter::importContactsFromV1toV3(const string & fromDir, UserProfile & userProfile) { + File mDir(fromDir); + StringList fileList = mDir.getFileList(); + ContactList & contactList = userProfile.getContactList(); + + contactList.addContactGroup("Classic"); + + IMAccountList imAccountList = + userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolQuteCom); + + if (!imAccountList.size()) { + return false; + } + + for (unsigned i = 0; i < fileList.size(); i++) { + File mFile(fromDir + fileList[i]); + string Id = fileList[i].substr(0, fileList[i].find("_", 0)); + vcard_t mVcard; + + initVcard(&mVcard); + if (!mFile.getExtension().compare("vcf")) { + if (classicVcardParser(fromDir + fileList[i], &mVcard) == false) { + continue; + } + + int extPos = fileList[i].find_last_of('.'); + string fileWoExt = fileList[i].substr(0, extPos + 1); + classicXMLParser(fromDir + fileWoExt + "xml", &mVcard); + + IMContact imContact(*imAccountList.begin(), mVcard.id); + Contact & contact = contactList.createContact(); + contact.setGroupId(contactList.getContactGroupIdFromName("Classic")); + addContactDetails(contact, &mVcard); + contact.addIMContact(imContact); + } + } + return true; +} + +typedef struct last_user_s { + string login; + string password; + bool auto_login; +} last_user_t; + +void * ConfigImporter::getLastQuteComUser(const std::string & configUserFile, int version) { + std::ifstream fileStream; + String lastLine; + + last_user_t * lastUser = new last_user_t(); + fileStream.open(configUserFile.c_str()); + if (!fileStream) { + LOG_ERROR("cannot open the file: " + configUserFile); + return NULL; + } + + std::getline(fileStream, lastLine); + + while (!lastLine.empty()) { + lastLine = lastLine.trim(); + + if (!strncmp(lastLine.c_str(), "", 7)) { + int pos1, pos2; + if (version == CONFIG_VERSION2) { + pos1 = lastLine.find_first_of('>'); + pos2 = lastLine.find_last_of('<'); + } else { + pos2 = lastLine.find_first_of(']'); + pos1 = lastLine.find_last_of('['); + } + + lastUser->login = ((String)lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); + } + else if (!strncmp(lastLine.c_str(), "", 10)) { + int pos1, pos2; + if (version == CONFIG_VERSION2) { + pos1 = lastLine.find_first_of('>'); + pos2 = lastLine.find_last_of('<'); + } else { + pos2 = lastLine.find_first_of(']'); + pos1 = lastLine.find_last_of('['); + } + + lastUser->password = ((String) lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); + } + else if (!strncmp(lastLine.c_str(), "", 11)) { + int pos1 = lastLine.find_first_of('>'); + int pos2 = lastLine.find_last_of('<'); + string resp = ((String) lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); + + if (resp == (version == CONFIG_VERSION2 ? "1" : "true")) { + lastUser->auto_login = true; + } else { + lastUser->auto_login = false; + } + } + + std::getline(fileStream, lastLine); + } + + return lastUser; +} + +bool ConfigImporter::importConfigFromV1toV3() { + string classicPath = getQuteComClassicConfigPath(); + File mDir(classicPath); + last_user_t * lastUser = (last_user_t *) getLastQuteComUser(classicPath + USERCONFIG_FILENAME, CONFIG_VERSION1); + if (lastUser) { + UserProfile userProfile; + QuteComAccount wAccount(lastUser->login, lastUser->password, true); + userProfile.setSipAccount(wAccount, false); + + // An SSO request was made here before. + // The SSO request was made to get the SIP identity of the user and link QuteCom contacts to this id. + // Faking this SSO request. + IMAccount imAccount(FAKE_LOGIN, FAKE_PASSWORD, EnumIMProtocol::IMProtocolQuteCom); + userProfile.addIMAccount(imAccount); + + string sep = mDir.getPathSeparator(); + String oldPath = classicPath + lastUser->login + sep + "contacts" + sep; + importContactsFromV1toV3(oldPath, userProfile); + + String accountDir(userProfile.getProfileDirectory()); + File::createPath(accountDir); + UserProfileFileStorage1 fStorage(userProfile); + fStorage.save(userProfile.getName()); + + Settings settings = readConfigFile(); + settings.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); + writeConfigFile(settings); + } + + return true; +} + +bool ConfigImporter::importConfigFromV2toV3() { + String configDir = Config::getConfigDir(); + + FileReader file(configDir + USERPROFILE_FILENAME); + if (file.open()) { + string data = file.read(); + + last_user_t * lastUser = (last_user_t *) getLastQuteComUser(configDir + USERCONFIG_FILENAME, CONFIG_VERSION2); + if (lastUser == NULL) { + return false; + } + + UserProfile userProfile; + + UserProfileXMLSerializer serializer(userProfile); + serializer.unserialize(data); + + QuteComAccount wAccount(lastUser->login, Base64::decode(lastUser->password), true); + userProfile.setSipAccount(wAccount, false); + + // An SSO request was made here before. + // The SSO request was made to get the SIP identity of the user and link QuteCom contacts to this id. + // Faking this SSO request. + IMAccount imAccount(FAKE_LOGIN, FAKE_PASSWORD, EnumIMProtocol::IMProtocolQuteCom); + userProfile.addIMAccount(imAccount); + + //remove user.config and userprofile.xml from the main directory + File userConfigFile(configDir + USERCONFIG_FILENAME); + userConfigFile.remove(); + File userProfileFile(configDir + USERPROFILE_FILENAME); + userProfileFile.remove(); + + String accountDir(userProfile.getProfileDirectory()); + File::createPath(accountDir); + UserProfileFileStorage1 fStorage(userProfile); + fStorage.save(userProfile.getName()); + + File mFile1(configDir + IMACCOUNTS_FILENAME); + mFile1.move(accountDir + IMACCOUNTS_FILENAME, true); + + File mFile2(configDir + CONTACTLIST_FILENAME); + mFile2.move(accountDir + CONTACTLIST_FILENAME, true); + + File mDir(configDir); + StringList dirList = mDir.getFileList(); + for (unsigned i = 0; i < dirList.size(); i++) { + if (dirList[i].length() > OLD_HISTORY_FILENAME.length()) { + if (dirList[i].substr(dirList[i].length() - OLD_HISTORY_FILENAME.length()) == OLD_HISTORY_FILENAME) { + File mFile3(configDir + dirList[i]); + mFile3.move(accountDir + NEW_HISTORY_FILENAME, true); + break; + } + } + } + + Settings settings = readConfigFile(); + settings.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); + writeConfigFile(settings); + } + + return true; +} + +bool ConfigImporter::importConfigFromV3toV4() { + StringList list = UserProfileHandler::getUserProfileNames(); + std::string sipSimpleProtocol = EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSIPSIMPLE); + std::string qutecomProtocol = EnumIMProtocol::toString(EnumIMProtocol::IMProtocolQuteCom); + + for (StringList::const_iterator it = list.begin(); + it != list.end(); + ++it) { + + std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); + + //Replacing in imaccounts.xml + FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + iIMAccountsFile.open(); + String data = iIMAccountsFile.read(); + + data.replace(sipSimpleProtocol, qutecomProtocol); + + FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + oIMAccountsFile.write(data); + //// + + //Replacing in contactlist.xml + FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); + iContactListFile.open(); + data = iContactListFile.read(); + + data.replace(sipSimpleProtocol, qutecomProtocol); + + FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); + oContactListFile.write(data); + //// + } + + return true; +} + +bool ConfigImporter::importConfigFromV4toV5() { + std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; + //Replacing in config.xml + FileReader iConfigFile(configFilename); + iConfigFile.open(); + String data = iConfigFile.read(); + + // Fix video.quality key (int to string) + data.replace("0", + "VideoQualityNormal"); + data.replace("1", + "VideoQualityGood"); + data.replace("2", + "VideoQualityVeryGood"); + data.replace("3", + "VideoQualityExcellent"); + + FileWriter oConfigFile(configFilename); + oConfigFile.write(data); + //// + + return true; +} + +Settings ConfigImporter::readConfigFile() { + Settings settings; + std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; + FileReader iConfigFile(configFilename); + if (iConfigFile.open()) { + std::string data = iConfigFile.read(); + SettingsXMLSerializer serializer(settings); + serializer.unserialize(data); + } + return settings; +} + +void ConfigImporter::writeConfigFile(Settings& settings) { + std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; + SettingsXMLSerializer serializer(settings); + std::string data = serializer.serialize(); + + FileWriter oConfigFile(configFilename); + oConfigFile.write(data); +} + +bool ConfigImporter::importConfigFromV5toV6() { + Settings settings = readConfigFile(); + + // In V5 (QuteCom 2.0), the values of GENERAL_SHOW_OFFLINE_CONTACTS_KEY + // and GENERAL_SHOW_GROUPS_KEY were the opposite of their meaning. + if (settings.contains(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY)) { + settings.set(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY, + !settings.getBooleanKeyValue(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY) + ); + } + + if (settings.contains(Config::GENERAL_SHOW_GROUPS_KEY)) { + settings.set(Config::GENERAL_SHOW_GROUPS_KEY, + !settings.getBooleanKeyValue(Config::GENERAL_SHOW_GROUPS_KEY) + ); + } + + writeConfigFile(settings); + return true; +} + +bool ConfigImporter::importConfigFromV6toV7() { + StringList list = UserProfileHandler::getUserProfileNames(); + std::map accountMap; + + for (StringList::const_iterator it = list.begin(); + it != list.end(); + ++it) { + + std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); + + //Replacing AIM/ICQ in imaccounts.xml + FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + iIMAccountsFile.open(); + String data = iIMAccountsFile.read(); + static const std::string AIMICQACCSTR = ""; + static const std::string LOGINSTR = ""; + + std::string::size_type accPos = data.find(AIMICQACCSTR); + while (accPos != std::string::npos) { + // Gets login and protocol + std::string::size_type loginPos = data.find(LOGINSTR, accPos + AIMICQACCSTR.size()); + std::string login = data.substr(loginPos + LOGINSTR.size(), + data.find("", loginPos) - loginPos - LOGINSTR.size()); + bool beginsWithDigit = (String(login.substr(0, 1)).toInteger() != 0); + EnumIMProtocol::IMProtocol protocol = EnumIMProtocol::IMProtocolAIM; + if (beginsWithDigit) { + protocol = EnumIMProtocol::IMProtocolICQ; + } + //// + + // Changing protocol line + data.replaceInRange(accPos, AIMICQACCSTR.size(), "AIM/ICQ", EnumIMProtocol::toString(protocol)); + //// + + // Inserting account in map for changing contactlist.xml + accountMap[login] = protocol; + //// + + accPos += AIMICQACCSTR.size(); + accPos = data.find(AIMICQACCSTR); + } + + FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + oIMAccountsFile.write(data); + //// + + //Replacing in contactlist.xml + FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); + iContactListFile.open(); + data = iContactListFile.read(); + static const std::string AIMICQIMSTR = ""; + static const std::string ACCOUNTSTR = ""; + + std::string::size_type imPos = data.find(AIMICQIMSTR); + while (imPos != std::string::npos) { + std::string::size_type accountPos = data.find(ACCOUNTSTR, imPos + AIMICQIMSTR.size()); + std::string account = data.substr(accountPos + ACCOUNTSTR.size(), + data.find("", accountPos) - accountPos - ACCOUNTSTR.size()); + data.replaceInRange(imPos, AIMICQIMSTR.size(), "AIM/ICQ", EnumIMProtocol::toString(accountMap[account])); + + imPos += AIMICQIMSTR.size(); + imPos = data.find(AIMICQIMSTR); + } + + FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); + oContactListFile.write(data); + //// + } + + return true; +} + +bool ConfigImporter::importConfigFromV7toV8() { + StringList list = UserProfileHandler::getUserProfileNames(); + std::map accountMap; + + for (StringList::const_iterator it = list.begin(); + it != list.end(); + ++it) { + + std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); + + //Loading data + FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + iIMAccountsFile.open(); + String data = iIMAccountsFile.read(); + + IMAccountList imAccountList; + IMAccountListXMLSerializer1 imAccountListSerializer1(imAccountList); + imAccountListSerializer1.unserialize(data); + + FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); + iContactListFile.open(); + data = iContactListFile.read(); + + UserProfile userProfile; + ContactList contactList(userProfile); + ContactListXMLSerializer1 contactListSerializer1(contactList, imAccountList); + contactListSerializer1.unserialize(data); + + // Look for IMAccount and Contact link to the IMAccount with login FAKE_LOGIN. It has been introduced by a previous importation step + // to avoid the SSO request. + for (IMAccountList::iterator ait = imAccountList.begin(); ait != imAccountList.end(); ++ait) { + if (((*ait).getProtocol() == EnumIMProtocol::IMProtocolQuteCom) + && ((*ait).getLogin() == FAKE_LOGIN)) { + + // Update contact links to this IMAccount (update UUID and remove CONTACT_PREFIX). + for (ContactList::Contacts::iterator cit = const_cast(contactList.getContacts()).begin(); + cit != contactList.getContacts().end(); + cit++) { + IMContactSet & imContactSet = const_cast((*cit).getIMContactSet()); + for (IMContactSet::iterator imit = imContactSet.begin(); + imit != imContactSet.end(); + imit++) { + if (String((*imit).getContactId()).beginsWith(CONTACT_PREFIX)) { + const_cast(*imit).setContactId((*imit).getContactId().substr(CONTACT_PREFIX.size())); + const_cast(*imit).setIMAccount(&(*ait)); + } + } + } + + // Removing the IMAccount + imAccountList.erase(ait); + break; + } + } + //// + + IMAccountListXMLSerializer lastIMAccountListSerializer(imAccountList); + data = lastIMAccountListSerializer.serialize(); + FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); + oIMAccountsFile.write(data); + + ContactListXMLSerializer lastContactListSerializer(contactList, imAccountList); + data = lastContactListSerializer.serialize(); + FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); + oContactListFile.write(data); + //// + } + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigImporter.h qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigImporter.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigImporter.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigImporter.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,100 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONFIGIMPORTER_H +#define OWCONFIGIMPORTER_H + +#include +#include + +#include +#include + +#include + +class Contact; +class UserProfile; +class Settings; + +/** + * Imports the config from a previous QuteCom version. + * + * This class should not use Config getters and setters because at the time + * it's used the user config has not been loaded in Config yet. Any value set + * using a Config setter will be overwritten when user config is loaded. + * + * Instead of the Config getters and setters, you should use the static methods + * readConfigFile() and writeConfigFile() to read and write the *user* config + * to/from a Settings instance. + * + * @ingroup model + * @author Julien Bossart + * @author Philippe Bernery + */ +class ConfigImporter { +public: + + /** + * Import configuration from previous version of QuteCom + * If this method fails it makes a LOG_FATAL() -> assertion failed + */ + static void importConfig(); + +private: + static Settings readConfigFile(); + static void writeConfigFile(Settings&); + + /** + * Detects the last available version. + * + * @return the version of the last found version. + */ + static unsigned detectLastVersion(); + + static std::string getQuteComClassicConfigPath(); + + static bool classicVcardParser(const std::string & vcardFile, void * structVcard); + + static bool classicXMLParser(const std::string & xmlFile, void * structVcard); + + static std::string classicVCardToString(void * structVcard); + + static void * getLastQuteComUser(const std::string & configUserFile, int version); + + static bool importConfigFromV1toV3(); + + static bool importConfigFromV2toV3(); + + static bool importConfigFromV3toV4(); + + static bool importConfigFromV4toV5(); + + static bool importConfigFromV5toV6(); + + static bool importConfigFromV6toV7(); + + static bool importConfigFromV7toV8(); + + static bool importContactsFromV1toV3(const std::string & fromDir, UserProfile & userProfile); + + static void addContactDetails(Contact & contact, void * structVcard); + +}; + +#endif //OWCONFIGIMPORTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,54 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConfigManager.h" + +#include "Config.h" + +#include + +using namespace std; + +Mutex ConfigManager::_mutex; + +ConfigManager::ConfigManager() { + _currentConfig = new Config("default"); +} + +ConfigManager::~ConfigManager() { + OWSAFE_DELETE(_currentConfig); +} + +ConfigManager & ConfigManager::getInstance() { + Mutex::ScopedLock scopedLock(_mutex); + + static ConfigManager configManager; + return configManager; +} + +Config & ConfigManager::getCurrentConfig() const { + return *_currentConfig; +} + +void ConfigManager::resetCurrentConfig() { + Mutex::ScopedLock scopedLock(_mutex); + + OWSAFE_DELETE(_currentConfig); + _currentConfig = new Config("default"); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConfigManagerFileStorage.h" + +#include +#include +#include + +#include +#include + +static const std::string CONFIG_FILENAME = "config.xml"; + +ConfigManagerFileStorage::ConfigManagerFileStorage(ConfigManager & configManager) +: _configManager(configManager) { +} + +ConfigManagerFileStorage::~ConfigManagerFileStorage() { +} + +bool ConfigManagerFileStorage::loadSystemConfig(const std::string& systemDir) { + std::string systemData; + + FileReader systemFile(systemDir + CONFIG_FILENAME); + if (!systemFile.open()) { + LOG_ERROR("Could not open " + systemDir + CONFIG_FILENAME); + return false; + } + systemData = systemFile.read(); + ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); + return serializer.unserializeSystemSettings(systemData); +} + + +bool ConfigManagerFileStorage::loadUserConfig(const std::string& userDir) { + std::string userData; + FileReader userFile(userDir + CONFIG_FILENAME); + if (userFile.open()) { + userData = userFile.read(); + } + + ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); + return serializer.unserializeUserSettings(userData); +} + +bool ConfigManagerFileStorage::save() { + std::string userDir = _configManager.getCurrentConfig().getConfigDir(); + FileWriter file(userDir + CONFIG_FILENAME); + ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); + + file.write(serializer.serialize()); + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.h qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerFileStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONFIGMANAGERFILESTORAGE_H +#define CONFIGMANAGERFILESTORAGE_H + +#include + +class ConfigManager; + +/** + * Storage class for ConfigManager. File implementation. + * + * @ingroup model + * @author Philippe Bernery + */ +class ConfigManagerFileStorage { +public: + + ConfigManagerFileStorage(ConfigManager & configManager); + + virtual ~ConfigManagerFileStorage(); + + bool loadSystemConfig(const std::string& systemDir); + + bool loadUserConfig(const std::string& userDir); + + bool save(); + +private: + ConfigManager& _configManager; +}; + +#endif //CONFIGMANAGERFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManager.h qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONFIGMANAGER_H +#define CONFIGMANAGER_H + +#include +#include + +#include + +class Config; + +/** + * Manages configuration profiles. + * + * This class contains every available Config. + * There is at least one Config named "default" + * + * @see Config + * @ingroup model + * @author Philippe Bernery + * @author Tanguy Krotoff + */ +class ConfigManager { +public: + + static ConfigManager & getInstance(); + + /** + * Gets the current config. + * + * @return a reference to the current config + */ + Config & getCurrentConfig() const; + + /** + * Reset the current config. (delete and new) + */ + void resetCurrentConfig(); + +private: + + ConfigManager(); + + ~ConfigManager(); + + Config * _currentConfig; + + static Mutex _mutex; +}; + +#endif //CONFIGMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerStorage.h qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigManagerStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigManagerStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONFIGMANAGERSTORAGE_H +#define CONFIGMANAGERSTORAGE_H + +#include + +class ConfigManager; + +/** + * Storage interface for ConfigManager. + * + * @ingroup model + * @author Philippe Bernery + */ +class ConfigManagerStorage : public Storage { +public: + + ConfigManagerStorage(ConfigManager & configManager) + : _configManager(configManager) { } + + virtual ~ConfigManagerStorage() { } + +protected: + + ConfigManager & _configManager; +}; + +#endif //CONFIGMANAGERSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConfigXMLSerializer.h" + +#include "Config.h" + +ConfigXMLSerializer::ConfigXMLSerializer(Config & config) +: CascadingSettingsXMLSerializer(config) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/ConfigXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/ConfigXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONFIGXMLSERIALIZER_H +#define CONFIGXMLSERIALIZER_H + +#include + +class Config; + +/** + * Serialize a Config object. + * FIXME: Just a stub now, should be removed + * + * @author Philippe Bernery + */ +class ConfigXMLSerializer : public CascadingSettingsXMLSerializer { +public: + ConfigXMLSerializer(Config & config); +}; + +#endif //CONFIGXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Countries.h qutecom-2.2+dfsg1/qutecom/src/model/config/Countries.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Countries.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/Countries.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,304 @@ +/** + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef COUNTRIES_H +#define COUNTRIES_H + +/** + * A Country is the association of its ISO 3166-1 code + * + its english name + * + country calling code + * + * @see http://kropla.com/dialcode.htm + */ +struct Country { + + /** English country name. */ + std::string englishName; + + /** ISO 3166-1 code. */ + std::string iso3166Code; + + /** + * The country code is the national prefix to be used + * when dialing to that particular country from another country. + * Ex: +33 for France + */ + int nationalPrefix; +}; + +/** Number of countries available. */ +static const int COUNTRIES_SIZE = 250; + +/** + * Country list from ISO 3166-1. + * + * This list states the country names (official short names in English) in + * alphabetical order as given in ISO 3166-1 and the corresponding ISO + * 3166-1-alpha-2 code elements. The list is updated whenever a change to the + * official code list in ISO 3166-1 is effected by the ISO 3166/MA. It lists 240 + * official short names and code elements. One line of text contains one entry. + * + * @see http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html + * @author Tanguy Krotoff + */ +static const Country COUNTRIES[COUNTRIES_SIZE] = { + { "Afghanistan", "af", 93 }, + { "Albania", "al", 355 }, + { "Algeria", "dz", 213 }, + { "American Samoa", "as", 00 }, + { "Andorra", "ad", 376 }, + { "Angola", "ao", 244 }, + { "Anguilla", "ai", 00 }, + { "Antarctica", "aq", 672 }, + { "Antigua and Barbuda", "ag", 00 }, + { "Argentina", "ar", 00 }, + { "Armenia", "am", 00 }, + { "Aruba", "aw", 00 }, + { "Australia", "au", 00 }, + { "Austria", "at", 00 }, + { "Azerbaijan", "az", 00 }, + { "Bahamas", "bs", 00 }, + { "Bahrain", "bh", 00 }, + { "Bangladesh", "bd", 00 }, + { "Barbados", "bb", 00 }, + { "Belarus", "by", 00 }, + { "Belgium", "be", 00 }, + { "Belize", "bz", 00 }, + { "Benin", "bj", 00 }, + { "Bermuda", "bm", 00 }, + { "Bhutan", "bt", 00 }, + { "Bolivia", "bo", 00 }, + { "Bosnia and Herzegovina", "ba", 00 }, + { "Botswana", "bw", 00 }, + { "Bouvet Island", "bv", 00 }, + { "Brazil", "br", 00 }, + { "Brunei", "bn", 00 }, + { "Bulgaria", "bg", 00 }, + { "Burkina Faso", "bf", 00 }, + { "Burundi", "bi", 00 }, + { "Cambodia", "kh", 00 }, + { "Cameroon", "cm", 00 }, + { "Canada", "ca", 00 }, + { "Cape Verde", "cv", 00 }, + { "Cayman Islands", "ky", 00 }, + { "Central African Republic", "cf", 00 }, + { "Chad", "td", 00 }, + { "Chile", "cl", 00 }, + { "China", "cn", 00 }, + { "Christmas Island", "cx", 00 }, + { "Cocos (keeling) islands", "cc", 00 }, + { "Colombia", "co", 00 }, + { "Comoros", "km", 00 }, + { "Congo", "cg", 00 }, + { "Congo, The Democratic Republic of the", "cd", 00 }, + { "Cook Islands", "ck", 00 }, + { "Costa Rica", "cr", 00 }, + { "Cote d'Ivoire", "ci", 00 }, + { "Croatia", "hr", 00 }, + { "Cuba", "cu", 00 }, + { "Cyprus", "cy", 00 }, + { "Czech Republic", "cz", 00 }, + { "Denmark", "dk", 00 }, + { "Djibouti", "dj", 00 }, + { "Dominica", "dm", 00 }, + { "Dominican Republic", "do", 00 }, + { "Ecuador", "ec", 00 }, + { "Egypt", "eg", 00 }, + { "El Salvador", "sv", 00 }, + { "Equatorial Guinea", "gq", 00 }, + { "Eritrea", "er", 00 }, + { "Estonia", "ee", 00 }, + { "Ethiopia", "et", 00 }, + { "Falkland Islands (Malvinas)", "fk", 00 }, + { "Faroe Islands", "fo", 00 }, + { "Fiji", "fj", 00 }, + { "Finland", "fi", 00 }, + { "France", "fr", 33 }, + { "French Guiana", "gf", 00 }, + { "French Polynesia", "pf", 00 }, + { "French Southern Territories", "tf", 00 }, + { "Gabon", "ga", 00 }, + { "Gambia", "gm", 00 }, + { "Georgia", "ge", 00 }, + { "Germany", "de", 00 }, + { "Ghana", "gh", 00 }, + { "Gibraltar", "gi", 00 }, + { "Greece", "gr", 00 }, + { "Greenland", "gl", 00 }, + { "Grenada", "gd", 00 }, + { "Guadeloupe", "gp", 00 }, + { "Guam", "gu", 00 }, + { "Guatemala", "gt", 00 }, + { "Guernsey", " gg", 00 }, + { "Guinea", "gn", 00 }, + { "Guinea-Bissau", "gw", 00 }, + { "Guyana", "gy", 00 }, + { "Haiti", "ht", 00 }, + { "Heard Island and McDonald Islands", "hm", 00 }, + { "Holy See (Vatican City State)", "va", 00 }, + { "Honduras", "hn", 00 }, + { "Hong Kong", "hk", 00 }, + { "Hungary", "hu", 00 }, + { "Iceland", "is", 00 }, + { "India", "in", 00 }, + { "Indonesia", "id", 00 }, + { "Iran", "ir", 00 }, + { "Iraq", "iq", 00 }, + { "Ireland", "ie", 00 }, + { "Isle of Man", "im", 00 }, + { "Israel", "il", 00 }, + { "Italy", "it", 00 }, + { "Jamaica", "jm", 00 }, + { "Japan", "jp", 00 }, + { "Jersey", "je", 00 }, + { "jordan", "jo", 00 }, + { "Kazakhstan", "kz", 00 }, + { "Kenya", "ke", 00 }, + { "Kiribati", "ki", 00 }, + { "Korea, Democratic people's Republic of", "kp", 00 }, + { "Korea, Republic of", "kr", 00 }, + { "Kuwait", "kw", 00 }, + { "Kyrgyzstan", "kg", 00 }, + { "Lao people's Democratic Republic", "la", 00 }, + { "Latvia", "lv", 00 }, + { "Lebanon", "lb", 00 }, + { "Lesotho", "ls", 00 }, + { "Liberia", "lr", 00 }, + { "Libya", "ly", 00 }, + { "Liechtenstein", "li", 00 }, + { "Lithuania", "lt", 00 }, + { "Luxembourg", "lu", 00 }, + { "Macao", "mo", 00 }, + { "Macedonia", "mk", 00 }, + { "Madagascar", "mg", 00 }, + { "Malawi", "mw", 00 }, + { "Malaysia", "my", 00 }, + { "Maldives", "mv", 00 }, + { "Mali", "ml", 00 }, + { "Malta", "mt", 00 }, + { "Marshall Islands", "mh", 00 }, + { "Martinique", "mq", 00 }, + { "Mauritania", "mr", 00 }, + { "Mauritius", "mu", 00 }, + { "Mayotte", "yt", 00 }, + { "Mexico", "mx", 00 }, + { "Micronesia, Federated States of", "fm", 00 }, + { "Moldova", "md", 00 }, + { "Monaco", "mc", 00 }, + { "Mongolia", "mn", 00 }, + { "Montserrat", "ms", 00 }, + { "Morocco", "ma", 00 }, + { "Mozambique", "mz", 00 }, + { "Myanmar", "mm", 00 }, + { "Namibia", "na", 00 }, + { "Nauru", "nr", 00 }, + { "Nepal", "np", 00 }, + { "Netherlands", "nl", 00 }, + { "Netherlands Antilles", "an", 00 }, + { "New Caledonia", "nc", 00 }, + { "New Zealand", "nz", 00 }, + { "Nicaragua", "ni", 00 }, + { "Niger", "ne", 00 }, + { "Nigeria", "ng", 00 }, + { "Niue", "nu", 00 }, + { "Norfolk Island", "nf", 00 }, + { "Northern Mariana Islands", "mp", 00 }, + { "Norway", "no", 00 }, + { "Oman", "om", 00 }, + { "Pakistan", "pk", 00 }, + { "Palau", "pw", 00 }, + { "Palestinian Territory", "ps", 00 }, + { "Panama", "pa", 00 }, + { "Papua New Guinea", "pg", 00 }, + { "Paraguay", "py", 00 }, + { "Peru", "pe", 00 }, + { "Philippines", "ph", 00 }, + { "Pitcairn", "pn", 00 }, + { "Poland", "pl", 00 }, + { "Portugal", "pt", 00 }, + { "Puerto rico", "pr", 00 }, + { "Qatar", "qa", 00 }, + { "Reunion", "re", 00 }, + { "Romania", "ro", 00 }, + { "Russia", "ru", 00 }, + { "Rwanda", "rw", 00 }, + { "Saint Helena", "sh", 00 }, + { "Saint Kitts and Nevis", "kn", 00 }, + { "Saint Lucia", "lc", 00 }, + { "Saint Pierre and Miquelon", "pm", 00 }, + { "Saint Vincent and the Grenadines", "vc", 00 }, + { "Samoa", "ws", 00 }, + { "San marino", "sm", 00 }, + { "Sao Tome and Principe", "st", 00 }, + { "Saudi arabia", "sa", 00 }, + { "Senegal", "sn", 00 }, + { "Serbia and Montenegro", "cs", 00 }, + { "Seychelles", "sc", 00 }, + { "Sierra leone", "sl", 00 }, + { "Singapore", "sg", 00 }, + { "Slovakia", "sk", 00 }, + { "Slovenia", "si", 00 }, + { "Solomon islands", "sb", 00 }, + { "Somalia", "so", 00 }, + { "South Africa", "za", 00 }, + { "South Georgia and the South Sandwich Islands", "gs", 00 }, + { "Spain", "es", 00 }, + { "Sri Lanka", "lk", 00 }, + { "Sudan", "sd", 00 }, + { "Suriname", "sr", 00 }, + { "Svalbard and Jan Mayen", "sj", 00 }, + { "Swaziland", "sz", 00 }, + { "Sweden", "se", 00 }, + { "Switzerland", "ch", 00 }, + { "Syria", "sy", 00 }, + { "Taiwan", "tw", 00 }, + { "Tajikistan", "tj", 00 }, + { "Tanzania", "tz", 00 }, + { "Thailand", "th", 00 }, + { "Timor-Leste", "tl", 00 }, + { "Togo", "tg", 00 }, + { "Tokelau", "tk", 00 }, + { "Tonga", "to", 00 }, + { "Trinidad and Tobago", "tt", 00 }, + { "Tunisia", "tn", 00 }, + { "Turkey", "tr", 00 }, + { "Turkmenistan", "tm", 00 }, + { "Turks and Caicos Islands", "tc", 00 }, + { "Tuvalu", "tv", 00 }, + { "Uganda", "ug", 00 }, + { "Ukraine", "ua", 00 }, + { "United Arab Emirates", "ae", 00 }, + { "United Kingdom", "gb", 00 }, + { "United States", "us", 00 }, + { "Uruguay", "uy", 00 }, + { "Uzbekistan", "uz", 00 }, + { "Vanuatu", "vu", 00 }, + { "Venezuela", "ve", 00 }, + { "Vietnam", "vn", 00 }, + { "Virgin Islands, British", "vg", 00 }, + { "Virgin Islands, U.S.", "vi", 00 }, + { "Wallis and Futuna", "wf", 00 }, + { "Western Sahara", "eh", 00 }, + { "Yemen", "ye", 00 }, + { "Zambia", "zm", 00 }, + { "Zimbabwe", "zw", 00 } +}; + +#endif //COUNTRIES_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/EnumToolBarMode.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/EnumToolBarMode.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/EnumToolBarMode.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/EnumToolBarMode.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "EnumToolBarMode.h" + +// util +#include + +static TwoWayMap _twoWayMap; + +static void init() { + if (!_twoWayMap.empty()) { + return; + } + + _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeHidden, "Hidden"); + _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeIconsOnly, "IconsOnly"); + _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeTextUnderIcons, "TextUnderIcons"); +} + +std::string EnumToolBarMode::toString(EnumToolBarMode::ToolBarMode mode) { + init(); + return _twoWayMap.toSecond(mode); +} + +EnumToolBarMode::ToolBarMode EnumToolBarMode::toToolBarMode(const std::string & txt) { + init(); + return _twoWayMap.toFirst(txt); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/EnumToolBarMode.h qutecom-2.2+dfsg1/qutecom/src/model/config/EnumToolBarMode.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/EnumToolBarMode.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/EnumToolBarMode.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ENUMTOOLBARMODE_H +#define ENUMTOOLBARMODE_H + +#include + +class EnumToolBarMode { +public: + + enum ToolBarMode { + ToolBarModeHidden, + ToolBarModeIconsOnly, + ToolBarModeTextUnderIcons + }; + + static std::string toString(ToolBarMode mode); + + static ToolBarMode toToolBarMode(const std::string & string); +}; + +#endif // ENUMTOOLBARMODE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/LanguageList.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/LanguageList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/LanguageList.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/LanguageList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "LanguageList.h" + +#include "Languages.h" + +#include + +std::string LanguageList::getLanguageName(const std::string & iso639Code) { + std::string languageName; + for (int i = 0; i < LANGUAGES_SIZE; i++) { + Language lang = LANGUAGES[i]; + if (lang.iso639Code == iso639Code) { + languageName = lang.name; + break; + } + } + return languageName; +} + +std::string LanguageList::getEnglishLanguageName(const std::string & iso639Code) { + std::string englishLanguageName; + for (int i = 0; i < LANGUAGES_SIZE; i++) { + Language lang = LANGUAGES[i]; + if (lang.iso639Code == iso639Code) { + englishLanguageName = lang.englishName; + break; + } + } + return englishLanguageName; +} + +std::string LanguageList::getISO639Code(const std::string & languageName) { + std::string iso639Code; + for (int i = 0; i < LANGUAGES_SIZE; i++) { + Language lang = LANGUAGES[i]; + if (lang.name == languageName) { + iso639Code = lang.iso639Code; + break; + } + } + return iso639Code; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/LanguageList.h qutecom-2.2+dfsg1/qutecom/src/model/config/LanguageList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/LanguageList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/LanguageList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LANGUAGELIST_H +#define LANGUAGELIST_H + +#include +#include +#include + +/** + * Parses Languages.h + * + * @see Languages.h + * @author Tanguy Krotoff + */ +class LanguageList : NonCopyable { +public: + + /** + * Gets the language name given its ISO 639 Alpha-2 code. + * + * Warning! + * returns a UTF-8 encoded string. + * For Qt4, check QString::fromUtf8() + *
+	 * std::string tmp;
+	 * QString tmpUtf8 = QString::fromUtf8(tmp.c_str());
+	 * 
+ * + * @param iso639Code ISO 639 Alpha-2 code (e.g en, fr ect...) + * @return language name (e.g franais, english...) or empty string + */ + static std::string getLanguageName(const std::string & iso639Code); + + /** + * Gets the ISO 639 Alpha-2 code from the language name. + * + * Warning! + * Takes an UTF-8 encoded string. + * For Qt4, check QString::toUtf8() + *
+	 * Qstring tmp;
+	 * std::string tmpUtf8 = tmp.toUtf8().constData();
+	 * 
+ * + * @param languageName language name (e.g franais, english...) + * @return ISO 639 Alpha-2 code (e.g en, fr ect...) or empty string + */ + static std::string getISO639Code(const std::string & languageName); + + /** + * Gets the english language name given its ISO 639 Alpha-2 code. + * + * @param iso639Code ISO 639 Alpha-2 code (e.g en, fr ect...) + * @return english language name (e.g french, english...) or empty string + */ + static std::string getEnglishLanguageName(const std::string & iso639Code); + +private: +}; + +#endif //LANGUAGELIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Languages.h qutecom-2.2+dfsg1/qutecom/src/model/config/Languages.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/Languages.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/Languages.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,288 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef LANGUAGES_H +#define LANGUAGES_H + +/** A language is the association of its ISO 639 code + its name + its english name. */ +struct Language { + + /** ISO 639 Alpha-2 code. */ + std::string iso639Code; + + /** Original language name. */ + std::string name; + + /** English language name. */ + std::string englishName; +}; + + +/** + * List of all languages. + * + * Taken from wikipedia. + * + * Format: + * ISO 639 Alpha-2 code + * language name + * language name in english + * + * Originaly created on 31th october 2005 from revision 1.53 of Names.php + * + * @see http://cvs.sourceforge.net/viewcvs.py/wikipedia/phase3/languages/Names.php + * @see http://en.wikipedia.org/w/index.php?title=ISO_639 + * @author Tanguy Krotoff + */ +static const Language LANGUAGES[] = { + { "aa", "Afar", "Afar" }, + { "ab", "Аҧсуа", "Abkhazian" }, + { "af", "Afrikaans", "Afrikaans" }, + { "ak", "Akana", "Akan" }, + { "als", "Alemannisch", "Alemannic" }, + { "am", "አማርኛ", "Amharic" }, + { "an", "Aragonés", "Aragonese" }, + { "ang", "Anglo Saxon", "Old English" }, + { "ar", "العربية", "Arabic" }, + { "ar_SA", "المملكة العربية السعودية", "Arabic (Saudi Arabia)" }, + { "arc", "ܕܥܒܪܸܝܛ", "Aramaic" }, + { "as", "অসমীয়া", "Assamese" }, + { "ast", "Asturianu", "Asturian" }, + { "av", "Авар", "Avar" }, + { "ay", "Aymar", "Aymara" }, + { "az", "Azərbaycan", "Azerbaijani" }, + { "ba", "Башҡорт", "Bashkir" }, + { "bat_SMG", "Žemaitėška", "Samogitian" }, + { "be", "Беларуская", "Byelarussian" }, + { "bg", "Български", "Bulgarian" }, + { "bh", "भोजपुरी", "Bihara" }, + { "bi", "Bislama", "Bislama" }, + { "bm", "Bamanankan", "Bambara" }, + { "bn", "বাংলা", "Bengali" }, + { "bo", "བོད་ཡིག", "Tibetan" }, + { "br", "Brezhoneg", "Breton" }, + { "bs", "Bosanski", "Bosnian" }, + { "bug", "ᨅᨔ ᨕᨘᨁᨗ", "Buginese" }, + { "ca", "Català", "Catalan" }, + { "ce", "Нохчийн", "Chechen" }, + { "ceb", "Cebuano", "Cebuano" }, + { "ch", "Chamoru", "Chamorro" }, + { "cho", "Choctaw", "Choctaw" }, + { "chr", "ᏣᎳᎩ", "Cherokee" }, + { "chy", "Tsetsêhestâhese", "Cheyenne" }, + { "co", "Corsu", "Corsican" }, + { "cr", "Nehiyaw", "Cree" }, + { "cs", "Česky", "Czech" }, + { "csb", "Kaszëbsczi", "Cassubian" }, + { "cv", "Чӑваш", "Chuvash" }, + { "cy", "Cymraeg", "Welsh" }, + { "da", "Dansk", "Danish" }, + { "de", "Deutsch", "German" }, + { "dk", "Dansk", "Unused code currently redirecting to Danish da is correct for the language" }, + { "dv", "ދިވެހިބަސް", "Dhivehi" }, + { "dz", "ཇོང་ཁ", "Bhutani" }, + { "ee", "Ɛʋɛ", "Ewe" }, + { "el", "Ελληνικά", "Greek" }, + { "en", "English", "English" }, + { "en_GB", "English (British)", "English (British)" }, + { "eo", "Esperanto", "Esperanto" }, + { "es", "Español", "Spanish" }, + { "et", "Eesti", "Estonian" }, + { "eu", "Euskara", "Basque" }, + { "fa", "فارسی", "Persian" }, + { "ff", "Fulfulde", "Fulah" }, + { "fi", "Suomi", "Finnish" }, + { "fiu-vro", "Võro", "Võro" }, + { "fj", "Na Vosa Vakaviti", "Fijian" }, + { "fo", "Føroyskt", "Faroese" }, + { "fr", "Français", "French" }, + { "frp", "Arpitan", "Franco-Provençal/Arpitan" }, + { "fur", "Furlan", "Friulian" }, + { "fy", "Frysk", "Frisian" }, + { "ga", "Gaeilge", "Irish" }, + { "gd", "Gàidhlig", "Scots Gaelic" }, + { "gl", "Galego", "Gallegan" }, + { "gn", "Avañe - ẽ", "Guarani" }, + { "got", "ЌӰЌ࠰ЍŰЌڰЍİЌډ", "Gothic" }, + { "gsw", "Alemannisch", "Alemannic" }, + { "gu", "ગુજરાતી", "Gujarati" }, + { "gv", "Gaelg", "Manx" }, + { "ha", "هَوُسَ", "Hausa" }, + { "haw", "Hawai`i", "Hawaiian" }, + { "he", "עברית", "Hebrew" }, + { "hi", "हिन्दी", "Hindi" }, + { "ho", "Hiri Motu", "Hiri Motu" }, + { "hr", "Hrvatski", "Croatian" }, + { "ht", "Krèyol ayisyen", "Haitian common" }, + { "hu", "Magyar", "Hungarian" }, + { "hy", "Հայերեն", "Armenian" }, + { "hz", "Otsiherero", "Herero" }, + { "ia", "Interlingua", "Interlingua (IALA)" }, + { "id", "Bahasa Indonesia", "Indonesian" }, + { "ie", "Interlingue", "Interlingue (Occidental)" }, + { "ig", "Igbo", "Igbo" }, + { "ii", "ꆇꉙ", "Sichuan Yi" }, + { "ik", "Iñupiak", "Inupiak" }, + { "ilo", "Ilokano", "Ilokano" }, + { "io", "Ido", "Ido" }, + { "is", "Íslenska", "Icelandic" }, + { "it", "Italiano", "Italian" }, + { "iu", "ᐃᓄᒃᑎᑐᑦ", "Inuktitut" }, + { "ja", "日本語", "Japanese" }, + { "jbo", "Lojban", "Lojban" }, + { "jv", "Basa Jawa", "Javanese" }, + { "ka", "ქართული", "Georgian" }, + { "kg", "Kongo", "Kongo (FIXME!) should probaly be KiKongo or KiKoongo" }, + { "ki", "Gĩkũyũ", "Kikuyu correctness not guaranteed" }, + { "kj", "Kuanyama", "Kuanyama (FIXME!)" }, + { "kk", "қазақша", "Kazakh" }, + { "kl", "Kalaallisut", "Greenlandic" }, + { "km", "ភាសាខ្មែរ", "Cambodian" }, + { "kn", "ಕನ್ನಡ", "Kannada" }, + { "ko", "한국어", "Korean" }, + { "kr", "Kanuri", "Kanuri (FIXME!)" }, + { "ks", "कश्मीरी - (كشميري)", "Kashmiri" }, + { "ku", "Kurdî", "Kurdish" }, + { "kv", "Коми ", "Komi cyrillic is common script but also written in latin script" }, + { "kw", "Kernewek", "Cornish" }, + { "ky", "Kırgızca", "Kirghiz" }, + { "la", "Latina", "Latin" }, + { "lad", "Ladino", "Ladino" }, + { "lb", "Lëtzebuergesch", "Luxemburguish" }, + { "lg", "Luganda", "Ganda" }, + { "li", "Limburgs", "Limburgian" }, + { "lmo", "Lumbaart", "Lombard" }, + { "ln", "Lingala", "Lingala" }, + { "lo", "ລາວ", "Laotian" }, + { "lt", "Lietuvių", "Lithuanian" }, + { "lv", "Latviešu", "Latvian" }, + { "mg", "Malagasy", "Malagasy" }, + { "mh", "Ebon", "Marshallese" }, + { "mi", "Māori", "Maori" }, + { "minnan", "Bân-lâm-gú", "Min-nan (also zh-min-nan)" }, + { "mk", "Македонски", "Macedonian" }, + { "ml", "മലയാളം", "Malayalam" }, + { "mn", "Монгол", "Mongoloian" }, + { "mo", "Молдовеняскэ", "Moldovan" }, + { "mr", "मराठी", "Marathi" }, + { "ms", "Bahasa Melayu", "Malay" }, + { "mt", "bil-Malti", "Maltese" }, + { "mus", "Muscogee", "Creek should possibly be Muskogee" }, + { "my", "Myanmasa", "Burmese" }, + { "na", "Ekakairũ Naoero", "Nauruan" }, + { "nah", "Nahuatl", "Nahuatl en:Wikipedia writes Nahuatlahtolli while another form is Náhuatl" }, + { "nap", "Nnapulitano", "Neapolitan" }, + { "nb", "Norsk (bokmål)", "Norwegian (Bokmal)" }, + { "nds", "Plattdüütsch", "Low German or Low Saxon" }, + { "ne", "नेपाली", "Nepali" }, + { "ng", "Oshiwambo", "Ndonga" }, + { "nl", "Nederlands", "Dutch" }, + { "nn", "Norsk (nynorsk)", "Norwegian (Nynorsk)" }, + { "no", "Norsk (bokmål)", "Norwegian" }, + { "non", "Norrǿna", "Old Norse" }, + { "nv", "Diné bizaad", "Navajo" }, + { "ny", "Chi-Chewa", "Chichewa" }, + { "oc", "Occitan", "Occitan" }, + { "om", "Oromoo ", "Oromo" }, + { "or", "ଓଡ଼ିଆ", "Oriya" }, + { "os", "Иронау", "Ossetic" }, + { "pa", "ਪੰਜਾਬੀ", "Punjabi" }, + { "pam", "Pampangan", "Pampanga" }, + { "pih", "Norfuk - Pitkern", "Norfuk - Pitcairn - Norfolk" }, + { "pi", "पािऴ", "Pali" }, + { "pl", "Polski", "Polish" }, + { "ps", "پښتو", "Pashto" }, + { "pt", "Português", "Portuguese" }, + { "pt_BR", "Português do Brasil", "Brazilian Portuguese" }, + { "qu", "Runa Simi", "Quechua" }, + { "rm", "Rumantsch", "Raeto-Romance" }, + { "rn", "Kirundi", "Kirundi" }, + { "ro", "Română", "Romanian" }, + { "roa_RUP", "Armâneashti", "Aromanian" }, + { "ru", "Русский", "Russian" }, + { "rw", "Kinyarwanda", "Kinyarwanda should possibly be Kinyarwandi" }, + { "sa", "संस्कृत", "Sanskrit" }, + { "sc", "Sardu", "Sardinian" }, + { "scn", "Sicilianu", "Sicilian" }, + { "sco", "Scots", "Scots" }, + { "sd", "सिनधि", "Sindhi" }, + { "se", "Sámegiella", "Northern Sami" }, + { "sg", "Sängö", "Sango possible alternative is Sangho" }, + { "sh", "Srpskohrvatski - Српскохрватски", "Serbocroatian" }, + { "si", "සිංහල", "Sinhalese" }, + { "simple", "Simple English", "Simple English" }, + { "sk", "Slovenčina", "Slovak" }, + { "sl", "Slovenščina", "Slovenian" }, + { "sm", "Gagana Samoa", "Samoan" }, + { "sn", "chiShona", "Shona" }, + { "so", "Soomaaliga", "Somali" }, + { "sq", "Shqip", "Albanian" }, + { "sr", "Српски - Srpski", "Serbian" }, + { "ss", "SiSwati", "Swati" }, + { "st", "seSotho", "Southern Sotho" }, + { "su", "Basa Sunda", "Sundanese" }, + { "sv", "Svenska", "Swedish" }, + { "sw", "Kiswahili", "Swahili" }, + { "ta", "தமிழ்", "Tamil" }, + { "te", "తెలుగు", "Telugu" }, + { "tg", "Тоҷикӣ", "Tajik" }, + { "th", "ไทย", "Thai" }, + { "ti", "ትግርኛ", "Tigrinya" }, + { "tk", "تركمن - Туркмен", "Turkmen" }, + { "tl", "Tagalog", "Tagalog (Filipino)" }, + { "tn", "Setswana", "Setswana" }, + { "to", "faka-Tonga", "Tonga (Tonga Islands)" }, + { "tokipona", "Toki Pona", "Toki Pona" }, + { "tp", "Toki Pona", "Toki Pona - non-standard language code" }, + { "tpi", "Tok Pisin", "Tok Pisin" }, + { "tr", "Türkçe", "Turkish" }, + { "ts", "Xitsonga", "Tsonga" }, + { "tt", "Tatarça", "Tatar" }, + { "tum", "chiTumbuka", "Tumbuka" }, + { "tw", "Twi", "Twi (FIXME!)" }, + { "ty", "Reo Mā`ohi", "Tahitian" }, + { "udm", "Удмурт", "Udmurt" }, + { "ug", "Oyghurque", "Uyghur" }, + { "uk", "Українська", "Ukrainian" }, + { "ur", "اردو", "Urdu" }, + { "uz", "Ўзбек", "Uzbek" }, + { "ve", "Tshivenda", "Venda" }, + { "vec", "Vèneto", "Venetian" }, + { "vi", "Tiếng Việt", "Vietnamese" }, + { "vo", "Volapük", "Volapük" }, + { "wa", "Walon", "Walloon" }, + { "war", "Samar-Leyte Visayan", "Waray-Waray" }, + { "wo", "Wollof", "Wolof" }, + { "xh", "isiXhosa", "Xhosan" }, + { "yi", "ייִדיש", "Yiddish" }, + { "yo", "Yorùbá", "Yoruba" }, + { "za", "(Cuengh)", "Zhuang" }, + { "zh", "中文", "(Zhōng Wén) - Chinese" }, + { "zh_CFR", "閩南語", "Chinese Min-nan alias (site is at minnan)" }, + { "zh_CN", "中文(简体)", "Chinese Simplified" }, + { "zh_HK", "中文(繁體)", "ChineseTraditional (Hong Kong)" }, + { "zh_MIN_NAN", "Bân-lâm-gú", "Chinese Min-nan" }, + { "zh_SG", "中文(简体)", "Chinese Simplified (Singapore)" }, + { "zh_TW", "中文(繁體)", "Chinese Traditional" }, + { "zu", "isiZulu", "Zulu" } +}; + +static const int LANGUAGES_SIZE = sizeof (LANGUAGES) / sizeof (Language); + +#endif //LANGUAGES_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/StartupSettingListener.cpp qutecom-2.2+dfsg1/qutecom/src/model/config/StartupSettingListener.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/StartupSettingListener.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/StartupSettingListener.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "StartupSettingListener.h" + +#include "Config.h" +#include "ConfigManager.h" + +#include + +#include +#include +#include + +#include + +StartupSettingListener::StartupSettingListener(const std::string & executableName) { + std::string appPath; + +#if defined(OS_WINDOWS) + //add the -b option to start in background mode + appPath = Path::getApplicationDirPath() + executableName + " -b"; +#elif defined (OS_MACOSX) + (void)executableName; // Avoid gcc warning + appPath = Path::getApplicationBundlePath(); +#else + (void)executableName; // Avoid gcc warning +#endif + _startup = new Startup("QuteCom", appPath); + _startup->setStartup(ConfigManager::getInstance().getCurrentConfig().getGeneralAutoStart()); + + ConfigManager::getInstance().getCurrentConfig().valueChangedEvent += + boost::bind(&StartupSettingListener::startupSettingChanged, this, _1); +} + +StartupSettingListener::~StartupSettingListener() { + if (_startup) { + delete _startup; + } +} + +void StartupSettingListener::startupSettingChanged(const std::string & key) const { + if (key == Config::GENERAL_AUTOSTART_KEY) { + _startup->setStartup(ConfigManager::getInstance().getCurrentConfig().getGeneralAutoStart()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/StartupSettingListener.h qutecom-2.2+dfsg1/qutecom/src/model/config/StartupSettingListener.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/config/StartupSettingListener.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/config/StartupSettingListener.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef STARTUPSETTINGLISTENER_H +#define STARTUPSETTINGLISTENER_H + +#include +#include + +#include + +class Startup; +class Settings; + +class StartupSettingListener : NonCopyable, public Trackable { +public: + + StartupSettingListener(const std::string & executableName); + + ~StartupSettingListener(); + + void startupSettingChanged(const std::string & key) const; + +private: + + Startup * _startup; +}; + +#endif //STARTUPSETTINGLISTENER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/Connect.cpp qutecom-2.2+dfsg1/qutecom/src/model/connect/Connect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/Connect.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/connect/Connect.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,189 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Connect.h" + +#include +#include + +#include +#include +#include + +#include +#include + +const unsigned RECONNECT_INTERVAL = 200000; +const unsigned RECONNECT_RETRY = 10; + +Connect::Connect(IMAccount account, UserProfile & userProfile) + : _imAccount(account), + _userProfile(userProfile) { + + _imConnect = IMWrapperFactory::getFactory().createIMConnect(account); + + _imConnect->connectedEvent += + boost::bind(&Connect::connectedEventHandler, this, _1); + _imConnect->disconnectedEvent += + boost::bind(&Connect::disconnectedEventHandler, this, _1, _2, _3); + _imConnect->connectionProgressEvent += + boost::bind(&Connect::connectionProgressEventHandler, this, _1, _2, _3, _4); + + _timerIsRunning = false; + _timer.timeoutEvent += + boost::bind(&Connect::timeoutEventHandler, this, _1); + + _isConnecting = false; + _isDisconnecting = false; +} + +Connect::~Connect() { + _timer.stop(); + delete _imConnect; +} + +void Connect::connect() { + _connectionRetryCount = 0; + _isDisconnecting = false; + + autoConnect(); +} + +void Connect::disconnect(bool force) { + _timer.stop(); + _timerIsRunning = false; + _isConnecting = false; + + // Gets up-to-date IMAccount + IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(_imAccount.getUUID()); + + if (imAccount) { + if (imAccount->isConnected()) { + _isDisconnecting = true; + if ((_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) + || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) + || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { + _userProfile.disconnectSipAccounts(force); + } + _imConnect->disconnect(force); + } + OWSAFE_DELETE(imAccount); + } +} + +void Connect::timeoutEventHandler(Timer & sender) { + Mutex::ScopedLock lock(_mutex); + bool stopToggle = false; + if (_isConnecting) { + return; + } + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(_imAccount.getUUID()); + if (imAccount) { + // Check if the IMAccount is not already connected. This can happen + // if a timeout event is emitted during a connection process. + if (!imAccount->isConnected()) { + if (_connectionRetryCount < RECONNECT_RETRY && NetworkObserver::getInstance().isConnected()) { + ++_connectionRetryCount; + _isConnecting = true; + if ((_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) + || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) + || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { + if (!_userProfile.connectSipAccounts()) { + LOG_ERROR("Couldn't connect sip accounts"); + stopToggle = true; + } + } else { + _imConnect->connect(); + } + } else { + if (_connectionRetryCount >= RECONNECT_RETRY) { + LOG_ERROR("Too many attempts to connect"); + } else { + LOG_ERROR("Not connected"); + } + stopToggle = true; + } + + if (stopToggle) { + // Either the user as cancelled the connection + // nor the retry count has been exceeded + _timer.stop(); + _timerIsRunning = false; + _connectionRetryCount = 0; + } + } + OWSAFE_DELETE(imAccount); + } +} + +void Connect::autoConnect() { + if (!_timerIsRunning && (_connectionRetryCount < RECONNECT_RETRY)) { + _timerIsRunning = true; + _timer.start(0, RECONNECT_INTERVAL, 0); + } +} + +void Connect::connectedEventHandler(IMConnect & sender) { + connectedEvent(sender); + + _timer.stop(); + _timerIsRunning = false; + _isConnecting = false; + _connectionRetryCount = 0; +} + +void Connect::disconnectedEventHandler(IMConnect & sender, bool connectionError, std::string reason) { + disconnectedEvent(sender, connectionError, reason); + + _isConnecting = false; + + if (_isDisconnecting) { + return; + } + + // We check if this is a user disconnection or a error disconnection. + // If so, we try to reconnect + if (connectionError) { + autoConnect(); + } else { + _timer.stop(); + _timerIsRunning = false; + _connectionRetryCount = 0; + } +} + +void Connect::connectionProgressEventHandler(IMConnect & sender, + int currentStep, int totalSteps, std::string infoMessage) { + + connectionProgressEvent(sender, currentStep, totalSteps, infoMessage); +} + +void Connect::unregisterAllEvents() { + _imConnect->connectedEvent -= + boost::bind(&Connect::connectedEventHandler, this, _1); + _imConnect->disconnectedEvent -= + boost::bind(&Connect::disconnectedEventHandler, this, _1, _2, _3); + _imConnect->connectionProgressEvent -= + boost::bind(&Connect::connectionProgressEventHandler, this, _1, _2, _3, _4); + + _timer.timeoutEvent -= + boost::bind(&Connect::timeoutEventHandler, this, _1); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/Connect.h qutecom-2.2+dfsg1/qutecom/src/model/connect/Connect.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/Connect.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/connect/Connect.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,125 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONNECT_H +#define CONNECT_H + +#include + +#include +#include + +#include +#include +#include + +class UserProfile; + +/** + * Wrapper for Instant Messaging connection. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class Connect : NonCopyable, public Trackable { +public: + + /** + * @see IMConnect::connectedEvent + */ + Event connectedEvent; + + /** + * @see IMConnect::disconnectedEvent + */ + Event disconnectedEvent; + + /** + * @see IMConnect::connectionProgressEvent + */ + Event connectionProgressEvent; + + Connect(IMAccount account, UserProfile & userProfile); + + virtual ~Connect(); + + void connect(); + + void disconnect(bool force = false); + + IMAccount getIMAccount() const { + return _imAccount; + } + + /** + * Tells Connect to unregister to all registered Events. + */ + void unregisterAllEvents(); + +protected: + + /** + * Used disconnectedEventHandler to launch reconnection + * without resetting _connectionRetryCount to 0. + */ + void autoConnect(); + + /** + * @see IMConnect::connectedEvent + */ + void connectedEventHandler(IMConnect & sender); + + /** + * @see IMConnect::disconnectedEvent + */ + void disconnectedEventHandler(IMConnect & sender, + bool connectionError, std::string reason); + + /** + * @see IMConnect::connectionProgressEvent + */ + void connectionProgressEventHandler(IMConnect & sender, + int currentStep, int totalSteps, std::string infoMessage); + + void timeoutEventHandler(Timer & sender); + + bool _timerIsRunning; + + bool _isConnecting; + + bool _isDisconnecting; + + /** Count how many time we retry to connect. */ + unsigned _connectionRetryCount; + + IMAccount _imAccount; + + IMConnect * _imConnect; + + UserProfile & _userProfile; + + Mutex _mutex; + + Timer _timer; +}; + +#endif //CONNECT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/ConnectHandler.cpp qutecom-2.2+dfsg1/qutecom/src/model/connect/ConnectHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/ConnectHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/connect/ConnectHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,251 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConnectHandler.h" + +#include +#include +#include +#include + +#include + +#include +#include +#include + +ConnectHandler::ConnectHandler(UserProfile * userProfile) + : _userProfile(userProfile) { + + _userProfile->getIMAccountManager().imAccountRemovedEvent += + boost::bind(&ConnectHandler::imAccountRemovedEventHandler, this, _1, _2); + + NetworkObserver::getInstance().connectionIsDownEvent += + boost::bind(&ConnectHandler::connectionIsDownEventHandler, this, _1); + + NetworkObserver::getInstance().connectionIsUpEvent += + boost::bind(&ConnectHandler::connectionIsUpEventHandler, this, _1); + + _freeze = false; +} + +ConnectHandler::~ConnectHandler() { + for (ConnectMap::const_iterator it = _connectMap.begin(); + it != _connectMap.end(); + ++it) { + delete (*it).second; + } +} + +void ConnectHandler::connect(const std::string & imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + Connect * connect = NULL; + IMAccount * imAccount = + _userProfile->getIMAccountManager().getIMAccount(imAccountId); + + if (imAccount) { + ConnectMap::iterator it = _connectMap.find(imAccountId); + if (it == _connectMap.end()) { + connect = new Connect(*imAccount, *_userProfile); + + connect->connectedEvent += + boost::bind(&ConnectHandler::connectedEventHandler, this, _1); + connect->disconnectedEvent += + boost::bind(&ConnectHandler::disconnectedEventHandler, this, _1, _2, _3); + connect->connectionProgressEvent += + boost::bind(&ConnectHandler::connectionProgressEventHandler, this, _1, _2, _3, _4); + + _connectMap.insert(std::pair(imAccountId, connect)); + } else { + connect = (*it).second; + } + + if (!(imAccount->isConnected())) { + connect->connect(); + } + + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount " + imAccountId + " not found!"); + } +} + +void ConnectHandler::disconnect(const std::string & imAccountId) { + ConnectMap::iterator it = _connectMap.find(imAccountId); + if (it != _connectMap.end()) { + (*it).second->disconnect(); + } +} + +void ConnectHandler::connectedEventHandler(IMConnect & sender) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&ConnectHandler::connectedEventHandlerThreadSafe, this, _1), sender.getIMAccountId()); + + QuteCom::getInstance().postEvent(event); +} + +void ConnectHandler::connectedEventHandlerThreadSafe(std::string imAccountId) { + if (_userProfile && !_freeze) { + IMAccount * imAccount = + _userProfile->getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + imAccount->setConnected(true); + _userProfile->updateIMAccount(*imAccount); + OWSAFE_DELETE(imAccount); + connectedEvent(*this, imAccountId); + } + } +} + +void ConnectHandler::disconnectedEventHandler(IMConnect & sender, bool connectionError, std::string reason) { +/* + typedef ThreadEvent3 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&ConnectHandler::disconnectedEventHandlerThreadSafe, this, _1, _2, _3), &sender.getIMAccount(), connectionError, reason); + + _modelThread.postEvent(event); + FIXME: crashes when trying to change UserProfile +*/ + disconnectedEventHandlerThreadSafe(sender.getIMAccountId(), connectionError, reason); +} + +void ConnectHandler::disconnectedEventHandlerThreadSafe(std::string imAccountId, bool connectionError, std::string reason) { + if (_userProfile) { + IMAccount * imAccount = + _userProfile->getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + imAccount->setConnected(false); + _userProfile->updateIMAccount(*imAccount); + OWSAFE_DELETE(imAccount); + disconnectedEvent(*this, imAccountId, connectionError, reason); + } + } +} + +void ConnectHandler::connectionProgressEventHandler(IMConnect & sender, + int currentStep, int totalSteps, std::string infoMessage) { + + connectionProgressEventHandlerThreadSafe(sender.getIMAccountId(), currentStep, totalSteps, infoMessage); +} + +void ConnectHandler::connectionProgressEventHandlerThreadSafe(std::string imAccountId, + int currentStep, int totalSteps, std::string infoMessage) { + + connectionProgressEvent(*this, imAccountId, currentStep, totalSteps, infoMessage); +} + +void ConnectHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + ConnectMap::iterator it = _connectMap.find(imAccountId); + + if (it != _connectMap.end()) { + delete (*it).second; + _connectMap.erase(it); + } else { + LOG_DEBUG("No Connect constructed for IMAccount " + imAccountId); + } +} + +void ConnectHandler::connectionIsUpEventHandler(NetworkObserver & sender) { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&ConnectHandler::connectionIsUpEventHandlerThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void ConnectHandler::connectionIsUpEventHandlerThreadSafe() { + RecursiveMutex::ScopedLock lock(_mutex); + + for (ConnectMap::const_iterator it = _connectMap.begin(); + it != _connectMap.end(); + ++it) { + + IMAccount * imAccount = + _userProfile->getIMAccountManager().getIMAccount((*it).first); + if (imAccount) { + if (!imAccount->isConnected()) { + (*it).second->connect(); + } + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount " + (*it).first + " not found!"); + } + } +} + +void ConnectHandler::connectionIsDownEventHandler(NetworkObserver & sender) { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&ConnectHandler::connectionIsDownEventHandlerThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void ConnectHandler::connectionIsDownEventHandlerThreadSafe() { + RecursiveMutex::ScopedLock lock(_mutex); + + for (ConnectMap::const_iterator it = _connectMap.begin(); + it != _connectMap.end(); + ++it) { + + IMAccount * imAccount = + _userProfile->getIMAccountManager().getIMAccount((*it).first); + if (imAccount) { + if (imAccount->isConnected()) { + (*it).second->disconnect(true); + } + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount " + (*it).first + " not found!"); + } + } +} + +void ConnectHandler::userProfileIsLoggingOff() { + // hack to avoid crashes when logging off while an IMAccount is connecting + _freeze = true; +} + +void ConnectHandler::unregisterAllEvents() { + _userProfile->getIMAccountManager().imAccountRemovedEvent -= + boost::bind(&ConnectHandler::imAccountRemovedEventHandler, this, _1, _2); + + NetworkObserver::getInstance().connectionIsDownEvent -= + boost::bind(&ConnectHandler::connectionIsDownEventHandler, this, _1); + + NetworkObserver::getInstance().connectionIsUpEvent -= + boost::bind(&ConnectHandler::connectionIsUpEventHandler, this, _1); + + for (ConnectMap::const_iterator it = _connectMap.begin(); + it != _connectMap.end(); + ++it) { + (*it).second->unregisterAllEvents(); + + (*it).second->connectedEvent -= + boost::bind(&ConnectHandler::connectedEventHandler, this, _1); + (*it).second->disconnectedEvent -= + boost::bind(&ConnectHandler::disconnectedEventHandler, this, _1, _2, _3); + (*it).second->connectionProgressEvent -= + boost::bind(&ConnectHandler::connectionProgressEventHandler, this, _1, _2, _3, _4); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/ConnectHandler.h qutecom-2.2+dfsg1/qutecom/src/model/connect/ConnectHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/connect/ConnectHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/connect/ConnectHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONNECTHANDLER_H +#define OWCONNECTHANDLER_H + +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +class Connect; +class IMAccountManager; +class NetworkObserver; +class UserProfile; +class QuteCom; + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ConnectHandler : NonCopyable, public Trackable { +public: + + /** + * @see IMConnect::connectedEvent + */ + Event connectedEvent; + + /** + * @see IMConnect::disconnectedEvent + */ + Event disconnectedEvent; + + /** + * @see IMConnect::connectionProgressEvent + */ + Event connectionProgressEvent; + + ConnectHandler(UserProfile * userProfile); + + ~ConnectHandler(); + + void connect(const std::string & imAccountId); + + void disconnect(const std::string & imAccountId); + + void userProfileIsLoggingOff(); + + /** + * Tells ConnectHandler to unregister to all registered Events. + */ + void unregisterAllEvents(); + +private: + + /** + * @see IMAccountManager::imAccountRemovedEvent + */ + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMConnect::connectedEvent + */ + void connectedEventHandler(IMConnect & sender); + + /** + * Here we must change thread because are sent from Gaim or PhApi Thread. + * @see connectedEventHandler + */ + void connectedEventHandlerThreadSafe(std::string imAccountId); + + /** + * @see IMConnect::disconnectedEvent + */ + void disconnectedEventHandler(IMConnect & sender, + bool connectionError, std::string reason); + + /** + * Here we must change thread because are sent from Gaim or PhApi Thread. + * @see disconnectedEventHandler + */ + void disconnectedEventHandlerThreadSafe(std::string imAccountId, + bool connectionError, std::string reason); + + /** + * @see IMConnect::connectionProgressEvent + */ + void connectionProgressEventHandler(IMConnect & sender, + int currentStep, int totalSteps, std::string infoMessage); + + /** + * @see IMConnect::connectionProgressEvent + */ + void connectionProgressEventHandlerThreadSafe(std::string imAccountId, + int currentStep, int totalSteps, std::string infoMessage); + + /** + * @see NetworkObserver::connectionIsUpEvent + */ + void connectionIsUpEventHandler(NetworkObserver & sender); + void connectionIsUpEventHandlerThreadSafe(); + + /** + * Handle NetworkObserver::connectionIsDownEvent + */ + void connectionIsDownEventHandler(NetworkObserver & sender); + void connectionIsDownEventHandlerThreadSafe(); + + /** + * Associative table between an IMAccount id and a Connect. + */ + typedef std::map ConnectMap; + ConnectMap _connectMap; + + RecursiveMutex _mutex; + + UserProfile * _userProfile; + + bool _freeze; +}; + +#endif //OWCONNECTHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/Contact.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/Contact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/Contact.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/Contact.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,313 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Contact.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +using namespace std; + +Contact::Contact(UserProfile & userProfile) + : ContactProfile(), + _userProfile(userProfile), + _contactList(userProfile.getContactList()) { + + profileChangedEvent += boost::bind(&Contact::profileChangedEventHandler, this, _1); +} + +Contact::Contact(const Contact & contact) + : ContactProfile(contact), + Trackable(), + _userProfile(contact._userProfile), + _contactList(contact._contactList) { + + copy(contact); +} + +Contact::~Contact() { +} + +Contact & Contact::operator=(const Contact & contact) { + if (&contact != this) { + copy(contact); + } + + contactChangedEvent(*this); + + return *this; +} + +Contact & Contact::operator=(const ContactProfile & contactProfile) { + if (&contactProfile != this) { + copy(contactProfile); + } + + contactChangedEvent(*this); + + return *this; +} + +void Contact::copy(const Contact & contact) { + copy((const ContactProfile &)contact); +} + +void Contact::copy(const ContactProfile & contactProfile) { + _uuid = contactProfile._uuid; + profileChangedEvent += + boost::bind(&Contact::profileChangedEventHandler, this, _1); + + // Sets groups + //_contactList.lock(); + RecursiveMutex::ScopedLock lock(ContactList::_mutex); + + ContactGroup * newContactGroup = _contactList.getContactGroup(contactProfile.getGroupId()); + ContactGroup * oldContactGroup = _contactList.getContactGroup(getGroupId()); + + if (oldContactGroup && newContactGroup && (oldContactGroup->getUUID() != newContactGroup->getUUID())) { + _contactList.moveContactToGroup(newContactGroup->getName(), *this); + } else if (!oldContactGroup && newContactGroup) { + _contactList._addToContactGroup(newContactGroup->getName(), *this); + } + + //_contactList.unlock(); + //// + + Profile::copy(contactProfile); + _blocked = contactProfile._blocked; + _preferredIMContact = contactProfile._preferredIMContact; + _groupId = contactProfile._groupId; + _presenceState = contactProfile._presenceState; + + // Removes not present IMContacts + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end();) { + if (!contactProfile.hasIMContact(*it)) { + IMContactSet::const_iterator curIt = it++; + _contactList.removeIMContact(*this, *curIt); + } else { + it++; + } + } + //// + + // Adds present IMContacts + for (IMContactSet::const_iterator it = contactProfile._imContactSet.begin(); + it != contactProfile._imContactSet.end(); + ++it) { + if (!hasIMContact(*it)) { + _contactList.addIMContact(*this, *it); + } + } + //// +} + +bool Contact::operator==(const Contact & contact) const { + return (ContactProfile::operator == (contact)); +} + +void Contact::addIMContact(const IMContact & imContact) { + _contactList.addIMContact(*this, imContact); +} + +void Contact::removeIMContact(const IMContact & imContact) { + _contactList.removeIMContact(*this, imContact); +} + +void Contact::_addIMContact(const IMContact & imContact) { + pair result = _imContactSet.insert(imContact); + + if (result.second) { + IMContact & newIMContact = (IMContact &)(*result.first); + + newIMContact.imContactChangedEvent += + boost::bind(&Contact::imContactChangedEventHandler, this, _1); + + _userProfile.getPresenceHandler().subscribeToPresenceOf(*result.first); + contactChangedEvent(*this); + } +} + +void Contact::_removeIMContact(const IMContact & imContact) { + IMContactSet::iterator it = _imContactSet.find(imContact); + + if (it != _imContactSet.end()) { + _userProfile.getPresenceHandler().unsubscribeToPresenceOf(*it); + contactChangedEvent(*this); + _imContactSet.erase(it); + } +} + +bool Contact::checkAndSetIMContact(const IMContact & imContact) { + for (IMContactSet::iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if ((*it) == imContact) { + if ((*it).getIMAccountId().empty()) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + ((IMContact &)(*it)).setIMAccount(imAccount); + OWSAFE_DELETE(imAccount); + } + return true; + } + } + + return false; +} + +const IMContact * Contact::getFirstValidIMContact(const IMAccount & imAccount) const { + const IMContact * result = NULL; + + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if (((*it).getIMAccountId() == imAccount.getUUID()) + && (((*it).getPresenceState() != EnumPresenceState::PresenceStateUnknown) + || ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline))) { + result = &(*it); + break; + } + } + + return result; +} + +void Contact::imContactChangedEventHandler(IMContact & sender) { + updatePresenceState(); + contactChangedEvent(*this); +} + +void Contact::block() { + for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; it++) { + _userProfile.getPresenceHandler().blockContact(*it); + } + + _blocked = true; +} + +void Contact::unblock() { + for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; it++) { + _userProfile.getPresenceHandler().unblockContact(*it); + } + + _blocked = false; +} + +void Contact::profileChangedEventHandler(Profile & profile) { + contactChangedEvent(*this); +} + +void Contact::setIcon(const OWPicture & icon) { +} + +void Contact::merge(const Contact & contact) { + if (_firstName.empty()) { + _firstName = contact._firstName; + } + + if (_lastName.empty()) { + _lastName = contact._lastName; + } + + if (_sex == EnumSex::SexUnknown) { + _sex = contact._sex; + } + + //TODO: how can we detect that birthdate is not fulled + //_birthdate = contact._birthdate; + + if (_website.empty()) { + _website = contact._website; + } + + if (_company.empty()) { + _company= contact._company; + } + + if (_mobilePhone.empty()) { + _mobilePhone = contact._mobilePhone; + } + + if (_homePhone.empty()) { + _homePhone = contact._homePhone; + } + + if (_workPhone.empty()) { + _workPhone = contact._workPhone; + } + + if (_otherPhone.empty()) { + _otherPhone = contact._otherPhone; + } + + if (_fax.empty()) { + _fax = contact._fax; + } + + if (_personalEmail.empty()) { + _personalEmail = contact._personalEmail; + } + + if (_workEmail.empty()) { + _workEmail = contact._workEmail; + } + + if (_otherEmail.empty()) { + _otherEmail = contact._otherEmail; + } + + //TODO: how can we detect that streetAddress is not fulled + //_streetAddress = contact._streetAddress; + + if (_notes.empty()) { + _notes = contact._notes; + } + + if (!_preferredIMContact) { + _preferredIMContact = contact._preferredIMContact; + } + + for (IMContactSet::const_iterator it = contact._imContactSet.begin(); + it != contact._imContactSet.end(); ++it) { + if (!hasIMContact(*it)) { + _imContactSet.insert(*it); + } + } + + if (_groupId.empty()) { + _groupId = contact._groupId; + } + + contactChangedEvent(*this); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactGroup.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactGroup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactGroup.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactGroup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactGroup.h" + +#include "Contact.h" +#include "IMContactListHandler.h" + +#define LOGGER_COMPONENT "ContactList" +#include +#include + +ContactGroup::ContactGroup(const std::string & groupName) + : _groupName(groupName) { + _uuid = Uuid::generateString(); +} + +ContactGroup::ContactGroup(const ContactGroup & contactGroup) + : _groupName(contactGroup._groupName), + _contactList(contactGroup._contactList) { + + _uuid = contactGroup._uuid; +} + +void ContactGroup::addContact(Contact & contact) { + Mutex::ScopedLock lock(_mutex); + + _contactList.push_back(&contact); + contactAddedEvent(*this, contact); + LOG_DEBUG("Contact added to group " + _groupName); +} + +void ContactGroup::removeContact(Contact & contact) { + Mutex::ScopedLock lock(_mutex); + + for (ContactVector::iterator it = _contactList.begin(); + it != _contactList.end(); + ++it) { + if ((*(*it)) == contact) { + contactRemovedEvent(*this, *(*it)); + _contactList.erase(it); + break; + } + } +} + +Contact * ContactGroup::operator[](unsigned int i) const { + Mutex::ScopedLock lock(_mutex); + + if (i <= size()) { + return _contactList[i]; + } else { + return NULL; + } +} + +bool ContactGroup::operator==(const ContactGroup & contactGroup) const { + return (_groupName == contactGroup._groupName); +} + +bool ContactGroup::operator<(const ContactGroup & contactGroup) const { + return (_groupName < contactGroup._groupName); +} + +void ContactGroup::setName(const std::string & groupName) { + _groupName = groupName; + contactGroupModifiedEvent(*this); +} + +std::list ContactGroup::getMobilePhoneList() const { + std::list list; + for (ContactVector::const_iterator it = _contactList.begin(); + it != _contactList.end(); ++it) { + + std::string getMobilePhone = (*it)->getMobilePhone(); + if( getMobilePhone != "" ) { + list.push_front(getMobilePhone); + } + } + return list; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactGroup.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactGroup.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactGroup.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactGroup.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTGROUP_H +#define CONTACTGROUP_H + +#include +#include + +#include +#include + +class Contact; +class ContactList; + +/** + * A group of contacts (i.e familly, friends ect...). + * + * Contains a list of Contact. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ + +extern template class std::list< std::string >; + +class ContactGroup { + friend class ContactList; +public: + + /** + * A ContactGroup has been modified/updated. + * + * @param sender ContactGroup modified/updated + */ + Event contactGroupModifiedEvent; + + /** + * A Contact has been added. + * + * @param sender this class + * @param contact Contact added + */ + Event contactAddedEvent; + + /** + * A Contact has been removed. + * + * @param sender this class + * @param contact Contact removed + */ + Event contactRemovedEvent; + + ContactGroup(const std::string & groupName); + + ContactGroup(const ContactGroup & contactGroup); + + std::string getName() const { + return _groupName; + } + + /** + * Permits to use ContactGroup as an array. + * + * @see List::operator[] + * @param i index inside the array + * @return the Contact that corresponds to the index i inside the ContactGroup or NULL + */ + Contact * operator[](unsigned i) const; + + /** + * @return the number of Contact in this ContactGroup + */ + unsigned size() const { + return _contactList.size(); + } + + /** + * @return a list containing all mobile phone number + */ + std::list getMobilePhoneList() const; + + /** + * Gets the UUID of this ContactGroup. + * + * @return the UUID of this ContactGroup + */ + std::string getUUID() const { + return _uuid; + } + + /** + * Compare two groups. + * + * @param contactGroup group to compare + * @return true if equal + */ + bool operator==(const ContactGroup & contactGroup) const; + + bool operator<(const ContactGroup & contactGroup) const; + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + /** + * Sets the name of the group. + * + * @param groupName the desired name + */ + void setName(const std::string & groupName); + + /** + * Add a Contact to the ContactGroup. + * + * Must only be called by ContactList + * + * @param contact the Contact to add + */ + void addContact(Contact & contact); + + /** + * Remove a Contact from the ContactGroup. + * + * Must only be called by ContactList + * + * @param contact the Contact to remove + */ + void removeContact(Contact & contact); + + /** Defines the vector of Contact. */ + typedef std::vector ContactVector; + + /** Name of the ContactGroup. */ + std::string _groupName; + + /** List of Contact associated with the ContactGroup. */ + ContactVector _contactList; + + /** The UUID of this ContactGroup. */ + std::string _uuid; + + mutable Mutex _mutex; +}; + +#endif //CONTACTGROUP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/Contact.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/Contact.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/Contact.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/Contact.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,190 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACT_H +#define OWCONTACT_H + +#include "ContactProfile.h" + +#include + +#include + +/** + * Contact inside an address book. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class Contact : public ContactProfile, public Trackable { + friend class ContactList; + friend class ContactXMLSerializer; + friend class ContactXMLSerializer1; +public: + + /** + * A Contact has been modified/updated. + * + * @param sender the Contact modified/updated + */ + Event contactChangedEvent; + + Contact(UserProfile & userProfile); + + Contact(const Contact & contact); + + Contact & operator=(const Contact & contact); + + Contact & operator=(const ContactProfile & contactProfile); + + ~Contact(); + + bool operator==(const Contact & contact) const; + + /** + * Set the preferred phone number (can also be a qutecom id or a sip address). + * + * @param number the preferred phone number + */ + void setPreferredPhoneNumber(const std::string & number) { _preferredNumber = number; contactChangedEvent(*this); } + + /** + * Set the preferred IMContact to use. + * + * @param the imContact to set. The given reference must stay valid during + * the execution (this must be a reference to an IMContact of this Contact). + */ + void setPreferredIMContact(const IMContact & imContact) { _preferredIMContact = (IMContact *)&imContact; contactChangedEvent(*this); } + + /** + * Add an IMContact to the Contact. + * + * This method will send a request to ContactList that will send a request + * to the appropriated IMContactList. Then the ContactList will call + * _addIMContact that will actually add the IMContact. + * + * @param imContact IMContact to add + */ + void addIMContact(const IMContact & imContact); + + /** + * Remove an IMContact from the Contact. + * + * The process is the same as in addIMContact + * + * @param imContact IMContact to remove + */ + void removeIMContact(const IMContact & imContact); + + /** + * Check if an IMContact of the Contact is equivalent to the given + * IMContact. + * + * Equivalent IMContacts are of the same protocol. If an equivalent + * IMContact has been found and if it has no associated IMAccount, + * the IMAccount of the given IMContact is linked to the found + * IMContact. + * + * @param imContact the IMContact to check + * @return true if an equivalent IMContact has been found. + */ + bool checkAndSetIMContact(const IMContact & imContact); + + /** + * Gets the first valid IMContact given an IMAccount. + * + * A valid IMContact is a connected IMContact linked to the given IMAcccount. + * + * @return the found IMContact or NULL if not found. + */ + const IMContact * getFirstValidIMContact(const IMAccount & imAccount) const; + + /** + * Avoid this contact to see my presence. + */ + void block(); + + /** + * Authorize this contact to see my presence. + */ + void unblock(); + + UserProfile & getUserProfile() const { + return _userProfile; + } + +private: + + /** + * Copy a Contact. + */ + virtual void copy(const Contact & contact); + + /** + * Copy a ContactProfile. + */ + virtual void copy(const ContactProfile & contactProfile); + + /** + * @see Profile::profileChangedEvent + */ + void profileChangedEventHandler(Profile & profile); + + /** + * @see IMContact::imContactChangedEvent + */ + void imContactChangedEventHandler(IMContact & sender); + + /** + * Actually add an IMContact to this Contact. + * + * This method must be called only by ContactList + * + * The IMContact is copied internally + * + * @param the IMContact to add + */ + void _addIMContact(const IMContact & imContact); + + /** + * Actually remove an IMContact to this Contact. + * + * This method must be called only by ContactList + * + * @param the IMContact to remove + */ + void _removeIMContact(const IMContact & imContact); + + /** Can't be used on a Contact.*/ + void setIcon(const OWPicture & icon); + + /** + * Merges this Contact with another. + * + * @param contact the Contact to merge with + */ + void merge(const Contact & contact); + + UserProfile & _userProfile; + + ContactList & _contactList; +}; + +#endif //OWCONTACT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactList.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactList.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,581 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactList.h" + +#include "Contact.h" +#include "IMContactListHandler.h" + +#include +#include + +#include + +#define LOGGER_COMPONENT "ContactList" +#include +#include +#include + +using namespace std; + +RecursiveMutex ContactList::_mutex; + +ContactList::ContactList(UserProfile & userProfile) + : _userProfile(userProfile), + _imContactListHandler(userProfile.getIMContactListHandler()) { + + _imContactListHandler.newIMContactAddedEvent += + boost::bind(&ContactList::newIMContactAddedEventHandler, this, _1, _2, _3); + _imContactListHandler.imContactRemovedEvent += + boost::bind(&ContactList::imContactRemovedEventHandler, this, _1, _2, _3); + _imContactListHandler.newContactGroupAddedEvent += + boost::bind(&ContactList::newContactGroupAddedEventHandler, this, _1, _2); + _imContactListHandler.contactGroupRemovedEvent += + boost::bind(&ContactList::contactGroupRemovedEventHandler, this, _1, _2); + _imContactListHandler.imContactMovedEvent += + boost::bind(&ContactList::imContactMovedEventHandler, this, _1, _2, _3); + _userProfile.getPresenceHandler().presenceStateChangedEvent += + boost::bind(&ContactList::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + _userProfile.getPresenceHandler().contactIconChangedEvent += + boost::bind(&ContactList::contactIconChangedEventHandler, this, _1, _2, _3); + _userProfile.getIMAccountManager().imAccountRemovedEvent += + boost::bind(&ContactList::imAccountRemovedEventHandler, this, _1, _2); +} + +ContactList::~ContactList() { +} + +void ContactList::addContactGroup(const string & groupName) { + RecursiveMutex::ScopedLock lock(_mutex); + + _addContactGroup(groupName); + _imContactListHandler.addGroup(groupName); +} + +void ContactList::removeContactGroup(const string & groupId) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(groupId); + if (contactGroup) { + string groupName = contactGroup->getName(); + _removeContactGroup(groupId); + _imContactListHandler.removeGroup(groupName); + } +} + +void ContactList::renameContactGroup(const std::string & groupId, const std::string & name) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (!name.empty()) { + ContactGroup * contactGroup = getContactGroup(groupId); + + if (contactGroup) { + std::string oldName = contactGroup->getName(); + contactGroup->setName(name); + _imContactListHandler.changeGroupName(oldName, name); + contactGroupRenamedEvent(*this, *contactGroup); + } + } +} + +Contact & ContactList::createContact() { + RecursiveMutex::ScopedLock lock(_mutex); + + Contact contact(_userProfile); + Contacts::const_iterator it; + + _contacts.push_back(contact); + //Look for the added Contact + for (it = _contacts.begin(); + it != _contacts.end(); ++it) { + if (contact == (*it)) { + ((Contact &) *it).contactChangedEvent += + boost::bind(&ContactList::contactChangedEventHandler, this, _1); + contactAddedEvent(*this, (Contact &) *it); + break; + } + } + + return (Contact &) *it; +} + +void ContactList::removeContact(Contact & contact) { + RecursiveMutex::ScopedLock lock(_mutex); + + //Remove the Contact from its group + ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); + + if (contactGroup) { + contactGroup->removeContact(contact); + } + //// + + //Remove all IMContacts + + //We get a copy of the IMContactSet as it will modified while browsing it + IMContactSet imContactSet = contact.getIMContactSet(); + + for (IMContactSet::const_iterator it = imContactSet.begin(); + it != imContactSet.end(); ++it) { + removeIMContact(contact, *contact.getIMContact(*it)); + } + //// + + //Remove the Contact from the ContactList + for (Contacts::iterator it = _contacts.begin(); + it != _contacts.end(); ++it) { + if (contact == (*it)) { + contactRemovedEvent(*this, (Contact &)*it); + _contacts.erase(it); + break; + } + } + ///// +} + +void ContactList::addIMContact(Contact & contact, const IMContact & imContact) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); + + if (contactGroup) { + contact._addIMContact(imContact); + _imContactListHandler.addIMContact(contactGroup->getName(), imContact); + } +} + +void ContactList::removeIMContact(Contact & contact, const IMContact & imContact) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); + + if (contactGroup) { + _imContactListHandler.removeIMContact(contactGroup->getName(), imContact); + contact._removeIMContact(imContact); + } +} + +void ContactList::newIMContactAddedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & newIMContact) { + + RecursiveMutex::ScopedLock lock(_mutex); + + if (!groupName.empty()) { + LOG_DEBUG("adding a new IMContact in group " + groupName + ": " + newIMContact.getContactId()); + + //Find the Contact that owns the IMContact. Creating a new one if needed + Contact * contact = findContactThatOwns(newIMContact); + if (!contact) { + LOG_DEBUG("IMContact " + newIMContact.getContactId() + " not found. Adding a new Contact"); + contact = &(createContact()); + } + + if (!contact->hasIMContact(newIMContact)) { + _addToContactGroup(groupName, *contact); + contact->_addIMContact(newIMContact); + + LOG_DEBUG("IMContact added in group " + groupName + ": " + newIMContact.getContactId()); + } else { + //This event can be received although the IMContact is already present + //in the ContactList. We assume that this is a move event. + _moveContactToGroup(groupName, *contact); + } + } +} + +void ContactList::imContactRemovedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & imContact) { + + RecursiveMutex::ScopedLock lock(_mutex); + + LOG_DEBUG("IMContact removed from group " + groupName + ": " + + imContact.getContactId()); + + //Find the Contact that owns the IMContact. Creating a new one if needed + Contact * contact = findContactThatOwns(imContact); + if (!contact) { + contact = &(createContact()); + } + + contact->_removeIMContact(imContact); + + LOG_DEBUG("IMContact removed: " + imContact.getContactId()); +} + +void ContactList::newContactGroupAddedEventHandler(IMContactList & sender, const std::string & groupName) { + RecursiveMutex::ScopedLock lock(_mutex); + + _addContactGroup(groupName); +} + +void ContactList::contactGroupRemovedEventHandler(IMContactList & sender, const std::string & groupName) { + RecursiveMutex::ScopedLock lock(_mutex); + + _removeContactGroup(groupName); +} + +void ContactList::presenceStateChangedEventHandler(PresenceHandler & sender, + EnumPresenceState::PresenceState state, + const std::string & alias, const IMContact & imContact) { + + RecursiveMutex::ScopedLock lock(_mutex); + + //Find the Contact that owns the IMContact. Creating a new one if needed + Contact * contact = findContactThatOwns(imContact); + if (contact) { + //The PresenceState must not be changed if the PresenceState is + //UserDefined (used by PhApi to set the alias) + if (!contact->getIMContact(imContact)) { + LOG_FATAL("bad algorithm in findContactThatOwns or in getIMContact"); + } + + if (state != EnumPresenceState::PresenceStateUserDefined) { + contact->getIMContact(imContact)->setPresenceState(state); + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount->getProtocol() != EnumIMProtocol::IMProtocolQuteCom) { + contact->getIMContact(imContact)->setAlias(alias); + } + OWSAFE_DELETE(imAccount); + } else { + contact->getIMContact(imContact)->setPresenceState(EnumPresenceState::PresenceStateOnline); + contact->getIMContact(imContact)->setAlias(alias); + } + } +} + +void ContactList::imContactMovedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & imContact) { + + RecursiveMutex::ScopedLock lock(_mutex); + + Contact * contact = findContactThatOwns(imContact); + if (contact) { + //This method can be called when a Contact has changed, not only + //because the Contact has moved. + ContactGroup * contactGroup = getContactGroup(contact->getGroupId()); + if (contactGroup && (contactGroup->getName() == groupName)) { + contactChangedEvent(*this, *contact); + } else { + _moveContactToGroup(groupName, *contact); + } + } +} + +Contact * ContactList::findContactThatOwns(const IMContact & imContact) const { + RecursiveMutex::ScopedLock lock(_mutex); + + Contact * result = NULL; + + for (Contacts::const_iterator it = _contacts.begin(); + it != _contacts.end(); + ++it) { + Contact & contact = (Contact &)*it; + if (contact.checkAndSetIMContact(imContact)) { + result = &contact; + break; + } + } + + return result; +} + +Contact * ContactList::findContactThatOwns(const std::string & number) const { + RecursiveMutex::ScopedLock lock(_mutex); + + Contact * result = NULL; + IMAccountList imAccountListQuteCom = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolQuteCom); + if(imAccountListQuteCom.size() > 0) + { + IMContact imContact(*imAccountListQuteCom.begin(),number); + result = findContactThatOwns(imContact); + if(result) + return result; + } + + IMAccountList imAccountListSIP = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolSIP); + if(imAccountListSIP.size() > 0) + { + IMContact imContact(*imAccountListSIP.begin(),number); + result = findContactThatOwns(imContact); + if(result) + return result; + } + + IMAccountList imAccountListSIPSIMPLE = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolSIPSIMPLE); + if(imAccountListSIPSIMPLE.size() > 0) + { + IMContact imContact(*imAccountListSIPSIMPLE.begin(),number); + result = findContactThatOwns(imContact); + if(result) + return result; + } + + std::string cleanNumber = number; + size_t posFirstOf = cleanNumber.find_first_of("@"); + if (posFirstOf < cleanNumber.npos) + cleanNumber = cleanNumber.substr(0, posFirstOf); + + size_t posSip = cleanNumber.find_first_of(":") + 1; + if (posSip < cleanNumber.npos) + cleanNumber = cleanNumber.substr(posSip, cleanNumber.size()); + + + for (Contacts::const_iterator it = _contacts.begin();it != _contacts.end();++it) + { + Contact & contact = (Contact &)*it; + if (contact.getMobilePhone() == cleanNumber || contact.getHomePhone() == cleanNumber) + { + result = &contact; + break; + } + } + + return result; +} + +void ContactList::_addContactGroup(const std::string & groupName) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup contactGroup(groupName); + pair result = _contactGroupSet.insert(contactGroup); + + //If the ContactGroup was actually inserted (e.g did not exist) + if (result.second) { + contactGroupAddedEvent(*this, (ContactGroup &)*result.first); + LOG_DEBUG("new ContactGroup added " + groupName); + } else { + LOG_DEBUG("this ContactGroup already exists: " + groupName); + } +} + +void ContactList::_removeContactGroup(const std::string & groupId) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(groupId); + + if (contactGroup) { + //Deleting every Contacts in the ContactGroup + ContactGroup contactGroupCopy = *contactGroup; + for (ContactGroup::ContactVector::const_iterator vectIt = contactGroupCopy._contactList.begin(); + vectIt != contactGroupCopy._contactList.end(); + ++vectIt) { + removeContact(*(*vectIt)); + } + //// + + //Deleting the group + ContactGroupSet::iterator it = _contactGroupSet.find(contactGroupCopy); + contactGroupRemovedEvent(*this, contactGroupCopy); + _contactGroupSet.erase(it); + //// + LOG_DEBUG("ContactGroup removed. UUID: " + groupId); + } +} + +void ContactList::_addToContactGroup(const std::string & groupName, Contact & contact) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (!groupName.empty()) { + addContactGroup(groupName); + + ContactGroupSet::const_iterator it = _contactGroupSet.find(ContactGroup(groupName)); + if (it != _contactGroupSet.end()) { + LOG_DEBUG("adding a Contact to group " + groupName); + ((ContactGroup &)(*it)).addContact(contact); + contact.setGroupId((*it).getUUID()); + } else { + LOG_FATAL("the group " + groupName + " has not been added"); + } + } +} + +void ContactList::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + for (Contacts::const_iterator it = _contacts.begin(); + it != _contacts.end(); + ++it) { + for (IMContactSet::const_iterator imContactIt = ((Contact &) *it).getIMContactSet().begin(); + imContactIt != ((Contact &) *it).getIMContactSet().end(); + ++imContactIt) { + if (((*imContactIt).getIMAccountId()) == imAccountId) { + ((IMContact &)*imContactIt).setIMAccount(NULL); + } + } + } +} + +ContactGroup * ContactList::getContactGroup(const std::string & groupId) const { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * result = NULL; + + for (ContactGroupSet::const_iterator it = _contactGroupSet.begin(); + it != _contactGroupSet.end(); + ++it) { + if ((*it).getUUID() == groupId) { + result = &(ContactGroup &)(*it); + break; + } + } + + return result; +} + +void ContactList::contactIconChangedEventHandler(PresenceHandler & sender, const IMContact & imContact, OWPicture icon) { + RecursiveMutex::ScopedLock lock(_mutex); + + Contact * contact = findContactThatOwns(imContact); + if (contact) { + contact->getIMContact(imContact)->setIcon(icon); + } else { + LOG_DEBUG("IMContact not found: " + imContact.getContactId()); + } +} + +void ContactList::mergeContacts(Contact & dst, Contact & src) { + RecursiveMutex::ScopedLock lock(_mutex); + + dst.merge(src); + + //Remove the source Contact without removing it from linked IMContactLists + //Remove the Contact from its group + ContactGroup * contactGroup = getContactGroup(src.getGroupId()); + if (contactGroup) { + contactGroup->removeContact(src); + } + //// + + for (Contacts::iterator it = _contacts.begin(); + it != _contacts.end(); ++it) { + if (src == (*it)) { + contactRemovedEvent(*this, (Contact &) *it); + _contacts.erase(it); + break; + } + } + //// +} + +void ContactList::_moveContactToGroup(const string & dst, Contact & contact) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); + std::string oldGroupName; + + if (contactGroup) { + oldGroupName = contactGroup->getName(); + } + + if (oldGroupName != dst) { + addContactGroup(dst); + + ContactGroupSet::iterator oldIt = _contactGroupSet.find(ContactGroup(oldGroupName)); + ContactGroupSet::iterator newIt = _contactGroupSet.find(ContactGroup(dst)); + + if ((newIt != _contactGroupSet.end()) + && (oldIt != _contactGroupSet.end())) { + ((ContactGroup &)(*oldIt)).removeContact(contact); + ((ContactGroup &)(*newIt)).addContact(contact); + + contact.setGroupId((*newIt).getUUID()); + contactMovedEvent(*this, (ContactGroup &) *newIt, (ContactGroup &) *oldIt, contact); + } + } +} + +void ContactList::moveContactToGroup(const string & dst, Contact & contact) { + RecursiveMutex::ScopedLock lock(_mutex); + + ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); + std::string oldGroupName; + + if (contactGroup) { + oldGroupName = contactGroup->getName(); + } + + if (oldGroupName != dst) { + addContactGroup(dst); + + ContactGroupSet::iterator oldIt = _contactGroupSet.find(ContactGroup(oldGroupName)); + ContactGroupSet::iterator newIt = _contactGroupSet.find(ContactGroup(dst)); + + for (IMContactSet::const_iterator it = contact.getIMContactSet().begin(); + it != contact.getIMContactSet().end(); + ++it) { + _imContactListHandler.moveContactToGroup((*newIt).getName(), oldGroupName, (IMContact &)*it); + } + + if ((newIt != _contactGroupSet.end()) + && (oldIt != _contactGroupSet.end())) { + ((ContactGroup &)(*oldIt)).removeContact(contact); + ((ContactGroup &)(*newIt)).addContact(contact); + + contact.setGroupId((*newIt).getUUID()); + contactMovedEvent(*this, (ContactGroup &)*newIt, (ContactGroup &)*oldIt, contact); + } + } +} + +Contact * ContactList::getContact(const std::string & contactId) const { + RecursiveMutex::ScopedLock lock(_mutex); + + for (Contacts::const_iterator it = _contacts.begin(); + it != _contacts.end(); + ++it) { + if ((*it).getUUID() == contactId) { + return &(Contact &)(*it); + break; + } + } + + return NULL; +} + +void ContactList::contactChangedEventHandler(Contact & sender) { + RecursiveMutex::ScopedLock lock(_mutex); + + contactChangedEvent(*this, sender); +} + +//void ContactList::lock() { +// _mutex.lock(); +//} + +//void ContactList::unlock() { +// _mutex.unlock(); +//} + +std::string ContactList::getContactGroupIdFromName(const std::string & groupName) const { + RecursiveMutex::ScopedLock lock(_mutex); + + std::string result; + + for (ContactGroupSet::const_iterator it = _contactGroupSet.begin(); + it != _contactGroupSet.end(); it++) { + LOG_DEBUG("groupName: " + groupName + ", current group name: " + (*it).getName()); + if ((*it).getName() == groupName) { + result = (*it).getUUID(); + break; + } + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactListFileStorage1.h" + +#include "ContactListXMLSerializer1.h" +#include "ContactList.h" +#include "ContactGroup.h" +#include "Contact.h" + +#include +#include + +#include +using namespace std; + +static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; + +ContactListFileStorage1::ContactListFileStorage1(ContactList & contactList, IMAccountList & imAccountList) + : ContactListStorage(contactList), + _imAccountList(imAccountList) { +} + +ContactListFileStorage1::~ContactListFileStorage1() { +} + +bool ContactListFileStorage1::load(const std::string & url) { + FileReader file(url + CONTACTLIST_FILENAME); + if (file.open()) { + string data = file.read(); + + ContactListXMLSerializer1 serializer(_contactList, _imAccountList); + serializer.unserialize(data); + return true; + } + + return false; +} + +bool ContactListFileStorage1::save(const std::string & url) { + FileWriter file(url + CONTACTLIST_FILENAME); + ContactListXMLSerializer1 serializer(_contactList, _imAccountList); + + file.write(serializer.serialize()); + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage1.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTLISTFILESTORAGE1_H +#define OWCONTACTLISTFILESTORAGE1_H + +#include "ContactListStorage.h" + +class ContactList; +class IMAccountList; + +/** + * WARNING: the IMAccountHandler given in the constructor must be poupulated + * BEFORE using the 'load' method. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactListFileStorage1 : public ContactListStorage { +public: + + ContactListFileStorage1(ContactList & contactList, IMAccountList & _imAccountList); + + ~ContactListFileStorage1(); + + bool load(const std::string & url); + + bool save(const std::string & url); + +private: + + IMAccountList & _imAccountList; +}; + +#endif //OWCONTACTLISTFILESTORAGE1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactListFileStorage.h" + +#include "ContactListXMLSerializer.h" +#include "ContactList.h" +#include "ContactGroup.h" +#include "Contact.h" + +#include +#include + +#include +using namespace std; + +static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; + +ContactListFileStorage::ContactListFileStorage(ContactList & contactList, IMAccountList & imAccountList) + : ContactListStorage(contactList), + _imAccountList(imAccountList) { +} + +ContactListFileStorage::~ContactListFileStorage() { +} + +bool ContactListFileStorage::load(const std::string & url) { + FileReader file(url + CONTACTLIST_FILENAME); + if (file.open()) { + string data = file.read(); + + ContactListXMLSerializer serializer(_contactList, _imAccountList); + serializer.unserialize(data); + return true; + } + + return false; +} + +bool ContactListFileStorage::save(const std::string & url) { + FileWriter file(url + CONTACTLIST_FILENAME); + ContactListXMLSerializer serializer(_contactList, _imAccountList); + + file.write(serializer.serialize()); + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListFileStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTLISTFILESTORAGE_H +#define CONTACTLISTFILESTORAGE_H + +#include "ContactListStorage.h" + +class ContactList; +class IMAccountList; + +/** + * WARNING: the IMAccountHandler given in the constructor must be poupulated + * BEFORE using the 'load' method. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactListFileStorage : public ContactListStorage { +public: + + ContactListFileStorage(ContactList & contactList, IMAccountList & _imAccountList); + + ~ContactListFileStorage(); + + bool load(const std::string & url); + + bool save(const std::string & url); + +private: + + IMAccountList & _imAccountList; +}; + +#endif //CONTACTLISTFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactList.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,394 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTLIST_H +#define OWCONTACTLIST_H + +#include "ContactGroup.h" + +#include + +#include + +#include +#include +#include + +#include +#include + +class Contact; +class IMAccount; +class IMAccountManager; +class IMContact; +class IMContactList; +class IMContactListHandler; +class IMPresence; +class PresenceHandler; +class StringList; +class UserProfile; + +/** + * Contact list. + * + * List of ContactGroup. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactList : public Trackable { + friend class Contact; + friend class ContactListXMLSerializer; + friend class ContactListXMLSerializer1; + friend class ContactXMLSerializer; + friend class ContactXMLSerializer1; +public: + + /** Set of ContactGroup. */ + typedef std::set ContactGroupSet; + + /** List of Contact. */ + typedef std::list Contacts; + + ContactList(UserProfile & userProfile); + + ~ContactList(); + + /** + * A ContactGroup has been added. + * + * @param sender this class + * @param contactGroup ContactGroup added + */ + Event contactGroupAddedEvent; + + /** + * A ContactGroup has been removed. + * + * @param sender this class + * @param contactGroup ContactGroup removed + */ + Event contactGroupRemovedEvent; + + /** + * A ContactGroup has been renamed. + * + * @param sender this class + * @param contactGroup ContactGroup renamed + */ + Event contactGroupRenamedEvent; + + /** + * A Contact has been added to a ContactGroup. + * + * @param sender this class + * @param contactGroup the ContactGroup where the Contact has been added to + * @param contact the added Contact + */ + Event contactAddedEvent; + + /** + * A Contact has been removed from a ContactGroup. + * + * @param sender this class + * @param contactGroup the ContactGroup where the Contact has been removed from + * @param contact the removed Contact + */ + Event contactRemovedEvent; + + /** + * @see contactProfilePresenceChangedEvent + * FIXME not finished yet, this is for notification/toaster + */ + Event contactPresenceChangedEvent; + + /** + * A Contact has moved. + * + * @param sender this class + * @param groupName the destinaton group + * @param contact the removed Contact + */ + Event contactMovedEvent; + + /** + * Emitted when a Contact has been changed. + * + * @param sender this class + * @param contact the changed Contact + */ + Event contactChangedEvent; + + /** + * Adds a ContactGroup. + * + * If a ContactGroup with the given name exists, no ContactGroup is created + * + * @param name name of the ContactGroup to add. + */ + void addContactGroup(const std::string & name); + + /** + * Removes a ContactGroup. + * + * If no ContactGroup with the given name exists, nothing happens + * + * @param groupId the UUID of the ContactGroup to remove. + */ + void removeContactGroup(const std::string & groupId); + + /** + * Renames a ContactGroup. + * + * @param groupId the UUID of the group to rename + * @param name the desired name + */ + void renameContactGroup(const std::string & groupId, const std::string & name); + + /** + * Creates and adds a Contact to the ContactList. + * + * @return a reference to the new Contact + */ + Contact & createContact(); + + /** + * Removes a Contact. + * + * @param the contact to remove + */ + void removeContact(Contact & contact); + + /** + * Merges two Contacts. + * + * Merging two Contact will result in a deletation of the source Contact + * after fulling the destination Contact with missing information that + * come from the source Contact. + * + * @param src the source Contact + * @param dst the destination Contact + */ + void mergeContacts(Contact & dst, Contact & src); + + /** + * Moves a Contact from to a group. + * + * @param contact the Contact to move + * @param dst the destination group + */ + void moveContactToGroup(const std::string & dst, Contact & contact); + + /** + * Gets a ContactGroup given its UUID. + * + * @param groupId the group UUID of the desired ContactGroup + * @return a pointer to the ContactGroup, NULL if not found + */ + ContactGroup * getContactGroup(const std::string & groupId) const; + + /** + * @return a copy of the set of ContactGroups. + */ + ContactGroupSet getContactGroupSet() const { + return ContactGroupSet(_contactGroupSet); + } + + /** + * Gets the list of Contacts. + * + * @return the list of Contacts. + */ + const Contacts & getContacts() const { + return _contacts; + } + + /** + * Finds the first Contact that owns an IMContact. + * + * @param imContact the IMContact to look for + * @return the Contact or NULL if not found + */ + Contact * findContactThatOwns(const IMContact & imContact) const; + + /** + * Finds the first Contact that owns an Number. + * + * @param number the number to look for + * @return the Contact or NULL if not found + */ + Contact * findContactThatOwns(const std::string & number) const; + + /** + * Gets the Contact of given UUID. + * + * @param contactId the contact UUID + * @return the Contact or NULL if no found + */ + Contact * getContact(const std::string & contactId) const; + + /** + * Gets the UUID of a ContactGroup from its name. + * + * @param groupName the name of the group to find + * @return the UUID of the group. An empty string if not found + */ + std::string getContactGroupIdFromName(const std::string & groupName) const; + + /** + * Locks the ContactList. + * + * A locked ContactList can't be modified. + * The ContactList must be unlocked by calling unlock. + * + * This method is used by the model and the control. + */ + //void lock(); + + /** + * Unlocks the ContactList. + * + * This method is used by the model and the control. + */ + //void unlock(); + + static RecursiveMutex _mutex; + +private: + + /** + * @see IMAccountManager::imAccountRemovedEvent + */ + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMContactListHandler::newIMContactAddedEvent + */ + void newIMContactAddedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & newIMContact); + + /** + * @see IMContactListHandler::imContactRemovedEvent + */ + void imContactRemovedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & imContact); + + /** + * @see IMContactListHandler::imContactMovedEvent + */ + void imContactMovedEventHandler(IMContactListHandler & sender, + const std::string & groupName, IMContact & imContact); + + /** + * @see IMContactListHandler::newContactGroupAddedEvent + */ + void newContactGroupAddedEventHandler(IMContactList & sender, + const std::string & groupName); + + /** + * @see IMContactListHandler::contactGroupRemovedEvent + */ + void contactGroupRemovedEventHandler(IMContactList & sender, + const std::string & groupName); + + /** + * @see PresenceHandler::presenceStateChangedEventHandler + */ + void presenceStateChangedEventHandler(PresenceHandler & sender, + EnumPresenceState::PresenceState state, + const std::string & alias, const IMContact & imContact); + + /** + * @see PresenceHandler::contactIconChangedEvent + */ + void contactIconChangedEventHandler(PresenceHandler & sender, + const IMContact & imContact, OWPicture icon); + + /** + * @see Contact::contactChangedEvent + */ + void contactChangedEventHandler(Contact & sender); + + /** + * Add an IMContact to a Contact. + * + * It sends an asynchronous command to IMContactListHandler. + * + * Must only be called by Contact + * + * @param contact the Contact that wants to add an IMContact + * @param imContact the IMContact to add + */ + void addIMContact(Contact & contact, const IMContact & imContact); + + /** + * Remove an IMContact from a Contact. + * + * It sends an asynchronous command to IMContactListHandler. + * + * Must only be called by Contact + * + * @param contact the Contact that wants to remove an IMContact + * @param imContact the IMContact to remove + */ + void removeIMContact(Contact & contact, const IMContact & imContact); + + /** + * Moves a Contact to a group without modifying IM lists. + */ + void _moveContactToGroup(const std::string & dst, Contact & contact); + + /** + * Actually add a ContactGroup. + * + * @param groupName the group name + */ + void _addContactGroup(const std::string & groupName); + + /** + * Actually remove a ContactGroup. + * + * @param groupId the group UUID + */ + void _removeContactGroup(const std::string & groupId); + + /** + * Actually add the Contact to a ContactGroup. + * + * @param contact the Contact + * @param groupName the ContactGroup + */ + void _addToContactGroup(const std::string & groupName, Contact & contact); + + /** Set of ContactGroup. */ + ContactGroupSet _contactGroupSet; + + /** Vector of Contact. */ + Contacts _contacts; + + UserProfile & _userProfile; + + IMContactListHandler & _imContactListHandler; + + +}; + +#endif //OWCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactListRPCStorage.h" + +#include "ContactList.h" + +ContactListRPCStorage::ContactListRPCStorage(ContactList & contactList) + : ContactListStorage(contactList) { +} + +ContactListRPCStorage::~ContactListRPCStorage() { +} + +bool ContactListRPCStorage::load(const std::string & url) { + return false; +} + +bool ContactListRPCStorage::save(const std::string & url) { + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListRPCStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTLISTRPCSTORAGE_H +#define CONTACTLISTRPCSTORAGE_H + +#include "ContactListStorage.h" + +class ContactList; + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactListRPCStorage : public ContactListStorage { +public: + + ContactListRPCStorage(ContactList & contactList); + + ~ContactListRPCStorage(); + + bool load(const std::string & url); + + bool save(const std::string & url); +}; + +#endif //CONTACTLISTRPCSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListStorage.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTLISTSTORAGE_H +#define CONTACTLISTSTORAGE_H + +#include + +class ContactList; + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactListStorage : public Storage { +public: + + ContactListStorage(ContactList & contactList) + : _contactList(contactList) { } + + virtual ~ContactListStorage() { } + +protected: + + ContactList & _contactList; +}; + +#endif //CONTACTLISTSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactListXMLSerializer1.h" + +#include "ContactXMLSerializer1.h" +#include "ContactList.h" +#include "Contact.h" + +#include + +using namespace std; + +ContactListXMLSerializer1::ContactListXMLSerializer1(ContactList & contactList, IMAccountList & imAccountList) + : _contactList(contactList), + _imAccountList(imAccountList) { +} + +string ContactListXMLSerializer1::serialize() { + string result; + + //_contactList.lock(); + RecursiveMutex::ScopedLock lock(ContactList::_mutex); + ContactList::Contacts contacts = _contactList.getContacts(); + + result += "\n"; + + for (ContactList::Contacts::const_iterator it = contacts.begin(); + it != contacts.end(); + ++it) { + ContactXMLSerializer1 serializer((Contact &)(*it), _contactList, _imAccountList); + result += serializer.serialize(); + } + + result += "\n"; + + //_contactList.unlock(); + + return result; +} + +bool ContactListXMLSerializer1::unserialize(const std::string & data) { + TiXmlDocument doc; + bool result = true; + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlNode * contactlist = docHandle.FirstChild("contactlist").Node(); + + if (contactlist) { + //Retrieving Contacts + TiXmlNode * lastChild = NULL; + while (result && (lastChild = contactlist->IterateChildren("wgcard", lastChild))) { + string nodeData; + nodeData << *lastChild; + ContactXMLSerializer1 serializer(_contactList.createContact(), + _contactList, _imAccountList); + result = serializer.unserialize(nodeData); + } + //// + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer1.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTLISTXMLSERIALIZER1_H +#define OWCONTACTLISTXMLSERIALIZER1_H + +#include + +#include + +class ContactList; +class IMAccountList; + +/** + * 1st version of ContactListXMLSerializer1. Uses ContactXMLSerializer1. + * + * @author Philippe Bernery + */ +class ContactListXMLSerializer1 : public Serializable { +public: + + ContactListXMLSerializer1(ContactList & contactList, IMAccountList & _imAccountList); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + ContactList & _contactList; + + IMAccountList & _imAccountList; + +}; + +#endif //OWCONTACTLISTXMLSERIALIZER1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactListXMLSerializer.h" + +#include "ContactXMLSerializer.h" +#include "ContactList.h" +#include "Contact.h" + +#include + +using namespace std; + +ContactListXMLSerializer::ContactListXMLSerializer(ContactList & contactList, IMAccountList & imAccountList) + : _contactList(contactList), + _imAccountList(imAccountList) { +} + +string ContactListXMLSerializer::serialize() { + string result; + + //_contactList.lock(); + RecursiveMutex::ScopedLock lock(ContactList::_mutex); + ContactList::Contacts contacts = _contactList.getContacts(); + + result += "\n"; + + for (ContactList::Contacts::const_iterator it = contacts.begin(); + it != contacts.end(); + ++it) { + ContactXMLSerializer serializer((Contact &)(*it), _contactList, _imAccountList); + result += serializer.serialize(); + } + + result += "\n"; + + //_contactList.unlock(); + + return result; +} + +bool ContactListXMLSerializer::unserialize(const std::string & data) { + TiXmlDocument doc; + bool result = true; + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlNode * contactlist = docHandle.FirstChild("contactlist").Node(); + + if (contactlist) { + //Retrieving Contacts + TiXmlNode * lastChild = NULL; + while (result && (lastChild = contactlist->IterateChildren("wgcard", lastChild))) { + string nodeData; + nodeData << *lastChild; + ContactXMLSerializer serializer(_contactList.createContact(), + _contactList, _imAccountList); + result = serializer.unserialize(nodeData); + } + //// + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactListXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTLISTXMLSERIALIZER_H +#define CONTACTLISTXMLSERIALIZER_H + +#include + +#include + +class ContactList; +class IMAccountList; + +/** + * Serialize a Contact object. + * + * @author Philippe Bernery + */ +class ContactListXMLSerializer : public Serializable { +public: + + ContactListXMLSerializer(ContactList & contactList, IMAccountList & _imAccountList); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + ContactList & _contactList; + + IMAccountList & _imAccountList; + +}; + +#endif //CONTACTLISTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateAway.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateAway::execute(ContactProfile & contact) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateAway.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEAWAY_H +#define CONTACTPRESENCESTATEAWAY_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceStateAway : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateAway; + } +}; + +#endif //CONTACTPRESENCESTATEAWAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceState.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceState.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceState.h" + +#include +#include + +#include + +#include + +ContactPresenceState::ContactPresenceState() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateDoNotDisturb.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateDoNotDisturb::execute(ContactProfile & contact) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateDoNotDisturb.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEDONOTDISTURB_H +#define CONTACTPRESENCESTATEDONOTDISTURB_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceStateDoNotDisturb : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateDoNotDisturb; + } +}; + +#endif //CONTACTPRESENCESTATEDONOTDISTURB_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceState.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATE_H +#define CONTACTPRESENCESTATE_H + +#include + +class ContactProfile; + +/** + * Represents the presence state of a Contact. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceState { +public: + + ContactPresenceState(); + + virtual ~ContactPresenceState() { + } + + virtual void execute(ContactProfile & contact) = 0; + + /** + * Gets the status code corresponding to this Contact presence state. + * + * @return status code of this state + */ + virtual EnumPresenceState::PresenceState getCode() const = 0; +}; + +#endif //CONTACTPRESENCESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,34 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateOffline.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateOffline::execute(ContactProfile & contact) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + Sound::play(config.getAudioIMAccountDisconnectedFile()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOffline.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEOFFLINE_H +#define CONTACTPRESENCESTATEOFFLINE_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceStateOffline : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateOffline; + } +}; + +#endif //CONTACTPRESENCESTATEOFFLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,41 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateOnline.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateOnline::execute(ContactProfile & contact) { + static bool firstConnection = true; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (firstConnection) { + Sound::play(config.getAudioIMAccountConnectedFile()); + firstConnection = false; + } else { + Sound::play(config.getAudioContactOnlineFile()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateOnline.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEONLINE_H +#define CONTACTPRESENCESTATEONLINE_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceStateOnline : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateOnline; + } +}; + +#endif //CONTACTPRESENCESTATEONLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateUnavailable.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateUnavailable::execute(ContactProfile & contact) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnavailable.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEUNAVAILABLE_H +#define CONTACTPRESENCESTATEUNAVAILABLE_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Mathieu Stute + */ +class ContactPresenceStateUnavailable : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateUnavailable; + } +}; + +#endif //CONTACTPRESENCESTATEUNAVAILABLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactPresenceStateUnknown.h" + +#include "ContactProfile.h" + +#include +#include + +#include + +#include + +void ContactPresenceStateUnknown::execute(ContactProfile & contact) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactPresenceStateUnknown.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPRESENCESTATEUNKNOWN_H +#define CONTACTPRESENCESTATEUNKNOWN_H + +#include "ContactPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ContactPresenceStateUnknown : public ContactPresenceState { +public: + + void execute(ContactProfile & contact); + + EnumPresenceState::PresenceState getCode() const { + return EnumPresenceState::PresenceStateUnknown; + } +}; + +#endif //CONTACTPRESENCESTATEUNKNOWN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactProfile.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactProfile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactProfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,556 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactProfile.h" + +#include "ContactPresenceStateUnknown.h" +#include "ContactPresenceStateOnline.h" +#include "ContactPresenceStateOffline.h" +#include "ContactPresenceStateAway.h" +#include "ContactPresenceStateDoNotDisturb.h" +#include "ContactPresenceStateUnavailable.h" + +#include +#include +#include + +#include +#include +#include +#include + +#define LOGGER_COMPONENT "ContactList" +#include +#include +#include + +#include + +using namespace std; + +ContactProfile::PresenceStates ContactProfile::_presenceStateMap; + +static ContactPresenceStateUnknown contactPresenceStateUnknown; +static ContactPresenceStateOnline contactPresenceStateOnline; +static ContactPresenceStateOffline contactPresenceStateOffline; +static ContactPresenceStateAway contactPresenceStateAway; +static ContactPresenceStateDoNotDisturb contactPresenceStateDoNotDisturb; +static ContactPresenceStateUnavailable contactPresenceStateUnavailable; + +ContactProfile::ContactProfile() { + _sex = EnumSex::SexUnknown; + _blocked = false; + _preferredIMContact = NULL; + + _uuid = Uuid::generateString(); + + //Default state (ContactPresenceStateUnknown) + _presenceState = &contactPresenceStateUnknown; + + _presenceStateMap[contactPresenceStateUnknown.getCode()] = &contactPresenceStateUnknown; + _presenceStateMap[contactPresenceStateOnline.getCode()] = &contactPresenceStateOnline; + _presenceStateMap[contactPresenceStateOffline.getCode()] = &contactPresenceStateOffline; + _presenceStateMap[contactPresenceStateAway.getCode()] = &contactPresenceStateAway; + _presenceStateMap[contactPresenceStateDoNotDisturb.getCode()] = &contactPresenceStateDoNotDisturb; + _presenceStateMap[contactPresenceStateUnavailable.getCode()] = &contactPresenceStateUnavailable; +} + +ContactProfile::ContactProfile(const ContactProfile & contactProfile) +: Profile() { + copy(contactProfile); +} + +ContactProfile::~ContactProfile() { +} + +ContactProfile & ContactProfile::operator=(const ContactProfile & contactProfile) { + if (&contactProfile != this) { + copy(contactProfile); + } + + return *this; +} + +void ContactProfile::copy(const ContactProfile & contactProfile) { + Profile::copy(contactProfile); + _uuid = contactProfile._uuid; + _blocked = contactProfile._blocked; + _preferredIMContact = contactProfile._preferredIMContact; + _imContactSet = contactProfile._imContactSet; + _groupId = contactProfile._groupId; + _presenceState = contactProfile._presenceState; +} + +bool ContactProfile::operator == (const ContactProfile & contactProfile) const { + return (_uuid == contactProfile._uuid); +} + +void ContactProfile::addIMContact(const IMContact & imContact) { + pair result = _imContactSet.insert(imContact); + updatePresenceState(); +} + +void ContactProfile::removeIMContact(const IMContact & imContact) { + IMContactSet::iterator it = _imContactSet.find(imContact); + + if (it != _imContactSet.end()) { + _imContactSet.erase(it); + } + updatePresenceState(); +} + +bool ContactProfile::hasIMContact(const IMContact & imContact) const { + if (_imContactSet.find(imContact) != _imContactSet.end()) { + return true; + } else { + return false; + } +} + +IMContact * ContactProfile::getIMContact(const IMContact & imContact) const { + IMContactSet::const_iterator it = _imContactSet.find(imContact); + if (it != _imContactSet.end()) { + return ((IMContact *) &(*it)); + } else { + return NULL; + } +} + +void ContactProfile::setGroupId(const std::string & groupId) { + _groupId = groupId; + profileChangedEvent(*this); +} + +bool ContactProfile::hasIM() const +{ + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + if(config.getSipChatWithoutPresence()) + { + String imContact = getFirstAvailableSIPNumber(); + if(!imContact.empty()) + return true; + } + + return (getPresenceState() != EnumPresenceState::PresenceStateOffline && + getPresenceState() != EnumPresenceState::PresenceStateUnknown && + getPresenceState() != EnumPresenceState::PresenceStateUnavailable); +} + +bool ContactProfile::hasCall() const { + if (!getPreferredNumber().empty()) { + return true; + } else { + return false; + } +} + +bool ContactProfile::hasVideo() const { + return hasAvailableQuteComId(); +} + +bool ContactProfile::hasVoiceMail() const { + // For now, we assume only QuteCom accounts support voice mail + return !getFirstQuteComId().empty(); +} + +bool ContactProfile::hasFileTransfer() const { + if (!getFirstQuteComId().empty() && isAvailable()) { + IMContact imContact = getFirstAvailableQuteComIMContact(); + if ((imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { + return true; + } + } + return false; +} + +std::string ContactProfile::getPreferredNumber() const { + string result; + + if (!_preferredNumber.empty()) { + result = _preferredNumber; + } else if (hasAvailableQuteComId()) { + result = getFirstAvailableQuteComId(); + } else if (hasAvailableSIPNumber()) { + result = getFirstAvailableSIPNumber(); + } else if (!_mobilePhone.empty()) { + result = _mobilePhone; + } else if (!_homePhone.empty()) { + result = _homePhone; + } else if (!_workPhone.empty()) { + result = _workPhone; + } else if (!_otherPhone.empty()) { + result = _otherPhone; + } + + return result; +} + +/** + * Helper to assign scores to presence states + * FIXME: This should be moved in EnumPresenceState, as a getScore() method + */ +static int getStateScore(EnumPresenceState::PresenceState state) { + typedef std::map StateScoreMap; + static StateScoreMap stateScoreMap; + + if (stateScoreMap.empty()) { + stateScoreMap[EnumPresenceState::PresenceStateOffline] = 1; + stateScoreMap[EnumPresenceState::PresenceStateDoNotDisturb] = 2; + stateScoreMap[EnumPresenceState::PresenceStateAway] = 3; + stateScoreMap[EnumPresenceState::PresenceStateOnline] = 4; + } + + StateScoreMap::const_iterator it = stateScoreMap.find(state); + if (it == stateScoreMap.end()) { + return 0; + } + return it->second; +}; + +IMContact * ContactProfile::getPreferredIMContact() const { + const int offlineScore = getStateScore(EnumPresenceState::PresenceStateOffline); + + IMContact * bestIMContact = 0; + int bestIMContactScore = -1; + IMContact * bestQuteComContact = 0; + int bestQuteComContactScore = -1; + + // Find best IM contact and best QuteCom contact + IMContactSet::const_iterator + it = _imContactSet.begin(), + end = _imContactSet.end(); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + bool ignorePresence = config.getSipChatWithoutPresence(); + + for (; it!=end; ++it) { + EnumPresenceState::PresenceState state = it->getPresenceState(); + int contactScore = getStateScore(state); + + + + if (!ignorePresence && (contactScore <= offlineScore)) + continue; + + + IMContact* contact = const_cast( &(*it) ); + + if (contact->getProtocol() == EnumIMProtocol::IMProtocolQuteCom) { + if (contactScore > bestQuteComContactScore) { + bestQuteComContact = contact; + bestQuteComContactScore = contactScore; + } + } else { + if (contactScore > bestIMContactScore) { + bestIMContact = contact; + bestIMContactScore = contactScore; + } + } + } + + // Get score of _preferredIMContact, if any + int preferredIMContactScore; + if (_preferredIMContact) { + preferredIMContactScore = getStateScore(_preferredIMContact->getPresenceState()); + } else { + preferredIMContactScore = -1; + } + + // Choose the best one + IMContact* bestContact = 0; + if (bestQuteComContactScore >= bestIMContactScore) { + if (preferredIMContactScore >= bestQuteComContactScore) { + bestContact = _preferredIMContact; + } else { + bestContact = bestQuteComContact; + } + } else { + if (preferredIMContactScore >= bestIMContactScore) { + bestContact = _preferredIMContact; + } else { + bestContact = bestIMContact; + } + } + //// + + return bestContact; +} + +EnumPresenceState::PresenceState ContactProfile::getPresenceState() const { + return _presenceState->getCode(); +} + +EnumPresenceState::PresenceState ContactProfile::computePresenceState() const { + // Find best state + EnumPresenceState::PresenceState bestState = EnumPresenceState::PresenceStateUnknown; + int bestStateScore = 0; + + IMContactSet::const_iterator + it = _imContactSet.begin(), + end = _imContactSet.end(); + + for (; it!=end; ++it) { + EnumPresenceState::PresenceState contactState = it->getPresenceState(); + int contactStateScore = getStateScore(contactState); + + if (contactStateScore > bestStateScore) { + bestState = contactState; + bestStateScore = contactStateScore; + } + } + + return bestState; +} + +void ContactProfile::updatePresenceState() { + EnumPresenceState::PresenceState presenceState = computePresenceState(); + + LOG_DEBUG("PresenceState=" + String::fromNumber(presenceState)); + + PresenceStates::iterator it = _presenceStateMap.find(presenceState); + if (it == _presenceStateMap.end()) { + LOG_FATAL("unknown PresenceState=" + String::fromNumber(presenceState)); + } + + ContactPresenceState * state = it->second; + if (state->getCode() == presenceState) { + if (_presenceState->getCode() != state->getCode()) { + _presenceState = state; + _presenceState->execute(*this); + LOG_DEBUG("presence state changed=" + EnumPresenceState::toString(_presenceState->getCode())); + profileChangedEvent(*this); + return; + } + } +} + +OWPicture ContactProfile::getIcon() const { + OWPicture icon; + for (IMContactSet::const_iterator it = _imContactSet.begin() ; + it != _imContactSet.end() ; + it++) { + icon = it->getIcon(); + if (!icon.getData().empty()) { + return icon; + } + } + + icon = Profile::getIcon(); + if(!icon.getData().empty()) + return icon; + + return AvatarList::getInstance().getDefaultAvatarPicture(); +} + +string ContactProfile::getDisplayName() const { + string result; + string pseudo; + string contactId; + + if (!_firstName.empty() || !_lastName.empty()) { + result += _firstName; + + if (!result.empty() && !_lastName.empty()) { + result += " "; + } + + result += _lastName; + } + + // Take the alias of the first IMContact + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if (!(*it).getAlias().empty()) { + pseudo = (*it).getAlias(); + contactId = (*it).getDisplayContactId(); + break; + } + } + + // If no alias set, we take the first contact id: + if (contactId.empty()) { + IMContactSet::const_iterator it = _imContactSet.begin(); + if (it != _imContactSet.end()) { + contactId = (*it).getDisplayContactId(); + } + } + + if (result.empty()) { + result = contactId; + } + + // FIXME: I don't know how this happens, but sometimes the pseudo is set to + // "(null)"! Since I don't have time to investigate that bug (and don't + // know how to reproduce it), I resort to this hack for now. + // See ticket #1495 + if (!pseudo.empty() && pseudo != "(null)") { + result += " - (" + pseudo + ")"; + } + + return result; +} + +std::string ContactProfile::getShortDisplayName() const +{ + std::string toReturn; + + if(getFirstName().empty()) + { + if(!getLastName().empty()) + toReturn = getLastName(); + } + else + { + toReturn = getFirstName(); + if(!getLastName().empty()) + toReturn += " " +getLastName(); + } + + return toReturn; +} + +IMContact * ContactProfile::getFirstAvailableIMContact(IMChatSession & imChatSession) const { + IMContact * result = NULL; + + for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; ++it) { + if (((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline) + && (((*it).getIMAccountId()) == imChatSession.getIMChat().getIMAccountId())) { + result = (IMContact *)&(*it); + break; + } + } + + return result; +} + +std::string ContactProfile::getFirstAvailableSIPNumber() const { + std::string result; + + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if (((*it).getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || + ((*it).getProtocol() == EnumIMProtocol::IMProtocolSIP)) { + result = (*it).getContactId(); + break; + } + } + + return result; +} + +bool ContactProfile::hasAvailableSIPNumber() const { + return (!getFirstAvailableSIPNumber().empty()); +} + +IMContact ContactProfile::getFirstAvailableQuteComIMContact() const { + IMContact result; + + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + + if (((*it).getProtocol() == EnumIMProtocol::IMProtocolQuteCom) + && ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline)) { + result = *it; + break; + } + } + + return result; +} + +std::string ContactProfile::getFirstAvailableQuteComId() const { + return getFirstAvailableQuteComIMContact().getContactId(); +} + +std::string ContactProfile::getFirstQuteComId() const { + std::string result; + + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if (((*it).getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { + result = (*it).getContactId(); + break; + } + } + + return result; +} + +bool ContactProfile::hasAvailableQuteComId() const { + return (!getFirstAvailableQuteComId().empty()); +} + +bool ContactProfile::hasAvailableSIPNumberAndNoQuteComId() const { + + bool hasSIP = false; + + for (IMContactSet::const_iterator it = _imContactSet.begin(); + it != _imContactSet.end(); + ++it) { + if (((*it).getProtocol() == EnumIMProtocol::IMProtocolQuteCom)) { + return false; + } else if (((*it).getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || + ((*it).getProtocol() == EnumIMProtocol::IMProtocolSIP)) { + hasSIP = true; + } + } + + return hasSIP; +} + +std::string ContactProfile::getFirstFreePhoneNumber() const { + std::string result; + + if (hasAvailableQuteComId()) { + result = getFirstAvailableQuteComId(); + } else if (hasAvailableSIPNumber()) { + result = getFirstAvailableSIPNumber(); + } + + return result; +} + +std::string ContactProfile::getFirstVoiceMailNumber() const { + return getFirstQuteComId(); +} + +bool ContactProfile::hasFreeCall() const { + return (!getFirstFreePhoneNumber().empty()); +} + +void ContactProfile::setQuteComId(const std::string & qutecomPhoneId) { + Profile::setQuteComId(qutecomPhoneId); + addIMContact(IMContact(EnumIMProtocol::IMProtocolQuteCom, qutecomPhoneId)); +} + +bool ContactProfile::isAvailable() const { + return ((getPresenceState() != EnumPresenceState::PresenceStateOffline) + && ((getPresenceState() != EnumPresenceState::PresenceStateUnknown))); +} + +void ContactProfile::setUUID(const std::string & newUUID) { + _uuid = newUUID; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactProfile.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,390 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTPROFILE_H +#define CONTACTPROFILE_H + +#include + +#include +#include + +#include + +#include +#include + +class UserProfile; +class ContactList; +class IMChatSession; +class ContactPresenceState; + +/** + * Contact Profile. + * + * This class is a simple container of information needed for a Contact. + * + * @ingroup model + * @author Philippe Bernery + * @author Mathieu Stute + */ +class ContactProfile : public Profile { + friend class Contact; +public: + + //typedef std::set ContactGroupSet; + + /** + * Emitted when the contact presence state has been changed. + * FIXME not connected yet, this is for the toaster/notification + * + * @param sender this class + */ + Event contactProfilePresenceChangedEvent; + + ContactProfile(); + + ContactProfile(const ContactProfile & contactProfile); + + ContactProfile & operator=(const ContactProfile & contactProfile); + + ~ContactProfile(); + + bool operator==(const ContactProfile & contactProfile) const; + + /** + * Gets the preferred phone number. + * + * @return the preferred phone number. If no preferred phone number has been set + * the first set phone number is returned (the test is made in this order: + * qutecom id (if online), mobile, home, work and other phone number). If no phone number has + * been set, a null string is returned. + */ + std::string getPreferredNumber() const; + + /** + * Gets the preferred IMContact. + * + * @return the preferred IMContact. If no IMContact has been set or no + * IMContact is online, return NULL. + */ + IMContact * getPreferredIMContact() const; + + /** + * Gets an available IMContact. + * + * An available IMContact is a connected IMContact of protocol used in + * the imChatSession. + * + * @return an available IMContact. If no IMContact has been found, return NULL. + */ + IMContact * getFirstAvailableIMContact(IMChatSession & imChatSession) const; + + /** + * Adds an IMContact to the ContactProfile. + * + * @param imContact IMContact to add + */ + virtual void addIMContact(const IMContact & imContact); + + /** + * Removes an IMContact from the ContactProfile. + * + * @param imContact IMContact to remove + */ + virtual void removeIMContact(const IMContact & imContact); + + /** + * @param imContact the maybe associated IMContact + * @return true if this Contact is associated with the given IMContact. + */ + bool hasIMContact(const IMContact & imContact) const; + + /** + * Return the IMContact equals to given IMContact. + * + * @param imContact the desired IMContact + * @return the IMContact or NULL if not found + */ + IMContact * getIMContact(const IMContact & imContact) const; + + /** + * @return Set of IMContact + */ + const IMContactSet & getIMContactSet() { + return _imContactSet; + } + + /** + * @return true if chat is available with this Contact. + */ + bool hasIM() const; + + /** + * @return true if we can place a call with this Contact. + */ + bool hasCall() const; + + /** + * @return true if we can place a free call with this Contact + * A free call can be made if the Contact has a QuteCom ID or + * a SIP address. + */ + bool hasFreeCall() const; + + /** + * @return true if the contact has a voice mail. + */ + bool hasVoiceMail() const; + + /** + * @return true if we can place a video call with this Contact. + */ + bool hasVideo() const; + + /** + * @return true if we can transfer a file with this Contact. + */ + bool hasFileTransfer() const; + + /** + * @return free phone number (QuteCom ID, SIP address). + * an empty string if no phone number found + */ + std::string getFirstFreePhoneNumber() const; + + /** + * Gets the first available QuteCom contact id that is online. + * + * @return the first available QuteCom contact id. + */ + std::string getFirstAvailableQuteComId() const; + + /** + * Gets the first available QuteCom IMContact that is online. + * + * @return the first available QuteCom IMContact. + */ + IMContact getFirstAvailableQuteComIMContact() const; + + /** + * Gets the first QuteCom contact. + * + * @return the first available QuteCom contact id. + */ + std::string getFirstQuteComId() const; + + /** + * Gets an available SIP address than can be called + * taken from IMContacts of protocol SIP/SIMPLE. + * + * This method does not check QuteCom IMContacts + * + * @return the found SIP address or an empty string + * if no SIP address found + */ + std::string getFirstAvailableSIPNumber() const; + + /** + * Gets the first voice mail number. + * + * @return the first available voice mail number. + */ + std::string getFirstVoiceMailNumber() const; + + /** + * @return a display name computed from available Contact information. + */ + std::string getDisplayName() const; + + /** + * @return a display name in a short way. + */ + std::string getShortDisplayName() const; + + /** + * Gets the PresenceState of this Contact. + * + * @return the PresenceState of this Contact + */ + EnumPresenceState::PresenceState getPresenceState() const; + + /** + * @return true if presence state is different of Unknown and Offline. + */ + bool isAvailable() const; + + /** + * Gets the UUID of this Contact. + * + * @return the UUID of this Contact. + */ + std::string getUUID() const { + return _uuid; + } + + /** + * Set the UUID + * + * @param the UUID to be set + */ + void setUUID(const std::string & newUUID); + + /** + * @return true if the Contact is blocked. + */ + bool isBlocked() { return _blocked; } + + // Inherited from Profile + OWPicture getIcon() const; + //// + + /** + * Actually sets the groupId. + */ + void setGroupId(const std::string & groupId); + + /** + * Gets the group id of this Contact. + * Empty string if no group set. + */ + std::string getGroupId() const { + return _groupId; + } + + /** + * @return true when a qutecom IMContact has been declared + * and this id is online. + */ + bool hasAvailableQuteComId() const; + + /** + * Checks if a SIP number is available. + * + * This method does not check QuteCom ID. + * + * @return true if the Contact has an available SIP Address. + */ + bool hasAvailableSIPNumber() const; + + /** + * Checks if a the contact has an available SIP adresse AND NO + * available QuteCom ID. + * + * @return true if the Contact has an available SIP Address + * AND NO QuteCom ID. + */ + bool hasAvailableSIPNumberAndNoQuteComId() const; + + virtual void setMobilePhone(const std::string & mobilePhone) { Profile::setMobilePhone(mobilePhone); updatePresenceState(); } + + virtual void setHomePhone(const std::string & homePhone) { Profile::setHomePhone(homePhone); updatePresenceState(); } + + virtual void setWorkPhone(const std::string & workPhone) { Profile::setWorkPhone(workPhone); updatePresenceState(); } + + virtual void setOtherPhone(const std::string & otherPhone) { Profile::setOtherPhone(otherPhone); updatePresenceState(); } + +protected: + + // Inherited from Profile + // Used by WsDirectory + virtual void setQuteComId(const std::string & qutecomPhoneId); + //// + + /** + * Sets the group of this ContactProfile. + * + * @param groupName the group name + */ + virtual void setGroup(const std::string & /*groupName*/) {} + + /** + * Gets the group of the ContactProfile. + * + * @return the group name + */ + virtual std::string getGroup() const { return ""; } + + /** Copy a ContactProfile. */ + virtual void copy(const ContactProfile & contactProfile); + + /** + * Updated the current presence state. + * + * Called by the class Contact (that's why it's protected and not private). + * ContactProfile cannot be connected to the event imContactChangedEvent, so Contact + * connects to this event and notify ContactProfile via the method updatePresenceState() + */ + void updatePresenceState(); + + /** The preferrred number for this Contact. */ + std::string _preferredNumber; + + /** The preferred IMContact to use for this Contact. */ + IMContact * _preferredIMContact; + + /** Is the contact blocked? */ + bool _blocked; + + /** List of IMContact of this Contact. */ + IMContactSet _imContactSet; + + /** Name of the group of this Contact. */ + std::string _groupId; + + /** + * UUID of this Contact. + * + * Each Contact is identified by a UUID. + * A Contact copy has the same UUID. + */ + std::string _uuid; + + /** Current presence state of this Contact. */ + ContactPresenceState * _presenceState; + +private: + + /** + * Computes the current presence state. + * + * Internal helper method. + * + * Rules are: + * - At least one protocol is online -> online + * Or + * - At least one protocol is away -> away + * Or + * - At least one protocol is dnd -> dnd + * Or + * - Contact has a phone number and user has a QuteCom account -> unavailable + * Otherwise: unknown + * + * @return current presence state + */ + EnumPresenceState::PresenceState computePresenceState() const; + + /** Defines the map of ContactPresenceState. */ + typedef std::map< EnumPresenceState::PresenceState, ContactPresenceState * > PresenceStates; + + /** Map of ContactPresenceState. */ + static PresenceStates _presenceStateMap; +}; + +#endif //CONTACTPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactXMLSerializer1.h" + +#include "Contact.h" +#include "ContactGroup.h" +#include "ContactList.h" + +#include + +#include +#include + +#include + +#include + +using namespace std; + +ContactXMLSerializer1::ContactXMLSerializer1(Contact & contact, + ContactList & contactList, IMAccountList & imAccountList) + : ProfileXMLSerializer(contact), + _contact(contact), + _contactList(contactList), + _imAccountList(imAccountList) { +} + +string ContactXMLSerializer1::serialize() { + string result; + + result += "\n"; + + result += ProfileXMLSerializer::serialize(); + + //Serializing IMContacts + for (IMContactSet::const_iterator it = _contact._imContactSet.begin(); + it != _contact._imContactSet.end(); + ++it) { + IMContactXMLSerializer1 imContactSerializer((IMContact &)*it, _imAccountList); + result += imContactSerializer.serialize(); + } + //// + + //Serializing group + ContactGroup * contactGroup = _contactList.getContactGroup(_contact.getGroupId()); + if (contactGroup) { + result += "getName() + "]]>\n"; + } + //// + + //serializing UUID + result += ""+ _contact.getUUID() +"\n"; + //// + + result += "\n"; + + return result; +} + +bool ContactXMLSerializer1::unserialize(const string & data) { + TiXmlDocument doc; + EnumIMProtocol imProtocol; + bool result = true; + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlHandle wgCard = docHandle.FirstChild("wgcard"); + + ProfileXMLSerializer::unserializeContent(wgCard); + + //retrieving UUID + TiXmlNode * uuid = wgCard.FirstChild("UUID").Node(); + if (uuid) { + _contact.setUUID(string(uuid->FirstChild()->Value())); + } + //// + + //Retrieving Groups + TiXmlNode * group = wgCard.FirstChild("group").Node(); + if (group) { + _contactList._addToContactGroup(string(group->FirstChild()->Value()), _contact); + } + //// + + //Retrieving IMContacts + TiXmlNode * imLastChild = NULL; + while (result && (imLastChild = wgCard.Node()->IterateChildren("im", imLastChild))) { + string imData; + IMContact imContact(EnumIMProtocol::IMProtocolUnknown, String::null); + IMContactXMLSerializer1 imContactSerializer(imContact, _imAccountList); + + imData << *imLastChild; + result = imContactSerializer.unserialize(imData); + + _contact._addIMContact(imContact); + } + //// + + _contact.updatePresenceState(); + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer1.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,57 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTXMLSERIALIZER1_H +#define OWCONTACTXMLSERIALIZER1_H + +#include + +#include + +class Contact; +class ContactList; +class IMAccountList; + +/** + * This is the 1st version of ContactXMLSerializer1. + * + * It uses IMContactXMLSerializer1 + * + * @author Philippe Bernery + */ +class ContactXMLSerializer1 : public ProfileXMLSerializer { +public: + + ContactXMLSerializer1(Contact & contact, ContactList & contactList, + IMAccountList & imAccountList); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + Contact & _contact; + + ContactList & _contactList; + + IMAccountList & _imAccountList; +}; + +#endif //OWCONTACTXMLSERIALIZER1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,125 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactXMLSerializer.h" + +#include "Contact.h" +#include "ContactGroup.h" +#include "ContactList.h" + +#include +#include +#include + +#include +#include + +#include + +#include + +using namespace std; + +ContactXMLSerializer::ContactXMLSerializer(Contact & contact, + ContactList & contactList, IMAccountList & imAccountList) + : ProfileXMLSerializer(contact), + _contact(contact), + _contactList(contactList), + _imAccountList(imAccountList) { +} + +string ContactXMLSerializer::serialize() { + string result; + + result += "\n"; + + result += ProfileXMLSerializer::serialize(); + + //Serializing IMContacts + for (IMContactSet::const_iterator it = _contact._imContactSet.begin(); + it != _contact._imContactSet.end(); + ++it) { + IMContactXMLSerializer imContactSerializer((IMContact &)*it, _imAccountList); + result += imContactSerializer.serialize(); + } + //// + + //Serializing group + ContactGroup * contactGroup = _contactList.getContactGroup(_contact.getGroupId()); + if (contactGroup) { + result += "getName() + "]]>\n"; + } + //// + + //serializing UUID + result += ""+ _contact.getUUID() +"\n"; + //// + + result += "\n"; + + return result; +} + +bool ContactXMLSerializer::unserialize(const string & data) { + TiXmlDocument doc; + EnumIMProtocol imProtocol; + bool result = true; + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string defaultRealm = config.getQuteComRealm(); + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlHandle wgCard = docHandle.FirstChild("wgcard"); + + ProfileXMLSerializer::unserializeContent(wgCard); + + //retrieving UUID + TiXmlNode * uuid = wgCard.FirstChild("UUID").Node(); + if (uuid) { + _contact.setUUID(string(uuid->FirstChild()->Value())); + } + //// + + //Retrieving Groups + TiXmlNode * group = wgCard.FirstChild("group").Node(); + if (group) { + _contactList._addToContactGroup(string(group->FirstChild()->Value()), _contact); + } + //// + + //Retrieving IMContacts + TiXmlNode * imLastChild = NULL; + while (result && (imLastChild = wgCard.Node()->IterateChildren("im", imLastChild))) { + string imData; + IMContact imContact(EnumIMProtocol::IMProtocolUnknown, String::null); + IMContactXMLSerializer imContactSerializer(imContact, _imAccountList); + imContactSerializer.setDefaultRealm(defaultRealm); + + imData << *imLastChild; + result = imContactSerializer.unserialize(imData); + + _contact._addIMContact(imContact); + } + //// + + _contact.updatePresenceState(); + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/ContactXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONTACTXMLSERIALIZER_H +#define CONTACTXMLSERIALIZER_H + +#include + +#include + +class Contact; +class ContactList; +class IMAccountList; + +/** + * Serialize a Contact object. + * + * @author Philippe Bernery + */ +class ContactXMLSerializer : public ProfileXMLSerializer { +public: + + ContactXMLSerializer(Contact & contact, ContactList & contactList, + IMAccountList & imAccountList); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + Contact & _contact; + + ContactList & _contactList; + + IMAccountList & _imAccountList; +}; + +#endif //CONTACTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/IMContactListHandler.cpp qutecom-2.2+dfsg1/qutecom/src/model/contactlist/IMContactListHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/IMContactListHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/IMContactListHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,233 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "IMContactListHandler.h" + +#include +#include +#include + +#define LOGGER_COMPONENT "ContactList" +#include +#include + +IMContactListHandler::IMContactListHandler(UserProfile & userProfile) + : _userProfile(userProfile) { + userProfile.getIMAccountManager().imAccountAddedEvent += + boost::bind(&IMContactListHandler::imAccountAddedEventHandler, this, _1, _2); + userProfile.getIMAccountManager().imAccountRemovedEvent += + boost::bind(&IMContactListHandler::imAccountRemovedEventHandler, this, _1, _2); +} + +IMContactListHandler::~IMContactListHandler() { +} + +void IMContactListHandler::addIMContact(const std::string & groupName, const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); + + if (it != _imContactListMap.end()) { + (*it).second->addContact(groupName, imContact.getContactId()); + } else { + LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::removeIMContact(const std::string & groupName, const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); + + if (it != _imContactListMap.end()) { + (*it).second->removeContact(groupName, imContact.getContactId()); + } else { + LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::newContactAddedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); + if (imAccount) { + IMContact imContact(*imAccount, contactId); + _imContactList.push_back(imContact); + MyIMContactList::iterator it = + std::find(_imContactList.begin(), _imContactList.end(), imContact); + newIMContactAddedEvent(*this, groupName, (IMContact &)*it); + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::contactRemovedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); + if (imAccount) { + IMContact imContact(*imAccount, contactId); + + MyIMContactList::iterator it = + std::find(_imContactList.begin(), _imContactList.end(), imContact); + + if (it != _imContactList.end()) { + imContactRemovedEvent(*this, groupName, (IMContact &)*it); + _imContactList.erase(it); + } else { + LOG_ERROR("contact not found"); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + IMContactListMap::iterator it = _imContactListMap.find(imAccountId); + if (it == _imContactListMap.end()) { + IMContactList * imContactList = IMWrapperFactory::getFactory().createIMContactList(*imAccount); + if (imContactList) { + imContactList->newContactAddedEvent += + boost::bind(&IMContactListHandler::newContactAddedEventHandler, this, _1, _2, _3); + imContactList->contactRemovedEvent += + boost::bind(&IMContactListHandler::contactRemovedEventHandler, this, _1, _2, _3); + imContactList->contactMovedEvent += + boost::bind(&IMContactListHandler::contactMovedEventHandler, this, _1, _2, _3); + imContactList->newContactGroupAddedEvent += + boost::bind(&IMContactListHandler::newContactGroupAddedEventHandler, this, _1, _2); + imContactList->contactGroupRemovedEvent += + boost::bind(&IMContactListHandler::contactGroupRemovedEventHandler, this, _1, _2); + + _imContactListMap.insert(std::pair(imAccountId, imContactList)); + } else { + LOG_DEBUG("cannot create an IMContactList"); + } + } else { + LOG_ERROR("this IMAccount has already been added " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); + if (it != _imContactListMap.end()) { + delete (*it).second; + _imContactListMap.erase(it); + } else { + LOG_ERROR("this IMAccount has not been added " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::contactMovedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); + if (imAccount) { + IMContact imContact(*imAccount, contactId); + MyIMContactList::const_iterator it = + std::find(_imContactList.begin(), _imContactList.end(), imContact); + + if (it != _imContactList.end()) { + LOG_DEBUG("an IMContact has moved:" + contactId); + imContactMovedEvent(*this, groupName, imContact); + } else { + LOG_DEBUG("this IMContact(" + contactId + ") from group " + groupName + + " has not been added yet. Adding it as new IMContact."); + newContactAddedEventHandler(sender, groupName, contactId); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::newContactGroupAddedEventHandler(IMContactList & sender, std::string groupName) { + newContactGroupAddedEvent(sender, groupName); +} + +void IMContactListHandler::contactGroupRemovedEventHandler(IMContactList & sender, std::string groupName) { + contactGroupRemovedEvent(sender, groupName); +} + +void IMContactListHandler::addGroup(const std::string & groupName) { + for (IMContactListMap::const_iterator it = _imContactListMap.begin(); + it != _imContactListMap.end(); it++) { + (*it).second->addGroup(groupName); + } +} + +void IMContactListHandler::removeGroup(const std::string & groupName) { + for (IMContactListMap::const_iterator it = _imContactListMap.begin(); + it != _imContactListMap.end(); it++) { + (*it).second->removeGroup(groupName); + } +} + +void IMContactListHandler::moveContactToGroup(const std::string & newGroupName, + const std::string & oldGroupName, const IMContact & imContact) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); + if (it != _imContactListMap.end()) { + (*it).second->moveContactToGroup(newGroupName, oldGroupName, imContact.getContactId()); + } else { + LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void IMContactListHandler::changeGroupName(const std::string & oldGroupName, const std::string & newGroupName) { + for (IMContactListMap::const_iterator it = _imContactListMap.begin(); + it != _imContactListMap.end(); it++) { + (*it).second->changeGroupName(oldGroupName, newGroupName); + } +} + +void IMContactListHandler::unregisterAllEvents() { + for (IMContactListMap::const_iterator it = _imContactListMap.begin(); + it != _imContactListMap.end(); it++) { + (*it).second->newContactAddedEvent -= + boost::bind(&IMContactListHandler::newContactAddedEventHandler, this, _1, _2, _3); + (*it).second->contactRemovedEvent -= + boost::bind(&IMContactListHandler::contactRemovedEventHandler, this, _1, _2, _3); + (*it).second->contactMovedEvent -= + boost::bind(&IMContactListHandler::contactMovedEventHandler, this, _1, _2, _3); + (*it).second->newContactGroupAddedEvent -= + boost::bind(&IMContactListHandler::newContactGroupAddedEventHandler, this, _1, _2); + (*it).second->contactGroupRemovedEvent -= + boost::bind(&IMContactListHandler::contactGroupRemovedEventHandler, this, _1, _2); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/IMContactListHandler.h qutecom-2.2+dfsg1/qutecom/src/model/contactlist/IMContactListHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/contactlist/IMContactListHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/contactlist/IMContactListHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,186 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef IMCONTACTLISTHANDLER_H +#define IMCONTACTLISTHANDLER_H + +#include + +#include +#include + +#include +#include +#include + +class IMAccount; +class IMAccountManager; +class IMContactList; +class UserProfile; + +class IMContactListHandler : public Trackable { +public: + + /** + * Emitted when an IMContact has been added remotely. + * + * @param sender this class + * @param groupName the group where the IMContact has been added + * @param newIMContact the new IMContact + * @see IMContactList::newContactAddedEvent + */ + Event< void (IMContactListHandler & sender, const std::string & groupName, + IMContact & newIMContact) > newIMContactAddedEvent; + + /** + * Emitted when an IMContact has been removed remotely. + * + * @param sender this class + * @param groupName the group where the IMContact is + * @param imContact the removed IMContact + * @see IMContactList::imContactRemovedEvent + */ + Event< void (IMContactListHandler & sender, const std::string & groupName, + IMContact & imContact) > imContactRemovedEvent; + + /** + * @see IMContactList::contactMovedEvent + */ + Event< void (IMContactListHandler & sender, const std::string & groupName, + IMContact & imContact) > imContactMovedEvent; + + /** + * Emitted when an IMContact has been added remotely. + * + * @param sender this class + * @param groupName the added group + */ + Event< void (IMContactList & sender, std::string groupName) > newContactGroupAddedEvent; + + /** + * Emitted when a group has been removed. + * + * @param sender this class + * @param groupName the removed group + */ + Event< void (IMContactList & sender, std::string groupName) > contactGroupRemovedEvent; + + IMContactListHandler(UserProfile & userProfile); + + ~IMContactListHandler(); + + /** + * Remotely adds an IMContact. + * + * @param groupName the group where we want to add the IMContact + * @param imContact the IMContact to add + */ + void addIMContact(const std::string & groupName, const IMContact & imContact); + + /** + * Remotely deletes an IMContact. + * + * @param groupName the group if the IMContact + * @param imContact the IMContact to remove + */ + void removeIMContact(const std::string & groupName, const IMContact & imContact); + + /** + * Remotely adds a group. + * + * @param groupName the group name to add the contact in + */ + void addGroup(const std::string & groupName); + + /** + * Remotely deletes a group. + * + * @param groupName the group name of the contact + */ + void removeGroup(const std::string & groupName); + + /** + * Renames a group. + * + * @param oldGroupName the group to rename + * @param newGroupName the desired group name + */ + void changeGroupName(const std::string & oldGroupName, const std::string & newGroupName); + + /** + * @see IMContactList::moveContactToGroup + */ + void moveContactToGroup(const std::string & newGroupName, + const std::string & oldGroupName, const IMContact & imContact); + + /** + * Tells IMContactListHandler to unregister to all registered Events. + */ + void unregisterAllEvents(); + +private: + + /** + * @see IMContactList::newContactAddedEvent + */ + void newContactAddedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId); + + /** + * @see IMContactList::contactRemovedEvent + */ + void contactRemovedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId); + + /** + * @see IMContactList::contactMovedEvent + */ + void contactMovedEventHandler(IMContactList & sender, + std::string groupName, std::string contactId); + + /** + * @see IMContactList::newContactGroupAddedEvent + */ + void newContactGroupAddedEventHandler(IMContactList & sender, std::string groupName); + + /** + * @see IMContactList::contactGroupRemovedEvent + */ + void contactGroupRemovedEventHandler(IMContactList & sender, std::string groupName); + + /** + * @see IMAccountManager::imAccountAddedEvent + */ + void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMAccountManager::imAccountRemovedEvent + */ + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + typedef std::map IMContactListMap; + IMContactListMap _imContactListMap; + + typedef std::list MyIMContactList; + MyIMContactList _imContactList; + + UserProfile & _userProfile; +}; + +#endif //IMCONTACTLISTHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfTheme.cpp qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfTheme.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfTheme.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfTheme.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,252 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "DtmfTheme.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +DtmfTheme::DtmfTheme(QuteCom & qutecomPhone, + const std::string & repertory, const std::string & xmlDescriptor) + : _repertory(repertory), + _qutecomPhone(qutecomPhone) { + + _dialpadMode = plain; + + _xmlDescriptor = _repertory + xmlDescriptor; + TiXmlDocument doc; + doc.LoadFile(_xmlDescriptor); + + TiXmlHandle docHandle(&doc); + + //extract info from the dialpad element + TiXmlElement * dialpadElt = docHandle.FirstChild("dialpad").Element(); + if (dialpadElt) { + + const char * attr = dialpadElt->Attribute("mode"); + if (attr) { + if (std::string(attr) == "plain") { + _dialpadMode = plain; + } else if (std::string(attr) == "iconified") { + _dialpadMode = iconified; + } else if (std::string(attr) == "svg") { + _dialpadMode = svg; + } else { + _dialpadMode = unknown; + } + } + + attr = dialpadElt->Attribute("name"); + if (attr) { + _name = std::string(attr); + } + + attr = dialpadElt->Attribute("pixmap"); + if (attr) { + _imageFile = std::string(attr); + } + } + + TiXmlElement * tonesNode = dialpadElt->FirstChildElement("tones"); + if (tonesNode) { + + //iterate over + TiXmlElement * toneElt = tonesNode->FirstChildElement("tone"); + while (toneElt) { + + std::string key; + std::string soundFile; + std::string text; + std::string imageFile; + Tone::Action localAction = Tone::Play; + Tone::Action remoteAction = Tone::Play; + Tone::AudioFormat audioFormat = Tone::Raw; + + //extract the attribut key, sound_file & audioformat + const char * attr = toneElt->Attribute("key"); + if (attr) { + key = std::string(attr); + } + + attr = toneElt->Attribute("format"); + std::string audioType; + if (attr) { + if (std::string(attr) == "raw") { + audioFormat = Tone::Raw; + audioType = ".raw"; + } else if (std::string(attr) == "wav") { + audioFormat = Tone::Wav; + audioType = ".wav"; + } else if (std::string(attr) == "dtmf") { + audioFormat = Tone::Dtmf; + audioType = ".wav"; + } else { + audioFormat = Tone::Unknown; + LOG_ERROR("This sound format does not exist !"); + } + + if (key == "*" ) { + soundFile = "sound_star" + audioType; + } else if (key == "#" ) { + soundFile = "sound_pound" + audioType; + } else { + soundFile = "sound_" + key + audioType; + } + } + + //local, remote, ... + attr = toneElt->Attribute("local"); + if (attr) { + if (std::string(attr) == "play") { + localAction = Tone::Play; + } else { + localAction = Tone::None; + } + } + + attr = toneElt->Attribute("remote"); + if (attr) { + if (std::string(attr) == "play") { + remoteAction = Tone::Play; + } else { + remoteAction = Tone::None; + } + } + + attr = toneElt->Attribute("image_file"); + if (attr) { + imageFile = std::string(attr); + } + + attr = toneElt->Attribute("text"); + if (attr) { + text = std::string(attr); + } + + //the minimum to have a valid Tone + if ((!key.empty()) && (audioFormat != Tone::Unknown)) { + Tone * tone = new Tone(key, soundFile, text, imageFile, + localAction, remoteAction, audioFormat + ); + _toneList[key] = tone; + } + + toneElt = toneElt->NextSiblingElement("tone"); + } + } +} + +DtmfTheme::~DtmfTheme() { +} + +std::string DtmfTheme::getName() const { + return _name; +} + +void DtmfTheme::playTone(const std::string & key) const { + + const Tone * tone = getTone(key); + if (!tone) { + LOG_WARN("Could not find a tone for key '" + key + "'"); + return; + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string soundfile = _repertory + tone->getSoundFile(); + + if (tone->getLocalAction() == Tone::Play) { + Sound::play(File::convertPathSeparators(soundfile), + config.getAudioRingerDeviceId() + ); + } + + if (tone->getRemoteAction() == Tone::Play) { + UserProfile * userprofile = + _qutecomPhone.getUserProfileHandler().getCurrentUserProfile(); + if (userprofile) { + IPhoneLine * iphoneline = userprofile->getActivePhoneLine(); + if (iphoneline) { + PhoneCall * phonecall = iphoneline->getActivePhoneCall(); + if (phonecall) { + + if (tone->getAudioFormat() == Tone::Dtmf) { + iphoneline->playDtmf( + phonecall->getCallId(), + (char)tone->getKey()[0] + ); + } else { + iphoneline->playSoundFile( + phonecall->getCallId(), + File::convertPathSeparators(soundfile) + ); + } + } + } + } + } +} + +StringList DtmfTheme::getToneList() const { + + StringList toReturn; + + DtmfTheme::ToneList::const_iterator it; + for (it = _toneList.begin(); it != _toneList.end(); it++) { + toReturn.push_back((*it).first); + } + + return toReturn; +} + +const Tone * DtmfTheme::getTone(const std::string & key) const { + + DtmfTheme::ToneList::const_iterator it; + for (it = _toneList.begin(); it != _toneList.end(); it++) { + + if ((*it).first == key) { + return (*it).second; + } + } + return NULL; +} + +std::string DtmfTheme::getImageFile() const { + return _imageFile; +} + +DtmfTheme::DialpadMode DtmfTheme::getDialpadMode() const { + return _dialpadMode; +} + +std::string DtmfTheme::getRepertory() const { + return _repertory; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfTheme.h qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfTheme.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfTheme.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfTheme.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWDTMFTHEME_H +#define OWDTMFTHEME_H + +#include "Tone.h" + +#include + +#include +#include + +class QuteCom; + +/** + * Dtmf theme. + * + * @ingroup model + * @author Mathieu Stute + */ +class DtmfTheme { + friend class DtmfThemeManager; + typedef std::map ToneList; +public: + + enum DialpadMode { + plain, + iconified, + svg, + unknown + }; + + ~DtmfTheme(); + + std::string getName() const; + + StringList getToneList() const; + + const Tone * getTone(const std::string & key) const; + + void playTone(const std::string & key) const; + + std::string getImageFile() const; + + std::string getRepertory() const; + + DtmfTheme::DialpadMode getDialpadMode() const; + +private: + + DtmfTheme(QuteCom & qutecomPhone, const std::string & repertory, const std::string & xmlDescriptor); + + std::string _repertory; + + std::string _xmlDescriptor; + + std::string _name; + + std::string _imageFile; + + DtmfTheme::DialpadMode _dialpadMode; + + ToneList _toneList; + + QuteCom & _qutecomPhone; +}; + +#endif //OWDTMFTHEME_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,178 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "DtmfThemeManager.h" + +#include + +#include +#include + +using namespace std; + +DtmfThemeManager::DtmfThemeManager(QuteCom & qutecomPhone, const string & dtmfDirPath) + : _dtmfDirPath(dtmfDirPath), + _qutecomPhone(qutecomPhone) { + + constructDTMF(); +} + +DtmfThemeManager::~DtmfThemeManager() { + deleteDTMF(); +} + +void DtmfThemeManager::constructDTMF() { + File dir(_dtmfDirPath); + StringList dirList = dir.getDirectoryList(); + + //iterate over dtmf dir + for (unsigned int i = 0; i != dirList.size(); i++) { + + File themeDir( + _dtmfDirPath + + File::getPathSeparator() + + dirList[i] + + File::getPathSeparator() + ); + StringList fileList = themeDir.getFileList(); + + //iterate over files + for (unsigned int j = 0; j != fileList.size(); j++) { + + //find the .xml file + string filename = fileList[j]; + string ext = filename.substr(filename.size() - 4, fileList[j].size() - 1); + if (ext == string(".xml")) { + + string themeRepertory = + _dtmfDirPath + dirList[i] + File::getPathSeparator(); + + //build DtmfTheme + DtmfTheme * theme = new DtmfTheme( + _qutecomPhone, themeRepertory, fileList[j] + ); + +#if defined(OS_MACOSX) + /* + * some audio smileys are deactivated on MacOS X because Raw files cannot + * currently be played on this platform. + */ + + bool isRaw = false; + if (theme->getTone("0")->getAudioFormat() == Tone::Raw) { + isRaw = true; + } + if (!isRaw && (theme->getTone("1")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("2")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("3")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("4")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("5")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("6")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("7")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("8")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("9")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("#")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + if (!isRaw && (theme->getTone("*")->getAudioFormat() == Tone::Raw)) { + isRaw = true; + } + + if (isRaw) { + LOG_DEBUG("\n\nfind a xml file: " + fileList[j] + "\n -> CONTAIN RAW !! \n"); + OWSAFE_DELETE(theme); + continue; + } +#endif + + //add it in the list + _dtmfThemeList[theme->getName()] = theme; + LOG_DEBUG("find a theme : " + fileList[j]); + } + } + } +} + +void DtmfThemeManager::deleteDTMF() { + + //delete allocated DtmfTheme + DtmfThemeManager::DtmfThemeList::const_iterator it; + const DtmfTheme * ref = NULL; + for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { + ref = (*it).second; + if (ref) { + OWSAFE_DELETE(ref); + } + } + OWSAFE_DELETE(ref); + _dtmfThemeList.clear(); +} + +bool DtmfThemeManager::refreshDtmfThemes() { + + //delete old themes + deleteDTMF(); + + //construct new themes + constructDTMF(); + + return true; +} + +StringList DtmfThemeManager::getThemeList() const { + + StringList toReturn; + + DtmfThemeManager::DtmfThemeList::const_iterator it; + for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { + toReturn.push_back((*it).first); + } + + return toReturn; +} + +const DtmfTheme * DtmfThemeManager::getDtmfTheme(const string & themeName) const { + + DtmfThemeManager::DtmfThemeList::const_iterator it; + for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { + if (((*it).first) == themeName) { + return (*it).second; + } + } + + return NULL; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.h qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/DtmfThemeManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWDTMFTHEMEMANAGER_H +#define OWDTMFTHEMEMANAGER_H + +#include "DtmfTheme.h" + +#include + +#include +#include + +class QuteCom; + +/** + * Dtmf theme. + * + * @ingroup model + * @author Mathieu Stute + */ +class DtmfThemeManager { +public: + + DtmfThemeManager(QuteCom & qutecomPhone, const std::string & dtmfDirPath); + + ~DtmfThemeManager(); + + StringList getThemeList() const; + + const DtmfTheme * getDtmfTheme(const std::string & themeName) const; + + bool refreshDtmfThemes(); + +private: + + void constructDTMF(); + + void deleteDTMF(); + + typedef std::map DtmfThemeList; + + DtmfThemeList _dtmfThemeList; + + std::string _dtmfDirPath; + + QuteCom & _qutecomPhone; +}; + +#endif //OWDTMFTHEMEMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/Tone.cpp qutecom-2.2+dfsg1/qutecom/src/model/dtmf/Tone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/Tone.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/Tone.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Tone.h" + +#include + +Tone::Tone(const std::string & key, const std::string & soundFile, + const std::string & text, const std::string & imageFile, + Tone::Action localAction, Tone::Action remoteAction, + Tone::AudioFormat audioFormat) : + _localAction(localAction), + _remoteAction(remoteAction), + _audioFormat(audioFormat), + _imageFile(imageFile), + _soundFile(soundFile), + _text(text), + _key(key) { +} + +Tone::~Tone() { +} + +std::string Tone::getImageFile() const { + return _imageFile; +} + +std::string Tone::getSoundFile() const { + return _soundFile; +} + +std::string Tone::getText() const { + return _text; +} + +std::string Tone::getKey() const { + return _key; +} + +Tone::Action Tone::getLocalAction() const { + return _localAction; +} + +Tone::Action Tone::getRemoteAction() const { + return _remoteAction; +} + +Tone::AudioFormat Tone::getAudioFormat() const { + return _audioFormat; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/Tone.h qutecom-2.2+dfsg1/qutecom/src/model/dtmf/Tone.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/dtmf/Tone.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/dtmf/Tone.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWTONE_H +#define OWTONE_H + +#include + +/** + * Dtmf theme. + * + * @ingroup model + * @author Mathieu Stute + */ +class Tone { + friend class DtmfTheme; +public: + + enum Action { + Play, + None, + }; + + enum AudioFormat { + Dtmf, + Raw, + Wav, + Unknown, + }; + + ~Tone(); + + std::string getKey() const; + + std::string getSoundFile() const; + + std::string getText() const; + + std::string getImageFile() const; + + Tone::Action getLocalAction() const; + + Tone::Action getRemoteAction() const; + + Tone::AudioFormat getAudioFormat() const; + +private: + + Tone(const std::string & key, + const std::string & soundFile, + const std::string & text = "", + const std::string & imageFile = "", + Tone::Action localAction = Tone::Play, + Tone::Action remoteAction = Tone::Play, + Tone::AudioFormat audioFormat = Tone::Raw + ); + + /* action for local */ + Tone::Action _localAction; + + /* action for remote */ + Tone::Action _remoteAction; + + /* the format of the sound file associated with this Tone */ + Tone::AudioFormat _audioFormat; + + /* the path to the image file associated with this Tone */ + std::string _imageFile; + + /* the path to the sound file associated with this Tone */ + std::string _soundFile; + + /* the text string associated with this Tone. */ + std::string _text; + + /* the code of the key associated with this Tone. */ + std::string _key; +}; + +#endif //OWTONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/History.cpp qutecom-2.2+dfsg1/qutecom/src/model/history/History.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/History.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/History.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,483 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "History.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + + +History::History(UserProfile & userProfile) + : _userProfile(userProfile) { + + _collection = new HistoryMementoCollection(); + _missedCallCount = 0; +} + +History::~History() { +} + +HistoryMementoCollection * History::getHistoryMementoCollection() { + return _collection; +} + +unsigned int History::addMemento(HistoryMemento * memento) { + unsigned id = _collection->addMemento(memento); + mementoAddedEvent(*this, id); + return id; +} + +void History::updateCallDuration(int callId, int duration) { + HistoryMemento * memento = _collection->getMementoByCallId(callId); + if (memento) { + memento->updateDuration(duration); + unsigned id = _collection->getMementoId(memento); + mementoUpdatedEvent(*this, id); + } +} + +void History::updateSMSState(int callId, HistoryMemento::State state) { + HistoryMemento * memento = _collection->getMementoBySMSId(callId); + if (memento) { + memento->updateState(state); + unsigned id = _collection->getMementoId(memento); + mementoUpdatedEvent(*this, id); + } +} + +void History::updateCallState(int callId, HistoryMemento::State state) { + HistoryMemento * memento = _collection->getMementoByCallId(callId); + if (memento) { + memento->updateState(state); + unsigned id = _collection->getMementoId(memento); + mementoUpdatedEvent(*this, id); + + if (state == HistoryMemento::MissedCall) { + _missedCallCount++; + unseenMissedCallsChangedEvent(*this, _missedCallCount); + } + } +} + +unsigned int History::size() const { + return _collection->size(); +} + +std::string History::serialize() { + std::stringstream ss; + try { + boost::archive::xml_oarchive oa(ss); + oa << BOOST_SERIALIZATION_NVP(_collection); + oa << BOOST_SERIALIZATION_NVP(_missedCallCount); + } catch (boost::archive::archive_exception & e) { + LOG_DEBUG(e.what()); + return String::null; + } + return ss.str(); +} + +bool History::unserialize(const std::string & data) { + std::stringstream ss(data); + try { + boost::archive::xml_iarchive ia(ss); + ia >> BOOST_SERIALIZATION_NVP(_collection); + ia >> BOOST_SERIALIZATION_NVP(_missedCallCount); + } catch (boost::archive::archive_exception & e) { + LOG_DEBUG(e.what()); + return false; + } + return true; +} + +void History::clear(HistoryMemento::State state, bool notify) { + _collection->clear(state); + if (notify) { + mementoRemovedEvent(*this, 0); + } +} + +std::string History::toString() const { + return _collection->toString(); +} + +void History::removeMemento(unsigned id) { + _collection->removeMemento(id); + mementoRemovedEvent(*this, id); +} + +HistoryMemento * History::getMemento(unsigned id) { + Mutex::ScopedLock scopedLock(_mutex); + + return _collection->getMemento(id); +} + +HistoryMementoCollection * History::getMementos(HistoryMemento::State state, int count) { + Mutex::ScopedLock scopedLock(_mutex); + + return _collection->getMementos(state, count); +} + +bool History::load(const std::string & url) { + FileReader file(url); + + if (file.open()) { + std::string data = file.read(); + + //clear & unserialize the history + clear(HistoryMemento::Any, false); + bool toReturn = unserialize(data); + historyLoadedEvent(*this); + + return toReturn; + } + + return true; +} + +bool History::save(const std::string & url) { + FileWriter file(url); + + file.write(serialize()); + + historySavedEvent(*this); + + return true; +} + +void History::replay(unsigned id) { + + //replay only outgoing call + if (getMemento(id)->isCallMemento()) { + std::string phoneNumber = getMemento(id)->getPeer(); + _userProfile.getActivePhoneLine()->makeCall(phoneNumber); + } +} + +void History::resetUnseenMissedCalls() { + _missedCallCount = 0; + unseenMissedCallsChangedEvent(*this, _missedCallCount); +} + +int History::getUnseenMissedCalls() { + Mutex::ScopedLock scopedLock(_mutex); + + return _missedCallCount; +} +bool History::loadChatLog(std::string chatlog, HistoryMementoCollection * hmc, std::string * userlogin, StringList * cuuidList) { + + // complete filename + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string filename = File::convertPathSeparators( + config.getConfigDir() + "chatlogs" + File::getPathSeparator() + + _userProfile.getName() + File::getPathSeparator() + + chatlog + ".xml" + ); + //// + + //open and read chat log + FileReader file( filename ); + if(!file.open()) { + return false; + } + std::string lu = file.read(); + std::stringstream ss(lu); + boost::archive::xml_iarchive ia(ss); + //// + + // contact + int nbcontact = 0; + ia >> BOOST_SERIALIZATION_NVP(nbcontact); + for( int ic = 0; ic < nbcontact; ++ic) { + std::string cuuid; + ia >> BOOST_SERIALIZATION_NVP(cuuid); + cuuidList->push_back(cuuid); + } + + //user login + ia >> BOOST_SERIALIZATION_NVP(*userlogin); + + //number of message + int size = 0; + ia >> BOOST_SERIALIZATION_NVP(size); + + //load every message + std::string date, peer, data; + for(int i = 0; i < size; ++i) { + + // + // more compact serialization + // + //ia >> BOOST_SERIALIZATION_NVP(date); + //ia >> BOOST_SERIALIZATION_NVP(peer); + //ia >> BOOST_SERIALIZATION_NVP(data); + + //Date fdate( String(date.substr(8,2)).toInteger(), + // String(date.substr(5,2)).toInteger(), + // String(date.substr(0,4)).toInteger()); + + //Time ftime( String(date.substr(11,2)).toInteger(), + // String(date.substr(14,2)).toInteger(), + // String(date.substr(17,4)).toInteger()); + + //HistoryMemento* hm = new HistoryMemento(HistoryMemento::ChatSession, fdate, ftime, peer, -1, data); + + HistoryMemento* hm = new HistoryMemento(); + hm->load(ia,HistoryMemento::SERIALIZATION_VERSION); + + /** duration -1 means it is an history message */ + hm->updateDuration(-1); + + hmc->addMemento(hm); + } + return true; +} + +bool History::addChatMementoSession(IMChatSession * imchatSession) { + int chatSessionID = imchatSession->getId(); + if(_chatSessionsMementos[chatSessionID] == NULL){ + _chatSessionsMementos[chatSessionID] = new HistoryMementoCollection(); + +/** reload chat log (lost feature) ***/ +// +// //load last chat log +// IMContactSet contactSet = imchatSession->getIMContactSet(); +// +// // TO DO loop on all contacts ?? for now it could only be 1 contact... +// IMContactSet::const_iterator itc = contactSet.begin(); +// //// +// Contact * thecontact = _userProfile.getContactList().findContactThatOwns(*itc); +// if(!thecontact) { +// return true; +// } +// std::string repload = File::convertPathSeparators( +// Path::getQuteComConfigurationDirPath() + "chatlogs" + File::getPathSeparator() +// + _userProfile.getName() + File::getPathSeparator() +// ); +// FileReader filec( repload + thecontact->getUUID() + ".xml" ); +// if(!filec.open()) { +// return true; +// } +// std::string readdatas = filec.read(); +// +// //parse datas +// TiXmlDocument doc; +// doc.Parse(readdatas.c_str()); +// TiXmlHandle docHandle(&doc); +// +// TiXmlNode * lastChat= NULL; +// while ((lastChat = docHandle.ToNode()->IterateChildren("chat", lastChat))) { +// std::string filechat(lastChat->FirstChild("id")->ToElement()->GetText()); +// +// std::string username; +// StringList cuuidList; +// if (!loadChatLog(filechat,_chatSessionsMementos[chatSessionID], &username, &cuuidList)) { +// continue; +// } +// } +/**********/ + + return true; + } + return false; +} + +void History::removeChatMementoSession(IMChatSession * imchatSession) { + int chatSessionID = imchatSession->getId(); + + HistoryMementoCollection * collection = NULL; + if((collection = _chatSessionsMementos[chatSessionID]) != NULL){ + //seek for history chat + int nbhistory = 0; + HistoryMap::iterator ithm; + for (ithm = collection->begin(); ithm != collection->end(); ++ithm) { + HistoryMemento* hm = ithm->second; + + // duration -1 means it is an history message + if( hm->getDuration() != -1 ) { + break; + } + ++nbhistory; + } + //// + + // don't save empty chat history + int size = collection->size() - nbhistory; + if(size>0) { + //save chat log + Date saveDate; + Time saveTime; + std::string peer = ""; + std::string filechat = String::fromNumber(saveDate.getYear(), 2) + String::fromNumber(saveDate.getMonth(), 2) + + String::fromNumber(saveDate.getDay(), 2) + String::fromNumber(saveTime.getHour(), 2) + + String::fromNumber(saveTime.getMinute(), 2) + String::fromNumber(saveTime.getSecond(), 2)+ + "_" + String::fromNumber(chatSessionID); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string saverep = File::convertPathSeparators( + config.getConfigDir() + "chatlogs" + File::getPathSeparator() + + _userProfile.getName() + File::getPathSeparator() + ); + File::createPath(saverep); + //save file should be unique + while(File::exists(saverep + filechat + ".xml")) { + filechat += "_f"; + } + //// + FileWriter file(saverep + filechat+".xml"); + std::stringstream ss; + bool serializedSuccessfully = false; + try { + boost::archive::xml_oarchive oa(ss); + + //constructs list of login per peer + std::map*> aliasMap; + IMContactSet contactSet = imchatSession->getIMContactSet(); + for (IMContactSet::const_iterator itc = contactSet.begin(); itc != contactSet.end(); ++itc) { + Contact * thecontact = _userProfile.getContactList().findContactThatOwns(*itc); + std::string cuuid = "unrecognized"; + if(thecontact) { + cuuid = thecontact->getUUID(); + } + + if(aliasMap[cuuid] == NULL) { + aliasMap[cuuid] = new std::vector; + } + aliasMap[cuuid]->push_back(itc->cleanContactId()); + } + //// + + // saves number of peer in this chat + int nbcontact = aliasMap.size(); + oa << BOOST_SERIALIZATION_NVP(nbcontact); + //// + + //links all peers to this chat + for(std::map*>::const_iterator itam = aliasMap.begin(); + itam != aliasMap.end(); ++itam) { + + /** links peer -> chat */ + + //filechat + std::string tobewritten = "\n\t"+filechat+"\n"; + + //different login used by this peer during this chat + for(std::vector::const_iterator itv = itam->second->begin(); itv != itam->second->end(); ++itv) { + tobewritten += "\t" + (*itv) + "\n"; + + peer += "," + (*itv); + } + + //// + + tobewritten += "\n"; + ///// + + std::string cuuid = itam->first; + FileWriter contactFile( saverep + cuuid + ".xml" ); + contactFile.setAppendMode(true); + contactFile.write(tobewritten); + + /** links chat -> peer */ + oa << BOOST_SERIALIZATION_NVP(cuuid); + } + //// + + // saves user login for this chat + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imchatSession->getIMChat().getIMAccountId()); + std::string userlogin; + if (imAccount) { + userlogin = imAccount->getLogin(); + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("cannot find the IMAccount"); + } + oa << BOOST_SERIALIZATION_NVP(userlogin); + //// + + // saves size + oa << BOOST_SERIALIZATION_NVP(size); + + // save all historymementos i.e. all message + for (;ithm != collection->end(); ++ithm) { + HistoryMemento* hm = ithm->second; + + // + // more compact serialization + // + //std::string date = hm->getDate().toString() + " " + hm->getTime().toString(); + //oa << BOOST_SERIALIZATION_NVP(date); + //std::string peer = hm->getPeer(); + //oa << BOOST_SERIALIZATION_NVP(peer); + //std::string data = hm->getData(); + //oa << BOOST_SERIALIZATION_NVP(data); + + hm->save(oa,HistoryMemento::SERIALIZATION_VERSION); + + } + serializedSuccessfully = true; + } catch (boost::archive::archive_exception & e) { + LOG_DEBUG(e.what()); + file.write(String::null); + } + + if (serializedSuccessfully) { + // xml_oarchive write the end of the xml in its destructor. + // This is why we do not write inside the try {} catch block + // because we would write before the xml_oarchive object is + // deleted. + file.write(ss.str()); + } + + if (peer.size() > 1) { + peer = peer.substr(1); + } + + HistoryMemento * historyMemento = new HistoryMemento(HistoryMemento::ChatSession, saveDate, saveTime, peer, -1, filechat); + historyMemento->updateDuration(0); + _userProfile.getHistory().addMemento(historyMemento); + } + _chatSessionsMementos.erase(chatSessionID); + delete collection; + } +} + +unsigned History::addChatMemento(HistoryMemento * memento, int chatSessionID) { + unsigned id = _chatSessionsMementos[chatSessionID]->addMemento(memento); + chatMementoAddedEvent(*this, id); + return id; +} + +HistoryMementoCollection * History::getSessionCollection(int chatSessionID) { + return _chatSessionsMementos[chatSessionID]; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/History.h qutecom-2.2+dfsg1/qutecom/src/model/history/History.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/History.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/History.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,295 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWHISTORY_H +#define OWHISTORY_H + +#include "HistoryMemento.h" +#include "HistoryMementoCollection.h" + +#include +#include +#include +#include + +#include +#include + +class UserProfile; +class IMContactSet; + +/** + * History (Care Taker in the Memento pattern) + * + * example: serialization example + *
+ *	std::ofstream ofs("history.log");
+ *	ofs << History::history.serialize();
+ *	ofs.close();
+ *	
+ * + * example: unserialize a History + *
+ *	std::string lines;
+ *
+ *	// assum you have read the save file
+ *	// and you have the content of this file
+ *	// in the std::string lines
+ *
+ *	History::history.unserialize(lines);
+ *	
+ * + * @author Mathieu Stute + */ +class History : public Serializable { +public: + + /** + * The history has been loaded. + */ + Event historyLoadedEvent; + + /** + * The history has been saved. + */ + Event historySavedEvent; + + /** + * A memento has been added. + */ + Event mementoAddedEvent; + + /** + * A chat memento has been added. + */ + Event chatMementoAddedEvent; + + /** + * A memento has been updated. + */ + Event mementoUpdatedEvent; + + /** + * A memento has been removed. + */ + Event mementoRemovedEvent; + + /** + * Unseen missed calls changed event. + */ + Event unseenMissedCallsChangedEvent; + + /** + * Default constructor + * + * @param qutecom a pointer to QuteCom + */ + History(UserProfile & userProfile); + + /** + * destructor. + */ + ~History(); + + bool load(const std::string & url); + + bool save(const std::string & url); + + /** + * get a HistoryMemento by its id. + * + * @param id the id + * @return the HistoryMemento with the given id + */ + HistoryMemento * getMemento(unsigned id); + + /** + * get a HistoryMementoCollection containing all mementos + * that match state. + * + * @param state filter memento by State + * @param count specify number of mementos to be returned + * @return a pointer to a HistoryMementoCollection + */ + HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1); + + /** + * remove a memento by its id. + * + * @param id the id + */ + void removeMemento(unsigned id); + + /** + * Clear entries of the history + * @param state type of entries to remove + */ + void clear(HistoryMemento::State state = HistoryMemento::Any, bool notify = true); + + /** + * return the number of HistoryMemento's. + * + * @return the number of HistoryMemento's + */ + unsigned size() const; + + /** + * add a history memento to the history. + * + * @param memento the memento to add + * @return the id of the memento + */ + unsigned addMemento(HistoryMemento * memento); + + /** + * Return a string representing this object. + * + * @return a string representing this object + */ + std::string toString() const; + + /** + * return a pointer to the HistoryMementoCollection. + * + * @return a pointer to the HistoryMementoCollection + */ + HistoryMementoCollection * getHistoryMementoCollection(); + + /** + * update a memento duration (for incoming/outgoing calls). + * + * @param callId callId associated to the memento + * @param duration duration + */ + void updateCallDuration(int callId, int duration); + + /** + * update a memento state (for incoming/outgoing calls). + * + * @param callId callId associated to the memento + * @param state the new state + */ + void updateCallState(int callId, HistoryMemento::State state); + + /** + * update a memento internal state (for SMS). + * + * @param callId callId associated to the memento + * @param state new state + */ + void updateSMSState(int callId, HistoryMemento::State state); + + /** + * update a memento internal state (for SMS). + * + * @param id memento to replay + */ + void replay(unsigned id); + + /** + * Reset unseen missed calls. + * + */ + void resetUnseenMissedCalls(); + + /** + * Returns the unseen missed calls count. + * + * @return unseen missed calls count + */ + int getUnseenMissedCalls(); + + /** + * Loads a collection of History from a saved chat log + * + *@param chatlog name of the file where the chat log is saved + *@param hmc HistoryMementoCollection to complete with chat messages + *@param userlogin login used by the user + *@return true if chat log has been loaded + */ + bool loadChatLog(std::string chatlog, HistoryMementoCollection * hmc, std::string * userlogin, StringList * cuuidList); + + /** + * Creates a new collection of History Memento for new a chat session + * + * @param chatSessionID : the ID of the chat sesssion + * @return true if the session has been added; false else + */ + bool addChatMementoSession(IMChatSession * imchatSession); + + /** + * Removes a collection of History Memento of a closing chat session + * + * @param chatSessionID : the ID of the chat sesssion + */ + void removeChatMementoSession(IMChatSession * imchatSession); + + /** + * add memento into the right chat memento collection + * + * @param memento the memento to add + * @param chatSessionID the ID of the chat sesssion to which the memento belongs + * @return the id of the memento + */ + unsigned addChatMemento(HistoryMemento * memento, int chatSessionID); + + /** + * Access to the collection corresponding to chatSessionID + * + * @param chatSessionID : the ID of the chat sesssion + * @return pointor to the HistoryMementoCollection of te chat session + */ + HistoryMementoCollection * getSessionCollection(int chatSessionID); + +private: + + /** + * Serialize the history. + */ + std::string serialize(); + + /** + * Serialize the history. + */ + bool unserialize(const std::string & data); + + /** + * Private HistoryMementoList that store + * all HistoryMemento objects. + */ + HistoryMementoCollection *_collection; + + /** + * Set of History Memento Collection that store every message + * of a chat session. + */ + std::map _chatSessionsMementos; + + /** A ref to UserProfile */ + UserProfile & _userProfile; + + /** Unseen missed calls count. */ + int _missedCallCount; + + /** Mutex for thread-safe. */ + mutable Mutex _mutex; +}; + +#endif //OWHISTORY_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMementoCollection.cpp qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMementoCollection.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMementoCollection.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMementoCollection.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,183 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "HistoryMementoCollection.h" + +#include +#include + +unsigned int HistoryMementoCollection::_historyId = 0; + +HistoryMementoCollection::HistoryMementoCollection() { +} + +HistoryMementoCollection::~HistoryMementoCollection() { +} + +unsigned int HistoryMementoCollection::addMemento(HistoryMemento * memento) { + _privateCollection[_historyId] = memento; + _historyId++; + return _historyId - 1; +} + +HistoryMemento * HistoryMementoCollection::getMementoByCallId(int callId) { + if( callId != -1 ) { + HistoryMap::iterator it; + for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { + if( ((*it).second->isCallMemento()) && + ((*it).second->getCallId() == callId) ) { + return (*it).second; + } + } + } + return NULL; +} + +HistoryMemento * HistoryMementoCollection::getMementoBySMSId(int callId) { + if( callId != -1 ) { + HistoryMap::iterator it; + for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { + if( ((*it).second->isSMSMemento()) && + ((*it).second->getCallId() == callId)) { + return (*it).second; + } + } + } + return NULL; +} + +unsigned int HistoryMementoCollection::size() { + return _privateCollection.size(); +} + +HistoryMemento * HistoryMementoCollection::getMemento(unsigned int id) { + HistoryMap::iterator it = _privateCollection.find(id); + if (it != _privateCollection.end()) { + return it->second; + } else { + return NULL; + } +} + +void HistoryMementoCollection::removeMemento(unsigned int id) { + _privateCollection.erase(_privateCollection.find(id)); +} + +void HistoryMementoCollection::clear(HistoryMemento::State state) { + + int id = -1; + HistoryMemento * ref = NULL; + + HistoryMap::iterator it; + for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { + + if( ref ) { + delete ref; + _privateCollection.erase(id); + } + + if( ((*it).second->getState() == state) || (state == HistoryMemento::Any)) { + + id = (*it).first; + ref = (*it).second; + + } else { + ref = NULL; + } + } + + if(ref) { + delete ref; + _privateCollection.erase(id); + } +} + +void HistoryMementoCollection::setMaxEntries(unsigned int max) { + LOG_WARN("Not implemented yet"); +} + +void HistoryMementoCollection::privateAdd(unsigned int id, HistoryMemento * memento) { + _privateCollection[id] = memento; +} + +HistoryMementoCollection * HistoryMementoCollection::getMementos(HistoryMemento::State state, int count, bool noDuplicates) { + + int c = 0; + HistoryMementoCollection * toReturn = new HistoryMementoCollection(); + + HistoryMap::reverse_iterator it; + for (it = _privateCollection.rbegin(); it != _privateCollection.rend(); it++) { + + if ((state == HistoryMemento::Any) || ((*it).second->getState() == state)) { + + if (noDuplicates) { + if (HistoryMementoCollection::isPeerInCollection(toReturn, ((*it).second)->getPeer())) { + continue; + } + } + + toReturn->privateAdd((*it).first, (*it).second); + c++; + } + + if (c >= count) { + break; + } + } + return toReturn; +} + +HistoryMap::iterator HistoryMementoCollection::begin() { + return _privateCollection.begin(); +} + +HistoryMap::iterator HistoryMementoCollection::end() { + return _privateCollection.end(); +} + +std::string HistoryMementoCollection::toString() { + std::string toReturn = "_historyId: " + String::fromNumber(_historyId) + "\n"; + + HistoryMap::iterator it; + for (it = _privateCollection.begin(); it != _privateCollection.end(); it++) { + toReturn += ( "id: " + String::fromNumber((*it).first) + "/" + (*it).second->toString() + "\n"); + } + return toReturn; +} + +unsigned int HistoryMementoCollection::getMementoId(HistoryMemento * memento) { + HistoryMap::iterator it; + for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { + if( (*it).second == memento ) { + return (*it).first; + } + } + return 0; +} + +bool HistoryMementoCollection::isPeerInCollection(HistoryMementoCollection * collection, const std::string & peer) { + HistoryMap::iterator it; + for (it = collection->begin(); it != collection->end(); it++) { + HistoryMemento * memento = (*it).second; + if ((memento->getPeer() == peer)) { + return true; + } + } + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMementoCollection.h qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMementoCollection.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMementoCollection.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMementoCollection.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,193 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OW_HISTORYMEMENTOLIST_H +#define OW_HISTORYMEMENTOLIST_H + +#include "HistoryMemento.h" + +#include +#include + +#include +#include +#include +#include + +typedef std::map HistoryMap; + +/** + * HistoryMementoCollection stores a set of HistoryMemento + * + * @author Mathieu Stute + */ +class HistoryMementoCollection { + friend class History; +public: + + static const unsigned int SERIALIZATION_VERSION = 2; + + /** + * Default constructor. + */ + HistoryMementoCollection(); + + /** + * Default destructor. + */ + ~HistoryMementoCollection(); + + /** + * Add a HistoryMemento. + * + * @param memento the HistoryMemento to add + * @return the id of the memento + */ + unsigned int addMemento(HistoryMemento * memento); + + /** + * get a HistoryMemento by its id. + * + * @param id the id + * @return the HistoryMemento with the given id + */ + HistoryMemento * getMemento(unsigned int id); + + /** + * remove a memento by its id. + * + * @param id the id + */ + void removeMemento(unsigned int id); + + /** + * Clear all mementos. + */ + void clear(HistoryMemento::State state); + + /** + * Return the number of entries. + * + * @return the number of entries + */ + unsigned int size(); + + /** + * Return a string representing this object. + * + * @return a string representing this object + */ + std::string toString(); + + /** + * Returns an iterator pointing to the beginning of the map. + * + * @return an iterator pointing to the beginning of the map. + */ + HistoryMap::iterator begin(); + + /** + * Returns an iterator pointing to the end of the map. + * + * @return an iterator pointing to the end of the map. + */ + HistoryMap::iterator end(); + +private: + + /** + * get a HistoryMementoCollection containing all mementos + * that match state. + * + * @param state filter memento by State + * @param count specify number of mementos to be returned + * @param noDuplicates if true no duplicates mementos are returned + * @return a pointer to a HistoryMementoCollection + */ + HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1, bool noDuplicates = true); + + /** + * Return the HistoryMemento's id associated to the given callId. + * + * @param callId the callId + * @return the HistoryMemento associated to callId + */ + HistoryMemento * getMementoByCallId(int callId); + + /** + * Return the HistoryMemento's id associated to the given SMS id. + * + * @param callId the SMS id + * @return the HistoryMemento associated to SMS id + */ + HistoryMemento * getMementoBySMSId(int callId); + + /** + * Add a HistoryMemento & do not increment the static int _historyId. + * + * @param memento the HistoryMemento to add + * @param id the id of the memento + */ + void privateAdd(unsigned int id, HistoryMemento * memento); + + /** + * Get the id of the memento + * + * @param memento the memento + * @return the id of the memento + */ + unsigned int getMementoId(HistoryMemento * memento); + + /** + * Set the max entries. + * + * @param max max entries + */ + void setMaxEntries(unsigned int max); + + /** + * Check if a peer in already in the collection. + * @param peer the peer. + * @return true if the peer is already in the collection. + */ + static bool isPeerInCollection(HistoryMementoCollection * collection, const std::string & peer); + + /** global static history id for mementos */ + static unsigned int _historyId; + + /** max entries of the history */ + unsigned int _maxEntries; + + /** private collection, handle a (id, memento) pair map */ + HistoryMap _privateCollection; + + friend class boost::serialization::access; + + /** serialialization method */ + template < class Archive > + void serialize(Archive & ar, const unsigned int version) { + ar & BOOST_SERIALIZATION_NVP(_historyId); + ar & BOOST_SERIALIZATION_NVP(_privateCollection); + } +}; + +BOOST_CLASS_VERSION(HistoryMementoCollection, HistoryMementoCollection::SERIALIZATION_VERSION) + +#endif //OW_HISTORYMEMENTOLIST_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMemento.cpp qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMemento.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMemento.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMemento.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "HistoryMemento.h" + +#include +#include + +HistoryMemento::HistoryMemento() { + _state = None; + _callId = -1; + _duration = 0; + _date = Date(); + _time = Time(); +} + +HistoryMemento::HistoryMemento(State state, const std::string & peer, int callId, const std::string & data,const std::string & alias) { + _state = state; + _peer = peer; + _callId = callId; + _duration = 0; + _date = Date(); + _time = Time(); + _data = data; + _alias = alias; +} + +HistoryMemento::HistoryMemento(State state, Date date, Time time, const std::string & peer, int callId, const std::string & data) { + _state = state; + _peer = peer; + _callId = callId; + _duration = 0; + _date = date; + _time = time; + _data = data; +} + +HistoryMemento::~HistoryMemento() { +} + +HistoryMemento::State HistoryMemento::getState() const { + return _state; +} + +std::string HistoryMemento::getPeer() const { + return _peer; +} + +int HistoryMemento::getDuration() const { + return _duration; +} + +Date HistoryMemento::getDate() const { + return _date; +} + +Time HistoryMemento::getTime() const { + return _time; +} + +int HistoryMemento::getCallId() const { + return _callId; +} + +std::string HistoryMemento::getData() const { + return _data; +} + +std::string HistoryMemento::getAlias() const { + return _alias; +} + +void HistoryMemento::updateDuration(int duration) { + _duration = duration; +} + +void HistoryMemento::updateState(State state) { + _state = state; +} + +bool HistoryMemento::canReplay() const { + return ((_state == OutgoingCall) || (_state == OutgoingSmsOk) || + (_state == IncomingCall) || (_state == MissedCall) || + (_state == RejectedCall)); +} + +bool HistoryMemento::isCallMemento() const { + return ((_state == OutgoingCall) || (_state == IncomingCall) || + (_state == MissedCall) || (_state == RejectedCall)); +} + +bool HistoryMemento::isSMSMemento() const { + return ((_state == OutgoingSmsOk) || (_state == OutgoingSmsNok)); +} + +bool HistoryMemento::isChatSessionMemento() const { + return (_state == ChatSession); +} + +std::string HistoryMemento::toString() const { + std::string toReturn; + static const std::string separator = "\n\t- "; + + toReturn += "Peer: " + _peer + separator; + toReturn += "date: " + _date.toString() + separator; + toReturn += "time: " + _time.toString() + separator; + toReturn += "duration: " + String::fromNumber(_duration) + separator; + toReturn += "state: " + stateToString(_state) + separator; + toReturn += "callid: " + String::fromNumber(_callId) + separator; + toReturn += "data: " + _data; + + return toReturn; +} + +std::string HistoryMemento::stateToString(State state) { + switch(state) { + case OutgoingCall: + return "StateOutgoingCall"; + + case IncomingCall: + return "StateIncomingCall"; + + case OutgoingSmsOk: + return "StateOutgoingSMSOK"; + + case OutgoingSmsNok: + return "StateOutgoingSMSNOK"; + + case RejectedCall: + return "StateRejectedCall"; + + case MissedCall: + return "StateMissedCall"; + + case None: + return "StateNone"; + + case Any: + return "StateAny"; + + case ChatSession: + return "StateChat"; + + default: + LOG_FATAL("unknown state=" + String::fromNumber(state)); + return ""; + } +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMemento.h qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMemento.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/history/HistoryMemento.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/history/HistoryMemento.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,284 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWHISTORYMEMENTO_H +#define OWHISTORYMEMENTO_H + +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include + +/** + * History Memento (Memento in the Memento pattern) + * + * @author Mathieu Stute + */ +class HistoryMemento { + friend class HistoryMementoCollection; + friend class History; +public: + + static const unsigned int SERIALIZATION_VERSION_V1 = 1; + static const unsigned int SERIALIZATION_VERSION_V2 = 2; + static const unsigned int SERIALIZATION_VERSION = SERIALIZATION_VERSION_V2; // latest version + + /** + * State of a memento. + */ + enum State { + IncomingCall, + OutgoingCall, + MissedCall, + RejectedCall, + OutgoingSmsOk, + OutgoingSmsNok, + ChatSession, + FileTransferUploaded, + FileTransferDownloaded, + FileTransferInProgress, + FileTransferCancelled, + FileTransferPaused, + None, + Any, + }; + + /** + * Default constructor. + */ + HistoryMemento(); + + /** + * Complete constructor. + */ + HistoryMemento(State state, const std::string & peer, int callId = -1, const std::string & data = "",const std::string & alias = "" ); + + /** + * a more complete constructor + */ + HistoryMemento(State state, Date date, Time time, const std::string & peer, int callId = -1, const std::string & data = ""); + + /** + * Default destructor. + */ + ~HistoryMemento(); + + /** + * Returns the state. + * + * @return the state + */ + HistoryMemento::State getState() const; + + /** + * Returns the peer. + * + * @return the peer + */ + std::string getPeer() const; + + /** + * Returns the duration. + * + * @return the duration + */ + int getDuration() const; + + /** + * Returns the date. + * + * @return the date + */ + Date getDate() const; + + /** + * Returns the time. + * + * @return the time + */ + Time getTime() const; + + /** + * Returns data. + * + * @return data + */ + std::string getData() const; + + + /** + * Returns alias. + * + * @return alias + */ + std::string getAlias() const; + + /** + * Returns true if the Memento can be replayed. + * + * @return true if the Memento can be replayed + */ + bool canReplay() const; + + /** + * update the duration. + * + * @param duration the duration of the call + */ + void updateDuration(int duration); + + /** + * Returns a string representing the memento. + * + * @return return a string representing the memento + */ + std::string toString() const; + +private: + + /** + * Returns true if the memento is for a call. + * + * @return true if the memento is for a call + */ + bool isCallMemento() const; + + /** + * Returns true if the memento is for a SMS. + * + * @return true if the memento is for a SMS + */ + bool isSMSMemento() const; + + /** + * Returns true if the memento is for a chat session. + * + * @return true if the memento is for a chat session + */ + bool isChatSessionMemento() const; + + /** + * Updates state. + * + * @param state new state + */ + void updateState(State state); + + /** + * Returns the callId associated to the memento. + * + * @return return the callId associated to the memento + */ + int getCallId() const; + + /** + * Returns a string representing a memento state. + * + * @return return a string representing a memento state + */ + static std::string stateToString(State state); + + /** + * the peer. + * TODO: replace by a set of peers (multi SMS, audio conf) + */ + std::string _peer; + + /** State of the Memento. */ + State _state; + + /** Date associated to the memento. */ + Date _date; + + /** Time associated to the memento. */ + Time _time; + + /** + * meaning: + * - text for SMS + * - filename for file transfer + */ + std::string _data; + + /** data: meaningfull only for calls. */ + int _duration; + + /** data: meaningfull only for calls from this instance of the application. */ + int _callId; + + /**display name used for sip message */ + std::string _alias; + + friend class boost::serialization::access; + + /** Serialialization load method. */ + template < class Archive > + void load(Archive & ar, const unsigned int version) { + if (version >= SERIALIZATION_VERSION_V1 && version <= SERIALIZATION_VERSION) { + ar >> BOOST_SERIALIZATION_NVP(_peer); + DateXMLSerializer d(_date); + std::string date; + ar >> BOOST_SERIALIZATION_NVP(date); + d.unserialize(date); + TimeXMLSerializer t(_time); + std::string time; + ar >> BOOST_SERIALIZATION_NVP(time); + t.unserialize(time); + ar >> BOOST_SERIALIZATION_NVP(_duration); + ar >> BOOST_SERIALIZATION_NVP(_state); + ar >> BOOST_SERIALIZATION_NVP(_data); + if(version >= SERIALIZATION_VERSION_V2) { + ar >> BOOST_SERIALIZATION_NVP(_alias); + } + } else { + //LOG_DEBUG("Bad Serialization Version"); + } + } + + /** Serialialization save method. */ + template < class Archive > + void save(Archive & ar, const unsigned int version) const { + ar << BOOST_SERIALIZATION_NVP(_peer); + DateXMLSerializer d((Date &)_date); + std::string date = d.serialize(); + ar << BOOST_SERIALIZATION_NVP(date); + TimeXMLSerializer t((Time &)_time); + std::string time = t.serialize(); + ar << BOOST_SERIALIZATION_NVP(time); + ar << BOOST_SERIALIZATION_NVP(_duration); + ar << BOOST_SERIALIZATION_NVP(_state); + ar << BOOST_SERIALIZATION_NVP(_data); + ar << BOOST_SERIALIZATION_NVP(_alias); + } + + BOOST_SERIALIZATION_SPLIT_MEMBER() +}; + +BOOST_CLASS_VERSION(HistoryMemento, HistoryMemento::SERIALIZATION_VERSION) + +#endif //OWHISTORYMEMENTO_H + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/netlib1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/netlib1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkDiscovery.cpp qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkDiscovery.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkDiscovery.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkDiscovery.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,173 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetworkDiscovery.h" + +#include +#include +#include + +#include +#include +#include + +#include +#include + +using namespace std; + +NetworkDiscovery::NetworkDiscovery() { + if (owsl_initialize()) { + LOG_FATAL("network transport library (OWSL) initialization failed"); + } +} + +NetworkDiscovery::~NetworkDiscovery() { + owsl_terminate(); +} + +bool NetworkDiscovery::testHTTP(const std::string & url, bool ssl) { + NETLIB_BOOLEAN sslActivated = ((ssl) ? NETLIB_TRUE : NETLIB_FALSE); + bool result = false; + NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); + + if (is_http_conn_allowed(url.c_str(), + networkProxy.getServer().c_str(), networkProxy.getServerPort(), + networkProxy.getLogin().c_str(), networkProxy.getPassword().c_str(), + sslActivated, HTTP_TIMEOUT) == HTTP_OK) { + + result = true; + } else { + LOG_DEBUG("cannot connect to " + url + (ssl ? " with" : " without") + " SSL"); + } + + return result; +} + +bool NetworkDiscovery::testUDP(const string & stunServer) { + LOG_DEBUG("testing UDP connection and discovering NAT type with STUN server " + stunServer); + // By getting the NetworkProxy object, we wait for Proxy detection + // See NetworProxyDisocvery::getNetworkProxy + NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); + + NatType natType; + bool opened = (is_udp_port_opened(stunServer.c_str(), SIP_PORT, &natType) == NETLIB_TRUE ? true : false); + + EnumNatType::NatType nat = EnumNatType::NatTypeUnknown; + + switch(natType) { + case StunTypeUnknown: + nat = EnumNatType::NatTypeUnknown; + break; + case StunTypeOpen: + nat = EnumNatType::NatTypeOpen; + break; + case StunTypeConeNat: + nat = EnumNatType::NatTypeFullCone; + break; + case StunTypeRestrictedNat: + nat = EnumNatType::NatTypeRestrictedCone; + break; + case StunTypePortRestrictedNat: + nat = EnumNatType::NatTypePortRestrictedCone; + break; + case StunTypeSymNat: + nat = EnumNatType::NatTypeSymmetric; + break; + case StunTypeSymFirewall: + nat = EnumNatType::NatTypeSymmetricFirewall; + break; + case StunTypeBlocked: + nat = EnumNatType::NatTypeBlocked; + break; + case StunTypeFailure: + nat = EnumNatType::NatTypeFailure; + break; + default: + LOG_FATAL("unknown NAT type=" + String::fromNumber(natType)); + } + + setNatConfig(nat); + + return opened; +} + +bool NetworkDiscovery::testSIP(const string & server,const string & login, unsigned short port, unsigned short localPort) { + LOG_DEBUG("pinging SIP server " + server + " on port " + String::fromNumber(port) + + " from port " + String::fromNumber(localPort)); + return (udp_sip_ping(server.c_str(), port, localPort, + PING_TIMEOUT, login.c_str(), server.c_str()) == NETLIB_TRUE ? true : false); +} + +bool NetworkDiscovery::testSIPHTTPTunnel(const string & tunnelServer, unsigned tunnelPort, bool ssl, + const string & sipServer, unsigned sipServerPort) { + bool result = false; + NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); + + LOG_DEBUG("testing SIP tunnel connection"); + if (is_tunnel_conn_allowed(tunnelServer.c_str(), tunnelPort, + sipServer.c_str(), sipServerPort, + networkProxy.getServer().c_str(), networkProxy.getServerPort(), + networkProxy.getLogin().c_str(), networkProxy.getPassword().c_str(), + (ssl ? NETLIB_TRUE : NETLIB_FALSE), HTTP_TIMEOUT, sipServer.c_str(), + NETLIB_TRUE, PING_TIMEOUT) == HTTP_OK) { + + result = true; + } else { + LOG_DEBUG("cannot create a tunnel to " + tunnelServer + ":" + String::fromNumber(tunnelPort) + + " for SIP server " + sipServer + ":" + String::fromNumber(sipServerPort) + + (ssl ? " with" : " without") + " SSL"); + } + + return result; +} + +unsigned NetworkDiscovery::getFreeLocalPort() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + int localPort = SIP_PORT; + + if (!is_local_udp_port_used(NULL, config.getNetworkSipLocalPort())) { + LOG_DEBUG("UDP port configured, will use port number : " + + String::fromNumber(config.getNetworkSipLocalPort())); + return config.getNetworkSipLocalPort(); + } + if (!is_local_udp_port_used(NULL, localPort)) { + LOG_DEBUG("UDP port 5060 is free"); + return localPort; + } else if (!is_local_udp_port_used(NULL, localPort + 1)) { + LOG_DEBUG("UDP port 5060 is busy, will use 5061"); + return localPort + 1; + } else { + localPort = get_local_free_udp_port(NULL); + if (localPort == -1) { + LOG_DEBUG("cannot get a free local port"); + localPort = 0; + } + LOG_DEBUG("UDP port 5061 is busy, will use random port number : " + String::fromNumber(localPort)); + return localPort; + } +} + +void NetworkDiscovery::setNatConfig(EnumNatType::NatType natType) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + std::string tmp = EnumNatType::toString(natType); + LOG_DEBUG("NAT type=" + tmp); + config.set(Config::NETWORK_NAT_TYPE_KEY, tmp); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkDiscovery.h qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkDiscovery.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkDiscovery.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkDiscovery.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWNETWORKDISCOVERY_H +#define OWNETWORKDISCOVERY_H + +#include + +#include + +#include + +/** + * Discover Network configuration. + * + * @ingroup model + * @author Philippe Bernery + */ +class NetworkDiscovery { +public: + + NetworkDiscovery(); + + ~NetworkDiscovery(); + + /** + * Tests if an url is joinable by Http. + * + * @param the url to test (e.g: "ws.qutecom.fr:443/softphone-sso/sso.php") + * @param true if a SSL connection must be tested + * @return true if connection ok + */ + bool testHTTP(const std::string & url, bool ssl); + + /** + * Tests if a UDP connection is possible. + * + * @param stunServer the STUN server + * @return true if ok + */ + bool testUDP(const std::string & stunServer); + + /** + * Tests if a server respond to a SIP ping. + * + * @param server the server to test + * @param port the server port + * @param localPort the local port to use + * @return true if ok + */ + bool testSIP(const std::string & server,const std::string & login, unsigned short port, unsigned short localPort); + + /** + * Tests if a HttpTunnel can be create and if SIP can pass through this tunnel. + * + * @param tunnelServer the tunnel server + * @param tunnelPort the tunnel port + * @param ssl true if tunnel must be done with SSL + * @param sipServer the SIP server to ping + * @param sipServerPort the SIP server port + * @return true if ok + */ + bool testSIPHTTPTunnel(const std::string & tunnelServer, unsigned tunnelPort, bool ssl, + const std::string & sipServer, unsigned sipServerPort); + + /** + * @return a free local port. + */ + unsigned getFreeLocalPort(); + + /** + * Sets the detected Nat Type. + */ + void setNatConfig(EnumNatType::NatType natType); + +private: + + static const unsigned PING_TIMEOUT = 3; + + static const unsigned HTTP_TIMEOUT = 10; +}; + +#endif //OWNETWORKDISCOVERY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkObserver.cpp qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkObserver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkObserver.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkObserver.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,401 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetworkObserver.h" + +#include +#include +//#include +#include + +//#define RETRIES 8 + +#if defined(WIN32) +#include +#include +#else +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#endif + +#if defined(OS_MACOSX) +#include +#endif + +NetworkObserver::NetworkObserver() +{ + //_prevstate = 0; + _isConnected = (is_connection_available() ? true : false); + //_timer.timeoutEvent += boost::bind(&NetworkObserver::timeoutEventHandler, this); + + //_timer.start(0, 500, 0); + _idTimer = startTimer(500); + +#if defined(OS_LINUX) + QDBusConnection::systemBus().registerObject("/", this); + + QDBusConnection::systemBus().connect( + QString(), QString(), "org.qutecom.Wakeup", "wakeup", this, SLOT(wakeupSlot()) + ); +#endif + +} + +NetworkObserver *NetworkObserver::_staticInstance = NULL; + +bool NetworkObserver::hasInstance() { return _staticInstance != 0; } + + +//static Mutex mutex; + +NetworkObserver & NetworkObserver::getInstance() +{ + if (_staticInstance) + return *_staticInstance; + + //Mutex::ScopedLock scopedLock(mutex); + + if (!_staticInstance) + _staticInstance = new NetworkObserver(); + + + return * _staticInstance; +} + +NetworkObserver::~NetworkObserver() +{ + killTimer(_idTimer); + //_timer.stop(); +} + +bool NetworkObserver::isConnected() +{ + _isConnected = (is_connection_available() ? true : false); + return _isConnected ; +} + +#if defined(OS_LINUX) +void NetworkObserver::wakeupSlot() +{ + if (_isConnected) + { + _isConnected = false; + connectionIsDownEvent(*this); + } + + if (!_isConnected) + { + + _isConnected = is_connection_available(); + if (_isConnected) + connectionIsUpEvent(*this); + } + + +} +#endif + +void NetworkObserver::timerEvent(QTimerEvent*) +{ + if (is_connection_available()) + { + if (!_isConnected) + { + //if(!_prevstate) + //{ + LOG_DEBUG("Connection is up"); + _isConnected = true; + connectionIsUpEvent(*this); + //} + //_prevstate--; + } + } + else + { + if (_isConnected) + { + LOG_DEBUG("Connection is down"); + _isConnected = false; + connectionIsDownEvent(*this); + //_prevstate = RETRIES; + } + } +} + +bool NetworkObserver::is_connection_available() +{ + QList list = QNetworkInterface::allInterfaces(); + + + for(QList::iterator it = list.begin() ; it != list.end() ; it ++) + { + if((*it).isValid()) + { + if((*it).flags() & QNetworkInterface::IsLoopBack) + continue; + + + if( (*it).flags() & QNetworkInterface::IsUp && (*it).flags() & QNetworkInterface::IsRunning ) + { + QList list2 = (*it).addressEntries (); + for(QList::iterator itt = list2.begin() ; itt != list2.end();itt++ ) + { + if(!(*itt).ip().isNull() && (*itt).ip().protocol() == QAbstractSocket::IPv4Protocol) + { + #if defined(OS_MACOSX) + struct sockaddr_in zeroAddr; + bzero(&zeroAddr, sizeof(zeroAddr)); + zeroAddr.sin_len = sizeof(zeroAddr); + zeroAddr.sin_family = AF_INET; + + SCNetworkReachabilityRef target = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *) &zeroAddr); + SCNetworkConnectionFlags flags; + SCNetworkReachabilityGetFlags(target, &flags); + + bool connected = flags & kSCNetworkFlagsReachable && !(flags & kSCNetworkFlagsConnectionRequired); + if (!connected) + return false; + #endif + return canConnect(); + } + } + } + } + } + + return false; +} + + + +bool NetworkObserver::canConnect() +{ +#if defined(WIN32) +/* w2000 and W95/98 */ + unsigned long best_interface_index; + DWORD hr; + + /* NT4 (sp4 only?) */ + PMIB_IPFORWARDTABLE ipfwdt; + DWORD siz_ipfwd_table = 0; + unsigned int ipf_cnt; + + best_interface_index = -1; + /* w2000 and W95/98 only */ + hr = GetBestInterface(inet_addr("217.12.3.11"),&best_interface_index); + if (hr) + { + LPVOID lpMsgBuf; + FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | + FORMAT_MESSAGE_FROM_SYSTEM | + FORMAT_MESSAGE_IGNORE_INSERTS, + NULL, + hr, + MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), + (LPSTR) &lpMsgBuf, 0, NULL); + best_interface_index = -1; + } + + if (best_interface_index != -1) + { /* probably W2000 or W95/W98 */ + char *servername; + char *serverip; + char *netmask; + + if (ppl_dns_get_local_fqdn(&servername, &serverip, &netmask, + best_interface_index)) + { + /*if(servername) + delete servername; + if(serverip) + delete serverip; + if(netmask) + delete netmask;*/ + + return true; + } + return false; + } + + + if (!GetIpForwardTable(NULL, &siz_ipfwd_table, FALSE) == ERROR_INSUFFICIENT_BUFFER + || !(ipfwdt = (PMIB_IPFORWARDTABLE) alloca (siz_ipfwd_table))) + { + return false; + } + + + /* NT4 (sp4 support only?) */ + if (!GetIpForwardTable(ipfwdt, &siz_ipfwd_table, FALSE)) + { + for (ipf_cnt = 0; ipf_cnt < ipfwdt->dwNumEntries; ++ipf_cnt) + { + if (ipfwdt->table[ipf_cnt].dwForwardDest == 0) + { /* default gateway found */ + char *servername; + char *serverip; + char *netmask; + + if (ppl_dns_get_local_fqdn(&servername, + &serverip, + &netmask, + ipfwdt->table[ipf_cnt].dwForwardIfIndex)) + { + delete servername; + delete serverip; + delete netmask; + return true; + } + return false; + } + } + + } + /* no default gateway interface found */ + return true; + +#else + + #if defined(OS_MACOSX) + socklen_t len; + #else + unsigned int len; + #endif + int sock_rt, on=1; + struct sockaddr_in iface_out; + struct sockaddr_in remote; + + memset(&remote, 0, sizeof(struct sockaddr_in)); + + remote.sin_family = AF_INET; + remote.sin_addr.s_addr = inet_addr("217.12.3.11"); + remote.sin_port = htons(11111); + + memset(&iface_out, 0, sizeof(iface_out)); + sock_rt = socket(AF_INET, SOCK_DGRAM, 0 ); + + if (setsockopt(sock_rt, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) == -1) + { + close(sock_rt); + return false; + } + + if (::connect(sock_rt, (struct sockaddr*)&remote, sizeof(struct sockaddr_in)) == -1 ) + { + close(sock_rt); + return false; + } + + len = sizeof(iface_out); + if (getsockname(sock_rt, (struct sockaddr *)&iface_out, &len) == -1 ) + { + close(sock_rt); + return false; + } + + close(sock_rt); + if (iface_out.sin_addr.s_addr == 0) + { /* what is this case?? */ + return false; + } + + return true; + +#endif +} + +#if defined(WIN32) +bool NetworkObserver::ppl_dns_get_local_fqdn (char **servername, char **serverip,char **netmask, unsigned int WIN32_interface) +{ + unsigned int pos; + + *servername = NULL; /* no name on win32? */ + *serverip = NULL; + *netmask = NULL; + + /* First, try to get the interface where we should listen */ + { + DWORD size_of_iptable = 0; + PMIB_IPADDRTABLE ipt; + PMIB_IFROW ifrow; + + if (GetIpAddrTable(NULL, &size_of_iptable, TRUE) == ERROR_INSUFFICIENT_BUFFER) + { + ifrow = (PMIB_IFROW) _alloca (sizeof(MIB_IFROW)); + ipt = (PMIB_IPADDRTABLE) _alloca (size_of_iptable); + if (ifrow==NULL || ipt==NULL) + { + /* not very usefull to continue */ + return true; + } + + if (!GetIpAddrTable(ipt, &size_of_iptable, TRUE)) + { + /* look for the best public interface */ + + for (pos=0; pos < ipt->dwNumEntries && *netmask==NULL ; ++pos) + { + /* index is */ + struct in_addr addr; + struct in_addr mask; + ifrow->dwIndex = ipt->table[pos].dwIndex; + if (GetIfEntry(ifrow) == NO_ERROR) + { + switch(ifrow->dwType) + { + case MIB_IF_TYPE_LOOPBACK: + /* break; */ + case MIB_IF_TYPE_ETHERNET: + default: + addr.s_addr = ipt->table[pos].dwAddr; + mask.s_addr = ipt->table[pos].dwMask; + if (ipt->table[pos].dwIndex == WIN32_interface) + { + *servername = NULL; /* no name on win32? */ + *serverip = inet_ntoa(addr); + *netmask = inet_ntoa(mask); + break; + } + } + } + } + } + } + } + + if (*serverip==NULL || *netmask==NULL) + { + return false; + } + + return true; +} +#endif diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkObserver.h qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkObserver.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkObserver.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkObserver.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef NETWORKOBSERVER_H +#define NETWORKOBSERVER_H + +//#include +#include +#include +#include +/** + * Watch the connection status. + * + * @ingroup model + * @author Julien Bossart + */ +class NetworkObserver : public QObject, public Trackable +{ + Q_OBJECT + +#if defined(OS_LINUX) + Q_CLASSINFO("D-Bus Interface", "org.qutecom.Wakeup"); + +Q_SIGNALS: + void wakeup(); +#endif + +public: + + /** + * Emitted when the connection is going up. + */ + Event< void (NetworkObserver & sender) > connectionIsUpEvent; + + /** + * Emitted when the connection is going down. + */ + Event< void (NetworkObserver & sender)> connectionIsDownEvent; + + bool isConnected()/* const { return _isConnected; }*/; + + static NetworkObserver & getInstance(); + + static bool hasInstance(); + //void init(); + +private: + + NetworkObserver(); + + ~NetworkObserver(); + + bool is_connection_available(); + + //void timeoutEventHandler(); + + static NetworkObserver *_staticInstance; + + int _idTimer; + //Timer _timer; + + bool _isConnected; + + //int _prevstate; + + bool canConnect(); + +#if defined(OS_LINUX) +private Q_SLOTS: + void wakeupSlot(); +#endif + +#if defined(WIN32) + bool ppl_dns_get_local_fqdn (char **servername, char **serverip,char **netmask, unsigned int WIN32_interface); +#endif + +protected: + void timerEvent(QTimerEvent*); +}; + +#endif /*NETWORKOBSERVER_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.cpp qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,243 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "NetworkProxyDiscovery.h" +#include "NetworkObserver.h" + +#include +#include + +#include +#include + +#include +#include + +NetworkProxy::NetworkProxy() { + _proxyAuthType = ProxyAuthTypeUnknown; +} + +NetworkProxy::NetworkProxy(const NetworkProxy & networkProxy) { + _login = networkProxy._login; + _password = networkProxy._password; + _server = networkProxy._server; + _serverPort = networkProxy._serverPort; + _proxyAuthType = networkProxy._proxyAuthType; +} + +NetworkProxyDiscovery * NetworkProxyDiscovery::_networkProxyDiscoveryInstance = NULL; + +NetworkProxyDiscovery::NetworkProxyDiscovery() { + if (owsl_initialize()) { + LOG_FATAL("network transport library (OWSL) initialization failed"); + } + + _state = NetworkProxyDiscoveryStateUnknown; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _networkProxy.setServer(config.getNetworkProxyServer()); + _networkProxy.setServerPort(config.getNetworkProxyPort()); + _networkProxy.setLogin(config.getNetworkProxyLogin()); + _networkProxy.setPassword(config.getNetworkProxyPassword()); + + NetworkObserver::getInstance().connectionIsUpEvent += + boost::bind(&NetworkProxyDiscovery::connectionIsUpEventHandler, this, _1); + NetworkObserver::getInstance().connectionIsDownEvent += + boost::bind(&NetworkProxyDiscovery::connectionIsDownEventHandler, this, _1); + + if (!NetworkObserver::getInstance().isConnected()) { + LOG_DEBUG("no connection available"); + _state = NetworkProxyDiscoveryStateUnknown; + return; + } + + int ret = 0; + if (config.getNetworkProxyDetected() + && (ret = is_http_conn_allowed("www.google.com:80", _networkProxy.getServer().c_str(), + _networkProxy.getServerPort(), _networkProxy.getLogin().c_str(), + _networkProxy.getPassword().c_str(), NETLIB_FALSE, 10)) == HTTP_OK) { + + // Protect against crash due to IE Digest authentication management bug + EnumAuthType proxyAuthType = get_proxy_auth_type(_networkProxy.getServer().c_str(), + _networkProxy.getServerPort(), PROXY_TIMEOUT); + if (proxyAuthType == proxyAuthDigest) { + _networkProxy.setProxyAuthType(NetworkProxy::ProxyAuthTypeDigest); + } + _state = NetworkProxyDiscoveryStateDiscovered; + } else if (ret == HTTP_AUTH) { + _state = NetworkProxyDiscoveryStateNeedsAuthentication; + if (_networkProxy.getLogin().empty()) { + proxyNeedsAuthenticationEvent(*this, _networkProxy); + } + else { + wrongProxyAuthenticationEvent(*this, _networkProxy); + } + } else { + discoverProxy(); + } +} + +NetworkProxyDiscovery::~NetworkProxyDiscovery() { + owsl_terminate(); + terminate(); +} + +NetworkProxyDiscovery & NetworkProxyDiscovery::getInstance() { + if (!_networkProxyDiscoveryInstance) { + _networkProxyDiscoveryInstance = new NetworkProxyDiscovery(); + } + + return *_networkProxyDiscoveryInstance; +} + +void NetworkProxyDiscovery::discoverProxy() { + start(); +} + +void NetworkProxyDiscovery::run() { + Mutex::ScopedLock lock(_mutex); + + if (!NetworkObserver::getInstance().isConnected()) { + LOG_DEBUG("no connection available"); + _state = NetworkProxyDiscoveryStateUnknown; + return; + } + + // Trying to ping an http server. We do this because sometimes + // a system can be set to use a proxy whereas it could connect directly. + if (is_http_conn_allowed("www.google.com", + NULL, 0, NULL, NULL, + NETLIB_FALSE, 10) == HTTP_OK) { + + LOG_DEBUG("can connect without proxy"); + + _networkProxy.setServer(String::null); + _networkProxy.setServerPort(0); + _networkProxy.setLogin(String::null); + _networkProxy.setPassword(String::null); + + saveProxySettings(); + _state = NetworkProxyDiscoveryStateDiscovered; + _condition.notify_all(); + return; + } + + //See below for explaination about this test + if (_state != NetworkProxyDiscoveryStateNeedsAuthentication) { + LOG_DEBUG("discovering network proxy..."); + _state = NetworkProxyDiscoveryStateDiscovering; + + LOG_DEBUG("searching for proxy..."); + + char * localProxyUrl = get_local_http_proxy_address(); + int localProxyPort = get_local_http_proxy_port(); + + _networkProxy.setServer(localProxyUrl ? String(localProxyUrl) : String(String::null)); + _networkProxy.setServerPort(localProxyPort); + _networkProxy.setLogin(String::null); + _networkProxy.setPassword(String::null); + + if (!localProxyUrl) { + LOG_DEBUG("no proxy found"); + saveProxySettings(); + _state = NetworkProxyDiscoveryStateDiscovered; + _condition.notify_all(); + return; + } + } + + LOG_DEBUG("proxy found"); + + if (is_proxy_auth_needed(_networkProxy.getServer().c_str(), + _networkProxy.getServerPort(), PROXY_TIMEOUT)) { + LOG_DEBUG("proxy authentication needed"); + + EnumAuthType proxyAuthType = get_proxy_auth_type(_networkProxy.getServer().c_str(), + _networkProxy.getServerPort(), PROXY_TIMEOUT); + if (proxyAuthType == proxyAuthDigest) { + _networkProxy.setProxyAuthType(NetworkProxy::ProxyAuthTypeDigest); + } + + if (_networkProxy.getLogin().empty()) { + LOG_DEBUG("proxy needs login/password"); + + _state = NetworkProxyDiscoveryStateNeedsAuthentication; + proxyNeedsAuthenticationEvent(*this, _networkProxy); + return; + } + + if (!is_proxy_auth_ok(_networkProxy.getServer().c_str(), _networkProxy.getServerPort(), + _networkProxy.getLogin().c_str(), _networkProxy.getPassword().c_str(), PROXY_TIMEOUT)) { + + LOG_DEBUG("proxy needs valid login/password"); + + _state = NetworkProxyDiscoveryStateNeedsAuthentication; + wrongProxyAuthenticationEvent(*this, _networkProxy); + return; + } + } + + saveProxySettings(); + _state = NetworkProxyDiscoveryStateDiscovered; + _condition.notify_all(); +} + +void NetworkProxyDiscovery::saveProxySettings() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + config.set(Config::NETWORK_PROXY_DETECTED_KEY, true); + config.set(Config::NETWORK_PROXY_SERVER_KEY, _networkProxy.getServer()); + config.set(Config::NETWORK_PROXY_PORT_KEY, _networkProxy.getServerPort()); + config.set(Config::NETWORK_PROXY_LOGIN_KEY, _networkProxy.getLogin()); + config.set(Config::NETWORK_PROXY_PASSWORD_KEY, _networkProxy.getPassword()); +} + +NetworkProxyDiscovery::NetworkProxyDiscoveryState NetworkProxyDiscovery::getState() const { + return _state; +} + +void NetworkProxyDiscovery::setProxySettings(NetworkProxy networkProxy) { + Mutex::ScopedLock lock(_mutex); + + _networkProxy = networkProxy; + discoverProxy(); +} + +NetworkProxy NetworkProxyDiscovery::getNetworkProxy() const { + Mutex::ScopedLock lock(_mutex); + + if (_state == NetworkProxyDiscoveryStateDiscovering) { + //Waiting for the end of the discovery + _condition.wait(lock); + } + + return _networkProxy; +} + +void NetworkProxyDiscovery::connectionIsUpEventHandler(NetworkObserver & sender) { + Mutex::ScopedLock lock(_mutex); + + if (_state != NetworkProxyDiscoveryStateDiscovered) { + discoverProxy(); + } +} + +void NetworkProxyDiscovery::connectionIsDownEventHandler(NetworkObserver & sender) { + terminate(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.h qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/network/NetworkProxyDiscovery.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,174 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWNETWORKPROXYDISCOVERY_H +#define OWNETWORKPROXYDISCOVERY_H + +#include +#include +#include + +#include + +#include + +class NetworkObserver; + +/** + * Network proxy data container. + */ +class NetworkProxy { +public: + + NetworkProxy(); + + NetworkProxy(const NetworkProxy & networkProxy); + + std::string getLogin() const { return _login; } + void setLogin(const std::string & login) { _login = login; } + + std::string getPassword() const { return _password; } + void setPassword(const std::string & password) { _password = password; } + + std::string getServer() const { return _server; } + void setServer(const std::string & server) { _server = server; } + + int getServerPort() const { return _serverPort; } + void setServerPort(int port) { _serverPort = port; } + + enum ProxyAuthType { + ProxyAuthTypeUnknown, + ProxyAuthTypeBasic, + ProxyAuthTypeDigest, + ProxyAuthTypeNTLM + }; + + ProxyAuthType getProxyAuthType() const { return _proxyAuthType; } + void setProxyAuthType(ProxyAuthType proxyAuthType) { _proxyAuthType = proxyAuthType; } + +private: + + std::string _login; + + std::string _password; + + std::string _server; + + int _serverPort; + + ProxyAuthType _proxyAuthType; +}; + +/** + * Network proxy discovery. + * + * TODO: add a proxyHasChangedEvent to notify registered classes that the proxy settings have changed. + * + * @author Julien Bossart + * @author Philippe Bernery + */ +class NetworkProxyDiscovery : public Thread { +public: + + enum NetworkProxyDiscoveryState { + /** Initial state. */ + NetworkProxyDiscoveryStateUnknown, + + /** NetworkProxyDiscovery is discovering the proxy settings. */ + NetworkProxyDiscoveryStateDiscovering, + + /** NetworkProxyDiscovery needs authentication parameters to continue discovery. */ + NetworkProxyDiscoveryStateNeedsAuthentication, + + /** NetworkProxyDiscovery has discovered the proxy settings. */ + NetworkProxyDiscoveryStateDiscovered + }; + + /** + * Emitted when a proxy has been detected and needs a login/password. + * + * @param sender this class + * @param networkProxy the current result of the discovery + */ + Event< void (NetworkProxyDiscovery & sender, NetworkProxy networkProxy) > proxyNeedsAuthenticationEvent; + + /** + * Emitted when given login/password are wrong. + * + * @param sender this class + * @param networkProxy the current result of the discovery + */ + Event< void (NetworkProxyDiscovery & sender, NetworkProxy networkProxy)> wrongProxyAuthenticationEvent; + + static NetworkProxyDiscovery & getInstance(); + + NetworkProxyDiscoveryState getState() const; + + /** + * Sets the NetworProxy settings. + * + * Will try to detect the Proxy with the given parameters. + * It it works, parameters will be saved in Config. + */ + void setProxySettings(NetworkProxy networkProxy); + + /** + * Returns proxy parameters. This method is blocking while proxy settings have not been detected. + */ + NetworkProxy getNetworkProxy() const; + +private: + + NetworkProxyDiscovery(); + + ~NetworkProxyDiscovery(); + + /** + * Sets the proxy settings in Config. + */ + void saveProxySettings(); + + void discoverProxy(); + + virtual void run(); + + /** + * @see NetworkObserver::connectionIsUpEvent + */ + void connectionIsUpEventHandler(NetworkObserver & sender); + + /** + * @see NetworkObserver::connectionIsDownEvent + */ + void connectionIsDownEventHandler(NetworkObserver & sender); + + static NetworkProxyDiscovery * _networkProxyDiscoveryInstance; + + NetworkProxyDiscoveryState _state; + + NetworkProxy _networkProxy; + + mutable Mutex _mutex; + + mutable Condition _condition; + + static const unsigned PROXY_TIMEOUT = 10; +}; + +#endif //OWNETWORKPROXYDISCOVERY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCall.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,197 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConferenceCall.h" + +#include "ConferenceCallParticipant.h" +#include "PhoneCall.h" + +#include +#include + +#include + +#include + +ConferenceCall::ConferenceCall(IPhoneLine & phoneLine) + : _phoneLine(phoneLine) { + + //No conference started yet + _confId = -1; +} + +ConferenceCall::~ConferenceCall() { +} + +void ConferenceCall::addPhoneCall(PhoneCall & phoneCall) { + if (_confId == -1) { + _confId = _phoneLine.getSipWrapper().createConference(); + } + + new ConferenceCallParticipant(*this, phoneCall); + phoneCallAddedEvent(*this, phoneCall); + + std::string phoneNumber = phoneCall.getPeerSipAddress().getUserName(); + _phoneCallMap[phoneNumber] = &phoneCall; +} + +void ConferenceCall::removePhoneCall(PhoneCall & phoneCall) { + phoneCall.setConferenceCall(NULL); + int callId = phoneCall.getCallId(); + + if (_confId == -1) { + _phoneLine.getSipWrapper().splitConference(_confId, callId); + } + + phoneCallRemovedEvent(*this, phoneCall); + std::string phoneNumber = phoneCall.getPeerSipAddress().getUserName(); + _phoneCallMap.erase(phoneNumber); +} + +void ConferenceCall::addPhoneNumber(const std::string & phoneNumber) { + //Searches for a already existing PhoneCall associated with this phone number + PhoneCall * phoneCall = getPhoneCall(phoneNumber); + if (!phoneCall) { + phoneCall = _phoneCallMap[phoneNumber]; + if (!phoneCall) { + int error = _phoneLine.makeCall(phoneNumber, this); + if (error != EnumMakeCallError::NoError) { + //NULL means put the phone number in the queue + phoneCall = NULL; + } else { + phoneCall = _phoneLine.getActivePhoneCall(); + } + } + } + + _phoneCallMap[phoneNumber] = phoneCall; + if (phoneCall) { + phoneCall->stateChangedEvent += boost::bind(&ConferenceCall::phoneCallStateChangedEventHandler, this, _1, _2); + addPhoneCall(*phoneCall); + } + LOG_DEBUG("phone number added=" + phoneNumber); +} + +void ConferenceCall::removePhoneNumber(const std::string & phoneNumber) { + for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + if (phoneCall) { + SipAddress sipAddress = phoneCall->getPeerSipAddress(); + if (sipAddress.getUserName() == phoneNumber) { + removePhoneCall(*phoneCall); + } + } + } + + if (_phoneCallMap.empty()) { + stateChangedEvent(*this, EnumConferenceCallState::ConferenceCallStateStopped); + } +} + +PhoneCall * ConferenceCall::getPhoneCall(const std::string & phoneNumber) const { + PhoneCall * phoneCall = NULL; + + IPhoneLine::PhoneCallList calls = _phoneLine.getPhoneCallList(); + + for (unsigned i = 0; i < calls.size(); i++) { + SipAddress sipAddress = calls[i]->getPeerSipAddress(); + if (sipAddress.getUserName() == phoneNumber) { + return calls[i]; + } + } + + return phoneCall; +} + +void ConferenceCall::phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { + switch (state) { + + case EnumPhoneCallState::PhoneCallStateUnknown: + break; + + case EnumPhoneCallState::PhoneCallStateError: + removePhoneCall(sender); + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + break; + + case EnumPhoneCallState::PhoneCallStateTalking: + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + break; + + case EnumPhoneCallState::PhoneCallStateRinging: + break; + + case EnumPhoneCallState::PhoneCallStateClosed: + removePhoneCall(sender); + break; + + case EnumPhoneCallState::PhoneCallStateIncoming: + break; + + case EnumPhoneCallState::PhoneCallStateHold: { + //Takes randomly a phoneNumber that has no PhoneCall associated + //and creates a PhoneCall + for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + if (!phoneCall) { + std::string phoneNumber = (*it).first; + addPhoneNumber(phoneNumber); + break; + } + } + + break; + } + + case EnumPhoneCallState::PhoneCallStateMissed: + break; + + case EnumPhoneCallState::PhoneCallStateRedirected: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStart: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStop: + break; + + default: + LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); + } +} + +ConferenceCall::PhoneCallList ConferenceCall::getPhoneCallList() const { + PhoneCallList phoneCallList; + + for (PhoneCalls::const_iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + if (phoneCall) { + phoneCallList += phoneCall; + } + } + return phoneCallList; +} + +void ConferenceCall::join(int callId) { + _phoneLine.getSipWrapper().joinConference(_confId, callId); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCall.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,150 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONFERENCECALL_H +#define OWCONFERENCECALL_H + +#include +#include + +#include +#include +#include +#include + +#include +#include + +class IPhoneLine; +class PhoneCall; +class ConferenceCallParticipant; + +/** + * Handles a conference call. + * + * Conferences are an association of calls + * where the audio media is mixed. + * + * The number of participant is unlimited in this model but probably + * limited by the SIP stack that uses ConferenceCall. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ConferenceCall : NonCopyable, public Trackable { +public: + + /** + * The state of the ConferenceCall has changed. + * + * @param sender this class + * @param state new state + */ + Event stateChangedEvent; + + /** + * A PhoneCall has been added to the ConferenceCall. + * + * @param sender this class + * @param phoneCall PhoneCall added to the ConferenceCall + */ + Event phoneCallAddedEvent; + + /** + * A PhoneCall has been removed to the ConferenceCall. + * + * @param sender this class + * @param phoneCall PhoneCall removed to the ConferenceCall + */ + Event phoneCallRemovedEvent; + + /** + * Creates a new ConferenceCall given a PhoneLine. + */ + ConferenceCall(IPhoneLine & phoneLine); + + ~ConferenceCall(); + + /** + * Adds a phone number to the conference. + * + * If the phone number corresponds to an existing PhoneCall + * the PhoneCall is directly added to the conference; otherwise a new PhoneCall is created. + * + * @param phoneNumber phone number to add to the conference + */ + void addPhoneNumber(const std::string & phoneNumber); + + /** + * Removes a phone number to the conference. + * + * If the phone number corresponds to an existing PhoneCall + * the PhoneCall is directly removed (and call is closed) to the conference. + * + * @param phoneNumber phone number to remove from the conference + */ + void removePhoneNumber(const std::string & phoneNumber); + + /** + * FIXME should be private? + */ + void addPhoneCall(PhoneCall & phoneCall); + + /** + * FIXME should be private? + */ + void removePhoneCall(PhoneCall & phoneCall); + + typedef List PhoneCallList; + + /** + * Gets the list of PhoneCall associated with this conference. + * + * @return the list of PhoneCall + */ + PhoneCallList getPhoneCallList() const; + + /** Should only be used by ConferenceCallParticipant. */ + void join(int callId); + + PhoneCall * getPhoneCall(const std::string & phoneNumber) const; + +private: + + /** Waits for a phone call to be in talking state before to create another one. */ + void phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); + + /** PhoneLine associated with the ConferenceCall. */ + IPhoneLine & _phoneLine; + + /** Defines the vector of PhoneCall participant. */ + typedef std::map < std::string, PhoneCall * > PhoneCalls; + + /** List of PhoneCall. */ + PhoneCalls _phoneCallMap; + + /** + * Conference id of this ConferenceCall. + * + * SipWrapper::ConfIdError (-1) means that the conference has not been started yet. + */ + int _confId; +}; + +#endif //OWCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,105 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ConferenceCallParticipant.h" + +#include "ConferenceCall.h" +#include "PhoneCall.h" +#include "PhoneCallState.h" + +#include + +#include + +ConferenceCallParticipant::ConferenceCallParticipant(ConferenceCall & conferenceCall, PhoneCall & phoneCall) + : _conferenceCall(conferenceCall), + _phoneCall(phoneCall) { + + _waitForHoldState = false; + + _phoneCall.stateChangedEvent += boost::bind(&ConferenceCallParticipant::phoneCallStateChangedEventHandler, this, _1, _2); + + joinConference(); +} + +void ConferenceCallParticipant::joinConference() { + int callId = _phoneCall.getCallId(); + + if (_phoneCall.getState() == EnumPhoneCallState::PhoneCallStateHold) { + _waitForHoldState = false; + _conferenceCall.join(callId); + } else { + _waitForHoldState = true; + + //FIXME hack, do not hold the first phone call of the conference, user has to do it himself + /*if (_conferenceCall.getPhoneCallList().size() > 1) { + _phoneCall.hold(); + }*/ + } +} + +void ConferenceCallParticipant::phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { + switch(state) { + + case EnumPhoneCallState::PhoneCallStateUnknown: + break; + + case EnumPhoneCallState::PhoneCallStateError: + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + break; + + case EnumPhoneCallState::PhoneCallStateTalking: + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + break; + + case EnumPhoneCallState::PhoneCallStateRinging: + break; + + case EnumPhoneCallState::PhoneCallStateClosed: + break; + + case EnumPhoneCallState::PhoneCallStateIncoming: + break; + + case EnumPhoneCallState::PhoneCallStateHold: + if (_waitForHoldState) { + joinConference(); + } + break; + + case EnumPhoneCallState::PhoneCallStateMissed: + break; + + case EnumPhoneCallState::PhoneCallStateRedirected: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStart: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStop: + break; + + default: + LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/ConferenceCallParticipant.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,54 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef CONFERENCECALLPARTICIPANT_H +#define CONFERENCECALLPARTICIPANT_H + +#include + +#include + +class ConferenceCall; +class PhoneCall; + +/** + * Participant to a ConferenceCall. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class ConferenceCallParticipant : NonCopyable { +public: + + ConferenceCallParticipant(ConferenceCall & conferenceCall, PhoneCall & phoneCall); + +private: + + void joinConference(); + + void phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); + + ConferenceCall & _conferenceCall; + + PhoneCall & _phoneCall; + + bool _waitForHoldState; +}; + +#endif //CONFERENCECALLPARTICIPANT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCall.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,284 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCall.h" + +#include "PhoneCallStateUnknown.h" +#include "PhoneCallStateClosed.h" +#include "PhoneCallStateDialing.h" +#include "PhoneCallStateError.h" +#include "PhoneCallStateHold.h" +#include "PhoneCallStateIncoming.h" +#include "PhoneCallStateTalking.h" +#include "PhoneCallStateResumed.h" +#include "PhoneCallStateRinging.h" +#include "PhoneCallStateRingingStart.h" +#include "PhoneCallStateRingingStop.h" + +#include +#include + +#include + +#include + +PhoneCall::PhoneCall(IPhoneLine & phoneLine, const SipAddress & sipAddress) + : _phoneLine(phoneLine) { + + _duration = -1; + _holdRequest = false; + _resumeRequest = false; + _conferenceCall = NULL; + _callRejected = false; + _timeStart = -1; + _videoEnabled = false; + + _sipAddress = sipAddress; + + static PhoneCallStateUnknown stateUnknown; + + //Default state (PhoneCallStateUnknown) + _state = &stateUnknown; + + _phoneCallStateList += &stateUnknown; + + static PhoneCallStateClosed stateClosed; + _phoneCallStateList += &stateClosed; + + static PhoneCallStateDialing stateDialing; + _phoneCallStateList += &stateDialing; + + static PhoneCallStateError stateError; + _phoneCallStateList += &stateError; + + static PhoneCallStateHold stateHold; + _phoneCallStateList += &stateHold; + + static PhoneCallStateIncoming stateIncoming; + _phoneCallStateList += &stateIncoming; + + static PhoneCallStateTalking stateTalking; + _phoneCallStateList += &stateTalking; + + static PhoneCallStateResumed stateResumed; + _phoneCallStateList += &stateResumed; + + static PhoneCallStateRinging stateRinging; + _phoneCallStateList += &stateRinging; + + static PhoneCallStateRingingStart stateRingingStart; + _phoneCallStateList += &stateRingingStart; + + static PhoneCallStateRingingStop stateRingingStop; + _phoneCallStateList += &stateRingingStop; + + static PhoneCallStateBusy stateBusy; + _phoneCallStateList += &stateBusy; + + static PhoneCallStateRejected stateRejected; + _phoneCallStateList += &stateRejected; + + static PhoneCallStateUserNotFound stateUserNotFound; + _phoneCallStateList += &stateUserNotFound; + + static PhoneCallStateUserNotAvailable stateUserNotAvailable; + _phoneCallStateList += &stateUserNotAvailable; +} + +PhoneCall::~PhoneCall() { + //Do not need to delete everything (_phoneCallStateList) + //since states are static inside the constructor + _state = NULL; +} + +void PhoneCall::accept() { + PhoneCallState::stopSound(); + _phoneLine.acceptCall(_callId); +} + +void PhoneCall::resume() { + if (_state->getCode() == EnumPhoneCallState::PhoneCallStateHold) { + _resumeRequest = false; + _phoneLine.resumeCall(_callId); + } else { + _resumeRequest = true; + } +} + +void PhoneCall::hold() { + if (_state->getCode() == EnumPhoneCallState::PhoneCallStateTalking || + _state->getCode() == EnumPhoneCallState::PhoneCallStateResumed) { + + _holdRequest = false; + _phoneLine.holdCall(_callId); + } else { + _holdRequest = true; + } +} + +void PhoneCall::blindTransfer(const std::string & sipAddress) { + _phoneLine.blindTransfer(_callId, sipAddress); +} + +EnumPhoneCallState::PhoneCallState PhoneCall::getState() const { + return _state->getCode(); +} + +void PhoneCall::setState(EnumPhoneCallState::PhoneCallState state) { + LOG_DEBUG("PhoneCallState=" + String::fromNumber(state)); + + for (unsigned i = 0; i < _phoneCallStateList.size(); i++) { + PhoneCallState * callState = _phoneCallStateList[i]; + if (callState->getCode() == state) { + if (_state->getCode() != callState->getCode()) { + _state = callState; + + if(_state->getCode() == EnumPhoneCallState::PhoneCallStateIncoming) + { + if(_phoneLine.getUserProfile().getPresenceState() != EnumPresenceState::PresenceStateDoNotDisturb) + { + if(_phoneLine.hasPendingCalls()) + _state->execute(*this,true); + else + _state->execute(*this); + } + } + else + _state->execute(*this); + + LOG_DEBUG("call state changed callId=" + String::fromNumber(_callId) + + " state=" + EnumPhoneCallState::toString(_state->getCode())); + applyState(state); + stateChangedEvent(*this, state); + return; + } + } + } + + //LOG_FATAL("unknown PhoneCallState=" + String::fromNumber(state)); +} + +void PhoneCall::applyState(EnumPhoneCallState::PhoneCallState state) { + if (getVideoCodecUsed() == CodecList::VideoCodecError) { + _videoEnabled = true; + } else { + _videoEnabled = false; + } + + //This should not replace the state machine pattern PhoneCallState + switch(state) { + case EnumPhoneCallState::PhoneCallStateUnknown: + break; + + case EnumPhoneCallState::PhoneCallStateBusy: + case EnumPhoneCallState::PhoneCallStateRejected: + case EnumPhoneCallState::PhoneCallStateUserNotFound: + case EnumPhoneCallState::PhoneCallStateUserNotAvailable: + break; + + case EnumPhoneCallState::PhoneCallStateError: + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + break; + + case EnumPhoneCallState::PhoneCallStateTalking: + if (_holdRequest) { + hold(); + } else { + //Start of the call, computes duration + _timeStart = time(NULL); + } + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + break; + + case EnumPhoneCallState::PhoneCallStateRinging: + break; + + case EnumPhoneCallState::PhoneCallStateClosed: + //End of the call, computes duration + if (_timeStart != -1) { + _duration = time(NULL) - _timeStart; + } + + if (!_callRejected) { + //Call missed if incoming state + closed state without being rejected + setState(EnumPhoneCallState::PhoneCallStateMissed); + } + break; + + case EnumPhoneCallState::PhoneCallStateIncoming: + break; + + case EnumPhoneCallState::PhoneCallStateHold: + if (_resumeRequest) { + resume(); + } + break; + + case EnumPhoneCallState::PhoneCallStateMissed: + break; + + case EnumPhoneCallState::PhoneCallStateRedirected: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStart: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStop: + break; + + default: + LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); + } +} + +void PhoneCall::close() { + if (_state->getCode() != EnumPhoneCallState::PhoneCallStateClosed) { + if (_state->getCode() == EnumPhoneCallState::PhoneCallStateIncoming) { + _callRejected = true; + _phoneLine.rejectCall(_callId); + } else if (_state->getCode() != EnumPhoneCallState::PhoneCallStateError) { + _phoneLine.closeCall(_callId); + } + setState(EnumPhoneCallState::PhoneCallStateClosed); + } +} + +void PhoneCall::videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame) { + videoFrameReceivedEvent(*this, remoteVideoFrame, localVideoFrame); +} + +void PhoneCall::playSoundFile(const std::string & soundFile) { + _phoneLine.playSoundFile(_callId, soundFile); +} + +CodecList::AudioCodec PhoneCall::getAudioCodecUsed() { + return _phoneLine.getAudioCodecUsed(_callId); +} + +CodecList::VideoCodec PhoneCall::getVideoCodecUsed() { + return _phoneLine.getVideoCodecUsed(_callId); +} + +bool PhoneCall::isCallEncrypted() const { + return _phoneLine.isCallEncrypted(_callId); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCall.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,267 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONECALL_H +#define OWPHONECALL_H + +#include "SipAddress.h" + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +class WebcamVideoFrame; +class PhoneCallState; +class IPhoneLine; +class ConferenceCall; + +/** + * Class that holds informations about a current phone call. + * + * A phone call is associated with a PhoneLine. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCall : NonCopyable { +public: + + /** + * The state of the PhoneCall has changed. + * + * @param sender this class + * @param status new status + */ + Event stateChangedEvent; + + /** + * A video frame has been received from the network. + * + * @param sender this class + * @param remoteVideoFrame remote video frame + * @param localVideoFrame local video frame from the webcam + */ + Event videoFrameReceivedEvent; + + /** + * Creates a new PhoneCall given a PhoneLine. + * + * @param phoneLine PhoneLine associated with this PhoneCall + * @param sipAddress caller/callee/peer SIP address + */ + PhoneCall(IPhoneLine & phoneLine, const SipAddress & sipAddress); + + ~PhoneCall(); + + /** + * @see IPhoneLine::acceptCall() + */ + void accept(); + + /** + * @see IPhoneLine::resumeCall() + */ + void resume(); + + /** + * @see IPhoneLine::holdCall() + */ + void hold(); + + /** + * @see IPhoneLine::closeCall() + */ + void close(); + + /** + * @see IPhoneLine::blindTransfer() + */ + void blindTransfer(const std::string & sipAddress); + + /** + * @see IPhoneLine::playSoundFile() + */ + void playSoundFile(const std::string & soundFile); + + /** + * @see IPhoneLine::getAudioCodecUsed() + */ + CodecList::AudioCodec getAudioCodecUsed(); + + /** + * @see IPhoneLine::getVideoCodecUsed() + */ + CodecList::VideoCodec getVideoCodecUsed(); + + /** + * Video frame received. + * + * @param remoteVideoFrame received + * @param localWebcam local webcam + */ + void videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame); + + /** + * Changes the state of this PhoneCall. + * + * @param state state code corresponding to the new PhoneCall state + */ + void setState(EnumPhoneCallState::PhoneCallState state); + + /** + * Gets the current state of this PhoneCall. + * + * @return state of this PhoneCall + */ + EnumPhoneCallState::PhoneCallState getState() const; + + /** + * Sets the call id associated with this PhoneCall. + * + * Should only be called by PhoneLine. + * + * @param callId call id of this PhoneCall + */ + void setCallId(int callId) { + _callId = callId; + } + + /** + * Gets the call id of this PhoneCall. + * + * @return call id of this PhoneCall + */ + int getCallId() const { + return _callId; + } + + /** + * Gets the caller/callee/peer SIP address associated with this PhoneCall. + * + * @return caller/callee/peer SIP address + */ + const SipAddress & getPeerSipAddress() const { + return _sipAddress; + } + + /** + * Gets the PhoneLine associated with this PhoneCall. + * + * @return phone line + */ + IPhoneLine & getPhoneLine() const { + return _phoneLine; + } + + /** + * Gets the duration of the call in seconds + * + * @return duration of the call or -1 if not call duration + */ + int getDuration() const { + return _duration; + } + + /** + * Gets the conference associated with this call. + * + * @return ConferenceCall or NULL if this call is not associated with a conference + */ + ConferenceCall * getConferenceCall() const { + return _conferenceCall; + } + + /** + * Gets the phone call type (audio or video). + * + * @return true if this call is a video call; false otherwise + */ + bool isVideoEnabled() const { + return _videoEnabled; + } + + /** + * @return True if the call is encrypted + */ + bool isCallEncrypted() const; + + /** + * Sets the conference associated with this call. + * + * Internal method, used only by ConferenceCall and PhoneLine. + * + * @param conferenceCall conference + */ + void setConferenceCall(ConferenceCall * conferenceCall) { + _conferenceCall = conferenceCall; + } + +private: + + void applyState(EnumPhoneCallState::PhoneCallState state); + + /** PhoneLine associated with this PhoneCall. */ + IPhoneLine & _phoneLine; + + /** Call id of this PhoneCall. */ + int _callId; + + /** Caller/callee/peer SIP address. */ + SipAddress _sipAddress; + + /** Current state of this PhoneCall. */ + PhoneCallState * _state; + + /** Defines the vector of PhoneCallState. */ + typedef List < PhoneCallState * > PhoneCallStates; + + /** List of PhoneCallState. */ + PhoneCallStates _phoneCallStateList; + + /** Call duration in seconds. */ + int _duration; + + /** If the PhoneCall should be held. */ + bool _holdRequest; + + /** If the PhoneCall should be resumed. */ + bool _resumeRequest; + + /** Conference associated with this call. */ + ConferenceCall * _conferenceCall; + + /** If this PhoneCall has been rejected as an incoming call. */ + bool _callRejected; + + /** Computes the PhoneCall duration. */ + int _timeStart; + + /** If this call is a video call or an audio call. */ + bool _videoEnabled; +}; + +#endif //OWPHONECALL_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/phonecallstate1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/phonecall/phonecallstate1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,28 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateClosed.h" + +#include "PhoneCall.h" + +#include + +void PhoneCallStateClosed::execute(PhoneCall & phoneCall,bool) { + playSoundCallClosed(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateClosed.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATECLOSED_H +#define PHONECALLSTATECLOSED_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateClosed : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateClosed; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false); +}; + +#endif //PHONECALLSTATECLOSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallState.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallState.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallState.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,103 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallState.h" + +#include +#include + +#include + +#include + +Sound * PhoneCallState::_sound = NULL; +static RecursiveMutex _mutexSound; + +PhoneCallState::PhoneCallState() { +} + +void PhoneCallState::stopSound() { + RecursiveMutex::ScopedLock scopedLock(_mutexSound); + if (_sound) { + _sound->stop(); + delete _sound; + _sound = NULL; + } +} + +void PhoneCallState::playSoundIncomingCall() { + RecursiveMutex::ScopedLock scopedLock(_mutexSound); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + stopSound(); + + if (config.getAudioRingingEnable()) + { + _sound = new Sound(config.getAudioIncomingCallFile()); + _sound->setWaveOutDevice(getRingerAudioDevice()); + _sound->setLoops(-1); + _sound->play(); + } +} + +void PhoneCallState::playSoundOutgoingCall() { + RecursiveMutex::ScopedLock scopedLock(_mutexSound); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + stopSound(); + if (config.getAudioRingingEnable()) + { + _sound = new Sound(config.getAudioOutgoingCallFile()); + _sound->setWaveOutDevice(getRingerAudioDevice()); + _sound->setLoops(-1); + _sound->play(); + } +} + +void PhoneCallState::playSoundDoubleCall() { + RecursiveMutex::ScopedLock scopedLock(_mutexSound); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + stopSound(); + if (config.getAudioRingingEnable()) + { + _sound = new Sound(config.getAudioDoubleCallFile()); + _sound->setWaveOutDevice(getRingerAudioDevice()); + _sound->setLoops(1); + _sound->play(); + } +} + +void PhoneCallState::playSoundCallClosed() { + RecursiveMutex::ScopedLock scopedLock(_mutexSound); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + stopSound(); + if (config.getAudioRingingEnable()) + { + _sound = new Sound(config.getAudioCallClosedFile()); + _sound->setWaveOutDevice(getRingerAudioDevice()); + _sound->setLoops(4); + _sound->play(); + } +} + +AudioDevice PhoneCallState::getRingerAudioDevice() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return AudioDevice(config.getAudioRingerDeviceId()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,24 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateDialing.h" + +#include "PhoneCall.h" + +void PhoneCallStateDialing::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateDialing.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATEDIALING_H +#define PHONECALLSTATEDIALING_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateDialing : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateDialing; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false); +}; + +#endif //PHONECALLSTATEDIALING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateError.h" + +#include "PhoneCall.h" + +void PhoneCallStateError::execute(PhoneCall & phoneCall,bool) { + stopSound(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateError.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATEERROR_H +#define PHONECALLSTATEERROR_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateError : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateError; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATEERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallState.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,75 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONECALLSTATE_H +#define OWPHONECALLSTATE_H + +#include + +#include +#include + +class PhoneCall; +class Sound; + +/** + * Represents the state of a PhoneCall. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallState { +public: + + PhoneCallState(); + + virtual ~PhoneCallState() { + } + + virtual void execute(PhoneCall & phoneCall,bool doublecall = false) = 0; + + /** + * Gets the status code corresponding to this PhoneCall state. + * + * @return status code of this state + */ + virtual EnumPhoneCallState::PhoneCallState getCode() const = 0; + + /** + * Stops the incoming phone call ringtone. + */ + //static void stopSoundIncomingCall(); + + static AudioDevice getRingerAudioDevice(); + + static void playSoundIncomingCall(); + + static void playSoundOutgoingCall(); + + static void playSoundDoubleCall(); + + static void playSoundCallClosed(); + + static void stopSound(); + +protected: + static Sound * _sound; +}; + +#endif //OWPHONECALLSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,24 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateHold.h" + +#include "PhoneCall.h" + +void PhoneCallStateHold::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateHold.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATEHOLD_H +#define PHONECALLSTATEHOLD_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateHold : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateHold; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATEHOLD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateIncoming.h" + +#include "PhoneCall.h" + +#include +#include +#include + +#include + +void PhoneCallStateIncoming::execute(PhoneCall & phoneCall,bool doublecall) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (config.getAudioRingingEnable()) { + //Ringin tonality + if(doublecall) + playSoundDoubleCall(); + else + playSoundIncomingCall(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateIncoming.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,41 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATEINCOMING_H +#define PHONECALLSTATEINCOMING_H + +#include "PhoneCallState.h" + +/** + * Incoming PhoneCall. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateIncoming : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateIncoming; + } + + void execute(PhoneCall & phoneCall,bool doublecall); +}; + +#endif //PHONECALLSTATEINCOMING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,25 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateMissed.h" + +#include "PhoneCall.h" + +void PhoneCallStateMissed::execute(PhoneCall & phoneCall) { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateMissed.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONECALLSTATEMISSED_H +#define OWPHONECALLSTATEMISSED_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateMissed : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateMissed; + } + + void execute(PhoneCall & phoneCall); +}; + +#endif //OWPHONECALLSTATEMISSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateResumed.h" + +#include "PhoneCall.h" + +void PhoneCallStateResumed::execute(PhoneCall & phoneCall,bool) { + stopSound(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateResumed.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONECALLSTATERESUMED_H +#define OWPHONECALLSTATERESUMED_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateResumed : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateResumed; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //OWPHONECALLSTATERESUMED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,41 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateRinging.h" + +#include "PhoneCall.h" + +#include +#include + +#include + +void PhoneCallStateRinging::execute(PhoneCall & phoneCall,bool) { + + /*Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (config.getAudioRingingEnable()) { + //Ringin tonality + _soundIncomingCall = new Sound(getSoundIncomingCallFile()); + + _soundIncomingCall->setWaveOutDevice(getRingerAudioDevice()); + //Play the sound indefinitely + _soundIncomingCall->setLoops(-1); + _soundIncomingCall->play(); + }*/ +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRinging.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATERINGING_H +#define PHONECALLSTATERINGING_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateRinging : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateRinging; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATERINGING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateRingingStart.h" + +#include "PhoneCall.h" + +#include +#include + +#include + +void PhoneCallStateRingingStart::execute(PhoneCall & phoneCall,bool) { + playSoundOutgoingCall(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStart.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATERINGINGSTART_H +#define PHONECALLSTATERINGINGSTART_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateRingingStart : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateRingingStart; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATERINGINGSTART_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,32 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateRingingStop.h" + +#include "PhoneCall.h" + +#include +#include + +#include + +void PhoneCallStateRingingStop::execute(PhoneCall & phoneCall,bool) { + + stopSound(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateRingingStop.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATERINGINGSTOP_H +#define PHONECALLSTATERINGINGSTOP_H + +#include "PhoneCallState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateRingingStop : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateRingingStop; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATERINGINGSTOP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateTalking.h" + +#include "PhoneCall.h" + +void PhoneCallStateTalking::execute(PhoneCall & phoneCall,bool) { + stopSound(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateTalking.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,41 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONECALLSTATETALKING_H +#define PHONECALLSTATETALKING_H + +#include "PhoneCallState.h" + +/** + * Communication state. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateTalking : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateTalking; + } + + void execute(PhoneCall & phoneCall,bool doublecall =false); +}; + +#endif //PHONECALLSTATETALKING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,24 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneCallStateUnknown.h" + +#include "PhoneCall.h" + +void PhoneCallStateUnknown::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/PhoneCallStateUnknown.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +; +#ifndef PHONECALLSTATEUNKNOWN_H +#define PHONECALLSTATEUNKNOWN_H + +#include "PhoneCallState.h" + +#include "PhoneCall.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class PhoneCallStateUnknown : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateUnknown; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false); +}; + +/** + * + * @ingroup model + * @author Preetish Kakkar + */ +class PhoneCallStateBusy : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateBusy; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false) { + } +}; + +/** + * + * @ingroup model + * @author Preetish Kakkar + */ +class PhoneCallStateRejected : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateRejected; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false) { + } +}; + +/** + * + * @ingroup model + * @author Preetish Kakkar + */ +class PhoneCallStateUserNotFound : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateUserNotFound; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false) { + } +}; + +/** + * + * @ingroup model + * @author Preetish Kakkar + */ +class PhoneCallStateUserNotAvailable : public PhoneCallState { +public: + + EnumPhoneCallState::PhoneCallState getCode() const { + return EnumPhoneCallState::PhoneCallStateUserNotAvailable; + } + + void execute(PhoneCall & phoneCall,bool doublecall = false) { + } +}; + +#endif //PHONECALLSTATEUNKNOWN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/SipAddress.cpp qutecom-2.2+dfsg1/qutecom/src/model/phonecall/SipAddress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/SipAddress.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/SipAddress.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,133 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "SipAddress.h" + +#include + +using namespace std; + +SipAddress::SipAddress(const std::string & rawSipAddress) { + _rawSipAddress = rawSipAddress; + parseSipAddress(rawSipAddress); +} + +SipAddress::~SipAddress() { +} + +void SipAddress::parseSipAddress(const std::string & rawSipAddress) { + static const string LOWER = "<"; + static const string UPPER = ">"; + static const string SIP = "sip:"; + static const string AT = "@"; + static const string BACKSLASH = "\""; + static const string SPACE = " "; + + //phApi from = "jwagner_office" ;tag=00-01430 + + String tmp(rawSipAddress); + _sipAddress = rawSipAddress; + if (!tmp.empty()) { + string::size_type posSipAddressBegin = tmp.find(LOWER); + if (posSipAddressBegin != string::npos) { + posSipAddressBegin += LOWER.length(); + string::size_type posSipAddressEnd = tmp.find(UPPER); + if (posSipAddressEnd != string::npos) { + _sipAddress = tmp.substr(posSipAddressBegin, posSipAddressEnd - posSipAddressBegin); + } + } + } + //_sipAddress = sip:0170187873@192.168.70.20;user=phone + + tmp = rawSipAddress; + _userName = rawSipAddress; + if (!tmp.empty()) { + string::size_type posUserNameBegin = tmp.find(SIP); + if (posUserNameBegin != string::npos) { + posUserNameBegin += SIP.length(); + string::size_type posUserNameEnd = tmp.find(AT); + if (posUserNameEnd != string::npos) { + _userName = tmp.substr(posUserNameBegin, posUserNameEnd - posUserNameBegin); + } + } + } + //_userName = 0170187873 + + tmp = rawSipAddress; + _displayName = ""; + if (!tmp.empty()) { + string::size_type posDisplayNameEnd = tmp.find(LOWER + SIP); + if (posDisplayNameEnd != string::npos) { + _displayName = tmp.substr(0, posDisplayNameEnd - 0); + _displayName.remove(BACKSLASH); + _displayName.remove(SPACE); + } + } + //_displayName = jwagner_office +} + +std::string SipAddress::toString() const { + if (!getDisplayName().empty()) { + return getDisplayName(); + } + + return getUserName(); +} + +SipAddress SipAddress::fromString(const std::string & str, const std::string & realm) { + /*if (str.empty()) { + return -1; + }*/ + + String sipUri(str); + size_t length = strspn(sipUri.c_str(), " .,;:()[]{}-_/#+0123456789"); + if (length == sipUri.length()) { + //sipUri is a real phone number not a SIP URI or a pseudo + + sipUri.remove(" "); + sipUri.remove("."); + sipUri.remove(","); + sipUri.remove(";"); + sipUri.remove(":"); + sipUri.remove("("); + sipUri.remove(")"); + sipUri.remove("["); + sipUri.remove("]"); + sipUri.remove("{"); + sipUri.remove("}"); + sipUri.remove("-"); + sipUri.remove("_"); + sipUri.remove("/"); + //sipUri.remove("#"); + + //Replaces + by 00 + sipUri.replace("+", "00"); + } + + if (!sipUri.beginsWith("sip:")) { + sipUri = "sip:" + sipUri; + } + + if (!sipUri.contains("@")) { + //Not a SIP URI + sipUri += "@" + realm; + } + + return SipAddress(sipUri); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/SipAddress.h qutecom-2.2+dfsg1/qutecom/src/model/phonecall/SipAddress.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phonecall/SipAddress.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phonecall/SipAddress.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,133 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWSIPADDRESS_H +#define OWSIPADDRESS_H + +#include + +/** + * SIP address parsing. + * + * A SIP URI is like: tanguy + * Separates the username/displayname from the rest of the SIP address. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class SipAddress { +public: + + SipAddress() { + } + + /** + * Constructs a SipAddress given a unmodified complete string raw SIP address. + * + * @param rawSipAddress string raw SIP address + */ + SipAddress(const std::string & rawSipAddress); + + ~SipAddress(); + + /** + * Gets the unmodified SIP address. + * + * The unmodified SIP address from the SIP stack. + * + * @return SIP address + */ + const std::string & getRawSipAddress() const { + return _rawSipAddress; + } + + /** + * Gets the simplified SIP address. + * + * Example: sip:0170187873@voip.qutecom.fr + * No display name + no < > + * + * @return SIP address + */ + const std::string & getSipAddress() const { + return _sipAddress; + } + + /** + * Gets the username part of the SIP address. + * + * Example: tanguy + * username is 0170187873 + * + * @return username + */ + const std::string & getUserName() const { + return _userName; + } + + /** + * Gets the diplay name part of the SIP address. + * + * Example: tanguy + * display name is tanguy + * + * @return display name + */ + const std::string & getDisplayName() const { + return _displayName; + } + + /** + * Gets a human readable representation of this SIP address. + * + * @return display name or user name if display name is empty + */ + std::string toString() const; + + /** + * Creates a SipAddress from a unknown string. + * + * @param str unknown string that can be a SIP address or a phone number + * @param realm SIP server realm + * @return the SipAddress created from the given string + */ + static SipAddress fromString(const std::string & str, const std::string & realm); + +private: + + /** + * Parses the from (SIP address) field. + * + * Example of a from field (phApi): + * "jwagner_office" ;tag=00-01430 + * + * @param sipAddress from field + */ + void parseSipAddress(const std::string & sipAddress); + + std::string _rawSipAddress; + + String _sipAddress; + + String _displayName; + + String _userName; +}; + +#endif //SIPADDRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/EnumMakeCallError.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/EnumMakeCallError.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/EnumMakeCallError.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/EnumMakeCallError.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef ENUMMAKECALLERROR_H +#define ENUMMAKECALLERROR_H + +class EnumMakeCallError { +public: + enum MakeCallError { + CallNotHeld, + NotConnected, + EmptyPhoneNumber, + SipError, + NoError + }; +}; + +#endif /* ENUMMAKECALLERROR_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/IPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/IPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/IPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/IPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,256 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIPHONELINE_H +#define OWIPHONELINE_H + +#include +#include +#include + +#include "EnumMakeCallError.h" + +#include +#include +#include +#include + +#include + +class PhoneCall; +class ConferenceCall; +class PhoneLineState; +class SipAccount; +class SipWrapper; +class SipAddress; +class SipPresenceState; +class UserProfile; + +/** + * Interface representing a phone line. + * + * A phone line creates/deletes/contains a list of PhoneCall. + * + * @ingroup model + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class IPhoneLine : Interface { +public: + + /** + * @see SipWrapper::phoneLineStateChangedEvent + */ + Event stateChangedEvent; + + /** + * A PhoneCall has been created. + * + * @param sender this class + * @param phoneCall phoneCall created + */ + Event phoneCallCreatedEvent; + + /** + * A PhoneCall has been closed. + * + * @param sender this class + * @param phoneCall phoneCall closed + */ + Event phoneCallClosedEvent; + + virtual ~IPhoneLine() { + } + + virtual std::string getMySipAddress() const = 0; + + /** + * @see SipWrapper::makeCall() + */ + virtual EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall = NULL) = 0; + + /** + * @see SipWrapper::acceptCall() + */ + virtual void acceptCall(int callId) = 0; + + /** + * @see SipWrapper::rejectCall() + */ + virtual void rejectCall(int callId) = 0; + + /** + * @see SipWrapper::closeCall() + */ + virtual void closeCall(int callId) = 0; + + /** + * @see SipWrapper::holdCall() + */ + virtual void holdCall(int callId) = 0; + + /** + * @see SipWrapper::resumeCall() + */ + virtual void resumeCall(int callId) = 0; + + /** + * @see SipWrapper::blindTransfer() + */ + virtual void blindTransfer(int callId, const std::string & sipAddress) = 0; + + /** + * @see SipWrapper::playDtmf() + */ + virtual void playDtmf(int callId, char dtmf) = 0; + + /** + * @see SipWrapper::playSoundFile() + */ + virtual void playSoundFile(int callId, const std::string & soundFile) = 0; + + /** + * @see SipWrapper::getAudioCodecUsed() + */ + virtual CodecList::AudioCodec getAudioCodecUsed(int callId) = 0; + + /** + * @see SipWrapper::getVideoCodecUsed() + */ + virtual CodecList::VideoCodec getVideoCodecUsed(int callId) = 0; + + /** + * Gets the SIP account associated with this PhoneLine. + * + * @return SIP account associated with this PhoneLine or NULL + */ + virtual SipAccount & getSipAccount() = 0; + + /** + * Establishes a connection with the SIP server. + */ + virtual bool connect() = 0; + + /** + * Finishes the connection with the SIP server. + * + * @param force if true, disconnect without doing any transactions + */ + virtual void disconnect(bool force = false) = 0; + + /** + * @return true if connected, otherwise false + */ + virtual bool isConnected() const = 0; + + /** + * Sets the state of a PhoneCall. + * + * @param callId PhoneCall id + * @param state the state (e.g event) + * @param sipAddress from who we get a phone call + */ + virtual void setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress) = 0; + + /** + * Gets the SIP implementation wrapper. + * + * @return the SIP implementation wrapper + */ + virtual SipWrapper & getSipWrapper() const = 0; + + /** + * Gets the PhoneLine id. + * + * @return the id associated with this PhoneLine + */ + virtual int getLineId() const = 0; + + /** + * Changes the state of this PhoneLine. + * + * @param state state code corresponding to the new PhoneLine state + */ + virtual void setState(EnumPhoneLineState::PhoneLineState state) = 0; + + /** + * Gets the current state of this PhoneLine. + * + * @return state of this PhoneLine + */ + virtual const PhoneLineState & getState() const = 0; + + /** + * Gets the UserProfile instance. + * + * @return UserProfile instance + */ + virtual UserProfile & getUserProfile() const = 0; + + /** + * Gets the PhoneCall associated with a given callId. + * + * @return PhoneCall given its callId or NULL if no PhoneCall corresponds to the callId + */ + virtual PhoneCall * getPhoneCall(int callId) /*const*/ = 0; + + /** + * Gets the active PhoneCall associated with this PhoneLine. + * + * @return active PhoneCall or NULL + */ + virtual PhoneCall * getActivePhoneCall() const = 0; + + typedef List PhoneCallList; + + /** + * Gets the list of PhoneCall associated with this PhoneLine. + * + * @return the list of PhoneCall + */ + virtual PhoneCallList getPhoneCallList() const = 0; + + /** + * Set flip video parameter. + */ + virtual void flipVideoImage(bool flip) = 0; + + /** + * @see SipWrapper::setCallsEncryption + */ + virtual void setCallsEncryption(bool enable) = 0; + + /** + * @see SipWrapper::areCallsEncrypted + */ + virtual bool isCallEncrypted(int callId) = 0; + + /** + * @return True if there's pending call(s) + */ + virtual bool hasPendingCalls() const = 0; + + /** + * Close active call(s). + */ + virtual void closePendingCalls() = 0; + +}; + +#endif //OWIPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLine.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLine.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,605 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLine.h" + +#include "PhoneLineStateUnknown.h" +#include "PhoneLineStateProgress.h" +#include "PhoneLineStateOk.h" +#include "PhoneLineStateClosed.h" +#include "PhoneLineStateTimeout.h" +#include "PhoneLineStateServerError.h" +#include "PhoneLineStateAuthenticationError.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include + +#include +using namespace std; + +#include + +PhoneLine::PhoneLine(SipAccount & sipAccount, UserProfile & userProfile) + : _sipAccount(sipAccount), + _userProfile(userProfile) { + + static PhoneLineStateUnknown stateUnknown; + _phoneLineStateList += &stateUnknown; + _state = &stateUnknown; + + static PhoneLineStateProgress stateProgress; + _phoneLineStateList += &stateProgress; + + static PhoneLineStateOk stateOk; + _phoneLineStateList += &stateOk; + + static PhoneLineStateClosed stateClosed; + _phoneLineStateList += &stateClosed; + + static PhoneLineStateTimeout stateTimeout; + _phoneLineStateList += &stateTimeout; + + static PhoneLineStateServerError stateServerError; + _phoneLineStateList += &stateServerError; + + static PhoneLineStateAuthenticationError stateAuthenticationError; + _phoneLineStateList += &stateAuthenticationError; + + _activePhoneCall = NULL; + + _sipWrapper = NULL; + _sipCallbacks = NULL; + _lineId = SipWrapper::VirtualLineIdError; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.valueChangedEvent + += boost::bind(&PhoneLine::configureSipWrapper, this); +} + +PhoneLine::~PhoneLine() { + disconnect(); + + //Do not need to delete everything (_phoneLineStateList) + //since states are static inside the constructor + _state = NULL; + + OWSAFE_DELETE(_sipCallbacks); + + _sipWrapper = NULL; + + OWSAFE_DELETE(_activePhoneCall); +} + +bool PhoneLine::init() { + _sipWrapper = SipWrapperFactory::getFactory().createSipWrapper(); + _sipCallbacks = new SipCallbacks(*_sipWrapper, _userProfile); + _lineId = SipWrapper::VirtualLineIdError; + return initSipWrapper(); +} + +std::string PhoneLine::getMySipAddress() const { + return "sip:" + _sipAccount.getIdentity() + "@" + _sipAccount.getRealm(); +} + +EnumMakeCallError::MakeCallError PhoneLine::makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall) { + if (!_sipAccount.isConnected()) { + LOG_ERROR("SipAccount not connected"); + return EnumMakeCallError::NotConnected; + } + + if (phoneNumber.empty()) { + LOG_ERROR("empty phone number"); + return EnumMakeCallError::EmptyPhoneNumber; + } + + for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + + if (phoneCall) { + EnumPhoneCallState::PhoneCallState state = phoneCall->getState(); + if (state != EnumPhoneCallState::PhoneCallStateHold && + state != EnumPhoneCallState::PhoneCallStateClosed) { + + return EnumMakeCallError::CallNotHeld; + } + } + } + + SipAddress sipAddress = SipAddress::fromString( + phoneNumber, _sipAccount.getRealm() + ); + + //Puts all the PhoneCall in the hold state before to create a new PhoneCall + //holdAllCalls(); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + bool enableVideo = config.getVideoEnable(); + + if (enableVideo) { + //Sets the video device + _sipWrapper->setVideoDevice(config.getVideoWebcamDevice()); + } + + PhoneCall * phoneCall = new PhoneCall(*this, sipAddress); + phoneCall->setConferenceCall(conferenceCall); + _activePhoneCall = phoneCall; + int callId = _sipWrapper->makeCall( + _lineId, sipAddress.getRawSipAddress(), enableVideo + ); + + if (callId < 0) { + //FIXME should be replaced by a LOG_FATAL() + LOG_ERROR("couldn't place the call, SipWrapper returned an error=" + + String::fromNumber(callId)); + return EnumMakeCallError::SipError; + } + + phoneCall->setCallId(callId); + + //Adds the PhoneCall to the list of PhoneCall + _phoneCallMap[callId] = phoneCall; + + phoneCall->setState(EnumPhoneCallState::PhoneCallStateDialing); + + //Sends the event a new PhoneCall has been created + phoneCallCreatedEvent(*this, *phoneCall); + + //History: create a HistoryMemento for this outgoing call + HistoryMemento * memento = new HistoryMemento( + HistoryMemento::OutgoingCall, sipAddress.getSipAddress(), callId); + _userProfile.getHistory().addMemento(memento); + + return EnumMakeCallError::NoError; +} + +bool PhoneLine::connect() { + + if (_sipAccount.isConnected()) { + return true; // Nothing to do if the line is already connected! + } + _lineId = _sipWrapper->addVirtualLine( + _sipAccount.getDisplayName(), + _sipAccount.getUsername(), + _sipAccount.getIdentity(), + _sipAccount.getPassword(), + _sipAccount.getRealm(), + _sipAccount.getSIPProxyServerHostname(), + _sipAccount.getRegisterServerHostname()); + if (_lineId < 0) { + LOG_ERROR("VirtualLine Creation Failed"); + return false; + } + _sipAccount.setVLineID(_lineId); + + if (_sipWrapper->registerVirtualLine(_lineId) != 0) { + LOG_ERROR("Couldn't register virtual line"); + return false; + } + + LOG_DEBUG("connect username=" + _sipAccount.getUsername() + + " server=" + _sipAccount.getRegisterServerHostname() + + " lineId=" + String::fromNumber(_lineId)); + return true; +} + +void PhoneLine::disconnect(bool force) { + if (_lineId != SipWrapper::VirtualLineIdError) { + _sipAccount.setConnected(false); + _sipWrapper->removeVirtualLine(_lineId, force); + } +} + +void PhoneLine::checkCallId(int callId) { + PhoneCall * phoneCall = getPhoneCall(callId); + if (!phoneCall) { + LOG_FATAL("unknown phone call callId=" + String::fromNumber(callId)); + } +} + +void PhoneLine::acceptCall(int callId) { + //FIXME crash in some cases + //checkCallId(callId); + + holdCallsExcept(callId); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + bool enableVideo = config.getVideoEnable(); + + if (enableVideo) { + //Sets the video device + _sipWrapper->setVideoDevice(config.getVideoWebcamDevice()); + } + + _sipWrapper->acceptCall(callId, enableVideo); + LOG_DEBUG("call accepted callId=" + String::fromNumber(callId)); +} + +void PhoneLine::rejectCall(int callId) { + //FIXME crash in some cases + //checkCallId(callId); + + _sipWrapper->rejectCall(callId); + //History: retrieve the memento and change its state to rejected + _userProfile.getHistory().updateCallState(callId, HistoryMemento::RejectedCall); + LOG_DEBUG("call rejected callId=" + String::fromNumber(callId)); +} + +void PhoneLine::closeCall(int callId) { + checkCallId(callId); + _sipWrapper->closeCall(callId); + LOG_DEBUG("call closed callId=" + String::fromNumber(callId)); +} + +void PhoneLine::holdCall(int callId) { + checkCallId(callId); + _sipWrapper->holdCall(callId); + LOG_DEBUG("call hold callId=" + String::fromNumber(callId)); +} + +void PhoneLine::resumeCall(int callId) { + checkCallId(callId); + _sipWrapper->resumeCall(callId); + LOG_DEBUG("call resumed callId=" + String::fromNumber(callId)); +} + +void PhoneLine::blindTransfer(int callId, const std::string & sipAddress) { + checkCallId(callId); + SipAddress sipUri = SipAddress::fromString( + sipAddress, getSipAccount().getRealm() + ); + _sipWrapper->blindTransfer(callId, sipUri.getRawSipAddress()); + LOG_DEBUG("call transfered to=" + sipAddress); +} + +void PhoneLine::playSoundFile(int callId, const std::string & soundFile) { + //No check + //checkCallId(callId); + _sipWrapper->playSoundFile(callId, soundFile); +} + +void PhoneLine::playDtmf(int callId, char dtmf) { + //No check + //checkCallId(callId); + _sipWrapper->playDtmf(callId, dtmf); +} + + +CodecList::AudioCodec PhoneLine::getAudioCodecUsed(int callId) { + return _sipWrapper->getAudioCodecUsed(callId); +} + +CodecList::VideoCodec PhoneLine::getVideoCodecUsed(int callId) { + return _sipWrapper->getVideoCodecUsed(callId); +} + +void PhoneLine::setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress) { + LOG_DEBUG("call state changed callId=" + String::fromNumber(callId) + + " state=" + EnumPhoneCallState::toString(state) + + " from=" + sipAddress.getSipAddress()); + + //Saves the last state + EnumPhoneCallState::PhoneCallState lastState = EnumPhoneCallState::PhoneCallStateUnknown; + PhoneCall * phoneCall = getPhoneCall(callId); + if (phoneCall) { + + lastState = phoneCall->getState(); + + if (phoneCall->getState() == state) { + //We are already in this state + //Prevents the state to be applied 2 times in a row + return; + } + + phoneCall->setState(state); + } + + // This should not replace the state machine pattern PhoneCallState/ PhoneLineState + switch (state) { + + case EnumPhoneCallState::PhoneCallStateUnknown: + break; + + case EnumPhoneCallState::PhoneCallStateError: + callClosed(callId); + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + holdCallsExcept(callId); + _activePhoneCall = getPhoneCall(callId); + break; + + case EnumPhoneCallState::PhoneCallStateTalking: + _activePhoneCall = getPhoneCall(callId); + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + break; + + case EnumPhoneCallState::PhoneCallStateRinging: + break; + + case EnumPhoneCallState::PhoneCallStateClosed: + if (lastState == EnumPhoneCallState::PhoneCallStateIncoming) { + //History: retrieve the memento and change its state to missed + _userProfile.getHistory().updateCallState( + callId, HistoryMemento::MissedCall); + LOG_DEBUG("call missed callId=" + String::fromNumber(callId)); + } + callClosed(callId); + break; + + case EnumPhoneCallState::PhoneCallStateIncoming: { + //Sends SIP code 180 + //TODO automatically?? + _sipWrapper->sendRingingNotification(callId, + ConfigManager::getInstance().getCurrentConfig().getVideoEnable()); + + PhoneCall * phoneCall = new PhoneCall(*this, sipAddress); + phoneCall->setCallId(callId); + + //Adds the PhoneCall to the list of PhoneCall + _phoneCallMap[callId] = phoneCall; + + phoneCall->setState(state); + + _activePhoneCall = phoneCall; + + if(getUserProfile().getPresenceState() != EnumPresenceState::PresenceStateDoNotDisturb) + //Sends the event a new PhoneCall has been created + phoneCallCreatedEvent(*this, *phoneCall); + + //History: create a HistoryMemento for this incoming call + std::string displayName = sipAddress.getUserName(); + if (displayName.empty()) { + displayName = sipAddress.getDisplayName(); + } + HistoryMemento * memento = new HistoryMemento( + HistoryMemento::IncomingCall, displayName, callId); + _userProfile.getHistory().addMemento(memento); + + if(getUserProfile().getPresenceState() == EnumPresenceState::PresenceStateDoNotDisturb) + rejectCall(callId); + break; + } + + case EnumPhoneCallState::PhoneCallStateHold: + break; + + case EnumPhoneCallState::PhoneCallStateMissed: + //History: retrieve the memento and change its state to missed + _userProfile.getHistory().updateCallState(callId, HistoryMemento::MissedCall); + LOG_DEBUG("call missed callId=" + String::fromNumber(callId)); + break; + + case EnumPhoneCallState::PhoneCallStateRedirected: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStart: + break; + + case EnumPhoneCallState::PhoneCallStateRingingStop: + break; + + case EnumPhoneCallState::PhoneCallStateBusy: + case EnumPhoneCallState::PhoneCallStateRejected: + case EnumPhoneCallState::PhoneCallStateUserNotFound: + case EnumPhoneCallState::PhoneCallStateUserNotAvailable: + callClosed(callId); + break; + + default: + LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); + } +} + +void PhoneLine::callClosed(int callId) { + //If it crashes inside checkCallId() this is probably due + //to a duplicated phCALLCLOSED message + //checkCallId(callId); + + PhoneCall * phoneCall = getPhoneCall(callId); + if (!phoneCall) { + //Phone call has been already closed + return; + } + + if (_activePhoneCall == phoneCall) { + _activePhoneCall = NULL; + } + + //Deletes the PhoneCall that is closed now + //delete phoneCall; + + //History: update the duration of the memento associated to this phonecall + _userProfile.getHistory().updateCallDuration(callId, + phoneCall->getDuration()); + + //Removes it from the list of PhoneCall + _phoneCallMap.erase(callId); + + phoneCallClosedEvent(*this, *phoneCall); +} + +void PhoneLine::holdCallsExcept(int callId) { + for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + if (phoneCall) { + if (phoneCall->getCallId() != callId && + !phoneCall->getConferenceCall()) { + + phoneCall->hold(); + } + } + } +} + +void PhoneLine::holdAllCalls() { + holdCallsExcept(SipWrapper::CallIdError); +} + +void PhoneLine::setState(EnumPhoneLineState::PhoneLineState state) { + LOG_DEBUG("PhoneLineState=" + EnumPhoneLineState::toString(state)); + + for (unsigned i = 0; i < _phoneLineStateList.size(); i++) { + PhoneLineState * phoneLineState = _phoneLineStateList[i]; + if (phoneLineState->getCode() == state) { + if (_state->getCode() != phoneLineState->getCode()) { + _state = phoneLineState; + _state->execute(*this); + + if (state == EnumPhoneLineState::PhoneLineStateAuthenticationError) { + return; + } + + LOG_DEBUG("line state changed lineId=" + + String::fromNumber(_lineId) + " state=" + + EnumPhoneLineState::toString(_state->getCode())); + stateChangedEvent(*this, state); + return; + } else { + //Stay in the same state + return; + } + } + } + + LOG_FATAL("unknown PhoneLineState=" + String::fromNumber(state)); +} + +PhoneCall * PhoneLine::getPhoneCall(int callId) { + return _phoneCallMap[callId]; +} + +IPhoneLine::PhoneCallList PhoneLine::getPhoneCallList() const { + PhoneCallList phoneCallList; + + for (PhoneCalls::const_iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { + PhoneCall * phoneCall = (*it).second; + if (phoneCall) { + phoneCallList += phoneCall; + } + } + return phoneCallList; +} + +bool PhoneLine::initSipWrapper() { + configureSipWrapper(); + _sipWrapper->init(); + return _sipWrapper->isInitialized(); +} + +void PhoneLine::configureSipWrapper() { + //TODO check if Settings keys have changed + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //Setting plugin path + string pluginPath = Path::getApplicationDirPath() + config.getCodecPluginPath(); + _sipWrapper->setPluginPath(pluginPath); + + //Setting proxy + string proxyServer = config.getNetworkProxyServer(); + if (!proxyServer.empty()) { + unsigned proxyPort = config.getNetworkProxyPort(); + string proxyLogin = config.getNetworkProxyLogin(); + string proxyPassword = config.getNetworkProxyPassword(); + _sipWrapper->setProxy(proxyServer, proxyPort, + proxyLogin, proxyPassword); + } + + //Setting HTTP tunnel + if (_sipAccount.isHttpTunnelNeeded()) { + if (_sipAccount.httpTunnelHasSSL()) { + _sipWrapper->setTunnel(_sipAccount.getHttpsTunnelServerHostname(), + _sipAccount.getHttpsTunnelServerPort(), _sipAccount.httpTunnelHasSSL()); + } else { + _sipWrapper->setTunnel(_sipAccount.getHttpTunnelServerHostname(), + _sipAccount.getHttpTunnelServerPort(), _sipAccount.httpTunnelHasSSL()); + } + } + + //Setting SIP proxy + _sipWrapper->setSIP(_sipAccount.getSIPProxyServerHostname(), + _sipAccount.getSIPProxyServerPort(), + _sipAccount.getLocalSIPPort()); + + //Setting NAT + string natType = config.getNetworkNatType(); + _sipWrapper->setNatType(EnumNatType::toNatType(natType)); + + //Setting video quality + _sipWrapper->setVideoQuality(EnumVideoQuality::toVideoQuality( + config.getVideoQuality())); + + //Sets audio codec preferences + _sipWrapper->setAudioCodecList(config.getAudioCodecList()); + + //Setting audio devices + _sipWrapper->setCallOutputAudioDevice(AudioDevice(config.getAudioOutputDeviceId())); + _sipWrapper->setCallInputAudioDevice(AudioDevice(config.getAudioInputDeviceId())); + _sipWrapper->setRingerOutputAudioDevice(AudioDevice(config.getAudioRingerDeviceId())); + + //AEC + half duplex + _sipWrapper->enableAEC(config.getAudioAEC()); + _sipWrapper->enableHalfDuplex(config.getAudioHalfDuplex()); + + // Presence & IM (SIP/SIMPLE) + _sipWrapper->enablePIM(_sipAccount.isPIMEnabled()); + + // Configure call encryption + setCallsEncryption(config.getCallEncryptionMode()); +} + +bool PhoneLine::isConnected() const { + return (_state->getCode() == EnumPhoneLineState::PhoneLineStateOk); +} + +void PhoneLine::flipVideoImage(bool flip) { + _sipWrapper->flipVideoImage(flip); +} + +void PhoneLine::setCallsEncryption(bool enable) { + _sipWrapper->setCallsEncryption(enable); +} + +bool PhoneLine::isCallEncrypted(int callId) { + return _sipWrapper->isCallEncrypted(callId); +} + +bool PhoneLine::hasPendingCalls() const { + return (_activePhoneCall != NULL); +} + +void PhoneLine::closePendingCalls() { + if (_activePhoneCall) { + _activePhoneCall->close(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLine.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,206 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONELINE_H +#define OWPHONELINE_H + +#include "IPhoneLine.h" + +#include + +#include + +#include + +class PhoneLineState; +class PhoneCall; +class ConferenceCall; +class QuteCom; +class SipAddress; +class SipCallbacks; +class SipWrapper; +class SipPresenceState; + +class PhoneLine : public IPhoneLine, public Trackable { +public: + + PhoneLine(SipAccount & sipAccount, UserProfile & userProfile); + + ~PhoneLine(); + + bool init(); + + std::string getMySipAddress() const; + + EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall = NULL); + + void acceptCall(int callId); + + void rejectCall(int callId); + + void closeCall(int callId); + + void holdCall(int callId); + + void resumeCall(int callId); + + void blindTransfer(int callId, const std::string & sipAddress); + + void playSoundFile(int callId, const std::string & soundFile); + + void playDtmf(int callId, char dtmf); + + CodecList::AudioCodec getAudioCodecUsed(int callId); + + CodecList::VideoCodec getVideoCodecUsed(int callId); + + SipWrapper & getSipWrapper() const { + return *_sipWrapper; + } + + SipAccount & getSipAccount() { + return _sipAccount; + } + + bool connect(); + + void disconnect(bool force = false); + + void setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress); + + int getLineId() const { + return _lineId; + } + + void setState(EnumPhoneLineState::PhoneLineState state); + + const PhoneLineState & getState() const { + return *_state; + } + + UserProfile & getUserProfile() const { + return _userProfile; + } + + PhoneCall * getPhoneCall(int callId) /*const*/; + + PhoneCall * getActivePhoneCall() const { + return _activePhoneCall; + } + + PhoneCallList getPhoneCallList() const; + + bool isConnected() const; + + void flipVideoImage(bool flip); + + void setCallsEncryption(bool enable); + + bool isCallEncrypted(int callId); + + /** + * @see IPhoneLine::hasPendingcalls + */ + bool hasPendingCalls() const; + + /** + * @see IPhoneLine::closePendingCalls + */ + void closePendingCalls(); + +private: + + /** + * Creates and sets the SIP stack. + */ + bool initSipWrapper(); + + /** + * Configures the SIP stack. + * + * Configures Audio devices, AEC, half-duplex ect... + */ + void configureSipWrapper(); + + /** + * Puts all the PhoneCall in the hold state except one. + * + * Code factorization. + * + * @param callId phone call that won't be put in hold state + */ + void holdCallsExcept(int callId); + + /** + * Puts all the PhoneCall in the hold state. + * + * @see holdCallsExcept() + */ + void holdAllCalls(); + + /** + * A call has been closed. + * + * Code factorization. + * + * @param callId phone call being closed + */ + void callClosed(int callId); + + /** + * Checks if a callId is valid. + * + * Makes an assertion if the callId is not valid. + * + * @param callId to check + */ + void checkCallId(int callId); + + /** SIP implementation. */ + SipWrapper * _sipWrapper; + + SipCallbacks * _sipCallbacks; + + typedef std::map < int, PhoneCall * > PhoneCalls; + + /** Map of PhoneCall. */ + PhoneCalls _phoneCallMap; + + /** Active PhoneCall. */ + PhoneCall * _activePhoneCall; + + /** SipAccount associated with this PhoneLine. */ + SipAccount & _sipAccount; + + /** Line id of this PhoneLine. */ + int _lineId; + + /** State of the PhoneLine. */ + PhoneLineState * _state; + + /** Defines the vector of PhoneLineState. */ + typedef List < PhoneLineState * > PhoneLineStateList; + + /** List of PhoneLineState. */ + PhoneLineStateList _phoneLineStateList; + + UserProfile & _userProfile; +}; + +#endif //OWPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateAuthenticationError.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateAuthenticationError::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().phoneLineAuthenticationError(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateAuthenticationError.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATEAUTHENTICATIONERROR_H +#define PHONELINESTATEAUTHENTICATIONERROR_H + +#include "PhoneLineState.h" + +class PhoneLineStateAuthenticationError : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateAuthenticationError; + } +}; + +#endif //PHONELINESTATEAUTHENTICATIONERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateClosed.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateClosed::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(false); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateClosed.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATECLOSED_H +#define PHONELINESTATECLOSED_H + +#include "PhoneLineState.h" + +class PhoneLineStateClosed : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateClosed; + } +}; + +#endif //PHONELINESTATECLOSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineState.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATE_H +#define PHONELINESTATE_H + +#include + +#include + +#include + +class IPhoneLine; + +/** + * Represents the state of a PhoneLine. + * + * @author Tanguy Krotoff + */ +class PhoneLineState : NonCopyable { +public: + + virtual ~PhoneLineState() { + } + + virtual void execute(IPhoneLine & phoneLine) = 0; + + /** + * Gets the status code corresponding to this PhoneLine state. + * + * @return status code of this state + */ + virtual EnumPhoneLineState::PhoneLineState getCode() const = 0; +}; + +#endif //PHONELINESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,43 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateOk.h" + +#include "IPhoneLine.h" +#include + +#include + +#include + +#include + +void PhoneLineStateOk::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(true); + + QuteCom& qutecomPhone = QuteCom::getInstance(); + const std::string callFromCommandLine = qutecomPhone.getStartupCall(); + if (!callFromCommandLine.empty()) { + LOG_DEBUG("call from command line: " + callFromCommandLine); + //Resets the value to its default to do this call only for the first connection + qutecomPhone.setStartupCall(std::string()); + //// + phoneLine.makeCall(callFromCommandLine); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateOk.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATEOK_H +#define PHONELINESTATEOK_H + +#include "PhoneLineState.h" + +class PhoneLineStateOk : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateOk; + } +}; + +#endif //PHONELINESTATEOK_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateProgress.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateProgress::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(false); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateProgress.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHONELINESTATEPROGRESS_H +#define OWPHONELINESTATEPROGRESS_H + +#include "PhoneLineState.h" + +class PhoneLineStateProgress : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateProgress; + } +}; + +#endif //OWPHONELINESTATEPROGRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateServerError.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateServerError::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(false); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateServerError.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATESERVERERROR_H +#define PHONELINESTATESERVERERROR_H + +#include "PhoneLineState.h" + +class PhoneLineStateServerError : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateServerError; + } +}; + +#endif //PHONELINESTATESERVERERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateTimeout.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateTimeout::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(false); + + // Restart connection. + phoneLine.disconnect(true); + phoneLine.connect(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateTimeout.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATETIMEOUT_H +#define PHONELINESTATETIMEOUT_H + +#include "PhoneLineState.h" + +class PhoneLineStateTimeout : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateTimeout; + } +}; + +#endif //PHONELINESTATETIMEOUT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.cpp qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,27 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PhoneLineStateUnknown.h" + +#include "IPhoneLine.h" +#include + +void PhoneLineStateUnknown::execute(IPhoneLine & phoneLine) { + phoneLine.getSipAccount().setConnected(false); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.h qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/phoneline/PhoneLineStateUnknown.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PHONELINESTATEUNKNOWN_H +#define PHONELINESTATEUNKNOWN_H + +#include "PhoneLineState.h" + +class PhoneLineStateUnknown : public PhoneLineState { +public: + + void execute(IPhoneLine & phoneLine); + + EnumPhoneLineState::PhoneLineState getCode() const { + return EnumPhoneLineState::PhoneLineStateUnknown; + } +}; + +#endif //PHONELINESTATEUNKNOWN_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence10.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence10.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence1.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence2.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence2.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence3.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence3.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence4.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence4.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence5.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence5.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence6.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence6.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence7.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence7.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence8.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence8.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/chat_presence9.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/model/presence/chat_presence9.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateAway.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateAway.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateAway.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateAway.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MyPresenceStateAway.h" + +#include "MyPresenceStateOnline.h" +#include "MyPresenceStateOffline.h" +#include "MyPresenceStateDoNotDisturb.h" +#include "MyPresenceStateInvisible.h" + +MyPresenceState * MyPresenceStateAway::offline() { + return MyPresenceStateOffline::getInstance(); +} + +MyPresenceState * MyPresenceStateAway::online() { + return MyPresenceStateOnline::getInstance(); +} + +MyPresenceState * MyPresenceStateAway::doNotDisturb() { + return MyPresenceStateDoNotDisturb::getInstance(); +} + +MyPresenceState * MyPresenceStateAway::away() { + return this; +} + +MyPresenceState * MyPresenceStateAway::invisible() { + return MyPresenceStateInvisible::getInstance(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateAway.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateAway.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateAway.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateAway.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MYPRESENCESTATEAWAY_H +#define MYPRESENCESTATEAWAY_H + +#include "MyPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class MyPresenceStateAway : public MyPresenceState { +public: + + MyPresenceState * online(); + + MyPresenceState * offline(); + + MyPresenceState * doNotDisturb(); + + MyPresenceState * away(); + + MyPresenceState * invisible(); + + std::string toString() const { + return toString_static(); + } + + static MyPresenceState * getInstance() { + static MyPresenceStateAway presenceState; + + return &presenceState; + } + +private: + + MyPresenceStateAway() { + } + + static std::string toString_static() { + return "Away"; + } +}; + +#endif //MYPRESENCESTATEAWAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MyPresenceStateDoNotDisturb.h" + +#include "MyPresenceStateAway.h" +#include "MyPresenceStateOnline.h" +#include "MyPresenceStateOffline.h" +#include "MyPresenceStateInvisible.h" + +MyPresenceState * MyPresenceStateDoNotDisturb::offline() { + return MyPresenceStateOffline::getInstance(); +} + +MyPresenceState * MyPresenceStateDoNotDisturb::online() { + return MyPresenceStateOnline::getInstance(); +} + +MyPresenceState * MyPresenceStateDoNotDisturb::doNotDisturb() { + return this; +} + +MyPresenceState * MyPresenceStateDoNotDisturb::away() { + return MyPresenceStateAway::getInstance(); +} + +MyPresenceState * MyPresenceStateDoNotDisturb::invisible() { + return MyPresenceStateInvisible::getInstance(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateDoNotDisturb.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MYPRESENCESTATEDONOTDISTURB_H +#define MYPRESENCESTATEDONOTDISTURB_H + +#include "MyPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class MyPresenceStateDoNotDisturb : public MyPresenceState { +public: + + MyPresenceState * online(); + + MyPresenceState * offline(); + + MyPresenceState * doNotDisturb(); + + MyPresenceState * away(); + + MyPresenceState * invisible(); + + std::string toString() const { + return toString_static(); + } + + static MyPresenceState * getInstance() { + static MyPresenceStateDoNotDisturb presenceState; + + return &presenceState; + } + +private: + + MyPresenceStateDoNotDisturb() { + } + + static std::string toString_static() { + return "DoNotDisturb"; + } +}; + +#endif //MYPRESENCESTATEDONOTDISTURB_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceState.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWMYPRESENCESTATE_H +#define OWMYPRESENCESTATE_H + +#include + +#include + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class MyPresenceState : Interface { +public: + + virtual ~MyPresenceState() { + } + + /** + * Switchs the presence status to online. + * + * @exception MyPresenceStateException if the switch cannot be done + * @return the new MyPresenceState that corresponds to the online presence status + */ + virtual MyPresenceState * online() = 0; + + /** + * Switchs the presence status to offline. + * + * @exception MyPresenceStateException if the switch cannot be done + * @return the new MyPresenceState that corresponds to the offline presence status + */ + virtual MyPresenceState * offline() = 0; + + /** + * Switchs the presence status to do not disturb. + * + * @exception MyPresenceStateException if the switch cannot be done + * @return the new MyPresenceState that corresponds to the do not disturb presence status + */ + virtual MyPresenceState * doNotDisturb() = 0; + + /** + * Switchs the presence status to away. + * + * @exception MyPresenceStateException if the switch cannot be done + * @return the new MyPresenceState that corresponds to the away presence status + */ + virtual MyPresenceState * away() = 0; + + /** + * Switchs the presence status to away. + * + * @exception MyPresenceStateException if the switch cannot be done + * @return the new MyPresenceState that corresponds to the away presence status + */ + virtual MyPresenceState * invisible() = 0; + + /** + * @return the string identifying the state. + */ + virtual std::string toString() const = 0; +}; + +#endif //OWMYPRESENCESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MyPresenceStateInvisible.h" + +#include "MyPresenceStateAway.h" +#include "MyPresenceStateOnline.h" +#include "MyPresenceStateDoNotDisturb.h" +#include "MyPresenceStateOffline.h" + +MyPresenceState * MyPresenceStateInvisible::offline() { + return MyPresenceStateOffline::getInstance(); +} + +MyPresenceState * MyPresenceStateInvisible::online() { + return MyPresenceStateOnline::getInstance(); +} + +MyPresenceState * MyPresenceStateInvisible::doNotDisturb() { + return MyPresenceStateDoNotDisturb::getInstance(); +} + +MyPresenceState * MyPresenceStateInvisible::away() { + return MyPresenceStateAway::getInstance(); +} + +MyPresenceState * MyPresenceStateInvisible::invisible() { + return this; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateInvisible.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MYPRESENCESTATEINVISIBLE_H +#define MYPRESENCESTATEINVISIBLE_H + +#include "MyPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class MyPresenceStateInvisible : public MyPresenceState { +public: + + MyPresenceState * online(); + + MyPresenceState * offline(); + + MyPresenceState * doNotDisturb(); + + MyPresenceState * away(); + + MyPresenceState * invisible(); + + std::string toString() const { + return toString_static(); + } + + static MyPresenceState * getInstance() { + static MyPresenceStateInvisible presenceState; + + return &presenceState; + } + +private: + + MyPresenceStateInvisible() { + } + + static std::string toString_static() { + return "Invisible"; + } + +}; + +#endif //MYPRESENCESTATEINVISIBLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MyPresenceStateOffline.h" + +#include "MyPresenceStateAway.h" +#include "MyPresenceStateOnline.h" +#include "MyPresenceStateDoNotDisturb.h" +#include "MyPresenceStateInvisible.h" + +MyPresenceState * MyPresenceStateOffline::offline() { + return this; +} + +MyPresenceState * MyPresenceStateOffline::online() { + return MyPresenceStateOnline::getInstance(); +} + +MyPresenceState * MyPresenceStateOffline::doNotDisturb() { + return MyPresenceStateDoNotDisturb::getInstance(); +} + +MyPresenceState * MyPresenceStateOffline::away() { + return MyPresenceStateAway::getInstance(); +} + +MyPresenceState * MyPresenceStateOffline::invisible() { + return MyPresenceStateInvisible::getInstance(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOffline.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MYPRESENCESTATEOFFLINE_H +#define MYPRESENCESTATEOFFLINE_H + +#include "MyPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class MyPresenceStateOffline : public MyPresenceState { +public: + + MyPresenceState * online(); + + MyPresenceState * offline(); + + MyPresenceState * doNotDisturb(); + + MyPresenceState * away(); + + MyPresenceState * invisible(); + + std::string toString() const { + return toString_static(); + } + + static MyPresenceState * getInstance() { + static MyPresenceStateOffline presenceState; + + return &presenceState; + } + +private: + + MyPresenceStateOffline() { + } + + static std::string toString_static() { + return "Offline"; + } + +}; + +#endif //MYPRESENCESTATEOFFLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MyPresenceStateOnline.h" + +#include "MyPresenceStateAway.h" +#include "MyPresenceStateOffline.h" +#include "MyPresenceStateDoNotDisturb.h" +#include "MyPresenceStateInvisible.h" + +MyPresenceState * MyPresenceStateOnline::offline() { + return MyPresenceStateOffline::getInstance(); +} + +MyPresenceState * MyPresenceStateOnline::online() { + return this; +} + +MyPresenceState * MyPresenceStateOnline::doNotDisturb() { + return MyPresenceStateDoNotDisturb::getInstance(); +} + +MyPresenceState * MyPresenceStateOnline::away() { + return MyPresenceStateAway::getInstance(); +} + +MyPresenceState * MyPresenceStateOnline::invisible() { + return MyPresenceStateInvisible::getInstance(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.h qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/MyPresenceStateOnline.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef MYPRESENCESTATEONLINE_H +#define MYPRESENCESTATEONLINE_H + +#include "MyPresenceState.h" + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class MyPresenceStateOnline : public MyPresenceState { +public: + + MyPresenceState * online(); + + MyPresenceState * offline(); + + MyPresenceState * doNotDisturb(); + + MyPresenceState * away(); + + MyPresenceState * invisible(); + + std::string toString() const { + return toString_static(); + } + + static MyPresenceState * getInstance() { + static MyPresenceStateOnline presenceState; + + return &presenceState; + } + +private: + + MyPresenceStateOnline() { + } + + static std::string toString_static() { + return "Online"; + } +}; + +#endif //MYPRESENCESTATEONLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/Presence.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/Presence.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/Presence.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/Presence.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,177 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Presence.h" + +#include +#include +#include +#include + +#include + +#define LOGGER_COMPONENT "Presence" +#include +#include + +Presence::Presence(IMAccount imAccount) + : _imAccount(imAccount) { + + _imPresence = IMWrapperFactory::getFactory().createIMPresence(_imAccount); + + _imPresence->presenceStateChangedEvent += + boost::bind(&Presence::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + _imPresence->myPresenceStatusEvent += + boost::bind(&Presence::myPresenceStatusEventHandler, this, _1, _2, _3); + _imPresence->subscribeStatusEvent += + boost::bind(&Presence::subscribeStatusEventHandler, this, _1, _2, _3); + _imPresence->authorizationRequestEvent += + boost::bind(&Presence::authorizationRequestEventHandler, this, _1, _2, _3); + _imPresence->contactIconChangedEvent += + boost::bind(&Presence::contactIconChangedEventHandler, this, _1, _2, _3); + _imPresence->incomingSubscribeEvent += + boost::bind(&Presence::incomingSubscribeEventHandler, this, _1, _2, _3, _4); + + _state = MyPresenceStateOffline::getInstance(); +} + +Presence::~Presence() { + OWSAFE_DELETE(_imPresence); +} + +void Presence::changeMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { + setState(state); + + _imPresence->changeMyPresence(state, note); +} + +void Presence::changeMyAlias(const std::string & alias) { + _imPresence->changeMyAlias(alias); +} + +void Presence::changeMyIcon(const OWPicture & picture) { + _imPresence->changeMyIcon(picture); +} + +void Presence::subscribeToPresenceOf(const std::string & contactId) { + _imPresence->subscribeToPresenceOf(contactId); +} + +void Presence::unsubscribeToPresenceOf(const std::string & contactId) { + _imPresence->unsubscribeToPresenceOf(contactId); +} + +void Presence::blockContact(const std::string & contactId) { + _imPresence->blockContact(contactId); +} + +void Presence::unblockContact(const std::string & contactId) { + _imPresence->unblockContact(contactId); +} + +void Presence::authorizeContact(const std::string & contactId, bool authorized, const std::string message) { + _imPresence->authorizeContact(contactId, authorized, message); +} + +void Presence::acceptSubscription(int sid) +{ + _imPresence->acceptSubscription(sid); +} + +void Presence::rejectSubscription(int sid) +{ + _imPresence->rejectSubscription(sid); +} + +void Presence::setState(EnumPresenceState::PresenceState state) { + switch(state) { + case EnumPresenceState::PresenceStateUnknown: + //Do nothing + break; + case EnumPresenceState::PresenceStateOnline: + _state = _state->online(); + break; + case EnumPresenceState::PresenceStateOffline: + _state = _state->offline(); + break; + case EnumPresenceState::PresenceStateAway: + _state = _state->away(); + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + _state = _state->doNotDisturb(); + break; + case EnumPresenceState::PresenceStateInvisible: + _state = _state->invisible(); + break; + default: + LOG_FATAL("unknown presence state=" + String::fromNumber(state)); + } +} + +void Presence::presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, + const std::string & alias, const std::string & from) { + + LOG_DEBUG("presence of=" + from + " changed=" + EnumPresenceState::toString(state)); + + presenceStateChangedEvent(sender, state, alias, from); +} + +void Presence::myPresenceStatusEventHandler(IMPresence & sender, EnumPresenceState::MyPresenceStatus status, + std::string note) { + + myPresenceStatusEvent(sender, status, note); +} + +void Presence::subscribeStatusEventHandler(IMPresence & sender, std::string contactId, + IMPresence::SubscribeStatus status) { + + subscribeStatusEvent(sender, contactId, status); +} + +void Presence::authorizationRequestEventHandler(IMPresence & sender, std::string contactId, + std::string message) { + + authorizationRequestEvent(sender, contactId, message); +} + +void Presence::incomingSubscribeEventHandler(IMPresence & sender, int sid, const std::string& from, const std::string& evtType) +{ + incomingSubscribeEvent(sender,sid,from,evtType); +} + +void Presence::contactIconChangedEventHandler(IMPresence & sender, std::string contactId, + OWPicture icon) { + + contactIconChangedEvent(sender, contactId, icon); +} + +void Presence::unregisterAllEvents() { + _imPresence->presenceStateChangedEvent -= + boost::bind(&Presence::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + _imPresence->myPresenceStatusEvent -= + boost::bind(&Presence::myPresenceStatusEventHandler, this, _1, _2, _3); + _imPresence->subscribeStatusEvent -= + boost::bind(&Presence::subscribeStatusEventHandler, this, _1, _2, _3); + _imPresence->authorizationRequestEvent -= + boost::bind(&Presence::authorizationRequestEventHandler, this, _1, _2, _3); + _imPresence->contactIconChangedEvent -= + boost::bind(&Presence::contactIconChangedEventHandler, this, _1, _2, _3); + _imPresence->incomingSubscribeEvent -= + boost::bind(&Presence::incomingSubscribeEventHandler, this, _1, _2, _3, _4); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/Presence.h qutecom-2.2+dfsg1/qutecom/src/model/presence/Presence.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/Presence.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/Presence.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,185 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PRESENCE_H +#define PRESENCE_H + +#include + +#include +#include +#include + +class ContactList; +class MyPresenceState; + +/** + * + * @ingroup model + * @author Tanguy Krotoff + */ +class Presence : NonCopyable, public Trackable { +public: + + /** + * @see IMPresence::presenceStateChangedEvent + */ + Event presenceStateChangedEvent; + + /** + * @see IMPresence::presenceStatusEvent + */ + Event myPresenceStatusEvent; + + /** + * @see IMPresence::subscribeStatusEvent + */ + Event subscribeStatusEvent; + + /** + * @see IMPresence::subscribeStatusEvent + */ + Event authorizationRequestEvent; + + /** + * Ask for authorization to see MyPresenceState. + */ + Event incomingSubscribeEvent; + + /** + * @see IMPresence::contactIconChangedEvent + */ + Event< void (IMPresence & sender, std::string contactId, + OWPicture icon) > contactIconChangedEvent; + + + Presence(IMAccount imAccount); + + ~Presence(); + + /** + * @see IMPresence::changeMyPresence + */ + void changeMyPresence(EnumPresenceState::PresenceState state, const std::string & note); + + /** + * @see IMPresence::changeMyAlias + */ + void changeMyAlias(const std::string & alias); + + /** + * @see IMPresence::changeMyIcon + */ + void changeMyIcon(const OWPicture & picture); + + /** + * @see IMPresence::subscribeToPresenceOf + */ + void subscribeToPresenceOf(const std::string & contactId); + + /** + * @see IMPresence::unsubscribeToPresenceOf + */ + void unsubscribeToPresenceOf(const std::string & contactId); + + /** + * @see IMPresence::blockContact + */ + void blockContact(const std::string & contactId); + + /** + * @see IMPresence::unblockContact + */ + void unblockContact(const std::string & contactId); + + /** + * @see IMPresence::authorizeContact + */ + void authorizeContact(const std::string & contactId, bool authorized, const std::string message); + + void acceptSubscription(int sid); + void rejectSubscription(int sid); + + std::string getIMAccountId() const { + return _imAccount.getUUID(); + } + + /** + * Tells Presence to unregister to all registered Events. + */ + void unregisterAllEvents(); + +private: + + /** + * Sets the state of this Presence + * + * @param the desired state + */ + void setState(EnumPresenceState::PresenceState state); + + /** + * Catches presenceStateChangedEvent for debug reason. + * + * Shows a LOG_DEBUG() message. + */ + void presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, + const std::string & alias, const std::string & from); + + /** + * @see IMPresence::presenceStatusEvent + */ + void myPresenceStatusEventHandler(IMPresence & sender, EnumPresenceState::MyPresenceStatus status, + std::string note); + + /** + * @see IMPresence::subscribeStatusEvent + */ + void subscribeStatusEventHandler(IMPresence & sender, std::string contactId, + IMPresence::SubscribeStatus status); + + /** + * @see IMPresence::subscribeStatusEvent + */ + void authorizationRequestEventHandler(IMPresence & sender, std::string contactId, + std::string message); + + /** + * Ask for authorization to see MyPresenceState. + */ + void incomingSubscribeEventHandler(IMPresence & sender, int sid, const std::string& from, const std::string& evtType); + + /** + * @see IMPresence::contactIconChangedEvent + */ + void contactIconChangedEventHandler(IMPresence & sender, std::string contactId, + OWPicture icon); + + IMAccount _imAccount; + + IMPresence * _imPresence; + + MyPresenceState * _state; +}; + +#endif //PRESENCE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/PresenceHandler.cpp qutecom-2.2+dfsg1/qutecom/src/model/presence/PresenceHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/PresenceHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/PresenceHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,564 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PresenceHandler.h" + +#include +#include +#include +#include +#include + +#include + +#include + +#define LOGGER_COMPONENT "Presence" +#include +#include + +PresenceHandler::PresenceHandler(UserProfile & userProfile) + : _userProfile(userProfile) { + + _userProfile.getConnectHandler().connectedEvent += + boost::bind(&PresenceHandler::connectedEventHandler, this, _1, _2); + _userProfile.getConnectHandler().disconnectedEvent += + boost::bind(&PresenceHandler::disconnectedEventHandler, this, _1, _2); + + _userProfile.getIMAccountManager().imAccountAddedEvent += + boost::bind(&PresenceHandler::imAccountAddedEventHandler, this, _1, _2); + _userProfile.getIMAccountManager().imAccountRemovedEvent += + boost::bind(&PresenceHandler::imAccountRemovedEventHandler, this, _1, _2); +} + +PresenceHandler::~PresenceHandler() { + for (PresenceMap::const_iterator it = _presenceMap.begin(); + it != _presenceMap.end(); + ++it) { + delete (*it).second; + } +} + +void PresenceHandler::subscribeToPresenceOf(const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); + if (it != _presenceMap.end()) { + LOG_DEBUG("subscribing to presence of=" + imContact.getContactId()); + (*it).second->subscribeToPresenceOf(imContact.getContactId()); + _subscribedContacts.push_back(imContact); + } else { + //Presence for 'protocol' has not yet been created. + // The contactId is pushed in the pending subscription list + _pendingSubscriptions.push_back(imContact); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::unsubscribeToPresenceOf(const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); + if (it != _presenceMap.end()) { + LOG_DEBUG("unsubscribing to presence of=" + imContact.getContactId()); + (*it).second->unsubscribeToPresenceOf(imContact.getContactId()); + MyIMContactList::iterator subIt = + std::find(_subscribedContacts.begin(), _subscribedContacts.end(), imContact); + if (subIt != _subscribedContacts.end()) { + _subscribedContacts.erase(subIt); + } + } else { + LOG_ERROR("cannot find associated Presence instance"); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::blockContact(const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); + if (it != _presenceMap.end()) { + LOG_DEBUG("blocking contact=" + imContact.getContactId() + + " of IMAccount=" + imAccount->getLogin() + + " of protocol=" + String::fromNumber(imAccount->getProtocol())); + + (*it).second->blockContact(imContact.getContactId()); + } else { + LOG_ERROR("the given IMAccount has not been added yet"); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::unblockContact(const IMContact & imContact) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); + if (it != _presenceMap.end()) { + LOG_DEBUG("unblocking contact=" + imContact.getContactId() + + " of IMAccount=" + imAccount->getLogin() + + " of protocol=" + String::fromNumber(imAccount->getProtocol())); + + (*it).second->unblockContact(imContact.getContactId()); + } else { + LOG_ERROR("the given IMAccount has not been added yet"); + } + } +} + +void PresenceHandler::connectedEventHandler(ConnectHandler & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + + //changeMyAlias(_userProfile.getAlias(), imAccount); + changeMyIcon(_userProfile.getIcon(), imAccount); + + PresenceMap::iterator it = _presenceMap.find(imAccountId); + if (it != _presenceMap.end()) { + LOG_DEBUG("an account is connected, login=" + imAccount->getLogin() + + " protocol=" + String::fromNumber(imAccount->getProtocol())); + + EnumPresenceState::PresenceState presenceState = imAccount->getPresenceState(); + if (presenceState == EnumPresenceState::PresenceStateOffline) { + presenceState = EnumPresenceState::PresenceStateOnline; + } + + (*it).second->changeMyPresence(presenceState, _userProfile.getAlias()); + + // Launch subscriptions to all already subscribed contacts + for (MyIMContactList::const_iterator subIt = _subscribedContacts.begin(); + subIt != _subscribedContacts.end(); + ++subIt) { + if ((*subIt).getIMAccountId() == imAccountId) { + LOG_DEBUG("subscribing to presence of=" + (*subIt).getContactId()); + (*it).second->subscribeToPresenceOf((*subIt).getContactId()); + } + } + //// + + //Launch all pending subscriptions + for (MyIMContactList::iterator pendIt = _pendingSubscriptions.begin(); + pendIt != _pendingSubscriptions.end();) { + if ((*pendIt).getIMAccountId() == imAccountId) { + LOG_DEBUG("subscribing to presence of=" + (*pendIt).getContactId()); + (*it).second->subscribeToPresenceOf((*pendIt).getContactId()); + _subscribedContacts.push_back(*pendIt); + _pendingSubscriptions.erase(pendIt++); + } else { + ++pendIt; + } + } + //// + + } else { + LOG_FATAL("the given IMAccount has not been added yet"); + } + + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::disconnectedEventHandler(ConnectHandler & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + LOG_DEBUG("an account is disconnected, login=" + imAccount->getLogin() + + " protocol=" + String::fromNumber(imAccount->getProtocol())); + + PresenceMap::iterator it = _presenceMap.find(imAccountId); + if (it != _presenceMap.end()) { + setPresenceStateToUnknown((*it).second); + } else { + LOG_FATAL("the given IMAccount has not been added yet"); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::changeMyPresenceState(EnumPresenceState::PresenceState state, + const std::string & note, IMAccount * imAccount) { + + LOG_DEBUG("changing MyPresenceState for " + + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol())) + + " with state=" + String::fromNumber(state) + " and note=" + note); + + if (!imAccount) { + for (PresenceMap::const_iterator it = _presenceMap.begin(); + it != _presenceMap.end(); + it++) { + //TODO: this code should be in a event handler + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount((*it).first); + if (imAccount) { + imAccount->setPresenceState(state); + _userProfile.updateIMAccount(*imAccount); + OWSAFE_DELETE(imAccount); + } + (*it).second->changeMyPresence(state, note); + } + } else { + //Find the desired Protocol + PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); + + if (it != _presenceMap.end()) { + //TODO: this code should be in a event handler + IMAccount * tmp = + _userProfile.getIMAccountManager().getIMAccount(imAccount->getUUID()); + if (tmp) { + tmp->setPresenceState(state); + _userProfile.updateIMAccount(*tmp); + OWSAFE_DELETE(tmp); + } + (*it).second->changeMyPresence(state, note); + } + } +} + +void PresenceHandler::changeMyAlias(const std::string & alias, IMAccount * imAccount) { + LOG_DEBUG("changing alias for " + + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol())) + + " with alias=" + alias); + + if (!imAccount) { + for (PresenceMap::const_iterator it = _presenceMap.begin(); + it != _presenceMap.end(); + it++) { + (*it).second->changeMyAlias(alias); + } + } else { + //Find the desired Protocol + PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); + + if (it != _presenceMap.end()) { + (*it).second->changeMyAlias(alias); + } + } +} + +void PresenceHandler::changeMyIcon(const OWPicture & picture, IMAccount * imAccount) { + LOG_DEBUG("changing icon for " + + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol()))); + + if (!imAccount) { + for (PresenceMap::const_iterator it = _presenceMap.begin(); + it != _presenceMap.end(); + it++) { + (*it).second->changeMyIcon(picture); + } + } else { + //Find the desired Protocol + PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); + + if (it != _presenceMap.end()) { + (*it).second->changeMyIcon(picture); + } + } +} + +void PresenceHandler::presenceStateChangedEventHandler(IMPresence & sender, + EnumPresenceState::PresenceState state, std::string alias, std::string from) { + +/* + typedef ThreadEvent4 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&PresenceHandler::presenceStateChangedEventHandlerThreadSafe, this, _1, _2, _3, _4), &sender.getIMAccount(), state, alias, from); + + _modelThread.postEvent(event); + FIXME: crashes when trying to change UserProfile +*/ + presenceStateChangedEventHandlerThreadSafe(sender.getIMAccountId(), state, alias, from); +} + +void PresenceHandler::presenceStateChangedEventHandlerThreadSafe(std::string imAccountId, + EnumPresenceState::PresenceState state, std::string note, std::string from) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + LOG_DEBUG("presence of=" + imAccount->getLogin() + " changed=" + EnumPresenceState::toString(state)); + if (!imAccount->isConnected()) { + state = EnumPresenceState::PresenceStateUnknown; + } + presenceStateChangedEvent(*this, state, note, IMContact(*imAccount, from)); + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::myPresenceStatusEventHandler(IMPresence & sender, + EnumPresenceState::MyPresenceStatus status) { +/* + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&PresenceHandler::myPresenceStatusEventHandlerThreadSafe, this, _1, _2), &sender.getIMAccount(), status); + + _modelThread.postEvent(event); + FIXME: crashes when trying to change UserProfile +*/ + if ((status == EnumPresenceState::MyPresenceStatusOk) || (status == EnumPresenceState::MyPresenceStatusError)) { + myPresenceStatusEventHandlerThreadSafe(sender.getIMAccountId(), status); + } else { + LOG_WARN("bad EnumPresenceState::MyPresenceStatus" + String::fromNumber(status)); + } +} + +void PresenceHandler::myPresenceStatusEventHandlerThreadSafe(std::string imAccountId, + EnumPresenceState::MyPresenceStatus status) { + + myPresenceStatusEvent(*this, imAccountId, status); +} + +void PresenceHandler::authorizationRequestEventHandler(IMPresence & sender, + std::string contactId, std::string message) { + + typedef ThreadEvent3 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&PresenceHandler::authorizationRequestEventHandlerThreadSafe, this, _1, _2, _3), sender.getIMAccountId(), contactId, message); + + QuteCom::getInstance().postEvent(event); +} + +void PresenceHandler::authorizationRequestEventHandlerThreadSafe(std::string imAccountId, + std::string contactId, std::string message) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + authorizationRequestEvent(*this, IMContact(*imAccount, contactId), message); + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccout not found!"); + } +} + + +void PresenceHandler::incomingSubscribeEventHandler(IMPresence & sender, + int sid, const std::string& from, const std::string& evtType) { + + typedef ThreadEvent4 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&PresenceHandler::incomingSubscribeEventHandlerThreadSafe, this, _1, _2, _3, _4),sender, sid, from, evtType); + + QuteCom::getInstance().postEvent(event); +} + +void PresenceHandler::incomingSubscribeEventHandlerThreadSafe(IMPresence & sender,int sid,std::string from, std::string evtType) +{ + /*IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + authorizationRequestEvent(*this, IMContact(*imAccount, contactId), message); + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccout not found!"); + }*/ + incomingSubscribeEvent(*this,sender.getIMAccountId(),sid,from,evtType); +} + +void PresenceHandler::acceptSubscription(int sid,std::string imaccountId) +{ + IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(imaccountId); + if (imAccount) + { + PresenceMap::iterator it = _presenceMap.find(imaccountId); + if (it != _presenceMap.end()) + { + (*it).second->acceptSubscription(sid); + } + else + { + LOG_FATAL("unknown IMAccount"); + } + + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::rejectSubscription(int sid,std::string imaccountId) +{ + IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(imaccountId); + if (imAccount) + { + PresenceMap::iterator it = _presenceMap.find(imaccountId); + if (it != _presenceMap.end()) + { + (*it).second->rejectSubscription(sid); + } + else + { + LOG_FATAL("unknown IMAccount"); + } + + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::subscribeStatusEventHandler(IMPresence & sender, + std::string contactId, IMPresence::SubscribeStatus status) { +/* + typedef ThreadEvent3 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&PresenceHandler::subscribeStatusEventHandlerThreadSafe, this, _1, _2, _3), &sender.getIMAccount(), contactId, status); + + _modelThread.postEvent(event); +*/ + subscribeStatusEventHandlerThreadSafe(sender.getIMAccountId(), contactId, status); +} + +void PresenceHandler::subscribeStatusEventHandlerThreadSafe(std::string imAccountId, + std::string contactId, IMPresence::SubscribeStatus status) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + subscribeStatusEvent(*this, IMContact(*imAccount, contactId), status); + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount not found!"); + } +} + +void PresenceHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imAccountId); + if (it == _presenceMap.end()) { + //Presence for this IMAccount has not yet been created + Presence * presence = new Presence(*imAccount); + _presenceMap.insert(std::pair(imAccountId, presence)); + + presence->presenceStateChangedEvent += + boost::bind(&PresenceHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + presence->myPresenceStatusEvent += + boost::bind(&PresenceHandler::myPresenceStatusEventHandler, this, _1, _2); + presence->subscribeStatusEvent += + boost::bind(&PresenceHandler::subscribeStatusEventHandler, this, _1, _2, _3); + presence->authorizationRequestEvent += + boost::bind(&PresenceHandler::authorizationRequestEventHandler, this, _1, _2, _3); + presence->incomingSubscribeEvent += + boost::bind(&PresenceHandler::incomingSubscribeEventHandler, this, _1, _2, _3, _4); + presence->contactIconChangedEvent += + boost::bind(&PresenceHandler::contactIconChangedEventHandler, this, _1, _2, _3); + } else { + LOG_ERROR("this IMAccount has already been added=" + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imAccountId); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imAccountId); + if (it != _presenceMap.end()) { + setPresenceStateToUnknown((*it).second); + delete (*it).second; + _presenceMap.erase(it); + } else { + LOG_ERROR("this IMAccount has not been added=" + imAccount->getLogin()); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::authorizeContact(const IMContact & imContact, bool authorized, + const std::string & message) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); + if (it != _presenceMap.end()) { + return (*it).second->authorizeContact(imContact.getContactId(), authorized, message); + } else { + LOG_FATAL("unknown IMAccount"); + } + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::contactIconChangedEventHandler(IMPresence & sender, + std::string contactId, OWPicture icon) { + + IMAccount * imAccount = + _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); + if (imAccount) { + contactIconChangedEvent(*this, IMContact(*imAccount, contactId), icon); + OWSAFE_DELETE(imAccount); + } +} + +void PresenceHandler::unregisterAllEvents() { + _userProfile.getConnectHandler().connectedEvent -= + boost::bind(&PresenceHandler::connectedEventHandler, this, _1, _2); + _userProfile.getConnectHandler().disconnectedEvent -= + boost::bind(&PresenceHandler::disconnectedEventHandler, this, _1, _2); + + _userProfile.getIMAccountManager().imAccountAddedEvent -= + boost::bind(&PresenceHandler::imAccountAddedEventHandler, this, _1, _2); + _userProfile.getIMAccountManager().imAccountRemovedEvent -= + boost::bind(&PresenceHandler::imAccountRemovedEventHandler, this, _1, _2); + + for (PresenceMap::const_iterator it = _presenceMap.begin(); + it != _presenceMap.end(); + ++it) { + (*it).second->unregisterAllEvents(); + + (*it).second->presenceStateChangedEvent -= + boost::bind(&PresenceHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + (*it).second->myPresenceStatusEvent -= + boost::bind(&PresenceHandler::myPresenceStatusEventHandler, this, _1, _2); + (*it).second->subscribeStatusEvent -= + boost::bind(&PresenceHandler::subscribeStatusEventHandler, this, _1, _2, _3); + (*it).second->authorizationRequestEvent -= + boost::bind(&PresenceHandler::authorizationRequestEventHandler, this, _1, _2, _3); + (*it).second->incomingSubscribeEvent -= + boost::bind(&PresenceHandler::incomingSubscribeEventHandler, this, _1, _2, _3, _4); + (*it).second->contactIconChangedEvent -= + boost::bind(&PresenceHandler::contactIconChangedEventHandler, this, _1, _2, _3); + } +} + +void PresenceHandler::setPresenceStateToUnknown(Presence * presence) { + if (presence) { + for (MyIMContactList::const_iterator subIt = _subscribedContacts.begin(); + subIt != _subscribedContacts.end(); + ++subIt) { + if ((*subIt).getIMAccountId() == presence->getIMAccountId()) { + LOG_DEBUG("unsubscribing to presence of=" + (*subIt).getContactId()); + presence->unsubscribeToPresenceOf((*subIt).getContactId()); + presenceStateChangedEvent(*this, + EnumPresenceState::PresenceStateUnknown, String::null, *subIt); + } + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/PresenceHandler.h qutecom-2.2+dfsg1/qutecom/src/model/presence/PresenceHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/presence/PresenceHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/presence/PresenceHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,274 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PRESENCEHANDLER_H +#define PRESENCEHANDLER_H + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +class Connect; +class ConnectHandler; +class ContactList; +class IMAccountManager; +class IMContact; +class Presence; +class Thread; +class UserProfile; + +/** + * + * @ingroup model + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class PresenceHandler : NonCopyable, public Trackable { +public: + + /** + * @see IMPresence::presenceStateChangedEvent + * @param imContact the IMContact for wich the state has changed + */ + Event presenceStateChangedEvent; + + /** + * @see IMPresence::presenceStatusEvent + */ + Event myPresenceStatusEvent; + + /** + * @see IMPresence::subscribeStatusEvent + */ + Event subscribeStatusEvent; + + /** + * @see IMPresence::authorizationRequestEvent + */ + Event authorizationRequestEvent; + + /** + * @see IMPresence::incomingSubscribeEvent + */ + Event incomingSubscribeEvent; + + /** + * @see IMPresence::contactIconChangedEvent + */ + Event< void (PresenceHandler & sender, const IMContact & imContact, + OWPicture icon) > contactIconChangedEvent; + + + PresenceHandler(UserProfile & userProfile); + + ~PresenceHandler(); + + /** + * Changes my presence on desired protocol. + * + * @param state my state + * @param note used by PresenceStateUserDefined + * @param imAccount the IMAccount that we want the presence changed. If NULL + * presence state of all accounts is changed. + */ + void changeMyPresenceState(EnumPresenceState::PresenceState state, + const std::string & note, IMAccount * imAccount = NULL); + + /** + * Changes my alias. + * + * @param alias the desired alias + * @param imAccount the IMAccount that we want the alias changed. If NULL + * alias of all accounts is changed. + */ + void changeMyAlias(const std::string & alias, IMAccount * imAccount = NULL); + + /** + * Changes my icon. + * + * @param picture the desired icon + * @param imAccount the IMAccount that we want the icon changed. If NULL + * icon of all accounts is changed. + */ + void changeMyIcon(const OWPicture & picture, IMAccount * imAccount = NULL); + + /** + * Subscribes to the presence of an IMContact. + * + * @param imContact the IMContact + */ + void subscribeToPresenceOf(const IMContact & imContact); + + /** + * Unsubscribes to the presence of an IMContact. + * + * @param imContact the IMContact + */ + void unsubscribeToPresenceOf(const IMContact & imContact); + + /** + * @see IMPresence::blockContact + */ + void blockContact(const IMContact & imContact); + + /** + * @see IMPresence::unblockContact + */ + void unblockContact(const IMContact & imContact); + + /** + * @see IMPresence::authorizeContact + */ + void authorizeContact(const IMContact & imContact, bool authorized, + const std::string & message); + + void acceptSubscription(int sid,std::string imaccountId); + void rejectSubscription(int sid,std::string imaccountId); + + /** + * Tells PresenceHandler to unregister to all registered Events. + */ + void unregisterAllEvents(); + +private: + + /** + * @see ConnectHandler::connectedEvent + */ + void connectedEventHandler(ConnectHandler & sender, std::string imAccountId); + + /** + * @see ConnectHandler::disconnectedEvent + */ + void disconnectedEventHandler(ConnectHandler & sender, std::string imAccountId); + + /** + * @see IMPresence::presenceStateChangedEvent + */ + void presenceStateChangedEventHandler(IMPresence & sender, + EnumPresenceState::PresenceState state, std::string note, std::string from); + + /** + * @see presenceStateChangedEventHandler + */ + void presenceStateChangedEventHandlerThreadSafe(std::string imAccountId, + EnumPresenceState::PresenceState state, std::string note, std::string from); + + /** + * @see IMPresence::myPresenceStatusEvent + */ + void myPresenceStatusEventHandler(IMPresence & sender, + EnumPresenceState::MyPresenceStatus status); + + /** + * @see myPresenceStatusEventHandler + */ + void myPresenceStatusEventHandlerThreadSafe(std::string imAccountId, + EnumPresenceState::MyPresenceStatus status); + + /** + * @see IMPresence::subscribeStatusEvent + */ + void subscribeStatusEventHandler(IMPresence & sender, + std::string contactId, IMPresence::SubscribeStatus status); + + /** + * @see subscribeStatusEventHandler + */ + void subscribeStatusEventHandlerThreadSafe(std::string imAccountId, + std::string contactId, IMPresence::SubscribeStatus status); + + /** + * @see IMPresence::authorizationRequestEvent + */ + void authorizationRequestEventHandler(IMPresence & sender, + std::string contactId, std::string message); + + /** + * @see authorizationRequestEventHandler + */ + void authorizationRequestEventHandlerThreadSafe(std::string imAccountId, + std::string contactId, std::string message); + + /** + * @see IMPresence::incomingSubscribeEventHandler + */ + void incomingSubscribeEventHandler(IMPresence & sender, + int sid, const std::string& from, const std::string& evtType); + + /** + * @see incomingSubscribeEventHandlerThreadSafe + */ + void incomingSubscribeEventHandlerThreadSafe(IMPresence & sender,int sid, std::string from, std::string evtType); + + /** + * @see IMAccountManager::imAccountAddedEvent + */ + void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMAccountManager::imAccountRemovedEvent + */ + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + /** + * @see IMPresence::contactIconChangedEvent + */ + void contactIconChangedEventHandler(IMPresence & sender, + std::string contactId, OWPicture icon); + + /** + * Sets the presence state of associated Contacts to unknown. + */ + void setPresenceStateToUnknown(Presence * presence); + + typedef std::map PresenceMap; + + PresenceMap _presenceMap; + + typedef std::list MyIMContactList; + /** + * List of IMContact waiting for presence subscriptions. This + * can happend when someone tries to subscribe to a contact presence + * and if the associated IMAccount is not connected. + */ + MyIMContactList _pendingSubscriptions; + + /** List of Contact for which Presence State has been subsribed. */ + MyIMContactList _subscribedContacts; + + UserProfile & _userProfile; +}; + +#endif //PRESENCEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Avatar.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/Avatar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Avatar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/Avatar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Avatar.h" + +#include + +Avatar::Avatar(std::string fullpath) + : _fullpath(fullpath) { +} + +Avatar::Avatar(const Avatar & avatar) + : _fullpath(avatar._fullpath) { +} + +Avatar::~Avatar() { +} + +std::string Avatar::getName() const { + File file(_fullpath); + return file.getFileName(); +} + +std::string Avatar::getFullPath() const { + return _fullpath; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Avatar.h qutecom-2.2+dfsg1/qutecom/src/model/profile/Avatar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Avatar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/Avatar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWAVATAR_H +#define OWAVATAR_H + +#include + +/** + * Represents an Avatar. + * + * @author Philippe Bernery + */ +class Avatar { +public: + + /** + * @param fullpath Fullpath to the avatar file. + */ + Avatar(std::string fullpath); + + Avatar(const Avatar & avatar); + + ~Avatar(); + + /** + * @return the name of the Avatar. Usually the last part + * of the path to the Avatar. + */ + std::string getName() const; + + /** + * @return the full path to the Avatar. + */ + std::string getFullPath() const; + +protected: + + std::string _fullpath; + +}; + +#endif //OWAVATAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/AvatarList.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/AvatarList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/AvatarList.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/AvatarList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include +#include + +#include "AvatarList.h" + +AvatarList::AvatarList() { + Avatar avatar = getDefaultAvatar(); + _defaultAvatarPicture = OWPicture::pictureFromFile(avatar.getFullPath()); +} + +AvatarList::~AvatarList() { +} + +Avatar AvatarList::getDefaultAvatar() const { + return Avatar(getAvatarPath() + "default-avatar.png"); +} + +std::string AvatarList::getAvatarPath() const { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getResourcesDir() + "pics/avatars/"); +} + +OWPicture AvatarList::getDefaultAvatarPicture() const { + return _defaultAvatarPicture; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/AvatarList.h qutecom-2.2+dfsg1/qutecom/src/model/profile/AvatarList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/AvatarList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/AvatarList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWAVATARLIST_H +#define OWAVATARLIST_H + +#include +#include + +#include "Avatar.h" + +/** + * Provides service to get the list of avatar available in $RESOURCES_DIR/pics/avatars + */ +class AvatarList : public Singleton { + friend class Singleton; +public: + + /** + * Get the Default Avatar. + * + * Thread-safety: reentrant. + */ + Avatar getDefaultAvatar() const; + + /** + * Get the Default Avatar picture. + * + * Thread-safety: reentrant. + */ + OWPicture getDefaultAvatarPicture() const; + +private: + + AvatarList(); + + ~AvatarList(); + + /** + * Get the path to the Avatars. + * + * Thread-safety: reentrant. + */ + std::string getAvatarPath() const; + + OWPicture _defaultAvatarPicture; +}; + +#endif //OWAVATARLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/EnumSex.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/EnumSex.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/EnumSex.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/EnumSex.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,54 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "EnumSex.h" + +#include + +using namespace std; + +string EnumSex::toString(EnumSex::Sex sex) { + string result; + + switch (sex) { + case SexUnknown: + result = "unknown"; + break; + case SexFemale: + result = "female"; + break; + case SexMale: + result = "male"; + break; + default: + LOG_FATAL("unknown case"); + } + + return result; +} + +EnumSex::Sex EnumSex::toSex(const string & sex) { + if (sex == "male") { + return SexMale; + } else if (sex == "female") { + return SexFemale; + } else { + return SexUnknown; + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/EnumSex.h qutecom-2.2+dfsg1/qutecom/src/model/profile/EnumSex.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/EnumSex.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/EnumSex.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SEX_H +#define SEX_H + +#include + +#include + +/** + * Sex: male or female. + * + * @author Philippe Bernery + */ +class EnumSex : NonCopyable { +public: + + enum Sex { + SexUnknown, + SexMale, + SexFemale + }; + + /** + * Gets a string represencation of the sex. + * + * @param sex the sex to transform + * @result the string representing the sex + */ + static std::string toString(Sex sex); + + /** + * Gets the sex from a string representation. + * + * @param sex the string to transform. + * @return the sex represented by the string + */ + static Sex toSex(const std::string & sex); +}; + +#endif //SEX_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/IMAccountManager.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/IMAccountManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/IMAccountManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/IMAccountManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,189 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "IMAccountManager.h" + +#include + +class IMAccountEqualsPredicate : public std::binary_function { +public: + bool operator () (IMAccount c1, IMAccount c2) const { + return ((c1.getLogin() == c2.getLogin()) + && (c1.getProtocol() == c2.getProtocol())); + } +}; + +IMAccountManager::IMAccountManager() { +} + +IMAccountManager::~IMAccountManager() { +} + +IMAccountList IMAccountManager::getIMAccountsOfProtocol(EnumIMProtocol::IMProtocol protocol) const { + RecursiveMutex::ScopedLock lock(_mutex); + + IMAccountList result; + + for (IMAccountList::const_iterator it = _imAccountList.begin(); + it != _imAccountList.end(); + ++it) { + + // FIXME: line 50 and 51 should not be there. + // There are here for compatibility with previous version of QuteCom. + EnumIMProtocol::IMProtocol accountProtocol = (*it).getProtocol(); + if ((accountProtocol == protocol) || + ((protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) && + (accountProtocol == EnumIMProtocol::IMProtocolSIP)) || + ((accountProtocol == EnumIMProtocol::IMProtocolSIPSIMPLE) && + (protocol == EnumIMProtocol::IMProtocolSIP))) + { + result.push_back(*it); + } + } + + return result; +} + +IMAccountList IMAccountManager::getIMAccountsOfProtocolVector(std::vector protocols) const { + RecursiveMutex::ScopedLock lock(_mutex); + + IMAccountList result; + + for (IMAccountList::const_iterator it = _imAccountList.begin(); + it != _imAccountList.end(); + ++it) { + + for(std::vector::const_iterator itv = protocols.begin(); + itv != protocols.end(); + ++itv) { + + if ((*it).getProtocol() == (*itv)) { + result.push_back(*it); + break; + } + + } + + } + return result; +} + +IMAccountList IMAccountManager::getIMAccountListCopy() const { + return _imAccountList; +} + +IMAccount * IMAccountManager::getIMAccount(const std::string & imAccountId) const { + RecursiveMutex::ScopedLock lock(_mutex); + + IMAccount * result = NULL; + + for (IMAccountList::const_iterator it = _imAccountList.begin(); + it != _imAccountList.end(); + ++it) { + if ((*it).getUUID() == imAccountId) { + result = (*it).clone(); + break; + } + } + + return result; +} + +bool IMAccountManager::contains(const std::string & imAccountId) { + RecursiveMutex::ScopedLock lock(_mutex); + + bool result = false; + + for (IMAccountList::const_iterator it = _imAccountList.begin(); + it != _imAccountList.end(); + ++it) { + if ((*it).getUUID() == imAccountId) { + result = true; + break; + } + } + + return result; +} + +bool IMAccountManager::addIMAccount(const IMAccount & imAccount) { + RecursiveMutex::ScopedLock lock(_mutex); + + bool result = false; + + IMAccountList::const_iterator it = + std::find_if(_imAccountList.begin(), _imAccountList.end(), + std::bind2nd(IMAccountEqualsPredicate(), imAccount)); + if (it == _imAccountList.end()) { + _imAccountList.push_back(imAccount); + imAccountAddedEvent(*this, imAccount.getUUID()); + result = true; + } + + return result; +} + +bool IMAccountManager::removeIMAccount(const IMAccount & imAccount) { + RecursiveMutex::ScopedLock lock(_mutex); + + bool result = false; + + IMAccountList::iterator it = + std::find(_imAccountList.begin(), _imAccountList.end(), imAccount); + if (it != _imAccountList.end()) { + + // TODO: Hack. See IMWrapperFactory::removeIMAccount doc + IMWrapperFactory::getFactory().removeIMAccount(imAccount); + + imAccountRemovedEvent(*this, imAccount.getUUID()); + _imAccountList.erase(it); + + result = true; + } + + return result; +} + +bool IMAccountManager::updateIMAccount(const IMAccount & imAccount) { + RecursiveMutex::ScopedLock lock(_mutex); + + bool result = false; + + IMAccountList::iterator it = + std::find(_imAccountList.begin(), _imAccountList.end(), imAccount); + if (it != _imAccountList.end()) { + (*it) = imAccount; + IMWrapperFactory::getFactory().imAccountUpdated(imAccount); + imAccountUpdatedEvent(*this, imAccount.getUUID()); + result = true; + } + + return result; + +} + +void IMAccountManager::emitIMAccountAddedEvent() { + RecursiveMutex::ScopedLock lock(_mutex); + + for (IMAccountList::const_iterator it = _imAccountList.begin(); + it != _imAccountList.end(); + ++it) { + imAccountAddedEvent(*this, (*it).getUUID()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/IMAccountManager.h qutecom-2.2+dfsg1/qutecom/src/model/profile/IMAccountManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/IMAccountManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/IMAccountManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,144 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIMACCOUNTMANAGER_H +#define OWIMACCOUNTMANAGER_H + +#include + +#include +#include + +#include + +class UserProfile; + +/** + * Manage the IMAccountList. + * + * This class access the given IMAccountList in a thread-safe. + * + * @author Philippe Bernery + */ +class IMAccountManager : NonCopyable { + + friend class UserProfile; + friend class UserProfileFileStorage; + friend class UserProfileFileStorage1; + +public: + + /** + * A new IMAccount has been added. + * + * @param sender this class + * @param imAccountId the id of the added IMAccount. + */ + Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountAddedEvent; + + /** + * Emitted when an IMAccount has been removed. + * + * @param sender this class + * @param imAccountId the id of the removed IMAccount. + */ + Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountRemovedEvent; + + /** + * Emitted when an IMAccount has been updated. + * + * @param sender this class + * @param imAccountId the id of the updates IMAccount. + */ + Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountUpdatedEvent; + + /** + * @param protocol the desired protocol + * @return IMAccountList list of IMAccount with protocol 'protocol' + */ + IMAccountList getIMAccountsOfProtocol(EnumIMProtocol::IMProtocol protocol) const; + + /** + * @param protocol vector of desired protocols + * @return IMAccountList list of IMAccount with protocols from 'protocol' + */ + IMAccountList getIMAccountsOfProtocolVector(std::vector protocols) const; + + /** + * @return a copy of the IMAccountList + */ + IMAccountList getIMAccountListCopy() const; + + /** + * Gets a clone of the IMAccount with id 'imAccountId'. + * @return the IMAccount or NULL if not found + */ + IMAccount * getIMAccount(const std::string & imAccountId) const; + + /** + * @return true if the IMAccountList contains the IMAccount with id 'imAccountId' + */ + bool contains(const std::string & imAccountId); + +private: + + IMAccountManager(); + ~IMAccountManager(); + + /** + * @name Method used by UserProfile + * @{ + */ + + /** + * Adds an IMAccount. + * + * @return true if actually added + */ + bool addIMAccount(const IMAccount & imAccount); + + /** + * Removes an IMAccount. + * + * @return true if actually removed + */ + bool removeIMAccount(const IMAccount & imAccount); + + /** + * Updates an IMAccount. + * + * @return true if actually updated + */ + bool updateIMAccount(const IMAccount & imAccount); + + /** + * Reemits imAccountAddedEvent for all IMAccounts. + */ + void emitIMAccountAddedEvent(); + + /** + * @} + */ + + IMAccountList _imAccountList; + + mutable RecursiveMutex _mutex; +}; + +#endif //OWIMACCOUNTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Profile.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/Profile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Profile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/Profile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "Profile.h" + +#include +#include + +Profile::Profile() { + _sex = EnumSex::SexUnknown; + _firstName = String::null; + _lastName = String::null; + _website = String::null; + _company = String::null; + _mobilePhone = String::null; + _homePhone = String::null; + _workPhone = String::null; + _qutecomPhoneNumber = String::null; + _otherPhone = String::null; + _fax = String::null; + _personalEmail = String::null; + _workEmail = String::null; + _otherEmail = String::null; + _notes = String::null; + _alias = String::null; + _qutecomPhoneId = String::null; + _smsSignature = String::null; +} + +Profile::Profile(const Profile & profile) + : Interface() { + copy(profile); +} + +void Profile::copy(const Profile & profile) { + _firstName = profile._firstName; + _lastName = profile._lastName; + _sex = profile._sex; + _birthdate = profile._birthdate; + _website = profile._website; + _company = profile._company; + _mobilePhone = profile._mobilePhone; + _homePhone = profile._homePhone; + _workPhone = profile._workPhone; + _qutecomPhoneNumber = profile._qutecomPhoneNumber; + _otherPhone = profile._otherPhone; + _fax = profile._fax; + _personalEmail = profile._personalEmail; + _workEmail = profile._workEmail; + _otherEmail = profile._otherEmail; + _streetAddress = profile._streetAddress; + _notes = profile._notes; + _qutecomPhoneId = profile._qutecomPhoneId; + _alias = profile._alias; + _icon = profile._icon; + _smsSignature = profile._smsSignature; +} + +bool Profile::operator==(const Profile & profile) const { + return ((_firstName == profile._firstName) + && (_lastName == profile._lastName) + && (_sex == profile._sex) + && (_birthdate == profile._birthdate) + && (_website == profile._website) + && (_company == profile._company) + && (_mobilePhone == profile._mobilePhone) + && (_homePhone == profile._homePhone) + && (_workPhone == profile._workPhone) + && (_qutecomPhoneNumber == profile._qutecomPhoneNumber) + && (_otherPhone == profile._otherPhone) + && (_fax == profile._fax) + && (_personalEmail == profile._personalEmail) + && (_workEmail == profile._workEmail) + && (_otherEmail == profile._otherEmail) + && (_streetAddress == profile._streetAddress) + && (_notes == profile._notes) + && (_qutecomPhoneId == profile._qutecomPhoneId) + && (_smsSignature == profile._smsSignature)); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Profile.h qutecom-2.2+dfsg1/qutecom/src/model/profile/Profile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/Profile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/Profile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,188 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PROFILE_H +#define PROFILE_H + +#include "EnumSex.h" +#include "StreetAddress.h" + +#include + +#include +#include +#include +#include +#include + +/** + * Handle common data between a Contact a UserProfile. + * + * @author Philippe Bernery + * @author Mathieu Stute + */ +class Profile : Interface { + friend class ProfileXMLSerializer; +public: + + /** + * Emitted when a property has been changed. + * + * @param sender this class + */ + Event< void(Profile & sender) > profileChangedEvent; + + Profile(); + + Profile(const Profile & profile); + + bool operator==(const Profile & profile) const; + + virtual ~Profile() {} + + void setFirstName(const std::string & firstName) { _firstName = firstName; profileChangedEvent(*this); } + std::string getFirstName() const { return _firstName; } + + void setLastName(const std::string & lastName) { _lastName = lastName; profileChangedEvent(*this); } + std::string getLastName() const { return _lastName; } + + std::string getCompleteName() const { return _firstName + " " + _lastName; } + + void setSex(EnumSex::Sex sex) { _sex = sex; profileChangedEvent(*this); } + EnumSex::Sex getSex() const { return _sex; } + + void setBirthdate(const Date & birthdate) { _birthdate = birthdate; profileChangedEvent(*this); } + Date getBirthdate() const { return _birthdate; } + + void setWebsite(const std::string & website) { _website = website; profileChangedEvent(*this); } + std::string getWebsite() const { return _website; } + + void setCompany(const std::string & company) { _company = company; profileChangedEvent(*this); } + std::string getCompany() const { return _company; } + + virtual void setMobilePhone(const std::string & mobilePhone) { _mobilePhone = mobilePhone; profileChangedEvent(*this); } + std::string getMobilePhone() const { return _mobilePhone; } + + virtual void setHomePhone(const std::string & homePhone) { _homePhone = homePhone; profileChangedEvent(*this); } + std::string getHomePhone() const { return _homePhone; } + + virtual void setWorkPhone(const std::string & workPhone) { _workPhone = workPhone; profileChangedEvent(*this); } + std::string getWorkPhone() const { return _workPhone; } + + virtual void setOtherPhone(const std::string & otherPhone) { _otherPhone = otherPhone; profileChangedEvent(*this); } + std::string getOtherPhone() const { return _otherPhone; } + + void setQuteComNumber(const std::string & qutecomPhoneNumber) { _qutecomPhoneNumber = qutecomPhoneNumber; profileChangedEvent(*this); } + std::string getQuteComNumber() const { return _qutecomPhoneNumber; } + + void setFax(const std::string & fax) { _fax = fax; profileChangedEvent(*this); } + std::string getFax() const { return _fax; } + + void setPersonalEmail(const std::string & personalEmail) { _personalEmail = personalEmail; profileChangedEvent(*this); } + std::string getPersonalEmail() const { return _personalEmail; } + + void setWorkEmail(const std::string & workEmail) { _workEmail = workEmail; profileChangedEvent(*this); } + std::string getWorkEmail() const { return _workEmail; } + + void setOtherEmail(const std::string & otherEmail) { _otherEmail = otherEmail; profileChangedEvent(*this); } + std::string getOtherEmail() const { return _otherEmail; } + + void setStreetAddress(const StreetAddress & streetAddress) { _streetAddress = streetAddress; profileChangedEvent(*this); } + StreetAddress getStreetAddress() const { return _streetAddress; } + + void setNotes(const std::string & notes) { _notes = notes; profileChangedEvent(*this); } + std::string getNotes() const { return _notes; } + + void setSmsSignature(const std::string & signature) { _smsSignature = signature; profileChangedEvent(*this); } + std::string getSmsSignature() const { return _smsSignature; } + + bool hasPhoneNumber() const { + return (!_workPhone.empty() || !_homePhone.empty() || !_mobilePhone.empty() || !_otherPhone.empty()); + } + + virtual void setAlias(const std::string & alias) { _alias = alias; profileChangedEvent(*this); } + virtual std::string getAlias() const { return _alias; } + + virtual void setQuteComId(const std::string & qutecomPhoneId) { _qutecomPhoneId = qutecomPhoneId; profileChangedEvent(*this); } + virtual std::string getQuteComId() const { return _qutecomPhoneId; } + + virtual void setIcon(const OWPicture & icon) { _icon = icon; profileChangedEvent(*this); } + virtual OWPicture getIcon() const { return _icon; } + + /** + * Gets the PresenceState of this Profile. + * + * @return the PresenceState + */ + virtual EnumPresenceState::PresenceState getPresenceState() const = 0; + +protected: + + /** + * Copy a Profile. + * + * @param profile the Profile to copy + */ + virtual void copy(const Profile & profile); + + std::string _firstName; + + std::string _lastName; + + EnumSex::Sex _sex; + + Date _birthdate; + + std::string _website; + + std::string _company; + + std::string _mobilePhone; + + std::string _homePhone; + + std::string _workPhone; + + std::string _qutecomPhoneNumber; + + std::string _otherPhone; + + std::string _fax; + + std::string _personalEmail; + + std::string _workEmail; + + std::string _otherEmail; + + StreetAddress _streetAddress; + + std::string _notes; + + std::string _alias; + + std::string _qutecomPhoneId; + + OWPicture _icon; + + std::string _smsSignature; + +}; + +#endif //PROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,325 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ProfileXMLSerializer.h" + +#include "Profile.h" + +#include +#include + +#include + +#include + +#include + +using namespace std; + +ProfileXMLSerializer::ProfileXMLSerializer(Profile & profile) + : _profile(profile) { +} + +string ProfileXMLSerializer::serialize() { + string result; + + // Serializing QuteCom ID + if (!_profile._qutecomPhoneId.empty()) { + result += ("" + _profile._qutecomPhoneId + "\n"); + } + //// + + // Serializing names + result += "\n"; + if (!_profile._firstName.empty()) { + result += ("\n"); + } + if (!_profile._lastName.empty()) { + result += ("\n"); + } + result += "\n"; + //// + + //Serializing sex + if (_profile._sex != EnumSex::SexUnknown) { + result += ("" + EnumSex::toString(_profile._sex) + "\n"); + } + //// + + // Serializing alias + if (!_profile._alias.empty()) { + result += (""); + } + //// + + // Serializing urls + if (!_profile._website.empty()) { + //result += ("" + _profile._website + "\n"); + result += ("\n"); + } + //// + + // Serializing birthday + result += "\n"; + + DateXMLSerializer serializer(_profile._birthdate); + result += serializer.serialize(); + + result += "\n"; + //// + + // Serializing organization + /* + result += "\n"; + + result += "\n"; + */ + //// + + // Serializing phone numbers + if (!_profile._mobilePhone.empty()) { + result += ("" + _profile._mobilePhone + "\n"); + } + + if (!_profile._workPhone.empty()) { + result += ("" + _profile._workPhone + "\n"); + } + + if (!_profile._homePhone.empty()) { + result += ("" + _profile._homePhone + "\n"); + } + + if (!_profile._qutecomPhoneNumber.empty()) { + result += ("" + _profile._qutecomPhoneNumber + ""); + } + //// + + // Serializing street address + StreetAddressXMLSerializer streetSerializer(_profile._streetAddress); + result += streetSerializer.serialize(); + //// + + // Serializing emails + if (!_profile._personalEmail.empty()) { + result += ("" + _profile._personalEmail + "\n"); + } + + if (!_profile._workEmail.empty()) { + result += ("" + _profile._workEmail + "\n"); + } + + if (!_profile._otherEmail.empty()) { + result += ("" + _profile._otherEmail + "\n"); + } + //// + + // Serializing SMS signature + if (!_profile._smsSignature.empty()) { + result += ("" + _profile._smsSignature + "\n"); + } + //// + + // Serializing photo + if (!_profile._icon.getData().empty()) { + result += (""); + } + //// + + // Serializing notes + if (!_profile._notes.empty()) { + result += (""); + } + //// + + return result; +} + +bool ProfileXMLSerializer::unserialize(const std::string & data) { + return false; +} + +bool ProfileXMLSerializer::unserializeContent(TiXmlHandle & rootElt) { + // Retrieving QuteCom ID + TiXmlNode * qutecomPhoneId = rootElt.FirstChild("qutecomid").FirstChild().Node(); + if (qutecomPhoneId) { + // Here we need to call setQuteComId because each class inherited + // from Profile handles the qutecom ID differently. + _profile.setQuteComId(qutecomPhoneId->Value()); + } + //// + + // Retrieving names + TiXmlNode * firstName = rootElt.FirstChild("name").FirstChild("first").FirstChild().Node(); + if (firstName) { + _profile._firstName = firstName->Value(); + } + TiXmlNode * lastName = rootElt.FirstChild("name").FirstChild("last").FirstChild().Node(); + if (lastName) { + _profile._lastName = lastName->Value(); + } + //// + + // Retrieving alias + TiXmlNode * alias = rootElt.FirstChild("alias").FirstChild().Node(); + if (alias) { + _profile._alias = alias->Value(); + } + //// + + // Retrieving SMS Signature + TiXmlNode * smsSignature = rootElt.FirstChild("smssignature").FirstChild().Node(); + if (smsSignature) { + _profile._smsSignature = smsSignature->Value(); + } + //// + + // Retrieving sex + TiXmlNode * sex = rootElt.FirstChild("sex").FirstChild().Node(); + if (sex) { + _profile._sex = EnumSex::toSex(sex->Value()); + } + //// + + // Retrieving URLs + if (rootElt.Node()) { + TiXmlNode * url = NULL; + while ((url = rootElt.Node()->IterateChildren("url", url))) { + TiXmlElement * urlElt = url->ToElement(); + string typeAttr = string(urlElt->Attribute("type")); + if (typeAttr == "website") { + TiXmlNode * website = url->FirstChild(); + if (website) { + _profile._website = website->Value(); + } + } + } + } + //// + + // Retrieving birthday + TiXmlNode * birthday = rootElt.FirstChild("birthday").FirstChild("date").Node(); + if (birthday) { + TiXmlElement * birthdayElt = birthday->ToElement(); + string birthdayData; + birthdayData << *birthdayElt; + Date date; + DateXMLSerializer dateSerializer(date); + dateSerializer.unserialize(birthdayData); + _profile._birthdate = date; + } + ///// + + // Retrieving organization + //// + + // Retrieving address + TiXmlNode * address = rootElt.FirstChild("address").Node(); + if (address) { + TiXmlElement * addressElt = address->ToElement(); + string addressData; + addressData << *addressElt; + StreetAddress streetAddress; + StreetAddressXMLSerializer addressSerializer(streetAddress); + addressSerializer.unserialize(addressData); + _profile._streetAddress = streetAddress; + } + //// + + // Retrieving phone numbers + TiXmlNode * tel = NULL; + while ((rootElt.Node()) && (tel = rootElt.Node()->IterateChildren("tel", tel))) { + TiXmlElement * telElt = tel->ToElement(); + string typeAttr = string(telElt->Attribute("type")); + if (typeAttr == "home") { + TiXmlNode * homePhone = tel->FirstChild(); + if (homePhone) { + _profile._homePhone = homePhone->Value(); + } + } else if (typeAttr == "work") { + TiXmlNode * workPhone = tel->FirstChild(); + if (workPhone) { + _profile._workPhone = workPhone->Value(); + } + } else if (typeAttr == "cell") { + TiXmlNode * mobilePhone = tel->FirstChild(); + if (mobilePhone) { + _profile._mobilePhone = mobilePhone->Value(); + } + } else if (typeAttr == "qutecom") { + TiXmlNode * qutecomPhoneNumber = tel->FirstChild(); + if (qutecomPhoneNumber) { + _profile._qutecomPhoneNumber = qutecomPhoneNumber->Value(); + } + } + } + //// + + // Retrieving emails + TiXmlNode * email = NULL; + while ((rootElt.Node()) && (email = rootElt.Node()->IterateChildren("email", email))) { + TiXmlElement * emailElt = email->ToElement(); + string typeAttr = string(emailElt->Attribute("type")); + if (typeAttr == "home") { + TiXmlNode * personalEmail = email->FirstChild(); + if (personalEmail) { + _profile._personalEmail = personalEmail->Value(); + } + } else if (typeAttr == "work") { + TiXmlNode * workEmail = email->FirstChild(); + if (workEmail) { + _profile._workEmail = workEmail->Value(); + } + } else if (typeAttr == "other") { + TiXmlNode * otherEmail = email->FirstChild(); + if (otherEmail) { + _profile._otherEmail = otherEmail->Value(); + } + } + } + //// + + // Retrieving icon + TiXmlNode * photo = rootElt.FirstChild("photo").Node(); + if (photo) { + TiXmlElement * photoElt = photo->ToElement(); + string filename; + const char * filenameAttr = photoElt->Attribute("filename"); + if (filenameAttr) { + filename = string(filenameAttr); + } + + TiXmlNode * photoNode = photo->FirstChild(); + if (photoNode) { + OWPicture picture = OWPicture::pictureFromData(Base64::decode(photoNode->Value())); + picture.setFilename(filename); + _profile._icon = picture; + } + } + //// + + // Retrieving notes + TiXmlNode * notes = rootElt.FirstChild("notes").FirstChild().Node(); + if (notes) { + _profile._notes = notes->Value(); + } + //// + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/ProfileXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PROFILEXMLSERIALIZER_H +#define PROFILEXMLSERIALIZER_H + +#include + +#include + +class Profile; +class TiXmlHandle; + +/** + * Serialize a Profile object. + * + * @author Philippe Bernery + */ +class ProfileXMLSerializer : public Serializable { +public: + + ProfileXMLSerializer(Profile & profile); + + virtual std::string serialize(); + + bool unserializeContent(TiXmlHandle & rootElt); + +protected: + + virtual bool unserialize(const std::string & data); + + Profile & _profile; + +}; + +#endif //PROFILEXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddress.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddress.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddress.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "StreetAddress.h" + +using namespace std; + +StreetAddress::StreetAddress() { +} + +StreetAddress::StreetAddress(const StreetAddress & streetAddress) { + initialize(streetAddress); +} + +StreetAddress::~StreetAddress() { +} + +StreetAddress & StreetAddress::operator = (const StreetAddress & streetAddress) { + if (&streetAddress != this) { + initialize(streetAddress); + } + + return *this; +} + +bool StreetAddress::operator == (const StreetAddress & streetAddress) const { + return ((_street == streetAddress._street) + && (_stateProvince == streetAddress._stateProvince) + && (_city == streetAddress._city) + && (_zipCode == streetAddress._zipCode) + && (_country == streetAddress._country)); +} + +void StreetAddress::initialize(const StreetAddress & streetAddress) { + _street = streetAddress._street; + _stateProvince = streetAddress._stateProvince; + _city = streetAddress._city; + _zipCode = streetAddress._zipCode; + _country = streetAddress._country; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddress.h qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddress.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddress.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddress.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef STREETADDRESS_H +#define STREETADDRESS_H + +#include + +/** + * Class for the living address of a Contact. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class StreetAddress { + friend class StreetAddressXMLSerializer; +public: + + StreetAddress(); + + StreetAddress(const StreetAddress & streetAddress); + + ~StreetAddress(); + + StreetAddress & operator=(const StreetAddress & streetAddress); + + bool operator == (const StreetAddress & streetAddress) const; + + void setStreet(const std::string & street) { _street = street; } + const std::string & getStreet() const { return _street; } + + void setStateProvince(const std::string & stateProvince) { _stateProvince = stateProvince; } + const std::string & getStateProvince() const { return _stateProvince; } + + void setCity(const std::string & city) { _city = city; } + const std::string & getCity() const { return _city; } + + void setZipCode(const std::string & zipCode) { _zipCode = zipCode; } + const std::string & getZipCode() const { return _zipCode; } + + void setCountry(const std::string & country) { _country = country; } + const std::string & getCountry() const { return _country; } + +private: + + /** Factorizes code between contructor and copy contructor. */ + void initialize(const StreetAddress & streetAddress); + + std::string _street; + std::string _stateProvince; + std::string _city; + std::string _zipCode; + std::string _country; +}; + +#endif //STREETADDRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "StreetAddressXMLSerializer.h" + +#include "StreetAddress.h" + +#include + +using namespace std; + +StreetAddressXMLSerializer::StreetAddressXMLSerializer(StreetAddress & streetAddress) +: _streetAddress(streetAddress) { + +} + +std::string StreetAddressXMLSerializer::serialize() { + string result; + + result += "
\n"; + + if (!_streetAddress._street.empty()) { + result += ("\n"); + } + + if (!_streetAddress._city.empty()) { + result += ("\n"); + } + + if (!_streetAddress._stateProvince.empty()) { + result += ("\n"); + } + + if (!_streetAddress._zipCode.empty()) { + result += ("\n"); + } + + if (!_streetAddress._country.empty()) { + result += ("\n"); + } + + result += "
\n"; + + return result; +} + +bool StreetAddressXMLSerializer::unserialize(const std::string & data) { + TiXmlDocument doc; + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(& doc); + + TiXmlNode * street = docHandle.FirstChild("address").FirstChild("street").FirstChild().Node(); + if (street) { + _streetAddress._street = street->Value(); + } + + TiXmlNode * locality = docHandle.FirstChild("address").FirstChild("locality").FirstChild().Node(); + if (locality) { + _streetAddress._city = locality->Value(); + } + + TiXmlNode * region = docHandle.FirstChild("address").FirstChild("region").FirstChild().Node(); + if (region) { + _streetAddress._stateProvince = region->Value(); + } + + TiXmlNode * postcode = docHandle.FirstChild("address").FirstChild("postcode").FirstChild().Node(); + if (postcode) { + _streetAddress._zipCode = postcode->Value(); + } + + TiXmlNode * country = docHandle.FirstChild("address").FirstChild("country").FirstChild().Node(); + if (country) { + _streetAddress._country = country->Value(); + } + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/StreetAddressXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef STREETADDRESSXMLSERIALIZER_H +#define STREETADDRESSXMLSERIALIZER_H + +#include + +class StreetAddress; + +/** + * Serialize a StreetAddress object. + * + * @author Philippe Bernery + */ +class StreetAddressXMLSerializer : public Serializable { +public: + + StreetAddressXMLSerializer(StreetAddress & streetAddress); + + std::string serialize(); + + bool unserialize(const std::string & data); + +private: + + StreetAddress & _streetAddress; + +}; + +#endif //STREETADDRESSXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfile.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,642 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UserProfile.h" + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include + +using namespace std; + +UserProfile::UserProfile() { + _wsSms = NULL; + _wsInfo = NULL; + _wsCallForward = NULL; + _wsSoftUpdate = NULL; + _activePhoneLine = NULL; + _activePhoneCall = NULL; + _sipAccount = NULL; + + _imAccountManager = new IMAccountManager(); + _imContactListHandler = new IMContactListHandler(*this); + _connectHandler = new ConnectHandler(this); + _presenceHandler = new PresenceHandler(*this); + _chatHandler = new ChatHandler(*this); + _contactList = new ContactList(*this); + _coIpManager = new CoIpManager(*this); + + _sipAccountMustConnectAfterInit = false; + _sipAccountReadyToConnect = false; + _historyLoaded = false; + + // Settings Avatar to default + _icon = AvatarList::getInstance().getDefaultAvatarPicture(); + //// + + _history = new History(*this); +} + +UserProfile::~UserProfile() { + RecursiveMutex::ScopedLock lock(_mutex); + + // Disconnect events to prevent some crashes (call on deleted objects) + if (_sipAccount) { + _sipAccount->loginStateChangedEvent -= + boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); + _sipAccount->networkDiscoveryStateChangedEvent -= + boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); + } + + // Prevent some synchronization crashes by unregistering to these Events. + _connectHandler->unregisterAllEvents(); + _imContactListHandler->unregisterAllEvents(); + _chatHandler->unregisterAllEvents(); + _presenceHandler->unregisterAllEvents(); + + OWSAFE_DELETE(_activePhoneCall); + OWSAFE_DELETE(_wsSms); + OWSAFE_DELETE(_wsSoftUpdate); + OWSAFE_DELETE(_wsInfo); + OWSAFE_DELETE(_wsCallForward); + OWSAFE_DELETE(_history); + + OWSAFE_DELETE(_coIpManager); + OWSAFE_DELETE(_contactList); + OWSAFE_DELETE(_imContactListHandler); + OWSAFE_DELETE(_chatHandler); + OWSAFE_DELETE(_presenceHandler); + + disconnect(); + + if (_activePhoneLine) { + Thread::sleep(5); // Sleep for PhApi: lets time to it to unregister + _activePhoneLine->getSipWrapper().terminate(); + } + + _phoneLineList.clear(); + OWSAFE_DELETE(_activePhoneLine); + OWSAFE_DELETE(_connectHandler); + OWSAFE_DELETE(_imAccountManager); + + // HACK haaaack if _sipAccount is detroy when user try to + // connect with a bad password the softphone freeze.... + if (_sipAccount && (_sipAccount->getLastLoginState() != EnumSipLoginState::SipLoginStatePasswordError)) { + OWSAFE_DELETE(_sipAccount); + } + //// +} + +void UserProfile::init() { + // Emits IMAccountManager::imAccountAddedEvent + _imAccountManager->emitIMAccountAddedEvent(); + //// + + // Connect sip account + _sipAccountMustConnectAfterInit = true; + sipAccountInit(); + //// + + // IMAccounts are now connected later ; + // when SIPAccount is OK +} + +std::string UserProfile::getProfileDirectory() const { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + "profiles/" + _name + "/"); +} + +void UserProfile::connect() { + connectIMAccounts(); +} + +void UserProfile::connectIMAccounts() { + // Connects all IMAccounts + // This will also connect the QuteCom IMAccount. This will actually + // call UserProfile::connectSipAccounts after being through the Connect class. + IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); + for (IMAccountList::const_iterator it = imAccountList.begin(); + it != imAccountList.end(); ++it) { + if ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline) { + _connectHandler->connect((*it).getUUID()); + } + } + //// +} + +bool UserProfile::connectSipAccounts() { + RecursiveMutex::ScopedLock lock(_mutex); + + // This method is called by the Connect class. + + // Connect the SipAccount if not connected + LOG_DEBUG ("SIP_ In connectSipAccounts"); + if (_activePhoneLine && !_sipAccount->isConnected()) + { + loginStateChangedEvent(*_sipAccount,EnumSipLoginState::SipLoginStateProgress ); + + if (!_activePhoneLine->connect()) { + LOG_ERROR("Couldn't connect phoneline"); + return false; + } + + LOG_DEBUG("SIP connection OK"); + return true; + } + return false; + //// +} + +void UserProfile::disconnect() { + disconnectIMAccounts(); +} + +void UserProfile::disconnectIMAccounts() { + IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); + for (IMAccountList::const_iterator it = imAccountList.begin(); + it != imAccountList.end(); ++it) { + _connectHandler->disconnect((*it).getUUID()); + } +} + +void UserProfile::disconnectSipAccounts(bool force) { + RecursiveMutex::ScopedLock lock(_mutex); + + // This method is called by the Connect class. + + if (_activePhoneLine && _sipAccount->isConnected()) { + _activePhoneLine->disconnect(force); + } +} + +EnumMakeCallError::MakeCallError UserProfile::makeCall(Contact & contact) { + if (_activePhoneLine) { + return _activePhoneLine->makeCall(contact.getPreferredNumber()); + } else { + return EnumMakeCallError::NotConnected; + } +} + +EnumMakeCallError::MakeCallError UserProfile::makeCall(const std::string & phoneNumber) { + if (_activePhoneLine) { + return _activePhoneLine->makeCall(phoneNumber); + } else { + return EnumMakeCallError::NotConnected; + } +} + +void UserProfile::startIM(Contact & contact) { + IMContactSet imContactSet; + IMContact * imContact = contact.getPreferredIMContact(); + + if (imContact) { + imContactSet.insert(*imContact); + _chatHandler->createSession(imContact->getIMAccountId(), imContactSet); + } else { + LOG_ERROR("There is no IMContact available"); + } +} + +void UserProfile::setSipAccount(const SipAccount & sipAccount, bool needInitialization) { + if (_sipAccount) { + IPhoneLine * phoneLine = findQuteComLine(); + if (phoneLine) { + phoneLine->disconnect(); + //TODO remove the PhoneLine from _phoneLines & destroy it + } + + std::vector protocols; + protocols.push_back(EnumIMProtocol::IMProtocolQuteCom); + protocols.push_back(EnumIMProtocol::IMProtocolSIP); + protocols.push_back(EnumIMProtocol::IMProtocolSIPSIMPLE); + IMAccountList imAccountList = _imAccountManager->getIMAccountsOfProtocolVector(protocols); + if (imAccountList.size() > 0) { + _removeIMAccount(*imAccountList.begin()); + } + OWSAFE_DELETE(_sipAccount); + } + + if (sipAccount.getType() == SipAccount::SipAccountTypeQuteCom) { + const QuteComAccount & qutecomAccount = dynamic_cast(sipAccount); + //Empty login or password + if (qutecomAccount.getQuteComLogin().empty() || qutecomAccount.getQuteComPassword().empty()) { + loginStateChangedEvent(*_sipAccount, EnumSipLoginState::SipLoginStatePasswordError); + return; + } + + _sipAccount = new QuteComAccount(qutecomAccount); + } else { + if (sipAccount.getIdentity().empty()) { + loginStateChangedEvent(*_sipAccount, EnumSipLoginState::SipLoginStatePasswordError); + return; + } + + _sipAccount = new SipAccount(sipAccount); + } + + computeName(); + _sipAccount->networkDiscoveryStateChangedEvent += + boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); + _sipAccount->loginStateChangedEvent += + boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); + + if (needInitialization) { + // Discovers network. + // Sends the HTTP request to the SSO if _sipAccount is a QuteCom account. + _sipAccountMustConnectAfterInit = false; + _sipAccountReadyToConnect = false; + _sipAccount->init(); + } +} + +void UserProfile::addIMAccount(const IMAccount & imAccount) { + /* + This code is not used anymore because of ConfigImporter update. + if (imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom) { + LOG_FATAL("cannot add directly a QuteCom IMAccount. Must use setQuteComAccount"); + return; + } + */ + + + _addIMAccount(imAccount); +} + +void UserProfile::_addIMAccount(const IMAccount & imAccount) { + LOG_DEBUG("adding an IMAccount"); + + _imAccountManager->addIMAccount(imAccount); +} + +void UserProfile::removeIMAccount(const IMAccount & imAccount) { + if (imAccount.getProtocol() == EnumIMProtocol::IMProtocolQuteCom) { + LOG_FATAL("cannot remove directly a QuteCom IMAccount. Must use setQuteComAccount"); + return; + } + + _removeIMAccount(imAccount); +} + +void UserProfile::_removeIMAccount(const IMAccount & imAccount) { + LOG_DEBUG("removing an IMAccount"); + + if (_imAccountManager->contains(imAccount.getUUID())) { + //_connectHandler->disconnect(imAccount.getUUID()); + _imAccountManager->removeIMAccount(imAccount); + } else { + LOG_ERROR("IMAccount not in IMAccountManager"); + } +} + +void UserProfile::updateIMAccount(const IMAccount & imAccount) { + LOG_DEBUG("updating IMAccount"); + + _imAccountManager->updateIMAccount(imAccount); +} + +EnumPresenceState::PresenceState UserProfile::getPresenceState() const { + IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); + + IMAccountList::const_iterator + it = imAccountList.begin(), + end = imAccountList.end(); + + // There is no account + if (it == end) { + return EnumPresenceState::PresenceStateUnavailable; + } + + // Check whether all states are the same + EnumPresenceState::PresenceState state = it->getPresenceState(); + ++it; + + for (; it!= end; ++it) { + if ((*it).getPresenceState() != state) { + // They are not + return EnumPresenceState::PresenceStateMulti; + } + } + + // All states are the same + return state; +} + +void UserProfile::setPresenceState(EnumPresenceState::PresenceState presenceState, std::string imAccountId) { + IMAccount * realIMAccount = _imAccountManager->getIMAccount(imAccountId); + if (realIMAccount) { + if (!realIMAccount->isConnected()) { + _connectHandler->connect(imAccountId); + } + + _presenceHandler->changeMyPresenceState(presenceState, getAlias(), realIMAccount); + OWSAFE_DELETE(realIMAccount); + } +} + +void UserProfile::setAllPresenceState(EnumPresenceState::PresenceState presenceState) { + if (!isConnected()) { + connect(); + } + + _presenceHandler->changeMyPresenceState(presenceState, getAlias(), NULL); +} + +void UserProfile::setAlias(const string & alias, IMAccount * imAccount) { + _alias = alias; + _presenceHandler->changeMyAlias(_alias, imAccount); +} + +bool UserProfile::addPhoneLine(SipAccount & account) { + //Creates new a PhoneLine associated with the account just added + PhoneLine * phoneLine = new PhoneLine(account, *this); + if (!phoneLine->init()) { + LOG_ERROR("PhoneLine initialisation failed"); + return false; + } + + //Adds the PhoneLine to the list of PhoneLine + _phoneLineList += phoneLine; + + //Sets the active PhoneLine + //FIXME should the last added PhoneLine be the active one all the time? + if (!_activePhoneLine) { + _activePhoneLine = phoneLine; + } + + return true; +} + +void UserProfile::sipAccountInit() { + if (_sipAccount) { + _sipAccount->networkDiscoveryStateChangedEvent += + boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); + _sipAccount->loginStateChangedEvent += + boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); + + // Detect network and launch SSO request if needed QuteComAccount + _sipAccountReadyToConnect = false; + _sipAccount->init(); + } +} + +void UserProfile::loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state) { + // FIXME: due to a threads synchronization problem, it's better to comment this part of code temporarily + + typedef ThreadEvent2 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&UserProfile::loginStateChangedEventHandlerThreadSafe, this, _1, _2), + dynamic_cast(sender), state); + + QuteCom::getInstance().postEvent(event); + + //loginStateChangedEvent(sender, state); + //loginStateChangedEventHandlerThreadSafe(sender, state); +} + +void UserProfile::loginStateChangedEventHandlerThreadSafe(SipAccount & sender, EnumSipLoginState::SipLoginState state) { + RecursiveMutex::ScopedLock lock(_mutex); + + LOG_DEBUG("SIP_ " + _name); + + switch (state) { + case EnumSipLoginState::SipLoginStateReady: { + LOG_DEBUG("SIP_ READY"); + + // if no sip account (generic or qutecom) is set : create one !! + IMAccountList imAccountList; + if (_sipAccount->getType() == SipAccount::SipAccountTypeQuteCom) { + imAccountList = _imAccountManager->getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolQuteCom); + if (imAccountList.size() == 0) { + IMAccount imAccount(_sipAccount->getIdentity(), _sipAccount->getPassword(), EnumIMProtocol::IMProtocolQuteCom,_sipAccount->getDisplayName()); + imAccount.setConnected(false); + _addIMAccount(imAccount); + } + else + { + IMAccount imAccount = *imAccountList.begin(); + if(imAccount.getDisplayName() != _sipAccount->getDisplayName()) + { + imAccount.setDisplayName(_sipAccount->getDisplayName()); + updateIMAccount(imAccount); + } + } + } else { + std::vector protocols; + protocols.push_back(EnumIMProtocol::IMProtocolSIP); + protocols.push_back(EnumIMProtocol::IMProtocolSIPSIMPLE); + imAccountList = _imAccountManager->getIMAccountsOfProtocolVector(protocols); + if (imAccountList.size() == 0) { + IMAccount imAccount(_sipAccount->getIdentity(), _sipAccount->getPassword(), EnumIMProtocol::IMProtocolSIP,_sipAccount->getDisplayName()); + imAccount.setConnected(false); + _addIMAccount(imAccount); + } + else + { + IMAccount imAccount = *imAccountList.begin(); + if(imAccount.getDisplayName() != _sipAccount->getDisplayName()) + { + imAccount.setDisplayName(_sipAccount->getDisplayName()); + updateIMAccount(imAccount); + } + } + } + //// + + if (_sipAccountMustConnectAfterInit) { + _sipAccountMustConnectAfterInit = false; + + if (!addPhoneLine(*_sipAccount)) { + LOG_ERROR("Couldn't add phoneline"); + sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStateNetworkError); + break; + } + + if (_sipAccount->getType() == SipAccount::SipAccountTypeQuteCom) { + + QuteComAccount * qutecomAccount = dynamic_cast(_sipAccount); + + //Creates SMS, SMS needs a QuteComAccount + _wsSms = new WsSms(qutecomAccount, *this); + wsSmsCreatedEvent(*this, *_wsSms); + LOG_DEBUG("SMS created"); + + _wsInfo = new WsInfo(qutecomAccount); + wsInfoCreatedEvent(*this, *_wsInfo); + LOG_DEBUG("WsInfo created"); + + //callforward + _wsCallForward = new WsCallForward(qutecomAccount); + wsCallForwardCreatedEvent(*this, *_wsCallForward); + _wsCallForward->wsCallForwardEvent += boost::bind(&UserProfile::wsCallForwardEventHandler, this, _1, _2, _3); + } + + //Creates SoftUpdate, SoftUpdate needs a QuteComAccount + _wsSoftUpdate = new WsSoftUpdate(); + wsSoftUpdateCreatedEvent(*this, *_wsSoftUpdate); + LOG_DEBUG("SoftUpdate created"); + + phoneLineCreatedEvent(*this, *_activePhoneLine); + + loadHistory(getProfileDirectory()); + + //Connect SipAccounts and IMAccounts; + connect(); + } + + sipAccountConnectedEvent(); + + _sipAccountReadyToConnect = true; + + break; + } + + case EnumSipLoginState::SipLoginStatePasswordError: { + LOG_DEBUG("SIP_ PASSWORD ERROR"); + if (!_sipAccountReadyToConnect) { + sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStatePasswordError); + } + break; + } + + case EnumSipLoginState::SipLoginStateConnected: { + LOG_DEBUG("SIP_ CONNECTED"); + break; + } + + case EnumSipLoginState::SipLoginStateDisconnected: { + LOG_DEBUG("SIP_ DISCONNECTED"); + break; + } + + case EnumSipLoginState::SipLoginStateNetworkError: { + LOG_DEBUG("SIP_ NetworkError"); + sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStateNetworkError); + break; + } + + default: + ; + } +} + +void UserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state) { + networkDiscoveryStateChangedEvent(sender, state); +} + +IPhoneLine * UserProfile::findQuteComLine() { + for (unsigned i = 0; i != _phoneLineList.size() ; i++) { + const SipAccount & sipAccount = _phoneLineList[i]->getSipAccount(); + + if (sipAccount.getType() == SipAccount::SipAccountTypeQuteCom) { + return _phoneLineList[i]; + } else { + LOG_DEBUG("this SipAccount is not a QuteComAccount"); + } + } + return NULL; +} + +void UserProfile::setIcon(const OWPicture & icon, IMAccount * imAccount) { + Profile::setIcon(icon); + _presenceHandler->changeMyIcon(icon, imAccount); +} + +bool UserProfile::loadHistory(const std::string & path) { + bool toReturn = _history->load(path + "history.xml"); + _historyLoaded = true; + historyLoadedEvent(*this, *_history); + return toReturn; +} + +bool UserProfile::saveHistory(const std::string & path) { + return _history->save(path + "history.xml"); +} + +bool UserProfile::hasQuteComAccount() const { + return (hasSipAccount() && (_sipAccount->getType() == SipAccount::SipAccountTypeQuteCom)); +} + +bool UserProfile::hasSipAccount() const { + return _sipAccount != NULL; +} + +void UserProfile::wsCallForwardEventHandler(WsCallForward & sender, + int id, WsCallForward::WsCallForwardStatus status) { + + if (status == WsCallForward::WsCallForwardStatusOk) { + _wsInfo->getQuteComsCount(false); + _wsInfo->getQuteComsCurrency(false); + _wsInfo->getSmsCount(false); + _wsInfo->getActiveMail(false); + _wsInfo->getUnreadVoiceMail(false); + _wsInfo->getLandlineNumber(false); + _wsInfo->getCallForwardInfo(true); + _wsInfo->execute(); + } +} + +void UserProfile::computeName() { + _name = _sipAccount->getFullIdentity(); +} + +bool UserProfile::isConnected() const { + //Checks all IMAccounts + IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); + + for (IMAccountList::const_iterator it = imAccountList.begin(); + it != imAccountList.end(); ++it) { + + if ((*it).isConnected()) { + return true; + } + } + + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,220 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UserProfileFileStorage1.h" + +#include +#include +#include +#include +#include + +#include + +#include +#include + +using namespace std; + +static const std::string USERPROFILE_FILENAME = "userprofile.xml"; +static const std::string PROFILES_DIR = "profiles/"; +static const std::string BACKUPS_DIR = "backups/"; + +UserProfileFileStorage1::UserProfileFileStorage1(UserProfile & userProfile) + : UserProfileStorage(userProfile) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + File::createPath(File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR)); +} + +UserProfileFileStorage1::~UserProfileFileStorage1() { +} + +std::string UserProfileFileStorage1::getProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + "/"); +} + +std::string UserProfileFileStorage1::getTempProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".new/"); +} + +std::string UserProfileFileStorage1::getOldProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".old/"); +} + +std::string UserProfileFileStorage1::getBackupProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR + profileName + "/"); +} + +bool UserProfileFileStorage1::load(const std::string & profileName) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (profileName.empty()) { + LOG_DEBUG("empty profileName given"); + return false; + } + + bool result = false; + + if (!loadFromProfiles(profileName)) { + LOG_ERROR("cannot load profile " + profileName + " from 'profiles'." + " Trying from 'backups'."); + File profileDir(getProfilePath(profileName)); + profileDir.remove(); + if (!loadFromBackups(profileName)) { + LOG_ERROR("cannot load profile " + profileName + " from 'backups'."); + profileCannotBeLoadedEvent(*this, profileName); + File backupDir(getBackupProfilePath(profileName)); + backupDir.remove(); + } else { + LOG_INFO("backup recovery successful"); + save(profileName); + profileLoadedFromBackupsEvent(*this, profileName); + result = true; + } + } else { + LOG_DEBUG("profile " + profileName + " loaded successfully"); + result = true; + } + + return result; +} + +bool UserProfileFileStorage1::loadFromProfiles(const std::string & profileName) { + return loadFromDir(getProfilePath(profileName)); +} + +bool UserProfileFileStorage1::loadFromBackups(const std::string & profileName) { + return loadFromDir(getBackupProfilePath(profileName)); +} + +bool UserProfileFileStorage1::loadFromDir(const std::string & path) { + if (!loadProfile(path)) { + LOG_ERROR("cannot loadProfile: " + path); + return false; + } + + IMAccountListFileStorage imAccountListFileStorage(_userProfile.getIMAccountManager()._imAccountList); + if (!imAccountListFileStorage.load(path)) { + LOG_ERROR("cannot load IMAccountList: " + path); + return false; + } + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + ContactListFileStorage1 contactListFileStorage1(*_userProfile._contactList, imAccountList); + if (!contactListFileStorage1.load(path)) { + LOG_ERROR("cannot load ContactList: " + path); + return false; + } + + if (!_userProfile.loadHistory(path)) { + return false; + } + + return true; +} + +bool UserProfileFileStorage1::save(const std::string & profileName) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (profileName.empty()) { + LOG_DEBUG("empty profileName given"); + return false; + } + + std::string path = getProfilePath(profileName); + std::string newPath = getTempProfilePath(profileName); + std::string oldPath = getOldProfilePath(profileName); + + // Backuping the last saved profile + if (File::exists(path)) { + // Copying the profile in a .old folder + File curProfDir(path); + curProfDir.copy(oldPath); + + // Moving the copy in backups/ + File oldProfFile(oldPath); + oldProfFile.move(getBackupProfilePath(profileName), true); + } + //// + + // Removing a possible .new dir in profiles/ + if (File::exists(newPath)) { + File newProfDir(newPath); + newProfDir.remove(); + } + //// + + // Saving profile to .new dir + File::createPath(newPath); + + if (!saveProfile(newPath)) { + return false; + } + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + + IMAccountListFileStorage imAccountListFileStorage(imAccountList); + if (!imAccountListFileStorage.save(newPath)) { + return false; + } + + ContactListFileStorage1 contactListFileStorage1(*_userProfile._contactList, imAccountList); + if (!contactListFileStorage1.save(newPath)) { + return false; + } + + if (!_userProfile.saveHistory(newPath)) { + return false; + } + //// + + // If successful, move the 'dir.new' to 'dir' (overwrite it if exists) + File newProfDir(newPath); + newProfDir.move(path, true); + //// + + return true; +} + +bool UserProfileFileStorage1::loadProfile(const std::string & url) { + bool result = false; + + FileReader file(url + USERPROFILE_FILENAME); + if (file.open()) { + string data = file.read(); + + UserProfileXMLSerializer serializer(_userProfile); + result = serializer.unserialize(data); + } + + return result; +} + +bool UserProfileFileStorage1::saveProfile(const std::string & url) { + FileWriter file(url + USERPROFILE_FILENAME); + UserProfileXMLSerializer serializer(_userProfile); + + file.write(serializer.serialize()); + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage1.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWUSERPROFILEFILESTORAGE1_H +#define OWUSERPROFILEFILESTORAGE1_H + +#include "UserProfileStorage.h" + +#include +#include + +/** + * Saves the UserProfile object, its IMAccountHandler and its ContactList. + * If the save is successful, a backup is made to recover the profile in case + * of problem while saving it. + * + * @ingroup model + * @author Philippe Bernery + */ +class UserProfileFileStorage1 : public UserProfileStorage { +public: + + /** + * Gets the full path to the profile named 'profileName'. + */ + static std::string getProfilePath(const std::string & profileName); + + UserProfileFileStorage1(UserProfile & userProfile); + + virtual ~UserProfileFileStorage1(); + + /** + * Will load the profile named 'profileName'. + * + * If an error occured while trying the profile, + * the method will try to load the profile from + * the backup directory. + * If it works a profileLoadedFromBackupsEvent + * will be emitted. + * If the backup cannot be loaded, it will be erased if it + * exists and a profileCannotBeLoadedEvent will be emitted. + */ + virtual bool load(const std::string & profileName); + + virtual bool save(const std::string & profileName); + +private: + + /** + * Gets the temporary save profile dir. + */ + static std::string getTempProfilePath(const std::string & profileName); + + /** + * Gets the old profile save dir. + */ + static std::string getOldProfilePath(const std::string & profileName); + + /** + * Gets the full path to the backup profile named 'profileName'. + */ + static std::string getBackupProfilePath(const std::string & profileName); + + /** + * Tries to load a profile from the 'profiles' dir. + * + * @return false if error, true otherwise + */ + bool loadFromProfiles(const std::string & profileName); + + /** + * Tries to load a profile from the 'backups' dir. + * + * @return false if error, true otherwise + */ + bool loadFromBackups(const std::string & profileName); + + /** + * Loads a profile from a dir. + * + * @return false if error, true otherwise + */ + bool loadFromDir(const std::string & path); + + /** + * Loads the UserProfile object from url/userprofile.xml + * + * @return false if error, true otherwise + */ + bool loadProfile(const std::string & url); + + /** + * Saves the UserProfile object in url/userprofile.xml + * + * @return false if error, true otherwise + */ + bool saveProfile(const std::string & url); + + /** For thread-safe operations. */ + RecursiveMutex _mutex; + +}; + +#endif //OWUSERPROFILEFILESTORAGE1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,257 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UserProfileFileStorage.h" + +#include +#include +#include +#include +#include +#include + +#include +#include + +using namespace std; + +static const std::string USERPROFILE_FILENAME = "userprofile.xml"; +static const std::string PROFILES_DIR = "profiles/"; +static const std::string BACKUPS_DIR = "backups/"; + +static const std::string IMACCOUNTPARAMETERS_FILENAME = "imaccountparameters.xml"; + +UserProfileFileStorage::UserProfileFileStorage(UserProfile & userProfile) + : UserProfileStorage(userProfile) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + File::createPath(File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR)); +} + +UserProfileFileStorage::~UserProfileFileStorage() { +} + +std::string UserProfileFileStorage::getProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + "/"); +} + +std::string UserProfileFileStorage::getTempProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".new/"); +} + +std::string UserProfileFileStorage::getOldProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".old/"); +} + +std::string UserProfileFileStorage::getBackupProfilePath(const std::string & profileName) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR + profileName + "/"); +} + +bool UserProfileFileStorage::load(const std::string & profileName) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (profileName.empty()) { + LOG_DEBUG("empty profileName given"); + return false; + } + + bool result = false; + + if (!loadFromProfiles(profileName)) { + LOG_ERROR("cannot load profile " + profileName + " from 'profiles'." + " Trying from 'backups'."); + File profileDir(getProfilePath(profileName)); + profileDir.remove(); + if (!loadFromBackups(profileName)) { + LOG_ERROR("cannot load profile " + profileName + " from 'backups'."); + profileCannotBeLoadedEvent(*this, profileName); + File backupDir(getBackupProfilePath(profileName)); + backupDir.remove(); + } else { + LOG_INFO("backup recovery successful"); + save(profileName); + profileLoadedFromBackupsEvent(*this, profileName); + result = true; + } + } else { + LOG_DEBUG("profile " + profileName + " loaded successfully"); + result = true; + } + + return result; +} + +std::string UserProfileFileStorage::loadSystemIMAccountParametersData() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string configDir = config.getResourcesDir() + "/config/"; + std::string imAccountParametersFileName = configDir + "/" + IMACCOUNTPARAMETERS_FILENAME; + FileReader imAccountParametersFile(imAccountParametersFileName); + + if (!imAccountParametersFile.open()) { + LOG_ERROR("Couldn't open " + imAccountParametersFileName); + return std::string(); + } + + return imAccountParametersFile.read(); +} + +bool UserProfileFileStorage::loadFromProfiles(const std::string & profileName) { + return loadFromDir(getProfilePath(profileName)); +} + +bool UserProfileFileStorage::loadFromBackups(const std::string & profileName) { + return loadFromDir(getBackupProfilePath(profileName)); +} + +bool UserProfileFileStorage::loadFromDir(const std::string & path) { + if (!loadProfile(path)) { + LOG_ERROR("cannot loadProfile: " + path); + return false; + } + + IMAccountListFileStorage imAccountListFileStorage(_userProfile.getIMAccountManager()._imAccountList); + imAccountListFileStorage.setIMAccountParametersData(loadSystemIMAccountParametersData()); + if (!imAccountListFileStorage.load(path)) { + LOG_ERROR("cannot load IMAccountList: " + path); + return false; + } + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + ContactListFileStorage contactListFileStorage(*_userProfile._contactList, imAccountList); + if (!contactListFileStorage.load(path)) { + LOG_ERROR("cannot load ContactList: " + path); + return false; + } + + if (!_userProfile.loadHistory(path)) { + return false; + } + + return true; +} + +bool UserProfileFileStorage::save(const std::string & profileName) { + RecursiveMutex::ScopedLock lock(_mutex); + + if (profileName.empty()) { + LOG_DEBUG("empty profileName given"); + return false; + } + + std::string path = getProfilePath(profileName); + std::string newPath = getTempProfilePath(profileName); + std::string oldPath = getOldProfilePath(profileName); + + // Backuping the last saved profile + if (File::exists(path)) { + // Copying the profile in a .old folder + File curProfDir(path); + curProfDir.copy(oldPath); + + // Moving the copy in backups/ + File oldProfFile(oldPath); + oldProfFile.move(getBackupProfilePath(profileName), true); + } + //// + + // Removing a possible .new dir in profiles/ + if (File::exists(newPath)) { + File newProfDir(newPath); + newProfDir.remove(); + } + //// + + // Saving profile to .new dir + File::createPath(newPath); + + if (!saveProfile(newPath)) { + return false; + } + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + + IMAccountListFileStorage imAccountListFileStorage(imAccountList); + if (!imAccountListFileStorage.save(newPath)) { + return false; + } + + ContactListFileStorage contactListFileStorage(*_userProfile._contactList, imAccountList); + if (!contactListFileStorage.save(newPath)) { + return false; + } + + if (!_userProfile.saveHistory(newPath)) { + return false; + } + //// + + // If successful, move the 'dir.new' to 'dir' (overwrite it if exists) + File newProfDir(newPath); + newProfDir.move(path, true); + //// + + return true; +} + +bool UserProfileFileStorage::loadProfile(const std::string & url) { + bool result = false; + + FileReader file(url + USERPROFILE_FILENAME); + if (file.open()) { + string data = file.read(); + + UserProfileXMLSerializer serializer(_userProfile); + result = serializer.unserialize(data); + } + + return result; +} + +bool UserProfileFileStorage::saveProfile(const std::string & url) { + FileWriter file(url + USERPROFILE_FILENAME); + UserProfileXMLSerializer serializer(_userProfile); + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + + file.write(serializer.serialize()); + return true; +} + +bool UserProfileFileStorage::deleteProfile() { + RecursiveMutex::ScopedLock lock(_mutex); + + //find path to profile files + std::string profDirPath = getProfilePath(_userProfile.getName()); + std::string profBackupDirPath = getBackupProfilePath(_userProfile.getName()); + + File profDir(profDirPath); + File profBackupDir(profBackupDirPath); + + //delete profile files (also from backups) + if (!profDir.remove()) + return false; + if (!profBackupDir.remove()) + return false; + + return true; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileFileStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileFileStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,132 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef USERPROFILEFILESTORAGE_H +#define USERPROFILEFILESTORAGE_H + +#include "UserProfileStorage.h" + +#include +#include + +class UserProfileStorage; + +/** + * Saves the UserProfile object, its IMAccountHandler and its ContactList. + * If the save is successful, a backup is made to recover the profile in case + * of problem while saving it. + * + * @ingroup model + * @author Philippe Bernery + */ +class UserProfileFileStorage : public UserProfileStorage { +public: + + /** + * Gets the full path to the profile named 'profileName'. + */ + static std::string getProfilePath(const std::string & profileName); + + UserProfileFileStorage(UserProfile & userProfile); + + virtual ~UserProfileFileStorage(); + + /** + * Will load the profile named 'profileName'. + * + * If an error occured while trying the profile, + * the method will try to load the profile from + * the backup directory. + * If it works a profileLoadedFromBackupsEvent + * will be emitted. + * If the backup cannot be loaded, it will be erased if it + * exists and a profileCannotBeLoadedEvent will be emitted. + */ + virtual bool load(const std::string & profileName); + + virtual bool save(const std::string & profileName); + + /** + *deletes profile files from both "profiles" and "backups" directory + */ + virtual bool deleteProfile(); + /** + * Loads the system IMAccountParameters data, this is used internally and + * when creating a new IMAccount + */ + static std::string loadSystemIMAccountParametersData(); + +private: + + /** + * Gets the temporary save profile dir. + */ + static std::string getTempProfilePath(const std::string & profileName); + + /** + * Gets the old profile save dir. + */ + static std::string getOldProfilePath(const std::string & profileName); + + /** + * Gets the full path to the backup profile named 'profileName'. + */ + static std::string getBackupProfilePath(const std::string & profileName); + + /** + * Tries to load a profile from the 'profiles' dir. + * + * @return false if error, true otherwise + */ + bool loadFromProfiles(const std::string & profileName); + + /** + * Tries to load a profile from the 'backups' dir. + * + * @return false if error, true otherwise + */ + bool loadFromBackups(const std::string & profileName); + + /** + * Loads a profile from a dir. + * + * @return false if error, true otherwise + */ + bool loadFromDir(const std::string & path); + + /** + * Loads the UserProfile object from url/userprofile.xml + * + * @return false if error, true otherwise + */ + bool loadProfile(const std::string & url); + + /** + * Saves the UserProfile object in url/userprofile.xml + * + * @return false if error, true otherwise + */ + bool saveProfile(const std::string & url); + + /** For thread-safe operations. */ + RecursiveMutex _mutex; + +}; + +#endif //USERPROFILEFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfile.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,557 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWUSERPROFILE_H +#define OWUSERPROFILE_H + +#include "Profile.h" +#include "IMAccountManager.h" + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +class ChatHandler; +class CoIpManager; +class ConnectHandler; +class Contact; +class ContactList; +class History; +class IMAccount; +class IMAccountManager; +class IMContactListHandler; +class IPhoneLine; +class NetworkObserver; +class PhoneCall; +class PresenceHandler; +class WsInfo; +class WsSms; +class WsSoftUpdate; + +/** + * Handle the profile of a User. + * + * @author Philippe Bernery + */ +class UserProfile : public Profile, public Trackable { + friend class UserProfileFileStorage; + friend class UserProfileFileStorage1; + friend class UserProfileXMLSerializer; + friend class Connect; +public: + /** + * Login procedure is done, event with the procedure result. + * + * @see SipAccount::loginStateChangedEvent + */ + Event loginStateChangedEvent; + + /** + * Network event while trying to connect a SipAccount. + * + * @see SipAccount::networkDiscoveryStateChangedEvent + */ + Event< void (SipAccount & sender, SipAccount::NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; + + /** + * Emitted when SipAccount has been connected + */ + Event sipAccountConnectedEvent; + + /** + * Emitted when SipAccount failed to connect + */ + Event sipAccountConnectionFailedEvent; + + /** + * The history has been loaded. + * + * @param sender this class + * @param History History loaded + */ + Event historyLoadedEvent; + + /** + * A PhoneLine has been created. + * + * @param sender this class + * @param phoneLine PhoneLine created + */ + Event phoneLineCreatedEvent; + + /** + * Sms has been created. + * + * @param sender this class + * @param sms Sms created + */ + Event wsSmsCreatedEvent; + + /** + * SoftUpdate has been created. + * + * @param sender this class + * @param sms Sms created + */ + Event wsSoftUpdateCreatedEvent; + + /** + * WsInfo has been created. + * + * @param sender this class + * @param wsInfo WsInfo created + */ + Event wsInfoCreatedEvent; + + /** + * WsCallForward has been created. + * + * @param sender this class + * @param wsCallForward WsCallForward created + */ + Event wsCallForwardCreatedEvent; + + UserProfile(); + + virtual ~UserProfile(); + + /** + * Initializes the UserProfile. + */ + void init(); + + /** + * Return the profile directory + * @return profile directory. + */ + std::string getProfileDirectory() const; + + /** + * Connects all this UserProfile accounts (SipAccount and IMAccount) set + * to be automatically connected. + */ + void connect(); + + /** + * Disconnects all accounts. + */ + void disconnect(); + + /** List of IPhoneLine. */ + typedef List < IPhoneLine * > PhoneLines; + + /** + * Gets the list of PhoneLine. + * + * Only one PhoneLine is active at a time. + * + * @return the list of PhoneLine + */ + const PhoneLines & getPhoneLineList() const { + return _phoneLineList; + } + + /** + * Gets the active/current PhoneLine. + * + * Only one PhoneLine is active at a time + * + * @return the active PhoneLine + */ + IPhoneLine * getActivePhoneLine() const { + return _activePhoneLine; + } + + /** + * Gets the active phone call. + * + * Used for playing DTMF. + * + * @return active phone call or NULL + */ + PhoneCall * getActivePhoneCall() const; + + /** Gets the ConnectHandler reference. */ + ConnectHandler & getConnectHandler() { return *_connectHandler; } + + /** Gets the PresenceHandler reference. */ + PresenceHandler & getPresenceHandler() { return *_presenceHandler; } + + /** Gets the ChatHandler reference. */ + ChatHandler & getChatHandler() { return *_chatHandler; } + + /** + * Gets the IMAccountManager reference. Here we can safely derefence + * the pointer as the IMAccountHandler is constructed in + * the UserProfile constructor. + */ + IMAccountManager & getIMAccountManager() { return *_imAccountManager; } + + /** Gets the IMContactListHandler reference. */ + IMContactListHandler & getIMContactListHandler() { return *_imContactListHandler; } + + /** Gets the ContactList reference. */ + ContactList & getContactList() { return *_contactList; } + + /** + * Gets the History reference. Here we can safely derefence the pointer + * as the History is constructed in the UserProfile constructor. + */ + History & getHistory() { return *_history; } + + /** Gets the WsInfo pointer. */ + WsInfo * getWsInfo() { return _wsInfo; } + + /** Gets the QuteCom update WebService pointer. */ + WsSoftUpdate * getWsSoftUpdate() { return _wsSoftUpdate; } + + /** Gets the SMS WebService pointer. */ + WsSms * getWsSms() { return _wsSms; } + + /** Gets the WsCallForward WebService pointer. */ + WsCallForward * getWsCallForward() { return _wsCallForward; } + + /** Gets the CoIpManager. */ + CoIpManager & getCoIpManager() { return *_coIpManager; } + + /** True if history has been loaded. */ + bool isHistoryLoaded() const { + return _historyLoaded; + } + + /** + * Loads the history. + */ + bool loadHistory(const std::string & path); + + /** + * Saves the history. + */ + bool saveHistory(const std::string & path); + + /** + * Sets the SipAccount of this UserProfile. + * + * The SipAccount os copied internally. + * + * @param SipAccount the SipAccount to set + */ + void setSipAccount(const SipAccount & sipAccount, bool needInitialization = true); + + /** + * Return true if a QuteComAccount is active. + * + * @return true if a QuteComAccount is active + */ + bool hasQuteComAccount() const; + + /** + * Return true if a SipAccount is active. + * + * @return true if a SipAccount is active + */ + bool hasSipAccount() const; + + /** + * Gets the SipAccount. + * + * @return the SipAccount + */ + SipAccount * getSipAccount() const { + return _sipAccount; + } + + /** + * Gets the QuteComAccount. + * + * @return the QuteComAccount + */ + QuteComAccount * getQuteComAccount() const { + if (hasQuteComAccount()) { + return dynamic_cast(_sipAccount); + } else { + return NULL; + } + } + + /** + * Adds an IMAccount to this UserProfile. + * This method should currently not be called to add a QuteCom + * IMAccount. A QuteCom IMAccount is created internally when setQuteComAccount + * is called. There is an assert to prevent that. + * + * The IMAccount is copied internally. + * + * @param imAccount the IMAccount to add + */ + void addIMAccount(const IMAccount & imAccount); + + /** + * Removes an IMAccount from this UserProfile. + * + * An IMAccount of type QuteCom must currently not be removed by this method. + * setQuteComAccount must be used for this purpose. + * There is an assert to prevent that. + * + * @param imAccount the IMAccount to remove + */ + void removeIMAccount(const IMAccount & imAccount); + + /** + * Updates an IMAccount from this UserProfile. + * + * An IMAccount of type QuteCom must currently not be removed by this method. + * setQuteComAccount must be used for this purpose. + * There is an assert to prevent that. + * + * @param imAccount the IMAccount to remove + */ + void updateIMAccount(const IMAccount & imAccount); + + /** + * @see IPhoneLine::makeCall() + */ + EnumMakeCallError::MakeCallError makeCall(Contact & contact); + + /** + * @see IPhoneLine::makeCall() + */ + EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber); + + /** + * Start a instant messaging with a Contact. + * + * @param contact the Contact to talk to + */ + void startIM(Contact & contact); + + /** + * Changes alias of this user. + * + * @param alias the alias to set + * @param imAccount the IMAccount to apply the alias to; + * pass NULL to set the alias to all IMAccount + */ + void setAlias(const std::string & alias, IMAccount * imAccount); + + /** + * Changes icon of this user. + * + * @param icon the icon to set + * @param imAccount the IMAccount to apply the icon to + * pass NULL to set the icon to all IMAccount + */ + void setIcon(const OWPicture & icon, IMAccount * account); + + /** + * Gets the PresenceState of this UserProfile. + */ + EnumPresenceState::PresenceState getPresenceState() const; + + /** + * Checks if at least one IMAccount is in connected state. + * + * @return true if at least 1 IMAccount is connected; false otherwise + */ + bool isConnected() const; + + /** + * Changes the PresenceState of an IMAccount. + * + * @param presenceState the PresenceState to set + * @param imAccountId the id of the IMAccount to apply the PresenceState. + */ + void setPresenceState(EnumPresenceState::PresenceState presenceState, std::string imAccountId); + + /** + * Changes the PresenceState of all IMAccount. + * + * @param presenceState the PresenceState to set + */ + void setAllPresenceState(EnumPresenceState::PresenceState presenceState); + + /** + * Gets the name of this UserProfile. + * + * The name is computed from the SipAccount. "Default" is returned if no + * SipAccount is set. There should be only one Default UserProfile at + * a time. + */ + std::string getName() const { + return _name; + } + +private: + + // Inherited from Profile + virtual void setQuteComId(const std::string & /*qutecomPhoneId*/) {} + virtual std::string getQuteComId() const { return String::null; } + //// + + /** + * @see WsCallForward::wsCallForwardEvent + */ + void wsCallForwardEventHandler(WsCallForward & sender, int id, WsCallForward::WsCallForwardStatus status); + + /** + * Handles SipAccount::loginStateChangedEvent. + */ + void loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state); + void loginStateChangedEventHandlerThreadSafe(SipAccount & sender, EnumSipLoginState::SipLoginState state); + + /** + * Handles SipAccount::networkDiscoveryStateChangedEvent + */ + void networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state); + + /** + * Compute the name of the UserProfile from the SipAccount + * and set the _name variable. + */ + void computeName(); + + /* Inherited from Profile */ + void setAlias(const std::string & alias) { _alias = alias; }; + + void setIcon(const OWPicture & icon) { setIcon(icon, NULL); }; + /**/ + + /** + * Actually adds an IMAccount. Used internally and by addIMAccount after + * checking the given IMAccount. + */ + void _addIMAccount(const IMAccount & imAccount); + + /** + * Actually removes an IMAccount. Used internally and by removeIMAccount after + * checking the given IMAccount. + */ + void _removeIMAccount(const IMAccount & imAccount); + + /** + * Connect all IMAccounts. + */ + void connectIMAccounts(); + + /** + * Disconnect all IMAccounts. + */ + void disconnectIMAccounts(); + + /** + * Connect all SipAccounts. + */ + bool connectSipAccounts(); + + /** + * Disconnect all SipAccounts. + * + * @param force if true, disconnect without doing any transactions + */ + void disconnectSipAccounts(bool force = false); + + /** + * Initializes the SipAccount. + */ + void sipAccountInit(); + + /** + * Creates and adds a new PhoneLine given a SipAccount. + * + * This is a helper method. + * + * @param account SipAccount associated with the newly created PhoneLine + */ + bool addPhoneLine(SipAccount & account); + + /** + * find the qutecom phone line + */ + IPhoneLine * findQuteComLine(); + + /** The active/current PhoneLine. */ + IPhoneLine * _activePhoneLine; + + /** The active PhoneCall. */ + PhoneCall * _activePhoneCall; + + /** List of PhoneLine. */ + PhoneLines _phoneLineList; + + /** History. */ + History * _history; + + /** QuteCom update system. */ + WsSoftUpdate * _wsSoftUpdate; + + /** SMS. */ + WsSms * _wsSms; + + /** WsInfo. */ + WsInfo * _wsInfo; + + /** WsCallForward. */ + WsCallForward * _wsCallForward; + + //TODO: create a list of SipAccount + SipAccount * _sipAccount; + + RecursiveMutex _mutex; + + /** + * True if the UserProfile must connect after intialization of the + * SipAccount + */ + bool _sipAccountMustConnectAfterInit; + + bool _sipAccountReadyToConnect; + + bool _historyLoaded; + + IMAccountManager * _imAccountManager; + + IMContactListHandler * _imContactListHandler; + + ConnectHandler * _connectHandler; + + PresenceHandler * _presenceHandler; + + ChatHandler * _chatHandler; + + ContactList * _contactList; + + CoIpManager * _coIpManager; + + /** Name of the UserProfile. */ + std::string _name; +}; + +#endif //OWUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileHandler.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,383 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UserProfileHandler.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +UserProfileHandler::UserProfileHandler() { + _currentUserProfile = NULL; + _desiredUserProfile = NULL; + + cleanupUserProfileDirectories(); + + _saveTimerRunning = false; + _autoSave = true; + _saveTimer.lastTimeoutEvent += + boost::bind(&UserProfileHandler::saveTimerLastTimeoutEventHandler, this, _1); +} + +UserProfileHandler::~UserProfileHandler() { +} + +void UserProfileHandler::uninit() { + OWSAFE_DELETE(_desiredUserProfile); + + { + RecursiveMutex::ScopedLock lock(_mutex); + _saveTimerRunning = false; + _saveTimer.stop(); + } + + if (_currentUserProfile) { + saveUserProfile(*_currentUserProfile); + setLastUsedUserProfile(*_currentUserProfile); + WsUrl::setQuteComAccount(NULL); + + OWSAFE_DELETE(_currentUserProfile); + + } + + uninitExtLibraries(); +} + +StringList UserProfileHandler::getUserProfileNames(bool onlyRealDir) { + StringList result; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + File path(File::convertPathSeparators(config.getConfigDir() + "profiles/")); + result = path.getDirectoryList(); + + if (onlyRealDir) { + StringList::iterator begin = result.begin(); + for (int interator = result.size(); --interator >= 0; ) { + if (String(result[interator]).endsWith(".new") || String(result[interator]).endsWith(".old")) { + result.erase(begin + interator); + } + } + } + + return result; +} + +UserProfile * UserProfileHandler::getUserProfile(const std::string & name) { + UserProfile * result = new UserProfile(); + UserProfileFileStorage userProfileStorage(*result); + userProfileStorage.profileLoadedFromBackupsEvent += profileLoadedFromBackupsEvent; + userProfileStorage.profileCannotBeLoadedEvent += profileCannotBeLoadedEvent; + if (!userProfileStorage.load(name)) { + OWSAFE_DELETE(result); + } + + return result; +} + +bool UserProfileHandler::LoadUserProfileFromName(UserProfile * userprofile, const std::string & name) { + UserProfileFileStorage userProfileStorage(*userprofile); + if (userProfileStorage.load(name)) { + return true; + } + return false; +} + +bool UserProfileHandler::userProfileExists(const std::string & name) { + bool result = false; + + if (!name.empty() && File::exists(UserProfileFileStorage::getProfilePath(name))) { + result = true; + } + + return result; +} + +void UserProfileHandler::setCurrentUserProfile(const std::string & name, const SipAccount & sipAccount) { + + RecursiveMutex::ScopedLock lock(_mutex); + + UserProfile * result = getUserProfile(name); + + // Check if the desired UserProfile is different from the current UserProfile + // and check if the QuteComAccount of the current UserProfile is different from the given QuteComAccount + // (if so the QuteComAccount (only 'password' and 'keep password' members) will be updated). + if (!_currentUserProfile || + (_currentUserProfile && + ((_currentUserProfile->getName() != name) || + ((sipAccount.getUserPassword() != result->getSipAccount()->getUserPassword()) || + (sipAccount.isPasswordRemembered() != result->getSipAccount()->isPasswordRemembered()))))) { + + if (result) { + // If the SipAccount is not empty, we update the one in UserProfile + // This can happen if the password has been changed + + if (!sipAccount.isEmpty() ) { + + // to be virtual ? + switch(sipAccount.getType()) { + case SipAccount::SipAccountTypeBasic: { + + SipAccount * actSipAccount = result->getSipAccount(); + if (actSipAccount) { + + actSipAccount->setRegisterServerHostname(sipAccount.getRegisterServerHostname()); + actSipAccount->setRegisterServerPort(sipAccount.getRegisterServerPort()); + actSipAccount->setSIPProxyServerHostname(sipAccount.getSIPProxyServerHostname()); + actSipAccount->setSIPProxyServerPort(sipAccount.getSIPProxyServerPort()); + actSipAccount->setDisplayName(sipAccount.getDisplayName()); + actSipAccount->setIdentity(sipAccount.getIdentity()); + actSipAccount->setUsername(sipAccount.getUsername()); + actSipAccount->setPassword(sipAccount.getPassword()); + actSipAccount->setRealm(sipAccount.getRealm()); + actSipAccount->setVisibleName(sipAccount.getVisibleName()); + actSipAccount->enablePIM(sipAccount.isPIMEnabled()); + } else { + SipAccount mySipAccount = sipAccount; + result->setSipAccount(mySipAccount, false); + } + } + break; + case SipAccount::SipAccountTypeQuteCom: { + + const QuteComAccount & refQuteComAccount = dynamic_cast(sipAccount); + QuteComAccount * actQuteComAccount = result->getQuteComAccount(); + + if (actQuteComAccount) { + actQuteComAccount->setQuteComLogin(refQuteComAccount.getQuteComLogin()); + actQuteComAccount->setQuteComPassword(refQuteComAccount.getQuteComPassword()); + } else { + QuteComAccount myQuteComAccount = refQuteComAccount; + result->setSipAccount(myQuteComAccount, false); + } + } + break; + } + } + + if (_currentUserProfile) { + LOG_DEBUG("UserProfile will change"); + _desiredUserProfile = result; + currentUserProfileWillDieEvent(*this); + } else { + LOG_DEBUG("No current UserProfile set. Change now"); + _currentUserProfile = result; + initializeCurrentUserProfile(); + } + } else { + // log off + if (_currentUserProfile && name.empty()) { + + _saveTimerRunning = false; + _saveTimer.stop(); + + _desiredUserProfile = NULL; + currentUserProfileWillDieEvent(*this); + // when name is empty or do not match any profile + } else { + noCurrentUserProfileSetEvent(*this); + } + } + } +} + +void UserProfileHandler::setLastUsedUserProfile(const UserProfile & userProfile) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); +} + +void UserProfileHandler::currentUserProfileReleased() { + if (_currentUserProfile) { + saveUserProfile(*_currentUserProfile); + WsUrl::setQuteComAccount(NULL); + OWSAFE_DELETE(_currentUserProfile); + + uninitExtLibraries(); + } + + if (_desiredUserProfile) { + // If we want to change the UserProfile + LOG_DEBUG("Old UserProfile killed. Setting the new one"); + _currentUserProfile = _desiredUserProfile; + _desiredUserProfile = NULL; + initializeCurrentUserProfile(); + } +} + +void UserProfileHandler::initializeCurrentUserProfile() { + _currentUserProfile->profileChangedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + + History& history = _currentUserProfile->getHistory(); + history.mementoUpdatedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + history.mementoAddedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + history.mementoRemovedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + + ContactList& contactList = _currentUserProfile->getContactList(); + contactList.contactGroupAddedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactGroupRemovedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactGroupRenamedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactAddedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactRemovedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactMovedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + contactList.contactChangedEvent += + boost::bind(&UserProfileHandler::profileChangedEventHandler, this); + + _currentUserProfile->sipAccountConnectedEvent += + boost::bind(&UserProfileHandler::sipAccountConnectedEventHandler, this); + _currentUserProfile->sipAccountConnectionFailedEvent += + boost::bind(&UserProfileHandler::sipAccountConnectionFailedEventHandler, this, _1); + _currentUserProfile->networkDiscoveryStateChangedEvent += networkDiscoveryStateChangedEvent; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + initExtLibraries(File::convertPathSeparators(config.getConfigDir() + "profiles/") + _currentUserProfile->getName()); + _currentUserProfile->init(); +} + +void UserProfileHandler::init() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string profileName = config.getProfileLastUsedName(); + + setCurrentUserProfile(profileName, SipAccount::empty); +} + +void UserProfileHandler::saveUserProfile(UserProfile & userProfile) { + if (_autoSave && &userProfile) { + UserProfileFileStorage userProfileStorage(userProfile); + userProfileStorage.save(userProfile.getName()); + } +} + +void UserProfileHandler::profileChangedEventHandler() { + RecursiveMutex::ScopedLock lock(_mutex); + + if (!_saveTimerRunning) { + _saveTimerRunning = true; + _saveTimer.start(5000, 5000, 1); + } +} + +void UserProfileHandler::saveTimerLastTimeoutEventHandler(Timer & sender) { + { + RecursiveMutex::ScopedLock lock(_mutex); + if (!_saveTimerRunning) { + LOG_WARN("Intercepted saveTimerLastTimeoutEventHandler"); + return; + } + } + + if (_currentUserProfile) { + saveUserProfile(*_currentUserProfile); + } + + { + RecursiveMutex::ScopedLock lock(_mutex); + _saveTimerRunning = false; + } +} + +void UserProfileHandler::sipAccountConnectedEventHandler() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&UserProfileHandler::sipAccountConnectedEventHandlerThreadSafe, this)); + + QuteCom::getInstance().postEvent(event); +} + +void UserProfileHandler::sipAccountConnectedEventHandlerThreadSafe() { + if(_currentUserProfile) + { + saveUserProfile(*_currentUserProfile); + + if (_currentUserProfile->hasQuteComAccount()) { + WsUrl::setQuteComAccount(_currentUserProfile->getQuteComAccount()); + } + + userProfileInitializedEvent(*this, *_currentUserProfile); + + setLastUsedUserProfile(*_currentUserProfile); + } +} + +void UserProfileHandler::sipAccountConnectionFailedEventHandler(EnumSipLoginState::SipLoginState error) { + typedef ThreadEvent1 MyThreadEvent; + MyThreadEvent * event = + new MyThreadEvent(boost::bind(&UserProfileHandler::sipAccountConnectionFailedEventHandlerThreadSafe, this, _1), + error); + + QuteCom::getInstance().postEvent(event); +} + +void UserProfileHandler::sipAccountConnectionFailedEventHandlerThreadSafe(EnumSipLoginState::SipLoginState error) { + LOG_ERROR("error: %d", error); + SipAccount * sipaccount = _currentUserProfile->getSipAccount()->clone(); + OWSAFE_DELETE(_currentUserProfile); + uninitExtLibraries(); + sipAccountConnectionFailedEvent(*sipaccount, error); + OWSAFE_DELETE(sipaccount); +} + +void UserProfileHandler::cleanupUserProfileDirectories() { + + StringList userProfiles = getUserProfileNames(); + StringList::iterator it; + for (it = userProfiles.begin(); it != userProfiles.end(); it++) { + + if (String(*it).endsWith(".new") || String(*it).endsWith(".old")) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + File profileDirectory(File::convertPathSeparators(config.getConfigDir() + "profiles/") + (*it)); + profileDirectory.remove(); + } + } +} + +void UserProfileHandler::initExtLibraries(const std::string & pathToProfile) { + IMWrapperFactory::getFactory().init(pathToProfile); +} + +void UserProfileHandler::uninitExtLibraries() { + IMWrapperFactory::getFactory().terminate(); +} + +void UserProfileHandler::deleteUserProfile(UserProfile & userProfile) { + if (&userProfile) { + UserProfileFileStorage userProfileFileStorage(userProfile); + userProfileFileStorage.deleteProfile(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileHandler.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,258 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWUSERPROFILEHANDLER_H +#define OWUSERPROFILEHANDLER_H + +#include + +#include +#include +#include +#include +#include + +class Profile; +class UserProfile; +class UserProfileStorage; +class QuteComAccount; +class SipAccount; +class QuteCom; + +/** + * Manages the UserProfiles. + * + * @author Philippe Bernery + */ +class UserProfileHandler : public Trackable { +public: + + /** + * No current UserProfile has been set. This can happen at the first launch + * of the softphone when no UserProfile has been set. + * + * @param sender this class + */ + Event noCurrentUserProfileSetEvent; + + /** + * Emitted when a UserProfile will be destroyed. + * + * After the event, the old UserProfile reference will be invalidated. + * + * @param sender this class + */ + Event currentUserProfileWillDieEvent; + + /** + * A UserProfile has been set. + * + * @param sender this class + * @param userProfile the set UserProfile + */ + Event userProfileInitializedEvent; + + /** + * Emitted when the requested SipAccount connection failed. + * + * @param account SipAccount + * @param state Error type + */ + Event sipAccountConnectionFailedEvent; + + /** + * @see UserProfile::networkDiscoveryStateChangedEvent + */ + Event< void (SipAccount & sender, SipAccount::NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; + + /** + * @see UserProfileStorage::profileLoadedFromBackupsEvent + */ + Event < void (UserProfileStorage &sender, std::string profileName) > profileLoadedFromBackupsEvent; + + /** + * @see UserProfileStorage::profileCannotBeLoadedEvent + */ + Event < void (UserProfileStorage &sender, std::string profileName) > profileCannotBeLoadedEvent; + + /** + * Gets the names of existing user profiles. + * + * These UserProfiles can then be loaded with getUserProfile. + * + * @param onlyRealDir if false can return directoru=y ending with ".new" or ".old" + * + * @return vector of UserProfiles + */ + static StringList getUserProfileNames(bool onlyRealDir = false); + + UserProfileHandler(); + + ~UserProfileHandler(); + + /** + * Initializes the UserPofileHandler. + * + * During initialization, the UserProfileHandler will check for the last + * used UserProfile. If no UserProfile has been used, the + * noCurrentUserProfileSetEvent will be emitted. + */ + void init(); + + /** + * Sets the current UserProfile. + * + * A non empty SipAccount can be given in parameter. It will be used + * to update password and remember Password attributes of the UserProfile. + * + * @param name the name of the current UserProfile to set + * @param qutecomAccount the QuteComAccount that will update the UserProfile + */ + void setCurrentUserProfile(const std::string & name, const SipAccount & sipAccount); + + /** + * @return the current userProfile + */ + UserProfile * getCurrentUserProfile() const { + return _currentUserProfile; + } + + /** + * Check if a UserProfile exists. + * + * @param name name of the UserProfile to check + * @return true if a UserProfile with the given name exists + */ + bool userProfileExists(const std::string & name); + + /** + * Must be called when the current UserProfile is released and can be + * destroyed. + */ + void currentUserProfileReleased(); + + /** + * Gets a UserProfile. + * + * Used by model and control. Must not be used by presentation + * + * @param name the name of the desired UserProfile + * @return the UserProfile or NULL if no UserProfile with the given found + */ + UserProfile * getUserProfile(const std::string & name); + + /** + * Loads an UserProfile + * + * @param userprofile the UserProfile that is to be loaded + * @param name the name of the desired UserProfile + * @return true if the UserProfile have been correctly loadded + */ + bool LoadUserProfileFromName(UserProfile * userprofile, const std::string & name); + + /** + * Enable/disable autosave. + * @param enable if True autosave if activated. + */ + void enableAutoSave(bool enable) { + _autoSave = enable; + } + + /** + * Destroy the UserProfile and uninitialize external libraries + */ + void uninit(); + + /** + * Deletes UserProfile + *@param userProfile the UserProfile to delete + */ + void deleteUserProfile(UserProfile & userProfile); + +private: + + /** + * Initializes the current UserProfile. + */ + void initializeCurrentUserProfile(); + + /** + * Sets the last used UserProfile. + * + * @param the last used UserProfile + */ + void setLastUsedUserProfile(const UserProfile & userProfile); + + /** + * Saves the UserProfile. + * + * @param userProfile the UserProfile to save + */ + void saveUserProfile(UserProfile & userProfile); + + /* + * @see Profile::profileChangedEvent + */ + void profileChangedEventHandler(); + + /** + * @see Timer::lastTimeoutEvent + */ + void saveTimerLastTimeoutEventHandler(Timer & sender); + + /** + * @see UserProfile::sipAccountValidityEvent + */ + void sipAccountConnectedEventHandler(); + void sipAccountConnectedEventHandlerThreadSafe(); + void sipAccountConnectionFailedEventHandler(EnumSipLoginState::SipLoginState); + void sipAccountConnectionFailedEventHandlerThreadSafe(EnumSipLoginState::SipLoginState); + + /** + * Remove temporary profiles (.new directories) + */ + void cleanupUserProfileDirectories(); + + /** + * Initializes external libraries (PhApi and Gaim). + */ + void initExtLibraries(const std::string & pathToProfile); + + /** + * Uninitializes external libraries (PhApi and Gaim). + */ + void uninitExtLibraries(); + + RecursiveMutex _mutex; + + UserProfile * _currentUserProfile; + + UserProfile * _desiredUserProfile; + + /** True if _saveTimer is running. */ + bool _saveTimerRunning; + + /** True if autosave is enabled (default) */ + bool _autoSave; + + Timer _saveTimer; +}; + +#endif //OWUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileStorage.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileStorage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileStorage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef USERPROFILESTORAGE_H +#define USERPROFILESTORAGE_H + +#include + +#include + +class UserProfile; + +/** + * UserProfile storage. + * + * @ingroup model + * @author Philippe Bernery + */ +class UserProfileStorage : public Storage { +public: + + /** + * Emitted when loading the profile failed and getting the backup + * worked. + */ + Event < void (UserProfileStorage & sender, std::string profileName) > profileLoadedFromBackupsEvent; + + /** + * Emitted when loading the profile failed with both normal and backup way. + */ + Event < void (UserProfileStorage & sender, std::string profileName) > profileCannotBeLoadedEvent; + + UserProfileStorage(UserProfile & userProfile) + : _userProfile(userProfile) { } + + virtual ~UserProfileStorage() { } + +protected: + + UserProfile & _userProfile; +}; + +#endif //USERPROFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.cpp qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,107 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "UserProfileXMLSerializer.h" + +#include +#include +#include +#include + +#include "UserProfile.h" + +#include + +UserProfileXMLSerializer::UserProfileXMLSerializer(UserProfile & userProfile) +: ProfileXMLSerializer(userProfile), _userProfile(userProfile) { +} + +std::string UserProfileXMLSerializer::serialize() { + std::string result; + + result += "\n"; + + result += ProfileXMLSerializer::serialize(); + + if (_userProfile.hasQuteComAccount()) { + QuteComAccountXMLSerializer wserializer(*(dynamic_cast(_userProfile.getSipAccount()))); + result += wserializer.serialize(); + } else { + //for now only a "generic" sip account + SipAccountXMLSerializer sserializer(*_userProfile.getSipAccount()); + result += sserializer.serialize(); + } + + result += "\n"; + + return result; +} + +bool UserProfileXMLSerializer::unserialize(const std::string & data) { + + bool result = false; + TiXmlDocument doc; + + doc.Parse(data.c_str()); + + TiXmlHandle docHandle(&doc); + TiXmlHandle userprofile = docHandle.FirstChild("userprofile"); + + result = ProfileXMLSerializer::unserializeContent(userprofile); + if (result) { + // Retrieving qutecomaccount + TiXmlNode * qutecomaccount = userprofile.FirstChild("qutecomaccount").Node(); + if (qutecomaccount) { + TiXmlElement * qutecomaccountElt = qutecomaccount->ToElement(); + std::string qutecomaccountData; + qutecomaccountData << *qutecomaccountElt; + QuteComAccount qutecomAccount; + QuteComAccountXMLSerializer wserializer(qutecomAccount); + result = wserializer.unserialize(qutecomaccountData); + //if (result && !qutecomAccount.getQuteComLogin().empty()) { + if (result && !qutecomAccount.isEmpty()) { + _userProfile._sipAccount = new QuteComAccount(qutecomAccount); + _userProfile.computeName(); + _userProfile._sipAccount->setUserProfileName(_userProfile.getName()); + } + return result; + } + ///// + + // Retrieving "generic" sipaccount + TiXmlNode * sipaccount = userprofile.FirstChild("sipaccount").Node(); + if (sipaccount) { + TiXmlElement * sipaccountElt = sipaccount->ToElement(); + std::string sipaccountData; + sipaccountData << *sipaccountElt; + SipAccount sipAccount; + SipAccountXMLSerializer sserializer(sipAccount); + result = sserializer.unserialize(sipaccountData); + if (result && !sipAccount.isEmpty()) { + _userProfile._sipAccount = new SipAccount(sipAccount); + _userProfile.computeName(); + _userProfile._sipAccount->setUserProfileName(_userProfile.getName()); + } + return result; + } + ///// + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.h qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/profile/UserProfileXMLSerializer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef USERPROFILEXMLSERIALIZER_H +#define USERPROFILEXMLSERIALIZER_H + +#include + +#include + +class UserProfile; + +/** + * Serialize a UserProfile object. + * + * @author Philippe Bernery + */ +class UserProfileXMLSerializer : public ProfileXMLSerializer { +public: + + UserProfileXMLSerializer(UserProfile & userProfile); + + virtual std::string serialize(); + + virtual bool unserialize(const std::string & data); + +private: + + UserProfile & _userProfile; + +}; + +#endif //USERPROFILEXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/QuteCom.cpp qutecom-2.2+dfsg1/qutecom/src/model/QuteCom.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/QuteCom.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/QuteCom.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,175 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteCom.h" + +#include +#include + +#include "commandserver/CommandServer.h" +#include "config/Config.h" +#include "config/ConfigManager.h" +#include "config/ConfigManagerFileStorage.h" +#include "dtmf/DtmfThemeManager.h" +#include "network/NetworkObserver.h" +#include "network/NetworkProxyDiscovery.h" + +#include "QuteComBuildId.h" + +#include +#include +#include +#include +#include +#include + +#include + +QuteCom::QuteCom() { + + _enableSerialization = true; + + //set HttpRequest User Agent + std::stringstream ss; + ss << QuteComBuildId::getSoftphoneName(); + ss << "-"; + ss << QuteComBuildId::getVersion(); + ss << "-"; + ss << QuteComBuildId::getBuildId(); + ss << "-"; + ss << QuteComBuildId::getSvnRevision(); + HttpRequest::setUserAgent(ss.str()); + //// + + //Creating instance of NetworkObserver + NetworkObserver::getInstance(); + //// + + //Creating instance of NetworkProxyDiscovery + NetworkProxyDiscovery::getInstance(); + //// + + //Initialize libwebcam for the model thread. + WebcamDriver::apiInitialize(); + //// + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //Binding events + config.valueChangedEvent += boost::bind(&QuteCom::valueChangedEventHandler, this, _1); + //// + + //Creating the UserProfileHandler instance + _userProfileHandler = new UserProfileHandler(); + //// + + //Creating instance of CommandServer + CommandServer::getInstance(*this); + //// +} + +void QuteCom::exitAfterTimeout() { + exitEvent(*this); +} + +QuteCom::~QuteCom() { + // make sure QuteCom::run() has terminated + Thread::terminate(); // should not be needed, but let's avoid potential deadlock + Thread::join(); + + //Deleting created objects + OWSAFE_DELETE(_userProfileHandler); + OWSAFE_DELETE(_dtmfThemeManager); + //// + saveConfiguration(); +} + +void QuteCom::init() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //DTMFThemeManager + _dtmfThemeManager = new DtmfThemeManager(*this, config.getAudioSmileysDir()); + //Sends the DtmfThemeManager creation event + dtmfThemeManagerCreatedEvent(*this, *_dtmfThemeManager); + + _userProfileHandler->init(); + + //initFinishedEvent + initFinishedEvent(*this); +} + +void QuteCom::run() { + init(); + + LOG_DEBUG("model thread is ready for events"); + + runEvents(); + + _userProfileHandler->uninit(); +} + +void QuteCom::terminate() { + Thread::terminate(); +} + +void QuteCom::prepareToTerminate() { + /** + * Set up a timeout triggered if SIP registering is too long + * so that closing QuteCom is not too long. + */ + static Timer shutdownTimeout; + shutdownTimeout.timeoutEvent += boost::bind(&QuteCom::exitAfterTimeout, this); + shutdownTimeout.start(3000, 3000); +} + +void QuteCom::saveConfiguration() { + + if (_enableSerialization) { + ConfigManagerFileStorage configManagerStorage(ConfigManager::getInstance()); + configManagerStorage.save(); + } +} + +void QuteCom::valueChangedEventHandler(const std::string & key) { + saveConfiguration(); +} + +CoIpManager * QuteCom::getCoIpManager() const { + CoIpManager *result = NULL; + UserProfile *userProfile = _userProfileHandler->getCurrentUserProfile(); + + if (userProfile) { + result = &userProfile->getCoIpManager(); + } + + return result; +} + +void QuteCom::enableSerialization(bool enable) { + _enableSerialization = enable; + _userProfileHandler->enableAutoSave(enable); +} + +void QuteCom::setStartupCall(const std::string& call) { + _startupCall = call; +} + +std::string QuteCom::getStartupCall() const { + return _startupCall; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/QuteCom.h qutecom-2.2+dfsg1/qutecom/src/model/QuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/QuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/QuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,177 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOM_H +#define OWQUTECOM_H + +#include + +#include +#include +#include + +#include + +class CoIpManager; +class ConfigImporter; +class DtmfThemeManager; +class UserProfile; +class UserProfileHandler; + +/** + * @defgroup model Model Component + * + * The model component is the heart of QuteCom, it implements all the basic functionnalities + * above the SIP stack like the ContactList, the History, it handles SIP accounts and more. + * It contains all the 'intelligence' of QuteCom. + * The model is developped in pure C++ inside libraries like LibUtil, Boost, TinyXML and Curl. + * + * The model component communicates only with the control component via the desgin + * pattern observer implemented inside LibUtil with the class Event. + */ + +/** + * Entry point of the application. + * + * Design Pattern Mediator. + * + * This class starts the model thread. + * 2 threads are running: the model (including the control) and the presentation. + * Thus the presentation component can be loaded and showed to the user + * even before everything is ready. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class QuteCom : public Singleton, public Thread, public Trackable { + friend class Singleton; +public: + + /** + * Initialization step is finished (i.e we exit the init() method. + * + * @param sender this class + */ + Event initFinishedEvent; + + /** + * Application should be closed. + * + * This event goes to the presentation layer and the presentation layer + * should exit the application. + * + * @param sender this class + */ + Event exitEvent; + + /** + * Dtmf Theme Manager has been created. + * + * @param sender this class + * @param dtfmThemeManager DtfmThemeManager created + */ + Event dtmfThemeManagerCreatedEvent; + + /** + * Gets the UserProfileHandler. + */ + UserProfileHandler & getUserProfileHandler() { + return *_userProfileHandler; + } + + /** + * Gets the CoIpManager. + */ + CoIpManager * getCoIpManager() const; + + /** + * Prepares the model to terminate. + * + * Starts a 3 seconds timer that will launch exitEvent. + * + * @see terminate() + */ + void prepareToTerminate(); + + /** + * Terminates the model component thread i.e this thread. + * + * This method should be called when you exit definitly QuteCom. + * You cannot call start() then terminate() several times. + */ + void terminate(); + + /** + * Starts the thread of the model component. + */ + virtual void run(); + + /** + * Enable/disable data serialization. + * @param enable if True serialization is activated. + */ + void enableSerialization(bool enable); + + /** + * Store the phone number/sip address for a call which was requested on + * startup (for example from the command line) + */ + void setStartupCall(const std::string& call); + + std::string getStartupCall() const; + +private: + + QuteCom(); + + virtual ~QuteCom(); + + /** + * Entry point of the application, equivalent to main(). + */ + void init(); + + /** + * Saves the Configuration. + */ + void saveConfiguration(); + + /** + * @see Settings::valueChangedEvent + */ + void valueChangedEventHandler(const std::string & key); + + /** + * Emergency timeout handler called when SIP unregistering + * is not quick enough or timed out. + */ + void exitAfterTimeout(); + + UserProfileHandler * _userProfileHandler; + + /** DtmfThemeManager. */ + DtmfThemeManager * _dtmfThemeManager; + + /** configuration serialization and UserProfileHandler autosave. */ + bool _enableSerialization; + + std::string _startupCall; +}; + +#endif //OWQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/SipCallbacks.cpp qutecom-2.2+dfsg1/qutecom/src/model/SipCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/SipCallbacks.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/SipCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "SipCallbacks.h" + +#include +#include +#include +#include + +#include + +#include +#include + +SipCallbacks::SipCallbacks(SipWrapper & sipWrapper, UserProfile & userProfile) + : _sipWrapper(sipWrapper), + _userProfile(userProfile) { + + _sipWrapper.phoneCallStateChangedEvent += + boost::bind(&SipCallbacks::phoneCallStateChangedEventHandler, this, _1, _2, _3, _4); + _sipWrapper.phoneLineStateChangedEvent += + boost::bind(&SipCallbacks::phoneLineStateChangedEventHandler, this, _1, _2, _3); + _sipWrapper.videoFrameReceivedEvent += + boost::bind(&SipCallbacks::videoFrameReceivedEventHandler, this, _1, _2, _3, _4); +} + +SipCallbacks::~SipCallbacks() { +} + +void SipCallbacks::phoneCallStateChangedEventHandler(SipWrapper & sender, int callId, + EnumPhoneCallState::PhoneCallState state, const std::string & from) { + + LOG_DEBUG("callProgress: callId=" + String::fromNumber(callId) + + " state=" + String::fromNumber(state) + + " from=" + from); + + const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); + for (unsigned i = 0; i < lines.size(); i++) { + IPhoneLine * line = lines[i]; + line->setPhoneCallState(callId, state, SipAddress(from)); + } +} + +void SipCallbacks::phoneLineStateChangedEventHandler(SipWrapper & sender, int lineId, + EnumPhoneLineState::PhoneLineState state) { + + LOG_DEBUG("registerProgress: lineId=" + String::fromNumber(lineId) + + " state=" + String::fromNumber(state)); + + const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); + for (unsigned i = 0; i < lines.size(); i++) { + IPhoneLine * line = lines[i]; + LOG_DEBUG("lineId=" + String::fromNumber(line->getLineId())); + if (lineId == 0) { + // change state of all lines + line->setState(state); + } else if (line->getLineId() == lineId) { + line->setState(state); + break; + } + } +} + +void SipCallbacks::videoFrameReceivedEventHandler(SipWrapper & sender, int callId, + piximage* remoteVideoFrame, piximage* localVideoFrame) { + + //LOG_DEBUG("videoFrameReceived: callId=" + String::fromNumber(callId)); + + const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); + for (unsigned i = 0; i < lines.size(); i++) { + IPhoneLine * line = lines[i]; + + PhoneCall * call = line->getPhoneCall(callId); + if (call) { + //The correct PhoneCall has been found given its callId + call->videoFrameReceived(remoteVideoFrame, localVideoFrame); + break; + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/SipCallbacks.h qutecom-2.2+dfsg1/qutecom/src/model/SipCallbacks.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/SipCallbacks.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/SipCallbacks.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef SIPCALLBACKS_H +#define SIPCALLBACKS_H + +#include +#include + +#include +#include + +#include + +#include + +class UserProfile; +class SipWrapper; +class WebcamVideoFrame; + +/** + * Callbacks for SIP stacks. + * + * Handles events/callbacks from SipWrapper. + * + * phApi states: [INCOMING], [ACCEPTING], [OUTGOING], [ESTABLISHED], [ONHOLD], [CLOSED] + * phApi call events (in the right order): + * phDIALING, phRINGING, phNOANSWER, phCALLBUSY, phCALLREDIRECTED, + * phCALLOK, phCALLHELD, phCALLRESUMED, phHOLDOK, phRESUMEOK, + * phINCALL, phCALLCLOSED, phCALLERROR, phDTMF, phXFERPROGRESS, + * phXFEROK, phXFERFAIL, phXFERREQ, phCALLREPLACED + * + * @ingroup model + * @author Tanguy Krotoff + */ +class SipCallbacks : NonCopyable, public Trackable { +public: + + SipCallbacks(SipWrapper & sipWrapper, UserProfile & userProfile); + + virtual ~SipCallbacks(); + +private: + + void phoneCallStateChangedEventHandler(SipWrapper & sender, int callId, + EnumPhoneCallState::PhoneCallState state, const std::string & from); + + void phoneLineStateChangedEventHandler(SipWrapper & sender, int lineId, + EnumPhoneLineState::PhoneLineState state); + + void videoFrameReceivedEventHandler(SipWrapper & sender, int callId, + piximage* remoteVideoFrame, piximage* localVideoFrame); + + SipWrapper & _sipWrapper; + + /** QuteCom instance in order to access the phone lines and the phone calls. */ + UserProfile & _userProfile; +}; + +#endif //SIPCALLBACKS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WsCallForward.h" + +#include +#include + +#include + +#include + +WsCallForward::WsCallForward(QuteComAccount * qutecomAccount) : QuteComWebService(qutecomAccount) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //setup call forward service + setHostname(config.getQuteComServerHostname()); + setGet(true); + setHttps(true); + setServicePath(config.getQuteComCirpackPath()); + setPort(443); + setQuteComAuthentication(true); +} + +void WsCallForward::disableCallForward() { + + std::string query = "action=callforward"; + query += "&activate=0"; + + setParameters(query); + call(this); +} + +void WsCallForward::forwardToVoiceMail() { + + std::string query = "action=callforward"; + query += "&activate=1"; + query += "&num1=voicemail"; + + setParameters(query); + call(this); +} + +void WsCallForward::forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3) { + + std::string query = "action=callforward"; + query += "&activate=1"; + + query += "&num1=" + number1; + query += "&num2=" + number2; + query += "&num3=" + number3; + + setParameters(query); + call(this); +} + +void WsCallForward::answerReceived(const std::string & answer, int requestId) { + + TiXmlDocument doc; + doc.Parse(answer.c_str()); + + TiXmlHandle docHandle(& doc); + + TiXmlElement * response = docHandle.FirstChild("response").Element(); + if (!response) { + wsCallForwardEvent(*this, requestId, WsCallForwardStatusUrlError); + return; + } + + TiXmlElement * elt = response->FirstChildElement("code"); + if (elt && (elt->FirstChild())) { + + std::string r = elt->FirstChild()->ToText()->Value(); + + //TODO: change when the ws doc will be updated + if (r == "OK") { + wsCallForwardEvent(*this, requestId, WsCallForwardStatusOk); + } else if (r == "401") { + wsCallForwardEvent(*this, requestId, WsCallForwardStatusAuthenticationError); + } else if (r == "404") { + wsCallForwardEvent(*this, requestId, WsCallForwardStatusUrlError); + } else { + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/callforward/WsCallForward.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWWSCALLFORWARD_H +#define OWWSCALLFORWARD_H + +#include + +class Settings; + +/** + * Call forward web service. + * + * Sets the call forward method on the server the user wants. + * + * @author Mathieu Stute + */ +class WsCallForward : public QuteComWebService { +public: + + enum WsCallForwardStatus { + /** The information could not be set. */ + WsCallForwardStatusAuthenticationError, + + /** The information could not be set. */ + WsCallForwardStatusUrlError, + + /** Set information successfully. */ + WsCallForwardStatusOk + }; + + /** + * Default constructor. + * + * @param qutecomAccount the QuteComAccount used for authentication + */ + WsCallForward(QuteComAccount * qutecomAccount); + + /** + * A anwser about unread voice mail has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + */ + Event wsCallForwardEvent; + + /** + * Disables call forward. + */ + void disableCallForward(); + + /** + * Forwards all calls to voicemail. + */ + void forwardToVoiceMail(); + + /** + * Forwards calls to number or nickname. + * + * @param number1 first forward number. + * @param number2 second forward number. + * @param number3 third forward number. + */ + void forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3); + +private: + + /** + * @see QuteComWebService + */ + void answerReceived(const std::string & answer, int requestId); +}; + +#endif //OWWSCALLFORWARD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/info/WsInfo.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/info/WsInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/info/WsInfo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/info/WsInfo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,324 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WsInfo.h" + +#include +#include + +#include + +#include + +#include + +const char * getValueFromKey(TiXmlElement * element, const std::string & key); + +const std::string WsInfo::QUTECOMSCOUNT_TAG = "contract.counter.qutecoms"; +const std::string WsInfo::QUTECOMSCURRENCY_TAG = "contract.currency.qutecoms"; +const std::string WsInfo::SMSCOUNT_TAG = "contract.counter.sms"; +const std::string WsInfo::ACTIVEMAIL_TAG = "ucf.email.isactive"; +const std::string WsInfo::UNREADVOICEMAILCOUNT_TAG = "tph.mbox.unseencount"; +const std::string WsInfo::ACTIVEVOICEMAIL_TAG = "tph.mbox.isactive"; +const std::string WsInfo::CALLFORWARD_TAG = "tph.callforward"; +const std::string WsInfo::LANDLINENUMBER_TAG = "contract.option.pstnnum"; + +const std::string WsInfo::CALLFORWARD_MODE_TAG = "tph.callforward.mode"; +const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST1_TAG = "tph.callforward.destination1"; +const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST2_TAG = "tph.callforward.destination2"; +const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST3_TAG = "tph.callforward.destination3"; + +WsInfo::WsInfo(QuteComAccount * qutecomAccount) + : QuteComWebService(qutecomAccount) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _qutecomsCount = false; + _qutecomsCurrency = false; + _smsCount = false; + _activeMail = false; + _unreadVoiceMail = false; + _callForward = false; + _landlineNumber = false; + + //setup info web service + setHostname(config.getQuteComServerHostname()); + setGet(true); + setHttps(true); + setServicePath(config.getQuteComInfoPath()); + setPort(443); + setQuteComAuthentication(true); + + getCallForwardInfo(true); +} + +void WsInfo::getQuteComsCount(bool qutecomsCount) { + _qutecomsCount = qutecomsCount; +} + +void WsInfo::getQuteComsCurrency(bool qutecomsCurrency) { + _qutecomsCurrency = qutecomsCurrency; +} + +void WsInfo::getSmsCount(bool smsCount) { + _smsCount = smsCount; +} + +void WsInfo::getActiveMail(bool activeMail) { + _activeMail = activeMail; +} + +void WsInfo::getUnreadVoiceMail(bool unreadVoiceMail) { + _unreadVoiceMail = unreadVoiceMail; +} + +void WsInfo::getCallForwardInfo(bool callForward) { + _callForward = callForward; +} + +void WsInfo::getLandlineNumber(bool landlineNumber) { + _landlineNumber = landlineNumber; +} + +int WsInfo::execute() { + + //build the query + std::string query = "query="; + if (_qutecomsCount) { + query += QUTECOMSCOUNT_TAG + "|"; + } + if (_qutecomsCurrency) { + query += QUTECOMSCURRENCY_TAG + "|"; + } + if (_smsCount) { + query += SMSCOUNT_TAG + "|"; + } + if (_activeMail) { + query += ACTIVEMAIL_TAG + "|"; + } + if (_unreadVoiceMail) { + query += UNREADVOICEMAILCOUNT_TAG + "|"; + query += ACTIVEVOICEMAIL_TAG + "|"; + } + if (_landlineNumber) { + query += LANDLINENUMBER_TAG + "|"; + } + if (_callForward) { + query += CALLFORWARD_TAG + "|"; + query += ACTIVEVOICEMAIL_TAG + "|"; + } + + //remove the last pipe if any + if (query != "query=") { + query = query.substr(0, query.length() - 1); + } + + setParameters(query); + + return call(this); +} + +void WsInfo::answerReceived(const std::string & answer, int id) { + + const char * value = NULL; + std::string currency; + std::string forwardMode; + std::string voiceMailNumber; + std::string dest1; + std::string dest2; + std::string dest3; + bool forward2VoiceMail = false; + float qutecoms = 0.0; + bool containsQuteComs = false; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + TiXmlDocument document; + document.Parse(answer.c_str()); + + TiXmlElement * root = document.FirstChildElement("output"); + if (root) { + + //iterate over "o" element + TiXmlElement * element = root->FirstChildElement("o"); + while (element) { + + //find the key + const char * key = element->Attribute("k"); + if (key) { + + //qutecoms count + if (std::string(key) == QUTECOMSCOUNT_TAG) { + value = getValueFromKey(element, QUTECOMSCOUNT_TAG); + if (value) { + std::stringstream ss(value); + ss >> qutecoms; + containsQuteComs = true; + } + } else if (key == QUTECOMSCURRENCY_TAG) { + value = getValueFromKey(element, QUTECOMSCURRENCY_TAG); + if (value) { + currency = std::string(value); + } + //sms count + } else if (key == SMSCOUNT_TAG) { + int sms = 0; + value = getValueFromKey(element, SMSCOUNT_TAG); + if (value) { + std::stringstream ss( value ); + ss >> sms; + wsInfoSmsCountEvent(*this, id, WsInfoStatusOk, sms); + } + + //active mail + } else if (key == ACTIVEMAIL_TAG) { + int activeMail = 0; + value = getValueFromKey(element, ACTIVEMAIL_TAG); + if (value) { + std::stringstream ss(value); + ss >> activeMail; + wsInfoActiveMailEvent(*this, id, WsInfoStatusOk, activeMail); + } + + //unread voice mail + } else if (key == UNREADVOICEMAILCOUNT_TAG) { + int voiceMail = 0; + value = getValueFromKey(element, UNREADVOICEMAILCOUNT_TAG); + if (value) { + std::stringstream ss(value); + ss >> voiceMail; + wsInfoVoiceMailEvent(*this, id, WsInfoStatusOk, voiceMail); + } + + //active voice mail + } else if (key == ACTIVEVOICEMAIL_TAG) { + bool voiceMailActive = false; + value = getValueFromKey(element, UNREADVOICEMAILCOUNT_TAG); + if (value) { + if (std::string(value) == "true") { + voiceMailActive = true; + } + config.set(Config::VOICE_MAIL_ACTIVE_KEY, voiceMailActive); + } + wsInfoActiveVoiceMailEvent(*this, id, WsInfoStatusOk, voiceMailActive); + + //call forward + } else if (key == CALLFORWARD_MODE_TAG) { + value = getValueFromKey(element, CALLFORWARD_MODE_TAG); + if (value) { + forwardMode = std::string(value); + } + + //call forward + } else if (key == CALLFORWARD_TO_LANDLINE_DEST1_TAG) { + value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST1_TAG); + if (value) { + dest1 = std::string(value); + } + + //call forward + } else if (key == CALLFORWARD_TO_LANDLINE_DEST2_TAG) { + value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST2_TAG); + if (value) { + dest2 = std::string(value); + } + + //call forward + } else if (key == CALLFORWARD_TO_LANDLINE_DEST3_TAG) { + value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST3_TAG); + if (value) { + dest3 = std::string(value); + } + + //landline number + } else if (key == LANDLINENUMBER_TAG) { + value = getValueFromKey(element, LANDLINENUMBER_TAG); + if (value) { + wsInfoLandlineNumberEvent(*this, id, WsInfoStatusOk, std::string(value)); + } + + } + } + element = element->NextSiblingElement("o"); + } + } + + if(containsQuteComs) + wsInfoQuteComsEvent(*this,id,WsInfoStatusOk,currency,qutecoms); + + //emit call forward event + if (_callForward) { + + //remove XXX coming from the ws + if (dest1 == "XXX") { + dest1 = ""; + } + if (dest2 == "XXX") { + dest2 = ""; + } + if (dest3 == "XXX") { + dest3 = ""; + } + + if (forwardMode == "enable") { + + if ((dest1 == "voicemail")) { + config.set(Config::CALL_FORWARD_MODE_KEY, std::string("voicemail")); + wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeVoicemail, forward2VoiceMail, dest1, dest2, dest3); + } else { + config.set(Config::CALL_FORWARD_MODE_KEY, std::string("number")); + wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeNumber, forward2VoiceMail, dest1, dest2, dest3); + } + + } else if (forwardMode == "disable") { + config.set(Config::CALL_FORWARD_MODE_KEY, forwardMode); + wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeDisabled, forward2VoiceMail, dest1, dest2, dest3); + } else if (forwardMode == "unauthorized") { + config.set(Config::CALL_FORWARD_MODE_KEY, forwardMode); + wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeUnauthorized, forward2VoiceMail, dest1, dest2, dest3); + } + + //write info to the Config + config.set(Config::CALL_FORWARD_PHONENUMBER1_KEY, dest1); + config.set(Config::CALL_FORWARD_PHONENUMBER2_KEY, dest2); + config.set(Config::CALL_FORWARD_PHONENUMBER3_KEY, dest3); + } +} + +const char * getValueFromKey(TiXmlElement * element, const std::string & key) { + + //find value + TiXmlElement * elt = element->FirstChildElement("v"); + if (elt) { + const char * type = elt->Attribute("t"); + + //check for error + if ((type) && (std::string(type) != "e")) { + + //extract value text + if (elt->FirstChild()) { + TiXmlText * text = elt->FirstChild()->ToText(); + if (text) { + return text->Value(); + } + } + } + } + return NULL; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/info/WsInfo.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/info/WsInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/info/WsInfo.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/info/WsInfo.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,249 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWWSINFO_H +#define OWWSINFO_H + +#include + +/** + * QuteCom information web service. + * + * Retrieves general information about the user and its server configuration: + * - the call forward method used + * - the amount of credits + * - the land line number associated with the user + * + * @author Mathieu Stute + */ +class WsInfo : public QuteComWebService { +public: + + enum WsInfoStatus { + /** The information could not be retrieved. */ + WsInfoStatusError, + + /** Retrieve information successfully. */ + WsInfoStatusOk + }; + + enum WsInfoCallForwardMode { + /** callforward is enabled & forward to voicemail. */ + WsInfoCallForwardModeVoicemail, + + /** callforward is enabled & forward to given PSTN numbers. */ + WsInfoCallForwardModeNumber, + + /** callforward is disabled. */ + WsInfoCallForwardModeDisabled, + + /** callforward is unauthorized. */ + WsInfoCallForwardModeUnauthorized, + }; + + /** + * Default constructor. + * + * @param qutecomAccount the QuteComAccount used for web services + */ + WsInfo(QuteComAccount * qutecomAccount); + + /** + * An anwser about qutecom's has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param qutecoms qutecom's count + */ + Event wsInfoQuteComsEvent; + + /** + * An anwser about sms count has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param sms sms count + */ + Event wsInfoSmsCountEvent; + + /** + * An anwser about active mail has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param activeMail 1 if active, 0 if not + */ + Event wsInfoActiveMailEvent; + + /** + * An anwser about unread voice mail has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param voicemail unread voice mail count + */ + Event wsInfoVoiceMailEvent; + + /** + * An anwser about the landline number has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param number landline number + */ + Event wsInfoLandlineNumberEvent; + + /** + * An anwser about unread voice mail has been received. + * + * @param sender this class + * @param id unique identifier of the request + * @param status the request status (ok or error) + * @param voicemail if true forward to voice mail else to the given number + * @param dest1 first forward number + * @param dest2 second forward number (meaningfull only if voicemail is true) + * @param dest3 third forward number (meaningfull only if voicemail is true) + */ + Event wsCallForwardInfoEvent; + + /** + * An anwser active voice mail has been received. + * + * @param sender this class + * @param status the request status (ok or error) + * @param voicemail true if a voice mail is active + */ + Event wsInfoActiveVoiceMailEvent; + + /** + * Sets/unsets qutecom's request. + * + * @param qutecoms if true enable qutecom's request + */ + void getQuteComsCount(bool qutecoms); + + /** + * Sets/unsets qutecom's request. + * + * @param qutecoms if true enable qutecom's request + */ + void getQuteComsCurrency(bool qutecoms); + + /** + * Sets/unsets sms count request. + * + * @param sms if true enable sms count request + */ + void getSmsCount(bool sms); + + /** + * Sets/unsets active mail request. + * + * @param mail if true enable active mail request + */ + void getActiveMail(bool mail); + + /** + * Sets/unsets voice mail count request. + * + * @param voicemail if true enable voice mail count request + */ + void getUnreadVoiceMail(bool voicemail); + + /** + * Sets/unsets call forward request. + * + * @param callForward if true enable call forward request + */ + void getCallForwardInfo(bool callForward); + + /** + * Sets/unsets landline number request. + * + * @param landlineNumber if true enable landline number request + */ + void getLandlineNumber(bool landlineNumber); + + /** + * Sends the request. + * + * @return unique request ID + */ + int execute(); + +private: + + /** + * @see QuteComWebService + */ + void answerReceived(const std::string & answer, int id); + + /** Activates qutecoms count. */ + bool _qutecomsCount; + + /** Activates qutecoms currency */ + bool _qutecomsCurrency; + + /** Activates sms count. */ + bool _smsCount; + + /** Activates active mail request. */ + bool _activeMail; + + /** Activates unread voice mail count. */ + bool _unreadVoiceMail; + + /** Activates unread voice mail count. */ + bool _callForward; + + /** Activates landline number request. */ + bool _landlineNumber; + + static const std::string QUTECOMSCOUNT_TAG; + + static const std::string QUTECOMSCURRENCY_TAG; + + static const std::string SMSCOUNT_TAG; + + static const std::string ACTIVEMAIL_TAG; + + static const std::string UNREADVOICEMAILCOUNT_TAG; + + static const std::string ACTIVEVOICEMAIL_TAG; + + static const std::string LANDLINENUMBER_TAG; + + static const std::string CALLFORWARD_TAG; + + static const std::string CALLFORWARD_MODE_TAG; + + static const std::string CALLFORWARD_TO_LANDLINE_DEST1_TAG; + + static const std::string CALLFORWARD_TO_LANDLINE_DEST2_TAG; + + static const std::string CALLFORWARD_TO_LANDLINE_DEST3_TAG; +}; + +#endif //OWWSINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/QuteComWebService.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/QuteComWebService.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/QuteComWebService.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/QuteComWebService.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComWebService.h" + +#include +#include +#include +#include + +#include + +QuteComWebService::QuteComWebService(QuteComAccount * qutecomAccount) + : _qutecomAccount(qutecomAccount) { + + _https = false; + _get = false; + _auth = false; + _port = 0; +} + +QuteComWebService::~QuteComWebService() { + +} + +void QuteComWebService::setHttps(bool https) { + _https = https; +} + +void QuteComWebService::setGet(bool get) { + _get = get; +} + +void QuteComWebService::setHostname(const std::string & hostname) { + _hostname= hostname; +} + +void QuteComWebService::setPort(int port) { + _port = port; +} + +void QuteComWebService::setServicePath(const std::string & servicePath) { + _servicePath = servicePath; +} + +void QuteComWebService::setParameters(const std::string & parameters) { + _parameters = parameters; +} + +void QuteComWebService::setQuteComAuthentication(bool auth) { + _auth = auth; +} + +int QuteComWebService::sendRequest() { + HttpRequest * httpRequest = new HttpRequest(); + httpRequest->answerReceivedEvent += boost::bind(&QuteComWebService::answerReceivedEventHandler, this, _1, _2, _3, _4); + return httpRequest->sendRequest(_https, _hostname, _port, _servicePath, _parameters, !_get); +} + +int QuteComWebService::call(QuteComWebService * caller) { + //Set caller + _caller = caller; + + //Add qutecom parameters + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string language = config.getLanguage(); + + std::string data = "lang=" + language; + data += "&wl=" + std::string(QuteComBuildId::getSoftphoneName()); + + //Add authentication parameters + if ((_auth) && (_qutecomAccount)) { + String login = String::encodeUrl(_qutecomAccount->getQuteComLogin()); + login.replace("%2e", ".", false); + String password = String::encodeUrl(_qutecomAccount->getQuteComPassword()); + password.replace("%2e", ".", false); + data += "&login=" + login + "&password=" + password; + } + + if (!_parameters.empty()) { + _parameters = data + "&" + _parameters; + } else { + _parameters = data; + } + + return sendRequest(); +} + +void QuteComWebService::answerReceivedEventHandler(IHttpRequest * sender, int requestId, const std::string & answer, HttpRequest::Error error) { + if (_caller) { + if (error == HttpRequest::NoError) { + _caller->answerReceived(answer, requestId); + } else { + _caller->answerReceived(String::null, requestId); + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/QuteComWebService.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/QuteComWebService.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/QuteComWebService.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/QuteComWebService.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,170 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOMWEBSERVICE_H +#define OWQUTECOMWEBSERVICE_H + +#include +#include + +class QuteComAccount; + +/** + * QuteComWebService. + * + * Class helper to create web services easily. + * + * @author Mathieu Stute + */ +class QuteComWebService : public Trackable { +public: + + /** + * Callback to check if the SMS was received or not. + * + * @param sender this class + * @param requestId request unique identifier + * @param answer the response returned by the web service + */ + Event answerReceivedEvent; + + /** + * Default constructor. + * + * @param qutecomAccount the QuteComAccount used for web services + */ + QuteComWebService(QuteComAccount * qutecomAccount = NULL); + + virtual ~QuteComWebService(); + + /** + * Set/unset https mode. + * + * @param https if true https else http + */ + void setHttps(bool https); + + /** + * Set/unset get mode + * @param get if true GET else POST + */ + void setGet(bool get); + + /** + * Set hostname + * @param hostname hostname + */ + void setHostname(const std::string & hostname); + + /** + * Set port + * @param port port + */ + void setPort(int port); + + /** + * Set service path + * @param servicePath the path to the service + */ + void setServicePath(const std::string & servicePath); + + /** + * Sets additionnal parameter. + * + * A string like : "name=toto&city=paris", + * no '?' at the begining of the string + * + * @param servicePath the path to the service + */ + void setParameters(const std::string & param); + + /** + * Set/unset qutecom authentication. + * + * @param auth activate authentication if true + */ + void setQuteComAuthentication(bool auth); + + /** + * Calls the web service. + * + * @param caller caller + */ + int call(QuteComWebService * caller); + +protected: + + /** + * Sends a request to a web service. + * + * @param https if true this is a https request + * @param get if true this is a get request + * @param hostname hostname of the webservice + * @param port port + * @param servicePath path to the service + * @param additionalParameters additional parameters to the request + * @return unique request ID + */ + int sendRequest(); + + /** + * @see IHttpRequest::answerReceivedEvent + */ + void answerReceivedEventHandler(IHttpRequest * sender, int requestId, const std::string & answer, HttpRequest::Error error); + +private: + + /** + * Answer received callback. + * + * @param answer the answer to the request + * @param requestId the request id + */ + virtual void answerReceived(const std::string & answer, int requestId) = 0; + + /** QuteComAccount: to get login & password */ + QuteComAccount * _qutecomAccount; + + /** https/http mode */ + bool _https; + + /** GET/POST mode */ + bool _get; + + /** use authentication mode */ + bool _auth; + + /** hostname of the web service */ + std::string _hostname; + + /** port of the web service */ + int _port; + + /** path of the web service */ + std::string _servicePath; + + /** parameters of the web service */ + std::string _parameters; + + /** caller */ + QuteComWebService * _caller; +}; + +#endif //OWQUTECOMWEBSERVICE_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/EnumSmsState.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/EnumSmsState.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/EnumSmsState.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/EnumSmsState.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWENUMSMSSTATE_H +#define OWENUMSMSSTATE_H + +#include + +/** + * SMS states. + * + * @author Mathieu Stute + */ +class EnumSmsState : public NonCopyable { +public: + + enum SmsState { + /** The SMS was not sent. */ + SmsStateError, + + /** The SMS was sent. */ + SmsStateOk + }; +}; + +#endif //OWENUMSMSSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/WsSms.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/WsSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/WsSms.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/WsSms.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WsSms.h" + +#include +#include +#include +#include +#include + +#include + +WsSms::WsSms(QuteComAccount * qutecomAccount, UserProfile & userProfile) + : QuteComWebService(qutecomAccount), + _userProfile(userProfile) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //Setup SMS web service + setHostname(config.getQuteComServerHostname()); + setGet(true); + setHttps(true); + setServicePath(config.getQuteComSMSPath()); + setPort(443); + setQuteComAuthentication(true); +} + +int WsSms::sendSMS(const std::string & phoneNumber, const std::string & message) { + //Encode the message + String message2 = String::encodeUrl(message); + message2.replace("%2e", ".", false); + + String numbers = String::encodeUrl(phoneNumber); + setParameters("message=" + message2 + "&target=" + numbers); + + //Call the web service + int requestId = call(this); + + //History: create a History Memento for this outgoing SMS + HistoryMemento * memento = new HistoryMemento( + HistoryMemento::OutgoingSmsNok, phoneNumber, requestId, message); + _userProfile.getHistory().addMemento(memento); + + return requestId; +} + +void WsSms::answerReceived(const std::string & answer, int requestId) { + //TODO: replace this ugly "parsing" with a real XML parsing + static const std::string STATUS_UNAUTHORIZED = "401"; + static const std::string STATUS_OK = "200"; + + String tmp(answer); + + if (!tmp.empty()) { + if (tmp.contains(STATUS_OK) && !tmp.contains(STATUS_UNAUTHORIZED)) { + + //SMS sent + smsStatusEvent(*this, requestId, EnumSmsState::SmsStateOk); + + //History: retrieve the HistoryMemento & update its state to Ok + _userProfile.getHistory().updateSMSState(requestId, HistoryMemento::OutgoingSmsOk); + + WsInfo * wsInfo = _userProfile.getWsInfo(); + if (wsInfo) { + wsInfo->getQuteComsCount(true); + wsInfo->execute(); + } + return; + } + } + + //SMS unsent + smsStatusEvent(*this, requestId, EnumSmsState::SmsStateError); + + //History: retrieve the HistoryMemento & update its state to Nok + _userProfile.getHistory().updateSMSState(requestId, HistoryMemento::OutgoingSmsNok); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/WsSms.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/WsSms.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/sms/WsSms.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/sms/WsSms.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWWSSMS_H +#define OWWSSMS_H + +#include "EnumSmsState.h" + +#include + +class UserProfile; + +/** + * QuteCom SMS web service. + * + * Permits to send SMS. + * + * @author Mathieu Stute + */ +class WsSms : public QuteComWebService { +public: + + /** Maximum SMS length = 150 characters. */ + static const unsigned SMS_MAX_LENGTH = 150; + + /** + * Default constructor. + * + * @param qutecomAccount the QuteComAccount used for web services + */ + WsSms(QuteComAccount * qutecomAccount, UserProfile & userProfile); + + virtual ~WsSms() {} + + /** + * Callback to check if the SMS was received or not. + * + * @param sender this class + * @param smsId SMS unique identifier + * @param state SMS status (ok or error) + */ + Event smsStatusEvent; + + /** + * Sends a SMS given a destination phone number and a message. + * + * @param phoneNumber phone that will receive the SMS + * @param message SMS message + * @return unique SMS ID + */ + int sendSMS(const std::string & phoneNumber, const std::string & message); + +private: + + void answerReceived(const std::string & answer, int requestId); + + UserProfile & _userProfile; +}; + +#endif //OWWSSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,136 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WsSoftUpdate.h" + +#include +#include + +#include + +#include +#include + +#include + +#include + +WsSoftUpdate::WsSoftUpdate(QuteComAccount * qutecomAccount) + : QuteComWebService(qutecomAccount) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //Setup the web service + setHostname(config.getQuteComServerHostname()); + setGet(true); + setHttps(false); + + std::string path = config.getQuteComSoftUpdatePath(); + +#ifdef OS_WINDOWS + path += "/windows.xml"; +#elif defined (OS_MACOSX) +#if defined (__BIG_ENDIAN__) + path += "/osx_ppc.xml"; +#else + path += "/osx_x86.xml"; +#endif +#elif defined (OS_LINUX) + path += "/linux.xml"; +#endif + + setServicePath(path); + setPort(80); + setQuteComAuthentication(false); +} + +void WsSoftUpdate::checkForUpdate() { + /*std::string operatingSystem; + +#ifdef OS_WINDOWS + operatingSystem = "windows"; +#elif defined (OS_MACOSX) + #if defined (__BIG_ENDIAN__) + operatingSystem = "osx_ppc"; + #else + operatingSystem = "osx_x86"; + #endif +#elif defined (OS_LINUX) + operatingSystem = "linux"; +#endif + + setParameters(std::string("aro=qutecom") + + std::string("&installer_type=") + operatingSystem);*/ + + //Calls the web service + call(this); +} + +void WsSoftUpdate::answerReceived(const std::string & answer, int requestId) { + if (answer.empty()) { + return; + } + + unsigned long long buildId = 0; + std::string downloadUrl; + std::string version; + unsigned fileSize = 0; + + TiXmlDocument doc; + doc.Parse(answer.c_str()); + + TiXmlHandle docHandle(&doc); + + TiXmlHandle root = docHandle.FirstChild("softphone").FirstChild("version"); + + TiXmlText * text = root.FirstChild("build").FirstChild().Text(); + if (text) { + std::stringstream ss(std::string(text->Value())); + ss >> buildId; + } + + text = root.FirstChild("url").FirstChild().Text(); + if (text) { + downloadUrl = text->Value(); + } + + text = root.FirstChild("version_marketing").FirstChild().Text(); + if (text) { + version = text->Value(); + } + + text = root.FirstChild("filesize").FirstChild().Text(); + if (text) { + std::stringstream ss(std::string(text->Value())); + ss >> fileSize; + } + + + if ((QuteComBuildId::getBuildId() != 0) && (buildId > QuteComBuildId::getBuildId())) { + //A new version of QuteCom is available and we don't have a developer version with buildid=0 + LOG_DEBUG("new QuteCom version available=" + version + " buildid=" + String::fromUnsignedLongLong(buildId)); + + //File size in megabytes + fileSize = fileSize / 1000 / 1000; + + updateQuteComEvent(*this, downloadUrl, buildId, version, fileSize); + } else { + LOG_DEBUG("QuteCom is up-to-date"); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/softupdate/WsSoftUpdate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWWSSOFTUPDATE_H +#define OWWSSOFTUPDATE_H + +#include + +/** + * QuteCom update web service. + * + * Checks for the availability of QuteCom updates. + * + * @author Tanguy Krotoff + */ +class WsSoftUpdate : public QuteComWebService { +public: + + /** + * Default constructor. + * + * @param qutecomAccount the QuteComAccount used for web services + */ + WsSoftUpdate(QuteComAccount * qutecomAccount = 0); + + virtual ~WsSoftUpdate() {} + + /** + * Event QuteCom should be updated. + * + * @param sender this class + * @param downloadUrl QuteCom update download URL + * @param buildId QuteCom update build ID + * @param version QuteCom update version number + * @param fileSize QuteCom update file size in kil bytes + */ + Event updateQuteComEvent; + + /** + * Checks if a QuteCom update is available. + */ + void checkForUpdate(); + +private: + + /** + * @see QuteComWebService + */ + void answerReceived(const std::string & answer, int id); +}; + +#endif //OWWSSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/url/WsUrl.cpp qutecom-2.2+dfsg1/qutecom/src/model/webservices/url/WsUrl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/url/WsUrl.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/url/WsUrl.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,198 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WsUrl.h" + +#include + +#include +#include +#include + +#include +#include + +#include + +QuteComAccount * WsUrl::_qutecomAccount = NULL; + +static const char KEYWORD_DELIMITER = '@'; + +class KeywordMap { +public: + void addKeyword(const std::string& keyword, const std::string& value) { + _map[KEYWORD_DELIMITER + keyword + KEYWORD_DELIMITER] = value; + } + + std::string replaceKeywords(const std::string& text) { + String tmp = text; + Map::const_iterator + it = _map.begin(), + end = _map.end(); + for (; it!=end; ++it) { + tmp.replace(it->first, it->second); + } + return tmp; + } + +private: + typedef std::map Map; + Map _map; +}; + +static std::string keyFromPage(WsUrl::Page page) { + static std::map map; + if (map.empty()) { + map[WsUrl::Account] = Config::URL_ACCOUNT_KEY; + map[WsUrl::AccountCreation] = Config::URL_ACCOUNTCREATION_KEY; + map[WsUrl::FAQ] = Config::URL_FAQ_KEY; + map[WsUrl::Forum] = Config::URL_FORUM_KEY; + map[WsUrl::SmartDirectory] = Config::URL_INTERNALDIRECTORY_KEY; + map[WsUrl::CallOut] = Config::URL_CALLOUT_KEY; + map[WsUrl::SMS] = Config::URL_SMS_KEY; + map[WsUrl::VoiceMail] = Config::URL_VOICEMAIL_KEY; + map[WsUrl::BuyQuteComs] = Config::URL_BUYQUTECOMS_KEY; + map[WsUrl::PhoneNumber] = Config::URL_PHONENUMBER_KEY; + map[WsUrl::Wiki] = Config::URL_WIKI_KEY; + map[WsUrl::LostPassword] = Config::URL_LOSTPASSWORD_KEY; + map[WsUrl::Launchpad] = Config::URL_LAUNCHPAD_KEY; + map[WsUrl::Directory] = Config::URL_EXTERNALDIRECTORY_KEY; + } + return map[page]; +} + +std::string WsUrl::getPageUrl(Page page) { + std::string key = keyFromPage(page); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return config.getStringKeyValue(key); +} + +bool WsUrl::hasPage(Page page) { + std::string url = getPageUrl(page); + return !url.empty(); +} + +std::string WsUrl::getUrlWithoutAuth(const std::string & url) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + KeywordMap map; + map.addKeyword("lang", config.getLanguage()); + + std::string finalUrl = map.replaceKeywords(url); + return finalUrl; +} + +std::string WsUrl::getUrlWithAuth(const std::string & url) { + if (!_qutecomAccount) { + LOG_WARN("no QuteComAccount set, this method should not be called"); + return url; + } + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + KeywordMap map; + map.addKeyword("lang", config.getLanguage()); + map.addKeyword("login", _qutecomAccount->getQuteComLogin()); + map.addKeyword("password", _qutecomAccount->getQuteComPassword()); + + std::string finalUrl = map.replaceKeywords(url); + return finalUrl; +} + +void WsUrl::openQuteComUrlWithoutAuth(const std::string & url) { + WebBrowser::openUrl(getUrlWithoutAuth(url)); +} + +void WsUrl::openQuteComUrlWithAuth(const std::string & url) { + WebBrowser::openUrl(getUrlWithAuth(url)); +} + +std::string WsUrl::getQuteComDirectoryUrl() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return getUrlWithoutAuth(config.getInternalDirectoryUrl()); +} + +void WsUrl::showQuteComAccount() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithAuth(config.getAccountUrl()); +} + +void WsUrl::showQuteComFAQ() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getFaqUrl()); +} + +void WsUrl::showQuteComForum() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getForumUrl()); +} + +void WsUrl::showQuteComSmartDirectory() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getExternalDirectoryUrl()); +} + +void WsUrl::showQuteComAccountCreation() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getAccountCreationUrl()); +} + +void WsUrl::showQuteComCallOut() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getCalloutUrl()); +} + +void WsUrl::showQuteComSMS() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getSmsUrl()); +} + +void WsUrl::showQuteComVoiceMail() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getVoiceMailUrl()); +} + +void WsUrl::showQuteComBuyQuteComs() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithAuth(config.getBuyQuteComsUrl()); +} + +void WsUrl::showQuteComDownload() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithAuth(config.getDownloadUrl()); +} + +void WsUrl::showQuteComNumber() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithAuth(config.getPhoneNumberUrl()); +} + +void WsUrl::showWikiPage() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getWikiUrl()); +} + +void WsUrl::showLostPasswordPage() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + openQuteComUrlWithoutAuth(config.getLostPasswordUrl()); +} + +void WsUrl::showLauchpadPage() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + WebBrowser::openUrl(config.getLaunchpadUrl()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/url/WsUrl.h qutecom-2.2+dfsg1/qutecom/src/model/webservices/url/WsUrl.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/model/webservices/url/WsUrl.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/model/webservices/url/WsUrl.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,184 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWWSURL_H +#define OWWSURL_H + +#include + +#include + +class QuteComAccount; + +/** + * Helper class that stores all the url related to QuteCom. + * + * FIXME + * This class does not take a QuteComAccount, it uses QuteCom::instance + * which is a big hack. A real solution must be find for the implementation + * of openQuteComUrlWithAuth(). Check QuteCom::instance. + * It has been done in order to keep WsUrl methods static thus easier to use, + * I would like to keep them static since it is easier to use. + * + * @ingroup model + * @author Tanguy Krotoff + */ +class WsUrl : NonCopyable { + friend class UserProfileHandler; +public: + enum Page { + Account, + AccountCreation, + FAQ, + Forum, + SmartDirectory, + CallOut, + SMS, + VoiceMail, + BuyQuteComs, + PhoneNumber, + Wiki, + LostPassword, + Launchpad, + Directory + }; + + static std::string getPageUrl(Page); + + static bool hasPage(Page); + + /** + * Opens a web browser and shows the QuteCom account informations inside. + */ + static void showQuteComAccount(); + + /** + * Opens a web browser and shows the QuteCom account creation page. + */ + static void showQuteComAccountCreation(); + + /** + * Opens a web browser and shows the QuteCom help center page. + */ + static void showQuteComFAQ(); + + /** + * Opens a web browser and shows the QuteCom forum page. + */ + static void showQuteComForum(); + + /** + * Opens a web browser and shows the QuteCom smart directory page. + */ + static void showQuteComSmartDirectory(); + + /** + * Opens a web browser and shows the QuteCom callout page. + */ + static void showQuteComCallOut(); + + /** + * Opens a web browser and shows the QuteCom SMS page. + */ + static void showQuteComSMS(); + + /** + * Opens a web browser and shows the QuteCom voice mail page. + */ + static void showQuteComVoiceMail(); + + /** + * Opens a web browser and shows the QuteCom buy page. + */ + static void showQuteComBuyQuteComs(); + + /** + * Opens a web browser and shows the QuteCom download page. + */ + static void showQuteComDownload(); + + /** + * Opens a web browser and shows the QuteCom phone number associated with the QuteCom account. + */ + static void showQuteComNumber(); + + /** + * Opens a web browser and shows the QuteCom wiki page. + */ + static void showWikiPage(); + + /** + * Opens a web browser and shows the lost password page. + */ + static void showLostPasswordPage(); + + /** + * Opens a web browser and shows launchpad QuteCom page. + */ + static void showLauchpadPage(); + + /** + * Gets the QuteCom directory url. + * + * @return QuteCom directory url + */ + static std::string getQuteComDirectoryUrl(); + +private: + + /** + * Opens a web browser with the given url. + * + * @param url the url to open + */ + static void openQuteComUrlWithoutAuth(const std::string & url); + + /** + * Opens a web browser with the given url. + * + * @param url the url to open + */ + static void openQuteComUrlWithAuth(const std::string & url); + + /** + * Gets url without authentication. + * + * @param url the url to transform + */ + static std::string getUrlWithoutAuth(const std::string & url); + + /** + * Gets url with authentication. + * + * @param url the url to transform + */ + static std::string getUrlWithAuth(const std::string & url); + + /** + * Sets the value of _qutecomAccount. + */ + static void setQuteComAccount(QuteComAccount * qutecomAccount) { + _qutecomAccount = qutecomAccount; + } + + /** Link to the current QuteComAccount. */ + static QuteComAccount * _qutecomAccount; +}; + +#endif //OWWSURL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkFactory.h qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkFactory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GTKFACTORY_H +#define GTKFACTORY_H + +#include "presentation/PFactory.h" +#include "GtkQuteCom.h" +#include "control/CQuteCom.h" +#include "phoneline/GtkPhoneLine.h" +#include "control/phoneline/CPhoneLine.h" + +#include + +class GtkFactory : public PFactory { +public: + + GtkFactory(int argc, char * argv[]) { + gtk_init(& argc, & argv); + } + + int exec() { + gtk_main(); + return EXIT_SUCCESS; + } + + PQuteCom * createPresentationQuteCom(CQuteCom * cQuteCom) { + return new GtkQuteCom(cQuteCom); + } + + PPhoneLine * createPresentationPhoneLine(CPhoneLine * cPhoneLine) { + return new GtkPhoneLine(cPhoneLine); + } + + PPhoneCall * createPresentationPhoneCall(CPhoneCall * cPhoneCall) { + //return new GtkPhoneCall(cPhoneCall); + return NULL; + } + + PQuteComLogger * createPresentationLogger(CQuteComLogger * cQuteComLogger) { + return NULL; + } + + PContactList * createPresentationContactList(CContactList * cContactList) { + return NULL; + } + + PContactGroup * createPresentationContactGroup(CContactGroup * cContactGroup) { + return NULL; + } + + PContact * createPresentationContact(CContact * cContact) { + return NULL; + } +}; + +#endif //GTKFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "GtkQuteCom.h" + +#include "control/CQuteCom.h" + +#include "WidgetFactory.h" + +static bool delete_event(GtkWidget *, GdkEvent *, gpointer) { + return false; +} + +static void destroy(GtkWidget *, gpointer) { + gtk_main_quit(); +} + +GtkQuteCom::GtkQuteCom(CQuteCom * cQuteCom) { + _cQuteCom = cQuteCom; + + WidgetFactory factory("qutecom.glade"); + factory.signalAutoConnect(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.h qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GTKQUTECOM_H +#define GTKQUTECOM_H + +#include "presentation/PQuteCom.h" + +#include + +class CQuteCom; +class PPhoneLine; + +class GtkQuteCom : public PQuteCom { +public: + + GtkQuteCom(CQuteCom * cQuteCom); + + void addPhoneLine(PPhoneLine * phoneLine) { + } + + void showCreateAccountWindow() { + } + + void updatePresentation() { + } + +private: + + void initThreadSafe() { + } + + void updatePresentationThreadSafe() { + } + + void addPhoneLineThreadSafe(PPhoneLine * pPhoneLine) { + } + + CQuteCom * _cQuteCom; + + GtkWidget * _mainWindow; +}; + +#endif //GTKQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "GtkQuteComLogger.h" + +#include "GtkQuteCom.h" +#include "control/CQuteCom.h" + +GtkQuteComLogger::GtkQuteComLogger(CQuteComLogger * cQuteComLogger) { + _cQuteComLogger = cQuteComLogger; + + initThreadSafe(); +} + +void GtkQuteComLogger::initThreadSafe() { + _loggerWidget = WidgetFactory::create(":/forms/QuteComLoggerWidget.ui", NULL); + + QtQuteCom * qtQuteCom = (QtQuteCom *) _cQuteComLogger->getCQuteCom()->getPresentation(); + qtQuteCom->setLogger(this); +} + +void GtkQuteComLogger::addMessage(const std::string & message) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtQuteComLogger::addMessageThreadSafe, this, _1), message); + postEvent(event); +} + +void GtkQuteComLogger::addMessageThreadSafe(std::string message) { + static QListWidget * listWidget = Object::findChild(_loggerWidget, "listWidget"); + + listWidget->addItem(message.c_str()); + listWidget->scrollToItem(listWidget->item(listWidget->count() - 1)); +} + +void GtkQuteComLogger::updatePresentation() { +} + +void GtkQuteComLogger::updatePresentationThreadSafe() { +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.h qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/GtkQuteComLogger.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GTKQUTECOMLOGGER_H +#define GTKQUTECOMLOGGER_H + +#include "control/CQuteComLogger.h" +#include "presentation/PQuteComLogger.h" + +/** + * GTK+ Presentation component for QuteComLogger. + * + * @author Tanguy Krotoff + */ +class GtkQuteComLogger : public PQuteComLogger { +public: + + GtkQuteComLogger(CQuteComLogger * cQuteComLogger); + + void updatePresentation(); + + void addMessage(const std::string & message); + +private: + + void initThreadSafe(); + + void updatePresentationThreadSafe(); + + void addMessageThreadSafe(std::string message); + + CQuteComLogger * _cQuteComLogger; +}; + +#endif //GTKQUTECOMLOGGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "GtkPhoneLine.h" + +#include "control/phoneline/CPhoneLine.h" + +GtkPhoneLine::GtkPhoneLine(CPhoneLine* cPhoneLine) { + _cPhoneLine = cPhoneLine; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/phoneline/GtkPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef GTKPHONELINE_H +#define GTKPHONELINE_H + +#include "presentation/PPhoneLine.h" + +class CPhoneLine; + +class GtkPhoneLine : public PPhoneLine { +public: + + GtkPhoneLine(CPhoneLine* cPhoneLine); + + void updatePresentation() { + } + + void setState(const std::string & status) { + } + +private: + + void initThreadSafe() { + } + + void updatePresentationThreadSafe() { + } + + CPhoneLine * _cPhoneLine; +}; + +#endif //GTKPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/qutecom.glade qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/qutecom.glade --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/qutecom.glade 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/qutecom.glade 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,518 @@ + + + + + + + True + QuteCom + GTK_WINDOW_TOPLEVEL + GTK_WIN_POS_NONE + False + True + False + True + False + False + GDK_WINDOW_TYPE_HINT_NORMAL + GDK_GRAVITY_NORTH_WEST + True + + + + True + False + 0 + + + + True + True + True + True + GTK_POS_TOP + False + False + + + + True + label6 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + False + True + + + + + + True + Home + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + True + True + GTK_POLICY_ALWAYS + GTK_POLICY_ALWAYS + GTK_SHADOW_IN + GTK_CORNER_TOP_LEFT + + + + True + True + True + False + False + True + False + False + False + + + + + False + True + + + + + + True + Debug + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + True + label7 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + False + True + + + + + + True + Contacts + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + True + 4 + 3 + False + 0 + 0 + + + + True + True + 1 + True + GTK_RELIEF_NORMAL + True + + + 0 + 1 + 0 + 1 + fill + + + + + + + True + True + 2 abc + True + GTK_RELIEF_NORMAL + True + + + 1 + 2 + 0 + 1 + fill + + + + + + + True + True + 3 def + True + GTK_RELIEF_NORMAL + True + + + 2 + 3 + 0 + 1 + fill + + + + + + + True + True + 4 ghi + True + GTK_RELIEF_NORMAL + True + + + 0 + 1 + 1 + 2 + fill + + + + + + + True + True + 5 jkl + True + GTK_RELIEF_NORMAL + True + + + 1 + 2 + 1 + 2 + fill + + + + + + + True + True + 6 mno + True + GTK_RELIEF_NORMAL + True + + + 2 + 3 + 1 + 2 + fill + + + + + + + True + True + 7 pqrs + True + GTK_RELIEF_NORMAL + True + + + 0 + 1 + 2 + 3 + fill + + + + + + + True + True + 8 tuv + True + GTK_RELIEF_NORMAL + True + + + 1 + 2 + 2 + 3 + fill + + + + + + + True + True + 9 wxyz + True + GTK_RELIEF_NORMAL + True + + + 2 + 3 + 2 + 3 + fill + + + + + + + True + True + * + True + GTK_RELIEF_NORMAL + True + + + 0 + 1 + 3 + 4 + fill + + + + + + + True + True + 0 + + True + GTK_RELIEF_NORMAL + True + + + 1 + 2 + 3 + 4 + fill + + + + + + + True + True + # + True + GTK_RELIEF_NORMAL + True + + + 2 + 3 + 3 + 4 + fill + + + + + + False + True + + + + + + True + Dialpad + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + + True + label8 + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + False + True + + + + + + True + History + False + False + GTK_JUSTIFY_LEFT + False + False + 0.5 + 0.5 + 0 + 0 + PANGO_ELLIPSIZE_NONE + -1 + False + 0 + + + tab + + + + + 0 + True + True + + + + + + True + True + + + 0 + False + False + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/WidgetFactory.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/WidgetFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/WidgetFactory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/WidgetFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,38 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WidgetFactory.h" + +#include + +WidgetFactory::WidgetFactory(const std::string & gladeFile) { + _xml = glade_xml_new(gladeFile.c_str(), NULL, NULL); + assert(_xml && "libglade error: can't load the .glade file"); +} + +GtkWidget * WidgetFactory::getWidget(const std::string & widgetName) { + GtkWidget * widget = glade_xml_get_widget(_xml, widgetName.c_str()); + assert(widget && "libglade error: can't get the widget"); + + return widget; +} + +void WidgetFactory::signalAutoConnect() { + glade_xml_signal_autoconnect(_xml); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/WidgetFactory.h qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/WidgetFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/gtk/WidgetFactory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/gtk/WidgetFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef WIDGETFACTORY_H +#define WIDGETFACTORY_H + +#include + +#include +#include + +#include + +class WidgetFactory { +public: + + WidgetFactory(const std::string & gladeFile); + + /** + * Gets a widget (useful if you want to change something). + * + * @param widgetName name of the widget to retrieve + * @return GtkWidget (never NULL: it makes an assert) + */ + GtkWidget * getWidget(const std::string & widgetName); + + /** + * Connects signal handlers. + */ + void signalAutoConnect(); + +private: + + GladeXML * _xml; +}; + +#endif //WIDGETFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/main.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,391 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#ifdef GTKINTERFACE + #include +#else + #include + #include +#endif + +#include +#include +#include + +#include + +#ifdef PHAPIWRAPPER + #include + #include <../src/null/NullIMFactory.h> +#elif defined(SIPXWRAPPER) + #include + #include +#elif defined (MULTIIMWRAPPER) + #include + #include + #include +#else + #include + #include +#endif + +#include +#include +#include +#include +#include + +#include + +#include + +#include + +#if defined(ENABLE_CRASHREPORT) +#if defined(CC_MSVC) + #include +#elif defined(CC_MINGW) + #include +#elif defined(OS_LINUX) + #include +#elif defined(OS_MACOSX) + #include +#endif +#endif // ENABLE_CRASHREPORT + +#if defined(OS_MACOSX) || defined(OS_LINUX) + #include + #include +#endif + +#include + +#include + +#include + +#if defined(OS_LINUX) + #include +#endif + +static const char* CONFIG_SUBDIR = "/config/"; + + +/** + * Helper class to instantiate and delete factories based on the compilation + * flags. + */ +struct FactoryHelper { + FactoryHelper() { + #ifdef SIPXWRAPPER + _sipFactory = new SipXFactory(); + _imFactory = new NullIMFactory(); + + SipWrapperFactory::setFactory(_sipFactory); + IMWrapperFactory::setFactory(_imFactory); + + #elif defined(PHAPIWRAPPER) + PhApiFactory* phApiFactory = new PhApiFactory(); + _sipFactory = phApiFactory; + + _imFactory = phApiFactory; + + SipWrapperFactory::setFactory(phApiFactory); + IMWrapperFactory::setFactory(_imFactory); + + #elif defined(MULTIIMWRAPPER) + PhApiFactory* phApiFactory = new PhApiFactory(); + _sipFactory = phApiFactory; + _purpleIMFactory = new PurpleIMFactory(); + _imFactory = new MultiIMFactory(*phApiFactory, *_purpleIMFactory); + + SipWrapperFactory::setFactory(phApiFactory); + IMWrapperFactory::setFactory(_imFactory); + + + #else + _sipFactory = new NullSipFactory(); + _imFactory = new NullIMFactory(); + + SipWrapperFactory::setFactory(_sipFactory); + IMWrapperFactory::setFactory(_imFactory); + + + #endif + + } + + ~FactoryHelper() { + OWSAFE_DELETE(_sipFactory); +#ifndef PHAPIWRAPPER + OWSAFE_DELETE(_imFactory); +#endif + + #ifdef MULTIIMWRAPPER + OWSAFE_DELETE(_purpleIMFactory); + #endif + } + + IMWrapperFactory * _imFactory; + SipWrapperFactory * _sipFactory; + +#if defined(MULTIIMWRAPPER) + PurpleIMFactory* _purpleIMFactory; +#endif + +}; + + +/** + * Stub function to make GCC silent. + * + * @see http://www-eleves-isia.cma.fr/documentation/BoostDoc/boost_1_29_0/libs/test/doc/minimal.htm + */ +int test_main(int argc, char *argv[]) { + return 1; +} + +static void initLogger(const std::string& userConfigDir) { + std::string logFileName = userConfigDir + BINARY_NAME + ".log"; + // create directory if it doesn't exist + if (!File::exists(userConfigDir)) { + File::createPath(userConfigDir); + } + if (!File::isDirectory(userConfigDir)) { + LOG_FATAL("User configuration dir '" + userConfigDir + "' does not exist or is not a directory"); + } + + Logger::getInstance()->setLogFileName(logFileName); +} + +static void initConfig(const CommandLineParser& cmdLineParser) { + ConfigManagerFileStorage configManagerStorage(ConfigManager::getInstance()); + + std::string resourcesDir = cmdLineParser.getResourcesDir(); + if (!File::isDirectory(resourcesDir)) { + LOG_FATAL("Resources dir '" + resourcesDir + "' does not exist or is not a directory"); + } + + std::string userConfigDir = cmdLineParser.getUserConfigDir(); + configManagerStorage.loadSystemConfig(resourcesDir + CONFIG_SUBDIR); + Config::setConfigDir(userConfigDir); + ConfigImporter importer; + importer.importConfig(); + configManagerStorage.loadUserConfig(userConfigDir); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.setResourcesDir(resourcesDir); + WebBrowser::setBrowser(config.getLinuxPreferedBrowser()); +} + +static void registerHyperlinkProtocol(const Config& config, const std::string& executableName) { + RegisterProtocol registerProtocol(config.getHyperlinkProtocol()); + std::string executableFullName = Path::getApplicationDirPath() + executableName; + registerProtocol.bind(executableFullName + " -c %1", executableFullName + ",0", config.getCompanyWebSiteUrl()); +} + +/** + * Callback additional info for MemoryDump. + */ +std::string getAdditionalInfo() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::stringstream stream; + stream + << "User: " << config.getProfileLastUsedName() << std::endl + << "buildid: " << QuteComBuildId::getBuildId() << std::endl + << "revision: " << QuteComBuildId::getSvnRevision() << std::endl; + return stream.str(); +} + +#if defined(OS_MACOSX) || defined(OS_LINUX) +static void sigpipe_catcher(int sig) { +#ifndef NDEBUG + // Do not use LOG_DEBUG. There is only a limited set of functions you are + // allowed to call from withing a signal catcher. See signal man page. + static char msg[] = "Caught signal: SIGPIPE\n"; + write(2, msg, sizeof(msg)); +#endif +} +#endif + +int main(int argc, char * argv[]) { + //Init presentation factories before parsing the command line so that Qt or + //Gtk get a chance to parse their command line options ('-style' for Qt for + //example) + int nocrashreport = 0; +#if defined(OS_MACOSX) + std::locale lc; +#else + std::locale lc(""); +#endif + std::locale::global(lc); + + PFactory * pFactory = NULL; +#if defined(OS_LINUX) + XInitThreads(); +#endif + +#ifdef GTKINTERFACE + pFactory = new GtkFactory(argc, argv); +#else + pFactory = new QtFactory(argc, argv); +#endif + +#if defined(OS_MACOSX) + QDir dir(QApplication::applicationDirPath()); + dir.cdUp(); + dir.cd("plugins"); + QApplication::setLibraryPaths(QStringList(dir.absolutePath())); +#endif + + PFactory::setFactory(pFactory); + + CommandLineParser cmdLineParser(BINARY_NAME, argc, argv); + initLogger(cmdLineParser.getUserConfigDir()); + LOG_DEBUG("Started"); + +#if defined(OS_MACOSX) || defined(OS_LINUX) + signal(SIGPIPE, sigpipe_catcher); +#endif + + // Setup factories. These must be initialized before loading config because + // it's used when importing configuration from the Classic version. + FactoryHelper factoryHelper; + + initConfig(cmdLineParser); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + SipWrapper* w = factoryHelper._sipFactory->createSipWrapper(); + + w->setSipOptions("sip.register_timeout", std::string(QString::number(config.getSipRegisterTimeOut()).toUtf8())); + w->setSipOptions("sip.publish_timeout", std::string(QString::number(config.getSipPublishTimeOut()).toUtf8())); + if(config.getSipUseOptions()) + w->setSipOptions("sip.use_options_request", "true"); + else + w->setSipOptions("sip.use_options_request", "false"); + + if(config.getSipP2pPresence()) + w->setSipOptions("sip.p2p_presence", "true"); + else + w->setSipOptions("sip.p2p_presence", "false"); + + if(config.getSipChatWithoutPresence()) + w->setSipOptions("sip.chat.without.presence", "true"); + else + w->setSipOptions("sip.chat.without.presence", "false"); + + if(config.getSipUseTypingState()) + w->setSipOptions("sip.use_typing_state", "true"); + else + w->setSipOptions("sip.use_typing_state", "false"); + + + //Remove QuteCom Classic from startup registry + ClassicExterminator::killClassicExecutable(); + + //Remove QuteCom Classic from startup registry + ClassicExterminator::removeClassicFromStartup(); + +#ifdef ENABLE_CRASHREPORT + for(int i = 1; i < argc; i++) { + if (!strcmp(argv[i], "-nocrash")) { + nocrashreport = 1; + break; + } + } + + if (!nocrashreport) { + #if defined(CC_MSVC) + MSVCMemoryDump * memoryDump = new MSVCMemoryDump("QuteCom", QuteComBuildId::getSvnRevision()); + // This is needed for CRT to not show dialog for invalid param + // failures and instead let the code handle it. + _CrtSetReportMode(_CRT_ASSERT, 0); + #endif + + #if defined(OS_MACOSX) + MACMemoryDump * memoryDump = new MACMemoryDump("QuteCom", QuteComBuildId::getSvnRevision()); + #endif + + #if defined(OS_LINUX) + UNIXMemoryDump * memoryDump = new UNIXMemoryDump("QuteCom", QuteComBuildId::getSvnRevision()); + #endif + + memoryDump->setGetAdditionalInfo(getAdditionalInfo); + } + +#endif // ENABLE_CRASHREPORT + + // Uncomment to test crash report + + /*int* pointer; + pointer = 0; + *pointer = 12;*/ + + + //No 2 qtqutecom at the same time + if (Processes::isRunning(BINARY_NAME) && !cmdLineParser.isSeveralQuteComAllowed()) { + const std::string callFromCommandLine = cmdLineParser.getCommand(); + CommandClient client; + client.connect(); + if (!callFromCommandLine.empty()) { + client.call(callFromCommandLine); + } else { + client.bringToFront(); + } + return EXIT_SUCCESS; + } + + // Register protocol used to associate the application in HTML links + registerHyperlinkProtocol(config, cmdLineParser.getExecutableName()); + + // Make the application starts when user logs on computer + StartupSettingListener settingListener(cmdLineParser.getExecutableName()); + + // Init file system resource engine + FSResourceFileEngineHandler handler(QString::fromUtf8(config.getResourcesDir().c_str())); + + // CQuteCom creates PQuteCom (QtQuteCom, GtkQuteCom...) + // and then starts the model thread. This way the gui is shown as soon as + // possible + QuteCom & qutecomPhone = QuteCom::getInstance(); + qutecomPhone.setStartupCall(cmdLineParser.getCommand()); + CQuteCom cQuteCom(qutecomPhone, cmdLineParser.getRunInBackground()||config.getGeneralStartBackgroundMode()); + pFactory->exec(); + + QuteCom::deleteInstance(); + LOG_DEBUG("Ended"); + + return EXIT_SUCCESS; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PChatHandler.h qutecom-2.2+dfsg1/qutecom/src/presentation/PChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PChatHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PChatHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPCHATHANDLER_H +#define OWPCHATHANDLER_H + +#include + +class IMChatSession; + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class PChatHandler : public Presentation { +public: + + /** + * @see ChatHandler::newIMChatSessionCreatedEvent + */ + virtual void newIMChatSessionCreatedEvent(IMChatSession & imChatSession) = 0; + + virtual void deletePresentation() = 0; +}; + +#endif //OWPCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PConferenceCall.h qutecom-2.2+dfsg1/qutecom/src/presentation/PConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PConferenceCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPCONFERENCECALL_H +#define OWPCONFERENCECALL_H + +#include "Presentation.h" + +#include + +class CConferenceCall; + +/** + * Graphical representation of a ConferenceCall. + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PConferenceCall : public Presentation { +public: + + virtual CConferenceCall & getCConferenceCall() const = 0; + + /** + * @see ConferenceCall::stateChangedEvent + */ + virtual void stateChangedEvent(EnumConferenceCallState::ConferenceCallState state) = 0; + + /** + * @see ConferenceCall::phoneCallAddedEvent + */ + virtual void phoneCallAddedEvent(CPhoneCall & cPhoneCall) = 0; + + /** + * @see ConferenceCall::phoneCallRemovedEvent + */ + virtual void phoneCallRemovedEvent(CPhoneCall & cPhoneCall) = 0; +}; + +#endif //OWPCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PContactList.h qutecom-2.2+dfsg1/qutecom/src/presentation/PContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PContactList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPCONTACTLIST_H +#define OWPCONTACTLIST_H + +#include "Presentation.h" + +#include + +/** + * + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PContactList : public Presentation { +public: + + /** + * A toaster must be showed with a contact description inside. + * + * FIXME not finished yet + * + * @param contactId contact UUID to show + */ + //Event showToaster; + + /** + * Called by the control when a group has been added. + * + * @param contactGroupId the contact group UUID + */ + virtual void contactGroupAddedEvent(const std::string & groupId) = 0; + + /** + * Called by the control when a group has been removed. + * + * @param contactGroupId the contact group UUID + */ + virtual void contactGroupRemovedEvent(const std::string & groupId) = 0; + + /** + * Called by the control when a group has been renamed. + * + * @param contactGroupId the contact group UUID + */ + virtual void contactGroupRenamedEvent(const std::string & groupId) = 0; + + /** + * Called by the control when a contact has been added. + * + * @param contactId the contact UUID + */ + virtual void contactAddedEvent(const std::string & contactId) = 0; + + /** + * Called by the control when a contact has been removed. + * + * @param contactId the contact UUID + */ + virtual void contactRemovedEvent(const std::string & contactId) = 0; + + /** + * Called by the control when a contact has moved. + * + * @param dstGroupId the contact group UUID + * @param srcGroupId the contact group UUID + * @param contactId the contact UUID + */ + virtual void contactMovedEvent(const std::string & dstGroupId, + const std::string & srcGroupId, const std::string & contactId) = 0; + + /** + * Called by the control when a contact has changed. + * + * @param contactId the UUID of the changed Contact + */ + virtual void contactChangedEvent(const std::string & contactId) = 0; +}; + +#endif //OWPCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PFactory.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/PFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PFactory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,22 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "PFactory.h" + +PFactory * PFactory::_factory = 0; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PFactory.h qutecom-2.2+dfsg1/qutecom/src/presentation/PFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PFactory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,138 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPFACTORY_H +#define OWPFACTORY_H + +class CQuteCom; +class PQuteCom; +class CPhoneLine; +class PPhoneLine; +class CPhoneCall; +class PPhoneCall; +class CContactList; +class PContactList; +class CContactGroup; +class PContactGroup; +class CContact; +class PContact; +class CConnectHandler; +class PConnectHandler; +class CPresenceHandler; +class PPresenceHandler; +class CChatHandler; +class PChatHandler; +class PSms; +class CSms; +class PHistory; +class CHistory; +class PSoftUpdate; +class CSoftUpdate; +class PUserProfile; +class CUserProfile; +class PUserProfileHandler; +class CUserProfileHandler; +class PConferenceCall; +class CConferenceCall; +class CDtmfThemeManager; + +class IThreadEvent; + +/** + * Factories for the presentation component. + * + * Depending on the factory instanciated, the presentation component will use Qt, GTK+ + * or what ever you prefer. + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PFactory { +public: + + /** + * Sets the PresentationFactory to use (Qt or GTK+ in this case). + * + * @param factory factory to create the presentation component + */ + static void setFactory(PFactory * factory) { + _factory = factory; + } + + static PFactory & getFactory() { + return * _factory; + } + + virtual ~PFactory() { + delete _factory; + } + + virtual PQuteCom * createPresentationQuteCom(CQuteCom & cQuteCom, bool runInBackground) = 0; + + virtual PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile) = 0; + + virtual PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) = 0; + + virtual PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine) = 0; + + virtual PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall) = 0; + + virtual PContactList * createPresentationContactList(CContactList & cContactList) = 0; + + virtual PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler) = 0; + + virtual PSms * createPresentationSms(CSms & cSms) = 0; + + virtual PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) = 0; + + virtual PHistory * createPresentationHistory(CHistory & cHistory) = 0; + + virtual PConferenceCall * createPresentationConferenceCall(CConferenceCall & cConferenceCall) = 0; + + //DtmfThemeManager + virtual void createPresentationDtmfThemeManager(CDtmfThemeManager & _dtmfThemeManager) = 0; + + /** + * Because of the presentation event loop. + * + * @see QApplication::exec() + */ + virtual int exec() = 0; + + /** Processes all pending events of the presentation. */ + virtual void processEvents() = 0; + + /** Reset the factory. */ + virtual void reset() = 0; + + /** @see QApplication::postEvent() */ + static void postEvent(IThreadEvent * event) { + _factory->postEventImpl(event); + } + +protected: + + virtual void postEventImpl(IThreadEvent * event) = 0; + +private: + + static PFactory * _factory; +}; + +#endif //OWPFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PHistory.h qutecom-2.2+dfsg1/qutecom/src/presentation/PHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PHistory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PHistory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPHISTORY_H +#define OWPHISTORY_H + +#include "Presentation.h" + +/** + * + * @ingroup presentation + * @author Mathieu Stute + */ +class PHistory : public Presentation { +public: + + virtual void historyLoadedEvent() = 0; + + virtual void mementoAddedEvent(unsigned id) = 0; + + virtual void mementoUpdatedEvent(unsigned id) = 0; + + virtual void mementoRemovedEvent(unsigned id) = 0; + + virtual void unseenMissedCallsChangedEvent(int count) = 0; +}; + +#endif //OWPHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PPhoneCall.h qutecom-2.2+dfsg1/qutecom/src/presentation/PPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PPhoneCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPPHONECALL_H +#define OWPPHONECALL_H + +#include "Presentation.h" + +#include + +#include + +class CPhoneCall; + +/** + * Graphical representation of a PhoneCall. + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PPhoneCall : public Presentation { +public: + + virtual CPhoneCall & getCPhoneCall() const = 0; + + /** + * @see PhoneCall::stateChangedEvent + */ + virtual void stateChangedEvent(EnumPhoneCallState::PhoneCallState state) = 0; + + /** + * @see PhoneCall::videoFrameReceivedEvent + */ + virtual void videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame) = 0; + + /** + * The phone call has been closed, widget must be closed/destroyed. + */ + virtual void close() = 0; +}; + +#endif //OWPPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/presentation/PPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,57 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PPHONELINE_H +#define PPHONELINE_H + +#include "Presentation.h" + +#include + +#include + +#include + +class CPhoneCall; + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PPhoneLine : public Presentation { +public: + + /** + * @see PhoneLine::stateChangedEvent + */ + Event stateChangedEvent; + + /** + * @see PhoneLine::phoneCallCreatedEvent + */ + Event phoneCallCreatedEvent; + + /** + * @see PhoneLine::phoneCallClosedEvent + */ + Event phoneCallClosedEvent; +}; + +#endif //PPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PQuteCom.h qutecom-2.2+dfsg1/qutecom/src/presentation/PQuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PQuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PQuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPQUTECOM_H +#define OWPQUTECOM_H + +#include "Presentation.h" + +class ContactInfo; + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class PQuteCom : public Presentation { +public: + + virtual void showHistory() = 0; + + virtual void showAddContact(ContactInfo contactInfo) = 0; + + virtual void bringMainWindowToFront() = 0; + + /** + * @see QuteCom::exitEvent + */ + virtual void exitEvent() = 0; +}; + +#endif //OWPQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/Presentation.h qutecom-2.2+dfsg1/qutecom/src/presentation/Presentation.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/Presentation.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/Presentation.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPRESENTATION_H +#define OWPRESENTATION_H + +#include + +/** + * @defgroup presentation Presentation Component + * + * The presentation includes all the classes implementing the graphical interface. + * Different graphical interfaces can be implemented (Qt, GTK+...). + * + * The control component dialogs with the presentation via interfaces. + * On the other hand the presentation dialogs directly with the control component. + * + * All classes inside the presentation component are named using a leading 'P' letter and + * are inside the subdirectory presentation. + * + * Classes specific to the Qt graphical interface are inside the directory qt, + * classes specific to the GTK+ graphical interface are inside the directory gtk ect... + */ + +/** + * Interface between the control component and the presentation component. + * + * The control component deals with the presentation component only via + * this interface and its subclass. Thus control and presentation + * are totally separated. + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class Presentation : Interface { +public: + + virtual ~Presentation() { + } + + /** + * Updates the presentation component. + * + * Cannot call this method update() since QWidget also + * contains a method update() + */ + virtual void updatePresentation() = 0; +}; + +#endif //OWPRESENTATION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSms.h qutecom-2.2+dfsg1/qutecom/src/presentation/PSms.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSms.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PSms.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PSMS_H +#define PSMS_H + +#include "Presentation.h" + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PSms : public Presentation { +public: + +}; + +#endif //PSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSoftUpdate.h qutecom-2.2+dfsg1/qutecom/src/presentation/PSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PSoftUpdate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PSOFTUPDATE_H +#define PSOFTUPDATE_H + +#include "Presentation.h" + +#include + +#include + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + */ +class PSoftUpdate : public Presentation { +public: + + /** + * @see SoftUpdate::updateQuteComEvent + */ + Event updateQuteComEvent; +}; + +#endif //PSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSubscribe.h qutecom-2.2+dfsg1/qutecom/src/presentation/PSubscribe.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PSubscribe.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PSubscribe.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PSUBSCRIBE_H +#define PSUBSCRIBE_H + +#include "Presentation.h" + +/** + * + * @ingroup presentation + * @author Mathieu Stute + */ +class PSubscribe : public Presentation { +public: + +}; + +#endif //PSUBSCRIBE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PUserProfile.h qutecom-2.2+dfsg1/qutecom/src/presentation/PUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PUserProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PUserProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWPUSERPROFILE_H +#define OWPUSERPROFILE_H + +#include "Presentation.h" + +#include + +#include + +class IMContact; +class PresenceHandler; + +/** + * Presentation layer of UserProfile. + * + * @ingroup presentation + * @author Philippe Bernery + */ +class PUserProfile : public Presentation { +public: + + /** + * @see UserProfile::loginStateChangedEvent + */ + virtual void loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state) = 0; + + /** + * @see UserProfile::networkDiscoveryStateChangedEvent + */ + virtual void networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state) = 0; + + /** + * @see PresenceHandler::authorizationRequestEvent + */ + virtual void authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message) = 0; + + /** + * @see PresenceHandler::incomingSubscribeEvent + */ + virtual void incomingSubscribeEventHandler(PresenceHandler & sender, + const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType) = 0; +}; + +#endif //OWPUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PUserProfileHandler.h qutecom-2.2+dfsg1/qutecom/src/presentation/PUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PUserProfileHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,76 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PUSERPROFILEHANDLER_H +#define PUSERPROFILEHANDLER_H + +#include "Presentation.h" + +#include + +#include + +class QuteComAccount; + +/** + * Presentation layer of UserProfileHandler + * @ingroup presentation + * @author Philippe Bernery + */ +class PUserProfileHandler : public Presentation { +public: + + virtual void setCurrentUserProfileEventHandler() = 0; + /** + * @see UserProfileHandler::noCurrentUserProfileSetEvent + */ + virtual void noCurrentUserProfileSetEventHandler() = 0; + + /** + * @see UserProfileHandler::currentUserProfileWillDieEvent + */ + virtual void currentUserProfileWillDieEventHandler() = 0; + + /** + * @see UserProfileHandler::userProfileInitializedEvent + */ + virtual void userProfileInitializedEventHandler() = 0; + + /** + * @see UserProfileHandler::sipAccountConnectionFailedEvent + */ + virtual void sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState) = 0; + + /** + * @see UserProfileStorage::profileLoadedFromBackupsEvent + */ + virtual void profileLoadedFromBackupsEventHandler(std::string profileName) = 0; + + /** + * @see UserProfileStorage::profileCannotBeLoadedEvent + */ + virtual void profileCannotBeLoadedEventHandler(std::string profileName) = 0; + + /** + * @see CUserProfileHandler::networkDiscoveryStateChangedEventHandler + */ + virtual void networkErrorEventHandler(const SipAccount & sipAccount) = 0; +}; + +#endif //PUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PWsDirectory.h qutecom-2.2+dfsg1/qutecom/src/presentation/PWsDirectory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/PWsDirectory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/PWsDirectory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef PWSDIRECTORY_H +#define PWSDIRECTORY_H + +#include "Presentation.h" + +/** + * + * @ingroup presentation + * @author Mathieu Stute + */ +class PWsDirectory : public Presentation { +public: + +}; + +#endif //PWSDIRECTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/AboutWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/AboutWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/AboutWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/AboutWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,226 @@ + + AboutWindow + + + + 0 + 0 + 460 + 367 + + + + @product@ - About + + + true + + + + 9 + + + 9 + + + 9 + + + 9 + + + 6 + + + 6 + + + + + :/pics/about_logo.png + + + Qt::AlignHCenter + + + + + + + + About + + + + 9 + + + 9 + + + 9 + + + 9 + + + 6 + + + 6 + + + + + false + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + @product@, a voice over Internet phone + + + + + + + Copyright (C)2008 Mbdsys + + + + + + + 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. + + + + + + + + Authors + + + + 9 + + + 9 + + + 9 + + + 9 + + + 6 + + + 6 + + + + + true + + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + + + + + Qt::Horizontal + + + + 301 + 26 + + + + + + + + Close + + + + + + + + + tabWidget + closeButton + authorsTextEdit + + + + + + + closeButton + clicked() + AboutWindow + reject() + + + 453 + 498 + + + 212 + 262 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/buildconfig.h.cmake qutecom-2.2+dfsg1/qutecom/src/presentation/qt/buildconfig.h.cmake --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/buildconfig.h.cmake 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/buildconfig.h.cmake 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1 @@ +#define BINARY_NAME "${BINARY_NAME}" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,164 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtCallBar.h" +#include "QtPhoneComboBox.h" + +#include +#include +#include +#include + +#include + +QtCallBar::QtCallBar(QWidget * parent) + : QFrame(parent) { + + init(); +} + +QtCallBar::~QtCallBar() { +} + +void QtCallBar::init() { + setLayoutDirection(Qt::LeftToRight); + //callButton + _callButton = new QuteComStyleLabel(this); + _callButton->setPixmaps( + QPixmap(":/pics/callbar/call_bar_button.png"), //Start + QPixmap(), //End + QPixmap(), //Fill + + QPixmap(":/pics/callbar/call_bar_button_on.png"), //Start + QPixmap(), //End + QPixmap() //Fill + ); + _callButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + connect(_callButton, SIGNAL(clicked()), SLOT(callButtonClickedSlot())); + + //hangUpButton + _hangUpButton = new QuteComStyleLabel(this); + _hangUpButton->setPixmaps( + QPixmap(":/pics/callbar/call_bar_button_hangup.png"), //Start + QPixmap(), //End + QPixmap(), //Fill + + QPixmap(":/pics/callbar/call_bar_button_hangup_on.png"), //Start + QPixmap(), //End + QPixmap() //Fill + ); + _hangUpButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + connect(_hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonClickedSlot())); + + //phoneComboBoxContainerLabel + QuteComStyleLabel * phoneComboBoxContainerLabel = new QuteComStyleLabel(this); + phoneComboBoxContainerLabel->setPixmaps( + QPixmap(), //Start + QPixmap(), //End + QPixmap(":/pics/callbar/call_bar_fill.png"), //Fill + + QPixmap(), //Start + QPixmap(), //End + QPixmap(":/pics/callbar/call_bar_fill.png") //Fill + ); + QHBoxLayout * comboLayout = new QHBoxLayout(phoneComboBoxContainerLabel); + + //phoneComboBox + _phoneComboBox = new QtPhoneComboBox(phoneComboBoxContainerLabel); + _phoneComboBox->setEditable(true); + _phoneComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + languageChanged(); + _phoneComboBox->setAutoCompletion(false); + SAFE_CONNECT(_phoneComboBox->lineEdit(), SIGNAL(returnPressed()), SLOT(phoneComboBoxReturnPressedSlot())); + SAFE_CONNECT(_phoneComboBox, SIGNAL(editTextChanged(const QString &)), SLOT(phoneComboBoxEditTextChangedSlot(const QString &))); + MousePressEventFilter * leftMouseFilter = new MousePressEventFilter(this, SLOT(phoneComboBoxClickedSlot()), Qt::LeftButton); + _phoneComboBox->installEventFilter(leftMouseFilter); + + comboLayout->addWidget(_phoneComboBox); + + QHBoxLayout * layout = new QHBoxLayout(this); + layout->setMargin(0); + layout->setSpacing(0); + + layout->addWidget(phoneComboBoxContainerLabel); + layout->addWidget(_hangUpButton); + layout->addWidget(_callButton); + + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + + LANGUAGE_CHANGE(this); +} + +void QtCallBar::setEnabledCallButton(bool enable) { + _callButton->setEnabled(enable); +} + +void QtCallBar::setEnabledHangUpButton(bool enable) { + _hangUpButton->setEnabled(enable); +} + +std::string QtCallBar::getPhoneComboBoxCurrentText() const { + return std::string(_phoneComboBox->currentText().toUtf8()); +} + +void QtCallBar::clearPhoneComboBox() { + _phoneComboBox->clear(); +} + +void QtCallBar::clearPhoneComboBoxEditText() { + _phoneComboBox->clearEditText(); +} + +void QtCallBar::setPhoneComboBoxEditText(const std::string & text) { + _phoneComboBox->setEditText(QString::fromUtf8(text.c_str())); +} + +void QtCallBar::addPhoneComboBoxItem(const std::string & text) { + _phoneComboBox->insertItem(0, QString::fromUtf8(text.c_str())); +} + +void QtCallBar::callButtonClickedSlot() { + callButtonClicked(); +} + +void QtCallBar::hangUpButtonClickedSlot() { + hangUpButtonClicked(); +} + +void QtCallBar::phoneComboBoxReturnPressedSlot() { + phoneComboBoxReturnPressed(); +} + +void QtCallBar::phoneComboBoxEditTextChangedSlot(const QString & text) { + phoneComboBoxEditTextChanged(text); +} + +void QtCallBar::phoneComboBoxClickedSlot() { + phoneComboBoxClicked(); +} + +void QtCallBar::languageChanged() { + _phoneComboBox->languageChanged(); + _phoneComboBox->setEditText(tr("+(country code) number or nickname")); +} + +QtPhoneComboBox * QtCallBar::getQtPhoneComboBox() { + return _phoneComboBox; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtCallBar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCALLBAR_H +#define OWQTCALLBAR_H + +#include + +#include + +class QuteComStyleLabel; +class QtPhoneComboBox; + +class QString; +class QIcon; + +/** + * Call bar inside the main window. + * + * The call bas is composed with: + * - a call button + * - a hang up button + * - a phone number combo box + * + * @author Tanguy Krotoff + */ +class QtCallBar : public QFrame { + Q_OBJECT +public: + + QtCallBar(QWidget * parent); + + ~QtCallBar(); + + void setEnabledCallButton(bool enable); + + void setEnabledHangUpButton(bool enable); + + std::string getPhoneComboBoxCurrentText() const; + + void clearPhoneComboBox(); + + void clearPhoneComboBoxEditText(); + + void setPhoneComboBoxEditText(const std::string & text); + + /** + * Prepends an item to the combo box. + * + * @param text item to prepend + */ + void addPhoneComboBoxItem(const std::string & text); + + /** + * accessor to QtPhoneComboBox + * + * @return a pointor on the QtPhoneComboBox + */ + QtPhoneComboBox * getQtPhoneComboBox(); + +Q_SIGNALS: + + void callButtonClicked(); + + void hangUpButtonClicked(); + + void phoneComboBoxReturnPressed(); + + void phoneComboBoxEditTextChanged(const QString & text); + + void phoneComboBoxClicked(); + +private Q_SLOTS: + + void callButtonClickedSlot(); + + void hangUpButtonClickedSlot(); + + void phoneComboBoxReturnPressedSlot(); + + void phoneComboBoxEditTextChangedSlot(const QString & text); + + void phoneComboBoxClickedSlot(); + + void languageChanged(); + +private: + + void init(); + + QuteComStyleLabel * _callButton; + + QuteComStyleLabel * _hangUpButton; + + QtPhoneComboBox * _phoneComboBox; +}; + +#endif //OWQTCALLBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,318 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPhoneComboBox.h" +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include + +QtPhoneComboBox::QtPhoneComboBox(QWidget * parent) + : UpQComboBox(parent) { + + setLineEdit(new QtPhoneComboBoxLineEdit(this)); + + SAFE_CONNECT(this, SIGNAL(activated(const QString &)), SLOT(comboBoxActivated())); + SAFE_CONNECT(this, SIGNAL(popupDisplayed()), SLOT(popupDisplayedSlot())); + SAFE_CONNECT(this, SIGNAL(popupHidden()), SLOT(popupHiddenSlot())); + SAFE_CONNECT(this, SIGNAL(highlighted(const QString &)), SLOT(itemhighlighted(const QString &))); + + init(); +} + +void QtPhoneComboBox::init() { + _cleared = false; + _toolTipTextDone = false; + _originalPalette = palette(); + + //Grey color + _greyPalette.setColor(QPalette::Text, Qt::gray); + + setAutoCompletion(false); + setLayoutDirection(QApplication::layoutDirection()); +} + +QtPhoneComboBox::~QtPhoneComboBox() { +} + +void QtPhoneComboBox::setEditText(const QString & text) { + + if (!_toolTipTextDone) { + _toolTipTextDone = true; + _toolTip = text; + setToolTipText(); + } else { + clearLineEdit(); + QComboBox::setEditText(text); + } +} + +QString QtPhoneComboBox::currentText() const { + if (QComboBox::currentText() == _toolTip) { + return QString::null; + } else { + return QComboBox::currentText(); + } +} + +void QtPhoneComboBox::setToolTipText() { + //Text color is grey + lineEdit()->setPalette(_greyPalette); + + _cleared = false; + QComboBox::setEditText(_toolTip); +} + +void QtPhoneComboBox::clearLineEdit() { + //Text color back to original color + lineEdit()->setPalette(_originalPalette); + + clearEditText(); + _cleared = true; +} + +void QtPhoneComboBox::insertPhoneNumber(QStringList * phoneList, std::string toBeAdded) { + if (!toBeAdded.empty()) { + QString phone(toBeAdded.c_str()); + (*phoneList) << phone; + } +} + +void QtPhoneComboBox::clearList() { + //Text color back to original color + lineEdit()->setPalette(_originalPalette); + + QStringList tobeinserted = QStringList(); + clear(); + _totalCompletionList.clear(); + _restrainedCompletionList.clear(); + + //completion of contact + CUserProfile* cuserprofile = _qtQuteCom->getCQuteCom().getCUserProfileHandler().getCUserProfile(); + if(cuserprofile) { + UserProfile & userProfile = cuserprofile->getUserProfile(); + for ( std::list::const_iterator it = userProfile.getContactList().getContacts().begin(); + it != userProfile.getContactList().getContacts().end(); + ++it) { + insertPhoneNumber(&tobeinserted, it->getFirstAvailableQuteComIMContact().getDisplayContactId()); + insertPhoneNumber(&tobeinserted, it->getFirstAvailableSIPNumber()); + insertPhoneNumber(&tobeinserted, it->getMobilePhone()); + insertPhoneNumber(&tobeinserted, it->getHomePhone()); + insertPhoneNumber(&tobeinserted, it->getWorkPhone()); + insertPhoneNumber(&tobeinserted, it->getOtherPhone()); + } + } + //// + + if (tobeinserted.size() != 0) { + tobeinserted.sort(); + + //no duplicated entries + _totalCompletionList << tobeinserted[0]; + for (int i = 1; i < tobeinserted.size(); ++i) { + if( tobeinserted[i] != tobeinserted[i-1] ) { + _totalCompletionList << tobeinserted[i]; + } + } + } + _restrainedCompletionList.clear(); + + clearEditText(); + _cleared = true; +} + +void QtPhoneComboBox::mousePressEvent(QMouseEvent * event) { + QComboBox::mousePressEvent(event); +} + +void QtPhoneComboBox::keyPressEvent(QKeyEvent * event) { + if (!_cleared) { + clearList(); + } + QComboBox::keyPressEvent(event); +} + +void QtPhoneComboBox::focusOutEvent(QFocusEvent * event) { + if (currentText().isEmpty()) { + setToolTipText(); + } + QComboBox::focusOutEvent(event); +} + +void QtPhoneComboBox::comboBoxActivated() { + //Text color back to original color + lineEdit()->setPalette(_originalPalette); +} + +void QtPhoneComboBox::popupDisplayedSlot() { + QStringList tobeinserted = QStringList(); + clear(); + + CUserProfile * cUserProfile = + _qtQuteCom->getCQuteCom().getCUserProfileHandler().getCUserProfile(); + if (!cUserProfile) { + return; + } + + //completion of history + //if _qtHistoryWidget is set it means that History has been created + + bool isQuteComAccountConnected = cUserProfile->getUserProfile().hasQuteComAccount(); + + CHistory* chistory = cUserProfile->getCHistory(); + if (chistory) { + HistoryMementoCollection * mementos = chistory->getMementos(HistoryMemento::OutgoingCall, 10); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qutecomSuffix = "@" + QString::fromUtf8( config.getQuteComRealm().c_str() ); + for (HistoryMap::iterator it = mementos->begin(); it != mementos->end(); it++) { + HistoryMemento * memento = (*it).second; + SipAddress sipAddress(memento->getPeer()); + + QString username(sipAddress.getSipAddress().c_str()); + if (isQuteComAccountConnected) { + username.remove(qutecomSuffix); + } + username.remove("sip:"); + + if( !username.isEmpty() && (memento->getState()==HistoryMemento::OutgoingCall) && !tobeinserted.contains(username) ) { + tobeinserted << username; + } + } + OWSAFE_DELETE(mementos); + } + //// + + tobeinserted.sort(); + insertItems(0, tobeinserted); + clearLineEdit(); +} + +void QtPhoneComboBox::popupHiddenSlot() { + insertItem(0,_lastHighlighted); +} + +void QtPhoneComboBox::itemhighlighted(const QString & text) { + _lastHighlighted = text; +} + +void QtPhoneComboBox::languageChanged() { + init(); +} + +void QtPhoneComboBox::setQtQuteCom(QtQuteCom* newQtQuteCom) { + _qtQuteCom = newQtQuteCom; +} + +void QtPhoneComboBox::setTextWithCompletion(const QString & newText) { + + if (newText.isEmpty()) { + return; + } + + // compute new restrained list + _restrainedCompletionList.clear(); + QStringList::const_iterator i; + for (i = _totalCompletionList.constBegin(); i != _totalCompletionList.constEnd(); ++i) { + if (i->startsWith(newText)) { + break; + } + } + for (; i != _totalCompletionList.constEnd(); ++i) { + if (i->startsWith(newText)) { + _restrainedCompletionList << (*i); + } else { + break; + } + } + //// + + if (_restrainedCompletionList.isEmpty()) { + return; + } + + // use the restrained list + clear(); + addItems(_restrainedCompletionList); + //// + + // selected added text + lineEdit()->setSelection(newText.length(), _restrainedCompletionList[0].length()); + //// +} + +////////////////////////////////////////////////////////////////////////////////// +////////// QtPhoneComboBoxLineEdit ////////////////// +////////////////////////////////////////////////////////////////////////////////// + +QtPhoneComboBoxLineEdit::QtPhoneComboBoxLineEdit(QtPhoneComboBox * qtPhoneComboBox) { + _qtPhoneComboBox = qtPhoneComboBox; + + SAFE_CONNECT(this, SIGNAL(textEdited(QString)), SLOT(textEditedSlot(QString))); +} + +void QtPhoneComboBoxLineEdit::mousePressEvent(QMouseEvent * event) { + if (!_qtPhoneComboBox->_cleared) { + _qtPhoneComboBox->clearList(); + } + QLineEdit::mousePressEvent(event); +} + +void QtPhoneComboBoxLineEdit::keyPressEvent(QKeyEvent * event) { + if (!_qtPhoneComboBox->_cleared) { + _qtPhoneComboBox->clearList(); + } + QChar key = event->key(); + + if(strchr("0123456789#*", key.toAscii())) + { + char str[2] = { key.toAscii(), 0 }; + + _qtPhoneComboBox->getQtQuteCom()->getCQuteCom().getCDtmfThemeManager().playTone("default", str); + } + + QLineEdit::keyPressEvent(event); +} + + +void QtPhoneComboBoxLineEdit::textEditedSlot(const QString & newText) { + if (newText != _enteredText) { + _enteredText = newText; + _qtPhoneComboBox->setTextWithCompletion(_enteredText); + } +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/callbar/QtPhoneComboBox.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,149 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTPHONECOMBOBOX_H +#define OWQTPHONECOMBOBOX_H + +#include + +#include +#include +#include + +class QtPhoneComboBoxLineEdit; +class QtQuteCom; + +class QWidget; +class QMouseEvent; +class QKeyEvent; +class QFocusEvent; +class QString; +class QStringList; +class QMenu; + +/** + * QComboBox based on ToolTipLineEdit. + * + * Permits to add a message like: + * "Please enter a phone number" + * + * FIXME factorize code with ToolTipLineEdit + * + * @author Tanguy Krotoff + */ +class QtPhoneComboBox : public UpQComboBox { + Q_OBJECT + friend class QtPhoneComboBoxLineEdit; +public: + + QtPhoneComboBox(QWidget * parent); + + ~QtPhoneComboBox(); + + QString currentText() const; + + void setQtQuteCom(QtQuteCom* newQtQuteCom); + + QtQuteCom * getQtQuteCom() + { + return _qtQuteCom; + } + +public Q_SLOTS: + + void setEditText(const QString & text); + + void languageChanged(); + +public : + + void setTextWithCompletion(const QString & newText); + +private Q_SLOTS: + + void comboBoxActivated(); + + void popupDisplayedSlot(); + + void popupHiddenSlot(); + + void itemhighlighted(const QString & text); + +private: + + void init(); + + void setToolTipText(); + + void clearLineEdit(); + + void clearList(); + + void insertPhoneNumber(QStringList * phoneList, std::string toBeAdded); + + void mousePressEvent(QMouseEvent * event); + + void keyPressEvent(QKeyEvent * event); + + void focusOutEvent(QFocusEvent * event); + + bool _cleared; + + /** Tool tip text already set? */ + bool _toolTipTextDone; + + QString _toolTip; + + QString _lastHighlighted; + + QPalette _originalPalette; + + QPalette _greyPalette; + + QtQuteCom * _qtQuteCom; + + QStringList _totalCompletionList; + + QStringList _restrainedCompletionList; +}; + +#include + +class QtPhoneComboBoxLineEdit : public QLineEdit { + Q_OBJECT +public: + + QtPhoneComboBoxLineEdit(QtPhoneComboBox * qtPhoneComboBox); + +private Q_SLOTS: + + void textEditedSlot(const QString & newText); + +private: + + void mousePressEvent(QMouseEvent * event); + + void keyPressEvent(QKeyEvent * event); + + QtPhoneComboBox * _qtPhoneComboBox; + + QString _enteredText; +}; + +#endif //OWQTPHONECOMBOBOX_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/AvatarFrame.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/AvatarFrame.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/AvatarFrame.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/AvatarFrame.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,126 @@ + + AvatarFrame + + + + 0 + 0 + 88 + 300 + + + + Form + + + + 9 + + + 6 + + + + + + 5 + 5 + 0 + 0 + + + + + 70 + 16 + + + + + 70 + 16777215 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 70 + 70 + + + + + 70 + 70 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + + + + 70 + 70 + + + + + 70 + 70 + + + + + + + + + + true + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/AvatarWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/AvatarWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/AvatarWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/AvatarWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,71 @@ + + + + + AvatarWidget + + + + 0 + 0 + 120 + 126 + + + + + 70 + 70 + + + + Form + + + + 0 + + + 4 + + + + + + 5 + 0 + 0 + 0 + + + + + + + Qt::AlignCenter + + + + + + + + 1 + 1 + 0 + 0 + + + + + + + false + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatLogViewer.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatLogViewer.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatLogViewer.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatLogViewer.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,224 @@ + + + + + ChatLogViewer + + + + 0 + 0 + 351 + 543 + + + + Chat History + + + Qt::ToolButtonIconOnly + + + + + 6 + + + 3 + + + + + + + + + + 0 + 0 + 351 + 21 + + + + + &Contact + + + + + + + @company@ + + + + + + + + + + &Tools + + + + + + &Help + + + + + + + &Actions + + + + + + + + + + + + + + + + false + + + + + Main Toolbar + + + false + + + Qt::Horizontal + + + + 32 + 32 + + + + 4 + + + + + + + + + + + + + + + + + + + + + :/pics/contact/call.png + + + Call Contact + + + Call Contact + + + Call Contact + + + + + :/pics/filetransfer/send-file.png + + + Send a File + + + Send a File + + + Send a File + + + + + :/pics/chat/chat-room.png + + + createChatConf + + + + + :/pics/chat/contact-details.png + + + Show Contact Info + + + Show Contact Info + + + Show Contact Info + + + + + :/pics/chat/block-a.png + + + blockContact + + + + + + + + + + + + + &Save History As... + + + + + :/pics/chat/new_chat.png + + + actionRestartChat + + + + + + + QtChatHistoryWidget + QTextEdit +
chat/QtChatHistoryWidget.h
+ 0 + +
+
+ + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatMainWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatMainWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatMainWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatMainWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,228 @@ + + ChatMainWindow + + + + 0 + 0 + 351 + 542 + + + + MainWindow + + + Qt::ToolButtonIconOnly + + + + + 6 + + + 3 + + + + + + + 0 + 0 + 351 + 29 + + + + + &Edit + + + + + + + + &Contact + + + + + + + @company@ + + + + + + + + + + &Actions + + + + + + + + + &Tools + + + + + + + + + + + + false + + + + + Main Toolbar + + + false + + + Qt::Horizontal + + + + 32 + 32 + + + + 4 + + + + + + + + + + + + + &Close + + + + + + + + + :/pics/contact/call.png + + + Call Contact + + + Call Contact + + + Call Contact + + + + + :/pics/filetransfer/send-file.png + + + Send a File + + + Send a File + + + Send a File + + + + + :/pics/chat/chat-room.png + + + Start Chat Conference + + + Conference + + + + + :/pics/chat/contact-details.png + + + Show Contact Info + + + Show Contact Info + + + Show Contact Info + + + + + :/pics/chat/block-a.png + + + blockContact + + + + + + + + + + + + + &Save History As... + + + + + Cu&t + + + Ctrl+X + + + + + &Copy + + + Ctrl+C + + + + + &Paste + + + Ctrl+V + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,193 @@ + + + + + ChatRoomInviteWidget + + + + 0 + 0 + 569 + 350 + + + + Chat room + + + + 9 + + + 6 + + + + + QAbstractItemView::MultiSelection + + + + + + + 0 + + + 6 + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + (Conference participants) + + + + + + + + + 0 + + + 6 + + + + + &Remove + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 171 + 20 + + + + + + + + &Start + + + + + + + + + 0 + + + 6 + + + + + QAbstractItemView::MultiSelection + + + + Group Name + + + + + + + + 0 + + + 6 + + + + + &Add + + + + + + + Qt::Horizontal + + + + 170 + 20 + + + + + + + + + + + + + contactListTreeWidget + addPushButton + inviteListWidget + removePushButton + startPushButton + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,184 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys + * +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include "QtChatRoomInviteDlg.h" +#include "QtChatRoomTreeWidgetItem.h" +#include "QtChatRoomListWidgetItem.h" + +#include "ui_ChatRoomInviteWidget.h" + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +QtChatRoomInviteDlg::QtChatRoomInviteDlg(IMChatSession & chatSession, CContactList & cContactList, QWidget * parent , Qt::WFlags f ) : +QDialog(parent,f), _cContactList(cContactList), _chatSession(chatSession) { + + _chatRoomInviteWidget = new QWidget(this); + _ui = new Ui::ChatRoomInviteWidget(); + _ui->setupUi(_chatRoomInviteWidget); + + QGridLayout * layout = new QGridLayout(); + layout->addWidget(_chatRoomInviteWidget); + layout->setMargin(0); + setLayout(layout); + setupGui(); +} + +QtChatRoomInviteDlg::~QtChatRoomInviteDlg() { + OWSAFE_DELETE(_ui); + OWSAFE_DELETE(_chatRoomInviteWidget); +} + +void QtChatRoomInviteDlg::setupGui() { + _contactListTreeWidget = _ui->contactListTreeWidget; + _inviteListWidget = _ui->inviteListWidget; + _addPushButton = _ui->addPushButton; + _removePushButton = _ui->removePushButton; + _startPushButton = _ui->startPushButton; + + SAFE_CONNECT (_addPushButton, SIGNAL(clicked()), SLOT(addToConference())); + SAFE_CONNECT (_removePushButton, SIGNAL(clicked()), SLOT(removeFromConference())); + SAFE_CONNECT (_startPushButton, SIGNAL(clicked()), SLOT(startConference())); + // Remove the column header + _contactListTreeWidget->header()->hide(); + fillContact(); +} + +void QtChatRoomInviteDlg::startConference() { + // _chatSession + QListselectList = _inviteListWidget->findItems("*",Qt::MatchWildcard); + QList::iterator it; + for (it = selectList.begin(); it!= selectList.end(); it++) { + QtChatRoomListWidgetItem * item = dynamic_cast (*it); + _chatSession.addIMContact(*(item->getContact().getFirstAvailableIMContact(_chatSession))); + _selectedContact.append((item->getContact())); + } + accept(); + } + +void QtChatRoomInviteDlg::addToConference() { + // Get list of selected item in the treeview + QList selectList = _contactListTreeWidget->selectedItems (); + QList::iterator it; + + for (it = selectList.begin(); it!= selectList.end(); it++) { + if ( (*it)->childCount() == 0 ) { + QtChatRoomTreeWidgetItem * item = dynamic_cast((*it)); + _contactListTreeWidget->setItemSelected(item,false); + if (_inviteListWidget->findItems(item->text(0),Qt::MatchExactly).isEmpty()) { + QtChatRoomListWidgetItem * listItem = new QtChatRoomListWidgetItem(item->getContact(), _inviteListWidget); + listItem->setText(item->text(0)); + listItem->setIcon(item->icon(0)); + } + } + } +} + +void QtChatRoomInviteDlg::removeFromConference() { + QListselectList = _inviteListWidget->selectedItems(); + QList::iterator it; + + for (it= selectList.begin(); it!= selectList.end(); it++ ) { + _inviteListWidget->takeItem(_inviteListWidget->row((*it))); + delete (*it); + } +} + +void QtChatRoomInviteDlg::fillContact() { + std::vector< std::pair >groupList=_cContactList.getContactGroups(); + std::vector< std::pair >::iterator it; + + for (it = groupList.begin(); it != groupList.end(); it++) { + QTreeWidgetItem * groupItem = new QTreeWidgetItem( _contactListTreeWidget); + groupItem->setFlags(Qt::ItemIsEnabled); + QString groupName = QString::fromUtf8((*it).second.c_str()); + QString groupId = QString::fromUtf8((*it).first.c_str()); + groupItem->setText(0,groupName); + fillGroup(groupItem, groupId); + } +} + +void QtChatRoomInviteDlg::fillGroup(QTreeWidgetItem * group, const QString & groupId) { + + QStringList contactsIdList = getContactsInGroup(groupId); + QStringList::iterator it; + + QtContactPixmap::ContactPixmap status; + + for (it=contactsIdList.begin();it!=contactsIdList.end();it++) { + //(*it) is a contactId + ContactProfile contactProfile = _cContactList.getContactProfile(std::string((*it).toUtf8())); + if (contactProfile.getFirstAvailableIMContact(_chatSession) != NULL) { + QtChatRoomTreeWidgetItem * item = new QtChatRoomTreeWidgetItem (contactProfile,group ); + item->setText(0, QString::fromUtf8 (contactProfile.getDisplayName().c_str())); + switch ( contactProfile.getPresenceState()) { + case EnumPresenceState::PresenceStateOnline: + status = QtContactPixmap::ContactOnline; + break; + case EnumPresenceState::PresenceStateOffline: + status = QtContactPixmap::ContactOffline; + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + status = QtContactPixmap::ContactDND; + break; + case EnumPresenceState::PresenceStateAway: + status = QtContactPixmap::ContactAway; + break; + case EnumPresenceState::PresenceStateInvisible: + status = QtContactPixmap::ContactInvisible; + break; + case EnumPresenceState::PresenceStateUserDefined: + status = QtContactPixmap::ContactOnline; + break; + case EnumPresenceState::PresenceStateUnknown: + status = QtContactPixmap::ContactUnknown; + break; + default: + status = QtContactPixmap::ContactUnknown; + } + item->setIcon(0,QIcon(QtContactPixmap::getInstance()->getPixmap(status))); + } + } +} + +QStringList QtChatRoomInviteDlg::getContactsInGroup(const QString & groupId) const { + StringList contactIdList = _cContactList.getContactIds(); + StringList::iterator it; + QStringList tmp; + + for (it=contactIdList.begin();it!=contactIdList.end();it++) { + ContactProfile contactProfile = _cContactList.getContactProfile((*it)); + if (contactProfile.getGroupId() == std::string(groupId.toUtf8())) { + tmp << QString::fromUtf8((*it).c_str()); + } + } + return tmp; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,102 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys +* +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#ifndef OWQTCHATROOMINVITEDLG_H +#define OWQTCHATROOMINVITEDLG_H + +#include + +#include +#include + +#include +#include +#include + +namespace Ui { class ChatRoomInviteWidget; } + +class QListWidget; +class QTreeWidget; +class QTreeWidgetItem; + +class Contact; + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class QtChatRoomInviteDlg : public QDialog +{ + Q_OBJECT +public: + + typedef QList SelectedContact; + + QtChatRoomInviteDlg(IMChatSession & chatSession,ContactList & contactList, QWidget * parent = 0, Qt::WFlags f = 0); + + QtChatRoomInviteDlg(IMChatSession & chatSession,CContactList & cContactList, QWidget * parent = 0, Qt::WFlags f = 0); + + ~QtChatRoomInviteDlg(); + + SelectedContact getSelectedContact() const; + +protected: + + void setupGui(); + + Ui::ChatRoomInviteWidget * _ui; + + QWidget * _chatRoomInviteWidget; + + QTreeWidget * _contactListTreeWidget; + + QListWidget * _inviteListWidget; + + QPushButton * _addPushButton; + + QPushButton * _removePushButton; + + QPushButton * _startPushButton; + +// ContactList & _contactList; + CContactList & _cContactList; + + IMChatSession & _chatSession; + + void fillContact(); + +// void fillGroup(QTreeWidgetItem * group, const ContactGroup * cgroup); + void fillGroup(QTreeWidgetItem * group, const QString & groupId); + + QStringList getContactsInGroup(const QString & groupId) const; + + SelectedContact _selectedContact; + +protected Q_SLOTS: + + void startConference(); + + void addToConference(); + + void removeFromConference(); +}; + +#endif //OWQTCHATROOMINVITEDLG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,33 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys +* +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#include "QtChatRoomListWidgetItem.h" +#include + +QtChatRoomListWidgetItem::QtChatRoomListWidgetItem (ContactProfile contact, QListWidget * parent) : +QListWidgetItem(parent) +{ + _contact = contact; +} + +ContactProfile QtChatRoomListWidgetItem::getContact() const { + return _contact; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys +* +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ + +#ifndef OWQTCHATROOMLISTWIDGETITEM_H +#define OWQTCHATROOMLISTWIDGETITEM_H + +#include + +#include + +class ContactProfile; + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class QtChatRoomListWidgetItem : public QListWidgetItem +{ +public: + + QtChatRoomListWidgetItem (ContactProfile contact, QListWidget * parent); + + ContactProfile getContact() const; + +protected: + + ContactProfile _contact; +}; + +#endif //OWQTCHATROOMLISTWIDGETITEM_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,31 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys +* +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ +#include "QtChatRoomTreeWidgetItem.h" +#include + +QtChatRoomTreeWidgetItem::QtChatRoomTreeWidgetItem(ContactProfile contact, QTreeWidgetItem * parent) : +QTreeWidgetItem(parent) +{ + _contact = contact; +} + +ContactProfile QtChatRoomTreeWidgetItem::getContact() const { + return _contact; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,50 @@ +/* +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys + * +* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + +*/ +#ifndef OWQTCHATROOMTREEWIDGETITEM_H +#define OWQTCHATROOMTREEWIDGETITEM_H + +#include + +#include + +class ContactProfile; + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class QtChatRoomTreeWidgetItem : public QTreeWidgetItem +{ + +public: + + QtChatRoomTreeWidgetItem(ContactProfile contact, QTreeWidgetItem * parent); + + ContactProfile getContact() const; + +protected: + + ContactProfile _contact; +}; + + +#endif //OWQTCHATROOMTREEWIDGETITEM_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/ChatWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/ChatWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,157 @@ + + + ChatWidget + + + + 0 + 0 + 446 + 447 + + + + Form + + + + 0 + + + 0 + + + + + + 0 + + + 0 + + + + + Qt::StrongFocus + + + + + + + true + + + + + + + + 0 + 0 + + + + + 16 + 56 + + + + + 16777215 + 56 + + + + true + + + QFrame::NoFrame + + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + + + + + + + + + 56 + 56 + + + + + + + + :/pics/chat/chat_send.png:/pics/chat/chat_send.png + + + + 50 + 50 + + + + true + + + + + + + + + + + + + + QtQuteComStyleBar + QFrame +
chat/QtQuteComStyleBar.h
+ 1 +
+ + QtChatEditWidget + QTextEdit +
chat/QtChatEditWidget.h
+
+ + QtChatHistoryWidget + QTextBrowser +
chat/QtChatHistoryWidget.h
+
+
+ + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEmoticonButton.h" + +#include + +#include + +QtEmoticonButton::QtEmoticonButton(QWidget * parent) + : QToolButton(parent) { + + setAutoRaise(true); + SAFE_CONNECT(this, SIGNAL(clicked()), SLOT(buttonClickedSlot())); +} + +void QtEmoticonButton::buttonClickedSlot() { + buttonClicked(_emoticon); +} + +void QtEmoticonButton::setEmoticon(QtEmoticon emoticon) { + _emoticon = emoticon; + setIcon(QIcon(emoticon.getButtonPixmap())); + setIconSize(emoticon.getButtonPixmap().size()); + if (!emoticon.getText().isEmpty()) { + setToolTip(emoticon.getText()[0]); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonButton.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,57 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTEMOTICONBUTTON_H +#define OWQTEMOTICONBUTTON_H + +#include "QtEmoticon.h" + +#include + +class QWidget; +class QString; +class QIcon; + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class QtEmoticonButton : public QToolButton { + Q_OBJECT +public: + + QtEmoticonButton(QWidget * parent); + + void setEmoticon(QtEmoticon emoticon); + +Q_SIGNALS: + + void buttonClicked(QtEmoticon emoticon); + +private Q_SLOTS: + + void buttonClickedSlot(); + +private: + + QtEmoticon _emoticon; +}; + +#endif //OWQTEMOTICONBUTTON_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEmoticon.h" + +#include + +#include + +QtEmoticon::QtEmoticon() { +} + +QtEmoticon::QtEmoticon(const QtEmoticon & source) { + _path = source._path; + _text = QStringList(source._text); + _pixmap = source._pixmap; + _regExp = source._regExp; + _buttonPixmap = source._buttonPixmap; +} + +QtEmoticon::~QtEmoticon() { +} + +QString QtEmoticon::getHtml() const { + return QString("").arg(_path); +} + +QString QtEmoticon::getHtmlRegExp() const { + return QString("").arg(_path); +} + +bool QtEmoticon::isNull() const { + return _text.isEmpty(); +} + +void QtEmoticon::setRegExp(const QString & regExp) { + _regExp = regExp; +} + +QtEmoticon & QtEmoticon::operator=(const QtEmoticon & source) { + _path = source._path; + _text = source._text; + _regExp = source._regExp; + _pixmap = source._pixmap; + _buttonPixmap = source._buttonPixmap; + return *this; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticon.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTEMOTICON_H +#define OWQTEMOTICON_H + +#include +#include +#include + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class QtEmoticon { +public: + + QtEmoticon(); + + QtEmoticon(const QtEmoticon & source); + + ~QtEmoticon(); + + void setText(const QStringList & text) { _text = text; } + + void setPath(const QString & path) { _path = path; } + + void setPixmap(const QPixmap & pixmap) { _pixmap = pixmap; } + + void setButtonPixmap(const QPixmap & pixmap) { _buttonPixmap = pixmap; } + + void setRegExp(const QString & regExp); + + QString getRegExp() const { return _regExp; } + + QStringList getText() const { return _text;} + + QString getDefaultText() const { return _text[0]; } + + QPixmap getPixmap() const { return _pixmap; } + + QPixmap getButtonPixmap() const { return _buttonPixmap; } + + QString getPath() const { return _path; } + + QString getHtmlRegExp() const; + + QString getHtml() const; + + bool isNull() const; + + QtEmoticon & operator=(const QtEmoticon & source); + +private: + + QString _path; + + QStringList _text; + + QString _regExp; + + QPixmap _pixmap; + + QPixmap _buttonPixmap; +}; + +#endif //OWQTEMOTICON_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,241 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEmoticonsManager.h" + +#include +#include + +#include +#include + +QtEmoticonsManager * QtEmoticonsManager::_instance = NULL; + +QtEmoticonsManager::QtEmoticonsManager() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + loadFromFile(QString::fromUtf8(std::string(config.getResourcesDir() + "pics/emoticons/icondef.xml").c_str())); +} + +QtEmoticonsManager * QtEmoticonsManager::getInstance() { + if (!_instance) { + _instance = new QtEmoticonsManager(); + } + return _instance; +} + +int QtEmoticonsManager::getProtocolCount() { + return _protocolList.size(); +} + +int QtEmoticonsManager::getEmoticonCount(const QString & protocol) { + if (_protocolList.find(protocol) == _protocolList.end()) { + return 0; + } + return _protocolList[protocol].size(); +} + +QtEmoticon QtEmoticonsManager::getEmoticon(const QString & text, const QString & protocol) { + QtEmoticon emoticon; + + if (_protocolList.find(protocol) == _protocolList.end()) { + return emoticon; + } + QtEmoticonList emoticonList = _protocolList[protocol]; + + for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { + QStringList stringList = (*it).getText(); + for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { + if ((*it2).toUpper() == text.toUpper()) { + return (*it); + } + } + } + return emoticon; +} + +QtEmoticonsManager::QtEmoticonList QtEmoticonsManager::getQtEmoticonList(const QString & protocol) { + QtEmoticonList emoticonList; + if (_protocolList.find(protocol) == _protocolList.end()) { + return emoticonList; + } + emoticonList = _protocolList[protocol]; + return emoticonList; +} + +void QtEmoticonsManager::loadFromFile(const QString & filename) { + QFile file(filename); + QString ErrorMsg; + int ErrorLine = 0; + int ErrorCol = 0; + QDomDocument doc("qutecomIcons"); + + if (!file.open(QIODevice::ReadOnly)) { + return; + } + + if (!doc.setContent(&file, &ErrorMsg, &ErrorLine, &ErrorCol)) { + file.close(); + return; + } + file.close(); + + QDomElement tmpElement; + QDomElement docElem = doc.documentElement(); + QDomNode n = docElem.firstChild(); + QString tagName; + + while (!n.isNull()) { + tmpElement = n.toElement(); + if (!tmpElement.isNull()) { + tagName = tmpElement.tagName(); + if (tagName == "protocol") { + readProtocol(n); + } + } + n = n.nextSibling(); + } +} + +void QtEmoticonsManager::readProtocol(const QDomNode & node) { + QDomNode n = node.firstChild(); + QDomElement element; + QString attributeName; + while (!n.isNull()) { + if (!n.toElement().isNull()) { + if (n.toElement().tagName() == "icon") { + element = node.toElement(); + if (!element.isNull()) { + attributeName = element.attribute("name"); + readIcon(n, attributeName); + readIcon(n, "all"); + } + } + } + n = n.nextSibling(); + } +} + +void QtEmoticonsManager::readIcon(const QDomNode & node, const QString & protocol) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + QDomNode n1 = node.firstChild(); + QStringList textList; + QtEmoticon emoticon; + while (!n1.isNull()) { + QDomElement e1 = n1.toElement(); + if (!e1.isNull()) { + if (e1.tagName() == "text") { + textList << e1.text(); + } + if (e1.tagName() == "object") { + QString resources_path = QString::fromUtf8(config.getResourcesDir().c_str()); + #if defined (OS_WINDOWS) + resources_path = resources_path.replace("\\","/"); + #endif + QString emoticonPath = resources_path + "pics/emoticons/" + e1.text(); + emoticon.setPath(emoticonPath); + QPixmap emoticonPix = QPixmap(emoticonPath); + emoticon.setPixmap(emoticonPix); + emoticon.setButtonPixmap(emoticonPix); + } + } + n1 = n1.nextSibling(); + } + emoticon.setText(textList); + _protocolList[protocol] << emoticon; +} + +QString QtEmoticonsManager::text2Emoticon(const QString & text, const QString & protocol) { + if (_protocolList.find(protocol) == _protocolList.end()) { + return text; + } + + QtEmoticonList emoticonList = _protocolList[protocol]; + QString result; + + // Match full tags () or text + QRegExp rx("([^><]+|<[^>]+>)"); + int pos = 0; + while (true) { + pos = rx.indexIn(text, pos); + if (pos == -1) { + break; + } + + QString token = rx.cap(0); + if (token[0] != '<') { + // Not a tag, replace smileys in it + for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { + QStringList stringList = it->getText(); + for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { + token.replace(*it2, it->getHtml(), Qt::CaseInsensitive); + } + } + } + + result += token; + pos += rx.matchedLength(); + } + + return result; +} + +QString QtEmoticonsManager::emoticons2Text(const QString & text, const QString & protocol) { + QString ret = text; + + if (_protocolList.find(protocol) == _protocolList.end()) { + return text; + } + QtEmoticonList emoticonList = _protocolList[protocol]; + + for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { + QStringList stringList = (*it).getText(); + for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { + ret.replace((*it).getHtml(), encode((*it2)), Qt::CaseInsensitive); + } + } + return ret; +} + +QString QtEmoticonsManager::encode(const QString & text) const { + QByteArray ba; + + for (int i = 0; i < text.size(); i++) { + switch(text[i].toAscii()) { + case '<': + ba += "<"; + break; + case '>': + ba += ">"; + break; + case '&': + ba += "&"; + break; + case '\'': + ba += "'"; + break; + case '"': + ba += "'"; + break; + default: + ba += text[i]; + } + } + return QString(ba); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTEMOTICONSMANAGER_H +#define OWQTEMOTICONSMANAGER_H + +#include "QtEmoticon.h" + +#include + +class QDomNode; +class QString; + +/** + * + * @ingroup presentation + * @author Mathieu Stute + */ +class QtEmoticonsManager { +public: + + typedef QList QtEmoticonList; + + static QtEmoticonsManager * getInstance(); + + QtEmoticonsManager(); + + QtEmoticon getEmoticon(const QString & text, const QString & protocol); + + void loadFromFile(const QString & filename); + + QString text2Emoticon(const QString & text, const QString & protocol); + + QString emoticons2Text(const QString & text, const QString & protocol); + + QtEmoticonList getQtEmoticonList(const QString & protocol); + + int getProtocolCount(); + + int getEmoticonCount(const QString & protocol); + +private: + + void readProtocol(const QDomNode & node); + + void readIcon(const QDomNode & node, const QString & protocol); + + QString encode(const QString & text) const; + + typedef QHash ProtocolList; + + ProtocolList _protocolList; + + static QtEmoticonsManager * _instance; +}; + +#endif //OWQTEMOTICONSMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEmoticonsWidget.h" + +#include "QtEmoticon.h" +#include "QtEmoticonButton.h" +#include "QtEmoticonsManager.h" + +#include +#include +#include + +#include + +#include +#include + +EmoticonsWidget::EmoticonsWidget(QWidget * parent) + : QFrame(parent, Qt::Popup) { + + setFrameStyle(QFrame::Box | QFrame::Plain); + + _layout = NULL; + _state = Popup; + _buttonX = 0; + _buttonY = 0; +} + +void EmoticonsWidget::buttonClicked(const QtEmoticon & emoticon) { + if (_state == Popup) { + close(); + } + emoticonClicked(emoticon); +} + +void EmoticonsWidget::changeState() { + if (_state == Popup) { + close(); + setWindowFlags(Qt::Window); + _state = Window; + show(); + } else { + close(); + setWindowFlags(Qt::Popup); + _state = Popup; + } +} + +void EmoticonsWidget::initButtons(const QString & protocol) { + OWSAFE_DELETE(_layout); + + _layout = new QGridLayout(this); + _layout->setMargin(0); + _layout->setSpacing(0); + _buttonX = 0; + _buttonY = 0; + QtEmoticonsManager * qtEmoticonsManager = QtEmoticonsManager::getInstance(); + QtEmoticonsManager::QtEmoticonList emoticonList = qtEmoticonsManager->getQtEmoticonList(protocol); + QtEmoticonsManager::QtEmoticonList::iterator it; + for (it = emoticonList.begin(); it != emoticonList.end(); it++) { + addButton((*it)); + } +} + +void EmoticonsWidget::addButton(const QtEmoticon & emoticon) { + if (_buttonX == 10) { + _buttonX = 0; + _buttonY += 1; + } + QtEmoticonButton * button = new QtEmoticonButton(this); + button->setEmoticon(emoticon); + QSize buttonSize = emoticon.getButtonPixmap().size(); + button->setIconSize(buttonSize); + _layout->addWidget(button, _buttonY, _buttonX); + SAFE_CONNECT(button, SIGNAL(buttonClicked(QtEmoticon)), SLOT(buttonClicked(QtEmoticon))); + _buttonX++; +} + +void EmoticonsWidget::closeEvent(QCloseEvent * event) { + closed(); + event->accept(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTEMOTICONSWIDGET_H +#define OWQTEMOTICONSWIDGET_H + +#include + +class QtEmoticon; +class QString; +class QStringList; +class QGridLayout; + +/** + * + * @ingroup presentation + * @author Mr K. + */ +class EmoticonsWidget : public QFrame { + Q_OBJECT +public: + + EmoticonsWidget(QWidget * parent); + + void initButtons(const QString & protocol); + +public Q_SLOTS: + + void changeState(); + + void buttonClicked(const QtEmoticon & emoticon); + +Q_SIGNALS: + + void emoticonClicked(const QtEmoticon & emoticon); + + void closed(); + +private: + + void closeEvent(QCloseEvent * event); + + void addButton(const QtEmoticon & emoticon); + + enum EmoticonsWidgetState { + Window, + Popup + }; + + QWidget * _widget; + + QStringList _iconName; + + EmoticonsWidgetState _state; + + int _buttonX; + + int _buttonY; + + QGridLayout * _layout; +}; + +#endif //OWQTEMOTICONSWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,90 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatAvatarFrame.h" +#include "QtChatAvatarWidget.h" + +#include + +#include + +#include + +QtChatAvatarFrame::QtChatAvatarFrame(QWidget * parent) + : QFrame(parent) { + + _ui.setupUi(this); + setMinimumWidth(70); + _layout = new QVBoxLayout(_ui.remoteAvatarFrame); + _layout->setMargin(0); + _layout->setSpacing(0); +} + +void QtChatAvatarFrame::setUserPixmap(QPixmap pixmap) { + + QPixmap background = QPixmap(":pics/avatar_background.png"); + + if (!pixmap.isNull()) { + QPainter painter(&background); + painter.drawPixmap(5, 5, pixmap.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + painter.end(); + _ui.userAvatar->setPixmap(background); + } else { + _ui.userAvatar->setPixmap(background); + } +} + +void QtChatAvatarFrame::addRemoteContact(const QString & id, const QString & displayName, const QString & contactId, QPixmap avatar) { + + _contactIdList.append(id); + + QtChatAvatarWidget * avatarWidget = new QtChatAvatarWidget( + _ui.remoteAvatarFrame, id, avatar, displayName, contactId, QtChatAvatarWidget::BIG); + avatarWidget->setupPixmap(avatar); + + _widgetList.append(avatarWidget); + _layout->addWidget(avatarWidget); + + //_ui.remoteAvatarFrame->setMinimumSize(0, glayout->count() * 70); +} + +void QtChatAvatarFrame::removeRemoteContact(const QString & contactId) { + + for (int i = 0; i < _widgetList.size(); i++) { + if (_widgetList[i]->getContactId() == contactId) { + delete _widgetList[i]; + _widgetList.removeAt(i); + } + } + _contactIdList.removeAll(contactId); +} + +void QtChatAvatarFrame::updateContact(const QString & id, QPixmap avatar, const QString & displayName) { + for(int i = 0; i < _widgetList.size(); i++) { + QtChatAvatarWidget * chatAvatarWidget = _widgetList[i]; + if (chatAvatarWidget->getContactId() == id) { + chatAvatarWidget->setupPixmap(avatar); + chatAvatarWidget->setToolTip(displayName); + } + } +} + +QStringList QtChatAvatarFrame::getContactIDList() { + return _contactIdList; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarFrame.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATAVATARFRAME_H +#define OWQTCHATAVATARFRAME_H + +#include "ui_AvatarFrame.h" + +#include +#include +#include + +class QVBoxLayout; +class QtChatAvatarWidget; + +/** + * Avatar frame widget. + * + * @author Mathieu Stute + */ +class QtChatAvatarFrame : public QFrame { + Q_OBJECT +public: + + QtChatAvatarFrame(QWidget * parent); + + void setUserPixmap(QPixmap pixmap); + + void addRemoteContact(const QString & id, const QString & displayName, const QString & contactId, QPixmap avatar); + + void removeRemoteContact(const QString & contactId); + + void updateContact(const QString & id, QPixmap avatar, const QString & displayName); + + QStringList getContactIDList(); + +private: + + typedef QList WidgetList; + + WidgetList _widgetList; + + QVBoxLayout * _layout; + + Ui::AvatarFrame _ui; + + QStringList _contactIdList; +}; + +#endif //OWQTCHATAVATARFRAME_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include + +#include +#include + +#include + +#include "QtChatAvatarWidget.h" + +QtChatAvatarWidget::QtChatAvatarWidget(QWidget * parent, const QString & id, + QPixmap picture, const QString & nickname, const QString & contactId, PictureMode pmode, NicknameMode nmode) + : QWidget(parent), _pictureMode(pmode), _nicknameMode(nmode), _contactId(id) { + + _ui.setupUi(this); + //setupPixmap(picture); + setToolTip(nickname); + //setupNickname(contactId); + /* + if (_nicknameMode != NONE) { + setupNickname(nickname); + } else { + _ui.nicknameLabel->hide(); + }*/ +} + +void QtChatAvatarWidget::setupPixmap(QPixmap pixmap) { + + //TODO:: resize fond_avatar.png + QPixmap background = QPixmap(":/pics/avatar_background.png"); + std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); + QPixmap defaultAvatar; + defaultAvatar.loadFromData((uchar*) data.c_str(), data.size()); + QPainter painter(&background); + + if (!pixmap.isNull()) { + switch (_pictureMode) { + case HUGE: + painter.drawPixmap(0, 0, pixmap.scaled(96, 96, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(96, 96); + setMinimumSize(96, 96); + break; + case BIG: + painter.drawPixmap(5, 5, pixmap.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(70, 70); + setMinimumSize(70, 70); + break; + case MEDIUM: + painter.drawPixmap(0, 0, pixmap.scaled(48, 48, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(48, 48); + setMinimumSize(48, 48); + break; + case SMALL: + painter.drawPixmap(0, 0, pixmap.scaled(24, 24, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(24, 24); + setMinimumSize(24, 24); + break; + case TINY: + painter.drawPixmap(0, 0, pixmap.scaled(12, 12, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(12, 12); + setMinimumSize(12, 12); + break; + default: + LOG_WARN("unknown picture mode: " + String::fromNumber(_pictureMode)); + } + } else { + painter.drawPixmap(5, 5, defaultAvatar.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); + _ui.pictureLabel->resize(70, 70); + setMinimumSize(70, 70); + } + + painter.end(); + _ui.pictureLabel->setPixmap(background); +} + +void QtChatAvatarWidget::setupNickname(const QString & nickname) { + //TODO: limit string length + QFontMetrics fontMetrics(_ui.nicknameLabel->font()); + int width = 60; + QString temp; + for(int i = 0; i < nickname.length(); i++) { + if (fontMetrics.width(temp) > width) { + break; + } + temp += nickname[i]; + } + _ui.nicknameLabel->setText(temp); +} + +void QtChatAvatarWidget::setToolTip(const QString & nickname) { + _ui.pictureLabel->setToolTip(nickname); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatAvatarWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATAVATARWIDGET_H +#define OWQTCHATAVATARWIDGET_H + +#include "ui_AvatarWidget.h" + +#include + +/** + * Chat contact list. + * + * @author Mathieu Stute + */ +class QtChatAvatarWidget : public QWidget { + Q_OBJECT +public: +#ifdef HUGE +#undef HUGE +#endif + enum PictureMode { + HUGE, // 96x96 + BIG, // 60x60 + MEDIUM, // 48x48 + SMALL, // 24x24 + TINY, // 12x12 + }; + + enum NicknameMode { + RIGHT, + LEFT, + TOP, + BOTTOM, + NONE, + }; + + QtChatAvatarWidget(QWidget * parent, const QString & id, QPixmap picture, + const QString & nickname, const QString & contactId, PictureMode pmode = SMALL, NicknameMode nmode = NONE); + + const QString getContactId() { + return _contactId; + } + + void setupPixmap(QPixmap pixmap); + + void setToolTip(const QString & nickname); + +private: + + void setupNickname(const QString & nickname); + + PictureMode _pictureMode; + + NicknameMode _nicknameMode; + + QString _contactId; + + Ui::AvatarWidget _ui; +}; + +#endif //OWQTCHATAVATARWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatEditWidget.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include + +QtChatEditWidget::QtChatEditWidget(QWidget *parent) +: QTextEdit(parent) { + setFrameStyle(QFrame::NoFrame | QFrame::Plain); + setAcceptDrops(true); + setLineWrapMode(QTextEdit::WidgetWidth); +} + +void QtChatEditWidget::dragEnterEvent(QDragEnterEvent *event) { + if(event->mimeData()->hasFormat("text/uri-list")) { + event->acceptProposedAction(); + } +} + +void QtChatEditWidget::dragMoveEvent(QDragMoveEvent *event) { + event->acceptProposedAction(); +} + +void QtChatEditWidget::dragLeaveEvent(QDragLeaveEvent * event) { + event->accept(); +} + +void QtChatEditWidget::dropEvent(QDropEvent *event) { + const QMimeData *mimeData = event->mimeData(); + if(mimeData->hasUrls()) { + QList urls = mimeData->urls(); + for(QList::iterator i(urls.begin()); i != urls.end(); i++){ + QString fileName; + qint64 fileSize; + QString fileType; + LOG_DEBUG((*i).toLocalFile().toUtf8()); + QFile fileToSend((*i).toLocalFile()); + QFileInfo fileInfo(fileToSend); + if(fileInfo.exists() && fileInfo.isReadable()) { + fileName = fileInfo.absoluteFilePath(); + fileSize = fileInfo.size(); + fileType = fileInfo.completeSuffix(); + LOG_DEBUG( + "filename: " + std::string(fileName.toUtf8()) + + "size: " + String::fromLongLong((long long)fileSize) + + "type: " + std::string(fileType.toUtf8()) + ); + // TODO add the contact name (qutecom_id) + // TODO make a call to send it all to a file transfer plugin (via a controller) + fileDragged(fileName); + } + } + } + event->acceptProposedAction(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatEditWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATEDITWIDGET_H +#define OWQTCHATEDITWIDGET_H + +#include + +class QDragEnterEvent; +class QDropEvent; +class QDragMoveEvent; +class QDragLeaveEvent; + +/** + * Subclass a QTextEdit with drag and drop support for file transfer. + * + * @author Nicolas Couturier + */ +class QtChatEditWidget : public QTextEdit { + Q_OBJECT +public: + + QtChatEditWidget(QWidget *parent); + +Q_SIGNALS: + + void fileDragged(const QString & filename); + +protected: + + void dragEnterEvent(QDragEnterEvent * event); + + void dragMoveEvent(QDragMoveEvent * event); + + void dropEvent(QDropEvent * event); + + void dragLeaveEvent(QDragLeaveEvent * event); +}; + +#endif //OWQTCHATEDITWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatHandler.h" + +#include "QtChatWindow.h" +#include "emoticons/QtEmoticonsManager.h" + +#include + +#include + +#include + +QtChatHandler::QtChatHandler(CChatHandler & cChatHandler, QtQuteCom & qtQuteCom) + : QObject(NULL), + _cChatHandler(cChatHandler), + _qtQuteCom(qtQuteCom) { + + _qtChatWindow = NULL; +} + +QtChatHandler::~QtChatHandler() { + if (_qtChatWindow) { + _qtChatWindow->hide(); + delete _qtChatWindow; + } +} + +void QtChatHandler::newIMChatSessionCreatedEvent(IMChatSession & imChatSession) { + if (!_qtChatWindow) { + _qtChatWindow = new QtChatWindow(0, _cChatHandler, imChatSession, _qtQuteCom); + } else { + _qtChatWindow->imChatSessionCreatedHandler(&imChatSession); + } +} + +void QtChatHandler::createSession(const QString & imAccountId, IMContactSet & imContactSet) { + _cChatHandler.createSession(std::string(imAccountId.toUtf8()), imContactSet); +} + +void QtChatHandler::updatePresentation() { +} + +void QtChatHandler::deletePresentation() { + // we should delete the QtChatWindow + // but it crashes in QtEmoticonsManager::getQtEmoticonList + /* delete(this); */ + if (_qtChatWindow) { + //_qtChatWindow->closeWindow(); + _qtChatWindow->close(); + _qtQuteCom.setChatWindow(NULL); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATHANDLER_H +#define OWQTCHATHANDLER_H + +#include + +#include + +class CChatHandler; +class IMAccount; +class IMContactSet; +class QtChatWindow; +class QtQuteCom; + +/** + * + * @ingroup presentation + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class QtChatHandler : public QObject, public PChatHandler { + Q_OBJECT +public: + + QtChatHandler(CChatHandler & cChatHandler, QtQuteCom & qtQuteCom); + + ~QtChatHandler(); + + void createSession(const QString & imAccountId, IMContactSet & imContactSet); + + void newIMChatSessionCreatedEvent(IMChatSession & imChatSession); + + void updatePresentation(); + + void deletePresentation(); + +private: + + CChatHandler & _cChatHandler; + + QtChatWindow * _qtChatWindow; + + QtQuteCom & _qtQuteCom; +}; + +#endif //OWQTCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,310 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatHistoryWidget.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +// If previous message from last sender is more than MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES +// old, don't group new message with it. +static int MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES = 3 * 60; + +QtChatHistoryWidget::QtChatHistoryWidget(QWidget * parent) +: QWebView(parent) +{ + _translate = true; + //connect (this, SIGNAL(anchorClicked(const QUrl &)), this, SLOT(urlClicked(const QUrl &))); + setContextMenuPolicy(Qt::NoContextMenu); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _theme = new QtChatTheme(); + + QWebFrame * frame = page()->mainFrame (); + frame->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); + + QString path = QString::fromUtf8(config.getResourcesDir().c_str()) + "pics/avatars/default-avatar.png"; +#if defined(OS_WINDOWS) + path = path.replace("\\","/"); + _avatarMap["defaut"] = path; +#else + _avatarMap["defaut"] = "file://"+path; +#endif + + page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); + connect(this,SIGNAL(linkClicked(const QUrl &)),this,SLOT(urlClicked(const QUrl &))); + + //load(QUrl("/Users/laurent/Desktop/qutecom-2.2/debug/debug/QuteCom.app/Contents/Resources/chat/base.html")); +} + +QtChatHistoryWidget::~QtChatHistoryWidget() { + delete _theme; +} + +void QtChatHistoryWidget::setTheme(const QString& themeDir,const QString & variant) { + _theme->load(themeDir); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + QString Resources_path; + +#if defined(OS_WINDOWS) + Resources_path = _theme->getCurrentThemePath(); +#else + Resources_path = "file://"+_theme->getCurrentThemePath(); +#endif + + Resources_path += "Contents/Resources/"; + + page()->mainFrame()->addToJavaScriptWindowObject("parent",this); + QFile file_base(QString::fromUtf8(config.getResourcesDir().c_str())+"chat/base.html"); + file_base.open(QIODevice::ReadOnly); + + QString base = file_base.readAll(); + + if (variant.isEmpty()) + base.replace("%cssPath%",""); + else + base.replace("%cssPath%","Variants/"+variant+".css"); + + setHtml(base,QUrl(Resources_path)); +} + +void QtChatHistoryWidget::saveHistoryAsHtml() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString contentToSave =_data; + + QString filePath = QFileDialog::getSaveFileName(this, tr("Save As"), + QString::fromUtf8(config.getLastChatHistorySaveDir().c_str()), "HTML (*.htm *.html)"); + + if(filePath.length() > 0) { + + if(!filePath.endsWith(QString(".htm"), Qt::CaseInsensitive) && + !filePath.endsWith(QString(".html"), Qt::CaseInsensitive)) { + + filePath.append(QString(".html")); + } + + QFile fileToSave(filePath); + config.set(Config::LAST_CHAT_HISTORY_SAVE_DIR_KEY, std::string(QFileInfo(fileToSave).absolutePath().toUtf8())); + fileToSave.open(QIODevice::WriteOnly); + fileToSave.write(contentToSave.toUtf8().data(), (long long)contentToSave.length()); + fileToSave.close(); + } +} + +void QtChatHistoryWidget::urlClicked(const QUrl & link) { + //setSource(QUrl(QString::null)); + QString url = link.toString(); + if(url.contains(_theme->getCurrentThemePath())) + url = url.remove(_theme->getCurrentThemePath()); + + WebBrowser::openUrl(std::string(url.toUtf8())); +} + +void QtChatHistoryWidget::insertMessage(const QString & contactId, const QString & senderName, const QString & message, const QTime & time) { + if (contactId == "self" || !_translate) + insertMessage2(contactId,senderName,message,time); + else + { + QString text = message; + text = text.replace('\"',"\\\""); + text = text.replace('\'',"\\\'"); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString lang = QString::fromUtf8(config.getTranslationReceived().c_str()); + QString script = QString("translate(\"%1\",\"%2\",\"%3\",\"%4\",\"%5\")").arg(contactId).arg(senderName).arg(text).arg(time.toString()).arg(lang); + page ()->currentFrame ()->evaluateJavaScript(script); + } +} + +void QtChatHistoryWidget::insertMessage2(const QString & contactId, const QString & senderName, const QString & message, const QTime & time) { + // Prepare message + QString htmlMessage = QtChatUtils::decodeMessage(_protocol, message); + + + // Get html + QtChatTheme::Position position; + int timeDelta = _lastMessageTime.secsTo(time); + if (_lastSenderName == senderName && timeDelta < MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES) + { + position = QtChatTheme::Next; + } + else + { + if (!_lastSenderName.isEmpty()) + { + QString footer = _theme->getFooter(); + footer = footer.replace('\n',""); + footer = footer.replace('\r',""); + footer = footer.replace('\t',""); + footer = footer.replace('\"',"\\\""); + footer = footer.replace('\'',"\\\'"); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+footer+"\")"); + } + position = QtChatTheme::First; + _lastSenderName = senderName; + } + _lastMessageTime = time; + + QtChatTheme::Direction direction; + + if (contactId == "self") { // FIXME: do not duplicate "self" + direction = QtChatTheme::Outgoing; + } else { + direction = QtChatTheme::Incoming; + + } + + QString html = _theme->getContent(direction, position); + QtChatTheme::setKeywordValue(html, "senderId", contactId); + QtChatTheme::setKeywordValue(html, "sender", senderName); + QtChatTheme::setKeywordValue(html, "message", "
"+htmlMessage+"
"); + + QRegExp reg("\\%(time|shortTime)(\\%|\\{.*\\}\\%)"); + html = html.replace(reg,time.toString("HH:mm")); + + QRegExp reg2("\\%timeOpened(\\%|\\{.*\\}\\%)"); + html = html.replace(reg2,QTime::currentTime().toString("HH:mm")); + + QtChatTheme::setKeywordValue(html, "service", ""); + + QString avatar_path = _avatarMap["defaut"]; + if(_avatarMap.contains(contactId)) + avatar_path = _avatarMap[contactId]; + QtChatTheme::setKeywordValue(html, "userIconPath", avatar_path); + + //updateHtml(); + + html = html.replace('\n',""); + html = html.replace('\r',""); + html = html.replace('\t',""); + html = html.replace('\"',"\\\""); + html = html.replace('\'',"\\\'"); + + if(position == QtChatTheme::First) + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); + + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+html+"\")"); + + //delay for QWebView to update itself + QTimer::singleShot(200,this,SLOT(scrollToBottom())); +} + +void QtChatHistoryWidget::translationFinishedSlot(const QVariant & traduction, const QVariant & contactId, const QVariant & senderName, const QVariant & message, const QVariant & time) +{ + QString tmp = traduction.toString().replace("'","'"); + if(tmp.isEmpty()) + { + insertMessage2(contactId.toString(),senderName.toString(),message.toString(),time.toTime()); + } + else + { + + QTextDocument doc; + doc.setHtml(message.toString()); + + QString str = "
"+tmp+"
"+doc.toPlainText()+"
"; + insertMessage2(contactId.toString(),senderName.toString(),str,time.toTime()); + } +} + +void QtChatHistoryWidget::insertStatusMessage(const QString & message, const QTime& time) { + // Make sure we close any opened message group + if (!_lastSenderName.isEmpty()) { + QString footer = _theme->getFooter(); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+footer+"\")"); + _lastSenderName = ""; + } + QString html = _theme->getStatusMessage(); + QtChatTheme::setKeywordValue(html, "message", message); + QtChatTheme::setKeywordValue(html, "time", time.toString("HH:mm")); + + html = html.replace('\n',""); + html = html.replace('\r',""); + html = html.replace('\t',""); + html = html.replace('\"',"\\\""); + html = html.replace('\'',"\\\'"); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); + page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+html+"\")"); + + //_data += html; + +} + +void QtChatHistoryWidget::setAvatarPixmap(const QString& name, const QPixmap& pixmap) +{ + QDir dir(QString::fromUtf8(Config::getConfigDir().c_str())); + + if(!dir.exists("cache")) + dir.mkdir("cache"); + dir.cd("cache"); + + //QString path = dir.absolutePath()+QDir::separator()+name+".png"; + QString path = dir.absolutePath()+"/"+name+".png"; + + pixmap.save(path,"PNG"); + +#if defined(OS_WINDOWS) + _avatarMap[name] = path; +#else + _avatarMap[name] = "file://"+path; +#endif +} + +void QtChatHistoryWidget::scrollToBottom() { + + QWebFrame * frame = page()->mainFrame (); + frame->setScrollBarValue(Qt::Vertical,frame->scrollBarMaximum(Qt::Vertical)); +} + +void QtChatHistoryWidget::clear() +{ + _data = ""; + _lastSenderName = ""; +} + + +void QtChatHistoryWidget::updateHtml() +{ +#if defined(OS_WINDOWS) + setHtml(_data,QUrl(_theme->getCurrentThemePath())); +#else + setHtml(_data,QUrl("file://"+_theme->getCurrentThemePath())); +#endif +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatHistoryWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATHISTORYWIDGET_H +#define OWQTCHATHISTORYWIDGET_H + +#include + +#include +#include +#include +#include + +class QtChatTheme; + +/** + * Implements the chat text zone with a custom context menu. + * + * @author Nicolas Couturier + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtChatHistoryWidget : public QWebView +{ + Q_OBJECT +public: + + void clear(); + + QtChatHistoryWidget(QWidget * parent); + + ~QtChatHistoryWidget(); + + void setTheme(const QString& themeDir , const QString& variant = ""); + + void insertMessage(const QString & contactId, const QString & senderName, const QString & str, const QTime & time); + + void insertMessage2(const QString & contactId, const QString & senderName, const QString & message, const QTime & time); + + void insertStatusMessage(const QString & statusMessage, const QTime& time); + + void setProtocol(EnumIMProtocol::IMProtocol newProtocol) { + _protocol = newProtocol; + } + + void saveHistoryAsHtml(); + + void setTranslate(bool val) + { + _translate = val; + } + /** + * Overloaded to implement avatar loading + */ + //virtual QVariant loadResource(int type, const QUrl& url); + + void setAvatarPixmap(const QString& name, const QPixmap& pixmap); + +private Q_SLOTS: + + /** + * An URL has been clicked we must open a web browser + * + * @param link the clicked url + */ + void urlClicked(const QUrl & link); + +public Q_SLOTS: + void scrollToBottom(); + + void translationFinishedSlot(const QVariant & , const QVariant &, const QVariant &, const QVariant &, const QVariant &); + +private: + void updateHtml(); + + QString _data; + + EnumIMProtocol::IMProtocol _protocol; + + QString _lastSenderName; + + QTime _lastMessageTime; + + QMap _avatarMap; + + QMap _scaledAvatarCache; + + QtChatTheme* _theme; + + bool _translate; +}; + +#endif //OWQTCHATHISTORYWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,447 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatLogViewer.h" +#include "ui_ChatLogViewer.h" + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +QtChatLogViewer::QtChatLogViewer(QWidget * parent, QtQuteCom & qtQuteCom, QString log) + : QMainWindow(parent), + _qtQuteCom(qtQuteCom),_log(log) { + + _ui = new Ui::ChatLogViewer(); + _ui->setupUi(this); + connect(_ui->historyLog,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished(bool))); + + setupMenuBarActions(); + setupToolBarActions(); + + #if defined(OS_MACOSX) + setUnifiedTitleAndToolBarOnMac(true); +#endif + + SAFE_CONNECT(qtQuteCom.getQtContactList(), SIGNAL(contactChangedEventSignal(QString )), SLOT(contactChangedEventSlot(QString))); + + updateToolBarActions(); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _ui->historyLog->setTranslate(false); + _ui->historyLog->setTheme(QString::fromUtf8(config.getChatTheme().c_str()),QString::fromUtf8(config.getChatThemeVariant().c_str())); + + _ui->actionSearchQuteComContact->setVisible(false); + _ui->menuQuteCom->setTitle(tr("Account")); +} + +void QtChatLogViewer::loadFinished(bool) +{ + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + + UserProfile * userProfile = _qtQuteCom.getCQuteCom().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userProfile) { + // Setup user avatar + QPixmap pixmap; + std::string myData = userProfile->getIcon().getData(); + pixmap.loadFromData((uchar *)myData.c_str(), myData.size()); + _ui->historyLog->setAvatarPixmap("self", pixmap); + + // Read history + std::string userlogin; + HistoryMementoCollection hmc; + StringList cuuidList; + userProfile->getHistory().loadChatLog(std::string(_log.toUtf8()), &hmc, &userlogin, &cuuidList); + _cuuidList = StringListConvert::toQStringList(cuuidList); + + bool isQuteComAccountConnected = userProfile->hasQuteComAccount(); + + QString selfContactName = QString::fromUtf8(userlogin.c_str()); + + // Set remote user avatars + Q_FOREACH(QString uuid, _cuuidList) { + ContactProfile profile = cContactList.getContactProfile(std::string(uuid.toUtf8())); + + std::string data = profile.getIcon().getData(); + if (data.size() != 0) { + QPixmap pixmap; + pixmap.loadFromData((uchar *)data.c_str(), data.size()); + _ui->historyLog->setAvatarPixmap(uuid, pixmap); + } + } + + // parses HistoryMementoCollection to find messages and inserts them in historyLog + _ui->historyLog->setProtocol (EnumIMProtocol::IMProtocolAll); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qutecomSuffix = "@" + QString::fromUtf8( config.getQuteComRealm().c_str() ); + QDate previousDate; + for (HistoryMap::iterator it = hmc.begin(); it != hmc.end(); it++) { + + HistoryMemento * memento = it->second; + + // Read date and time + Date mementoDate = memento->getDate(); + QDate date(mementoDate.getYear(), mementoDate.getMonth(), mementoDate.getDay()); + Time mementoTime = memento->getTime(); + QTime time = QTime(mementoTime.getHour(), mementoTime.getMinute()); + + // Insert date line if necessary + if (date != previousDate) { + QString txt = QLocale::system().toString(date); + _ui->historyLog->insertStatusMessage(txt, time); + previousDate = date; + } + + // Insert message + QString contactName = QString::fromUtf8(memento->getPeer().c_str()); + if (isQuteComAccountConnected) { + contactName.remove(qutecomSuffix); + } + contactName.remove("sip:"); + + QString contactId; + if (contactName == selfContactName) { + contactId = "self"; + } else { + contactId = _cuuidList[0]; + // FIXME: History format is broken: it does not store the uuid + // associated with a peer. Using the first uid will work for + // all one-to-one chat, but will fail for chat conference. + } + + _ui->historyLog->insertMessage( + contactId, + contactName, + QString::fromUtf8(memento->getData().c_str()), + time + ); + } + } +} + +QtChatLogViewer::~QtChatLogViewer() { + OWSAFE_DELETE(_ui); +} + +void QtChatLogViewer::copyQAction(QObject * actionParent, QAction * action) { + QAction * tmp = actionParent->findChild(action->objectName()); + if (!tmp) { + LOG_FATAL("QAction is null, cannot copy it"); + } + action->setIcon(tmp->icon()); + action->setIconText(tmp->iconText()); + action->setText(tmp->text()); + action->setToolTip(tmp->toolTip()); + action->setShortcut(tmp->shortcut()); +} + +void QtChatLogViewer::setupMenuBarActions() { + QtToolBar * qtToolBar = &_qtQuteCom.getQtToolBar(); + QWidget * toolBar = qtToolBar->getWidget(); + + // setup "QuteCom" menu + copyQAction(toolBar, _ui->actionShowQuteComAccount); + SAFE_CONNECT_RECEIVER(_ui->actionShowQuteComAccount, SIGNAL(triggered()), qtToolBar, SLOT(showQuteComAccount())); + copyQAction(toolBar, _ui->actionEditMyProfile); + SAFE_CONNECT_RECEIVER(_ui->actionEditMyProfile, SIGNAL(triggered()), qtToolBar, SLOT(editMyProfile())); + copyQAction(toolBar, _ui->actionQuteComServices); + SAFE_CONNECT_RECEIVER(_ui->actionQuteComServices, SIGNAL(triggered()), qtToolBar, SLOT(showQuteComServices())); + copyQAction(toolBar, _ui->actionClose); + SAFE_CONNECT(_ui->actionClose, SIGNAL(triggered()), SLOT(close())); + //// + + // setup "contact" menubar + copyQAction(toolBar, _ui->actionAddContact); + SAFE_CONNECT_RECEIVER(_ui->actionAddContact, SIGNAL(triggered()), qtToolBar, SLOT(addContact())); + copyQAction(toolBar, _ui->actionSearchQuteComContact); + SAFE_CONNECT_RECEIVER(_ui->actionSearchQuteComContact, SIGNAL(triggered()), qtToolBar, SLOT(searchQuteComContact())); + //// + + // setup "actions" menu + copyQAction(toolBar, _ui->actionCreateConferenceCall); + SAFE_CONNECT_RECEIVER(_ui->actionCreateConferenceCall, SIGNAL(triggered()), qtToolBar, SLOT(createConferenceCall())); + +#if defined (DISABLE_SMS) + _ui->actionSendSms->setVisible(false); +#else + copyQAction(toolBar, _ui->actionSendSms); + SAFE_CONNECT_RECEIVER(_ui->actionSendSms, SIGNAL(triggered()), qtToolBar, SLOT(sendSms())); +#endif + + SAFE_CONNECT(_ui->actionSaveHistoryAs, SIGNAL(triggered()), SLOT(saveChatHistory())); + SAFE_CONNECT(_ui->actionActionRestartChat, SIGNAL(triggered()), SLOT(restartChat())); + //// + +#if defined (DISABLE_FILETRANSFER) + _ui->actionSendFile->setVisible(false); + _ui->actionShowFileTransfer->setVisible(false); +#else + // setup "tools" menu + copyQAction(toolBar, _ui->actionShowFileTransfer); + SAFE_CONNECT_RECEIVER(_ui->actionShowFileTransfer, SIGNAL(triggered()), qtToolBar, SLOT(showFileTransferWindow())); + //// +#endif + + // setup "help" menu + copyQAction(toolBar, _ui->actionShowQuteComForum); + SAFE_CONNECT_RECEIVER(_ui->actionShowQuteComForum, SIGNAL(triggered()), qtToolBar, SLOT(showQuteComForum())); + copyQAction(toolBar, _ui->actionQuteComFAQ); + SAFE_CONNECT_RECEIVER(_ui->actionQuteComFAQ, SIGNAL(triggered()), qtToolBar, SLOT(showQuteComFAQ())); + //// +} + +void QtChatLogViewer::setupToolBarActions() { + SAFE_CONNECT(_ui->actionCallContact, SIGNAL(triggered()), SLOT(callContact())); + SAFE_CONNECT(_ui->actionSendSms, SIGNAL(triggered()), SLOT(sendSmsToContact())); + SAFE_CONNECT(_ui->actionSendFile, SIGNAL(triggered()), SLOT(sendFileToContact())); + SAFE_CONNECT(_ui->actionCreateChatConf, SIGNAL(triggered()), SLOT(createChatConference())); + SAFE_CONNECT(_ui->actionContactInfo, SIGNAL(triggered()), SLOT(showContactInfo())); +} + +bool QtChatLogViewer::canDoFileTransfer(const ContactProfile & contactProfile) { + if (!contactProfile.getFirstQuteComId().empty() && contactProfile.isAvailable()) { + IMContact imContact = contactProfile.getFirstAvailableQuteComIMContact(); + if ( (imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { + return true; + } + } + return false; +} + +void QtChatLogViewer::updateToolBarActions() { + + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + ContactProfile contactProfile; + + //call'n chat + if (_cuuidList.size() <= 0) { + //no contact to call + _ui->actionCallContact->setEnabled(false); + _ui->actionActionRestartChat->setEnabled(false); + } else if (_cuuidList.size() > 1) { + //TO DO + _ui->actionCallContact->setEnabled(false); + _ui->actionActionRestartChat->setEnabled(false); + } else { + std::string cuuid(_cuuidList[0].toUtf8()); + contactProfile = qtContactList->getCContactList().getContactProfile(cuuid); + _ui->actionCallContact->setEnabled(contactProfile.hasCall() && contactProfile.isAvailable()); + + _ui->actionActionRestartChat->setEnabled(contactProfile.hasIM()); + } + //// + + // depending on sip account type ( SMS, File Transfert ) + bool sendSMS = false; + bool sendFile = false; + UserProfile * userProfile = _qtQuteCom.getCQuteCom().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userProfile->hasQuteComAccount()) { + for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + contactProfile = qtContactList->getCContactList().getContactProfile(std::string(it->toUtf8())); + sendSMS |= !contactProfile.getMobilePhone().empty(); + sendFile |= canDoFileTransfer(contactProfile); + } + } else if (userProfile->hasSipAccount()) { + sendSMS = true; // a pop up + //sendFile = false; //useless + } + _ui->actionSendSms->setEnabled(sendSMS); + _ui->actionSendFile->setEnabled(sendFile); + //// + + if (_cuuidList.size() <= 0) { + _ui->actionContactInfo->setEnabled(false); + _ui->actionCreateChatConf->setEnabled(false); + } else { + _ui->actionContactInfo->setEnabled(true); + _ui->actionCreateChatConf->setEnabled(false); + } + +} + +void QtChatLogViewer::sendSmsToContact() { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + ContactProfile contactProfile; + UserProfile * userProfile = _qtQuteCom.getCQuteCom().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + + if (userProfile->hasQuteComAccount()) { + QtSms * sms = _qtQuteCom.getQtSms(); + if (sms) { + sms->clear(); + for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + contactProfile = qtContactList->getCContactList().getContactProfile(std::string(it->toUtf8())); + sms->addPhoneNumber(QString::fromUtf8(contactProfile.getMobilePhone().c_str())); + } + sms->getWidget()->show(); + } + } else { + QtNoQuteComAlert alert(this, _qtQuteCom); + alert.getQDialog()->exec(); + } +} + +void QtChatLogViewer::sendFileToContact() { + + QtFileTransfer * qtFileTransfer = _qtQuteCom.getFileTransfer(); + if (!qtFileTransfer) { + return; + } + + // gets a filename + QString filename = qtFileTransfer->getChosenFile(); + if (filename.isEmpty()) { + return; + } + QFileInfo fileInfo(filename); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY, std::string(fileInfo.dir().absolutePath().toUtf8())); + //// + + // sends this file to all available contacts + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + IMContactSet contactSet; + ContactProfile contactProfile; + + for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + contactProfile = qtContactList->getCContactList().getContactProfile(std::string(it->toUtf8())); + + if (contactProfile.hasAvailableQuteComId()) { + contactSet.insert(contactProfile.getFirstAvailableQuteComIMContact()); + } + } + qtFileTransfer->createSendFileSession(contactSet, filename, cContactList); + //// +} + +void QtChatLogViewer::callContact() { + if ((_cuuidList.size() > 0) && (!_cuuidList[0].isEmpty())) { + QtContactListManager::getInstance()->startCall(_cuuidList[0]); + if (_qtQuteCom.getWidget()->isMinimized()) { + _qtQuteCom.getWidget()->showNormal(); + } + } +} + +void QtChatLogViewer::showContactInfo() { + + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + ContactProfile contactProfile; + + for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + contactProfile = cContactList.getContactProfile(std::string(it->toUtf8())); + + QtProfileDetails qtProfileDetails( + *_qtQuteCom.getCQuteCom().getCUserProfileHandler().getCUserProfile(), + contactProfile, this, tr("Edit Contact")); + if (qtProfileDetails.show()) { + _qtQuteCom.getCQuteCom().getCUserProfileHandler().getCUserProfile()->getCContactList().updateContact(contactProfile); + } + } +} + +void QtChatLogViewer::saveChatHistory() { + _ui->historyLog->saveHistoryAsHtml(); +} + +void QtChatLogViewer::restartChat() { + + // starts a "normal" chat + if (_cuuidList.size() > 0) { + _qtQuteCom.getCQuteCom().getCUserProfileHandler().getCUserProfile()->startIM(std::string(_cuuidList[0].toUtf8())); + } + //// + + //// TO DO allow to start a multi-chat + // launches a confchat + //if (_cuuidList.size() > 1) { + // for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + // + // } + //} + ////// +} + +void QtChatLogViewer::createChatConference() { + + //// TO DO allow to start a multi-chat + + //QtChatWidget * widget = getActiveTabWidget(); + //if (widget) { + // widget->showInviteDialog(); + //} + + //if (canDoMultiChat()) { + // QtChatRoomInviteDlg dlg(*_imChatSession, + // _cChatHandler.getCUserProfile().getCContactList(), this); + // dlg.exec(); + //} +} + +void QtChatLogViewer::contactChangedEventSlot(QString contactid) { + + bool updateNeeded = false; + + for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { + if ((*it) == contactid) { + updateNeeded = true; + } + } + + if (updateNeeded && isVisible()) { + updateToolBarActions(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatLogViewer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATLOGVIEWER_H +#define OWQTCHATLOGVIEWER_H + +#include + +class ContactProfile; + +class QtQuteCom; + +class QAction; +class QString; +class QStringList; +namespace Ui { class ChatLogViewer; } + +/** + * Shows saved chat logs + * + * @ingroup presentation + * @author Xavier Desjardins + */ +class QtChatLogViewer : public QMainWindow { + Q_OBJECT +public: + + QtChatLogViewer(QWidget * parent, QtQuteCom & qtQuteCom, QString log); + + ~QtChatLogViewer(); + +public Q_SLOTS: + + void contactChangedEventSlot(QString contactId); + + void callContact(); + + void sendSmsToContact(); + + void sendFileToContact(); + + void createChatConference(); + + void showContactInfo(); + + void restartChat(); + + void saveChatHistory(); + +private Q_SLOTS: + void loadFinished(bool); + +private: + + bool canDoFileTransfer(const ContactProfile & contactProfile); + + void setupMenuBarActions(); + + void setupToolBarActions(); + + void updateToolBarActions(); + + /** + * Finds an QAction and copies its properties to another QAction. + * Code factorization. + * + * @param actionParent where to find the original QAction + * @param action QAction to modify + */ + static void copyQAction(QObject * actionParent, QAction * action); + + QtQuteCom & _qtQuteCom; + + QStringList _cuuidList; + + Ui::ChatLogViewer * _ui; + + QString _log; +}; + +#endif //OWQTCHATLOGVIEWER_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "QtChatTabWidget.h" + +#include +#include +#include +#include + +#include +#include + +static const int BLINK_OVERLAY_ALPHA = 128; + +QtChatTabWidget::QtChatTabWidget(QWidget * parent) : QTabWidget (parent) { + _normalColor = palette().color(QPalette::Foreground); + _blinkingColor = Qt::red; + _currentColor = _normalColor; + _timerId = startTimer(500); + +//#if !defined(OS_MACOSX) + // On MacOS X, QtCloseChatTabWidget is used in QtChatWindow + QToolButton * closeTabButton = new QToolButton(this); + QIcon closeIcon(QPixmap(":/pics/close_normal.png")); + closeIcon.addPixmap(QPixmap(":/pics/close_on.png"), QIcon::Normal, QIcon::On); + closeTabButton->setIcon(closeIcon); + closeTabButton->setToolTip(tr("Close chat")); + closeTabButton->setAutoRaise(true); + + setCornerWidget(closeTabButton, Qt::TopRightCorner); + connect(closeTabButton, SIGNAL(clicked()), SIGNAL(closeButtonClicked())); +//#endif + setDocumentMode(true); +} + +void QtChatTabWidget::setBlinkingTab(int index) { + if (_blinkingTabIcons.contains(index)) { + return; + } + QIcon icon = tabBar()->tabIcon(index); + + _blinkingTabIcons[index].normal = icon; + + // Create blinking icon + QImage img = icon.pixmap(tabBar()->iconSize()).toImage(); + + QPainter painter(&img); + painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); + + QPixmap overlay(img.size()); + overlay.fill(QColor(255, 255, 255, BLINK_OVERLAY_ALPHA)); + painter.drawPixmap(0, 0, overlay); + painter.end(); + + _blinkingTabIcons[index].blinking = QIcon(QPixmap::fromImage(img)); +} + +void QtChatTabWidget::stopBlinkingTab(int index) { + tabBar()->setTabTextColor(index, _normalColor); + + if (_blinkingTabIcons.contains(index)) { + tabBar()->setTabIcon(index,_blinkingTabIcons[index].normal); + _blinkingTabIcons.remove(index); + } +} + +void QtChatTabWidget::timerEvent(QTimerEvent * event) { + if ( _currentColor == _normalColor) { + _currentColor = _blinkingColor; + } else { + _currentColor = _normalColor; + } + + Q_FOREACH(int index, _blinkingTabIcons.keys()) { + tabBar()->setTabTextColor(index, _currentColor); + + if (_currentColor == _blinkingColor) { + tabBar()->setTabIcon(index, _blinkingTabIcons[index].blinking); + } else { + tabBar()->setTabIcon(index, _blinkingTabIcons[index].normal); + } + } +} + +void QtChatTabWidget::keyPressEvent(QKeyEvent* event) { + if (event->key() == Qt::Key_Tab && (event->modifiers() & Qt::ControlModifier)) { + goToNextTab(); + event->accept(); + } else { + event->ignore(); + } +} + +void QtChatTabWidget::goToNextTab() { + //ctrlTabPressed(); + if (count() <= 1) { + return; + } + + int i = currentIndex(); + i++; + if (i ==count()) { + i = 0; + } + setCurrentIndex(i); + +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTabWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATTABWIDGET_H +#define OWQTCHATTABWIDGET_H + +#include +#include +#include + +class QKeyEvent; + +/** + * Subclass QTabWidget in order to blink them + * and to deal with CTRL+TAB + * + * @ingroup presentation + * @author Mr K. + * @author Mathieu Stute. + */ +class QtChatTabWidget : public QTabWidget { + Q_OBJECT +public: + + QtChatTabWidget(QWidget * parent = 0); + + void setBlinkingTab(int index); + + void stopBlinkingTab(int index); + +public Q_SLOTS: + + void goToNextTab(); + +Q_SIGNALS: + + void ctrlTabPressed(); + + void closeButtonClicked(); + +private: + struct BlinkingIcon { + QIcon normal; + QIcon blinking; + }; + typedef QHash BlinkingTabIcons; + + virtual void timerEvent(QTimerEvent * event); + + virtual void keyPressEvent(QKeyEvent * event); + + BlinkingTabIcons _blinkingTabIcons; + + QColor _currentColor; + + QColor _normalColor; + + QColor _blinkingColor; + + int _timerId; +}; + +#endif //OWQTCHATTABWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,138 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "QtChatTheme.h" + +#include +#include + +#include +#include +#include +#include + +#include + +static const char KEYWORD_CHAR = '%'; + +QString QtChatTheme::getFooter() const { + return _footer; +} + +QString QtChatTheme::getStatusMessage() const { + return _statusMessage; +} + +QString QtChatTheme::getContent(Direction direction, Position position) const { + QString html; + if (direction == Incoming && position == First) { + html = _incomingContent; + } else if (direction == Outgoing && position == First) { + html = _outgoingContent; + } else if (direction == Incoming && position == Next) { + html = _incomingNextContent; + } else if (direction == Outgoing && position == Next) { + html = _outgoingNextContent; + } else { + LOG_FATAL("Unknown combination of direction and position"); + } + + return html; +} + +QString QtChatTheme::getStyleSheet() const { + return _styleSheet; +} + +static QString loadFile(const QString& path) { + QFile file(path); + file.open(QIODevice::ReadOnly); + QString data = QString::fromUtf8(file.readAll()); + return data.trimmed(); +} + +static QString themeBaseDir() { + static QString baseDir; + if (baseDir.isEmpty()) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + baseDir = QString::fromUtf8(config.getResourcesDir().c_str()); + +#if defined(OS_WINDOWS) + baseDir = baseDir.replace("\\","/"); +#endif + baseDir += "/chat/"; + } + return baseDir; +} + +QString QtChatTheme::getCurrentThemePath() +{ + return _currentThemePath; +} + +void QtChatTheme::load(const QString & themeDir) { + QStringList themeList = getThemeList(); + + if(themeList.contains(themeDir)) + _currentThemePath = themeBaseDir() + themeDir + "/"; + else if(themeList.count()) + _currentThemePath = themeBaseDir() + themeList.at(0) + "/"; + + _incomingContent = loadFile(_currentThemePath + "Contents/Resources/Incoming/Content.html"); + _incomingNextContent = loadFile(_currentThemePath + "Contents/Resources/Incoming/NextContent.html"); + _outgoingContent = loadFile(_currentThemePath + "Contents/Resources/Outgoing/Content.html"); + _outgoingNextContent = loadFile(_currentThemePath + "Contents/Resources/Outgoing/NextContent.html"); + _footer = loadFile(_currentThemePath + "Contents/Resources/Footer.html"); + _statusMessage = loadFile(_currentThemePath + "Contents/Resources/Status.html"); + _styleSheet = loadFile(_currentThemePath + "Contents/Resources/main.css"); +} + +void QtChatTheme::setKeywordValue(QString & html, const QString & keyword, const QString & value) { + html.replace(KEYWORD_CHAR + keyword + KEYWORD_CHAR, value); +} + +QStringList QtChatTheme::getThemeList() { + QDir dir(themeBaseDir()); + + QStringList list; + Q_FOREACH(QFileInfo info, dir.entryInfoList()) { + if (info.isDir()) { + QString name = info.fileName(); + if (name[0] != '.') { + list << name; + } + } + } + + return list; +} + +QStringList QtChatTheme::getThemeListVariant(const QString & theme) { + QDir dir(themeBaseDir() +theme+ "/Contents/Resources/Variants"); + + QStringList result; + QStringList filters; + filters << "*.css"; + + dir.setNameFilters(filters); + QFileInfoList infoList = dir.entryInfoList(); + for(int i = 0 ; i < infoList.count() ; i ++) + result.append(infoList.at(i).baseName()); + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatTheme.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTCHATUTILS_H +#define QTCHATUTILS_H + +#include + +/** + * Embryonic implementation of theme support. Severely limited by Qt HTML + * renderer for now. Hope WebKit will save us. + */ +class QtChatTheme { +public: + enum Direction { + Incoming, Outgoing + }; + + enum Position { + First, Next + }; + + QString getFooter() const; + + QString getStatusMessage() const; + + QString getContent(Direction, Position) const; + + QString getStyleSheet() const; + + void load(const QString & themeDir); + + static void setKeywordValue(QString & html, const QString & keyword, const QString & value); + + static QStringList getThemeList(); + static QStringList getThemeListVariant(const QString &); + + QString getCurrentThemePath(); + +private: + QString _currentThemePath; + QString _incomingContent; + QString _incomingNextContent; + QString _outgoingContent; + QString _outgoingNextContent; + QString _footer; + QString _statusMessage; + QString _styleSheet; +}; + +#endif // QTCHATUTILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatUtils.h" + +#include "emoticons/QtEmoticonsManager.h" + +#include + +const QString QtChatUtils::replaceUrls(const QString & str, const QString & htmlstr) { + int beginPos = 0; + QString tmp = htmlstr; + int endPos; + int repCount = 0; + + QStringList urls; + QStringList reps; + while (true) { + + beginPos = str.indexOf(QRegExp("(http://|https://|ftp://|^www.)", Qt::CaseInsensitive), beginPos); + if (beginPos == -1) { + break; + } + + for (endPos = beginPos; endPos < str.size(); endPos++) { + if ((str[endPos] == ' ') || (str[endPos] == '\r') || (str[endPos] == '\n')) { + break; + } + } + QString url = str.mid(beginPos, endPos - beginPos); + urls << url; + QString r = QString("$$_$$*_QUTECOMSTRUTILS_|KB|%1").arg(repCount); + reps << r; + repCount++; + tmp.replace(url, r); + beginPos = endPos; + } + for (int i = 0; i < reps.size(); i++) { + QString url = QString("" + urls[i] + ""); + tmp.replace(reps[i], url); + } + return tmp; +} + +const QString QtChatUtils::text2Emoticon(const QString & htmlstr, const QString & protocol) { + QtEmoticonsManager * emoticonsManager = QtEmoticonsManager::getInstance(); + return emoticonsManager->text2Emoticon(htmlstr, protocol); +} + +const QString QtChatUtils::emoticons2Text(const QString & htmlstr, const QString & protocol) { + QtEmoticonsManager * emoticonsManager = QtEmoticonsManager::getInstance(); + return emoticonsManager->emoticons2Text(htmlstr, protocol); +} + +const QString QtChatUtils::getProtocol(EnumIMProtocol::IMProtocol protocol) { + switch (protocol) { + case EnumIMProtocol::IMProtocolMSN: + return "msn"; + case EnumIMProtocol::IMProtocolYahoo: + return "yahoo"; + case EnumIMProtocol::IMProtocolQuteCom: + return "qutecom"; + case EnumIMProtocol::IMProtocolAll: + return "all"; + case EnumIMProtocol::IMProtocolJabber: + case EnumIMProtocol::IMProtocolAIM: + case EnumIMProtocol::IMProtocolICQ: + case EnumIMProtocol::IMProtocolUnknown: + default: + return "default"; + } +} + +const QString QtChatUtils::encodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message) { + return emoticons2Text(message, getProtocol(protocol)); +} + +const QString QtChatUtils::decodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message) { + QTextDocument tmp; + tmp.setHtml(message); + QString toReturn = text2Emoticon( + replaceUrls(tmp.toPlainText(), message), + getProtocol(protocol) + ); + return toReturn; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatUtils.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATUTILS_H +#define OWQTCHATUTILS_H + +#include + +class QColor; +class QFont; +class QString; + +/** + * Helper class that format message + * + * @ingroup presentation + * @author Mr K. + * @author Mathieu Stute + */ +class QtChatUtils { +public: + /** + * Gets a string representing the given protocol. + * + * @param protocol the protocol. + * @return a string representing the protocol. + */ + static const QString getProtocol(EnumIMProtocol::IMProtocol protocol); + + /** + * Prepares a message to be sent to the network. + * + * @param font the font to use. + * @param protocol used protocol. + * @param message the message to prepare. + * @return the prepared message. + */ + static const QString encodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message); + + /** + * Decodes a message from the network. + * + * @param protocol used protocol. + * @param message the message to decode. + * @return the prepared message. + */ + static const QString decodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message); + +private: + + /** + * Replaces urls by href html code. + * + * @param str the message in plain text. + * @param htmlstr the message in html. + * @return the changed message. + */ + static const QString replaceUrls(const QString & str, const QString & htmlstr); + + /** + * @see QtEmoticonsManager::text2Emoticon. + */ + static const QString text2Emoticon(const QString & htmlstr, const QString & protocol); + + /** + * @see QtEmoticonsManager::emoticon2Text. + */ + static const QString emoticons2Text(const QString & htmlstr, const QString & protocol); +}; + +#endif //OWQTCHATUTILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,664 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatWidget.h" +#include "QtChatUtils.h" +#include "chatroom/QtChatRoomInviteDlg.h" +#include "emoticons/QtEmoticonsWidget.h" + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include + +static const int CHAT_STOPPED_TYPING_DELAY = 1000; + +static const int EMOTICON_OFFSET_X = 13; +static const int EMOTICON_OFFSET_Y = 30; + +QString clearHtml( const QString & str) +{ + QString html = str; + + QRegExp htmlDocumentToHtmlSnippet(".*]*>\\s*]*>(.*)

\\s*\\s*"); + QRegExp pTag("]*>"); + + // toHtml() returns an HTML document, complete with html and body tags. + // This regexp strip those to produce an HTML snippet, which can be + // concatenated to the existing history + html.replace(htmlDocumentToHtmlSnippet, "\\1"); + html.replace(pTag, "
"); + html.replace("

", "
"); + + return html; +} + +QtChatWidget::QtChatWidget(CChatHandler & cChatHandler, + QtQuteCom * qtQuteCom, int sessionId, + QWidget * parent) : + QWidget(parent), + _cChatHandler(cChatHandler), + _qtQuteCom(qtQuteCom),isLoaded(false) { + + //Default nickname for testing purpose + _nickName = "QuteCom"; + _sessionId = sessionId; + _imChatSession = NULL; + + _bold = false; + _italic = false; + _underline = false; + + _isContactConnected = true; + + //setup ui + _ui.setupUi(this); + QPixmap pix = _ui.sendButton->icon().pixmap(50,50); + QPainter painter(&pix); + painter.setPen(Qt::white); + painter.drawText(pix.rect(),Qt::AlignCenter,tr("send")); + painter.end(); + _ui.sendButton->setIcon(QIcon(pix)); + _ui.editActionBar->setBackgroundRole(QPalette::Base); + _ui.editFrame->setBackgroundRole(QPalette::Base); + //// + + //creates sub widgets + _emoticonsWidget = new EmoticonsWidget(this); + //// + + //install event filters + _ui.chatHistory->installEventFilter(this); + _ui.chatEdit->installEventFilter(this); + //// + + //timer + _isTyping = false; + _stoppedTypingTimer = new QTimer(this); + _stoppedTypingTimer->setSingleShot(true); + SAFE_CONNECT_RECEIVER(_stoppedTypingTimer, SIGNAL(timeout()), this, SLOT(stoppedTypingSlot())); + //// + + //signal connection + SAFE_CONNECT(_ui.sendButton, SIGNAL(clicked()), SLOT(sendMessage())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(fontLabelClicked()), SLOT(changeFont())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(emoticonsLabelClicked()), SLOT(chooseEmoticon())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(fontColorLabelClicked()), SLOT(changeFontColor())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(boldLabelClicked()), SLOT(boldClickedSlot())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(italicLabelClicked()), SLOT(italicClickedSlot())); + SAFE_CONNECT(_ui.editActionBar, SIGNAL(underlineLabelClicked()), SLOT(underlineClickedSlot())); + SAFE_CONNECT(_emoticonsWidget, SIGNAL(emoticonClicked(QtEmoticon)), SLOT(emoticonSelected(QtEmoticon))); + SAFE_CONNECT_RECEIVER(_emoticonsWidget, SIGNAL(closed()), _ui.chatEdit, SLOT(setFocus())); + SAFE_CONNECT(_ui.chatEdit, SIGNAL(textChanged()), SLOT(chatEditTextChanged())); + SAFE_CONNECT(_ui.chatEdit, SIGNAL(fileDragged(const QString &)), SLOT(sendFileToSession(const QString &))); + SAFE_CONNECT(this, SIGNAL(contactAddedEventSignal(const IMContact &)), + SLOT(contactAddedEventSlot(const IMContact &))); + SAFE_CONNECT(this, SIGNAL(contactRemovedEventSignal(const IMContact &)), + SLOT(contactRemovedEventSlot(const IMContact &))); + //SAFE_CONNECT(_ui.avatarFrameButton, SIGNAL(clicked()), SLOT(avatarFrameButtonClicked())); + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + SAFE_CONNECT(qtContactList, SIGNAL(contactChangedEventSignal(QString)), SLOT(contactChangedSlot(QString))); + + _cChatHandler.getCUserProfile().getUserProfile().profileChangedEvent += + boost::bind(&QtChatWidget::profileChangedEventHandler, this); + SAFE_CONNECT_TYPE(this, SIGNAL(profileChangedEventHandlerSignal()), + SLOT(updateUserAvatar()), Qt::QueuedConnection); + + //send translate message + _webView = new QWebView; + _webView->page()->mainFrame()->addToJavaScriptWindowObject("parent",this); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QFile file(QString::fromUtf8(config.getResourcesDir().c_str())+"chat/base.html"); + file.open(QIODevice::ReadOnly); + _webView->setHtml(file.readAll()); + + //load theme + connect(_ui.chatHistory,SIGNAL(loadFinished(bool)),this,SLOT(htmlLoadFinished(bool))); + _ui.chatHistory->setTheme(QString::fromUtf8(config.getChatTheme().c_str()),QString::fromUtf8(config.getChatThemeVariant().c_str())); +} + +QtChatWidget::~QtChatWidget() { + _imChatSession->close(); + + _stoppedTypingTimer->stop(); + + delete _webView; +} + +void QtChatWidget::profileChangedEventHandler() { + profileChangedEventHandlerSignal(); +} + +void QtChatWidget::changeFont() { + bool ok; + QFont font = QFontDialog::getFont(&ok, _ui.chatEdit->currentFont(), this); + if (ok) { + _currentFont = font; + _ui.chatEdit->setCurrentFont(font); + } + _ui.chatEdit->setFocus(); +} + +void QtChatWidget::changeFontColor() { + bool ok; + QRgb color = QColorDialog::getRgba(_ui.chatEdit->textColor().rgba(), &ok, this); + if (ok) { + _currentColor = QColor(color); + _ui.chatEdit->setTextColor(_currentColor); + } + _ui.chatEdit->setFocus(); +} + +void QtChatWidget::boldClickedSlot() { + _bold = !_bold; + if (_bold) { + _ui.chatEdit->setFontWeight(QFont::Bold); + } else { + _ui.chatEdit->setFontWeight(QFont::Normal); + } +} + +void QtChatWidget::italicClickedSlot() { + _italic = !_italic; + _ui.chatEdit->setFontItalic(_italic); +} + +void QtChatWidget::underlineClickedSlot() { + _underline = !_underline; + _ui.chatEdit->setFontUnderline(_underline); +} + +void QtChatWidget::translate(const QString & html) +{ + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString lang = QString::fromUtf8(config.getTranslationSent().c_str()); + QString text = html; + + if(text.isEmpty()) + return; + + text = text.replace('\\',"\\\\\\\\"); + text = text.replace('\"',"\\\""); + text = text.replace('\'',"\\\'"); + + QString script = QString("translate(\"\",\"\",\"%1\",\"\",\"%2\")").arg(text).arg(lang);; + _webView->page ()->mainFrame ()->evaluateJavaScript(script); +} + +void QtChatWidget::chooseEmoticon() { + QPoint p = _ui.editActionBar->pos(); + QPoint offset(EMOTICON_OFFSET_X, EMOTICON_OFFSET_Y); + p += offset; + _emoticonsWidget->move(mapToGlobal(p)); + _emoticonsWidget->show(); +} + +void QtChatWidget::setVisible(bool visible) { + QWidget::setVisible(visible); + if (visible) { + _ui.chatEdit->setFocus(); + } +} + +void QtChatWidget::showInviteDialog() { + if (canDoMultiChat()) { + QtChatRoomInviteDlg dlg(*_imChatSession, + _cChatHandler.getCUserProfile().getCContactList(), this); + dlg.exec(); + } +} + +void QtChatWidget::contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact) { + contactAddedEventSignal(imContact); +} + +void QtChatWidget::contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact) { + contactRemovedEventSignal(imContact); +} + +void QtChatWidget::contactAddedEventSlot(const IMContact & imContact) { + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + std::string contactId = cContactList.findContactThatOwns(imContact); + + /*if (_ui.avatarFrame->getContactIDList().contains(QString::fromUtf8(contactId))) { + LOG_DEBUG("" + imContact.getContactId() + " deja dans la session !"); + return; + } + + ContactProfile profile = cContactList.getContactProfile(contactId); + + std::string data = profile.getIcon().getData(); + QPixmap pixmap; + pixmap.loadFromData((uchar *)data.c_str(), data.size()); + _ui.avatarFrame->addRemoteContact( + QString::fromUtf8(contactId), + QString::fromUtf8(profile.getDisplayName().c_str()), + QString::fromUtf8(imContact.getContactId()), + pixmap + );*/ + + QString imContactId = QString::fromUtf8(imContact.getContactId().c_str()); + addStatusMessage(tr("%1 has joined the chat").arg(imContactId)); +} + +void QtChatWidget::contactRemovedEventSlot(const IMContact & imContact) { + QString imContactId = QString::fromUtf8(imContact.getContactId().c_str()); + addStatusMessage(tr("%1 has left the chat").arg(imContactId)); + + /*QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + std::string contactId = cContactList.findContactThatOwns(imContact); + _ui.avatarFrame->removeRemoteContact(QString::fromUtf8(contactId));*/ +} + +void QtChatWidget::emoticonSelected(QtEmoticon emoticon) { + _ui.chatEdit->insertHtml(emoticon.getHtml()); + _ui.chatEdit->ensureCursorVisible(); +} + +void QtChatWidget::avatarFrameButtonClicked() { + /*if (_ui.avatarFrame->isVisible()) { + hideAvatarFrame(); + } else { + showAvatarFrame(); + }*/ +} + +void QtChatWidget::hideAvatarFrame() { + //_ui.avatarFrame->hide(); + //_ui.avatarFrameButton->setIcon(QIcon(":pics/chat/show_avatar_frame.png")); +} + +void QtChatWidget::showAvatarFrame() { + //_ui.avatarFrame->show(); + //_ui.avatarFrameButton->setIcon(QIcon(":pics/chat/hide_avatar_frame.png")); +} + +void QtChatWidget::addToHistory(const QString & contactId, const QString & senderName, const QString & str, const QTime & time) { + if(!isLoaded) + return; + + QTime tmp; + if (time.isNull()) { + tmp = QTime::currentTime(); + } else { + tmp = time; + } + _ui.chatHistory->insertMessage(contactId, senderName, str, tmp); +} + +void QtChatWidget::addStatusMessage(const QString & statusMessage) { + _ui.chatHistory->insertStatusMessage(statusMessage, QTime::currentTime()); +} + +void QtChatWidget::sendMessage() +{ + if(_ui.chatEdit->toPlainText().isEmpty()) + return; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString lang = QString::fromUtf8(config.getTranslationSent().c_str()); + QString html = clearHtml(_ui.chatEdit->toHtml()); + + translate(html); +} + +void QtChatWidget::setIMChatSession(IMChatSession * imChatSession) { + IMAccount * imAccount = + _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(imChatSession->getIMChat().getIMAccountId()); + + _imChatSession = imChatSession; + _emoticonsWidget->initButtons(QtChatUtils::getProtocol(imAccount->getProtocol())); + + _ui.chatHistory->setProtocol(imAccount->getProtocol()); + + OWSAFE_DELETE(imAccount); + + updateAvatarFrame(); + updateUserAvatar(); + if (_imChatSession->getIMContactSet().size() == 1) { + // It's useless to show the avatar frame if there is only one contact, + // since we can see its avatar when he talks. + hideAvatarFrame(); + } + + _imChatSession->contactAddedEvent += + boost::bind(&QtChatWidget::contactAddedEventHandler, this, _1, _2); + _imChatSession->contactRemovedEvent += + boost::bind(&QtChatWidget::contactRemovedEventHandler, this, _1, _2); + _imChatSession->changeTypingState(IMChat::TypingStateNotTyping); +} + +void QtChatWidget::chatEditTextChanged() { + // change typing state to Typing + if (!_isTyping) { + _imChatSession->changeTypingState(IMChat::TypingStateTyping); + _isTyping = true; + } + //// + + // manage timers + _stoppedTypingTimer->start(CHAT_STOPPED_TYPING_DELAY); + //// +} + +void QtChatWidget::stoppedTypingSlot() { + _imChatSession->changeTypingState(IMChat::TypingStateStopTyping); + _isTyping = false; +} + +void QtChatWidget::translationFinishedSlot(const QVariant & traduction, const QVariant &, const QVariant &, const QVariant & message, const QVariant & ) +{ + QString tmp = traduction.toString().replace("'","'"); + IMAccount * imAccount = _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(_imChatSession->getIMChat().getIMAccountId()); + QString msg; + + if(tmp.isEmpty()) + { + msg = message.toString(); + _imChatSession->sendMessage(QtChatUtils::encodeMessage(imAccount->getProtocol(), msg).toUtf8().constData()); + } + else + { + QTextDocument doc; + doc.setHtml(tmp); + msg = "
"+message.toString()+"
"+doc.toPlainText()+"
"; + _imChatSession->sendMessage(QtChatUtils::encodeMessage(imAccount->getProtocol(), tmp).toUtf8().constData()); + } + + addToHistory("self", _nickName, msg); + + + OWSAFE_DELETE(imAccount); + + _isTyping = true; + _ui.chatEdit->clear(); + _ui.chatEdit->setFocus(); + _ui.chatEdit->ensureCursorVisible(); + + //Not typing anymore + _imChatSession->changeTypingState(IMChat::TypingStateStopTyping); + _isTyping = false; + _stoppedTypingTimer->stop(); +} + +void QtChatWidget::updateAvatarFrame() { + QMutexLocker locker(&_mutex); + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + + IMContactSet imContactSet = _imChatSession->getIMContactSet(); + IMContactSet::iterator it; + for (it = imContactSet.begin(); it != imContactSet.end(); it++) { + + std::string contactId = cContactList.findContactThatOwns(*it); + ContactProfile profile = cContactList.getContactProfile(contactId); + + std::string data = profile.getIcon().getData(); + QPixmap pixmap; + if (data.size() > 0) { + pixmap.loadFromData((uchar *)data.c_str(), data.size()); + _ui.chatHistory->setAvatarPixmap(QString::fromUtf8(contactId.c_str()), pixmap); + } + } +} + +void QtChatWidget::updateUserAvatar() { + + QPixmap pixmap; + UserProfile& userProfile = _cChatHandler.getCUserProfile().getUserProfile(); + std::string myData = userProfile.getIcon().getData(); + pixmap.loadFromData((uchar *)myData.c_str(), myData.size()); + + _ui.chatHistory->setAvatarPixmap("self", pixmap); + //_ui.avatarFrame->setUserPixmap(pixmap); +} + +void QtChatWidget::sendFileToSession(const QString & filename) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + if (!canDoFileTransfer()) { + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + ContactProfile contactProfile = cContactList.getContactProfile(std::string(_contactId.toUtf8())); + + if (contactProfile.getFirstQuteComId().empty()) { + + QString myMess = tr("Your file can not be sent: your contact must be connected on the @company@ network. "); + //myMess += tr("An automatic message has been sent to him"); + addStatusMessage(myMess); + + QString hisMess = ""; + QString url = QString::fromUtf8(config.getCompanyWebSiteUrl().c_str()); + hisMess += tr("Your contact wishes to send a file with @company@. "); + hisMess += tr("Go to %1 to install it").arg(url); + hisMess += ""; + _imChatSession->sendMessage(std::string(hisMess.toUtf8())); + } + return; + } + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + QtFileTransfer * qtFileTransfer = _qtQuteCom->getFileTransfer(); + if (qtFileTransfer) { + qtFileTransfer->createSendFileSession(_imChatSession->getIMContactSet(), filename, cContactList); + } +} + +void QtChatWidget::saveHistoryAsHtml() { + _ui.chatHistory->saveHistoryAsHtml(); +} + +void QtChatWidget::setContactConnected(bool connected) { + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + ContactProfile profile = cContactList.getContactProfile(std::string(_contactId.toUtf8())); + + QString contactName; + if (!profile.getShortDisplayName().empty()) { + contactName = QString::fromUtf8(profile.getShortDisplayName().c_str()); + } else { + contactName = QString::fromUtf8(profile.getDisplayName().c_str()); + } + + if (connected && !_isContactConnected) { + addStatusMessage(QString(tr("%1 is connected.")).arg(contactName)); + } else if (!connected && _isContactConnected) { + addStatusMessage(QString(tr("%1 is disconnected.")).arg(contactName)); + } + + _isContactConnected = connected; +} + +void QtChatWidget::contactChangedSlot(QString contactId) { + + /*QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + ContactProfile profile = cContactList.getContactProfile(contactId.toUtf8()); + std::string data = profile.getIcon().getData(); + QPixmap pixmap; + pixmap.loadFromData((uchar *)data.c_str(), data.size()); + _ui.avatarFrame->updateContact(contactId, pixmap, QString::fromUtf8(profile.getDisplayName()));*/ +} + +bool QtChatWidget::canDoFileTransfer() { + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + ContactProfile contactProfile = cContactList.getContactProfile(std::string(_contactId.toUtf8())); + + if (!contactProfile.getFirstQuteComId().empty() && contactProfile.isAvailable()) { + IMContact imContact = contactProfile.getFirstAvailableQuteComIMContact(); + if ( (imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && + (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { + + return true; + } + } + return false; +} + +/** + * Helper method to clone a key event, so that it can be send to another widget + */ +static QKeyEvent* cloneKeyEvent(QKeyEvent* event) { + return new QKeyEvent(event->type(), event->key(), event->modifiers(), event->text()); +} + +bool QtChatWidget::eventFilter(QObject* object, QEvent* event) { + if (object == _ui.chatHistory && event->type() == QEvent::KeyPress) { + return historyKeyPressEventFilter(static_cast(event)); + } + if (object == _ui.chatEdit && event->type() == QEvent::KeyPress) { + return editKeyPressEventFilter(static_cast(event)); + } + return false; +} + +bool QtChatWidget::historyKeyPressEventFilter(QKeyEvent* event) { + // Set focus on edit widget if the user types a "printable" character + if (event->text().size() > 0 && event->text().at(0).isPrint() && _ui.chatEdit->isEnabled()) { + _ui.chatEdit->setFocus(); + QKeyEvent* newEvent = cloneKeyEvent(event); + QApplication::postEvent(_ui.chatEdit, newEvent); + return true; + } + return false; +} + +bool QtChatWidget::editKeyPressEventFilter(QKeyEvent* event) { + int key = event->key(); + + if (key == Qt::Key_PageUp || key == Qt::Key_PageDown) { + QKeyEvent* newEvent = cloneKeyEvent(event); + QApplication::postEvent(_ui.chatHistory, newEvent); + return true; + } + + // Send message with Enter key, unless a modifier is pressed + if ((key == Qt::Key_Enter || key == Qt::Key_Return) && + (event->modifiers() == Qt::NoModifier || event->modifiers() == Qt::KeypadModifier)) + { + sendMessage(); + return true; + } + +#ifdef OS_MACOSX + static const int REAL_CTRL_MODIFIER = Qt::MetaModifier; +#else + static const int REAL_CTRL_MODIFIER = Qt::ControlModifier; +#endif + bool realCtrlPressed = event->modifiers() & REAL_CTRL_MODIFIER; + + if (key == Qt::Key_Tab && realCtrlPressed) { + // We use realCtrlPressed because on MacOS, Qt::ControlModifier + // corresponds to the Command key and Command + Tab is used to switch + // between applications, (like Alt + Tab on Windows) + ctrlTabPressed(); + return true; + } + + return false; +} + +void QtChatWidget::readyToLoadHistory() +{ + + HistoryMementoCollection * hmc = _cChatHandler.getCUserProfile().getUserProfile().getHistory().getSessionCollection(_imChatSession->getId()); + + + if(hmc) + for (HistoryMap::iterator it = hmc->begin(); it != hmc->end(); it++) { + + HistoryMemento * memento = it->second; + + Time mementoTime = memento->getTime(); + QTime time = QTime(mementoTime.getHour(), mementoTime.getMinute()); + + + QString contactName; + + + if(memento->getAlias().size()) + contactName = QString::fromUtf8(memento->getAlias().c_str()); + else + { + contactName = QString::fromUtf8(memento->getPeer().c_str()); + contactName.remove("sip:"); + } + + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + QString contactId = QString::fromUtf8(cContactList.findContactThatOwns(std::string(contactName.toUtf8())).c_str()); + + _ui.chatHistory->insertMessage( + contactId, + contactName, + QString::fromUtf8(memento->getData().c_str()), + time + ); + } + isLoaded = true; +} + +void QtChatWidget::htmlLoadFinished(bool) +{ + //WebKit need a little time to load resources ... + QTimer::singleShot(500, this, SLOT(readyToLoadHistory())); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,240 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATWIDGET_H +#define OWQTCHATWIDGET_H + +#include "ui_ChatWidget.h" + +#include "emoticons/QtEmoticon.h" + +#include + +#include +#include +#include + +#include + +#include +#include + +class Profile; +class QtQuteCom; +class QtQuteComStyleLabel; +class EmoticonsWidget; +class QFont; +class QUrl; +class QTimer; + +#include + +/** + * + * @ingroup presentation + * @author Mr K. + * @author Mathieu Stute + */ +class QtChatWidget : public QWidget, public Trackable { + Q_OBJECT +public: + + QtChatWidget(CChatHandler & cChatHandler, QtQuteCom * qtQuteCom, + int sessionId, QWidget * parent); + + virtual ~QtChatWidget(); + + void setNickName(const QString & nickname) {_nickName = nickname;} + + const QString & nickName() const {return _nickName;} + + bool canDoMultiChat() {return _imChatSession->canDoMultiChat();} + + void setContactId(QString contactId) {_contactId = contactId;} + + int getSessionId() const {return _sessionId;} + + IMChatSession * getIMChatSession() {return _imChatSession;} + + QString getContactId() const {return _contactId;} + + // called from the model's thread + void contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact); + + // called from the model's thread + void contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact); + + void setIMChatSession(IMChatSession * imChatSession); + + /** + * Adds a message to the history and display it. + * + * @param contactId id of the contact who sends the message, or "self" if the sender is the local user + * @param senderName name of the contact who sends the message + * @param str the message + * @param time the time of the message, will use the current time if empty + */ + void addToHistory(const QString & contactId, const QString & senderName, const QString & str, const QTime & time = QTime()); + + /** + * Displays a satus message. + * + * Behaves same as addToHistory but set the text color to the status message + * color and does not display a contact name. + */ + void addStatusMessage(const QString & statusMessage); + + void saveHistoryAsHtml(); + + /** + * Sets the Contact state. + * + * If not connected and the last status was connected, + * the ChatEditWidget will be disabled and a status message + * will be displayed saying the contact went offline. + * + * If connect and the last status was disconnected, + * the ChatEditWidget will be enabled and a status message + * will be displayed saying the contact when online. + **/ + void setContactConnected(bool connected); + + bool canDoFileTransfer(); + +public Q_SLOTS: + + /** + * QtChatEditWidget text has changed + */ + void chatEditTextChanged(); + + void changeFont(); + + void chooseEmoticon(); + + void emoticonSelected(QtEmoticon emoticon); + + void showInviteDialog(); + + void contactAddedEventSlot(const IMContact & imContact); + + void contactRemovedEventSlot(const IMContact & imContact); + + virtual void setVisible(bool visible); + + void sendFileToSession(const QString & filename); + + void translationFinishedSlot(const QVariant & , const QVariant &, const QVariant &, const QVariant &, const QVariant &); + +Q_SIGNALS: + + void newMessage(IMChatSession* session,const QString & msg); + + void contactAddedEventSignal(const IMContact & imContact); + + void contactRemovedEventSignal(const IMContact & imContact); + + void ctrlTabPressed(); + + void profileChangedEventHandlerSignal(); + +protected: + virtual bool eventFilter(QObject* object, QEvent* event); + +private Q_SLOTS: + + void avatarFrameButtonClicked(); + + void changeFontColor(); + + void boldClickedSlot(); + + void italicClickedSlot(); + + void underlineClickedSlot(); + + void contactChangedSlot(QString contactId); + + void sendMessage(); + + void stoppedTypingSlot(); + + void updateUserAvatar(); + + void translate(const QString &); + + void htmlLoadFinished(bool); + + void readyToLoadHistory(); + +private: + void profileChangedEventHandler(); + + void updateAvatarFrame(); + + void showAvatarFrame(); + + void hideAvatarFrame(); + + bool historyKeyPressEventFilter(QKeyEvent* event); + + bool editKeyPressEventFilter(QKeyEvent* event); + + CChatHandler & _cChatHandler; + + QtQuteCom * _qtQuteCom; + + IMChatSession * _imChatSession; + + QWidget * _widget; + + QString _contactId; + + int _sessionId; + + QString _nickName; + + mutable QMutex _mutex; + + EmoticonsWidget * _emoticonsWidget; + + Ui::ChatWidget _ui; + + /** True if the Contact in this Widget is connected. */ + bool _isContactConnected; + + // font style settings + QFont _currentFont; + QColor _currentColor; + bool _bold; + bool _italic; + bool _underline; + //// + + /** stopped typing timer */ + QTimer * _stoppedTypingTimer; + + bool _isTyping; + + QWebView * _webView; + + bool isLoaded; +}; + +#endif //OWQTCHATWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,904 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatWindow.h" +#include "QtChatWidget.h" +#include "QtChatTabWidget.h" +#include "ui_ChatMainWindow.h" +#include "emoticons/QtEmoticonsManager.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include + +#if defined(OS_WINDOWS) + #include +#endif + +#include +#include + +#include + +/** + * Finds an QAction and copies its properties to another QAction. + * + * @param actionParent where to find the original QAction + * @param action QAction to modify + */ +static void copyQAction(QObject * actionParent, QAction * action) { + QString name = action->objectName(); + QAction * tmp = actionParent->findChild(name); + if (!tmp) { + LOG_ERROR("Couldn't find action named '" + name.toUtf8() + "', cannot copy it"); + return; + } + action->setIcon(tmp->icon()); + action->setIconText(tmp->iconText()); + action->setText(tmp->text()); + action->setToolTip(tmp->toolTip()); + action->setShortcut(tmp->shortcut()); +} + +/** + * Connect an action to show a web page to its slot if the web page has been + * defined + */ +static void connectOrHide(WsUrl::Page page, QMenu* menu, QAction* action, QtToolBar* qtToolBar, const char* slot) { + if (WsUrl::hasPage(page)) { + copyQAction(qtToolBar->getWidget(), action); + SAFE_CONNECT_RECEIVER(action, SIGNAL(triggered()), qtToolBar, slot); + } else { + menu->removeAction(action); + } +} + +QtChatWindow::QtChatWindow(QWidget * parent, CChatHandler & cChatHandler, IMChatSession & imChatSession, QtQuteCom & qtQuteCom) + : QMainWindow(parent), + _cChatHandler(cChatHandler), + _qtQuteCom(qtQuteCom) { + + _imChatSession = &imChatSession; + +#if defined(OS_MACOSX) + setUnifiedTitleAndToolBarOnMac(true); +#endif + + _ui = new Ui::ChatMainWindow(); + _ui->setupUi(this); + setupMenuBarActions(); + setupToolBarActions(); + + // bind to IMChatSession events + _imChatSession->messageReceivedEvent += + boost::bind(&QtChatWindow::messageReceivedEventHandler, this, _1); + _imChatSession->imChatSessionWillDieEvent += + boost::bind(&QtChatWindow::imChatSessionWillDieEventHandler, this, _1); + _imChatSession->typingStateChangedEvent += + boost::bind(&QtChatWindow::typingStateChangedEventHandler, this, _1, _2, _3); + //// + + _qtQuteCom.getCQuteCom().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile()->getIMAccountManager().imAccountRemovedEvent += + boost::bind(&QtChatWindow::imAccountRemovedEventHandler, this, _1, _2); + + // create the tab widget and connect to its signals + _tabWidget = new QtChatTabWidget(this); + _tabWidget->removeTab(0); + setCentralWidget(_tabWidget); + SAFE_CONNECT(_tabWidget, SIGNAL(closeButtonClicked()), SLOT(closeActiveTab())); + SAFE_CONNECT(_tabWidget, SIGNAL(currentChanged(int)), SLOT(activeTabChanged(int))); + //// + + // create instance of QtEmoticonsManager + QtEmoticonsManager::getInstance(); + + // thread safe code + SAFE_CONNECT_TYPE(this, SIGNAL(typingStateChangedSignal(const IMChatSession *, const IMContact *, const IMChat::TypingState *)), + SLOT(typingStateChangedThreadSafe(const IMChatSession *, const IMContact *, const IMChat::TypingState *)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(messageReceivedSignal(IMChatSession *)), + SLOT(messageReceivedSlot(IMChatSession *)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(imAccountRemovedEventSignal(const QString &)), + SLOT(imAccountRemovedEventThreadSafe(const QString &)), Qt::QueuedConnection); + //// + + // Clipboard actions + SAFE_CONNECT(_ui->actionCut, SIGNAL(triggered()), + SLOT(cut()) ); + SAFE_CONNECT(_ui->actionCopy, SIGNAL(triggered()), + SLOT(copy()) ); + SAFE_CONNECT(_ui->actionPaste, SIGNAL(triggered()), + SLOT(paste()) ); + SAFE_CONNECT(QApplication::clipboard(), SIGNAL(dataChanged()), + SLOT(updateClipboardActions()) ); + updateClipboardActions(); + //// + + _qtQuteCom.setChatWindow(this); + resize(490, 470); + setWindowTitle(tr("@product@ Chat")); + +#ifdef OS_LINUX + const std::string & applicationIconPath = ConfigManager::getInstance().getCurrentConfig().getApplicationIconPath(); + setWindowIcon(QIcon(QString::fromUtf8(applicationIconPath.c_str()))); +#endif + + // add a tab widget + IMContact from = *_imChatSession->getIMContactSet().begin(); + addChatWidgetTab(_imChatSession, from); + //// + + _ui->actionSearchQuteComContact->setVisible(false); + _ui->menuQuteCom->setTitle(tr("Account")); +} + +QtChatWindow::~QtChatWindow() { + + //destroyed tabWidget so that chat are saved + while(_tabWidget->count()>0) { + closeActiveTab(); + } + //// + QtEmoticonsManager * m = QtEmoticonsManager::getInstance(); + OWSAFE_DELETE(m); + + OWSAFE_DELETE(_ui); +} + +QtChatWidget * QtChatWindow::getActiveTabWidget() { + return dynamic_cast(_tabWidget->widget(_tabWidget->currentIndex())); +} + +void QtChatWindow::activeTabChanged(int index) { + _tabWidget->stopBlinkingTab(index); + setWindowTitle(_tabWidget->tabText(_tabWidget->currentIndex())); + updateToolBarActions(); + updateClipboardActions(); + statusBar()->showMessage(QString::null); +} + +const QString QtChatWindow::getActiveTabContactId() { + QString contactId; + QtChatWidget * widget = getActiveTabWidget(); + if (widget) { + contactId = widget->getContactId(); + } + return contactId; +} + +ContactProfile QtChatWindow::getContactProfileFromContactId(const QString & contactId) { + return _qtQuteCom.getQtContactList()->getCContactList().getContactProfile(std::string(contactId.toUtf8())); +} + +void QtChatWindow::closeActiveTab() { + QtChatWidget * widget = getActiveTabWidget(); + _mapSession.remove(_mapSession.key(widget),widget); + _tabWidget->removeTab(_tabWidget->indexOf(widget)); + OWSAFE_DELETE(widget); + if (_tabWidget->count() == 0) { + close(); + _qtQuteCom.setChatWindow(NULL); + } + activeTabChanged(_tabWidget->currentIndex()); +} + +void QtChatWindow::showMinimized() { +#if !defined(OS_MACOSX) + +#ifdef OS_WINDOWS + HWND topWindow = GetForegroundWindow(); +#endif + QMainWindow::showMinimized(); +#ifdef OS_WINDOWS + SetForegroundWindow(topWindow); +#endif + +#else + showNormal(); +#endif +} + +void QtChatWindow::show() { + showNormal(); + activateWindow(); + raise(); +} + +void QtChatWindow::createChatConference() { + QtChatWidget * widget = getActiveTabWidget(); + if (widget) { + widget->showInviteDialog(); + } +} + +void QtChatWindow::typingStateChangedEventHandler(IMChatSession & sender, const IMContact & imContact, IMChat::TypingState state) { + IMChat::TypingState * tmpState = new IMChat::TypingState; + *tmpState = state; + typingStateChangedSignal(&sender,&imContact,tmpState); +} + +void QtChatWindow::typingStateChangedThreadSafe(const IMChatSession * sender, const IMContact * from,const IMChat::TypingState * state) { + int tabs = _tabWidget->count(); + for (int i = 0; i < tabs; i++) { + QtChatWidget * widget = (QtChatWidget *) _tabWidget->widget(i); + if (widget->getSessionId() == sender->getId()) { + + //only display mssage if IMChatSessio is active + if (!widget->isVisible()) { + return; + } + + QString remoteName; + if(from->getAlias().size()) + remoteName = QString::fromUtf8(from->getAlias().c_str()); + else + remoteName = QString::fromUtf8(from->getDisplayContactId().c_str()); + switch (*state) { + case IMChat::TypingStateNotTyping: + statusBar()->showMessage(QString::null); + break; + case IMChat::TypingStateTyping: + statusBar()->showMessage(tr("%1 is typing").arg(remoteName)); + break; + case IMChat::TypingStateStopTyping: + statusBar()->showMessage(QString::null); + break; + default: + break; + } + } + } + OWSAFE_DELETE(state); +} + +void QtChatWindow::messageReceivedEventHandler(IMChatSession & sender) { + messageReceivedSignal(&sender); +} + +void QtChatWindow::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) +{ + imAccountRemovedEventSignal(QString::fromUtf8(imAccountId.c_str())); +} + +void QtChatWindow::imAccountRemovedEventThreadSafe(const QString & imAccountId) +{ + QList list = _mapSession.values(imAccountId); + _mapSession.remove(imAccountId); + + for(QList::iterator it = list.begin() ; it != list.end() ; it ++) + { + _tabWidget->removeTab(_tabWidget->indexOf(*it)); + + if (_tabWidget->count() == 0) { + close(); + _qtQuteCom.setChatWindow(NULL); + return; + } + } + activeTabChanged(_tabWidget->currentIndex()); +} + +QString QtChatWindow::getShortDisplayName(const QString & contactId, const QString & defaultName) const { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + std::string tmpSendername = cContactList.getContactProfile(std::string(contactId.toUtf8())).getShortDisplayName().c_str(); + if (tmpSendername.empty()) { + tmpSendername = std::string(defaultName.toUtf8()); + } + + return QString::fromUtf8(tmpSendername.c_str()); +} + +void QtChatWindow::statusChangedSlot(QString contactId) { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + std::string sdname (qtContactList->getCContactList().getContactProfile(std::string(contactId.toUtf8())).getDisplayName().c_str()); + EnumPresenceState::PresenceState pstate = qtContactList->getCContactList().getContactProfile(std::string(contactId.toUtf8())).getPresenceState(); + QString displayName = QString::fromUtf8(sdname.c_str()); + + // search for the tab that contain sender + // FIXME: the contact could be in several tabs: for instance when + // we do a single-chat and a multi-chat with this contact + for (int i = 0; i < _tabWidget->count(); i++) { + QtChatWidget * widget = (QtChatWidget *) _tabWidget->widget(i); + if (widget) { + if (widget->getContactId() == contactId) { + switch(pstate) { + case EnumPresenceState::PresenceStateOnline: + _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/online.png"))); + widget->setContactConnected(true); + break; + case EnumPresenceState::PresenceStateOffline: + _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/offline.png"))); + widget->setContactConnected(false); + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/donotdisturb.png"))); + widget->setContactConnected(true); + break; + case EnumPresenceState::PresenceStateAway: + _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/away.png"))); + widget->setContactConnected(true); + break; + default: + _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/contact/chat.png"))); + if (!displayName.isEmpty()) { + // If Display name is empty, it means that the Contact is not in the ContactList. + // Thus we should not say that the contact is offline as we don't really know its + // status. + widget->setContactConnected(false); + } + break; + } + break; + } + } + } + + updateToolBarActions(); +} + +void QtChatWindow::setupMenuBarActions() { + QtToolBar * qtToolBar = &_qtQuteCom.getQtToolBar(); + QWidget * toolBar = qtToolBar->getWidget(); + + // setup "QuteCom" menu + connectOrHide(WsUrl::Account, _ui->menuQuteCom, _ui->actionShowQuteComAccount, qtToolBar, SLOT(showQuteComAccount())); + + copyQAction(toolBar, _ui->actionEditMyProfile); + SAFE_CONNECT_RECEIVER(_ui->actionEditMyProfile, SIGNAL(triggered()), qtToolBar, SLOT(editMyProfile())); + connectOrHide(WsUrl::CallOut, _ui->menuQuteCom, _ui->actionQuteComServices, qtToolBar, SLOT(showQuteComServices())); + + copyQAction(toolBar, _ui->actionClose); + SAFE_CONNECT(_ui->actionClose, SIGNAL(triggered()), SLOT(close())); + //// + + // setup "contact" menubar + copyQAction(toolBar, _ui->actionAddContact); + SAFE_CONNECT_RECEIVER(_ui->actionAddContact, SIGNAL(triggered()), qtToolBar, SLOT(addContact())); + copyQAction(toolBar, _ui->actionSearchQuteComContact); + SAFE_CONNECT_RECEIVER(_ui->actionSearchQuteComContact, SIGNAL(triggered()), qtToolBar, SLOT(searchQuteComContact())); + //// + + // setup "actions" menu + copyQAction(toolBar, _ui->actionCreateConferenceCall); + SAFE_CONNECT_RECEIVER(_ui->actionCreateConferenceCall, SIGNAL(triggered()), qtToolBar, SLOT(createConferenceCall())); + copyQAction(toolBar, _ui->actionSendSms); + SAFE_CONNECT_RECEIVER(_ui->actionSendSms, SIGNAL(triggered()), qtToolBar, SLOT(sendSms())); + SAFE_CONNECT(_ui->actionSaveHistoryAs, SIGNAL(triggered()), SLOT(saveActiveTabChatHistory())); + //// + + // setup "tools" menu + copyQAction(toolBar, _ui->actionShowFileTransfer); + SAFE_CONNECT_RECEIVER(_ui->actionShowFileTransfer, SIGNAL(triggered()), qtToolBar, SLOT(showFileTransferWindow())); + + // clone "help" menu + QMenu* menuHelp = _qtQuteCom.getWidget()->findChild("menuHelp"); + if (menuHelp) { + menuBar()->addMenu(menuHelp); + } else { + LOG_ERROR("Couldn't find a menu named 'menuHelp' in main window"); + } + //// +} + +void QtChatWindow::setupToolBarActions() { + SAFE_CONNECT(_ui->actionCallContact, SIGNAL(triggered()), SLOT(callActiveTabContact())); + SAFE_CONNECT(_ui->actionSendSms, SIGNAL(triggered()), SLOT(sendSmsToActiveTabContact())); + SAFE_CONNECT(_ui->actionSendFile, SIGNAL(triggered()), SLOT(sendFileToActiveTabContact())); + SAFE_CONNECT(_ui->actionCreateChatConf, SIGNAL(triggered()), SLOT(createChatConference())); + SAFE_CONNECT(_ui->actionContactInfo, SIGNAL(triggered()), SLOT(showActiveTabContactInfo())); + SAFE_CONNECT(_ui->actionBlockContact, SIGNAL(triggered()), SLOT(blockActiveTabContact())); + +/*#if defined(OS_MACOSX) + // Add a stretch, so that the close tab button is aligned on the right + QWidget* dummyWidget = new QWidget(); + dummyWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); + _ui->toolBar->addWidget(dummyWidget); + + // Add the close tab button + QIcon icon(":/pics/chat/chat_close.png"); + QAction* action = _ui->toolBar->addAction(icon, tr("Close Chat")); + SAFE_CONNECT(action, SIGNAL(triggered()), SLOT(closeActiveTab())); + + // For some unknown reason the close tab button is a bit off the screen. + // Adding some fixed spacing fixes this. + dummyWidget = new QWidget(); + dummyWidget->setFixedHeight(10); + _ui->toolBar->addWidget(dummyWidget); +#endif*/ +} + +void QtChatWindow::updateToolBarActions() { + //FIXME: this code assume that there is only one contact in the session + + QtChatWidget * widget = getActiveTabWidget(); + QString contactId; + QtContactList * qtContactList; + ContactProfile contactProfile; + + if (widget) { + contactId = widget->getContactId(); + qtContactList = _qtQuteCom.getQtContactList(); + if (qtContactList) + { + contactProfile = qtContactList->getCContactList().getContactProfile(std::string(contactId.toUtf8())); + + _ui->actionCallContact->setEnabled(contactProfile.hasCall() + && contactProfile.isAvailable()); + + _ui->actionSendSms->setEnabled(!contactProfile.getMobilePhone().empty()); + #ifdef DISABLE_SMS + _ui->actionSendSms->setVisible(false); + #endif + + _ui->actionSendFile->setEnabled(widget->canDoFileTransfer()); + #ifdef DISABLE_FILETRANSFER + _ui->actionSendFile->setVisible(false); + _ui->actionShowFileTransfer->setVisible(false); + _ui->menuTools->menuAction()->setVisible(false); + #endif + + _ui->actionCreateChatConf->setEnabled(widget->canDoMultiChat()); + _ui->actionContactInfo->setEnabled(true); + //TODO: uncomment when block a contact will be implemented + //_ui->actionBlockContact->setEnabled(!contactProfile.isBlocked()); + _ui->actionBlockContact->setEnabled(false); + //// + } + else + { + _ui->actionCallContact->setEnabled(false); + _ui->actionSendSms->setEnabled(false); + _ui->actionSendFile->setEnabled(false); + + _ui->actionCreateChatConf->setEnabled(false); + _ui->actionContactInfo->setEnabled(false); + _ui->actionBlockContact->setEnabled(false); + } + + } +} + +void QtChatWindow::messageReceivedSlot(IMChatSession * sender) { + if (!isActiveWindow()) { + if (!isVisible()) { + // Make sure the window appears on the taskbar, + // otherwise it won't flash... + showMinimized(); + } + WidgetUtils::flashWindow(this); + } + + // new way to get messages + IMChatSession::IMChatMessageList imChatMessageList = sender->getReceivedMessage(_lastReceivedMessageIndex[sender->getId()] + 1); + if (imChatMessageList.size() > 0) { + _lastReceivedMessageIndex[sender->getId()] += imChatMessageList.size(); + IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); + while (imChatMessageListIterator < imChatMessageList.end()) { + IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; + const IMContact & from = imChatMessage->getIMContact(); + std::string message = imChatMessage->getMessage(); + QString senderName = QString::fromUtf8(from.getContactId().c_str()); + + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + CContactList & cContactList = qtContactList->getCContactList(); + QString contactId = QString::fromUtf8(cContactList.findContactThatOwns(from).c_str()); + QString senderDisplayName; + if(from.getAlias().size()) + senderDisplayName = QString::fromUtf8(from.getAlias().c_str()); + else + senderDisplayName = getShortDisplayName(contactId, QString::fromUtf8(from.getDisplayContactId().c_str())); + QString msg = QString::fromUtf8(message.c_str()); + + int tabs = _tabWidget->count(); + for (int i = 0; i < tabs; i++) { + QtChatWidget * widget = dynamic_cast(_tabWidget->widget(i)); + if (widget->getSessionId() == sender->getId()) { + _chatWidget = qobject_cast(_tabWidget->widget(i)); + _chatWidget->addToHistory(contactId, senderDisplayName, msg); + if (_tabWidget->currentWidget() != _chatWidget) { + if (isMinimized()) { + _tabWidget->setCurrentIndex(i); + } else { + _tabWidget->setBlinkingTab(i); + } + } + break; + } + } + imChatMessageListIterator++; + } + } + //// +} + +void QtChatWindow::imChatSessionCreatedHandler(IMChatSession * imChatSession) { + // If this chat session already exists, display the tab + int tabs = _tabWidget->count(); + for (int i = 0; i < tabs; i++) { + QtChatWidget * widget = dynamic_cast(_tabWidget->widget(i)); + if (widget->getSessionId() == imChatSession->getId()) { + _tabWidget->setCurrentIndex(i); + show(); + return; + } + } + + // bind to IMChatSession events + imChatSession->messageReceivedEvent += + boost::bind(&QtChatWindow::messageReceivedEventHandler, this, _1); + imChatSession->imChatSessionWillDieEvent += + boost::bind(&QtChatWindow::imChatSessionWillDieEventHandler, this, _1); + imChatSession->typingStateChangedEvent += + boost::bind(&QtChatWindow::typingStateChangedEventHandler, this, _1, _2, _3); + //// + + if (imChatSession->getIMContactSet().size() != 0 ) { + IMContact from = *imChatSession->getIMContactSet().begin(); + addChatWidgetTab(imChatSession, from); + } else { + LOG_FATAL("New chat session is empty!"); + } + _qtQuteCom.setChatWindow(this); +} + +void QtChatWindow::addChatWidgetTab(IMChatSession * imChatSession, const IMContact & from) { + + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + if (qtContactList) { + CContactList & cContactList = qtContactList->getCContactList(); + + QString contactId = QString::fromUtf8(cContactList.findContactThatOwns(from).c_str()); + std::string tmpNickName; + IMAccount * imAccount = + _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(imChatSession->getIMChat().getIMAccountId()); + if (imAccount) + { + if(imAccount->getDisplayName() != "") + tmpNickName = imAccount->getDisplayName(); + else + tmpNickName = imAccount->getLogin(); + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("cannot get associated IMAccount"); + } + + QString nickName = QString::fromUtf8(tmpNickName.c_str()); + + QString senderName; + if(from.getAlias().size()) + senderName = QString::fromUtf8(from.getAlias().c_str()); + else + senderName = getShortDisplayName(contactId, QString::fromUtf8(from.getDisplayContactId().c_str())); + + _chatWidget = new QtChatWidget(_cChatHandler, &_qtQuteCom, imChatSession->getId(), 0 /*parent*/); + SAFE_CONNECT_RECEIVER(_chatWidget, SIGNAL(ctrlTabPressed()), _tabWidget, SLOT(goToNextTab())); + _chatWidget->setNickName(nickName); + _chatWidget->setIMChatSession(imChatSession); + _chatWidget->setContactId(QString::fromUtf8(qtContactList->getCContactList().findContactThatOwns(from).c_str())); + Q_FOREACH(QTextEdit* textEdit, _chatWidget->findChildren()) { + SAFE_CONNECT(textEdit, SIGNAL(selectionChanged()), + SLOT(updateClipboardActions()) ); + textEdit->installEventFilter(this); + } + + SAFE_CONNECT(qtContactList, SIGNAL(contactChangedEventSignal(QString )), SLOT(statusChangedSlot(QString))); + + int tabNumber; + if (_tabWidget->count() > 0) { + tabNumber = _tabWidget->insertTab(_tabWidget->count(), _chatWidget, senderName); + } else { + tabNumber = _tabWidget->insertTab(0, _chatWidget, senderName); + } + + _mapSession.insertMulti(QString::fromUtf8(imChatSession->getIMChat().getIMAccountId().c_str()),_chatWidget); + + if (imChatSession->isUserCreated()) { + _tabWidget->setCurrentIndex(tabNumber); + updateClipboardActions(); + } + + statusChangedSlot(QString::fromUtf8(cContactList.findContactThatOwns(from).c_str())); + + activeTabChanged(_tabWidget->currentIndex()); + + // Adding probably missed message + _lastReceivedMessageIndex[imChatSession->getId()] = -1; + IMChatSession::IMChatMessageList imChatMessageList = + imChatSession->getReceivedMessage(_lastReceivedMessageIndex[imChatSession->getId()] + 1); + if (imChatMessageList.size() > 0) { + _lastReceivedMessageIndex[imChatSession->getId()] += imChatMessageList.size(); + IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); + while (imChatMessageListIterator != imChatMessageList.end()){ + IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; + + //history chat message are reconstructed with no protocol + QString displayName; + QTime time; + if(imChatMessage->getIMContact().getProtocol() != EnumIMProtocol::IMProtocolUnknown) { + if(from.getAlias().size()) + displayName = QString::fromUtf8(from.getAlias().c_str()); + else + displayName = getShortDisplayName(contactId, QString::fromUtf8(from.getDisplayContactId().c_str())); + + } else { + if(imChatMessage->getIMContact().getAlias().size()) + displayName = QString::fromUtf8(imChatMessage->getIMContact().getAlias().c_str()); + else + displayName = QString::fromUtf8(imChatMessage->getIMContact().cleanContactId().c_str()); + Time messageTime = imChatMessage->getTime(); + time = QTime(messageTime.getHour(), messageTime.getMinute()); + } + _chatWidget->addToHistory(contactId, displayName, + QString::fromUtf8(imChatMessage->getMessage().c_str()), + time); + + imChatMessageListIterator++; + } + } + //// + + if (imChatSession->isUserCreated()) { + show(); + } else { + if (isActiveWindow() || _qtQuteCom.getWidget()->isActiveWindow()) { + if (tabNumber != _tabWidget->currentIndex()) { + _tabWidget->setBlinkingTab(tabNumber); + } + show(); + } else { + if (!isVisible()) { + // Make sure the window appears on the taskbar, + // otherwise it won't flash... + showMinimized(); + } + + if (isMinimized()) { + _tabWidget->setCurrentIndex(tabNumber); + } else if (tabNumber != _tabWidget->currentIndex()) { + _tabWidget->setBlinkingTab(tabNumber); + } + + WidgetUtils::flashWindow(this); + showToaster(imChatSession); + } + } + + updateToolBarActions(); + } +} + +void QtChatWindow::showToaster(IMChatSession * imChatSession) { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + if (qtContactList) { + CContactList & cContactList = qtContactList->getCContactList(); + QPixmap avatar; + QtChatToaster * toaster = new QtChatToaster(); + + if (imChatSession->getIMContactSet().size() > 0) { + QString message; + for (IMContactSet::const_iterator it = imChatSession->getIMContactSet().begin(); + it != imChatSession->getIMContactSet().end(); ++it) { + + if (it != imChatSession->getIMContactSet().begin()) { + message += ", "; + } + QString contactId = QString::fromUtf8(cContactList.findContactThatOwns((*it)).c_str()); + if((*it).getAlias().size()) + message += QString::fromUtf8((*it).getAlias().c_str()); + else + message += getShortDisplayName(contactId, QString::fromUtf8((*it).getDisplayContactId().c_str())); + + std::string contact = _cChatHandler.getCUserProfile().getCContactList().findContactThatOwns((*it)); + if (!contact.empty()) { + ContactProfile contactProfile = _cChatHandler.getCUserProfile().getCContactList().getContactProfile(contact); + OWPicture picture = contactProfile.getIcon(); + std::string data = picture.getData(); + if (!data.empty()) { + avatar.loadFromData((uchar *) data.c_str(), data.size()); + } + } + } + toaster->setMessage(message); + } + + if (avatar.isNull()) { + std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); + avatar.loadFromData((uchar*)data.c_str(), data.size()); + } + + toaster->setPixmap(avatar); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + Sound::play(config.getAudioIncomingChatFile()); + SAFE_CONNECT(toaster, SIGNAL(chatButtonClicked()), SLOT(show())); + toaster->show(); + } +} + +void QtChatWindow::imChatSessionWillDieEventHandler(IMChatSession & sender) { + _lastReceivedMessageIndex.erase(sender.getId()); +} + +void QtChatWindow::sendSmsToActiveTabContact() { + // retrieve mobile phone number. + QString phoneNumber; + const QString contactId = getActiveTabContactId(); + if (!contactId.isEmpty()) { + ContactProfile contactProfile = getContactProfileFromContactId(contactId); + phoneNumber = QString::fromUtf8(contactProfile.getMobilePhone().c_str()); + } + //// + + // configure & show the sms widget + QtSms * sms = _qtQuteCom.getQtSms(); + if (sms) { + sms->setPhoneNumber(phoneNumber); + sms->getWidget()->show(); + } + //// +} + +void QtChatWindow::sendFileToActiveTabContact() { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QtFileTransfer * qtFileTransfer = _qtQuteCom.getFileTransfer(); + if (!qtFileTransfer) { + return; + } + + QString filename = qtFileTransfer->getChosenFile(); + if (!filename.isEmpty()) { + QFileInfo fileInfo(filename); + config.set(Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY, std::string(fileInfo.dir().absolutePath().toUtf8())); + } + + if (!filename.isEmpty()) { + QtChatWidget * widget = getActiveTabWidget(); + if (widget) { + widget->sendFileToSession(filename); + } + } +} + +void QtChatWindow::callActiveTabContact() { + const QString contactId = getActiveTabContactId(); + if (!contactId.isEmpty()) { + QtContactListManager::getInstance()->startCall(contactId); + if (_qtQuteCom.getWidget()->isMinimized()) { + _qtQuteCom.getWidget()->showNormal(); + } +#if defined(OS_WINDOWS) + SetForegroundWindow(_qtQuteCom.getWidget()->winId()); +#endif + } +} + +void QtChatWindow::showActiveTabContactInfo() { + const QString contactId = getActiveTabContactId(); + if (!contactId.isEmpty()) { + ContactProfile contactProfile = getContactProfileFromContactId(contactId); + QtProfileDetails qtProfileDetails( + *_qtQuteCom.getCQuteCom().getCUserProfileHandler().getCUserProfile(), + contactProfile, this, tr("Edit Contact")); + if (qtProfileDetails.show()) { + _qtQuteCom.getCQuteCom().getCUserProfileHandler().getCUserProfile()->getCContactList().updateContact(contactProfile); + } + } +} + +void QtChatWindow::saveActiveTabChatHistory() { + QtChatWidget * chatWidget = getActiveTabWidget(); + if (chatWidget) { + chatWidget->saveHistoryAsHtml(); + } +} + +void QtChatWindow::closeEvent(QCloseEvent *event) { + //closeAllTabs(); +} + +void QtChatWindow::closeAllTabs() { + LOG_DEBUG("closing all Chat tabs"); + while(_tabWidget->count()>0) { + closeActiveTab(); + } +} + +static QTextEdit* getActiveTextEdit() { + return qobject_cast(QApplication::focusWidget()); +} + +void QtChatWindow::updateClipboardActions() { + QTextEdit* textEdit = getActiveTextEdit(); + bool modifiable = false; + bool hasSelection = false; + if (textEdit) { + hasSelection = !textEdit->textCursor().selectedText().isEmpty(); + modifiable = !textEdit->isReadOnly(); + } + bool clipboardFilled = !QApplication::clipboard()->text().isEmpty(); + _ui->actionCut->setEnabled(modifiable && hasSelection); + _ui->actionCopy->setEnabled(hasSelection); + _ui->actionPaste->setEnabled(modifiable && clipboardFilled); +} + +void QtChatWindow::cut() { + QTextEdit* textEdit = getActiveTextEdit(); + if (textEdit) { + textEdit->cut(); + } +} + +void QtChatWindow::copy() { + QTextEdit* textEdit = getActiveTextEdit(); + if (textEdit) { + textEdit->copy(); + } +} + +void QtChatWindow::paste() { + QTextEdit* textEdit = getActiveTextEdit(); + if (textEdit) { + textEdit->paste(); + } +} + +bool QtChatWindow::eventFilter(QObject* object, QEvent* event) { + if (!qobject_cast(object)) { + return false; + } + + if (event->type() == QEvent::FocusIn || event->type() == QEvent::FocusOut) { + updateClipboardActions(); + } + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtChatWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,170 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATWINDOW_H +#define OWQTCHATWINDOW_H + +#include +#include + +#include + +#include +#include + +#include + +#include +#include + +class QtChatTabWidget; +class QtQuteCom; +class QtChatWidget; +class IMContact; +class IMChatSession; +class ContactProfile; + +class QAction; +namespace Ui { class ChatMainWindow; } + +/** + * + * @ingroup presentation + * @author Mathieu Stute. + */ +class QtChatWindow : public QMainWindow, public Trackable { + Q_OBJECT +public: + + QtChatWindow(QWidget * parent, CChatHandler & cChatHandler, IMChatSession & imChatSession, QtQuteCom & qtQuteCom); + + ~QtChatWindow(); + + void imChatSessionCreatedHandler(IMChatSession * imChatSession); + + void closeEvent(QCloseEvent *event); + +Q_SIGNALS: + + void messageReceivedSignal(IMChatSession * sender); + + void typingStateChangedSignal(const IMChatSession * sender, const IMContact * imContact, const IMChat::TypingState * state); + + void imAccountRemovedEventSignal(const QString &); + +public Q_SLOTS: + + void activeTabChanged(int index); + + void messageReceivedSlot(IMChatSession * sender); + + void show(); + + void typingStateChangedThreadSafe(const IMChatSession * sender, const IMContact * imContact, const IMChat::TypingState * state); + + void imAccountRemovedEventThreadSafe(const QString &); + + void callActiveTabContact(); + + void sendSmsToActiveTabContact(); + + void sendFileToActiveTabContact(); + + void createChatConference(); + + void showActiveTabContactInfo(); + + //TODO + void blockActiveTabContact() {} + + void closeActiveTab(); + + void closeAllTabs(); + + void statusChangedSlot(QString contactId); + + void saveActiveTabChatHistory(); + +protected: + /** + * Installed on QTextEdit widgets. Used to update clipboard actions. + */ + virtual bool eventFilter(QObject* object, QEvent* event); + +private Q_SLOTS: + void cut(); + + void copy(); + + void paste(); + + void updateClipboardActions(); + +private: + + void addChatWidgetTab(IMChatSession * session, const IMContact & from); + + void showToaster(IMChatSession * imChatSession); + + QtChatWidget * getActiveTabWidget(); + + const QString getActiveTabContactId(); + + ContactProfile getContactProfileFromContactId(const QString & contactId); + + void setupMenuBarActions(); + + void setupToolBarActions(); + + void updateToolBarActions(); + + void messageReceivedEventHandler(IMChatSession & sender); + + void typingStateChangedEventHandler(IMChatSession & sender, const IMContact & imContact, IMChat::TypingState state); + + void imChatSessionWillDieEventHandler(IMChatSession & sender); + + void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); + + void flashWindow(); + + void showMinimized(); + + QString getShortDisplayName(const QString & contactId, const QString & defaultName) const; + + QtChatWidget * _chatWidget; + + QtChatTabWidget * _tabWidget; + + CChatHandler & _cChatHandler; + + IMChatSession * _imChatSession; + + QtQuteCom & _qtQuteCom; + + Ui::ChatMainWindow * _ui; + + /** Index of the last message printed on screen for ecah sessionID **/ + std::map _lastReceivedMessageIndex; + + QMultiMap _mapSession; +}; + +#endif //OWQTCHATWINDOW_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtQuteComStyleBar.h" + +#include + +#include + +QtQuteComStyleBar::QtQuteComStyleBar(QWidget * parent) : + QWidget(parent) { + + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + + // create layout + _layout = new QHBoxLayout(this); + _layout->setMargin(0); + _layout->setSpacing(0); + //// + + // add emoticon label + addLabel( + QPixmap(":/pics/chat/chat_emoticon_button.png"), + QPixmap(":/pics/chat/chat_emoticon_button_on.png"), + SIGNAL(emoticonsLabelClicked()), + QuteComStyleLabel::Normal + ); + //// + + // add bold label + addLabel( + QPixmap(":/pics/chat/font_bold.png"), + QPixmap(":/pics/chat/font_bold_on.png"), + SIGNAL(boldLabelClicked()) + ); + //// + + // add italic label + addLabel( + QPixmap(":/pics/chat/font_italic.png"), + QPixmap(":/pics/chat/font_italic_on.png"), + SIGNAL(italicLabelClicked()) + ); + //// + + // add underline label + addLabel( + QPixmap(":/pics/chat/font_underline.png"), + QPixmap(":/pics/chat/font_underline_on.png"), + SIGNAL(underlineLabelClicked()) + ); + //// + + // configure end label + QPixmap fillPixmap = QPixmap(":/pics/chat/bar_fill.png"); + QuteComStyleLabel* endLabel = new QuteComStyleLabel(this); + endLabel->setPixmaps( + QPixmap(), + QPixmap(":/pics/chat/bar_end.png"), + fillPixmap, + QPixmap(), + QPixmap(":/pics/chat/bar_end.png"), + fillPixmap + ); + int height = fillPixmap.height(); + endLabel->setMinimumSize(QSize(16, height)); + _layout->addWidget(endLabel); + //// + + setFixedHeight(height); + +} + +void QtQuteComStyleBar::addLabel( + const QPixmap & normalPixmap, const QPixmap & pressedPixmap, + const char* signal, + QuteComStyleLabel::Mode mode) { + + QuteComStyleLabel * label = new QuteComStyleLabel(this, mode); + + label->setPixmaps( + normalPixmap, + QPixmap(), + QPixmap(), + pressedPixmap, + QPixmap(), + QPixmap() + ); + label->setFixedSize(normalPixmap.size()); + + _layout->addWidget(label); + + connect(label, SIGNAL(clicked()), signal); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/QtQuteComStyleBar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTQUTECOMSTYLEBAR_H +#define OWQTQUTECOMSTYLEBAR_H + +#include +#include +#include +#include + +#include + +class QHBoxLayout; + +/** + * + * @author Nicolas Couturier + * @author Mathieu Stute + */ +class QtQuteComStyleBar : public QWidget { + Q_OBJECT +public: + + /** + * Constructor. + */ + QtQuteComStyleBar(QWidget * parent); + +Q_SIGNALS: + + /** + * Emoticon label has been clicked. + */ + void emoticonsLabelClicked(); + + /** + * Font label has been clicked. + */ + void fontLabelClicked(); + + /** + * Font color label has been clicked. + */ + void fontColorLabelClicked(); + + /** + * Bold label has been clicked. + */ + void boldLabelClicked(); + + /** + * Italic label has been clicked. + */ + void italicLabelClicked(); + + /** + * Underline label has been clicked. + */ + void underlineLabelClicked(); + +private: + /** + * Adds a new button in the action bar + * + * @param normalPixmap : the image to be used for the button. + * @param pressedPixmap : the image to be used when the button is pressed. + * @param size : the size of the button. + * @param signal : the signal to emit on click. + * @param mode : the label mode. Set to QuteComStyleLabel::Toggled by + * default. + */ + void addLabel(const QPixmap & normalPixmap, const QPixmap & pressedPixmap, + const char* signal, QuteComStyleLabel::Mode mode = QuteComStyleLabel::Toggled); + + QHBoxLayout* _layout; +}; + +#endif //OWQTQUTECOMSTYLEBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/UserFrame.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/UserFrame.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/chat/UserFrame.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/chat/UserFrame.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,61 @@ + + + + + UserFrame + + + + 0 + 0 + 120 + 116 + + + + + 60 + 60 + + + + Form + + + + 0 + + + 0 + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists-install-linux.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,92 @@ +# vim: filetype=cmake +set_target_properties( + ${BINARY_NAME} + PROPERTIES + INSTALL_RPATH + ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/qutecom + INSTALL_RPATH_USE_LINK_PATH + ON +) + +install(TARGETS + ${BINARY_NAME} + RUNTIME DESTINATION bin) + +install(PROGRAMS + ${TMP_BUILD_DIR}/libwebcam.so + ${TMP_BUILD_DIR}/libphapi.so + ${TMP_BUILD_DIR}/libphapiutil.so + ${TMP_BUILD_DIR}/phapi-plugins/libphspeexplugin.so + ${TMP_BUILD_DIR}/libsfp-plugin.so + ${TMP_BUILD_DIR}/libowbase.so + ${TMP_BUILD_DIR}/libowsl.so + ${TMP_BUILD_DIR}/libowutil.so + ${TMP_BUILD_DIR}/libpsiidle.so + DESTINATION lib${LIB_SUFFIX}/qutecom + ) + +if (PHAPI_CODEC_AMR_SUPPORT) + install(PROGRAMS + ${TMP_BUILD_DIR}/phapi-plugins/libphamrplugin.so + DESTINATION lib${LIB_SUFFIX}/qutecom) +endif (PHAPI_CODEC_AMR_SUPPORT) + +if (PHAPI_CODEC_ILBC_SUPPORT) + install(PROGRAMS + ${TMP_BUILD_DIR}/phapi-plugins/libphilbcplugin.so + DESTINATION lib${LIB_SUFFIX}/qutecom) +endif (PHAPI_CODEC_ILBC_SUPPORT) + + +if (ENABLE_CRASHREPORT) + install(PROGRAMS + ${TMP_BUILD_DIR}/libowmemorydump.so + DESTINATION lib${LIB_SUFFIX}/qutecom + ) +endif (ENABLE_CRASHREPORT) + +if (CURL_INTERNAL) + install(PROGRAMS + ${TMP_BUILD_DIR}/libcurl.so + DESTINATION lib${LIB_SUFFIX}/qutecom) +endif (CURL_INTERNAL) + +if (LIBPURPLE_INTERNAL) + install(PROGRAMS + ${TMP_BUILD_DIR}/liblibpurple.so + DESTINATION lib${LIB_SUFFIX}/qutecom) +endif (LIBPURPLE_INTERNAL) + +install(DIRECTORY + ${TMP_BUILD_DIR}/lang + DESTINATION ${DATA_INSTALL_DIR} + PATTERN "*.qm") + +install(DIRECTORY + # Keep trailing slash here. See 'install' doc. + ${CMAKE_SOURCE_DIR}/qutecom/resources/ + DESTINATION ${DATA_INSTALL_DIR} + PATTERN "qutecom.css" EXCLUDE + PATTERN ".svn" EXCLUDE + PATTERN "CMakeLists.txt" EXCLUDE) + +install(FILES + ${CMAKE_SOURCE_DIR}/qutecom/res/70QuteCom + DESTINATION lib${LIB_SUFFIX}/pm-utils/sleep.d + PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) + +install(FILES + ${CMAKE_SOURCE_DIR}/qutecom/res/qutecom.desktop + DESTINATION share/applications) + +foreach(size 16 32 48 64) + install(FILES + ${CMAKE_SOURCE_DIR}/qutecom/res/qutecom_${size}x${size}.png + DESTINATION share/icons/hicolor/${size}x${size}/apps/ + RENAME qutecom.png) +endforeach(size) + +install(FILES + ${CMAKE_SOURCE_DIR}/qutecom/COPYING + ${CMAKE_SOURCE_DIR}/qutecom/AUTHORS + DESTINATION ${DATA_INSTALL_DIR}) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,685 @@ +set(BINARY_NAME ${APPLICATION_NAME}) +string(REPLACE " " "" BINARY_NAME ${BINARY_NAME}) +if (LINUX) + string(TOLOWER ${BINARY_NAME} BINARY_NAME) +endif (LINUX) +ow_create_executable(${BINARY_NAME}) + +configure_file(buildconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/buildconfig.h) + +subdirs( + lang +) + +ow_use_private_libraries( + owphone + owbuildid + owqtutil + pixertool + webcam + psiidle + owsoftupdater +) + +if (SIPWRAPPER_BACKEND_SIPX) + ow_add_private_definitions( + -DSIPXWRAPPER + ) + + ow_use_private_libraries( + sipxwrapper + ) +else (SIPWRAPPER_BACKEND_SIPX) +if (SIPWRAPPER_BACKEND_PHAPI) + ow_add_private_definitions( + -DPHAPIWRAPPER + ) + + ow_use_private_libraries( + owphapiwrapper + ) +else (SIPWRAPPER_BACKEND_PHAPI) +if (IMWRAPPER_BACKEND_MULTI) + ow_add_private_definitions( + -DMULTIIMWRAPPER + ) + + ow_use_private_libraries( + owmultiimwrapper + ) +endif (IMWRAPPER_BACKEND_MULTI) +endif (SIPWRAPPER_BACKEND_PHAPI) +endif (SIPWRAPPER_BACKEND_SIPX) + +ow_add_private_include_dirs( + ${CMAKE_CURRENT_BINARY_DIR} + ${CMAKE_CURRENT_SOURCE_DIR} +) + +qt4_wrap_cpp(${PROJECT_NAME}_SRCS + QtQuteCom.h + QtDialpad.h + QtSVGDialpad.h + QtHttpProxyLogin.h + QtIdle.h + QtLanguage.h + QtToolBar.h + QtSystray.h + QtFactory.h + QtPresenceMenuManager.h + QtBrowserWidget.h + QtIMAccountMonitor.h + QtNoQuteComAlert.h + + phoneline/QtPhoneLine.h + + phonecall/QtPhoneCall.h + phonecall/QtVideoQt.h + phonecall/QtContactCallListWidget.h + phonecall/QtPhoneCallEventFilter.h + phonecall/QtAudioSmileysWindow.h + + toaster/QtChatToaster.h + toaster/QtCallToaster.h + toaster/QtToaster.h + + login/ILogin.h + login/QtLoginDialog.h + login/QtLogAccount.h + login/QtAddAccount.h + login/QtAddQuteComAccount.h + login/QtAddSIPAccount.h + + profile/QtProfileDetails.h + profile/QtUserProfile.h + profile/QtUserProfileHandler.h + + imcontact/QtAdvancedIMContactManager.h + imcontact/QtAddIMContact.h + imcontact/QtSimpleIMContactManager.h + imcontact/QtIMContactManagerInterface.h + + imaccount/QtIMAccountManager.h + imaccount/QtIMAccountSettings.h + imaccount/QtIMAccountPlugin.h + imaccount/QtMSNSettings.h + imaccount/QtYahooSettings.h + imaccount/QtAIMSettings.h + imaccount/QtICQSettings.h + imaccount/QtJabberSettings.h + imaccount/QtGoogleTalkSettings.h + + imaccount/QtFaceBookSettings.h + imaccount/QtMySpaceSettings.h + imaccount/QtSkypeSettings.h + imaccount/QtTwitterSettings.h + + contactlist/QtContactList.h + contactlist/ContactGroupPopupMenu.h + contactlist/QtContactWidget.h + contactlist/QtContactTreeMouseFilter.h + contactlist/QtContactManager.h + contactlist/QtContact.h + contactlist/QtTreeViewDelegate.h + contactlist/QtContactTreeKeyFilter.h + contactlist/QtRenameGroup.h + contactlist/QtConferenceAction.h + + conference/QtConferenceCallWidget.h + + chat/emoticons/QtEmoticonsWidget.h + chat/emoticons/QtEmoticonButton.h + chat/chatroom/QtChatRoomInviteDlg.h + chat/QtChatTabWidget.h + chat/QtChatAvatarFrame.h + chat/QtChatAvatarWidget.h + chat/QtChatHandler.h + chat/QtChatWidget.h + chat/QtChatWindow.h + chat/QtChatEditWidget.h + chat/QtChatHistoryWidget.h + chat/QtQuteComStyleBar.h + chat/QtChatLogViewer.h + + webservices/sms/QtSms.h + webservices/softupdate/QtSoftUpdate.h + webservices/softupdate/QtBrowserSoftUpdate.h + + callbar/QtCallBar.h + callbar/QtPhoneComboBox.h + + statusbar/QtStatusBar.h + + config/QtAdvancedConfig.h + config/QtAccountSettings.h + config/QtAdvancedSettings.h + config/QtAppearanceSettings.h + config/QtAudioSettings.h + config/QtCallForwardSettings.h + config/QtGeneralSettings.h + config/QtNotificationSettings.h + config/QtPrivacySettings.h + config/QtVideoSettings.h + config/QtLanguagesSettings.h + config/QtQuteComConfigDialog.h + config/QtVoicemailSettings.h + config/QtSecuritySettings.h + + profilebar/QtEventWidget.h + profilebar/QtIMProfileWidget.h + profilebar/QtProfileBar.h + profilebar/QtCreditWidget.h + profilebar/QtIMAccountPresenceMenuManager.h + + history/QtHistoryWidget.h + history/QtHistory.h + + filetransfer/QtFileTransfer.h + filetransfer/QtFileTransferAcceptDialog.h + filetransfer/QtFileTransferWidget.h + filetransfer/QtFileTransferItem.h + filetransfer/QtFileTransferDownloadItem.h + filetransfer/QtFileTransferUploadItem.h + filetransfer/QtFileTransferNotifyDialog.h + + webdirectory/QtWebDirectory.h +) + +ow_add_sources( + ../main.cpp + QtQuteCom.cpp + QtDialpad.cpp + QtSVGDialpad.cpp + QtAbout.cpp + QtHttpProxyLogin.cpp + QtIdle.cpp + QtEnumIMProtocol.cpp + QtLanguage.cpp + QtToolBar.cpp + QtSystray.cpp + QtFactory.cpp + QtPresenceMenuManager.cpp + QtQuteComStyle.cpp + QtBrowserWidget.cpp + QtIMAccountMonitor.cpp + QtPresencePixmapHelper.cpp + QtIMAccountHelper.cpp + QtNoQuteComAlert.cpp + + phoneline/QtPhoneLine.cpp + + phonecall/QtPhoneCall.cpp + phonecall/QtVideo.cpp + phonecall/QtVideoQt.cpp + phonecall/QtContactCallListWidget.cpp + phonecall/QtPhoneCallEventFilter.cpp + phonecall/QtAudioSmileysWindow.cpp + + toaster/QtChatToaster.cpp + toaster/QtCallToaster.cpp + toaster/QtToaster.cpp + + login/ILogin.cpp + login/QtLoginDialog.cpp + login/QtLogAccount.cpp + login/QtAddAccount.cpp + login/QtAddQuteComAccount.cpp + login/QtAddSIPAccount.cpp + login/QtAddAccountUtils.cpp + + imcontact/QtAdvancedIMContactManager.cpp + imcontact/QtAddIMContact.cpp + imcontact/QtIMContactItem.cpp + imcontact/QtSimpleIMContactManager.cpp + imcontact/QtIMContactManagerInterface.cpp + + profile/QtProfileDetails.cpp + profile/QtUserProfile.cpp + profile/QtUserProfileHandler.cpp + + imaccount/QtIMAccountManager.cpp + imaccount/QtIMAccountSettings.cpp + imaccount/QtIMAccountPlugin.cpp + imaccount/QtMSNSettings.cpp + imaccount/QtYahooSettings.cpp + imaccount/QtAIMSettings.cpp + imaccount/QtICQSettings.cpp + imaccount/QtJabberSettings.cpp + imaccount/QtGoogleTalkSettings.cpp + + imaccount/QtFaceBookSettings.cpp + imaccount/QtMySpaceSettings.cpp + imaccount/QtSkypeSettings.cpp + imaccount/QtTwitterSettings.cpp + + contactlist/QtContactList.cpp + contactlist/ContactGroupPopupMenu.cpp + contactlist/QtContactWidget.cpp + contactlist/QtContactTreeMouseFilter.cpp + contactlist/QtContactManager.cpp + contactlist/QtContactListManager.cpp + contactlist/QtContact.cpp + contactlist/QtTreeViewDelegate.cpp + contactlist/QtContactPixmap.cpp + contactlist/QtContactInfo.cpp + contactlist/QtContactTreeKeyFilter.cpp + contactlist/QtRenameGroup.cpp + contactlist/QtConferenceAction.cpp + contactlist/QtContactMenu.cpp + + conference/QtConferenceCallWidget.cpp + + chat/emoticons/QtEmoticonsWidget.cpp + chat/emoticons/QtEmoticon.cpp + chat/emoticons/QtEmoticonButton.cpp + chat/emoticons/QtEmoticonsManager.cpp + chat/chatroom/QtChatRoomInviteDlg.cpp + chat/chatroom/QtChatRoomTreeWidgetItem.cpp + chat/chatroom/QtChatRoomListWidgetItem.cpp + chat/QtChatTabWidget.cpp + chat/QtChatAvatarFrame.cpp + chat/QtChatAvatarWidget.cpp + chat/QtChatHandler.cpp + chat/QtChatWidget.cpp + chat/QtChatWindow.cpp + chat/QtChatEditWidget.cpp + chat/QtChatHistoryWidget.cpp + chat/QtQuteComStyleBar.cpp + chat/QtChatUtils.cpp + chat/QtChatLogViewer.cpp + chat/QtChatTheme.cpp + + webservices/sms/QtSms.cpp + webservices/softupdate/QtSoftUpdate.cpp + webservices/softupdate/QtBrowserSoftUpdate.cpp + + callbar/QtCallBar.cpp + callbar/QtPhoneComboBox.cpp + + statusbar/QtStatusBar.cpp + + config/QtAdvancedConfig.cpp + config/QtAccountSettings.cpp + config/QtAdvancedSettings.cpp + config/QtAppearanceSettings.cpp + config/QtAudioSettings.cpp + config/QtCallForwardSettings.cpp + config/QtGeneralSettings.cpp + config/QtNotificationSettings.cpp + config/QtPrivacySettings.cpp + config/QtVideoSettings.cpp + config/QtLanguagesSettings.cpp + config/QtQuteComConfigDialog.cpp + config/QtVoicemailSettings.cpp + config/QtSecuritySettings.cpp + + profilebar/QtEventWidget.cpp + profilebar/QtIMProfileWidget.cpp + profilebar/QtCreditWidget.cpp + profilebar/QtProfileBar.cpp + profilebar/QtIMAccountPresenceMenuManager.cpp + + history/QtHistoryWidget.cpp + history/QtHistory.cpp + + filetransfer/QtFileTransfer.cpp + filetransfer/QtFileTransferAcceptDialog.cpp + filetransfer/QtFileTransferWidget.cpp + filetransfer/QtFileTransferItem.cpp + filetransfer/QtFileTransferDownloadItem.cpp + filetransfer/QtFileTransferUploadItem.cpp + filetransfer/QtFileTransferNotifyDialog.cpp + + webdirectory/QtWebDirectory.cpp +) + +if (WIN32) + qt4_wrap_cpp(${PROJECT_NAME}_SRCS + WinApp.h + ) + + # Create a 4 digit, comma separated, version of the APPLICATION_VERSION + # variable. That is, from x.y.z to x,y,z,0. + string(REPLACE "." "," APPLICATION_VERSION_4DIGITS ${APPLICATION_VERSION}) + set(APPLICATION_VERSION_4DIGITS "${APPLICATION_VERSION_4DIGITS},0,0,0") + string(REGEX REPLACE "([0-9]+,[0-9]+,[0-9]+,[0-9]+).*" "\\1" APPLICATION_VERSION_4DIGITS "${APPLICATION_VERSION_4DIGITS}") + + configure_file( + win32/application.rc + ${BUILD_DIR}/application.rc + ) + + ow_add_sources( + ${BUILD_DIR}/application.rc + WinApp.cpp + ) + ow_add_private_libraries( + qtmain.lib + ) +endif (WIN32) + +if (UNIX AND NOT WIN32) + if (APPLE) + set_source_files_properties(macosx/QtMacApplication.cpp + PROPERTIES + COMPILE_FLAGS "-x objective-c++" + ) + + qt4_wrap_cpp(${PROJECT_NAME}_SRCS + macosx/QtMacApplication.h + ) + + ow_add_sources( + macosx/QtMacApplication.cpp + ) + else (APPLE) + ow_use_private_libraries( + x11 + ) + + if (QUTECOM_XV_SUPPORT) + if (X11_XV_FOUND) + ow_add_private_definitions( + -DXV_HWACCEL + ) + + qt4_wrap_cpp(${PROJECT_NAME}_SRCS + phonecall/XVWindow.h + phonecall/QtVideoXV.h + ) + + ow_add_sources( + phonecall/XVWindow.cpp + phonecall/QtVideoXV.cpp + ) + endif (X11_XV_FOUND) + endif (QUTECOM_XV_SUPPORT) + endif (APPLE) +endif (UNIX AND NOT WIN32) + +qt4_wrap_ui(${PROJECT_NAME}_SRCS + QuteComWindow.ui + AboutWindow.ui + HttpProxyLoginWindow.ui + DialpadWidget.ui + NoQuteComAlert.ui + + login/LogAccount.ui + login/AddAccount.ui + login/AddQuteComAccount.ui + login/AddSIPAccount.ui + + imaccount/IMAccountTemplate.ui + imaccount/AIMSettings.ui + imaccount/ICQSettings.ui + imaccount/GoogleTalkSettings.ui + imaccount/IMAccountManager.ui + imaccount/JabberSettings.ui + imaccount/MSNSettings.ui + imaccount/YahooSettings.ui + + imaccount/FaceBookSettings.ui + imaccount/MySpaceSettings.ui + imaccount/SkypeSettings.ui + imaccount/TwitterSettings.ui + + profile/ProfileDetails.ui + + imcontact/IMContactManager.ui + imcontact/AddIMContact.ui + imcontact/SimpleIMContactManager.ui + + webservices/sms/SmsWindow.ui + webservices/softupdate/SoftUpdateWindow.ui + webservices/softupdate/BrowserSoftUpdateWindow.ui + + conference/ConferenceCallWidget.ui + + config/AccountSettings.ui + config/AdvancedConfigWindow.ui + config/GeneralSettings.ui + config/AdvancedSettings.ui + config/AppearanceSettings.ui + config/AudioSettings.ui + config/CallForwardSettings.ui + config/LanguagesSettings.ui + config/ManageBlockedUsersSettings.ui + config/NotificationSettings.ui + config/NotificationSettingsItem.ui + config/PrivacySettings.ui + config/VideoSettings.ui + config/QuteComConfigDialog.ui + config/VoicemailSettings.ui + config/SecuritySettings.ui + + + chat/ChatMainWindow.ui + chat/ChatWidget.ui + chat/UserFrame.ui + chat/AvatarFrame.ui + chat/AvatarWidget.ui + chat/ChatLogViewer.ui + + chat/chatroom/ChatRoomInviteWidget.ui + + contactlist/RenameGroupDialog.ui + contactlist/ContactWidget.ui + contactlist/ContactList.ui + + profilebar/CreditWidget.ui + profilebar/EventWidget.ui + profilebar/IMProfileWidget.ui + + toaster/QtChatToaster.ui + toaster/QtCallToaster.ui + + phonecall/PhoneCallWidget.ui + phonecall/VideoWindow.ui + + filetransfer/AcceptDialog.ui + filetransfer/FileTransferDialog.ui + filetransfer/FileTransferItem.ui + filetransfer/NotifyDialog.ui + + history/HistoryWidget.ui + + statusbar/StatusBarWidget.ui +) + +if (ENABLE_CRASHREPORT) + ow_use_private_libraries( + owmemorydump + ) + ow_add_private_definitions( + -DENABLE_CRASHREPORT + ) +endif (ENABLE_CRASHREPORT) + +if (CUSTOM_ACCOUNT) + ow_add_private_definitions( + -DCUSTOM_ACCOUNT + ) + message(STATUS "Custom account activated") +endif (CUSTOM_ACCOUNT) + +if (DISABLE_CALL_FORWARD) + ow_add_private_definitions( + -DDISABLE_CALL_FORWARD + ) + message(STATUS "Call forward deactivated") +endif (DISABLE_CALL_FORWARD) + +if (DISABLE_MANUAL_CALL_FORWARD) + ow_add_private_definitions( + -DDISABLE_MANUAL_CALL_FORWARD + ) + message(STATUS "Manual call forwarding deactivated") +endif (DISABLE_MANUAL_CALL_FORWARD) + +if (DISABLE_SMS) + ow_add_private_definitions( + -DDISABLE_SMS + ) + message(STATUS "Sms deactivated") +endif (DISABLE_SMS) + +if (DISABLE_VOICE_MAIL) + ow_add_private_definitions( + -DDISABLE_VOICE_MAIL + ) + message(STATUS "Voice mail deactivated") +endif (DISABLE_VOICE_MAIL) + +if (DISABLE_FILETRANSFER) + ow_add_private_definitions( + -DDISABLE_FILETRANSFER + ) + message(STATUS "Filetransfer deactivated") +endif (DISABLE_FILETRANSFER) + +if (ENABLE_MYSPACE) + ow_add_private_definitions( + -DENABLE_MYSPACE + ) + message(STATUS "Myspace support activated") +endif(ENABLE_MYSPACE) + +if (ENABLE_FACEBOOK) + ow_add_private_definitions( + -DENABLE_FACEBOOK + ) + message(STATUS "FaceBook support activated") +endif(ENABLE_FACEBOOK) + +if (ENABLE_TWITTER) + ow_add_private_definitions( + -DENABLE_TWITTER + ) + message(STATUS "Twitter support activated") +endif(ENABLE_TWITTER) + +if (ENABLE_SKYPE) + ow_add_private_definitions( + -DENABLE_SKYPE + ) + message(STATUS "Skype support activated") +endif(ENABLE_SKYPE) + + +if (APPLE) + ow_use_private_frameworks( + Cocoa + Carbon + ) + ow_add_private_include_dirs( + /Developer/Headers/FlatCarbon/ + ) +endif (APPLE) + +if (LINUX) + # Define QT_TRANSLATION_DIR, this is used on Linux to load Qt translations + EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} + ARGS "-query QT_INSTALL_PREFIX" + OUTPUT_VARIABLE QT_INSTALL_PREFIX) + ow_add_private_definitions( + -DQT_TRANSLATION_DIR='"${QT_INSTALL_PREFIX}/translations"' + ) +endif (LINUX) + +if (WIN32) + if (ENABLE_CONSOLE) + ow_create_project_binary() + else(ENABLE_CONSOLE) + ow_create_project_binary(WIN32) + + endif(ENABLE_CONSOLE) + +else (WIN32) + ow_create_project_binary(MACOSX_BUNDLE) +endif (WIN32) + +ow_locale_release( + ${CMAKE_CURRENT_SOURCE_DIR}/lang +) + +add_dependencies(${BINARY_NAME} lrelease) + +# Bugfix, spaces don't work with install target +string(REPLACE " " "CMAKEBUGWITHSPACES" TMP_BUILD_DIR ${BUILD_DIR}) +string(REPLACE " " "CMAKEBUGWITHSPACES" TMP_SOURCE_DIR ${CMAKE_SOURCE_DIR}) + +# Passes variables to the install script +if (APPLE) + ow_declare_install_script() +else (APPLE) + install( + CODE " + set(SOURCE_DIR ${TMP_SOURCE_DIR}) + set(APPLICATION_NAME ${APPLICATION_NAME}) + set(APPLICATION_VERSION ${APPLICATION_VERSION}) + set(APPLICATION_VERSION_1 ${APPLICATION_VERSION_1}) + set(APPLICATION_VERSION_2 ${APPLICATION_VERSION_2}) + set(APPLICATION_VERSION_3 ${APPLICATION_VERSION_3}) + set(APPLICATION_VERSION_4 ${APPLICATION_VERSION_4}) + set(BUILD_DIR ${TMP_BUILD_DIR}) + set(BUILD_TYPE ${CMAKE_BUILD_TYPE}) + set(DATA_INSTALL_DIR ${DATA_INSTALL_DIR}) + set(INSTALLER_WITH_PDB ${INSTALLER_WITH_PDB}) + set(SVN_REVISION ${SVN_REVISION}) + set(BINARY_NAME ${BINARY_NAME}) + " + ) +endif (APPLE) + +if (LINUX) + include(CMakeLists-install-linux.txt) +endif (LINUX) + +if (WIN32) + # NSIS installer script + install(SCRIPT ../../../nsis/CMakeLists.txt) +endif (WIN32) + + +# zip target: zip ${BUILD_DIR} +string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) +set(ZIP_NAME + ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE} +) + +# Because BuildBot cannot handle random zip names +# Generates 2 zip: one with the -revnumber.tar.bz2 and one with -${SVN_REVISION}.tar.bz2 +set(ZIP_NAME_REVNUMBER + ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE}-revnumber +) +if (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) + set(ZIP_NAME ${ZIP_NAME}-norev) +else (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) + set(ZIP_NAME ${ZIP_NAME}-${SVN_REVISION}) +endif (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) + +set(ZIP_DIR_NAME + ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE} +) + +if (NOT WIN32) +configure_file( + ${CMAKE_SOURCE_DIR}/scripts/qutecom.sh + ${BUILD_DIR}/${BINARY_NAME}.sh + @ONLY +) +endif (NOT WIN32) + +add_custom_target(zip + COMMAND + "${CMAKE_COMMAND}" + -DSOURCE_DIR="${CMAKE_SOURCE_DIR}" + -DBUILD_DIR="${BUILD_DIR}" + -DZIP_NAME="${ZIP_NAME}" + -DZIP_NAME_REVNUMBER="${ZIP_NAME_REVNUMBER}" + -DZIP_DIR_NAME="${ZIP_DIR_NAME}" + -DBINARY_NAME="${BINARY_NAME}" + -P "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists-zip.txt" + WORKING_DIRECTORY + ${CMAKE_BINARY_DIR} +) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists-zip.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists-zip.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/CMakeLists-zip.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/CMakeLists-zip.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +# vim: filetype=cmake +include(${SOURCE_DIR}/owbuild/owbuild/OWZipDirectory.cmake) +include(${SOURCE_DIR}/owbuild/owbuild/OWCopyFile.cmake) +include(${SOURCE_DIR}/owbuild/owbuild/OWCopyDirRecursive.cmake) + +if (UNIX) + message(STATUS "Copying shared libraries for ${BINARY_NAME}") + execute_process( + COMMAND ${SOURCE_DIR}/scripts/copy_gnulinux_libs.py ${BUILD_DIR}/${BINARY_NAME} + RESULT_VARIABLE RESULT + ) + if (NOT RESULT EQUAL 0) + message(FATAL_ERROR "Copying shared libraries failed") + endif (NOT RESULT EQUAL 0) +endif (UNIX) + +# Create a new directory with a proper name (for example QuteCom-2.1-minsizerel rather than just minsizerel) +ow_copy_dir_recursive("${BUILD_DIR}/*" "${ZIP_DIR_NAME}/.") + +ow_zip_directory(${ZIP_DIR_NAME} "${ZIP_NAME}") + +if (UNIX) + # Because BuildBot cannot handle random zip names + # Generates 2 zip: one with the -revnumber.tar.bz2 and one with -${SVN_REVISION}.tar.bz2 + ow_copy_file("${ZIP_NAME}.tar.bz2" "${ZIP_NAME_REVNUMBER}.tar.bz2") +endif (UNIX) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/ConferenceCallWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/ConferenceCallWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/ConferenceCallWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/ConferenceCallWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,491 @@ + + + + + ConferenceCallWidget + + + + 0 + 0 + 387 + 257 + + + + @product@ - Create a Conference + + + true + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 369 + 16 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Start + + + + + + + Cancel + + + + + + + + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + 100 + + + + + + + 0 + + + 6 + + + + + + 212 + 0 + + + + + 212 + 16777215 + + + + + + + + + 212 + 0 + + + + + 212 + 16777215 + + + + + + + + Phone number 2: + + + + + + + Phone number 1: + + + + + + + + 28 + 28 + + + + + + + :/pics/iconbar/add_contact.png + + + + 22 + 22 + + + + true + + + + + + + + 28 + 28 + + + + ... + + + :/pics/iconbar/add_contact.png + + + + 22 + 22 + + + + true + + + + + + + + + + phoneNumber1LineEdit + phoneNumber2LineEdit + peer1ToolButton + peer2ToolButton + startButton + cancelButton + + + + + + + cancelButton + clicked() + ConferenceCallWidget + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/ConferenceInviteWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/ConferenceInviteWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/ConferenceInviteWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/ConferenceInviteWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,438 @@ + + + + + ConferenceInviteWidget + + + + 0 + 0 + 400 + 300 + + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + true + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + 100 + + + + + + + 0 + + + 6 + + + + + &Add >> + + + + + + + << &Remove + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + QAbstractItemView::MultiSelection + + + + Available Contacts + + + + + + + + QAbstractItemView::MultiSelection + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &Start + + + + + + + Cancel + + + + + + + + + + contactListTreeWidget + addButton + removeButton + conferenceListWidget + startButton + closeButton + + + + + + + closeButton + clicked() + ConferenceInviteWidget + close() + + + 366 + 278 + + + 397 + 274 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,149 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtConferenceCallWidget.h" + +#include "ui_ConferenceCallWidget.h" + +#include + +#include +#include + +#include +#include +#include +#include + +#include + +QtConferenceCallWidget::QtConferenceCallWidget(QWidget * parent, CQuteCom & cQuteCom, IPhoneLine * phoneLine , bool startConference) + : QDialog(parent), _phoneLine(phoneLine), _cQuteCom(cQuteCom),_startConference(startConference) { + + _currentPeer = 1; + + _ui = new Ui::ConferenceCallWidget(); + _ui->setupUi(this); + + _menu = new QMenu(this); + _qutecomMenu = new QMenu(_menu); + _qutecomMenu->setTitle(tr("Call @company@")); + _sipMenu = new QMenu(_menu); + _sipMenu->setTitle(tr("Call SIP")); + _landLineMenu = new QMenu(_menu); + _landLineMenu->setTitle(tr("Call land line")); + _mobileMenu = new QMenu(_menu); + _mobileMenu->setTitle(tr("Call Mobile")); + _menu->addMenu(_qutecomMenu); + _menu->addMenu(_landLineMenu); + _menu->addMenu(_mobileMenu); + _menu->addMenu(_sipMenu); + + WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/conference.png", WidgetBackgroundImage::AdjustSize); + + SAFE_CONNECT(_ui->startButton, SIGNAL(clicked()), SLOT(startClicked())); + SAFE_CONNECT(_ui->cancelButton, SIGNAL(clicked()), SLOT(reject())); + SAFE_CONNECT(_ui->peer1ToolButton, SIGNAL(clicked()), SLOT(peer1ToolButtonClicked())); + SAFE_CONNECT(_ui->peer2ToolButton, SIGNAL(clicked()), SLOT(peer2ToolButtonClicked())); + + SAFE_CONNECT(_qutecomMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); + SAFE_CONNECT(_landLineMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); + SAFE_CONNECT(_mobileMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); + SAFE_CONNECT(_sipMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); +} + +QtConferenceCallWidget::~QtConferenceCallWidget() { + OWSAFE_DELETE(_ui); +} + +void QtConferenceCallWidget::setFirstPeer(std::string peer) { + _ui->phoneNumber1LineEdit->setText(QString::fromUtf8(peer.c_str())); + _ui->phoneNumber1LineEdit->setReadOnly(true); +} + +void QtConferenceCallWidget::startClicked() { + + if ((!_ui->phoneNumber1LineEdit->text().isEmpty()) && (!_ui->phoneNumber2LineEdit->text().isEmpty())) + { + + if(_startConference) + { + ConferenceCall * confCall = new ConferenceCall(*_phoneLine); + confCall->addPhoneNumber(std::string(_ui->phoneNumber1LineEdit->text().toUtf8())); + confCall->addPhoneNumber(std::string(_ui->phoneNumber2LineEdit->text().toUtf8())); + } + accept(); + + } else { + if (_ui->phoneNumber1LineEdit->text().isEmpty()) { + _ui->phoneNumber1LineEdit->setFocus(); + } else { + _ui->phoneNumber2LineEdit->setFocus(); + } + } +} + +QString QtConferenceCallWidget::getSecondPeer() +{ + return _ui->phoneNumber2LineEdit->text(); +} + +void QtConferenceCallWidget::peer1ToolButtonClicked() { + _currentPeer = 1; + showMenu(_ui->peer1ToolButton->pos()); +} + +void QtConferenceCallWidget::peer2ToolButtonClicked() { + _currentPeer = 2; + showMenu(_ui->peer2ToolButton->pos()); +} + +void QtConferenceCallWidget::showMenu(QPoint point) { + point.setX(point.x() + _ui->peer2ToolButton->rect().width()); + populateMenus(); + _menu->popup(mapToGlobal(point)); +} + +void QtConferenceCallWidget::populateMenus() { + _sipMenu->clear(); + _qutecomMenu->clear(); + _landLineMenu->clear(); + _mobileMenu->clear(); + + QtContactMenu::populateMobilePhoneMenu(_mobileMenu, _cQuteCom); + QtContactMenu::populateQuteComCallMenu(_qutecomMenu, _cQuteCom); + QtContactMenu::populateHomePhoneMenu(_landLineMenu, _cQuteCom); + QtContactMenu::populateSipCallMenu(_sipMenu, _cQuteCom); +} + +void QtConferenceCallWidget::updateLineEdit(QAction * action) { + if (action) { + QString data = action->data().toString(); + switch (_currentPeer) { + case 1: + _ui->phoneNumber1LineEdit->setText(data); + break; + case 2: + _ui->phoneNumber2LineEdit->setText(data); + break; + default: + LOG_FATAL("Unknown _currentPeer"); + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/conference/QtConferenceCallWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONFERENCECALLWIDGET_H +#define OWQTCONFERENCECALLWIDGET_H + +#include + +class IPhoneLine; +class CQuteCom; +class QMenu; +class QPoint; + +namespace Ui { class ConferenceCallWidget; } + +/** + * + * @author Mathieu Stute + */ +class QtConferenceCallWidget : public QDialog { + Q_OBJECT + +public: + + /** + * Constructor. + */ + QtConferenceCallWidget(QWidget * parent, CQuteCom & cQuteCom, IPhoneLine * phoneLine , bool startConference = true); + + /** + * Destructor. + */ + virtual ~QtConferenceCallWidget(); + + void setFirstPeer(std::string peer); + + QString getSecondPeer(); + +private Q_SLOTS: + + /** + * The user has clicked the start button. + */ + void startClicked(); + + void peer1ToolButtonClicked(); + + void peer2ToolButtonClicked(); + + void updateLineEdit(QAction * action); + +private: + + bool _startConference; + + void populateMenus(); + + void showMenu(QPoint point); + + IPhoneLine * _phoneLine; + + QMenu * _menu; + + QMenu * _qutecomMenu; + + QMenu * _sipMenu; + + QMenu * _landLineMenu; + + QMenu * _mobileMenu; + + CQuteCom & _cQuteCom; + + int _currentPeer; + + Ui::ConferenceCallWidget * _ui; +}; + +#endif //OWQTCONFERENCECALLWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AccountSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AccountSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AccountSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AccountSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ + + AccountSettings + + + + 0 + 0 + 441 + 308 + + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + &Edit my profile + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AdvancedConfigWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AdvancedConfigWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AdvancedConfigWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AdvancedConfigWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,139 @@ + + + + + AdvancedConfigWindow + + + + 0 + 0 + 523 + 426 + + + + @product@ - Advanced Configuration + + + + 9 + + + 6 + + + + + QAbstractItemView::SelectRows + + + + Preference Name + + + + + Status + + + + + Type + + + + + Value + + + + + Default Value + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 251 + 26 + + + + + + + + Close + + + + + + + Save + + + + + + + + + + tableWidget + saveButton + closeButton + + + + + + + closeButton + clicked() + AdvancedConfigWindow + reject() + + + 416 + 463 + + + 237 + 455 + + + + + saveButton + clicked() + AdvancedConfigWindow + accept() + + + 330 + 466 + + + 136 + 458 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AdvancedSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AdvancedSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AdvancedSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AdvancedSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,168 @@ + + AdvancedSettings + + + + 0 + 0 + 444 + 447 + + + + + 9 + + + 6 + + + + + false + + + Advanced Settings + + + + 9 + + + 6 + + + + + Automatically answer incoming calls from + + + true + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + Add + + + + + + + Remove + + + + + + + + + + + + + + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + Qt::AlignCenter + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Advanced Configuration Window + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 21 + 32 + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AppearanceSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AppearanceSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AppearanceSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AppearanceSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ + + + AppearanceSettings + + + + 0 + 0 + 525 + 587 + + + + Form + + + + + + Toolbar + + + + + + &Icons && Text + + + true + + + + + + + Icons &Only + + + + + + + &Hidden + + + + + + + + + + Chat Theme + + + + + + + 0 + 0 + + + + + + + + + + + + + + + + + + QtChatHistoryWidget + QTextBrowser +
chat/QtChatHistoryWidget.h
+
+
+ + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AudioSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AudioSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/AudioSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/AudioSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,365 @@ + + + AudioSettings + + + + 0 + 0 + 476 + 633 + + + + + + + + + + + + + 0 + 0 + + + + &Input device: + + + inputDeviceComboBox + + + + + + + + 0 + 0 + + + + &Output device: + + + outputDeviceComboBox + + + + + + + + 0 + 0 + + + + :/pics/audio/speaker.png + + + + + + + + 0 + 0 + + + + :/pics/audio/speaker.png + + + + + + + + 0 + 0 + + + + &Ringing device: + + + ringingDeviceComboBox + + + + + + + + + + + + + + 0 + 0 + + + + :/pics/audio/microphone.png + + + + + + + + + &Make a test call + + + + + + + Qt::Horizontal + + + + 181 + 20 + + + + + + + + + + Test + + + + + + + Test + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 125 + 16 + + + + + + + + + + &Half Duplex + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 125 + 16 + + + + + + + + + + &Advanced >> + + + + :/pics/config/advanced.png:/pics/config/advanced.png + + + false + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Audio Codecs + + + false + + + + + + Reset + + + + + + + + + + + + + + :/pics/up.png:/pics/up.png + + + + + + + + + + + :/pics/down.png:/pics/down.png + + + + + + + Qt::Vertical + + + + 75 + 141 + + + + + + + + + + + 0 + 0 + + + + + + + :/pics/important.png + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + 0 + + + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + true + + + + + + + + + + + + Qt::Vertical + + + + 452 + 16 + + + + + + + + inputDeviceComboBox + outputDeviceComboBox + testOutputDeviceButton + ringingDeviceComboBox + testRingingDeviceButton + makeTestCallButton + AdvButton + audioCodecListWidget + UpButton + DownButton + ResetButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/CallForwardSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/CallForwardSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/CallForwardSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/CallForwardSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,215 @@ + + CallForwardSettings + + + + 0 + 0 + 462 + 403 + + + + + 9 + + + 6 + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + true + + + + + + + Disable call forwarding + + + + + + + Forward all unanswered calls to message box + + + + + + + Forward all unanswered calls to following phone numbers: + + + + + + + 0 + + + 6 + + + + + 3rd: + + + + + + + 1st: + + + + + + + 2nd: + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + false + + + (+ country code) phone number + + + + + + + false + + + (+ country code) phone number + + + + + + + false + + + (+ country code) phone number + + + + + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + true + + + + + + + Qt::Vertical + + + + 400 + 16 + + + + + + + + + ToolTipLineEdit + QLineEdit +
ToolTipLineEditProxy.h
+
+
+ + disableRadioButton + forwardToVoiceMailRadioButton + forwardToNumberRadioButton + phoneNumber1Edit + phoneNumber2Edit + phoneNumber3Edit + + + + + forwardToNumberRadioButton + toggled(bool) + phoneNumber1Edit + setEnabled(bool) + + + 287 + 193 + + + 187 + 223 + + + + + forwardToNumberRadioButton + toggled(bool) + phoneNumber2Edit + setEnabled(bool) + + + 287 + 193 + + + 187 + 254 + + + + + forwardToNumberRadioButton + toggled(bool) + phoneNumber3Edit + setEnabled(bool) + + + 287 + 193 + + + 187 + 285 + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/GeneralSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/GeneralSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/GeneralSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/GeneralSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,219 @@ + + + GeneralSettings + + + + 0 + 0 + 485 + 494 + + + + + 6 + + + 9 + + + + + When I start my computer + + + + 9 + + + 6 + + + + + Automatically start @product@ + + + + + + + Start in background mode + + + + + + + + + + When I double-click on a contact + + + + 9 + + + 6 + + + + + Prefere start a free call if applicable + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 41 + 21 + + + + + + + + Call cell phone or land line if contact not online + + + + + + + + + + 0 + 0 + + + + :/pics/contact/chat.png + + + + + + + + 0 + 0 + + + + :/pics/contact/call.png + + + + + + + Prefere start a chat + + + + + + + + + + Idle status + + + + 9 + + + 6 + + + + + + 0 + 0 + + + + :/pics/status/away.png + + + + + + + minutes + + + + + + + + 40 + 16777215 + + + + 1 + + + + + + + Show me as "Away" when I am inactive for: + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + startQuteComCheckBox + startFreeCallRadioButton + callCellPhoneCheckBox + startChatOnlyRadioButton + showAwayCheckBox + awaySpinBox + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/LanguagesSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/LanguagesSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/LanguagesSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/LanguagesSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ + + + LanguagesSettings + + + + 0 + 0 + 535 + 493 + + + + + + + + + + Google Translate + + + + + + language to convert the messages received + + + + + + + true + + + + + + + language to convert the messages sent + + + + + + + + + + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + true + + + + + + + More information here. + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/ManageBlockedUsersSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/ManageBlockedUsersSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/ManageBlockedUsersSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/ManageBlockedUsersSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,82 @@ + + + + + ManageBlockedUsersSettings + + + + 0 + 0 + 357 + 247 + + + + @product@ - Manage blocked users + + + + 9 + + + 6 + + + + + + + + 0 + + + 6 + + + + + Unblock User + + + + + + + Qt::Vertical + + + + 20 + 141 + + + + + + + + Close + + + + + + + + + Manage blocked users + + + + + + + + listView + unblockUserButton + closeButton + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/NotificationSettingsItem.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/NotificationSettingsItem.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/NotificationSettingsItem.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/NotificationSettingsItem.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,159 @@ + + + + + NotificationSettingsItem + + + + 0 + 0 + 400 + 69 + + + + + 0 + + + 6 + + + + + + + + + + + + + 5 + 1 + 0 + 0 + + + + QFrame::Raised + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + Sound file + + + + + + + Find a sound file + + + + + + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + Play sound file + + + Play + + + :/pics/play.png + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 12 + + + + + + + + + soundLineEdit + browseButton + playButton + + + + + + + checkBox + toggled(bool) + frame + setEnabled(bool) + + + 41 + 53 + + + 46 + 105 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/NotificationSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/NotificationSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/NotificationSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/NotificationSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ + + NotificationSettings + + + + 0 + 0 + 389 + 243 + + + + + 9 + + + 6 + + + + + Select the events for which a sound should be played. + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/PrivacySettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/PrivacySettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/PrivacySettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/PrivacySettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,206 @@ + + + + + PrivacySettings + + + false + + + + 0 + 0 + 346 + 327 + + + + + 0 + + + 0 + + + + + Privacy Rules + + + + 9 + + + 6 + + + + + When I sign into @company@ + + + + 9 + + + 6 + + + + + + 0 + 5 + 0 + 0 + + + + :/pics/status/invisible.png + + + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + + + + + + Allow chats from + + + + 9 + + + 6 + + + + + + 0 + 5 + 0 + 0 + + + + :/pics/contact/chat.png + + + + + + + Anyone + + + + + + + Only people from my contact list + + + + + + + + + + Allow calls from + + + + 9 + + + 6 + + + + + Only people from my contact list + + + + + + + Anyone + + + + + + + + 0 + 5 + 0 + 0 + + + + :/pics/contact/call.png + + + + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + 16777215 + 16777215 + + + + Manage blocked users + + + + + + + + allowCallsFromAnyoneRadioButton + allowCallsOnlyFromContactListRadioButton + allowChatsFromAnyoneRadioButton + allowChatsFromOnlyContactListRadioButton + alwaysSignAsInvisible + manageBlockedUsersButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAccountSettings.h" + +#include "ui_AccountSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +#include + +QtAccountSettings::QtAccountSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::AccountSettings(); + _ui->setupUi(this); + + // Edit profile button + QtQuteCom *qtQuteCom = dynamic_cast(cQuteCom.getPresentation()); + QtToolBar *toolbar = &qtQuteCom->getQtToolBar(); + SAFE_CONNECT_RECEIVER(_ui->editProfileButton, SIGNAL(clicked()), + toolbar, SLOT(editMyProfile())); + + // IM Account list + QtIMAccountManager * imAccountManager = new QtIMAccountManager(cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile(), + false, NULL); + + QWidget* widget = imAccountManager->getWidget(); + widget->setParent(_ui->imAccountFrame); + QVBoxLayout* layout = new QVBoxLayout(_ui->imAccountFrame); + layout->setMargin(0); + layout->addWidget(widget); +} + +QtAccountSettings::~QtAccountSettings() { + delete _ui; +} + +QString QtAccountSettings::getName() const { + return tr("Accounts"); +} + +QString QtAccountSettings::getTitle() const { + return tr("Accounts Settings"); +} + +QString QtAccountSettings::getIconName() const { + return "imaccounts"; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAccountSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTACCOUNTSETTINGS_H +#define QTACCOUNTSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; + +class QString; +class QWidget; +namespace Ui { class AccountSettings; } + +/** + * Handles SIP and IM accounts. + * + * @author Tanguy Krotoff + */ +class QtAccountSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtAccountSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtAccountSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig() { } + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig() { } + + Ui::AccountSettings * _ui; +}; + +#endif //QTACCOUNTSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAdvancedConfig.h" + +#include "ui_AdvancedConfigWindow.h" + +#include + +#include +#include + +#include + +static const int KEY_NAME_COLUMN = 0; +static const int STATUS_COLUMN = 1; +static const int TYPE_COLUMN = 2; +static const int VALUE_COLUMN = 3; +static const int DEFAULT_VALUE_COLUMN = 4; + +static const QString TYPE_STRING = "string"; +static const QString TYPE_STRINGLIST = "stringlist"; +static const QString TYPE_BOOLEAN = "boolean"; +static const QString TYPE_INTEGER = "integer"; + +QtAdvancedConfig::QtAdvancedConfig(QWidget * parent) + : QDialog(parent) { + + _ui = new Ui::AdvancedConfigWindow(); + _ui->setupUi(this); + + connect(_ui->saveButton, SIGNAL(clicked()), SLOT(saveConfig())); +} + +QtAdvancedConfig::~QtAdvancedConfig() { + delete _ui; +} + +void QtAdvancedConfig::populate() { + //_ui->tableWidget->clear(); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + StringList keys = config.getAllKeys(); + for ( unsigned i = 0; i < keys.size(); i++) { + if (i >= (unsigned int) _ui->tableWidget->rowCount()) { + _ui->tableWidget->insertRow(i); + } + + std::string key = keys[i]; + QTableWidgetItem * itemKey = new QTableWidgetItem(QString::fromUtf8(key.c_str())); + _ui->tableWidget->setItem(i, KEY_NAME_COLUMN, itemKey); + + boost::any value = config.getAny(key); + if (!value.empty()) { + setItem(value, i, VALUE_COLUMN); + } + + boost::any defaultValue = config.getDefaultValue(key); + if (!defaultValue.empty()) { + setItem(defaultValue, i, DEFAULT_VALUE_COLUMN); + } + + } +} + +void QtAdvancedConfig::setItem(boost::any value, int row, int column) { + QTableWidgetItem * itemValue = NULL; + QTableWidgetItem * itemType = NULL; + if (Settings::isBoolean(value)) { + itemType = new QTableWidgetItem(TYPE_BOOLEAN); + bool tmp = boost::any_cast(value); + if (tmp) { + itemValue = new QTableWidgetItem("true"); + } else { + itemValue = new QTableWidgetItem("false"); + } + } else if (Settings::isInteger(value)) { + itemType = new QTableWidgetItem(TYPE_INTEGER); + int tmp = boost::any_cast(value); + itemValue = new QTableWidgetItem(QString::fromUtf8(String::fromNumber(tmp).c_str())); + } else if (Settings::isString(value)) { + itemType = new QTableWidgetItem(TYPE_STRING); + std::string tmp = boost::any_cast(value); + itemValue = new QTableWidgetItem(QString::fromUtf8(tmp.c_str())); + } else if (Settings::isStringList(value)) { + itemType = new QTableWidgetItem(TYPE_STRINGLIST); + StringList tmp = boost::any_cast(value); + //itemValue = new QTableWidgetItem(QString::fromUtf8(tmp)); + } else { + LOG_FATAL("unknown type"); + } + + _ui->tableWidget->setItem(row, column, itemValue); + _ui->tableWidget->setItem(row, TYPE_COLUMN, itemType); +} + +void QtAdvancedConfig::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + const int tableSize = _ui->tableWidget->rowCount(); + for (int row = 0; row < tableSize; row++) { + + QTableWidgetItem * itemKey = _ui->tableWidget->item(row, KEY_NAME_COLUMN); + if (!itemKey) { + continue; + } + std::string key(itemKey->text().toUtf8()); + + QTableWidgetItem * itemValue = _ui->tableWidget->item(row, VALUE_COLUMN); + if (!itemValue) { + continue; + } + + QTableWidgetItem * itemType = _ui->tableWidget->item(row, TYPE_COLUMN); + if (!itemType) { + continue; + } + + if (itemType->text() == TYPE_BOOLEAN) { + String tmp(itemValue->text().toUtf8()); + config.set(key, tmp.toBoolean()); + } else if (itemType->text() == TYPE_INTEGER) { + String tmp(itemValue->text().toUtf8()); + config.set(key, tmp.toInteger()); + } else if (itemType->text() == TYPE_STRING) { + std::string tmp(itemValue->text().toUtf8()); + config.set(key, tmp); + } else if (itemType->text() == TYPE_STRINGLIST) { + //std::string tmp = itemValue->text().toUtf8(); + //config.set(key, tmp); + } else { + LOG_FATAL("unknown type"); + } + } + WebBrowser::setBrowser(config.getLinuxPreferedBrowser()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedConfig.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTADVANCEDCONFIG_H +#define QTADVANCEDCONFIG_H + +#include + +#include + +#include + +class QWidget; +class QDialog; +namespace Ui { class AdvancedConfigWindow; } + +/** + * Firefox' about:config like window. + * + * Shows the key/value settings. + * + * @author Tanguy Krotoff + */ +class QtAdvancedConfig : public QDialog, NonCopyable { + Q_OBJECT +public: + + QtAdvancedConfig(QWidget * parent); + + ~QtAdvancedConfig(); + + void populate(); + +private Q_SLOTS: + + void saveConfig(); + +private: + + void setItem(boost::any value, int row, int column); + + Ui::AdvancedConfigWindow * _ui; +}; + +#endif //QTADVANCEDCONFIG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAdvancedSettings.h" + +#include "ui_AdvancedSettings.h" + +#include "QtAdvancedConfig.h" + +#include + +QtAdvancedSettings::QtAdvancedSettings(QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::AdvancedSettings(); + _ui->setupUi(this); + _ui->advancedGroupBox->hide(); + + connect(_ui->advancedConfigWindowButton, SIGNAL(clicked()), SLOT(showAdvancedConfigWindow())); + + readConfig(); +} + +QtAdvancedSettings::~QtAdvancedSettings() { + delete _ui; +} + +QString QtAdvancedSettings::getName() const { + return tr("Advanced"); +} + +QString QtAdvancedSettings::getTitle() const { + return tr("Advanced Settings"); +} + +QString QtAdvancedSettings::getIconName() const { + return "advanced"; +} + +void QtAdvancedSettings::readConfig() { +} + +void QtAdvancedSettings::saveConfig() { +} + +void QtAdvancedSettings::showAdvancedConfigWindow() { + QtAdvancedConfig * configWindow = new QtAdvancedConfig(this); + + configWindow->populate(); + configWindow->exec(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAdvancedSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTADVANCEDSETTINGS_H +#define QTADVANCEDSETTINGS_H + +#include "QtISettings.h" + +#include + +namespace Ui { class AdvancedSettings; } + +/** + * Advanced configuration panel. + * + * @author Tanguy Krotoff + */ +class QtAdvancedSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtAdvancedSettings(QWidget * parent); + + virtual ~QtAdvancedSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private Q_SLOTS: + + void showAdvancedConfigWindow(); + +private: + + virtual void readConfig(); + + Ui::AdvancedSettings * _ui; +}; + +#endif //QTADVANCEDSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,187 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAppearanceSettings.h" + +#include "ui_AppearanceSettings.h" + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +static const int THEMELIST_MINIMUM_WIDTH = 150; + +QtAppearanceSettings::QtAppearanceSettings(QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::AppearanceSettings(); + _ui->setupUi(this); + _ui->themePreviewBrowser->setTranslate(false); + +#if defined(OS_MACOSX) + _ui->groupBox->hide(); +#endif + + SAFE_CONNECT(_ui->themeListWidget,SIGNAL(itemClicked(QListWidgetItem *)),SLOT(updatePreview()) ); + + connect(_ui->themePreviewBrowser,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished(bool))); + connect(_ui->comboBox,SIGNAL(activated(const QString & )),this,SLOT(activatedVariant( const QString &))); + + readConfig(); + updatePreview(); +} + +QtAppearanceSettings::~QtAppearanceSettings() { + OWSAFE_DELETE(_ui); +} + +void QtAppearanceSettings::activatedVariant ( const QString & variant ) +{ + QListWidgetItem* item = _ui->themeListWidget->currentItem(); + if (!item) { + return; + } + + int row = _ui->themeListWidget->row(item); + QString theme = _themeList[row]; + + _ui->themePreviewBrowser->setTheme(theme,variant); +} + +void QtAppearanceSettings::updatePreview() { + _ui->themePreviewBrowser->clear(); + _ui->comboBox->clear(); + + QListWidgetItem* item = _ui->themeListWidget->currentItem(); + if (!item) { + return; + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + int row = _ui->themeListWidget->row(item); + QString theme = _themeList[row]; + + _ui->comboBox->addItems(QtChatTheme::getThemeListVariant(theme)); + _ui->themePreviewBrowser->setTheme(theme,_ui->comboBox->currentText ()); + +} + +void QtAppearanceSettings::loadFinished ( bool ok ) +{ + _ui->themePreviewBrowser->insertMessage("self", tr("Me"), tr("Hello"), QTime(12, 34)); + _ui->themePreviewBrowser->insertMessage("self", tr("Me"), tr("How are you?"), QTime(12, 34)); + _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("I am fine"), QTime(12, 40)); + _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("Have to go"), QTime(12, 50)); + _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("Bye"), QTime(12, 51)); + _ui->themePreviewBrowser->insertStatusMessage("Other has left", QTime(12, 51)); +} + +QString QtAppearanceSettings::getName() const { + return tr("Appearance"); +} + +QString QtAppearanceSettings::getTitle() const { + return tr("Appearance Settings"); +} + +QString QtAppearanceSettings::getIconName() const { + return "appearance"; +} + +void QtAppearanceSettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + // Toolbar +#ifndef OS_MACOSX + EnumToolBarMode::ToolBarMode mode; + if (_ui->hiddenRadioButton->isChecked()) { + mode = EnumToolBarMode::ToolBarModeHidden; + } else if (_ui->iconsOnlyRadioButton->isChecked()) { + mode = EnumToolBarMode::ToolBarModeIconsOnly; + } else { + mode = EnumToolBarMode::ToolBarModeTextUnderIcons; + } + std::string text = EnumToolBarMode::toString(mode); + config.set(Config::GENERAL_TOOLBARMODE_KEY, text); +#endif + + // Theme + QListWidgetItem* item = _ui->themeListWidget->currentItem(); + if (item) { + int row = _ui->themeListWidget->row(item); + QString theme = _themeList[row]; + config.set(Config::APPEARANCE_CHATTHEME_KEY, std::string(theme.toUtf8())); + config.set(Config::APPEARANCE_CHATTHEMEVARIANT_KEY, std::string(_ui->comboBox->currentText ().toUtf8())); + } else { + LOG_WARN("No current chat theme"); + } +} + +void QtAppearanceSettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string text = config.getToolBarMode(); + EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::toToolBarMode(text); + + // Toolbar + if (toolBarMode == EnumToolBarMode::ToolBarModeHidden) { + _ui->hiddenRadioButton->setChecked(true); + } else if (toolBarMode == EnumToolBarMode::ToolBarModeIconsOnly) { + _ui->iconsOnlyRadioButton->setChecked(true); + } else { + _ui->textUnderIconsRadioButton->setChecked(true); + } + + // Theme + QString currentTheme = QString::fromUtf8(config.getChatTheme().c_str()); + _themeList = QtChatTheme::getThemeList(); + Q_FOREACH(QString themeDir, _themeList) { + QListWidgetItem* item = new QListWidgetItem(_ui->themeListWidget); + + QString name = themeDir; + // Prettify the name a bit + name[0] = name[0].toUpper(); + item->setText(name); + + _ui->themeListWidget->addItem(item); + if (themeDir == currentTheme) { + _ui->comboBox->addItems(QtChatTheme::getThemeListVariant(themeDir)); + _ui->comboBox->setCurrentIndex(_ui->comboBox->findText (QString::fromUtf8(config.getChatThemeVariant().c_str()))); + + _ui->themeListWidget->setCurrentItem(item); + _ui->themePreviewBrowser->setTheme(currentTheme,_ui->comboBox->currentText ()); + } + } + + int width = WidgetUtils::computeListViewMinimumWidth(_ui->themeListWidget); + if (width < THEMELIST_MINIMUM_WIDTH) { + width = THEMELIST_MINIMUM_WIDTH; + } + _ui->themeListWidget->setFixedWidth(width); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAppearanceSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTAPPEARANCESETTINGS_H +#define QTAPPEARANCESETTINGS_H + +#include "QtISettings.h" + +#include + +namespace Ui { class AppearanceSettings; } + +/** + * Appearance configuration panel. + * + * @author Aurelien Gateau + */ +class QtAppearanceSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtAppearanceSettings(QWidget * parent); + + virtual ~QtAppearanceSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private Q_SLOTS: + void updatePreview(); + void loadFinished ( bool ok ); + void activatedVariant ( const QString & variant ); + +private: + + virtual void readConfig(); + + Ui::AppearanceSettings * _ui; + + QStringList _themeList; +}; + +#endif //QTAPPEARANCESETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,373 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAudioSettings.h" + +#include "ui_AudioSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +static AudioDevice getAudioDeviceFromComboBox(QComboBox* comboBox, const std::list deviceList) { + std::string concatString(comboBox->itemData(comboBox->currentIndex()).toString().toUtf8()); + for (std::list::const_iterator it = deviceList.begin(); + it != deviceList.end(); + ++it) { + if (it->getData().toString() == concatString) { + return *it; + } + } + return AudioDevice(); +} + +QtAudioSettings::QtAudioSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + + _ui = new Ui::AudioSettings(); + _ui->setupUi(this); + + SAFE_CONNECT(_ui->makeTestCallButton, SIGNAL(pressed()), SLOT(makeTestCallClicked())); + SAFE_CONNECT(_ui->testOutputDeviceButton, SIGNAL(pressed()), SLOT(testOutputDevice())); + SAFE_CONNECT(_ui->testRingingDeviceButton, SIGNAL(pressed()), SLOT(testRingingDevice())); + SAFE_CONNECT(_ui->AdvButton, SIGNAL(pressed()), SLOT(AdvPressed())); + SAFE_CONNECT(_ui->UpButton, SIGNAL(pressed()), SLOT(UpPressed())); + SAFE_CONNECT(_ui->DownButton, SIGNAL(pressed()), SLOT(DownPressed())); + SAFE_CONNECT(_ui->ResetButton, SIGNAL(pressed()), SLOT(ResetPressed())); + _ui->AdvGroupBox->setVisible(false); + + readConfig(); +} + +QtAudioSettings::~QtAudioSettings() { + OWSAFE_DELETE(_ui); +} + +QString QtAudioSettings::getName() const { + return tr("Audio"); +} + +QString QtAudioSettings::getTitle() const { + return tr("Audio Settings"); +} + +QString QtAudioSettings::getIconName() const { + return "audio"; +} + +void QtAudioSettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + AudioDevice device = getAudioDeviceFromComboBox(_ui->inputDeviceComboBox, AudioDeviceManager::getInstance().getInputDeviceList()); + config.set(Config::AUDIO_INPUT_DEVICEID_KEY, device.getData()); + + device = getAudioDeviceFromComboBox(_ui->outputDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); + config.set(Config::AUDIO_OUTPUT_DEVICEID_KEY, device.getData()); + + device = getAudioDeviceFromComboBox(_ui->ringingDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); + config.set(Config::AUDIO_RINGER_DEVICEID_KEY, device.getData()); + + // advanced + StringList saveCodec; + int nbCodec = _ui->audioCodecListWidget->count(); + for (int i = 0; i < nbCodec; ++i) { + std::string audioCodec(_ui->audioCodecListWidget->item(i)->text().toUtf8()); + // HACK: PHAPI_SPEEXWB_REPLACES_G726WB_HACK + #ifdef PH_SPEEXWB_REPLACES_G726WB + if (audioCodec == "SPEEX/16000") + audioCodec = "G726-64wb/16000"; + #endif + //// + saveCodec += audioCodec; + } + config.set(Config::AUDIO_CODEC_LIST_KEY, saveCodec); + //// + + config.set(Config::AUDIO_HALFDUPLEX_KEY, _ui->halfDuplexCheckBox->isChecked()); +} + +void QtAudioSettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //inputDeviceList + _ui->inputDeviceComboBox->clear(); + +#ifdef OS_LINUX + bool savedSettingsFound = false; + AudioDevice tmpDev(config.getAudioInputDeviceId()); +#endif + + std::list inputDeviceList = AudioDeviceManager::getInstance().getInputDeviceList(); + for (std::list::const_iterator it = inputDeviceList.begin(); + it != inputDeviceList.end(); + ++it) { + _ui->inputDeviceComboBox->addItem( +#ifdef OS_MACOSX + QString::fromUtf8((*it).getName().c_str()), +#else + (*it).getName().c_str(), +#endif + QString::fromUtf8((*it).getData().toString().c_str()) + ); +#ifdef OS_LINUX + if ((*it).getData() == tmpDev.getData()) { + savedSettingsFound = true; + } +#endif + } + +#ifdef OS_LINUX + if (!savedSettingsFound) { + _ui->outputDeviceComboBox->addItem( + //QString::fromUtf8(tmpDev.getName().c_str()), + QString(tmpDev.getName().c_str()), + QString::fromUtf8(tmpDev.getData().toString().c_str()) + ); + } +#endif + QString currentInputDeviceId = +#ifdef OS_MACOSX + QString::fromUtf8(config.getAudioInputDeviceId().toString().c_str()); +#else + QString(config.getAudioInputDeviceId().toString().c_str()); +#endif + _ui->inputDeviceComboBox->setCurrentIndex( + _ui->inputDeviceComboBox->findData(currentInputDeviceId) + ); + //// + + //outputDeviceList + _ui->outputDeviceComboBox->clear(); + +#ifdef OS_LINUX + savedSettingsFound = false; + tmpDev = AudioDevice(config.getAudioOutputDeviceId()); +#endif + std::list outputDeviceList = AudioDeviceManager::getInstance().getOutputDeviceList(); + for (std::list::const_iterator it = outputDeviceList.begin(); + it != outputDeviceList.end(); + ++it) { + _ui->outputDeviceComboBox->addItem( +#ifdef OS_MACOSX + QString::fromUtf8((*it).getName().c_str()), +#else + (*it).getName().c_str(), +#endif + QString::fromUtf8((*it).getData().toString().c_str()) + ); +#ifdef OS_LINUX + if ((*it).getData() == tmpDev.getData()) { + savedSettingsFound = true; + } +#endif + } + +#ifdef OS_LINUX + if (!savedSettingsFound) { + _ui->outputDeviceComboBox->addItem( + //QString::fromUtf8(tmpDev.getName().c_str()), + QString(tmpDev.getName().c_str()), + QString::fromUtf8(tmpDev.getData().toString().c_str()) + ); + } +#endif + QString currentOutputDeviceId = +#ifdef OS_MACOSX + QString::fromUtf8(config.getAudioOutputDeviceId().toString().c_str()); +#else + QString(config.getAudioOutputDeviceId().toString().c_str()); +#endif + _ui->outputDeviceComboBox->setCurrentIndex( + _ui->outputDeviceComboBox->findData(currentOutputDeviceId) + ); + //// + + //ringingDeviceList = outputDeviceList + _ui->ringingDeviceComboBox->clear(); +#ifdef OS_LINUX + savedSettingsFound = false; + tmpDev = AudioDevice(config.getAudioOutputDeviceId()); +#endif + for (std::list::const_iterator it = outputDeviceList.begin(); + it != outputDeviceList.end(); + ++it) { + _ui->ringingDeviceComboBox->addItem( +#ifdef OS_MACOSX + QString::fromUtf8((*it).getName().c_str()), +#else + (*it).getName().c_str(), +#endif + QString::fromUtf8((*it).getData().toString().c_str()) + ); +#ifdef OS_LINUX + if ((*it).getData() == tmpDev.getData()) { + savedSettingsFound = true; + } +#endif + } + +#ifdef OS_LINUX + if (!savedSettingsFound) { + _ui->ringingDeviceComboBox->addItem( + //QString::fromUtf8(tmpDev.getName().c_str()), + QString(tmpDev.getName().c_str()), + QString::fromUtf8(tmpDev.getData().toString().c_str()) + ); + } +#endif + QString currentRingerDeviceId = +#ifdef OS_MACOSX + QString::fromUtf8(config.getAudioRingerDeviceId().toString().c_str()); +#else + QString(config.getAudioRingerDeviceId().toString().c_str()); +#endif + _ui->ringingDeviceComboBox->setCurrentIndex( + _ui->ringingDeviceComboBox->findData(currentRingerDeviceId) + ); + //// + + // advanced + fillAudioCodecList(); + + _ui->halfDuplexCheckBox->setChecked(config.getAudioHalfDuplex()); +} + +void QtAudioSettings::makeTestCallClicked() { + CUserProfile * cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if ((cUserProfile) && (cUserProfile->getUserProfile().getActivePhoneLine())) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string testnumber = config.getSipAudioTestCall (); + cUserProfile->getUserProfile().getActivePhoneLine()->makeCall(testnumber); + QtQuteCom* qQuteCom = static_cast(_cQuteCom.getPresentation()); + qQuteCom->getWidget()->raise(); + } +} + +void QtAudioSettings::testOutputDevice() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + Sound* testSound = new Sound(config.getAudioCallClosedFile()); + AudioDevice device = getAudioDeviceFromComboBox(_ui->outputDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); + testSound->setWaveOutDevice(device); + //Play the sound 4 times + testSound->setLoops(4); + testSound->play(); +} + +void QtAudioSettings::testRingingDevice() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + Sound* testSound = new Sound(config.getAudioCallClosedFile()); + AudioDevice device = getAudioDeviceFromComboBox(_ui->ringingDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); + testSound->setWaveOutDevice(device); + //Play the sound 4 times + testSound->setLoops(4); + testSound->play(); +} + +void QtAudioSettings::AdvPressed() { + if (_ui->AdvGroupBox->isVisible()) { + _ui->AdvGroupBox->setVisible(false); + _ui->AdvButton->setText(tr("Advanced") + " >>"); + } else { + _ui->AdvGroupBox->setVisible(true); + _ui->AdvButton->setText(tr("Advanced") + " <<"); + } +} + +void QtAudioSettings::UpPressed() { + + //extracts current Item + int currentrow = _ui->audioCodecListWidget->currentRow(); + + //if an item is selected + if (currentrow < 0) { + return; + } + + QListWidgetItem * mover = _ui->audioCodecListWidget->takeItem(currentrow); + + //inserts it to its new place + _ui->audioCodecListWidget->insertItem(currentrow - 1,mover); + + //sets focus on mover + _ui->audioCodecListWidget->setCurrentItem(mover); +} + +void QtAudioSettings::DownPressed() { + + //extracts current Item + int currentrow = _ui->audioCodecListWidget->currentRow(); + + //if an item is selected + if (currentrow < 0) { + return; + } + + QListWidgetItem * mover = _ui->audioCodecListWidget->takeItem(currentrow); + + //inserts it to its new place + _ui->audioCodecListWidget->insertItem(currentrow + 1,mover); + + //sets focus on mover + _ui->audioCodecListWidget->setCurrentItem(mover); +} + +void QtAudioSettings::ResetPressed() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //resets saved audio codec list + config.resetToDefaultValue(Config::AUDIO_CODEC_LIST_KEY); + + fillAudioCodecList(); +} + +void QtAudioSettings::fillAudioCodecList() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + //resets displayed audio codec list + StringList audioCodecList = config.getAudioCodecList(); + _ui->audioCodecListWidget->clear(); + for (StringList::const_iterator it = audioCodecList.begin(); it != audioCodecList.end(); ++it) { + QString audioCodec = QString(it->c_str()); + // HACK: PHAPI_SPEEXWB_REPLACES_G726WB_HACK + if (audioCodec == "G726-64wb/16000") { + audioCodec = "SPEEX/16000"; + } + //// + _ui->audioCodecListWidget->addItem(audioCodec); + } + //// +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtAudioSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTAUDIOSETTINGS_H +#define QTAUDIOSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; +namespace Ui { class AudioSettings; } + +/** + * Audio configuration panel. + * + * @author Tanguy Krotoff + * @author Xavier Desjardins + */ +class QtAudioSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtAudioSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtAudioSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private Q_SLOTS: + + void makeTestCallClicked(); + + void testOutputDevice(); + + void testRingingDevice(); + + void AdvPressed(); + + void UpPressed(); + + void DownPressed(); + + void ResetPressed(); + +private: + + virtual void readConfig(); + void fillAudioCodecList(); + + Ui::AudioSettings * _ui; + + CQuteCom & _cQuteCom; +}; + +#endif //QTAUDIOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtCallForwardSettings.h" + +#include "ui_CallForwardSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +QtCallForwardSettings::QtCallForwardSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + + _ui = new Ui::CallForwardSettings(); + _ui->setupUi(this); + + readConfig(); +} + +QtCallForwardSettings::~QtCallForwardSettings() { + OWSAFE_DELETE(_ui); +} + +QString QtCallForwardSettings::getName() const { + return tr("Call Forward"); +} + +QString QtCallForwardSettings::getTitle() const { + return tr("Call Forward Settings"); +} + +QString QtCallForwardSettings::getIconName() const { + return "call-forward"; +} + +void QtCallForwardSettings::saveConfig() { + + std::string mode; + if (_ui->forwardToVoiceMailRadioButton->isChecked()) { + mode = "voicemail"; + } else if (_ui->disableRadioButton->isChecked()) { + mode = "disable"; + } else if (_ui->forwardToNumberRadioButton->isChecked()) { + mode = "number"; + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + std::string number1(_ui->phoneNumber1Edit->text().toUtf8()); + std::string number2(_ui->phoneNumber2Edit->text().toUtf8()); + std::string number3(_ui->phoneNumber3Edit->text().toUtf8()); + bool mustCallTheWs = false; + + //if the mode has changed + if (config.getCallForwardMode() != mode) { + config.set(Config::CALL_FORWARD_MODE_KEY, mode); + mustCallTheWs = true; + } else { + //if numbers have changed + if ((mode == "number") && + (config.getCallForwardPhoneNumber1() != number1) || + (config.getCallForwardPhoneNumber2() != number2) || + (config.getCallForwardPhoneNumber3() != number3)) { + config.set(Config::CALL_FORWARD_PHONENUMBER1_KEY, number1); + config.set(Config::CALL_FORWARD_PHONENUMBER2_KEY, number2); + config.set(Config::CALL_FORWARD_PHONENUMBER3_KEY, number3); + mustCallTheWs = true; + } + } + + if (mustCallTheWs) { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()) { + if (mode == "voicemail") { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->forwardToVoiceMail(); + } else if (mode == "disable") { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->disableCallForward(); + } else if (mode == "number") { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->forwardToNumber(number1, number2, number3); + } + } + } + } +} + +void QtCallForwardSettings::readConfig() { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + if (config.getCallForwardMode() == "voicemail") { + _ui->forwardToVoiceMailRadioButton->setChecked(true); + + } else if (config.getCallForwardMode() == "number") { + _ui->forwardToNumberRadioButton->setChecked(true); + + } else if (config.getCallForwardMode() == "disable") { + _ui->disableRadioButton->setChecked(true); + + } else if (config.getCallForwardMode() == "unauthorized") { + setEnabled(false); + } + + _ui->forwardToVoiceMailRadioButton->setEnabled(config.getVoiceMailActive()); + QString tmp = QString::fromUtf8(config.getCallForwardPhoneNumber1().c_str()); + if (!tmp.isEmpty()) { + _ui->phoneNumber1Edit->setText(tmp); + } + tmp = QString::fromUtf8(config.getCallForwardPhoneNumber2().c_str()); + if (!tmp.isEmpty()) { + _ui->phoneNumber2Edit->setText(tmp); + } + tmp = QString::fromUtf8(config.getCallForwardPhoneNumber3().c_str()); + if (!tmp.isEmpty()) { + _ui->phoneNumber3Edit->setText(tmp); + } + + CUserProfile * cuserprofile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cuserprofile && cuserprofile->getUserProfile().hasQuteComAccount()) { + setEnabled(true); + } else { + setEnabled(false); + } +} + +void QtCallForwardSettings::postInitialize() { + if (!isEnabled()) { + QtQuteCom * qtQuteCom = static_cast(_cQuteCom.getPresentation()); + QtNoQuteComAlert noQuteComAlert(NULL, *qtQuteCom, + tr("Call Forward"), + tr("To configure call forward settings you need to
\ + be logged in with a @company@ account.")); + noQuteComAlert.getQDialog()->exec(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtCallForwardSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTCALLFORWARDSETTINGS_H +#define QTCALLFORWARDSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; +namespace Ui { class CallForwardSettings; } + +/** + * Call forward configuration panel. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class QtCallForwardSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtCallForwardSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtCallForwardSettings(); + + QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual void postInitialize(); + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + Ui::CallForwardSettings * _ui; + + CQuteCom & _cQuteCom; +}; + +#endif //QTCALLFORWARDSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtGeneralSettings.h" + +#include "ui_GeneralSettings.h" + +#include +#include + +#include + +#include + +QtGeneralSettings::QtGeneralSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::GeneralSettings(); + _ui->setupUi(this); + +#ifdef OS_LINUX + _ui->autoStartGroupBox->hide(); +#endif + + readConfig(); +} + +QtGeneralSettings::~QtGeneralSettings() { + delete _ui; +} + +QString QtGeneralSettings::getName() const { + return tr("General"); +} + +QString QtGeneralSettings::getTitle() const { + return tr("General Settings"); +} + +QString QtGeneralSettings::getIconName() const { + return "general"; +} + +void QtGeneralSettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _ui->startQuteComCheckBox->setChecked(config.getGeneralAutoStart()); + _ui->startBackgroundMode->setChecked(config.getGeneralStartBackgroundMode()); + _ui->startFreeCallRadioButton->setChecked(config.getGeneralClickStartFreeCall()); + _ui->callCellPhoneCheckBox->setChecked(config.getGeneralClickCallCellPhone()); + _ui->startChatOnlyRadioButton->setChecked(config.getGeneralClickStartChat()); + + int awayTimer = config.getGeneralAwayTimer(); + if (awayTimer != Config::NO_AWAY_TIMER) { + _ui->showAwayCheckBox->setChecked(true); + _ui->awaySpinBox->setValue(awayTimer); + } else { + _ui->showAwayCheckBox->setChecked(false); + } +} + +void QtGeneralSettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + config.set(Config::GENERAL_AUTOSTART_KEY, _ui->startQuteComCheckBox->isChecked()); + config.set(Config::GENERAL_STARTBACKGROUNDMODE_KEY, _ui->startBackgroundMode->isChecked()); + config.set(Config::GENERAL_CLICK_START_FREECALL_KEY, _ui->startFreeCallRadioButton->isChecked()); + config.set(Config::GENERAL_CLICK_CALL_CELLPHONE_KEY, _ui->callCellPhoneCheckBox->isChecked()); + config.set(Config::GENERAL_CLICK_START_CHAT_KEY, _ui->startChatOnlyRadioButton->isChecked()); + + int awayTimer = _ui->awaySpinBox->value(); + if (_ui->showAwayCheckBox->isChecked()) { + config.set(Config::GENERAL_AWAY_TIMER_KEY, awayTimer); + } else { + config.set(Config::GENERAL_AWAY_TIMER_KEY, Config::NO_AWAY_TIMER); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtGeneralSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTGENERALSETTINGS_H +#define QTGENERALSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; +namespace Ui { class GeneralSettings; } + +/** + * General QuteCom configuration panel. + * + * @author Tanguy Krotoff + */ +class QtGeneralSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtGeneralSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtGeneralSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + Ui::GeneralSettings * _ui; +}; + +#endif //QTGENERALSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtISettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtISettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtISettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtISettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTISETTINGS_H +#define QTISETTINGS_H + +#include + +class QWidget; +class QString; + +/** + * Interface for settings panel from the configuration window. + * + * @author Tanguy Krotoff + */ +class QtISettings : Interface { +public: + + virtual ~QtISettings() { } + + virtual QWidget * getWidget() const = 0; + + virtual QString getName() const = 0; + + virtual QString getTitle() const = 0; + + virtual QString getIconName() const = 0; + + virtual void saveConfig() = 0; + + virtual void postInitialize() { } + +protected: + + virtual void readConfig() = 0; +}; + +#endif //QTISETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,115 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2004-2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtLanguagesSettings.h" + +#include "ui_LanguagesSettings.h" + +#include + +#include +#include +#include +#include + +#include + +#include + +#include + +QtLanguagesSettings::QtLanguagesSettings(QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::LanguagesSettings(); + _ui->setupUi(this); + + SAFE_CONNECT(_ui->launchpadLink, + SIGNAL(linkActivated(const QString &)), + SLOT(launchpadLinkClicked(const QString &)) + ); + + _ui->listWidget->addItems(QtLanguage::getAvailableLanguages()); + + QStringList list; + list << "unknown" << "sq" <<"ar" <<"bg" <<"ca" + <<"zh-CN" <<"zh-TW" <<"hr" + <<"cs" <<"da" <<"nl" <<"en" + <<"et" <<"tl" <<"fi" <<"fr" + <<"gl" <<"de" <<"el" <<"iw" + <<"hi" <<"hu" <<"id" <<"it" + <<"ja" <<"ko" <<"lv" <<"lt" + <<"mt" <<"no" <<"pl" <<"pt" + <<"ro" <<"ru" <<"sr" <<"sk" + <<"sl" <<"es" <<"sv" <<"th" + <<"tr" <<"uk" <<"vi"; + + _ui->comboBox_received->addItems (list); + _ui->comboBox_sent->addItems (list); + + readConfig(); +} + +QtLanguagesSettings::~QtLanguagesSettings() { + OWSAFE_DELETE(_ui); +} + +QString QtLanguagesSettings::getName() const { + return tr("Language"); +} + +QString QtLanguagesSettings::getTitle() const { + return tr("Language Settings"); +} + +QString QtLanguagesSettings::getIconName() const { + return "languages"; +} + +void QtLanguagesSettings::saveConfig() { + QListWidgetItem * item = _ui->listWidget->currentItem(); + + std::string language; + if (item) { + language = item->text().toUtf8().constData(); + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::LANGUAGE_KEY, LanguageList::getISO639Code(language)); + + config.set(Config::TRANSLATION_SENT_KEY, std::string(_ui->comboBox_sent->currentText().toUtf8())); + config.set(Config::TRANSLATION_RECEIVED_KEY, std::string(_ui->comboBox_received->currentText().toUtf8())); +} + +void QtLanguagesSettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string language = LanguageList::getLanguageName(config.getLanguage()); + + QList list = _ui->listWidget->findItems(QString::fromUtf8(language.c_str()), Qt::MatchExactly); + if (!list.isEmpty()) { + _ui->listWidget->setCurrentItem(list[0]); + } + + _ui->comboBox_sent->setCurrentIndex(_ui->comboBox_sent->findText(QString::fromUtf8(config.getTranslationSent().c_str()))); + _ui->comboBox_received->setCurrentIndex(_ui->comboBox_received->findText(QString::fromUtf8(config.getTranslationReceived().c_str()))); +} + +void QtLanguagesSettings::launchpadLinkClicked(const QString & /*link*/) { + WsUrl::showLauchpadPage(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtLanguagesSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTLANGUAGESSETTINGS_H +#define QTLANGUAGESSETTINGS_H + +#include "QtISettings.h" + +#include + +namespace Ui { class LanguagesSettings; } + +class QtLanguagesSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtLanguagesSettings(QWidget * parent); + + virtual ~QtLanguagesSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget * getWidget() const { + return (QWidget*) this; + } + +private Q_SLOTS: + + void launchpadLinkClicked(const QString & link); + +private: + + virtual void readConfig(); + + Ui::LanguagesSettings * _ui; +}; + +#endif //QTLANGUAGESSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,188 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtNotificationSettings.h" + +#include "ui_NotificationSettings.h" +#include "ui_NotificationSettingsItem.h" + +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +QtNotificationSettingsItem::QtNotificationSettingsItem(const std::string& configKey, + const std::string& soundFile, const QString& caption) + : QWidget() + , _configKey(configKey) + , _soundFile(QString::fromUtf8(soundFile.c_str())) + , _caption(caption) { + _ui = new Ui::NotificationSettingsItem; +} + +QtNotificationSettingsItem::~QtNotificationSettingsItem() { + OWSAFE_DELETE(_ui); +} + +void QtNotificationSettingsItem::init(QWidget* parent) { + setParent(parent); + _ui->setupUi(this); + + // add an icon to browseButton + QPixmap pixBrowse = DesktopService::getInstance()->desktopIconPixmap(DesktopService::FolderIcon, 16); + _ui->browseButton->setIcon(pixBrowse); + //// + + SAFE_CONNECT(_ui->browseButton, SIGNAL(clicked()), SLOT(browseSounds())); + SAFE_CONNECT(_ui->playButton, SIGNAL(clicked()), SLOT(playSound())); + SAFE_CONNECT(_ui->soundLineEdit, SIGNAL(textChanged(const QString&)), SLOT(updatePlayButton())); + SAFE_CONNECT(_ui->checkBox, SIGNAL(toggled(bool)), SLOT(updatePlayButton())); + + _ui->checkBox->setText(_caption); + _ui->checkBox->setChecked(!_soundFile.isEmpty()); + _ui->frame->setEnabled(_ui->checkBox->isChecked()); + _ui->soundLineEdit->setText(_soundFile); +} + +void QtNotificationSettingsItem::browseSounds() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + QString file = QFileDialog::getOpenFileName(this, + tr("Choose a sound file"), + QString::fromUtf8(config.getResourcesDir().c_str()) + "sounds", + tr("Sounds") + " (*.wav)"); + + std::string tmp(file.toUtf8()); + tmp = File::convertPathSeparators(tmp); + file = QString::fromUtf8(tmp.c_str()); + + if (!file.isEmpty()) { + _ui->soundLineEdit->setText(file); + } +} + +void QtNotificationSettingsItem::playSound() { + std::string soundFile(_ui->soundLineEdit->text().toUtf8()); + Sound::play(soundFile, AudioDeviceManager::getInstance().getDefaultOutputDevice()); +} + +void QtNotificationSettingsItem::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + std::string name; + if (_ui->checkBox->isChecked()) { + name = std::string(_ui->soundLineEdit->text().toUtf8()); + } + config.setResource(_configKey, name); +} + +void QtNotificationSettingsItem::updatePlayButton() { + _ui->playButton->setEnabled(!_ui->soundLineEdit->text().isEmpty()); +} + +QtNotificationSettings::QtNotificationSettings(QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::NotificationSettings(); + _ui->setupUi(this); + + QVBoxLayout* layout = new QVBoxLayout(_ui->contentFrame); + layout->setMargin(0); + layout->setSpacing(0); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _list + << new QtNotificationSettingsItem( + Config::AUDIO_INCOMINGCALL_FILE_KEY, + config.getAudioIncomingCallFile(), + tr("Incoming call (ringtone)")) + + << new QtNotificationSettingsItem( + Config::AUDIO_OUTGOINGCALL_FILE_KEY, + config.getAudioOutgoingCallFile(), + tr("Outgoing call (ringtone)")) + + << new QtNotificationSettingsItem( + Config::AUDIO_CALLCLOSED_FILE_KEY, + config.getAudioCallClosedFile(), + tr("Call closed (hang up tone)")) + + << new QtNotificationSettingsItem( + Config::AUDIO_INCOMINGCHAT_FILE_KEY, + config.getAudioIncomingChatFile(), + tr("Incoming chat")) + + << new QtNotificationSettingsItem( + Config::AUDIO_IMACCOUNTCONNECTED_FILE_KEY, + config.getAudioIMAccountConnectedFile(), + tr("IM account connected")) + + << new QtNotificationSettingsItem( + Config::AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY, + config.getAudioIMAccountDisconnectedFile(), + tr("IM account disconnected")) + + << new QtNotificationSettingsItem( + Config::AUDIO_CONTACTONLINE_FILE_KEY, + config.getAudioContactOnlineFile(), + tr("Contact online")) + ; + + Q_FOREACH(QtNotificationSettingsItem* item, _list) { + item->init(_ui->contentFrame); + layout->addWidget(item); + } +} + +QtNotificationSettings::~QtNotificationSettings() { + OWSAFE_DELETE(_ui); +} + +void QtNotificationSettings::readConfig() { + // Nothing to do, all done in CTor +} + +QString QtNotificationSettings::getName() const { + return tr("Notifications"); +} + +QString QtNotificationSettings::getTitle() const { + return tr("Notifications Settings"); +} + +QString QtNotificationSettings::getIconName() const { + return "notifications"; +} + +void QtNotificationSettings::saveConfig() { + Q_FOREACH(QtNotificationSettingsItem* item, _list) { + item->saveConfig(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtNotificationSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTNOTIFICATIONSETTINGS_H +#define QTNOTIFICATIONSETTINGS_H + +#include "QtISettings.h" + +#include + +#include + +namespace Ui { + class NotificationSettings; + class NotificationSettingsItem; +} + +/** + * An item in the "list" of notification events + * + * @author Aurelien Gateau + */ +class QtNotificationSettingsItem : public QWidget { + Q_OBJECT +public: + QtNotificationSettingsItem(const std::string& key, const std::string& soundFile, const QString& caption); + ~QtNotificationSettingsItem(); + void init(QWidget*); + void saveConfig(); + +private Q_SLOTS: + void browseSounds(); + void playSound(); + void updatePlayButton(); + +private: + Ui::NotificationSettingsItem* _ui; + std::string _configKey; + QString _soundFile; + QString _caption; +}; + +/** + * Loads and display the notification settings configuration page. + * + * @author Tanguy Krotoff + * @author Aurelien Gateau + */ +class QtNotificationSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtNotificationSettings(QWidget * parent); + + virtual ~QtNotificationSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual QString getIconName() const; + + virtual void saveConfig(); + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + void setSounds(const QString & soundFile); + + Ui::NotificationSettings* _ui; + + typedef QList QtNotificationSettingsItemList; + QtNotificationSettingsItemList _list; +}; + +#endif //QTNOTIFICATIONSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPrivacySettings.h" + +#include "ui_PrivacySettings.h" + +#include +#include + +#include + +QtPrivacySettings::QtPrivacySettings(QWidget * parent) + : QWidget(parent) { + + _ui = new Ui::PrivacySettings(); + _ui->setupUi(this); + + readConfig(); +} + +QtPrivacySettings::~QtPrivacySettings() { + delete _ui; +} + +QString QtPrivacySettings::getName() const { + return tr("Privacy"); +} + +QString QtPrivacySettings::getTitle() const { + return tr("Privacy Settings"); +} + +QString QtPrivacySettings::getIconName() const { + return "privacy"; +} + +void QtPrivacySettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _ui->allowCallsFromAnyoneRadioButton->setChecked(config.getPrivacyAllowCallFromAnyone()); + _ui->allowCallsOnlyFromContactListRadioButton->setChecked(config.getPrivacyAllowCallOnlyFromContactList()); + _ui->allowChatsFromAnyoneRadioButton->setChecked(config.getPrivacyAllowChatsFromAnyone()); + _ui->allowChatsFromOnlyContactListRadioButton->setChecked(config.getPrivacyAllowChatOnlyFromContactList()); + _ui->alwaysSignAsInvisible->setChecked(config.getPrivacySignAsInvisible()); +} + +void QtPrivacySettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + config.set(Config::PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY, _ui->allowCallsFromAnyoneRadioButton->isChecked()); + config.set(Config::PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY, _ui->allowCallsOnlyFromContactListRadioButton->isChecked()); + config.set(Config::PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY, _ui->allowChatsFromAnyoneRadioButton->isChecked()); + config.set(Config::PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY, _ui->allowChatsFromOnlyContactListRadioButton->isChecked()); + config.set(Config::PRIVACY_SIGN_AS_INVISIBLE_KEY, _ui->alwaysSignAsInvisible->isChecked()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtPrivacySettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTPRIVACYSETTINGS_H +#define QTPRIVACYSETTINGS_H + +#include "QtISettings.h" + +#include + +namespace Ui { class PrivacySettings; } + +/** + * Privacy settings. + * + * @author Tanguy Krotoff + */ +class QtPrivacySettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtPrivacySettings(QWidget * parent); + + virtual ~QtPrivacySettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + Ui::PrivacySettings * _ui; +}; + +#endif //QTPRIVACYSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,189 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtQuteComConfigDialog.h" + +#include "ui_QuteComConfigDialog.h" + +#include "QtNotificationSettings.h" +#include "QtGeneralSettings.h" +#include "QtAccountSettings.h" +#include "QtPrivacySettings.h" +#include "QtAppearanceSettings.h" +#include "QtAudioSettings.h" +#include "QtVideoSettings.h" +#include "QtAdvancedSettings.h" +#include "QtCallForwardSettings.h" +#include "QtLanguagesSettings.h" +#include "QtVoicemailSettings.h" +#include "QtSecuritySettings.h" + +#include +#include + +#include + +#include + +#include + +#include + +QtQuteComConfigDialog::QtQuteComConfigDialog(CQuteCom & cQuteCom) + : QDialog(0) { + + _ui = new Ui::QuteComConfigDialog(); + _ui->setupUi(this); + _ui->retranslateUi(this); + + // Set bold ourself: if we do it from Designer it alters the font name (at + // least with Qt 4.1) + QFont font(_ui->titleLabel->font()); + font.setBold(true); + _ui->titleLabel->setFont(font); + + _settingsList += new QtGeneralSettings(cQuteCom, 0); + if (cQuteCom.getCUserProfileHandler().getCUserProfile()) { + _settingsList += new QtAccountSettings(cQuteCom, 0); + } + _settingsList += new QtLanguagesSettings(0); + _settingsList += new QtAppearanceSettings(0); + _settingsList += new QtAudioSettings(cQuteCom, 0); + _settingsList += new QtVideoSettings(cQuteCom, 0); +#ifndef DISABLE_CALL_FORWARD + _settingsList += new QtCallForwardSettings(cQuteCom, 0); +#endif + _settingsList += new QtNotificationSettings(0); +#ifndef DISABLE_VOICE_MAIL + _settingsList += new QtVoicemailSettings(cQuteCom, 0); +#endif +#if 0 + _settingsList += new QtSecuritySettings(cQuteCom, 0); +#endif + _settingsList += new QtAdvancedSettings(0); + + //stackedWidget + Q_FOREACH(QtISettings* settings, _settingsList) { + QString iconName = QString(":pics/config/%1.png").arg(settings->getIconName()); + QIcon icon = QPixmap(iconName); + new QListWidgetItem(icon, settings->getName(), _ui->listWidget); + QWidget* widget = settings->getWidget(); + widget->layout()->setMargin(0); + _ui->stackedWidget->addWidget(widget); + } + _ui->listWidget->setCurrentRow(0); + showSettingPage(0); + + int minWidth = WidgetUtils::computeListViewMinimumWidth(_ui->listWidget); + _ui->listWidget->setFixedWidth(minWidth); + + //listWidget + connect(_ui->listWidget, SIGNAL(currentRowChanged(int)), SLOT(showSettingPage(int))); + + //saveButton + connect(_ui->saveButton, SIGNAL(clicked()), SLOT(save())); +} + +QtQuteComConfigDialog::~QtQuteComConfigDialog() { + delete _ui; +} + +void QtQuteComConfigDialog::showSettingPage(int row) { + if (row<0 || row >= _settingsList.size()) { + return; + } + QtISettings* settings = _settingsList.at(row); + _ui->titleLabel->setText(settings->getTitle()); + QWidget* widget = settings->getWidget(); + _ui->stackedWidget->setCurrentWidget(widget); + settings->postInitialize(); +} + +void QtQuteComConfigDialog::save() { + Q_FOREACH(QtISettings* settings, _settingsList) { + settings->saveConfig(); + } +} + +void QtQuteComConfigDialog::showPage(const QString & pageName) { + int count = _settingsList.count(); + for (int row = 0; row < count; ++row) { + if (_settingsList[row]->getName() == pageName) { + _ui->listWidget->setCurrentRow(row); + return; + } + } + LOG_WARN("unknown page name=" + pageName.toUtf8()); +} + +void QtQuteComConfigDialog::showGeneralPage() { + showPage(tr("General")); +} + +void QtQuteComConfigDialog::showLanguagePage() { + showPage(tr("Language")); +} + +void QtQuteComConfigDialog::showAccountsPage() { + showPage(tr("Accounts")); +} + +void QtQuteComConfigDialog::showPrivacyPage() { + showPage(tr("Privacy")); +} + +void QtQuteComConfigDialog::showAudioPage() { + showPage(tr("Audio")); +} + +void QtQuteComConfigDialog::showVideoPage() { + showPage(tr("Video")); +} + +void QtQuteComConfigDialog::showNotificationsPage() { + showPage(tr("Notifications")); +} + +void QtQuteComConfigDialog::showCallForwardPage() { + showPage(tr("Call Forward")); +} + +void QtQuteComConfigDialog::showAdvancedPage() { + showPage(tr("Advanced")); +} + +void QtQuteComConfigDialog::showVoicemailPage() { + showPage(tr("Voicemail")); +} + +void QtQuteComConfigDialog::showSecurityPage() { + showPage(tr("security")); +} + +QtQuteComConfigDialog* QtQuteComConfigDialog::showInstance(CQuteCom& cQuteCom) { + static QPointer instance; + if (!instance) { + instance = new QtQuteComConfigDialog(cQuteCom); + instance->setAttribute(Qt::WA_DeleteOnClose); + instance->show(); + } else { + instance->raise(); + } + return instance; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtQuteComConfigDialog.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTQUTECOMCONFIGDIALOG_H +#define OWQTQUTECOMCONFIGDIALOG_H + +#include + +#include + +#include + +class CQuteCom; +class QtISettings; +namespace Ui { class QuteComConfigDialog; } + +/** + * Main configuration window. + * + * @author Tanguy Krotoff + */ +class QtQuteComConfigDialog : public QDialog, NonCopyable { + Q_OBJECT +public: + + ~QtQuteComConfigDialog(); + + /** + * Shows the config dialog or raise it if it already exists. + * @return the config dialog instance, so that caller can show a particular + * page + */ + static QtQuteComConfigDialog* showInstance(CQuteCom & cQuteCom); + +public Q_SLOTS: + + void save(); + + void showGeneralPage(); + + void showLanguagePage(); + + void showAccountsPage(); + + void showPrivacyPage(); + + void showAudioPage(); + + void showVideoPage(); + + void showNotificationsPage(); + + void showCallForwardPage(); + + void showAdvancedPage(); + + void showVoicemailPage(); + + void showSecurityPage(); + +private Q_SLOTS: + + void showSettingPage(int row); + +private: + + QtQuteComConfigDialog(CQuteCom & cQuteCom); + + void showPage(const QString & pageName); + + Ui::QuteComConfigDialog * _ui; + + typedef QList SettingsList; + SettingsList _settingsList; +}; + +#endif //OWQTQUTECOMCONFIGDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSecuritySettings.h" + +#include "ui_SecuritySettings.h" + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +QtSecuritySettings::QtSecuritySettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + + _ui = new Ui::SecuritySettings(); + _ui->setupUi(this); + readConfig(); +} + +QtSecuritySettings::~QtSecuritySettings() { + OWSAFE_DELETE(_ui); +} + +QString QtSecuritySettings::getName() const { + return tr("Security"); +} + +QString QtSecuritySettings::getTitle() const { + return tr("Security Settings") + " - " + tr("BETA"); +} + +QString QtSecuritySettings::getIconName() const { + return "privacy"; +} + +void QtSecuritySettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _ui->callEncryptionCheckBox->setChecked(config.getCallEncryptionMode()); +} + +void QtSecuritySettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::CALL_ENCRYPTION_MODE_KEY, _ui->callEncryptionCheckBox->isChecked()); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtSecuritySettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTSECURITYSETTINGS_H +#define QTSECURITYSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; +namespace Ui { class SecuritySettings; } + +/** + * @author Mathieu Stute + */ +class QtSecuritySettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtSecuritySettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtSecuritySettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + Ui::SecuritySettings * _ui; + + CQuteCom & _cQuteCom; +}; + +#endif //QTSECURITYSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,235 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtVideoSettings.h" + +#include "ui_VideoSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +static const int VIDEO_QUALITY_COLUMN = 0; +static const char * VIDEO_TEST_CALL = "335"; + +QtVideoSettings::QtVideoSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(NULL), + _cQuteCom(cQuteCom) { + + _ui = new Ui::VideoSettings(); + _ui->setupUi(this); + + _webcamDriver = WebcamDriver::getInstance(); + _previewStarted = false; + + SAFE_CONNECT_TYPE(this, SIGNAL(newWebcamImage()), SLOT(newWebcamImageCaptured()), Qt::QueuedConnection); + SAFE_CONNECT(_ui->webcamDeviceComboBox, SIGNAL(activated(const QString &)), SLOT(startWebcamPreview(const QString &))); + SAFE_CONNECT(_ui->makeTestVideoCallButton, SIGNAL(clicked()), SLOT(makeTestCallClicked())); + SAFE_CONNECT(_ui->webcamPreviewButton, SIGNAL(clicked()), SLOT(webcamPreview())); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + //No webcam driver + if (_webcamDriver->getDeviceList().empty()) { + config.set(Config::VIDEO_ENABLE_KEY, false); + _ui->enableVideoCheckBox->setChecked(false); + _ui->enableVideoCheckBox->setEnabled(false); + } + + // set all columns to the same size + _ui->videoQualityTreeWidget->header()->setResizeMode(2, QHeaderView::Stretch); + _ui->videoQualityTreeWidget->header()->setResizeMode(1, QHeaderView::Stretch); + _ui->videoQualityTreeWidget->header()->setResizeMode(0, QHeaderView::Stretch); + //// + + readConfig(); +} + +QtVideoSettings::~QtVideoSettings() { + OWSAFE_DELETE(_ui); +} + +QString QtVideoSettings::getName() const { + return tr("Video"); +} + +QString QtVideoSettings::getTitle() const { + return tr("Video Settings"); +} + +QString QtVideoSettings::getIconName() const { + return "video"; +} + +void QtVideoSettings::saveConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + config.set(Config::VIDEO_ENABLE_KEY, _ui->enableVideoCheckBox->isChecked()); + config.set(Config::VIDEO_WEBCAM_DEVICE_KEY, std::string(_ui->webcamDeviceComboBox->currentText().toUtf8().constData())); + + QTreeWidgetItem * item = _ui->videoQualityTreeWidget->currentItem(); + if (item) { + EnumVideoQuality::VideoQuality videoQuality = EnumVideoQuality::VideoQualityNormal; + QString text = item->text(VIDEO_QUALITY_COLUMN); + if (tr("Normal") == text) { + videoQuality = EnumVideoQuality::VideoQualityNormal; + } + else if (tr("Good") == text) { + videoQuality = EnumVideoQuality::VideoQualityGood; + } + else if (tr("Very good") == text) { + videoQuality = EnumVideoQuality::VideoQualityVeryGood; + } + else if (tr("Excellent") == text) { + videoQuality = EnumVideoQuality::VideoQualityExcellent; + } + else { + LOG_FATAL("unknown video quality=" + text.toUtf8()); + } + config.set(Config::VIDEO_QUALITY_KEY, EnumVideoQuality::toString(videoQuality)); + } +} + +void QtVideoSettings::readConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + _ui->enableVideoCheckBox->setChecked(config.getVideoEnable()); + + _ui->webcamDeviceComboBox->clear(); + + StringList list = _webcamDriver->getDeviceList(); + for(StringList::iterator it = list.begin() ; it != list.end() ; it++) + _ui->webcamDeviceComboBox->addItem(QString::fromUtf8((*it).c_str())); + + _ui->webcamDeviceComboBox->setCurrentIndex(_ui->webcamDeviceComboBox->findText(QString::fromUtf8(config.getVideoWebcamDevice().c_str()))); + + EnumVideoQuality::VideoQuality videoQuality = EnumVideoQuality::toVideoQuality(config.getVideoQuality()); + QString videoQualityText; + + switch (videoQuality) { + case EnumVideoQuality::VideoQualityNormal: + videoQualityText = tr("Normal"); + break; + + case EnumVideoQuality::VideoQualityGood: + videoQualityText = tr("Good"); + break; + + case EnumVideoQuality::VideoQualityVeryGood: + videoQualityText = tr("Very good"); + break; + + case EnumVideoQuality::VideoQualityExcellent: + videoQualityText = tr("Excellent"); + break; + + default: + LOG_FATAL("unknown video quality=" + String::fromNumber(videoQuality)); + } + + QList items = _ui->videoQualityTreeWidget->findItems(videoQualityText, Qt::MatchExactly, VIDEO_QUALITY_COLUMN); + if (items.size() > 0) { + _ui->videoQualityTreeWidget->setItemSelected(items[0], true); + } +} + +void QtVideoSettings::frameCapturedEventHandler(IWebcamDriver * sender, piximage * image) { + + if (!_ui->webcamSelectionGroupBox->isEnabled()) { + return; + } + QSize qs(_ui->webcamPreviewLabel->width(), _ui->webcamPreviewLabel->height()); + + QImage tmpRgbImage(qs, QImage::Format_RGB32); + QtVideoQt::convertPixImageToQImage(image, qs, &tmpRgbImage); + + QPixmap tmp = QPixmap::fromImage(tmpRgbImage); + { + Mutex::ScopedLock lock(_mutex); + + _lastWebcamPixmap = tmp; + } + + newWebcamImage(); +} + +void QtVideoSettings::newWebcamImageCaptured() { + Mutex::ScopedLock lock(_mutex); + + if (_lastWebcamPixmap.isNull()) + return; + + _ui->webcamPreviewLabel->setPixmap(_lastWebcamPixmap); +} + +void QtVideoSettings::startWebcamPreview(const QString & deviceName) { + if (!_previewStarted) { + _webcamDriver->frameCapturedEvent += boost::bind(&QtVideoSettings::frameCapturedEventHandler, this, _1, _2); + _webcamDriver->setDevice(std::string(deviceName.toUtf8())); + _webcamDriver->setResolution(320, 240); + _webcamDriver->setPalette(PIX_OSI_YUV420P); + _webcamDriver->startCapture(); + + _previewStarted = true; + } +} + +void QtVideoSettings::stopWebcamPreview() { + if (_previewStarted) { + _webcamDriver->frameCapturedEvent -= boost::bind(&QtVideoSettings::frameCapturedEventHandler, this, _1, _2); + _webcamDriver->stopCapture(); + + _previewStarted = false; + } +} + +void QtVideoSettings::webcamPreview() { + startWebcamPreview(_ui->webcamDeviceComboBox->currentText()); +} + +void QtVideoSettings::hideEvent(QHideEvent * event) { + stopWebcamPreview(); +} + +void QtVideoSettings::makeTestCallClicked() { + CUserProfile * cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if ((cUserProfile) && (cUserProfile->getUserProfile().getActivePhoneLine())) { + cUserProfile->getUserProfile().getActivePhoneLine()->makeCall(VIDEO_TEST_CALL); + QtQuteCom* qQuteCom = static_cast(_cQuteCom.getPresentation()); + qQuteCom->getWidget()->raise(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVideoSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTVIDEOSETTINGS_H +#define QTVIDEOSETTINGS_H + +#include "QtISettings.h" + +#include + +#include +#include + +#include +#include + +class IWebcamDriver; + +class QImage; +class QHideEvent; +class QString; +class CQuteCom; +namespace Ui { class VideoSettings; } + +/** + * Video configuration panel. + * + * Inherits from QWidget so we can overwrite QWidget::hideEvent() and + * QWidget::showEvent() that are protected methods from QWidget. + * + * @author Tanguy Krotoff + */ +class QtVideoSettings : public QWidget, public QtISettings, public Trackable { + Q_OBJECT +public: + + QtVideoSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtVideoSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private Q_SLOTS: + + void webcamPreview(); + + void newWebcamImageCaptured(); + + void startWebcamPreview(const QString & deviceName); + + void makeTestCallClicked(); + +Q_SIGNALS: + + void newWebcamImage(); + +private: + + virtual void readConfig(); + + void stopWebcamPreview(); + + void frameCapturedEventHandler(IWebcamDriver * sender, piximage * image); + + void hideEvent(QHideEvent * event); + + Ui::VideoSettings * _ui; + + IWebcamDriver * _webcamDriver; + + /** Contains the converted picture from the Webcam. */ + QImage _rgbImage; + + QPixmap _lastWebcamPixmap; + + Mutex _mutex; + + CQuteCom & _cQuteCom; + + bool _previewStarted; +}; + +#endif //QTVIDEOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtVoicemailSettings.h" + +#include "ui_VoicemailSettings.h" + +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +QtVoicemailSettings::QtVoicemailSettings(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + + _ui = new Ui::VoicemailSettings(); + _ui->setupUi(this); + + readConfig(); +} + +QtVoicemailSettings::~QtVoicemailSettings() { + OWSAFE_DELETE(_ui); +} + +QString QtVoicemailSettings::getName() const { + return tr("Voicemail"); +} + +QString QtVoicemailSettings::getTitle() const { + return tr("Voicemail Settings"); +} + +QString QtVoicemailSettings::getIconName() const { + return "voicemail"; +} + +void QtVoicemailSettings::saveConfig() { + UserProfile * userprofile = _cQuteCom.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userprofile) { + SipAccount * sipaccount = userprofile->getSipAccount(); + if (sipaccount) { + sipaccount->setVoicemailNumber(std::string(_ui->voicemailNumber->text().toUtf8())); + } + } +} + +void QtVoicemailSettings::readConfig() { + std::string number = "123"; + + UserProfile * userprofile = _cQuteCom.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userprofile) { + SipAccount * sipaccount = userprofile->getSipAccount(); + if (sipaccount) { + number = sipaccount->getVoicemailNumber(); + } + } else { + setEnabled(false); + } + + _ui->voicemailNumber->setText(QString::fromUtf8(number.c_str())); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QtVoicemailSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,62 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTVOICEMAILSETTINGS_H +#define QTVOICEMAILSETTINGS_H + +#include "QtISettings.h" + +#include + +class CQuteCom; +namespace Ui { class VoicemailSettings; } + +/** + * @author Xavier Desjardins + */ +class QtVoicemailSettings : public QWidget, public QtISettings { + Q_OBJECT +public: + + QtVoicemailSettings(CQuteCom & cQuteCom, QWidget * parent); + + virtual ~QtVoicemailSettings(); + + virtual QString getName() const; + + virtual QString getTitle() const; + + virtual void saveConfig(); + + virtual QString getIconName() const; + + virtual QWidget *getWidget() const { + return (QWidget*)this; + } + +private: + + virtual void readConfig(); + + Ui::VoicemailSettings * _ui; + + CQuteCom & _cQuteCom; +}; + +#endif //QTVOICEMAILSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QuteComConfigDialog.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QuteComConfigDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/QuteComConfigDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/QuteComConfigDialog.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,157 @@ + + QuteComConfigDialog + + + + 0 + 0 + 538 + 458 + + + + @product@ - Configuration + + + true + + + + 9 + + + 6 + + + + + Qt::Horizontal + + + + + + + Title + + + Qt::PlainText + + + 0 + + + + + + + + 7 + 5 + 0 + 0 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Save + + + + + + + Cancel + + + + + + + + + QAbstractItemView::SelectRows + + + + 32 + 32 + + + + + + + + Qt::Horizontal + + + + + + + saveButton + cancelButton + + + + + + + saveButton + clicked() + QuteComConfigDialog + accept() + + + 457 + 448 + + + 344 + 449 + + + + + cancelButton + clicked() + QuteComConfigDialog + reject() + + + 530 + 441 + + + 249 + 437 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/SecuritySettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/SecuritySettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/SecuritySettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/SecuritySettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ + + + + + SecuritySettings + + + + 0 + 0 + 572 + 171 + + + + Form + + + + 9 + + + 6 + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + true + + + + + + + Enable call encryption + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + QSizePolicy::Fixed + + + + 10 + 20 + + + + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + true + + + + + + + + + Qt::Vertical + + + + 482 + 31 + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/VideoSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/VideoSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/VideoSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/VideoSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,378 @@ + + VideoSettings + + + + 0 + 0 + 602 + 517 + + + + + 9 + + + 6 + + + + + Enable video + + + true + + + + + + + Webcam Selection + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 356 + 51 + + + + + + + + Webcam device: + + + + + + + + + + Webcam Preview + + + + + + + + 0 + 0 + 0 + 0 + + + + + 176 + 144 + + + + + 176 + 144 + + + + :/pics/iconbar/webcam.png + + + Qt::AlignCenter + + + + + + + + + + Connection Type + + + + 9 + + + 6 + + + + + Video quality depends on your Internet connection bandwidth + + + + + + + + 7 + 1 + 0 + 0 + + + + + 0 + 100 + + + + false + + + false + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + Normal + + + 0 to 512 + + + 0 to 128 + + + + + Good + + + 512 to 2048 + + + 128 to 256 + + + + + Very good + + + 2048+ + + + 256+ + + + + + Excellent + + + 8192+ + + + 1024+ + + + + + + + + 0 + + + 6 + + + + + + 0 + 5 + 0 + 0 + + + + + + + :/pics/help.png + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + Qt::RichText + + + true + + + true + + + + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Make a test video call + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 574 + 40 + + + + + + + + webcamDeviceComboBox + webcamPreviewButton + videoQualityTreeWidget + makeTestVideoCallButton + + + + + + + enableVideoCheckBox + toggled(bool) + webcamSelectionGroupBox + setEnabled(bool) + + + 72 + 22 + + + 130 + 48 + + + + + enableVideoCheckBox + toggled(bool) + groupBox_3 + setEnabled(bool) + + + 38 + 18 + + + 78 + 277 + + + + + enableVideoCheckBox + toggled(bool) + makeTestVideoCallButton + setEnabled(bool) + + + 61 + 19 + + + 279 + 528 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/VoicemailSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/VoicemailSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/config/VoicemailSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/config/VoicemailSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,56 @@ + + VoicemailSettings + + + + 0 + 0 + 464 + 146 + + + + Form + + + + 9 + + + 6 + + + + + Phone number of your voicemail: + + + + + + + + + + Please fill in here the information about your voicemail + + + + + + + Qt::Vertical + + + + 446 + 161 + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ContactGroupPopupMenu.h" +#include "QtRenameGroup.h" + +#include + +#include + +#include +#include + +#include + +#include + +using namespace std; + +ContactGroupPopupMenu::ContactGroupPopupMenu(CContactList & cContactList, QWidget * parent) + : QMenu(parent), + _cContactList(cContactList) { + + addAction(tr("Remove Contact Group"), this, SLOT(removeContactGroup())); + addAction(tr("Rename Contact Group"), this, SLOT(renameContactGroup())); + //addAction(tr("Send SMS to group"), this, SLOT(sendSms())); +} + +void ContactGroupPopupMenu::showMenu(const QString & groupId) { + _groupId = groupId; + exec(QCursor::pos()); +} + +void ContactGroupPopupMenu::removeContactGroup() const { + if (QMessageBox::question(qobject_cast(parent()), + tr("Delete group"), + tr("Do you really want to delete this group?"), + tr("&Yes"), + tr("&No"), + QString(), 0, 1) == 0) { + _cContactList.removeContactGroup(std::string(_groupId.toUtf8())); + } +} + +void ContactGroupPopupMenu::renameContactGroup() const { + std::string tmp = _cContactList.getContactGroupName(std::string(_groupId.toUtf8())); + QString groupName = QString::fromUtf8(tmp.c_str()); + QtRenameGroup dialog(groupName, qobject_cast(parent())); + if (dialog.exec()) { + _cContactList.renameContactGroup(std::string(_groupId.toUtf8()), std::string(dialog.getGroupName().toUtf8().data())); + } +} + +void ContactGroupPopupMenu::sendSms() { +/* + StringList list = _contactGroup->getMobilePhoneList(); + for(unsigned int i = 0; i < list.size(); i++) { + LOG_DEBUG("mobile number: " + list[i] + "\n"); + } +*/ +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactGroupPopupMenu.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTGROUPPOPUPMENU_H +#define OWCONTACTGROUPPOPUPMENU_H + +#include + +#include + +class CContactList; +class QTreeWidgetItem; +class QModelIndex; + +/** + * Menu of a contact group, popped each time a user clicks on a contact group using + * the right button of the mouse. + * + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class ContactGroupPopupMenu : public QMenu, NonCopyable { + Q_OBJECT +public: + + /** + * Constructs a ContactGroupPopupMenu. + * + * @param parent parent widget + */ + ContactGroupPopupMenu(CContactList & cContactList, QWidget * parent); + +public Q_SLOTS: + + /** + * The popup menu is being showed. + * + * @param groupId the UUID of the group to diplay the menu + */ + void showMenu(const QString & groupId); + +private Q_SLOTS: + + /** + * Removes a contact group from ContactList. + * + * The user clicks on "remove contact group" in the menu. + */ + void removeContactGroup() const; + + /** + * Rename a contact group. + * + * The user clicks on "rename contact group" in the menu. + */ + void renameContactGroup() const; + + /** + * Sends a SMS to a contact group. + * + * The user clicks on "Send SMS" in the menu. + */ + void sendSms(); + +private: + + QString _groupId; + + CContactList & _cContactList; +}; + +#endif //OWCONTACTGROUPPOPUPMENU_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactList.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactList.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactList.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactList.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,76 @@ + + ContactList + + + + 0 + 0 + 393 + 210 + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + true + + + QAbstractItemView::NoEditTriggers + + + true + + + true + + + QAbstractItemView::ExtendedSelection + + + QAbstractItemView::SelectItems + + + 0 + + + false + + + true + + + + Contact List + + + + + goupname + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/ContactWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/ContactWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,237 @@ + + ContactWidget + + + + 0 + 0 + 336 + 98 + + + + + 5 + 0 + 0 + 0 + + + + true + + + + 0 + + + 0 + + + + + No landline phone number set + + + :/pics/contact/landline.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + No mobile phone number set + + + :/pics/contact/mobile.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Qt::Horizontal + + + + 16 + 20 + + + + + + + + 0 + + + 0 + + + + + + 24 + 24 + + + + :/pics/contact/call.png + + + true + + + + + + + + 24 + 24 + + + + :/pics/contact/chat.png + + + true + + + + + + + + 24 + 24 + + + + :/pics/contact/sms.png + + + + 16 + 16 + + + + true + + + + + + + + 24 + 24 + + + + + + + :/pics/actions/send_file.png + + + + 16 + 16 + + + + true + + + + + + + Qt::Horizontal + + + + 119 + 15 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 20 + 20 + + + + + + + + + 0 + 0 + 0 + 7 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + :/pics/avatar_background.png + + + + 70 + 70 + + + + true + + + + + + + callButton + chatButton + smsButton + avatarButton + mobileButton + landlineButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtConferenceAction.h" + +#include + +QtConferenceAction::QtConferenceAction(const QString & text, QObject * parent) + : QAction(text, parent) { +} + +QtConferenceAction::QtConferenceAction(QObject * parent) + : QAction(parent) { +} + +QtConferenceAction::QtConferenceAction(const QIcon & icon, const QString & text, QObject * parent) + : QAction(icon, text, parent) { +} + +void QtConferenceAction::setPhoneCall(PhoneCall * phoneCall) { + _phoneCall = phoneCall; +} + +PhoneCall * QtConferenceAction::getPhoneCall() const { + return _phoneCall; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtConferenceAction.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,54 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONFERENCEACTION_H +#define OWQTCONFERENCEACTION_H + +#include +#include + +class PhoneCall; +class QString; +class QIcon; + +/** + * Default action for conference + * + * @author Mr K + */ +class QtConferenceAction : public QAction { + Q_OBJECT +public: + + QtConferenceAction(const QString & text, QObject * parent); + + QtConferenceAction(QObject * parent); + + QtConferenceAction(const QIcon & icon, const QString & text, QObject * parent); + + void setPhoneCall(PhoneCall * phoneCall); + + PhoneCall * getPhoneCall() const; + +private: + + PhoneCall * _phoneCall; +}; + +#endif //OWQTCONFERENCEACTION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,352 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContact.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +QtContact::QtContact(const ContactProfile * contactProfile, CQuteCom & cQuteCom, QObject * parent) + : QObject(parent), + _cQuteCom(cQuteCom) { + + _contactProfile = *contactProfile; + _contactId = _contactProfile.getUUID(); + _mouseOn = false; + _openStatus = false; +} + +QtContact::QtContact(const std::string & contactId, CQuteCom & cQuteCom, QObject * parent) + : QObject(parent), + _cQuteCom(cQuteCom) { + + _contactId = contactId; + contactUpdated(); + _mouseOn = false; + _openStatus = false; +} + +void QtContact::paint(QPainter * painter, const QStyleOptionViewItem & option) { + if ((option.state & QStyle::State_Selected) == QStyle::State_Selected) { + painter->fillRect(option.rect, option.palette.highlight()); + } + paintForeground(painter, option); +} + +void QtContact::paintForeground(QPainter * painter, const QStyleOptionViewItem & option) { + QMutexLocker locker(&_mutex); + + QtContactPixmap * spx = QtContactPixmap::getInstance(); + + if ((option.state & QStyle::State_Selected) == QStyle::State_Selected) { + painter->setPen(option.palette.highlightedText().color()); + } else { + painter->setPen(option.palette.text().color()); + } + + // Draw the status pixmap + QtContactPixmap::ContactPixmap status = getStatus(); + + QPixmap px = spx->getPixmap(status); + QRect painterRect = option.rect; + painter->drawPixmap(painterRect.left(), painterRect.top() + 2, px); + + painterRect.setLeft(painterRect.left() + px.width() + 5); + + // Draw the text + painter->setFont(option.font); + // Center the text vertically + QRect textRect = painterRect; + int textY = (UserSize - QFontMetrics(option.font).height()) / 2; + textRect.setTop(textY + textRect.top()); + + QString text = QString::fromUtf8(_contactProfile.getDisplayName().c_str()); + painter->drawText(textRect, Qt::AlignLeft, text, 0); +} + +QString QtContact::getId() const { + return QString::fromUtf8(_contactId.c_str()); +} + +QString QtContact::getUserName() const { + return QString::fromUtf8(_contactProfile.getDisplayName().c_str()); +} + +QString QtContact::getGroupName() const { + std::string groupId = _contactProfile.getGroupId(); + std::string groupName = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(groupId); + return QString::fromUtf8(groupName.c_str()); +} + +bool QtContact::isTestCall() const { + std::string sipAddress = _contactProfile.getFirstFreePhoneNumber(); + if (sipAddress.empty()) { + return false; + } + + // Check if the sipAddress is one of the test calls. We check all test + // calls because we don't have the information about whether we are + // connected with a SIP or a QuteCom account here. + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (sipAddress == config.getQuteComAudioTestCall()) { + return true; + } + if (sipAddress == config.getQuteComVideoTestCall()) { + return true; + } + if (sipAddress == config.getSipAudioTestCall()) { + return true; + } + if (sipAddress == config.getSipVideoTestCall()) { + return true; + } + return false; +} + +QtContactPixmap::ContactPixmap QtContact::getStatus() const { + // Rules are defined here: + // http://dev.openqutecom.org/trac/openqutecom/trac.cgi/wiki/ContactPresenceGrid + // version 9 + if (getGroupName() == "WDeal") { + return QtContactPixmap::ContactWDeal; + } + + if (isTestCall()) { + return QtContactPixmap::ContactTestCall; + } + + QtContactPixmap::ContactPixmap status; + bool hasPSTNCall = _contactProfile.hasCall() && !_contactProfile.hasFreeCall(); + + switch (_contactProfile.getPresenceState()) { + case EnumPresenceState::PresenceStateUnavailable: + LOG_INFO("Received PresenceStateUnavailable state"); + // Fall through intended + case EnumPresenceState::PresenceStateUnknown: + if (_contactProfile.hasAvailableSIPNumber()) { + // SIP + status = QtContactPixmap::ContactNoStatusSIP; + } else if (hasPSTNCall) { + status = QtContactPixmap::ContactNoStatus; + } else { + status = QtContactPixmap::ContactUnknown; + } + break; + case EnumPresenceState::PresenceStateOnline: + status = QtContactPixmap::ContactOnline; + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + status = QtContactPixmap::ContactDND; + break; + case EnumPresenceState::PresenceStateAway: + status = QtContactPixmap::ContactAway; + break; + case EnumPresenceState::PresenceStateInvisible: + status = QtContactPixmap::ContactInvisible; + break; + case EnumPresenceState::PresenceStateOffline: + if (hasPSTNCall) { + status = QtContactPixmap::ContactNoStatus; + } else { + status = QtContactPixmap::ContactOffline; + } + break; + default: + status = QtContactPixmap::ContactUnknown; + LOG_FATAL("unknown state=" + String::fromNumber(_contactProfile.getPresenceState())); + } + return status; +} + +void QtContact::startChat() { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->startIM(_contactId); +} + +void QtContact::startSMS() { + QtQuteCom * qtQuteCom = (QtQuteCom *) _cQuteCom.getPresentation(); + UserProfile * userprofile = _cQuteCom.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userprofile && userprofile->hasQuteComAccount()) { + QtSms * sms = qtQuteCom->getQtSms(); + if (sms) { + sms->setPhoneNumber(getMobilePhone()); + sms->setText(QString::null); + sms->setSignature(QString::null); + sms->getWidget()->show(); + } + } else { + QtNoQuteComAlert alert(qtQuteCom->getWidget(), *qtQuteCom); + alert.getQDialog()->exec(); + } +} + +void QtContact::setButton(const Qt::MouseButton button) { + _mouseButton = button; +} + +Qt::MouseButton QtContact::getButton() const { + return _mouseButton; +} + +void QtContact::setOpenStatus(bool value) { + _openStatus = value; +} + +int QtContact::getHeight() const { + if (_openStatus) { + return 95; + } + return UserSize; +} + +QString QtContact::getMobilePhone() const { + return QString::fromUtf8(_contactProfile.getMobilePhone().c_str()); +} + +QString QtContact::getHomePhone() const { + return QString::fromUtf8(_contactProfile.getHomePhone().c_str()); +} + +QString QtContact::getWebsite() const { + return QString::fromUtf8(_contactProfile.getWebsite().c_str()); +} + +QString QtContact::getWorkPhone() const { + return QString::fromUtf8(_contactProfile.getWorkPhone().c_str()); +} + +QString QtContact::getQuteComNumber() const { + return QString::fromUtf8(_contactProfile.getFirstAvailableQuteComId().c_str()); +} + +QString QtContact::getPreferredNumber() const { + return QString::fromUtf8(_contactProfile.getPreferredNumber().c_str()); +} + +QString QtContact::getFirstFreePhoneNumber() const { + return QString::fromUtf8(_contactProfile.getFirstFreePhoneNumber().c_str()); +} + +bool QtContact::hasPhoneNumber() const { + if (!getMobilePhone().isEmpty()) { + return true; + } + if (!getHomePhone().isEmpty()) { + return true; + } + if (!getWorkPhone().isEmpty()) { + return true; + } + if (!getQuteComNumber().isEmpty()) { + return true; + } + if(!getFirstFreePhoneNumber().isEmpty()) { + return true; + } + return false; +} + +bool QtContact::hasIM() const { + return _contactProfile.hasIM(); +} + +bool QtContact::hasFreeCall() const { + return _contactProfile.hasFreeCall(); +} + +bool QtContact::hasCall() const { + return _contactProfile.hasCall(); +} + +bool QtContact::hasVideo() const { + return _contactProfile.hasVideo(); +} + +bool QtContact::hasFileTransfer() const { + return _contactProfile.hasFileTransfer(); +} + +void QtContact::startCall(const QString & number) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->makeCall(std::string(number.toUtf8())); +} + +void QtContact::startCall() { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->makeContactCall(_contactId); +} + +void QtContact::sendFile() { + + if (_contactProfile.hasAvailableQuteComId()) { + QtQuteCom * qtQuteCom = (QtQuteCom *) _cQuteCom.getPresentation(); + IMContactSet contactList; + + IMContact imContact = _contactProfile.getFirstAvailableQuteComIMContact(); + contactList.insert(imContact); + + QtFileTransfer * qtFileTransfer = qtQuteCom->getFileTransfer(); + if (qtFileTransfer) { + + QString filename = qtFileTransfer->getChosenFile(); + if (!filename.isEmpty()) { + + qtFileTransfer->createSendFileSession(contactList, filename, + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList()); + } + } + } +} + +void QtContact::contactUpdated() { + _contactProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactProfile(_contactId); +} + +void QtContact::startFreeCall() { + std::string phoneNumber = _contactProfile.getFirstFreePhoneNumber(); + if (phoneNumber.empty()) { + phoneNumber = _contactProfile.getFirstVoiceMailNumber(); + } + if (phoneNumber.empty()) { + LOG_WARN("Couldn't find neither a free phone number, nor a voice mail number"); + return; + } + _cQuteCom.getCUserProfileHandler().getCUserProfile()->makeCall(phoneNumber); +} + +QString QtContact::getDisplayName() const { + return QString::fromUtf8(_contactProfile.getDisplayName().c_str()); +} + +EnumPresenceState::PresenceState QtContact::getPresenceState() const { + return _contactProfile.getPresenceState(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContact.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,168 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACT_H +#define OWQTCONTACT_H + +#include + +#include "QtContactPixmap.h" + +#include +#include +#include +#include + +class QPainter; +class CQuteCom; +class QModelIndex; +class QStyleOptionViewItem; +class QPainter; +class QRect; + +/** + * Qt Presentation component for Contact + * + * @author Mr K + */ +class QtContact : QObject { + Q_OBJECT +public: + + enum SizeHint { UserSize = 22 }; + + QtContact(const ContactProfile * contactProfile, CQuteCom & cQuteCom, QObject * parent); + QtContact(const std::string & contactId, CQuteCom & qutecomPhone, QObject * parent); + + virtual void paint(QPainter * painter, const QStyleOptionViewItem & option); + void paintForeground(QPainter * painter, const QStyleOptionViewItem & option); + + QString getId() const; + + QString getUserName() const; + + QString getGroupName() const; + + bool hasIM() const; + + bool hasCall() const; + + bool hasFreeCall() const; + + bool hasVideo() const; + + bool hasFileTransfer() const; + + void setMouseOn(bool value) { _mouseOn = value; } + + /** + * Returns the pixmap to draw for this contact. + */ + QtContactPixmap::ContactPixmap getStatus() const; + + void setButton(const Qt::MouseButton button); + + void setOpenStatus(bool value); + + bool isOpen() const { + return _openStatus; + } + + int getHeight() const; + + Qt::MouseButton getButton() const; + + void setAvatar(QString path) { _avatarPath = path; } + + QString getAvatar() const { return _avatarPath; } + + void startChat(); + + void startSMS(); + + void startCall(const QString & number); + + void startCall(); + + void startFreeCall(); + + void sendFile(); + + QString getMobilePhone() const; + + QString getHomePhone() const; + + QString getWorkPhone() const; + + QString getQuteComNumber() const; + + QString getPreferredNumber() const; + + QString getFirstFreePhoneNumber() const; + + QString getWebsite() const; + + bool hasPhoneNumber() const; + + QString getDisplayName() const; + + EnumPresenceState::PresenceState getPresenceState() const; + +public Q_SLOTS: + + void contactUpdated(); + +Q_SIGNALS: + + void clicked(QtContact * qtContact, int prt); + +private: + bool isTestCall() const; + + QString _userName; + + QPixmap _imPixmap; + + QPixmap _callPixmap; + + QPixmap _videoPixmap; + + QtContactPixmap::ContactPixmap _status; + + bool _mouseOn; + + bool _openStatus; + + Qt::MouseButton _mouseButton; + + QString _avatarPath; + + /** + * The UUID of the Contact associated with this QtContact. + */ + std::string _contactId; + + ContactProfile _contactProfile; + + CQuteCom & _cQuteCom; + + QMutex _mutex; +}; + +#endif //OWQTCONTACT diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactInfo.h" + +#include "QtContactListManager.h" +#include "QtContact.h" + +#include + +QtContactInfo::QtContactInfo(QTreeWidgetItem * item, QTreeWidgetItem * parentItem, const QString & contactId, int index) { + _contactId = contactId; + _item = item; + _parentItem = parentItem; + _index = index; + _clear = false; +} + +QtContactInfo::QtContactInfo(const QtContactInfo & other) { + _contactId = other._contactId; + _item = other._item; + _parentItem = other._parentItem; + _index = other._index; + _clear = other._clear; +} + +QtContactInfo::~QtContactInfo() { +} + +void QtContactInfo::clear() { + _clear = true; +} + +bool QtContactInfo::isCleared() const { + return _clear; +} + +QTreeWidgetItem * QtContactInfo::getItem() const { + return _item; +} + +QTreeWidgetItem * QtContactInfo::getParentItem() const { + return _parentItem; +} + +QString QtContactInfo::getContactId() const { + return _contactId; +} + +int QtContactInfo::getIndex() const { + return _index; +} + +bool QtContactInfo::operator<(const QtContactInfo & other) const { + QtContactListManager * ul = QtContactListManager::getInstance(); + QtContact * qtContact = ul->getContact(_contactId); + QtContact * otherQtContact = ul->getContact(other._contactId); + if (qtContact && otherQtContact) { + return qtContact->getUserName().toUpper() < otherQtContact->getUserName().toUpper(); + } + return false; +} + +QtContactInfo & QtContactInfo::operator=(const QtContactInfo & other) { + _contactId = other._contactId; + _item = other._item; + _parentItem = other._parentItem; + _index = other._index; + _clear = other._clear; + return *this; +} + +QtContactPixmap::ContactPixmap QtContactInfo::getStatus() const { + QtContactListManager * ul = QtContactListManager::getInstance(); + QtContact * qtContact = ul->getContact(_contactId); + return qtContact->getStatus(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactInfo.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTINFO_H +#define OWCONTACTINFO_H + +#include "QtContactPixmap.h" + +class QTreeWidgetItem; +class QtContact; + +/** + * Store contact informations for sorting + * + * @author Mr K + */ +class QtContactInfo { +public: + + QtContactInfo(QTreeWidgetItem * item, QTreeWidgetItem * parentItem, const QString & contactId, int index); + + QtContactInfo(const QtContactInfo & other); + + ~QtContactInfo(); + + QTreeWidgetItem * getItem() const; + + QTreeWidgetItem * getParentItem() const; + + QString getContactId() const; + + int getIndex() const; + + void clear(); + + bool isCleared() const; + + QtContactPixmap::ContactPixmap getStatus() const; + + bool operator<(const QtContactInfo & other) const; + + QtContactInfo & operator=(const QtContactInfo & other); + +private: + + QTreeWidgetItem * _item; + + QTreeWidgetItem * _parentItem; + + QString _contactId; + + int _index; + + bool _clear; +}; + +#endif //OWCONTACTINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,257 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactList.h" + +#include "ui_ContactList.h" + +#include "ContactGroupPopupMenu.h" +#include "QtContactListManager.h" +#include "QtContactManager.h" +#include "QtContactPixmap.h" +#include "QtContactTreeMouseFilter.h" +#include "QtTreeViewDelegate.h" + +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include + +const QString QtContactList::DEFAULT_GROUP_NAME = "QUTECOM2006CLISTHIDE"; +const QString QtContactList::STATUS_NOSTATUS_PIXMAP = ":/pics/status/unknown-qutecom.png"; +const QString QtContactList::STATUS_NOSTATUS_SIP_PIXMAP = ":/pics/status/unknown-sip.png"; +const QString QtContactList::STATUS_UNKNOW_PIXMAP = ":/pics/status/unknown.png"; +const QString QtContactList::STATUS_ONLINE_PIXMAP = ":/pics/status/online.png"; +const QString QtContactList::STATUS_OFFLINE_PIXMAP = ":/pics/status/offline.png"; +const QString QtContactList::STATUS_DND_PIXMAP = ":/pics/status/donotdisturb.png"; +const QString QtContactList::STATUS_INVISIBLE_PIXMAP = ":/pics/status/invisible.png"; +const QString QtContactList::STATUS_AWAY_PIXMAP = ":/pics/status/away.png"; +const QString QtContactList::STATUS_WDEAL_PIXMAP = ":/pics/status/wdeal.png"; +const QString QtContactList::STATUS_TESTCALL_PIXMAP = ":/pics/status/testcall.png"; +const QString QtContactList::STATUS_GROUP_OPEN_PIXMAP = ":/pics/group_open.png"; +const QString QtContactList::STATUS_GROUP_CLOSE_PIXMAP = ":/pics/group_close.png"; + +static inline QPixmap scalePixmap(const QString name) { + return QPixmap(name).scaled(QSize(16, 16), Qt::KeepAspectRatio, Qt::SmoothTransformation); +} + +QtContactList::QtContactList(CContactList & cContactList, CQuteCom & cQuteCom) + : QObject(NULL), + _cContactList(cContactList), + _cQuteCom(cQuteCom) { + + _waitingForModel = false; + + _contactListWidget = new QWidget(NULL); + + _ui = new Ui::ContactList(); + _ui->setupUi(_contactListWidget); + +//#if defined(OS_MACOSX) +// _contactListWidget->layout()->setMargin(10); +//#endif + + //treeWidget + _ui->treeWidget->setAcceptDrops(true); + _ui->treeWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); + _ui->treeWidget->setProperty("showDropIndicator", QVariant(true)); + _ui->treeWidget->setDragEnabled(true); + _ui->treeWidget->setAlternatingRowColors(false); + _ui->treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); + _ui->treeWidget->setSelectionBehavior(QAbstractItemView::SelectItems); + _ui->treeWidget->setIndentation(0); + _ui->treeWidget->setRootIsDecorated(false); + _ui->treeWidget->sortByColumn(1,Qt::AscendingOrder); + _ui->treeWidget->setColumnHidden(1,true); + + //icons + QtContactPixmap * spx = QtContactPixmap::getInstance(); + spx->setPixmap(QtContactPixmap::ContactUnknown, scalePixmap(STATUS_UNKNOW_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactNoStatus, scalePixmap(STATUS_NOSTATUS_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactNoStatusSIP, scalePixmap(STATUS_NOSTATUS_SIP_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactOnline, scalePixmap(STATUS_ONLINE_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactOffline, scalePixmap(STATUS_OFFLINE_PIXMAP )); + spx->setPixmap(QtContactPixmap::ContactDND, scalePixmap(STATUS_DND_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactInvisible, scalePixmap(STATUS_INVISIBLE_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactAway, scalePixmap(STATUS_AWAY_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactWDeal, scalePixmap(STATUS_WDEAL_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactTestCall, scalePixmap(STATUS_TESTCALL_PIXMAP)); + + //Group icons + spx->setPixmap(QtContactPixmap::ContactGroupOpen, QPixmap(STATUS_GROUP_OPEN_PIXMAP)); + spx->setPixmap(QtContactPixmap::ContactGroupClose, QPixmap(STATUS_GROUP_CLOSE_PIXMAP)); + + _contactManager = new QtContactManager(*_cQuteCom.getCUserProfileHandler().getCUserProfile(), + _cQuteCom, *this, _ui->treeWidget, _ui->treeWidget); + + QtContactTreeMouseFilter * qtContactTreeMouseFilter = + new QtContactTreeMouseFilter(_cContactList, _ui->treeWidget, _ui->treeWidget); + SAFE_CONNECT_RECEIVER(qtContactTreeMouseFilter, SIGNAL(mouseClicked(Qt::MouseButton)), + _contactManager, SLOT(setMouseButton(Qt::MouseButton))); + SAFE_CONNECT(qtContactTreeMouseFilter, SIGNAL(mergeContacts(QString, QString)), + SLOT(mergeContactsSlot(QString, QString))); + + QtTreeViewDelegate * delegate = new QtTreeViewDelegate(_cQuteCom, + _contactManager, _ui->treeWidget); + delegate->setParent(_ui->treeWidget->viewport()); + + _ui->treeWidget->setItemDelegate(delegate); + _ui->treeWidget->setUniformRowHeights(false); + _ui->treeWidget->header()->hide(); + + //Popup Menus + _contactGroupPopupMenu = new ContactGroupPopupMenu(_cContactList, _ui->treeWidget); + SAFE_CONNECT(_contactManager, SIGNAL(groupRightClicked(const QString &)), + SLOT(groupRightClickedSlot(const QString &))); + + QtQuteCom * qtQuteCom = (QtQuteCom *) _cQuteCom.getPresentation(); + qtQuteCom->setQtContactList(this); + _ui->treeWidget->viewport()->setFocus(); + + initContent(); +} + +QtContactList::~QtContactList() { + QtContactListManager::getInstance()->clear(); + OWSAFE_DELETE(_contactListWidget); + OWSAFE_DELETE(_ui); +} + +void QtContactList::initContent() { + StringList contacts = _cContactList.getContactIds(); + StringList::const_iterator it; + + for (it = contacts.begin(); it != contacts.end(); ++it) { + contactAddedEvent(*it); + } +} + +void QtContactList::updatePresentation() { + _contactManager->userStateChanged(); + _ui->treeWidget->viewport()->update(); +} + +void QtContactList::contactGroupAddedEvent(const std::string & groupId) { + QString tmp = QString::fromUtf8(groupId.c_str()); + if (_contactManager->groupsAreHidden()) { + tmp = DEFAULT_GROUP_NAME; + } + addGroup(tmp); +} + +void QtContactList::contactGroupRemovedEvent(const std::string & groupId) { + QList list = _ui->treeWidget->findItems(QString::fromUtf8(groupId.c_str()), Qt::MatchExactly); + if (!list.isEmpty()) { + _ui->treeWidget->takeTopLevelItem(_ui->treeWidget->indexOfTopLevelItem(list[0])); + } +} + +void QtContactList::contactGroupRenamedEvent(const std::string & groupId) { + updatePresentation(); +} + +void QtContactList::contactAddedEvent(const std::string & contactId) { + _contactManager->updateContact(contactId); +} + +void QtContactList::contactRemovedEvent(const std::string & contactId) { + _contactManager->removeContact(QString::fromUtf8(contactId.c_str())); + updatePresentation(); + _waitingForModel = false; +} + +void QtContactList::contactMovedEvent(const std::string & dstGroupId, + const std::string & srcGroupId, const std::string & contactId) { + + _contactManager->moveContact(dstGroupId, srcGroupId, contactId); +} + +void QtContactList::contactChangedEvent(const std::string & contactId) { + _contactManager->updateContact(contactId); + contactChangedEventSignal(QString::fromUtf8(contactId.c_str())); +} + +void QtContactList::addGroup(QString contactGroupId) { + QList list; + + list = _ui->treeWidget->findItems(contactGroupId, Qt::MatchExactly); + if (list.isEmpty()) + { + bool group_has_contact = false; + std::list contacts = _cContactList.getContactList().getContacts(); + for (std::list::iterator it = contacts.begin();it != contacts.end() ; it++ ) + { + if ( (*it).getGroupId() == std::string(contactGroupId.toUtf8())) + { + group_has_contact = true; + break; + } + } + + if(group_has_contact) + { + QTreeWidgetItem * group = new QTreeWidgetItem(_ui->treeWidget); + group->setText(0, contactGroupId); + group->setText(1, QString::fromUtf8(_cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(std::string(contactGroupId.toUtf8())).c_str())); + _ui->treeWidget->setItemExpanded(group, true); + } + } +} + +CContactList & QtContactList::getCContactList() const { + return _cContactList; +} + +void QtContactList::groupRightClickedSlot(const QString & groupId) { + _contactGroupPopupMenu->showMenu(groupId); +} + +void QtContactList::mergeContactsSlot(QString dstContact, QString srcContact) { + if (!_waitingForModel) { + _waitingForModel = true; + + ContactProfile dstContactProfile = _cContactList.getContactProfile(std::string(dstContact.toUtf8())); + ContactProfile srcContactProfile = _cContactList.getContactProfile(std::string(srcContact.toUtf8())); + if (QMessageBox::question(_contactListWidget, + tr("@product@ - Merge Contacts"), + tr("Merge %1 with %2?") + .arg(QString::fromUtf8(dstContactProfile.getDisplayName().c_str())) + .arg(QString::fromUtf8(srcContactProfile.getDisplayName().c_str())), + tr("&Yes"), tr("&No"), + QString(), 0, 1) == 0) { + _cContactList.merge(std::string(dstContact.toUtf8()), std::string(srcContact.toUtf8())); + } else { + _waitingForModel = false; + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTLIST_H +#define OWQTCONTACTLIST_H + +#include + +#include +#include + +class CContactList; +class Contact; +class ContactPopupMenu; +class ContactGroupPopupMenu; +class CQuteCom; +class QtContactManager; + +class QTreeWidgetItem; +namespace Ui { class ContactList; } + +/** + * Qt Presentation component for ContactList. + * + * @author Tanguy Krotoff + * @author Philippe Bernery + */ +class QtContactList : public QObject, public PContactList { + Q_OBJECT +public: + + static const QString DEFAULT_GROUP_NAME; + static const QString STATUS_UNKNOW_PIXMAP; + static const QString STATUS_NOSTATUS_PIXMAP; + static const QString STATUS_NOSTATUS_SIP_PIXMAP; + static const QString STATUS_ONLINE_PIXMAP; + static const QString STATUS_OFFLINE_PIXMAP; + static const QString STATUS_DND_PIXMAP; + static const QString STATUS_INVISIBLE_PIXMAP; + static const QString STATUS_AWAY_PIXMAP; + static const QString STATUS_WDEAL_PIXMAP; + static const QString STATUS_TESTCALL_PIXMAP; + static const QString STATUS_CONTACT_IM_PIXMAP; + static const QString STATUS_CONTACT_CALL_PIXMAP; + static const QString STATUS_CONTACT_VIDEO_PIXMAP; + static const QString STATUS_GROUP_OPEN_PIXMAP; + static const QString STATUS_GROUP_CLOSE_PIXMAP; + + QtContactList(CContactList & cContactList, CQuteCom & cWenghoPhone); + + virtual ~QtContactList(); + + QWidget * getWidget() const { + return _contactListWidget; + } + + QtContactManager * getContactManager() const { + return _contactManager; + } + + void updatePresentation(); + + void contactGroupAddedEvent(const std::string & groupId); + + void contactGroupRemovedEvent(const std::string & groupId); + + void contactGroupRenamedEvent(const std::string & groupId); + + void contactAddedEvent(const std::string & contactId); + + void contactRemovedEvent(const std::string & contactId); + + void contactMovedEvent(const std::string & dstGroupId, + const std::string & srcGroupId, const std::string & contactId); + + void contactChangedEvent(const std::string & contactId); + + CContactList & getCContactList() const; + +Q_SIGNALS: + + void contactChangedEventSignal(QString contactId); + +private Q_SLOTS: + + void groupRightClickedSlot(const QString & groupName); + + void mergeContactsSlot(QString dstContact, QString srcContact); + +private: + + /** + * Initializes the Content of the QtContactList. + */ + void initContent(); + + void addGroup(QString contactGroupId); + + QtContactManager * _contactManager; + + CContactList & _cContactList; + + Ui::ContactList * _ui; + + QWidget * _contactListWidget; + + ContactPopupMenu * _contactPopupMenu; + + ContactGroupPopupMenu * _contactGroupPopupMenu; + + /** True when model is doing some things on contacts. */ + bool _waitingForModel; + + CQuteCom & _cQuteCom; +}; + +#endif //OWQTCONTACTLIST_H + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,303 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactListManager.h" + +#include + +#include + +QtContactListManager * QtContactListManager::_instance = NULL; + +QtContactListManager * QtContactListManager::getInstance() { + if (!_instance) { + _instance = new QtContactListManager; + } + return _instance; +} + +QtContactListManager::QtContactListManager() { + _mutex = new QMutex(QMutex::Recursive); +} + +QtContactListManager::~QtContactListManager() { + delete _mutex; +} + +void QtContactListManager::paintContact(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) { + QMutexLocker locker(_mutex); + QtContact * qtContact; + if (contains(index.data().toString())) { + qtContact = _contactList[index.data().toString()]; + qtContact->paint(painter, option); + } +} + +void QtContactListManager::addContact(QtContact * qtContact) { + QMutexLocker locker(_mutex); + if (qtContact) { + _contactList[qtContact->getId()] = qtContact; + } +} + +void QtContactListManager::removeContact(QtContact * qtContact) { + QMutexLocker locker(_mutex); + if (qtContact) { + _contactList.remove(qtContact->getId()); + delete qtContact; + } +} + +void QtContactListManager::mouseOn(const QString & contactId) { + QMutexLocker locker(_mutex); + QtContact * qtContact; + if (contains(contactId)) { + qtContact = _contactList[contactId]; + if (qtContact) { + qtContact->setMouseOn(true); + } + qtContact = _contactList[_lastMouseOn]; + if (qtContact) { + qtContact->setMouseOn(false); + } + _lastMouseOn = contactId; + } +} + +QtContact * QtContactListManager::getContact(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]; + } + return NULL; +} + +QString QtContactListManager::getPreferredNumber(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getPreferredNumber(); + } + return QString::null; +} + +QString QtContactListManager::getMobilePhone(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getMobilePhone(); + } + return QString::null; +} + +QString QtContactListManager::getHomePhone(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getHomePhone(); + } + return QString::null; +} + +QString QtContactListManager::getWorkPhone(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getHomePhone(); + } + return QString::null; +} + +QString QtContactListManager::getWebsite(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getWebsite(); + } + return QString::null; +} + +bool QtContactListManager::contains(const QString & contactId) const { + QMutexLocker locker(_mutex); + return _contactList.contains(contactId); +} + +void QtContactListManager::contactUpdated(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + _contactList[contactId]->contactUpdated(); + } +} + +QString QtContactListManager::getFirstFreePhoneNumber(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getFirstFreePhoneNumber(); + } + return QString::null; +} + +QString QtContactListManager::getQuteComNumber(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getQuteComNumber(); + } + return QString::null; +} + +bool QtContactListManager::hasIM(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->hasIM(); + } + return false; +} + +bool QtContactListManager::hasFileTransfer(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->hasFileTransfer(); + } + return false; +} + +bool QtContactListManager::hasCall(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->hasCall(); + } + return false; +} + +bool QtContactListManager::hasVideo(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->hasVideo(); + } + return false; +} + +bool QtContactListManager::hasPhoneNumber(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->hasPhoneNumber(); + } + return false; +} + +void QtContactListManager::setButton(const QString & contactId, const Qt::MouseButton button) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + _contactList[contactId]->setButton(button); + } +} + +Qt::MouseButton QtContactListManager::getButton(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getButton(); + } + return Qt::NoButton; +} + +void QtContactListManager::setOpenStatus(const QString & contactId, bool value) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + _contactList[contactId]->setOpenStatus(value); + } +} + +int QtContactListManager::getHeight(const QString & contactId) const { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + return _contactList[contactId]->getHeight(); + } + else { + return 0; + } +} + +void QtContactListManager::resetMouseStatus() { + QMutexLocker locker(_mutex); + QHash ::iterator it; + for (it = _contactList.begin(); it != _contactList.end(); it++) { + QtContact * qtContact = it.value(); + if (qtContact) { + qtContact->setButton(Qt::NoButton); + } + } +} + +void QtContactListManager::startChat(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->startChat(); + locker.relock(); + } +} + +void QtContactListManager::startSMS(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->startSMS(); + locker.relock(); + } +} + +void QtContactListManager::startCall(const QString & contactId, const QString & number) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->startCall(number); + locker.relock(); + } +} + +void QtContactListManager::startCall(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->startCall(); + locker.relock(); + } +} + +void QtContactListManager::startFreeCall(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->startFreeCall(); + locker.relock(); + } +} + +void QtContactListManager::sendFile(const QString & contactId) { + QMutexLocker locker(_mutex); + if (contains(contactId)) { + locker.unlock(); + _contactList[contactId]->sendFile(); + locker.relock(); + } +} + +void QtContactListManager::clear() { + QMutexLocker locker(_mutex); + QHash ::iterator it; + for (it = _contactList.begin(); it != _contactList.end(); it++) { + delete((*it)); + } + _contactList.clear(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactListManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,138 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCONTACTLISTMANAGER_H +#define OWCONTACTLISTMANAGER_H + +#include "QtContact.h" +#include "QtContactPixmap.h" + +#include + +class CContact; +class QMutex; +class QTreeWidget; + +/** + * QtContact storage class for fast lookup + * + * @author Mr K. + */ +class QtContactListManager { +public: + + static QtContactListManager * getInstance(); + + ~QtContactListManager(); + + void addContact(QtContact * qtContact); + + void removeContact(QtContact * qtContact); + + void paintContact(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index); + + void mouseOn(const QString & contactId); + + bool contains(const QString & contactId) const; + + void contactUpdated(const QString & contactId); + + bool hasIM(const QString & contactId) const; + + bool hasCall(const QString & contactId) const; + + bool hasVideo(const QString & contactId) const; + + bool hasPhoneNumber(const QString & contactId) const; + + bool hasFileTransfer(const QString & contactId) const; + + QtContact * getContact(const QString & contactId) const; + + QString getPreferredNumber(const QString & contactId) const; + + QString getMobilePhone(const QString & contactId) const; + + QString getHomePhone(const QString & contactId) const; + + QString getWorkPhone(const QString & contactId) const; + + QString getWebsite(const QString & contactId) const; + + void setButton(const QString & contactId, const Qt::MouseButton button); + + void setOpenStatus(const QString & contactId, bool value); + + Qt::MouseButton getButton(const QString & contactId) const; + + int getHeight(const QString & contactId) const; + + QString getFirstFreePhoneNumber(const QString & contactId) const; + + QString getQuteComNumber(const QString & contactId) const; + + QTreeWidget * getTreeWidget() const { return _tree; } + + void setTreeWidget(QTreeWidget * tree) { _tree = tree; } + + void resetMouseStatus(); + + void startChat(const QString & contactId); + + void startSMS(const QString & contactId); + + void startCall(const QString & contactId, const QString & number); + + void startCall(const QString & contactId); + + void sendFile(const QString & contactId); + + void clear(); + + /** + * Will start a call with a free phone number. + */ + void startFreeCall(const QString & contactId); + +private: + + QtContactListManager(); + + QtContactListManager(const QtContactListManager & other) + : _tree(other._tree), + _contactList(other._contactList) { } + + QtContactListManager & operator=(const QtContactListManager & other) { + _tree = other._tree; + _contactList = other._contactList; + return *this; + } + + QTreeWidget * _tree; + + QHash _contactList; + + static QtContactListManager * _instance; + + QString _lastMouseOn; + + mutable QMutex * _mutex; +}; + +#endif //OWCONTACTLISTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,879 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactManager.h" + +#include "QtContactWidget.h" +#include "QtContactList.h" +#include "QtContactPixmap.h" +#include "QtContactInfo.h" +#include "QtContactListManager.h" +#include "QtContactTreeKeyFilter.h" +#include "QtConferenceAction.h" + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include + +#include + +QtContactManager::QtContactManager(CUserProfile & cUserProfile, CQuteCom & cQuteCom, + QtContactList & qtContactList, QObject * parent, QTreeWidget * target) + : QObject(parent), + _cQuteCom(cQuteCom), + _cUserProfile(cUserProfile), + _qtContactList(qtContactList) { + + LANGUAGE_CHANGE(this); + languageChanged(); + + _tree = target; + _previous = NULL; + _lastClicked = NULL; + _sortContacts = true; + _menu = NULL; + _timerId = -1; + _sortTimerId = -1; + _showTimerId = -1; + _waitForDoubleClick = false; + _canSort = true; + _wantSort = false; + _canShow = true; + _wantShow = false; + + QtContactListManager::getInstance()->setTreeWidget(target); + target->setMouseTracking(true); + QtContactTreeKeyFilter * keyFilter = new QtContactTreeKeyFilter(this, target); + + SAFE_CONNECT(target, SIGNAL(itemSelectionChanged()), SLOT(treeViewSelectionChanged())); + SAFE_CONNECT(target, SIGNAL(itemClicked(QTreeWidgetItem *, int)), SLOT(itemClicked(QTreeWidgetItem *, int))); + + SAFE_CONNECT(keyFilter, SIGNAL(openItem(QTreeWidgetItem *)), SLOT(openContactInfo(QTreeWidgetItem *))); + SAFE_CONNECT(keyFilter, SIGNAL(closeItem(QTreeWidgetItem *)), SLOT(closeContactInfo())); + SAFE_CONNECT(keyFilter, SIGNAL(deleteItem(QTreeWidgetItem *)), SLOT(deleteContact())); + SAFE_CONNECT(keyFilter, SIGNAL(enterPressed(QTreeWidgetItem *)),SLOT(defaultAction(QTreeWidgetItem *))); + + QtQuteCom * qtQuteCom = (QtQuteCom *) _cQuteCom.getPresentation(); + + SAFE_CONNECT_RECEIVER(this, SIGNAL(inviteToConferenceClicked(QString, PhoneCall *)), + qtQuteCom, SLOT(addToConference(QString, PhoneCall *))); +} + +void QtContactManager::startSMS() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + ul->startSMS(item->text(0)); + } +} + +void QtContactManager::startChat() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + ul->startChat(item->text(0)); + } +} + +void QtContactManager::sendFile() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + ul->sendFile(item->text(0)); + } +} + +void QtContactManager::editContact() { + QTreeWidgetItem * item = _tree->currentItem(); + if (item) { + editContact(item->text(0)); + } +} + +void QtContactManager::editContact(QString contactId) { + ContactProfile contactProfile = _cUserProfile.getCContactList().getContactProfile(std::string(contactId.toUtf8())); + QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _tree, tr("Edit Contact")); + if (qtProfileDetails.show()) { + _cUserProfile.getCContactList().updateContact(contactProfile); + } +} + +void QtContactManager::deleteContact() { + QTreeWidgetItem * item = _tree->currentItem(); + if (!item) { + return; + } + + if (QMessageBox::question(_tree, + tr("Delete contact"), + tr("Do you really want to delete this contact?"), + tr("&Yes"), + tr("&No"), + QString(), + 0, 1) == 0) { + + _cUserProfile.getCContactList().removeContact(std::string(item->text(0).toUtf8())); + } +} + +void QtContactManager::treeViewSelectionChanged() { + if (_button == Qt::NoButton) { + closeContactInfo(); + } +} + +void QtContactManager::closeContactInfo() { + if (_previous) { + if (!_previous->parent()) { + //It's a group + return; + } + + _tree->closePersistentEditor(_previous); + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->setOpenStatus(_previous->text(0), false); + _previous->setSizeHint(0, QSize(-1, ul->getHeight(_previous->text(0)))); + _previous = NULL; + + _tree->viewport()->update(); + _tree->doItemsLayout(); + } +} + +void QtContactManager::openContactInfo(QTreeWidgetItem * item) { + if (_previous) { + closeContactInfo(); + } + + if (!item) { + return; + } + + if (item->parent()) { + + QtContactListManager * ul = QtContactListManager::getInstance(); + + //Does not expand if contact is part of the WDeal contact group + QtContact * qtContact = ul->getContact(item->text(0)); + if (qtContact->getGroupName() == "WDeal") { + return; + } + /// + + _previous = item; + ul->setOpenStatus(_previous->text(0), true); + item->setSizeHint(0, QSize(-1, ul->getHeight(item->text(0)))); + _tree->openPersistentEditor(item); + _tree->viewport()->update(); + _tree->doItemsLayout(); + _tree->scrollToItem (item); + } +} + +void QtContactManager::itemClicked(QTreeWidgetItem * item, int) { + if ((_lastClicked == item) && (_waitForDoubleClick)) { + defaultAction(item); + _button = Qt::NoButton; + return; + } + + _waitForDoubleClick = true; + if (_timerId != -1) { + killTimer(_timerId); + } + _timerId = startTimer(qApp->doubleClickInterval ()); + _lastClicked = item; + QRect widgetSize = _tree->rect(); + QPoint mousepos = _tree->mapFromGlobal(QCursor::pos()); + + if (!item->parent()) { + groupClicked(item); + return; + } + + QtContactListManager * ul = QtContactListManager::getInstance(); + if (ul->getButton(item->text(0)) == Qt::RightButton) { + itemRightClicked(item); + return; + } + + if (item->parent()) { + if (_previous == item) { + closeContactInfo(); + } else { + openContactInfo(item); + } + } + + _tree->viewport()->update(); + _button = Qt::NoButton; +} + +void QtContactManager::itemRightClicked(QTreeWidgetItem * item) { + OWSAFE_DELETE(_menu); + _menu = createMenu(); + _menu->popup(QCursor::pos()); + + //clearSelection () is bugged ! We have to clear the selection ourself + clearTreeSelection(); + _tree->setItemSelected(item, true); + _button = Qt::NoButton; +} + +void QtContactManager::groupClicked(QTreeWidgetItem * item) { + if (_button == Qt::RightButton) { + groupRightClicked(item->text(0)); + return; + } + + if (_tree->isItemExpanded(item)) { + _tree->collapseItem(item); + } else { + _tree->expandItem(item); + } +} + +void QtContactManager::clearTreeSelection() { + QList selectedList = _tree->selectedItems(); + QList ::iterator it; + for (it = selectedList.begin(); it != selectedList.end(); it ++) { + _tree->setItemSelected((*it), false); + } +} + +void QtContactManager::defaultAction(QTreeWidgetItem * item) { + _button = Qt::NoButton; + if (!item) { + return; + } + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QtContactListManager * ul = QtContactListManager::getInstance(); + QString userId = item->text(0); + ContactProfile contactProfile = _qtContactList.getCContactList().getContactProfile(std::string(userId.toUtf8())); + + if (config.getGeneralClickStartChat() ) + { + if(contactProfile.getPreferredIMContact()) + { + ul->startChat(userId); + return; + } + } + + // Start free call by default + if (contactProfile.hasFreeCall() || contactProfile.hasVoiceMail()) + { + ul->startFreeCall(userId); + return; + } + else if (config.getGeneralClickCallCellPhone() && contactProfile.hasCall()) + { + ul->startCall(userId); + return; + } + + if(contactProfile.getPreferredIMContact()) + { + ul->startChat(userId); + return; + } +} + +void QtContactManager::safeUserStateChanged() { + OWSAFE_DELETE(_menu); + redrawContacts(); +} + +void QtContactManager::userStateChanged() { + safeUserStateChanged(); +} + +void QtContactManager::sortContacts(bool bypassTimer) { + safeSortContacts(bypassTimer); +} + +void QtContactManager::safeSortContacts(bool bypassTimer) { + if (!_sortContacts) { + return; + } + + if (!bypassTimer) { + if (_canSort) { + _canSort = false; + if (_sortTimerId != -1) { + killTimer(_sortTimerId); + } + _sortTimerId = startTimer(1000); + _wantSort = false; + } else { + _wantSort = true; + return; + } + } + + int topCount = _tree->topLevelItemCount(); + for (int topIndex = 0; topIndex < topCount; ++topIndex) { + QTreeWidgetItem* groupItem = _tree->topLevelItem(topIndex); + int count = groupItem->childCount(); + QtContactInfoList contactInfoList; + for (int index = 0; index < count; ++index) { + QTreeWidgetItem* item = groupItem->child(index); + QtContactInfo info = QtContactInfo(item, groupItem, item->text(0), index); + contactInfoList.append(info); + } + + qSort(contactInfoList); + + Q_FOREACH(QtContactInfo info, contactInfoList) { + QTreeWidgetItem* item = info.getItem(); + groupItem->takeChild(groupItem->indexOfChild(item)); + groupItem->insertChild(groupItem->childCount(), item); + } + } +} + +bool QtContactManager::canShowUser(const ContactProfile * cprofile) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (config.getShowOfflineContacts()) { + return true; + } + + // Enforce rules from http://dev.openqutecom.org/trac/openqutecom/trac.cgi/wiki/ContactPresenceGrid + // version 9 + EnumPresenceState::PresenceState presenceState = cprofile->getPresenceState(); + if (presenceState == EnumPresenceState::PresenceStateOffline + || presenceState == EnumPresenceState::PresenceStateUnavailable + || presenceState == EnumPresenceState::PresenceStateUnknown) + { + QtContact qtContact(cprofile, _cQuteCom, 0); + + QtContactPixmap::ContactPixmap pixmap = qtContact.getStatus(); + switch (pixmap) { + case QtContactPixmap::ContactNoStatusSIP: + case QtContactPixmap::ContactNoStatus: + case QtContactPixmap::ContactWDeal: + case QtContactPixmap::ContactTestCall: + return true; + case QtContactPixmap::ContactUnknown: + case QtContactPixmap::ContactOffline: + return false; + default: + LOG_WARN("Contact status for user '%s' should not be %d (presenceState=%s)", + cprofile->getDisplayName().c_str(), + pixmap, + EnumPresenceState::toString(presenceState).c_str()); + return true; + } + } + return true; +} + +void QtContactManager::redrawContacts() { + if (_canShow) { + _canShow = false; + if (_showTimerId != -1) { + killTimer(_showTimerId); + } + _showTimerId = startTimer(500); + _wantShow = false; + } else { + _wantShow = true; + return; + } + + ContactProfile cprofile; + QtContactListManager * ul = QtContactListManager::getInstance(); + std::vector contactIds = _qtContactList.getCContactList().getContactIds(); + std::vector::iterator it; + //First, remove all item from the treeview and all users from userlist + _tree->clear(); + ul->clear(); + _previous = 0; + + for (it = contactIds.begin(); it != contactIds.end(); it++) { + cprofile = _qtContactList.getCContactList().getContactProfile((*it)); + if (canShowUser(&cprofile)) { + //Create new group if needed + QTreeWidgetItem * group = createGroupItem(QString::fromUtf8(cprofile.getGroupId().c_str())); + + //We have the group, now add users to the group + QTreeWidgetItem * newContact = NULL; + QtContact * qtContact = NULL; + QString contactName; + newContact = new QTreeWidgetItem(group); + newContact->setText(0, QString::fromUtf8((*it).c_str())); + newContact->setFlags(newContact->flags() | Qt::ItemIsEditable); + qtContact = new QtContact((*it), _cQuteCom, _tree); + ul->addContact(qtContact); + } + } + + safeSortContacts(true); +} + +QMenu * QtContactManager::createConferenceMenu() { + PhoneLine * phoneLine = dynamic_cast + (_cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine()); + QMenu * menu = new QMenu(_trStringInviteToConference); + if (phoneLine) { + PhoneLine::PhoneCallList phoneCallList = phoneLine->getPhoneCallList(); + PhoneLine::PhoneCallList::iterator it; + for (it = phoneCallList.begin(); it != phoneCallList.end(); it++) { + if ((*it)->getState() != EnumPhoneCallState::PhoneCallStateClosed) { + QtConferenceAction * action = new + QtConferenceAction(QString::fromUtf8((*it)->getPeerSipAddress().getUserName().c_str()), menu); + action->setPhoneCall((*it)); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(inviteToConference())); + menu->addAction(action); + } + } + } + return menu; +} + +void QtContactManager::inviteToConference() { + QObject * source = sender(); + if (source) { + QtConferenceAction * action = dynamic_cast < QtConferenceAction * > (source); + QtContactListManager * ul = QtContactListManager::getInstance(); + //The current selected item + QTreeWidgetItem * item = _tree->currentItem(); + QString contactId = item->text(0); + if (ul->contains(contactId)) { + QString phone = ul->getPreferredNumber(contactId); + inviteToConferenceClicked(phone, action->getPhoneCall()); + } + } else { + LOG_FATAL("don't call this function directly"); + } +} + +QMenu * QtContactManager::createMenu() { + QAction * action = NULL; + QString contactId = _tree->currentItem()->text(0); + QMenu * menu = new QMenu(dynamic_cast (parent())); + QtContactListManager * ul = QtContactListManager::getInstance(); + + //Call menu + QMenu * callMenu = menu->addMenu(QIcon(":/pics/actions/accept-phone.png"), _trStringCall); + + if (!ul->getFirstFreePhoneNumber(contactId).isEmpty()) { + action = callMenu->addAction( _trStringFreePhone); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startFreeCall())); + } + + if (!ul->getMobilePhone(contactId).isEmpty()) { + action = callMenu->addAction( _trStringMobilePhone); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startMobileCall())); + } + + if (!ul->getHomePhone(contactId).isEmpty()) { + action = callMenu->addAction(_trStringHomePhone); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startHomeCall())); + } + + /* + if (!ul->getWorkPhone(contactId).isEmpty()) { + action = callMenu->addAction(_trStringWorkPhone); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startWorkCall())); + } + */ + + if (!ul->getQuteComNumber(contactId).isEmpty()) { + action = callMenu->addAction(_trStringQuteCom); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startQuteComCall())); + } + + if (!ul->hasPhoneNumber(contactId)) { + callMenu->setEnabled(false); + } + + action = menu->addAction(QIcon(":/pics/actions/chat.png"), _trStringStartChat); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startChat())); + if (!ul->hasIM(contactId)) { + action->setEnabled(false); + } + + action = menu->addAction(QIcon(":/pics/actions/send-sms-16.png"), _trStringSendSMS); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startSMS())); + if (ul->getMobilePhone(contactId).isEmpty()) { + action->setEnabled(false); + } + +#ifdef DISABLE_SMS + action ->setVisible(false); +#endif + + action = menu->addAction(QIcon(":/pics/actions/send_file.png"), _trStringSendFile); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(sendFile())); + if (!ul->hasFileTransfer(contactId)) { + action->setEnabled(false); + } +#ifdef DISABLE_FILETRANSFER + action ->setVisible(false); +#endif + + //FIXME Desactivated for the moment due to a crash + //menu->addMenu(createConferenceMenu()); + + menu->addSeparator(); + + QString website = ul->getWebsite(contactId); + action = menu->addAction(QIcon(":/pics/contact/home.png"), _trStringWebsite); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(goToWebsite())); + if (website.isEmpty()) { + action->setEnabled(false); + } + + menu->addSeparator(); + + action = menu->addAction(_trStringEditContact); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(editContact())); + + action = menu->addAction(_trStringDeleteContact); + SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(deleteContact())); + + //menu->addSeparator(); + //menu->addAction(_trStringBlockContact); + //menu->addAction(_trStringForwardToCellPhone); + + return menu; +} + +void QtContactManager::startFreeCall() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + qtContact->startCall(qtContact->getFirstFreePhoneNumber()); + } +} + +void QtContactManager::startMobileCall() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + qtContact->startCall(qtContact->getMobilePhone()); + } +} + +void QtContactManager::startHomeCall() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + qtContact->startCall(qtContact->getHomePhone()); + } +} + +void QtContactManager::startWorkCall() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + qtContact->startCall(qtContact->getWorkPhone()); + } +} + +void QtContactManager::startQuteComCall() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + qtContact->startCall(qtContact->getQuteComNumber()); + } +} + +void QtContactManager::goToWebsite() { + QtContactListManager * ul = QtContactListManager::getInstance(); + QTreeWidgetItem * item = _tree->currentItem(); + if (ul && item) { + QtContact * qtContact = ul->getContact(item->text(0)); + QString website = qtContact->getWebsite(); + if (!website.contains("http://")) { + website = "http://" + website; + } + WebBrowser::openUrl(std::string(website.toUtf8())); + } +} + +QTreeWidgetItem* QtContactManager::createGroupItem(const QString & contactGroupId) { + QTreeWidgetItem* item; + QList < QTreeWidgetItem * > list; + if (groupsAreHidden()) { + list = _tree->findItems(QtContactList::DEFAULT_GROUP_NAME, Qt::MatchExactly); + } else { + list =_tree->findItems(contactGroupId, Qt::MatchExactly); + } + //If no group exists, create the group + if (list.isEmpty()) { + item = new QTreeWidgetItem(_tree); + if (groupsAreHidden()) { + item->setText(0, QtContactList::DEFAULT_GROUP_NAME); + } else { + item->setText(0, contactGroupId); + } + item->setText(1, QString::fromUtf8(_cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(std::string(contactGroupId.toUtf8())).c_str())); + _tree->setItemExpanded(item, true); + } else { + item = list[0]; + } + + return item; +} + +void QtContactManager::addContact(const QString & contactId) { + QtContactListManager * ul = QtContactListManager::getInstance(); + QtContact * qtContact = new QtContact(std::string(contactId.toUtf8()), _cQuteCom, _tree); + ul->addContact(qtContact); + + ContactProfile contactProfile = _qtContactList.getCContactList().getContactProfile(std::string(contactId.toUtf8())); + QTreeWidgetItem * groupItem = createGroupItem(QString::fromUtf8(contactProfile.getGroupId().c_str())); + + int contactCount = groupItem->childCount(); + + QString userName = qtContact->getUserName().toUpper(); + + int contactIndex; + for (contactIndex = 0; contactIndex < contactCount; ++contactIndex) { + QTreeWidgetItem * childItem = groupItem->child(contactIndex); + QtContact* childQtContact = ul->getContact(childItem->text(0)); + if (childQtContact->getUserName().toUpper() > userName) { + break; + } + } + + QTreeWidgetItem * item = new QTreeWidgetItem(); + item->setText(0, contactId); + item->setFlags(item->flags() | Qt::ItemIsEditable); + groupItem->insertChild(contactIndex, item); +} + +void QtContactManager::removeContact(const QString & contactId) { + QtContactListManager * ul = QtContactListManager::getInstance(); + + QTreeWidgetItem* contactItem = findContactItem(contactId); + if (!contactItem) { + // Already removed + return; + } + + if (_previous == contactItem) { + _previous = 0; + } + + QTreeWidgetItem* groupItem = contactItem->parent(); + + QtContact* qtContact = ul->getContact(contactId); + if (qtContact) { + ul->removeContact(qtContact); + } else { + LOG_WARN("Could not find contact to remove in QtContactListManager"); + } + delete contactItem; +#if QT_VERSION < 0x40300 + // This is needed on Qt 4.2 and lower to workaround this bug: + // Assuming the list looks like this: + // ( ) A + // ( ) B + // +---+ ... + // | | ... + // +---+ + // + // if 'A' gets hidden, the 'B' line moves up, but its QtContactWidget stays + // were it was. + _tree->doItemsLayout(); +#endif + + if (groupItem->childCount() == 0) { + delete groupItem; + } +} + +void QtContactManager::setMouseButton(Qt::MouseButton button) { + _button = button; +} + +void QtContactManager::moveContact(const std::string & dstGroupId, + const std::string & srcGroupId, const std::string & contactId) { + + LOG_DEBUG("moving contact=" + contactId + + " from=" + srcGroupId + + " to=" + dstGroupId); + + //If groups are hidden, there is nothing to move... + if (groupsAreHidden()) { + return; + } + + //Looking for the contact in the destination group + //If it is inside this group nothing is done + QTreeWidgetItem * group = findGroupItem(QString::fromUtf8(dstGroupId.c_str())); + if (!group) { + return; + } + if (findContactInGroup(group, QString::fromUtf8(contactId.c_str()))) { + return; + } + + removeContact(QString::fromUtf8(contactId.c_str())); + addContact(QString::fromUtf8(contactId.c_str())); +} + +QTreeWidgetItem * QtContactManager::findGroupItem(const QString & groupId) const { + QList < QTreeWidgetItem * > list = _tree->findItems(groupId, Qt::MatchExactly); + if (list.isEmpty()) { + return NULL; + } + + return list[0]; +} + +QTreeWidgetItem * QtContactManager::findContactItem(const QString & contactId) const { + QList < QTreeWidgetItem * > list = _tree->findItems(contactId, Qt::MatchExactly | Qt::MatchRecursive); + if (list.isEmpty()) { + return 0; + } + + return list[0]; +} + +QtContact * QtContactManager::findContactInGroup(const QTreeWidgetItem * group, const QString & contactId) const { + QtContactListManager * ul = QtContactListManager::getInstance(); + + int count = group->childCount(); + for (int i = 0; i < count; i++) { + QtContact * qtContact = ul->getContact(group->child(i)->text(0)); + if (qtContact->getId() == contactId) { + return qtContact; + } + } + + return NULL; +} + +void QtContactManager::timerEvent(QTimerEvent * event) { + if (event->timerId() == _sortTimerId) { + killTimer(_sortTimerId); + _sortTimerId = -1; + _canSort = true; + if (_wantSort) { + safeSortContacts(true); + _wantSort = false; + } + return; + } + + if (event->timerId() == _showTimerId) { + killTimer(_showTimerId); + _showTimerId = -1; + _canShow = true; + if (_wantShow) { + redrawContacts(); + _wantShow = false; + } + return; + } + + if (event->timerId() == _timerId) { + _waitForDoubleClick = false; + killTimer(_timerId); + return; + } + + QObject::timerEvent(event); +} + +bool QtContactManager::groupsAreHidden() const { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + return !config.getShowGroups(); +} + +void QtContactManager::languageChanged() { + _trStringCall = tr("Call"); + _trStringFreePhone = tr("Free call"); + _trStringMobilePhone = tr("Mobile phone"); + _trStringHomePhone = tr("Home phone"); + _trStringWorkPhone = tr("Work phone"); + _trStringQuteCom = tr("@product@"); + _trStringSendSMS = tr("Send SMS"); + _trStringWebsite = tr("Go to website"); + _trStringSendFile = tr("Send file"); + _trStringEditContact = tr("Edit contact"); + _trStringDeleteContact = tr("Delete contact"); + _trStringBlockContact = tr("Block contact"); + _trStringForwardToCellPhone = tr("Forward to mobile phone"); + _trStringStartChat = tr("Start chat"); + _trStringInviteToConference = tr("Invite to conference"); +} + +void QtContactManager::updateContact(const std::string& contactId) { + QtContactListManager * ul = QtContactListManager::getInstance(); + + QTreeWidgetItem* item = findContactItem(QString::fromUtf8(contactId.c_str())); + bool oldVisible = item != 0; + + ContactProfile profile = _qtContactList.getCContactList().getContactProfile(contactId); + bool newVisible = canShowUser(&profile); + + if (oldVisible && !newVisible) { + // Remove + removeContact(QString::fromUtf8(contactId.c_str())); + } else if (!oldVisible && newVisible) { + // Add + addContact(QString::fromUtf8(contactId.c_str())); + } else if (oldVisible && newVisible) { + // Update + ul->contactUpdated(QString::fromUtf8(contactId.c_str())); + + // Repaint only the item. We adjust the rect to avoid repainting + // neighbour items. It does not matter because QtContact::paint repaint + // the whole item, regardless of the area to update. + QRect rect = _tree->visualItemRect(item); + rect.adjust(0, 1, 0, -1); + _tree->viewport()->update(rect); + //// + + QtContactWidget* widget = _tree->findChild(); + if (widget) { + widget->updateButtons(); + widget->update(); + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,229 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTMANAGER_H +#define OWQTCONTACTMANAGER_H + +#include +#include + +class ContactProfile; +class CUserProfile; +class CQuteCom; +class PhoneCall; +class QtContactList; +class QtContactInfo; +class QtContact; + +class QString; +class QTreeWidgetItem; +class QTimerEvent; +class QMenu; +class QTreeWidget; +class QSize; +class QAction; + +/** + * Qt Presentation manager for the ContactList. + * + * @author Philippe Bernery + */ +class QtContactManager : public QObject { + Q_OBJECT +public: + + QtContactManager(CUserProfile & cUserProfile, CQuteCom & cQuteCom, + QtContactList & qtContactList, QObject * parent, QTreeWidget * target); + + /** + * Removes a Contact from the QtContactManager. + * + * @param contactId the Id of the Contact to remove + */ + void removeContact(const QString & contactId); + + /** + * Moves a Contact from one group to another. + * + * @param dstGroupId the Id of the destination group + * @param srcGroupId the Id of the source group + * @param contactId the Id of the Contact to move + */ + void moveContact(const std::string & dstGroupId, + const std::string & srcGroupId, const std::string & contactId); + + /** + * @return true if groups are hidden (not displayed) + */ + bool groupsAreHidden() const; + + void updateContact(const std::string& contactId); + +public Q_SLOTS: + void setMouseButton(Qt::MouseButton button); + + void userStateChanged(); + + void editContact(QString contactId); + +private Q_SLOTS: + + void defaultAction(QTreeWidgetItem * item); + + void deleteContact(); + + void editContact(); + + void inviteToConference(); + + void itemClicked(QTreeWidgetItem * item, int column); + + /** + * Opens the contact panel inside the contact list. + */ + void openContactInfo(QTreeWidgetItem * item); + + /** + * Closes the contact panel inside the contact list. + */ + void closeContactInfo(); + + void redrawContacts(); + + void sortContacts(bool bypassTimer = false); + + void startChat(); + + void sendFile(); + + void startFreeCall(); + + void startHomeCall(); + + void startMobileCall(); + + void startSMS(); + + void startQuteComCall(); + + void startWorkCall(); + + void goToWebsite(); + + void treeViewSelectionChanged(); + + void languageChanged(); + +Q_SIGNALS: + + void groupRightClicked(const QString & groupName); + + void inviteToConferenceClicked(QString phone, PhoneCall * target); + +private: + + typedef QList QtContactInfoList; + + void safeSortContacts(bool bypassTimer); + + void safeUserStateChanged(); + + void clearTreeSelection(); + + void groupClicked(QTreeWidgetItem * item); + + void itemRightClicked(QTreeWidgetItem * item); + + bool canShowUser(const ContactProfile * cprofile); + + QTreeWidgetItem * findGroupItem(const QString & groupId) const; + + QTreeWidgetItem * findContactItem(const QString & contactId) const; + + QtContact * findContactInGroup(const QTreeWidgetItem * group, const QString & contactId) const; + + QTreeWidgetItem* createGroupItem(const QString & contactGroupId); + + void addContact(const QString & contactId); + + QMenu * createConferenceMenu(); + + QMenu * createMenu(); + + void timerEvent(QTimerEvent * event); + + bool _sortContacts; + + QTreeWidget * _tree; + + QTreeWidgetItem * _previous; + + QTreeWidgetItem * _lastClicked; + + QSize * _itemSize; + + QMenu * _menu; + + QAction * _callAction; + + Qt::MouseButton _button; + + int _timerId; + + bool _waitForDoubleClick; + + int _sortTimerId; + + int _showTimerId; + + bool _canSort; + + bool _wantSort; + + bool _canShow; + + bool _wantShow; + + CQuteCom & _cQuteCom; + + CUserProfile & _cUserProfile; + + QtContactList & _qtContactList; + + /** + * Translated strings + */ + QString _trStringCall; + QString _trStringFreePhone; + QString _trStringMobilePhone; + QString _trStringHomePhone; + QString _trStringWorkPhone; + QString _trStringQuteCom; + QString _trStringSendSMS; + QString _trStringWebsite; + QString _trStringSendFile; + QString _trStringEditContact; + QString _trStringDeleteContact; + QString _trStringBlockContact; + QString _trStringForwardToCellPhone; + QString _trStringStartChat; + QString _trStringInviteToConference; +}; + +#endif //OWQTCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,233 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactMenu.h" + +#include +#include +#include + +#include +#include + +#include + +#include + +void QtContactMenu::populateMobilePhoneMenu(QMenu * menu, CQuteCom & cQuteCom) { + + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getCompleteName().c_str()); + + if (!tmpContactProfile.getMobilePhone().empty()) { + QString mobilePhone = QString::fromUtf8(tmpContactProfile.getMobilePhone().c_str()); + //Call mobile action + QAction * tmpAction; + if (displayName == " ") { + tmpAction = menu->addAction(mobilePhone); + } else { + tmpAction = menu->addAction(displayName + ": " + mobilePhone); + } + tmpAction->setData(QVariant(mobilePhone)); + } + } + } +} + +void QtContactMenu::populateQuteComCallMenu(QMenu * menu, CQuteCom & cQuteCom) { + + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); + + if (tmpContactProfile.hasAvailableQuteComId() && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateOffline && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnknown && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnavailable) { + + QString freePhoneNumber = + QString::fromUtf8(tmpContactProfile.getFirstAvailableQuteComIMContact().getDisplayContactId().c_str()); + QAction * tmpAction; + tmpAction = menu->addAction(displayName); + tmpAction->setData(QVariant(freePhoneNumber)); + EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); + setPresenceIcon(tmpAction, presenceState); + } + } + } +} + +void QtContactMenu::populateSipCallMenu(QMenu * menu, CQuteCom & cQuteCom) { + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); + + if (tmpContactProfile.hasAvailableSIPNumber() ) { + + QString freePhoneNumber = QString::fromUtf8(tmpContactProfile.getFirstFreePhoneNumber().c_str()); + QAction * tmpAction; + tmpAction = menu->addAction(displayName); + tmpAction->setData(QVariant(freePhoneNumber)); + EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); + //setPresenceIcon(tmpAction, presenceState); + + if (presenceState == EnumPresenceState::PresenceStateUnknown) { + setPresenceIcon(tmpAction, QIcon(":/pics/status/unknown-sip.png")); + } else { + setPresenceIcon(tmpAction, presenceState); + } + } + } + } +} + +void QtContactMenu::populateHomePhoneMenu(QMenu * menu, CQuteCom & cQuteCom) { + + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getCompleteName().c_str()); + + if (!tmpContactProfile.getHomePhone().empty()) { + QString homePhone = QString::fromUtf8(tmpContactProfile.getHomePhone().c_str()); + QAction * tmpAction; + if (displayName == " ") { + tmpAction = menu->addAction(homePhone); + } else { + tmpAction = menu->addAction(displayName + ": " + homePhone); + } + tmpAction->setData(QVariant(homePhone)); + } + } + } +} + +void QtContactMenu::populateChatMenu(QMenu * menu, CQuteCom & cQuteCom) { + + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); + + if (tmpContactProfile.getPreferredIMContact() != NULL && + tmpContactProfile.hasIM()) { + + QAction * tmpAction = menu->addAction(displayName); + tmpAction->setData(QVariant(QString::fromUtf8((*it).c_str()))); + EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); + setPresenceIcon(tmpAction, presenceState); + } + } + } +} + +void QtContactMenu::setPresenceIcon(QAction * action, QIcon icon) { + action->setIcon(icon); +} + +void QtContactMenu::setPresenceIcon(QAction * action, EnumPresenceState::PresenceState presenceState) { + + switch (presenceState) { + case EnumPresenceState::PresenceStateOnline: + action->setIcon(QIcon(":/pics/status/online.png")); + break; + case EnumPresenceState::PresenceStateOffline: + action->setIcon(QIcon(":/pics/status/offline.png")); + break; + case EnumPresenceState::PresenceStateInvisible: + action->setIcon(QIcon(":/pics/status/invisible.png")); + break; + case EnumPresenceState::PresenceStateAway: + action->setIcon(QIcon(":/pics/status/away.png")); + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + action->setIcon(QIcon(":/pics/status/donotdisturb.png")); + break; + case EnumPresenceState::PresenceStateUnknown: + action->setIcon(QIcon(":/pics/status/unknown.png")); + break; + case EnumPresenceState::PresenceStateUnavailable: + action->setIcon(QIcon(":/pics/status/unknown-qutecom.png")); + break; + default: + LOG_FATAL("unknown presenceState=" + String::fromNumber(presenceState)); + break; + } +} + +void QtContactMenu::populateQuteComUsersContactId(QMenu * menu, CQuteCom & cQuteCom) { + + CUserProfile * currentCUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (currentCUserProfile) { + + CContactList & currentCContactList = currentCUserProfile->getCContactList(); + StringList currentContactsIds = currentCContactList.getContactIds(); + + for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { + + ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); + QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); + + if (tmpContactProfile.hasAvailableQuteComId() && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateOffline && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnknown && + tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnavailable) { + + QAction * tmpAction = menu->addAction(displayName); + tmpAction->setData(QVariant(QString::fromUtf8((*it).c_str()))); + EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); + setPresenceIcon(tmpAction, presenceState); + } + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactMenu.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,59 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTMENU_H +#define OWQTCONTACTMENU_H + +#include + +class CQuteCom; +class QMenu; +class QAction; +class QIcon; +class StringList; + +/** + * Contact list QMenu builder. + * + * @author Mathieu Stute + */ +class QtContactMenu { + +public: + + static void populateMobilePhoneMenu(QMenu * menu, CQuteCom & cQuteCom); + + static void populateQuteComCallMenu(QMenu * menu, CQuteCom & cQuteCom); + + static void populateSipCallMenu(QMenu * menu, CQuteCom & cQuteCom); + + static void populateHomePhoneMenu(QMenu * menu, CQuteCom & cQuteCom); + + static void populateChatMenu(QMenu * menu, CQuteCom & cQuteCom); + + static void populateQuteComUsersContactId(QMenu * menun, CQuteCom & cQuteCom); + +private: + + static void setPresenceIcon(QAction * action, QIcon icon); + + static void setPresenceIcon(QAction * action, EnumPresenceState::PresenceState presenceState); +}; + +#endif //OWQTCONTACTMENU_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,40 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactPixmap.h" + +QtContactPixmap * QtContactPixmap::_instance = NULL; + +QtContactPixmap::QtContactPixmap() { +} + +QtContactPixmap * QtContactPixmap::getInstance() { + if (_instance == 0) { + _instance = new QtContactPixmap; + } + return _instance; +} + +void QtContactPixmap::setPixmap(ContactPixmap status, const QPixmap & px) { + _contactPixmap[status] = px; +} + +QPixmap & QtContactPixmap::getPixmap(ContactPixmap status) { + return _contactPixmap[status]; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactPixmap.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTPIXMAP_H +#define OWQTCONTACTPIXMAP_H + +#include +#include + +/** + * Store status pixmaps + * + * @author Mr K + */ +class QtContactPixmap { +public: + + enum ContactPixmap { + ContactUnknown, + ContactNoStatus, + ContactOnline, + ContactOffline, + ContactDND, + ContactInvisible, + ContactAway, + ContactGroupOpen, + ContactGroupClose, + ContactWDeal, + ContactNoStatusSIP, + ContactTestCall + }; + + static QtContactPixmap * getInstance(); + + void setPixmap(ContactPixmap status, const QPixmap & px); + + QPixmap & getPixmap(ContactPixmap status); + +private: + + QtContactPixmap(); + + QtContactPixmap(const QtContactPixmap & other) + : _contactPixmap(other._contactPixmap) { } + + QtContactPixmap & operator=(const QtContactPixmap & other) { + _contactPixmap = other._contactPixmap; + return * this; + } + + QHash < ContactPixmap, QPixmap > _contactPixmap; + + static QtContactPixmap * _instance; +}; + +#endif //OWQTCONTACTPIXMAP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactTreeKeyFilter.h" + +#include + +QtContactTreeKeyFilter::QtContactTreeKeyFilter(QObject * parent, QTreeWidget * target) { + _tree = target; + target->installEventFilter(this); +} + +bool QtContactTreeKeyFilter::eventFilter(QObject * obj, QEvent * event) { + + switch (event->type()) { + case QEvent::KeyPress: + keyPress((QKeyEvent *) event); + return false; + + default: + return QObject::eventFilter(obj, event); + } +} + +void QtContactTreeKeyFilter::keyPress(QKeyEvent * event) { + QTreeWidgetItem * item = _tree->currentItem(); + switch (event->key()) { + case Qt::Key_Left: + closeItem(item); + break; + case Qt::Key_Right: + openItem(item); + break; + case Qt::Key_Enter: + case Qt::Key_Return: + enterPressed(item); + break; + case Qt::Key_Delete: + deleteItem(item); + break; + case Qt::Key_C: + cPressed(item); + break; + case Qt::Key_W: + wPressed(item); + break; + case Qt::Key_S: + sPressed(item); + break; + + default: + break; + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,66 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTTREEKEYFILTER_H +#define OWQTCONTACTTREEKEYFILTER_H + +#include + +class QKeyEvent; +class QTreeWidget; +class QTreeWidgetItem; + +/** + * Qt Key filter for Contact list + * + * @author Mr K + * @author Mathieu Stute + */ +class QtContactTreeKeyFilter : public QObject { + Q_OBJECT +public: + + QtContactTreeKeyFilter(QObject * parent, QTreeWidget * target); + +Q_SIGNALS: + + void openItem(QTreeWidgetItem * item); + + void closeItem(QTreeWidgetItem * item); + + void enterPressed(QTreeWidgetItem * item); + + void cPressed(QTreeWidgetItem * item); + + void wPressed(QTreeWidgetItem * item); + + void sPressed(QTreeWidgetItem * item); + + void deleteItem(QTreeWidgetItem * item); + +private: + + bool eventFilter(QObject * obj, QEvent * event); + + void keyPress(QKeyEvent * event); + + QTreeWidget * _tree; +}; + +#endif //OWQTCONTACTTREEKEYFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,211 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactTreeMouseFilter.h" +#include "QtContactListManager.h" + +#include + +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include +#include + +const QString QtContactTreeMouseFilter::QUTECOM_MIME_TYPE = "application/x-qutecom-user-data"; + +QtContactTreeMouseFilter::QtContactTreeMouseFilter(CContactList & cContactList, QObject * parent, QTreeWidget * treeWidget) + : QObject(parent), + _cContactList(cContactList) { + _tree = treeWidget; + + //The event filter must be installed in the viewport of the QTreeWidget + _tree->viewport()->installEventFilter(this); + _dropDestinationItem = 0; +} + +bool QtContactTreeMouseFilter::eventFilter(QObject * obj, QEvent * event) { + switch (event->type()) { + case QEvent::MouseButtonPress: + mousePressEvent((QMouseEvent *) event); + return false; + case QEvent::MouseButtonRelease: + mouseReleaseEvent((QMouseEvent *) event); + return false; + case QEvent::MouseMove: + mouseMoveEvent((QMouseEvent *) event); + event->accept(); + return true; + case QEvent::DragEnter: + dragEnterEvent((QDragEnterEvent *) event); + event->accept(); + return true; + case QEvent::Drop: + dropEvent((QDropEvent *) event); + event->accept(); + return true; + case QEvent::DragMove: + dragMoveEvent((QDragMoveEvent *) event); + event->accept(); + return true; + default: + return QObject::eventFilter(obj, event); + } +} + +void QtContactTreeMouseFilter::mousePressEvent(QMouseEvent * event) { + + mouseClicked(event->button()); + QTreeWidgetItem * item = _tree->itemAt(event->pos()); + QtContactListManager * ul = QtContactListManager::getInstance(); + if (item) { + if (!item->parent()) { + return; + } + ul->resetMouseStatus(); + _selectedContactId = item->text(0); + ul->setButton(_selectedContactId, event->button()); + if (event->button() == Qt::LeftButton) { + _dstart = event->pos(); + } + } +} + +void QtContactTreeMouseFilter::mouseReleaseEvent(QMouseEvent * event) { + if (event->button() == Qt::RightButton) { + mouseClicked(Qt::RightButton); + } else { + mouseClicked(Qt::NoButton); + } +} + +void QtContactTreeMouseFilter::mouseMoveEvent(QMouseEvent * event) { + if (_selectedContactId.isNull()) { + return; + } + + if (!(event->buttons() & Qt::LeftButton)) { + return; + } + + if ((event->pos() - _dstart).manhattanLength() < QApplication::startDragDistance()) { + return; + } + + //Define a new empty custom data + QByteArray custom; + QDrag * drag = new QDrag(_tree); + QMimeData * mimeData = new QMimeData; + QtContactListManager * ul = QtContactListManager::getInstance(); + + QtContact * contact = ul->getContact(_selectedContactId); + if (contact) { + mimeData->setText(contact->getUserName()); + mimeData->setData(QUTECOM_MIME_TYPE, custom); + drag->setMimeData(mimeData); + drag->start(Qt::MoveAction); + } +} + +void QtContactTreeMouseFilter::dragEnterEvent(QDragEnterEvent * event) { + if (event->mimeData()->hasFormat(QUTECOM_MIME_TYPE)) { + event->acceptProposedAction(); + } +} + +void QtContactTreeMouseFilter::dropEvent(QDropEvent * event) { + QTreeWidgetItem * item = _tree->itemAt(event->pos()); + + if (!event->mimeData()->hasFormat(QUTECOM_MIME_TYPE)) { + return; + } + event->acceptProposedAction(); + + if (_selectedContactId.isNull()) { + // No contact selected. Should not happen. + LOG_WARN("No contact selected. This should not happen."); + return; + } + + if (item) { + if (_selectedContactId == item->text(0)) { + //Dropped on same item. Nothing to do. + _selectedContactId = QString::null; + return; + } + + _dropSourceContactId = _selectedContactId; + _dropDestinationItem = item; + + // Call handleDrop() through a QTimer::singleShot, so that we are out + // of the event loop. This is necessary because code in handleDrop() + // can show dialog messages, causing crashes under X11. + QTimer::singleShot(0, this, SLOT(handleDrop())); + } + + _selectedContactId = QString::null; +} + +void QtContactTreeMouseFilter::handleDrop() { + Q_ASSERT(_dropDestinationItem); + QString destinationContactId = _dropDestinationItem->text(0); + + ContactProfile sourceProfile = _cContactList.getContactProfile(std::string(_dropSourceContactId.toUtf8())); + ContactProfile destinationProfile = _cContactList.getContactProfile(std::string(destinationContactId.toUtf8())); + + if ( sourceProfile.getGroupId() == destinationProfile.getGroupId() || _tree->topLevelItemCount() == 1 ) { + //The destination and the source groups are the same + //This is a contact combination + mergeContacts(_dropSourceContactId, destinationContactId); + } else { + //This is a Contact move + QString groupId; + if (_dropDestinationItem->parent()) { + //The destination is a contact, move the contact to the destination + //group + groupId = _dropDestinationItem->parent()->text(0); + } else { + //The destination is a group + groupId = destinationContactId; + } + sourceProfile.setGroupId(std::string(groupId.toUtf8())); + _cContactList.updateContact(sourceProfile); + } + + _dropDestinationItem = 0; +} + +void QtContactTreeMouseFilter::dragMoveEvent(QDragMoveEvent * event) { + QTreeWidgetItem * item = _tree->itemAt(event->pos()); + event->setDropAction(Qt::IgnoreAction); + if (item) { + event->setDropAction(Qt::MoveAction); + if (event->mimeData()->hasFormat(QUTECOM_MIME_TYPE)) { + event->acceptProposedAction(); + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,84 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCONTACTTREEMOUSEFILTER_H +#define OWQTCONTACTTREEMOUSEFILTER_H + +#include +#include + +class CContactList; +class QTreeWidgetItem; +class QMouseEvent; +class QDragEnterEvent; +class QDropEvent; +class QTreeWidget; +class QDragMoveEvent; + +/** + * Mouse events manager for QTreeWidget + * + * @author Mr K + */ +class QtContactTreeMouseFilter : public QObject { + Q_OBJECT +public : + + static const QString QUTECOM_MIME_TYPE; + + QtContactTreeMouseFilter(CContactList & cContactList, QObject * parent, QTreeWidget * treeWidget); + +Q_SIGNALS: + + void mouseClicked(Qt::MouseButton button); + + void mergeContacts(QString dstContact, QString srcContact); + +private Q_SLOTS: + void handleDrop(); + +private: + + bool eventFilter(QObject * obj, QEvent * event); + + void mousePressEvent(QMouseEvent * event); + + void mouseMoveEvent(QMouseEvent * event); + + void dragEnterEvent(QDragEnterEvent * event); + + void dropEvent(QDropEvent * event); + + void dragMoveEvent(QDragMoveEvent * event); + + void mouseReleaseEvent(QMouseEvent * event); + + QTreeWidget * _tree; + + QPoint _dstart; + + QString _selectedContactId; + + CContactList & _cContactList; + + QString _dropSourceContactId; + QTreeWidgetItem* _dropDestinationItem; +}; + +#endif //OWQTCONTACTTREEMOUSEFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,254 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactWidget.h" + +#include "ui_ContactWidget.h" + +#include "QtContact.h" +#include "QtContactListManager.h" +#include "QtContactManager.h" + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include + +static const std::string AVATAR_BACKGROUND = ":/pics/avatar_background.png"; + +QtContactWidget::QtContactWidget(const std::string & contactId, CQuteCom & cQuteCom, + QtContactManager * qtContactManager, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + _contactId = contactId; + + _ui = new Ui::ContactWidget(); + _ui->setupUi(this); + + QColor bgColor = palette().highlight().color(); + QColor fgColor = palette().highlightedText().color(); + + QPalette pal(bgColor); + pal.setColor(QPalette::Text, fgColor); + pal.setColor(QPalette::ButtonText, fgColor); + + setPalette(pal); + Q_FOREACH(QToolButton* button, findChildren()) { + button->setPalette(pal); + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (!config.getSmsFeatureEnabled()) { + _ui->smsButton->hide(); + } + updateButtons(); + + SAFE_CONNECT(_ui->callButton, SIGNAL(clicked()), SLOT(callButtonClicked())); + SAFE_CONNECT(_ui->chatButton, SIGNAL(clicked()), SLOT(chatButtonClicked())); + SAFE_CONNECT(_ui->smsButton, SIGNAL(clicked()), SLOT(smsButtonClicked())); + SAFE_CONNECT(_ui->landlineButton, SIGNAL(clicked()), SLOT(landlineButtonClicked())); + SAFE_CONNECT(_ui->mobileButton, SIGNAL(clicked()), SLOT(mobileButtonClicked())); + SAFE_CONNECT(_ui->avatarButton, SIGNAL(clicked()), SLOT(avatarButtonClicked())); + SAFE_CONNECT(_ui->sendFileButton, SIGNAL(clicked()), SLOT(sendFileButtonClicked())); + SAFE_CONNECT_RECEIVER_TYPE(this, SIGNAL(editContact(QString)), + qtContactManager, SLOT(editContact(QString)), Qt::QueuedConnection); + +#ifdef DISABLE_SMS + _ui->smsButton->hide(); +#endif + +#ifdef DISABLE_FILETRANSFER + _ui->sendFileButton->hide(); +#endif + + LANGUAGE_CHANGE(this); +} + +QtContactWidget::~QtContactWidget() { + delete _ui; +} + +void QtContactWidget::resizeEvent(QResizeEvent* event) { + QWidget::resizeEvent(event); + QPalette pal = palette(); + + QRect r = rect(); + QLinearGradient lg(QPointF(1, r.top()), QPointF(1, r.bottom())); + QColor color = pal.highlight().color(); + lg.setColorAt(0, color); + lg.setColorAt(1, color.dark(150)); + + pal.setBrush(backgroundRole(), QBrush(lg)); + setPalette(pal); +} + +void QtContactWidget::updateButtons() { + ContactProfile contactProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactProfile(_contactId); + std::string foregroundPixmapData = contactProfile.getIcon().getData(); + _ui->avatarButton->setIcon(PixmapMerging::merge(foregroundPixmapData, AVATAR_BACKGROUND)); + + QString str = QString::fromUtf8(contactProfile.getHomePhone().c_str()); + if (str.isEmpty()) { + _ui->landlineButton->setText(tr("No landline phone number set")); + } else { + _ui->landlineButton->setText(str); + } + + str = QString::fromUtf8(contactProfile.getMobilePhone().c_str()); + if (str.isEmpty()) { + _ui->mobileButton->setText(tr("No mobile phone number set")); + _ui->smsButton->setEnabled(false); + } else { + _ui->mobileButton->setText(str); + _ui->smsButton->setEnabled(true); + } + + _ui->callButton->setEnabled(contactProfile.hasFreeCall() || contactProfile.hasVoiceMail()); + + _ui->chatButton->setEnabled(contactProfile.hasIM()); + + _ui->sendFileButton->setEnabled(contactProfile.hasFileTransfer()); +} + +void QtContactWidget::callButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->startFreeCall(QString::fromUtf8(_contactId.c_str())); +} + +void QtContactWidget::smsButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->startSMS(QString::fromUtf8(_contactId.c_str())); +} + +void QtContactWidget::chatButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->startChat(QString::fromUtf8(_contactId.c_str())); +} + +void QtContactWidget::sendFileButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->sendFile(QString::fromUtf8(_contactId.c_str())); +} + +void QtContactWidget::updateToolTips() { + + QtContactListManager * ul = QtContactListManager::getInstance(); + + if (!ul->getMobilePhone(QString::fromUtf8(_contactId.c_str())).isEmpty()) { + _ui->mobileButton->setToolTip(tr("Click here to call")); + } else { + _ui->mobileButton->setToolTip(tr("Click here to set a phone number")); + } + + if (!ul->getHomePhone(QString::fromUtf8(_contactId.c_str())).isEmpty()) { + _ui->landlineButton->setToolTip(tr("Click here to call")); + } else { + _ui->landlineButton->setToolTip(tr("Click here to set a phone number")); + } + + _ui->avatarButton->setToolTip(tr("Click here to edit the contact")); + + if (_ui->smsButton->isEnabled()) { + _ui->smsButton->setToolTip(tr("Click here to send a SMS")); + } else { + _ui->smsButton->setToolTip(QString::null); + } + + if (_ui->chatButton->isEnabled()) { + _ui->chatButton->setToolTip(tr("Click here to start a chat")); + } else { + _ui->chatButton->setToolTip(QString::null); + } + + if (_ui->callButton->isEnabled()) { + _ui->callButton->setToolTip(tr("Click here to start a free call")); + } else { + _ui->callButton->setToolTip(QString::null); + } + + if (_ui->sendFileButton->isEnabled()) { + _ui->sendFileButton->setToolTip(tr("Click here to send a file")); + } else { + _ui->sendFileButton->setToolTip(QString::null); + } +} + +void QtContactWidget::mobileButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + if (!ul->getMobilePhone(QString::fromUtf8(_contactId.c_str())).isEmpty()) { + ul->startCall(QString::fromUtf8(_contactId.c_str()), _ui->mobileButton->text()); + } else { + editContact(_text); + } +} + +void QtContactWidget::landlineButtonClicked() { + QtContactListManager * ul = QtContactListManager::getInstance(); + if (!ul->getHomePhone(QString::fromUtf8(_contactId.c_str())).isEmpty()) { + ul->startCall(QString::fromUtf8(_contactId.c_str()), _ui->landlineButton->text()); + } else { + editContact(_text); + } +} + +void QtContactWidget::avatarButtonClicked() { + editContact(_text); +} + +void QtContactWidget::paintEvent(QPaintEvent *) { + QPainter painter(this); + paintContact(&painter, rect()); + painter.end(); +} + +void QtContactWidget::paintContact(QPainter * painter, const QRect & rect) { + QtContactListManager * ul = QtContactListManager::getInstance(); + + QtContact * qtContact = ul->getContact(QString::fromUtf8(_contactId.c_str())); + if (!qtContact) { + return; + } + + QStyleOptionViewItem option; + option.initFrom(ul->getTreeWidget()); + option.state = QStyle::State_Selected; + qtContact->paintForeground(painter, option); + updateToolTips(); +} + +void QtContactWidget::languageChanged() +{ + _ui->retranslateUi(this); +} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtContactWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,109 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTCONTACTWIDGET_H +#define QTCONTACTWIDGET_H + +#include + +#include +#include + +class CContact; +class CQuteCom; +class QLabel; +class QPushButton; +class QResizeEvent; +class QtContactManager; +namespace Ui { class ContactWidget; } + +/** + * Qt user widget. + * Represents a contact info in the contact list. + * + * @author Mr K + * @author Mathieu Stute + * @author Philippe Bernery + */ +class QtContactWidget : public QWidget { + Q_OBJECT +public: + + QtContactWidget(const std::string & contactId, CQuteCom & cQuteCom, + QtContactManager * qtContactManager, QWidget * parent); + + ~QtContactWidget(); + + void setText(const QString & text) { + _text = text; + } + + QString text() const { + return _text; + } + + void updateButtons(); + + + virtual void resizeEvent(QResizeEvent* event); + +Q_SIGNALS: + + /** + * Emitted when a the contact icon has been clicked and so the + * user wants to edit the contact. + */ + void editContact(QString contact); + +private Q_SLOTS: + + void callButtonClicked(); + + void smsButtonClicked(); + + void chatButtonClicked(); + + void mobileButtonClicked(); + + void landlineButtonClicked(); + + void avatarButtonClicked(); + + void sendFileButtonClicked(); + + void languageChanged(); + +private: + + void updateToolTips(); + + void paintEvent(QPaintEvent *); + + void paintContact(QPainter * painter, const QRect & rect); + + std::string _contactId; + + CQuteCom & _cQuteCom; + + QString _text; + + Ui::ContactWidget * _ui; +}; + +#endif //QTCONTACTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtRenameGroup.h" + +#include "ui_RenameGroupDialog.h" + +#include + +QtRenameGroup::QtRenameGroup(const QString & groupName, QWidget * parent) + : QDialog(parent) { + _ui = new Ui::RenameGroupDialog(); + _ui->setupUi(this); + _ui->groupName->setText(groupName); +} + +QtRenameGroup::~QtRenameGroup() { + delete _ui; +} + +QString QtRenameGroup::getGroupName() const { + return _ui->groupName->text(); +} + +void QtRenameGroup::accept() { + QString tmp; + tmp = _ui->groupName->text().trimmed(); + if (tmp.isEmpty()) { + QMessageBox::warning(this, tr("Bad group name"), tr("Group name cannot be empty"), 1, 0, 0); + return; + } + QDialog::accept(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtRenameGroup.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTRENAMEGROUP_H +#define OWQTRENAMEGROUP_H + +#include +#include + +class QWidget; +namespace Ui { class RenameGroupDialog; } + +/** + * Dialog to rename a group. + * + * @author Mr K + */ +class QtRenameGroup : public QDialog { + Q_OBJECT +public: + + QtRenameGroup(const QString & groupName, QWidget * parent); + + ~QtRenameGroup(); + + QString getGroupName() const; + +public Q_SLOTS: + + void accept(); + +private: + + Ui::RenameGroupDialog * _ui; +}; + +#endif //OWQTRENAMEGROUP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtTreeViewDelegate.h" + +#include "QtContactWidget.h" +#include "QtContactListManager.h" +#include "QtContactPixmap.h" +#include "QtContactList.h" + +#include +#include +#include + +#include +#include + +#include + +static int GROUP_WIDGET_FRAME_HEIGHT = 22; + +QtTreeViewDelegate::QtTreeViewDelegate(CQuteCom & cQuteCom, + QtContactManager * qtContactManager, QObject * parent) + : QItemDelegate(parent), + _qtContactManager(qtContactManager), + _cQuteCom(cQuteCom) { +} + +void QtTreeViewDelegate::setParent(QWidget * parent) { + _parent = parent; +} + +QWidget * QtTreeViewDelegate::createEditor(QWidget * parent, + const QStyleOptionViewItem &, const QModelIndex & index) const { + + QtContactListManager * ul = QtContactListManager::getInstance(); + QtContact * qtContact = ul->getContact(index.data().toString()); + QtContactWidget * widget = + new QtContactWidget(std::string(qtContact->getId().toUtf8()), _cQuteCom, + _qtContactManager, parent); + return widget; +} + +void QtTreeViewDelegate::setEditorData(QWidget * editor, const QModelIndex & index) const { + QtContactWidget * widget = qobject_cast(editor); + if (!widget) { + return; + } + widget->setText(index.model()->data(index).toString()); +} + +void QtTreeViewDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, + const QModelIndex & index) const { + + QtContactWidget * widget = qobject_cast(editor); + + if (!widget) { + return; + } + model->setData(index, widget->text()); +} + +void QtTreeViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { + if (!index.parent().isValid()) { + drawGroup(painter, option, index); + } else { + QtContactListManager * ul = QtContactListManager::getInstance(); + ul->paintContact(painter, option, index); + } +} + +QSize QtTreeViewDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const { + QSize orig = QItemDelegate::sizeHint(option, index); + QtContactListManager * ul = QtContactListManager::getInstance(); + QtContact * qtContact = ul->getContact(index.data().toString()); + + if (qtContact) { + return QSize(orig.width(), ul->getContact(index.data().toString())->getHeight()); + } else { + if (!index.parent().isValid()) { + return (QSize(orig.width(), GROUP_WIDGET_FRAME_HEIGHT)); + } + } + return orig; +} + +void QtTreeViewDelegate::drawGroup(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { + painter->setPen(option.palette.text().color()); + painter->drawPixmap(option.rect.left(),option.rect.top(),getGroupBackGround(option.rect)); + + QFont font = option.font; + font.setBold(true); + painter->setFont(font); + + QtContactPixmap * spx = QtContactPixmap::getInstance(); + QPixmap px; + if (option.state & QStyle::State_Open) { + px = spx->getPixmap(QtContactPixmap::ContactGroupOpen); + } else { + px = spx->getPixmap(QtContactPixmap::ContactGroupClose); + } + int x = option.rect.left(); + QRect r = option.rect; + painter->drawPixmap(x, r.top() + 3, px); + x += px.width() + 3; + r.setLeft(x); + int y = ((r.bottom()-r.top())-QFontMetrics(font).height())/2; + r.setTop(y + r.top()); + r.setLeft(r.left() + 10); + QString groupName; + std::string groupId; + std::string groupNameTmp; + if (index.data().toString() == QtContactList::DEFAULT_GROUP_NAME) { + groupName = tr("Contacts list"); + groupNameTmp=std::string(groupName.toUtf8().data()); + } else { + groupName = index.data().toString(); + groupId = std::string(groupName.toUtf8()); + groupNameTmp = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(groupId); + } + groupName = QString::fromUtf8(groupNameTmp.c_str(), groupNameTmp.size()); + QString str = groupName; + painter->drawText(r, Qt::AlignLeft, str, 0); +} + +QPixmap QtTreeViewDelegate::getGroupBackGround(const QRect & rect) const { + if (_groupBackground.isNull() || _groupBackground.width() != rect.width()) { + QLinearGradient lg(QPointF(1.0, 0.0), QPointF(1.0, GROUP_WIDGET_FRAME_HEIGHT)); + lg.setColorAt(0.8, QColor(212, 208, 200)); + lg.setColorAt(0.0, QColor(255, 255, 255)); + _groupBackground = QPixmap(rect.width(),GROUP_WIDGET_FRAME_HEIGHT); + QPainter painter(&_groupBackground); + painter.fillRect(_groupBackground.rect(),QBrush(lg)); + painter.end(); + } + return _groupBackground; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/QtTreeViewDelegate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTTREEVIEWDELEGATE_H +#define OWQTTREEVIEWDELEGATE_H + +#include +#include +#include + +class CQuteCom; +class QAbstractItemModel; +class QModelIndex; +class QPainter; +class QRect; +class QStyleOptionViewItem; +class QWidget; +class QtContactManager; +class QtUserWidget; + +/** + * Qt Presentation component for ContactList. + * + * @author Mr K + */ +class QtTreeViewDelegate : public QItemDelegate { + Q_OBJECT +public: + + QtTreeViewDelegate(CQuteCom & cQuteCom, + QtContactManager * qtContactManager, QObject * parent = 0); + + QWidget * createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const; + + void setEditorData(QWidget * editor, const QModelIndex & index) const; + + void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const; + + void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; + + void setParent(QWidget * parent); + + QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const; + +private: + + void drawGroup(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; + + QPixmap getGroupBackGround(const QRect & rect) const; + + const QWidget * _parent; + + QPixmap _menuIcon; + + mutable QPixmap _groupBackground; + + QtContactManager * _qtContactManager; + + CQuteCom & _cQuteCom; +}; + +#endif //OWQTTREEVIEWDELEGATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/RenameGroupDialog.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/RenameGroupDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/contactlist/RenameGroupDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/contactlist/RenameGroupDialog.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,128 @@ + + + + + RenameGroupDialog + + + + 0 + 0 + 382 + 123 + + + + @product@ - Rename Contact Group + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + OK + + + + + + + Cancel + + + + + + + + + Enter the new group name: + + + + + + + + + + Qt::Vertical + + + + 364 + 16 + + + + + + + + + groupName + okButton + cancelButton + + + + + okButton + clicked() + RenameGroupDialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + cancelButton + clicked() + RenameGroupDialog + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/DialpadWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/DialpadWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/DialpadWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/DialpadWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,475 @@ + + DialpadWidget + + + + 0 + 0 + 400 + 300 + + + + + 6 + + + 9 + + + 9 + + + 9 + + + 9 + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 127 + 20 + + + + + + + + + 100 + 0 + + + + + + + + Qt::Horizontal + + + + 127 + 20 + + + + + + + + + + + + + + 150 + 198 + + + + 0 + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + :/pics/dialpad/12_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/1_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/10_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/7_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/2_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/3_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/6_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/5_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/9_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/4_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/11_on.png + + + + 50 + 50 + + + + true + + + + + + + :/pics/dialpad/8_on.png + + + + 50 + 50 + + + + true + + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 0 + + + + + + + + + + 6 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + 0 + 0 + + + + + + + + Click on the various color changing items to send sounds to your interlocutor. + + + Qt::AlignCenter + + + true + + + + + + + + + + + + UpQComboBox + QComboBox +
qtutil/UpQComboBox.h
+
+ + QtSVGDialpad + QFrame +
QtSVGDialpad.h
+ 1 +
+
+ + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/AcceptDialog.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/AcceptDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/AcceptDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/AcceptDialog.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,459 @@ + + + + + AcceptDialog + + + + 0 + 0 + 328 + 166 + + + + File Transfer + + + true + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + toto@qutecom.fr + + + + + + + test.bmp + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 111 + + + + + + + + + + + 0 + 0 + 0 + + + 221 + 223 + 228 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 85 + 85 + 85 + + + 199 + 199 + 199 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 239 + 239 + 239 + + + 0 + 0 + 0 + + + 103 + 141 + 178 + + + 255 + 255 + 255 + + + 0 + 0 + 238 + + + 82 + 24 + 139 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 221 + 223 + 228 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 85 + 85 + 85 + + + 199 + 199 + 199 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 239 + 239 + 239 + + + 0 + 0 + 0 + + + 103 + 141 + 178 + + + 255 + 255 + 255 + + + 0 + 0 + 238 + + + 82 + 24 + 139 + + + 232 + 232 + 232 + + + + + 128 + 128 + 128 + + + 221 + 223 + 228 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 85 + 85 + 85 + + + 199 + 199 + 199 + + + 199 + 199 + 199 + + + 255 + 255 + 255 + + + 128 + 128 + 128 + + + 239 + 239 + 239 + + + 239 + 239 + 239 + + + 0 + 0 + 0 + + + 86 + 117 + 148 + + + 255 + 255 + 255 + + + 0 + 0 + 238 + + + 82 + 24 + 139 + + + 232 + 232 + 232 + + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + Qt::AlignCenter + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + &Accept + + + + + + + &Cancel + + + + + + + + + + okButton + cancelButton + + + + + okButton + clicked() + AcceptDialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + cancelButton + clicked() + AcceptDialog + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferDialog.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferDialog.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ + + + + + FileTransferDialog + + + + 0 + 0 + 447 + 328 + + + + @product@ - File Transfer Manager + + + true + + + + 9 + + + 6 + + + + + Qt::StrongFocus + + + QTabWidget::North + + + QTabWidget::Rounded + + + 1 + + + + Download + + + + 9 + + + 6 + + + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::NoSelection + + + + + + + + Upload + + + + 9 + + + 6 + + + + + QAbstractItemView::NoEditTriggers + + + true + + + QAbstractItemView::NoSelection + + + + + + + + + + + Qt::Horizontal + + + + 101 + 29 + + + + + + + + Click here to change your download folder + + + ... + + + :/pics/filetransfer/download_folder.png + + + false + + + false + + + + + + + Download folder: + + + + + + + Clean all items in the list + + + &Clean + + + :/pics/filetransfer/cleanup.png + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferItem.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferItem.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferItem.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/FileTransferItem.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,128 @@ + + + + + FileTransferItem + + + + 0 + 0 + 310 + 87 + + + + Form + + + + 9 + + + 6 + + + + + 0 + + + 0 + + + + + + + + + + + + <i>From:</i> + + + + + + + + 0 + 16 + + + + + 16777215 + 16 + + + + 0 + + + Qt::Horizontal + + + false + + + + + + + + + + + + + + + + 0 + + + 0 + + + + + + 84 + 20 + + + + Cancel + + + + + + + + 84 + 20 + + + + Pause + + + + + + + + + + cancelOpenButton + removePauseResumeButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/NotifyDialog.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/NotifyDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/NotifyDialog.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/NotifyDialog.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,389 @@ + + + + + NotifyDialog + + + + 0 + 0 + 435 + 284 + + + + File Transfer + + + true + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 411 + 68 + + + + + + + + &Ok + + + + + + + Qt::Horizontal + + + + 61 + 27 + + + + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + true + + + + + + + + 0 + 126 + + + + + 16777215 + 126 + + + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + Qt::AlignCenter + + + true + + + 100 + + + + + + + + okButton + + + + + okButton + clicked() + NotifyDialog + accept() + + + 278 + 253 + + + 96 + 254 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferAcceptDialog.h" +#include "ui_AcceptDialog.h" + +#include +#include + +QtFileTransferAcceptDialog::QtFileTransferAcceptDialog(QWidget * parent) + : QDialog(parent) { + + _ui = new Ui::AcceptDialog(); + _ui->setupUi(this); + + //install header image + WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/file-transfer.png", WidgetBackgroundImage::AdjustSize); + //// +} + +QtFileTransferAcceptDialog::~QtFileTransferAcceptDialog() { + OWSAFE_DELETE(_ui); +} + +void QtFileTransferAcceptDialog::setFileName(const QString & fileName) { + _ui->filenameLabel->setText(fileName); +} + +void QtFileTransferAcceptDialog::setContactName(const QString & contactName) { + _ui->contactLabel->setText(contactName); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERACCEPTDIALOG_H +#define OWQTFILETRANSFERACCEPTDIALOG_H + +#include + +#include + +namespace Ui { class AcceptDialog; } + +/** + * Qt file transfer accept dialog. + * + * @author Mathieu Stute + * @author Philippe Bernery + */ +class QtFileTransferAcceptDialog : public QDialog { + Q_OBJECT +public: + + /** + * Constructor. + * @param parent the parent widget + */ + QtFileTransferAcceptDialog(QWidget * parent); + + /** + * Destructor. + */ + ~QtFileTransferAcceptDialog(); + + /** + * Sets the file name label. + */ + void setFileName(const QString & fileName); + + /** + * Sets the Contact name label. + */ + void setContactName(const QString & contactName); + +private: + + Ui::AcceptDialog * _ui; +}; + +#endif //OWQTFILETRANSFERACCEPTDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,248 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransfer.h" +#include "QtFileTransferAcceptDialog.h" +#include "QtFileTransferNotifyDialog.h" +#include "QtFileTransferWidget.h" + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +QtFileTransfer::QtFileTransfer(QObject * parent, CoIpManager * coIpManager) + : QObject(parent), _coIpManager(coIpManager) { + + _qtFileTransferWidget = new QtFileTransferWidget(NULL); + + SAFE_CONNECT(this, SIGNAL(newReceiveFileSessionCreatedEventHandlerSignal(ReceiveFileSession *)), + SLOT(newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession *))); + _coIpManager->getFileSessionManager().newReceiveFileSessionCreatedEvent += + boost::bind(&QtFileTransfer::newReceiveFileSessionCreatedEventHandler, this, _1, _2); + + SAFE_CONNECT(this, SIGNAL(needUpgradeEventHandlerSignal()), + SLOT(needUpgradeEventHandlerSlot())); + _coIpManager->getFileSessionManager().needUpgradeEvent += + boost::bind(&QtFileTransfer::needUpgradeEventHandler, this, _1); + + SAFE_CONNECT(this, SIGNAL(peerNeedsUpgradeEventHandlerSignal(const QString &)), + SLOT(peerNeedsUpgradeEventHandlerSlot(const QString &))); + _coIpManager->getFileSessionManager().peerNeedsUpgradeEvent += + boost::bind(&QtFileTransfer::peerNeedsUpgradeEventHandler, this, _1, _2); +} + +QtFileTransfer::~QtFileTransfer() { + _qtFileTransferWidget->hide(); + OWSAFE_DELETE(_qtFileTransferWidget); +} + +void QtFileTransfer::newReceiveFileSessionCreatedEventHandler( + FileSessionManager & sender, ReceiveFileSession fileSession) { + + ReceiveFileSession * newFileSession = new ReceiveFileSession(fileSession); + newReceiveFileSessionCreatedEventHandlerSignal(newFileSession); +} + +void QtFileTransfer::newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession * fileSession) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString downloadFolder; + QString filename = QString::fromUtf8(fileSession->getFileName().c_str()); + QString contact = QString::fromUtf8(fileSession->getIMContact().getDisplayContactId().c_str()); + + LOG_DEBUG("incoming file: " + fileSession->getFileName() + + "from: " + fileSession->getIMContact().getDisplayContactId()); + + _qtFileTransferWidget->showAndRaise(); + QtFileTransferAcceptDialog qtFileTransferAcceptDialog(_qtFileTransferWidget); + qtFileTransferAcceptDialog.setFileName(filename); + qtFileTransferAcceptDialog.setContactName(contact); + + // the user accept the file transfer + if (qtFileTransferAcceptDialog.exec() == QDialog::Accepted) { + + QDir dir(QString::fromUtf8(config.getFileTransferDownloadFolder().c_str())); + // if no download folder set then choose one + // or if the choosen folder does not exists anymore. + if ((config.getFileTransferDownloadFolder().empty()) || (!dir.exists())) { + + downloadFolder = QFileDialog::getExistingDirectory( + _qtFileTransferWidget, + tr("Choose a directory"), + QString::null, + QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks + ); + + if (!downloadFolder.isEmpty()) { + config.set(Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY, std::string(downloadFolder.toUtf8().constData())); + } else { + //TODO: warn the user is has set no download folder. + fileSession->stop(); + OWSAFE_DELETE(fileSession); + return; + } + } else { + downloadFolder = QString::fromUtf8(config.getFileTransferDownloadFolder().c_str()); + } + + // here we're sure to have a download folder, + // but we must check if the file already exists. + QFile file(downloadFolder + QString(QDir::separator()) + filename); + if (file.exists()) { + + if (QMessageBox::question(_qtFileTransferWidget, tr("Overwrite File?"), + tr("A file called %1 already exists." + "Do you want to overwrite it?").arg(filename), + tr("&Yes"), tr("&No"), QString(), 0, 1)) { + + fileSession->stop(); + OWSAFE_DELETE(fileSession); + return; + } + } + + _qtFileTransferWidget->setDownloadFolder(downloadFolder); + _qtFileTransferWidget->addReceiveItem(fileSession); + fileSession->setFilePath(std::string(downloadFolder.toUtf8().constData())); + fileSession->start(); + + // the user refuse the file transfer. + } else { + fileSession->stop(); + OWSAFE_DELETE(fileSession); + return; + } +} + +void QtFileTransfer::createSendFileSession(IMContactSet imContactSet, const QString & filename, CContactList & cContactList) { + + QFileInfo fileinfo(QString(filename.toUtf8().constData())); + File file(std::string(filename.toUtf8().constData()), File::EncodingUTF8); + + // check the fileinfo + if (fileinfo.isDir()) { + //~ if (QMessageBox::question(_qtFileTransferWidget, + //~ tr("%1 is a directory.").arg(fileinfo.fileName()), + //~ tr("Do you want to send all files included in %1 ?").arg(fileinfo.filePath()), + //~ QMessageBox::No, QMessageBox::Yes, 0) + //~ == QMessageBox::Yes) { + + //~ //gets all files in directory and sends them + //~ QDir rep(fileinfo.filePath()); + //~ QFileInfoList tobesent = rep.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs,QDir::Unsorted); + //~ for (int i = 0; i < tobesent.size(); ++i) { + //~ createSendFileSession(imContactSet, tobesent.at(i).filePath(), cContactList); + //~ } + //~ //// + //~ } + QMessageBox::warning(_qtFileTransferWidget, + tr("%1 is a directory.").arg(fileinfo.fileName()), + tr("You can not send a directory."), + QMessageBox::Ok, 0, 0 + ); + } +#if defined(OS_WINDOWS) + else if (fileinfo.suffix() == QString::fromUtf8("lnk")) { + QMessageBox::warning(_qtFileTransferWidget, + tr("%1 is a shortcut.").arg(fileinfo.fileName()), + tr("You can not send a shortcut."), + QMessageBox::Ok, 0, 0 + ); + } +#endif + else if (file.getSize() > INT_MAX) { + QMessageBox::warning(_qtFileTransferWidget, tr("File size error"), + tr("%1 exceeds the maximum authorized size.").arg(fileinfo.filePath()), + QMessageBox::Ok, 0, 0 + ); + } else if (file.getSize() <= 0) { + QMessageBox::warning(_qtFileTransferWidget, tr("File size error"), + tr("%1 has size 0.").arg(fileinfo.filePath()), + QMessageBox::Ok, 0, 0 + ); + } else { + File file(std::string(filename.toUtf8().constData()), File::EncodingUTF8); + SendFileSession * fileSession = _coIpManager->getFileSessionManager().createSendFileSession(); + fileSession->addFile(file); + + for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); ++it) { + + std::string contactId = cContactList.findContactThatOwns(*it); + fileSession->addContact(contactId); + _qtFileTransferWidget->addSendItem(fileSession, std::string(filename.toUtf8()), (*it).getDisplayContactId()); + } + + // HACK : Unique file transfer hack + _coIpManager->getFileSessionManager().queueSession(fileSession); + } +} + +void QtFileTransfer::needUpgradeEventHandler(FileSessionManager & sender) { + needUpgradeEventHandlerSignal(); +} + +void QtFileTransfer::peerNeedsUpgradeEventHandler(FileSessionManager & sender, const std::string contactID) { + peerNeedsUpgradeEventHandlerSignal(QString::fromUtf8(contactID.c_str())); +} + +void QtFileTransfer::needUpgradeEventHandlerSlot() { + + QtFileTransferNotifyDialog qtFileTransferNotifyDialog(_qtFileTransferWidget); + qtFileTransferNotifyDialog.setTitle(tr("Please upgrade
your @product@")); + qtFileTransferNotifyDialog.setMessage(tr("The file cannot be received:" + "you must upgrade your @product@ in order to receive it.")); + + qtFileTransferNotifyDialog.exec(); +} + +void QtFileTransfer::peerNeedsUpgradeEventHandlerSlot(const QString & contactID) { + + QtFileTransferNotifyDialog qtFileTransferNotifyDialog(_qtFileTransferWidget); + qtFileTransferNotifyDialog.setTitle(tr("Tell your contact
to upgrade
his @product@")); + QString message = contactID + " " + QString(tr("is trying to send you a file " + "but his @product@ must be upgraded in order to receive it." + "Tell him to download the latest version.")); + qtFileTransferNotifyDialog.setMessage(message); + + qtFileTransferNotifyDialog.exec(); +} + +const QString QtFileTransfer::getChosenFile() const { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString startDir = QString::fromUtf8(config.getLastUploadedFileFolder().c_str()); + + QString filename = QFileDialog::getOpenFileName( + _qtFileTransferWidget, + "Choose a file", + startDir, + tr("All Files (*.* *)") + ); + return filename; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,100 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferDownloadItem.h" + +#include +#include + +#include +#include +#include + +#include + +QtFileTransferDownloadItem::QtFileTransferDownloadItem(QWidget * parent, ReceiveFileSession * fileSession, const QString & path) + : QtFileTransferItem(parent, QtFileTransferItem::Download), _receiveFileSession(fileSession) { + + _filename = path + QString(QDir::separator()) + QString::fromUtf8(fileSession->getFileName().c_str()); + + setFilename(QString::fromUtf8(fileSession->getFileName().c_str())); + setContact(QString::fromUtf8(_receiveFileSession->getIMContact().getDisplayContactId().c_str())); + + // bind to fileSession events + _receiveFileSession->fileTransferProgressionEvent += + boost::bind(&QtFileTransferDownloadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + _receiveFileSession->fileTransferEvent += + boost::bind(&QtFileTransferDownloadItem::fileTransferEventHandler, this, _1, _2, _3, _4); + _receiveFileSession->moduleFinishedEvent += + boost::bind(&QtFileTransferDownloadItem::moduleFinishedEventHandler, this, _1); + //// + + //TODO: check if the fileSession has been cancelled, if yes call updateState + if (_receiveFileSession->getLastEvent() == IFileSession::IFileSessionEventFileTransferCancelledByPeer) { + updateStateEvent((int)IFileSession::IFileSessionEventFileTransferCancelledByPeer); + } +} + +void QtFileTransferDownloadItem::pause() { + _receiveFileSession->pause(); +} + +void QtFileTransferDownloadItem::resume() { + _receiveFileSession->resume(); +} + +void QtFileTransferDownloadItem::stop() { + _receiveFileSession->stop(); +} + +void QtFileTransferDownloadItem::fileTransferProgressionEventHandler( + ReceiveFileSession & sender, IMContact imContact, File sentFile, int percentage) { + + LOG_DEBUG("progress: " + String::fromNumber(percentage)); + progressChangeEvent(percentage); +} + +void QtFileTransferDownloadItem::fileTransferEventHandler(ReceiveFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { + + LOG_DEBUG("filetransfer event: " + String::fromNumber(event)); + + updateStateEvent((int)event); +} + +void QtFileTransferDownloadItem::moduleFinishedEventHandler(CoIpModule & sender) { + LOG_DEBUG("module receiveFileSession has finished, delete it"); + + // prevent multiple calls + if (!_receiveFileSession) { + return; + } + //// + + // unbind to fileSession events + _receiveFileSession->fileTransferProgressionEvent -= + boost::bind(&QtFileTransferDownloadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + _receiveFileSession->fileTransferEvent -= + boost::bind(&QtFileTransferDownloadItem::fileTransferEventHandler, this, _1, _2, _3, _4); + _receiveFileSession->moduleFinishedEvent -= + boost::bind(&QtFileTransferDownloadItem::moduleFinishedEventHandler, this, _1); + //// + + OWSAFE_DELETE(_receiveFileSession); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERDOWNLOADITEM_H +#define OWQTFILETRANSFERDOWNLOADITEM_H + +#include "QtFileTransferItem.h" + +#include + +class ReceiveFileSession; +class SendFileSession; +class File; +class IMContact; +class CoIpModule; + +/** + * A QtFileTransferItem dedicate to upload. + * @author Mathieu Stute + */ +class QtFileTransferDownloadItem : public QtFileTransferItem { + Q_OBJECT +public: + + /** + * Default constructor. + */ + QtFileTransferDownloadItem(QWidget * parent, ReceiveFileSession * fileSession, const QString & path); + + /** + * @see QtFileTransferItem::isRunning(). + */ + bool isRunning() const { + return (_receiveFileSession != NULL); + } + +private Q_SLOTS: + + /** + * @see ReceiveFileSession::pause(). + */ + void pause(); + + /** + * @see ReceiveFileSession::resume(). + */ + void resume(); + + /** + * @see ReceiveFileSession::stop(). + */ + void stop(); + +private: + + /** + * @see ReceiveFileSession::fileTransferProgressionEvent + */ + void fileTransferProgressionEventHandler(ReceiveFileSession & sender, + IMContact imContact, File sentFile, int percentage); + + /** + * @see ReceiveFileSession::fileTransferEvent + */ + void fileTransferEventHandler(ReceiveFileSession & sender, + IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); + + /** + * The module has finished its job, it can be released. + * @see CoIpModule::moduleFinishedEvent + */ + void moduleFinishedEventHandler(CoIpModule & sender); + + /** + * Direct link to the ReceiveFileSession. + */ + ReceiveFileSession * _receiveFileSession; +}; + +#endif //OWQTFILETRANSFERDOWNLOADITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransfer.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFER_H +#define OWQTFILETRANSFER_H + +#include + +#include +#include + +#include +#include + +class CoIpManager; +class FileSessionManager; +class QtFileTransferWidget; +class IMContactSet; +class CContactList; + +/** + * Qt file transfer object. + * + * @author Mathieu Stute + * @author Philippe Bernery + */ +class QtFileTransfer : public QObject, public Trackable { + Q_OBJECT +public: + + /** + * Constructor. + */ + QtFileTransfer(QObject * parent, CoIpManager * coIpManager); + + /** + * Destructor. + */ + ~QtFileTransfer(); + + /** + * Creates a SendFileSession. + * @param imContactSet the set of contacts. + * @param filename the file to upload. + * @param cContactList a reference to the CContactList. + */ + void createSendFileSession(IMContactSet imContactSet, const QString & filename, CContactList & cContactList); + + /** + * Return a pointer to the File Transfer Widget. + * @return a pointer to the QtFileTransferWidget. + */ + QtFileTransferWidget * getFileTransferWidget() { return _qtFileTransferWidget; } + + /** + * Open a file chooser and return the chosen one. + * @return the chosen file. + */ + const QString getChosenFile() const; + +Q_SIGNALS: + + /** + * @brief Thread safe code + */ + void newReceiveFileSessionCreatedEventHandlerSignal(ReceiveFileSession * fileSession); + + /** + * @brief Thread safe code + */ + void needUpgradeEventHandlerSignal(); + + /** + * @brief Thread safe code + */ + void peerNeedsUpgradeEventHandlerSignal(const QString & contactID); + +private Q_SLOTS: + + /** + * @brief Thread safe code + */ + void newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession * fileSession); + + /** + * @brief Thread safe code + */ + void needUpgradeEventHandlerSlot(); + + /** + * @brief Thread safe code + */ + void peerNeedsUpgradeEventHandlerSlot(const QString & contactID); + +private: + + /** + * @see FileSessionManager::newReceiveFileSessionCreatedEvent + */ + void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, ReceiveFileSession fileSession); + + /** + * @see FileSessionManager::needUpgradeEvent + */ + void needUpgradeEventHandler(FileSessionManager & sender); + + /** + * @see FileSessionManager::peerNeedsUpgradeEvent + */ + void peerNeedsUpgradeEventHandler(FileSessionManager & sender, const std::string contactID); + + /** + * Direct link to the transfer widget. + */ + QtFileTransferWidget * _qtFileTransferWidget; + + /** + * Direct link to CoIpManager. + */ + CoIpManager * _coIpManager; +}; + +#endif //OWQTFILETRANSFER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,233 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferItem.h" +#include "QtFileTransferNotifyDialog.h" +#include "ui_FileTransferItem.h" + +#include +#include +#include +#include + +#include +#include + +#include + +QtFileTransferItem::QtFileTransferItem(QWidget * parent, Type type) + : QWidget(parent), + _type(type) { + + _removeClicked = false; + + // init main widget + _ui = new Ui::FileTransferItem(); + _ui->setupUi(this); + _ui->progressBar->setMaximum(100); + setProgress(0); + + // configure initial state + if (_type == Download) { + setState(tr("Downloading...")); + } else { + setState(tr("Waiting for peer...")); + } + updateButtonsInProgress(); + //// + + // SIGNAL/SLOT for thread safe + SAFE_CONNECT(this, SIGNAL(progressChangeEvent(int)), + SLOT(setProgress(int))); + SAFE_CONNECT(this, SIGNAL(stateChangeEvent(const QString &)), + SLOT(setState(const QString &))); + SAFE_CONNECT(this, SIGNAL(updateStateEvent(int)), + SLOT(updateState(int))); + //// +} + +QtFileTransferItem::~QtFileTransferItem() { + OWSAFE_DELETE(_ui); +} + +void QtFileTransferItem::setFilename(const QString & filename) { + _ui->filenameLabel->setText("" + filename + ""); +} + +void QtFileTransferItem::setState(const QString & state) { + _ui->statusLabel->setText(state); +} + +void QtFileTransferItem::setContact(const QString & contact) { + _contact = contact; + if (_type == Download) { + _ui->contactLabel->setText(" " + tr("From: ") + contact + ""); + } else { + _ui->contactLabel->setText(" " + tr("To: ") + contact + ""); + } +} + +void QtFileTransferItem::setFileSize(int size) { +} + +void QtFileTransferItem::setProgress(int progress) { + _ui->progressBar->setValue(progress); + //HACK: IFileSessionEventFileTransferFinished is not always sent + if (progress != 100) { + stateChangeEventDownUp(); + } else { + updateButtonsFinished(); + } +} + +void QtFileTransferItem::updateButtonsFinished() { + disconnectButtons(); + SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(open())); + SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(remove())); + _ui->cancelOpenButton->setText(tr("Open")); + _ui->removePauseResumeButton->setText(tr("Remove")); + _ui->removePauseResumeButton->setEnabled(true); + _ui->cancelOpenButton->setEnabled(true); + //FIXME: remove the status bar from its layout + //_ui->progressBar->hide(); +} + +void QtFileTransferItem::updateButtonsPaused() { + disconnectButtons(); + SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); + SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(resume())); + _ui->cancelOpenButton->setText(tr("Cancel")); + _ui->removePauseResumeButton->setText(tr("Resume")); + _ui->removePauseResumeButton->setEnabled(true); + _ui->cancelOpenButton->setEnabled(false); +} + +void QtFileTransferItem::updateButtonsPausedByPeer() { + disconnectButtons(); + SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); + SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(pause())); + _ui->cancelOpenButton->setText(tr("Cancel")); + _ui->removePauseResumeButton->setText(tr("Pause")); + _ui->removePauseResumeButton->setEnabled(false); + _ui->cancelOpenButton->setEnabled(false); +} + +void QtFileTransferItem::updateButtonsInProgress() { + disconnectButtons(); + SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); + SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(pause())); + _ui->cancelOpenButton->setText(tr("Cancel")); + _ui->removePauseResumeButton->setText(tr("Pause")); + _ui->removePauseResumeButton->setEnabled(true); + _ui->cancelOpenButton->setEnabled(true); +} + +void QtFileTransferItem::disconnectButtons() { + _ui->cancelOpenButton->disconnect(SIGNAL(clicked())); + _ui->removePauseResumeButton->disconnect(SIGNAL(clicked())); +} + +void QtFileTransferItem::remove() { + _removeClicked = true; + removeClicked(); +} + +void QtFileTransferItem::open() { + LOG_DEBUG("open from file transfer manager: " + _filename.toUtf8()); +#ifdef OS_WINDOWS + //TODO: other systems + WebBrowser::openUrl(std::string(_filename.toUtf8())); +#endif +} + +void QtFileTransferItem::updateState(int e) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString companyWebSiteUrl = QString::fromUtf8(config.getCompanyWebSiteUrl().c_str()); + + IFileSession::IFileSessionEvent event = (IFileSession::IFileSessionEvent) e; + QtFileTransferNotifyDialog * qtFileTransferNotifyDialog; + + switch(event) { + case IFileSession::IFileSessionEventInviteToTransfer: + stateChangeEvent(tr("Starting")); + updateButtonsInProgress(); + break; + case IFileSession::IFileSessionEventWaitingForAnswer: + stateChangeEvent(tr("Waiting for anwser...")); + updateButtonsInProgress(); + break; + case IFileSession::IFileSessionEventFileTransferFinished: + stateChangeEvent(tr("Done")); + updateButtonsFinished(); + break; + case IFileSession::IFileSessionEventFileTransferFailed: + stateChangeEvent(tr("Failed")); + updateButtonsFinished(); + qtFileTransferNotifyDialog = new QtFileTransferNotifyDialog(this); + qtFileTransferNotifyDialog->setTitle(tr("An error occured during the file transfer")); + qtFileTransferNotifyDialog->setMessage(tr("This may be caused by :") + "
" + + "
    " + + "
  • " + tr("Your @product@ is not up to date. Please download the latest version on") + + " " + companyWebSiteUrl + "
    " + + "
  • " + tr("The @company@ network may be temporarily unavailable. Please try later.") + + "
"); + qtFileTransferNotifyDialog->exec(); + OWSAFE_DELETE(qtFileTransferNotifyDialog); + break; + case IFileSession::IFileSessionEventFileTransferPaused: + stateChangeEvent(tr("Paused")); + updateButtonsPaused(); + break; + case IFileSession::IFileSessionEventFileTransferPausedByPeer: + stateChangeEvent(tr("Paused by peer")); + updateButtonsPausedByPeer(); + break; + case IFileSession::IFileSessionEventFileTransferResumed: + stateChangeEventDownUp(); + updateButtonsInProgress(); + break; + case IFileSession::IFileSessionEventFileTransferResumedByPeer: + stateChangeEventDownUp(); + updateButtonsInProgress(); + break; + case IFileSession::IFileSessionEventFileTransferCancelled: + stateChangeEvent(tr("Cancelled")); + updateButtonsFinished(); + break; + case IFileSession::IFileSessionEventFileTransferCancelledByPeer: + stateChangeEvent(tr("Cancelled by peer")); + updateButtonsFinished(); + break; + case IFileSession::IFileSessionEventFileTransferBegan: + stateChangeEventDownUp(); + updateButtonsInProgress(); + break; + default: + LOG_FATAL("unknonw IFileSessionEvent: " + String::fromNumber(event)); + } +} + +void QtFileTransferItem::stateChangeEventDownUp() { + + if (_type == Download) { + stateChangeEvent(tr("Downloading...")); + } else { + stateChangeEvent(tr("Uploading...")); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,212 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERITEM_H +#define OWQTFILETRANSFERITEM_H + +#include +#include + +#include + +#include + +namespace Ui { class FileTransferItem; } + +/** + * Qt file transfer item widget. + * Represents graphically one file transfer. + * Auto adapt its appearance to its state. + * + * @author Mathieu Stute + */ +class QtFileTransferItem : public QWidget, public Trackable { + Q_OBJECT +public: + + enum Type { + /** Download type */ + Download, + + /** Upload type */ + Upload + }; + + /** + * Constructor. + * @param parent the parent widget + * @param type type of QtFileTransferItem (Download or Upload) + */ + QtFileTransferItem(QWidget * parent, Type type); + + /** + * Destructor. + */ + ~QtFileTransferItem(); + + /** + * Returns true if the transfer is not finished. + * @return true if finished otherwise false. + */ + virtual bool isRunning() const = 0; + + /** + * @return true if the remove button has been clicked. + */ + bool removeHasBeenClicked() { + return _removeClicked; + } + +Q_SIGNALS: + + /** + * The state has changed. + * @param state the new state. + */ + void stateChangeEvent(const QString & state); + + /** + * Progression change (thread safe) + * @param progress total progress. + */ + void progressChangeEvent(int progress); + + // the int is a IFileSession::IFileSessionEvent + void updateStateEvent(int event); + + /** + * Remove has been clicked. + */ + void removeClicked(); + +private Q_SLOTS: + + /** + * Set the progress of the transfer. + * @param progress progress. + */ + void setProgress(int progress); + + /** + * Set the state of the transfer. + * @param state state. + */ + void setState(const QString & state); + + /** + * Update state. + * @param event a IFileSession::IFileSessionEvent + */ + void updateState(int event); + +protected Q_SLOTS: + + /** + * TODO: + */ + void remove(); + + /** + * Open the file with the associated application. + */ + void open(); + + /** + * @see ReceiveFileSession::pause(). + */ + virtual void pause() = 0; + + /** + * @see ReceiveFileSession::resume(). + */ + virtual void resume() = 0; + + /** + * @see ReceiveFileSession::stop(). + */ + virtual void stop() = 0; + +protected: + + /** + * Set the tranfer filename. + * @param filename filename. + */ + void setFilename(const QString & filename); + + /** + * Set the total size of the file. + * @param size size of the file. + */ + void setFileSize(int size); + + /** + * Set contact name. + * @param contact contact name. + */ + void setContact(const QString & contact); + + /** + * Disconnect buttons. + */ + void disconnectButtons(); + + /** + * Update gui to state finished. + */ + void updateButtonsFinished(); + + /** + * Update gui to state paused. + */ + void updateButtonsPaused(); + + /** + * Update gui to state paused by peer. + */ + void updateButtonsPausedByPeer(); + + /** + * Update gui to state downloading/uploading. + */ + void updateButtonsInProgress(); + + /** + * Emits stateChangeEvent for uploading and downloading. + */ + void stateChangeEventDownUp(); + + /** + * Type (Upload or Download). + */ + Type _type; + + /** complete filename */ + QString _filename; + + /** the peer contact */ + QString _contact; + + /** remove button clicked handler */ + bool _removeClicked; + + Ui::FileTransferItem * _ui; +}; + +#endif //OWQTFILETRANSFERITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferNotifyDialog.h" +#include "ui_NotifyDialog.h" + +#include +#include + +QtFileTransferNotifyDialog::QtFileTransferNotifyDialog(QWidget * parent) + : QDialog(parent) { + + _ui = new Ui::NotifyDialog(); + _ui->setupUi(this); + + //install header image + WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/file-transfer.png", WidgetBackgroundImage::AdjustSize); + //// +} + +QtFileTransferNotifyDialog::~QtFileTransferNotifyDialog() { + OWSAFE_DELETE(_ui); +} + +void QtFileTransferNotifyDialog::setTitle(const QString & title) { + + QString temp = QString("" + "

" + "%1" + "

").arg(title); + _ui->headerLabel->setText(temp); +} + +void QtFileTransferNotifyDialog::setMessage(const QString & message) { + + QString temp = QString("" + "

" + "%1

").arg(message); + _ui->statusLabel->setText(temp); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERNOTIFYDIALOG_H +#define OWQTFILETRANSFERNOTIFYDIALOG_H + +#include + +#include + +namespace Ui {class NotifyDialog;} + +/** + * Qt file transfer upgrade dialog. + * + * @author Nicolas Couturier + * @author Mathieu Stute + */ +class QtFileTransferNotifyDialog : public QDialog { + Q_OBJECT +public: + + /** + * Constructor. + * @param parent the parent widget + */ + QtFileTransferNotifyDialog(QWidget * parent); + + /** + * Destructor. + */ + ~QtFileTransferNotifyDialog(); + + /** + * Sets the header label. + */ + void setTitle(const QString & title); + + /** + * Sets the status label. + */ + void setMessage(const QString & message); + +private: + + Ui::NotifyDialog * _ui; +}; + +#endif //OWQTFILETRANSFERNOTIFYDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,97 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferUploadItem.h" + +#include + +#include +#include +#include +#include + +#include + +QtFileTransferUploadItem::QtFileTransferUploadItem(QWidget * parent, SendFileSession * fileSession, + const QString & filename, const std::string & contact) + : QtFileTransferItem(parent, QtFileTransferItem::Upload), + _sendFileSession(fileSession) { + + _filename = filename; + + File f(std::string(filename.toUtf8())); + setFilename(QString::fromUtf8(f.getFileName().c_str())); + setContact(QString::fromUtf8(contact.c_str())); + + // bind to fileSession events + _sendFileSession->fileTransferProgressionEvent += + boost::bind(&QtFileTransferUploadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + _sendFileSession->fileTransferEvent += + boost::bind(&QtFileTransferUploadItem::fileTransferEventHandler, this, _1, _2, _3, _4); + _sendFileSession->moduleFinishedEvent += + boost::bind(&QtFileTransferUploadItem::moduleFinishedEventHandler, this, _1); + //// +} + +void QtFileTransferUploadItem::pause() { + _sendFileSession->pause(); +} + +void QtFileTransferUploadItem::resume() { + _sendFileSession->resume(); +} + +void QtFileTransferUploadItem::stop() { + _sendFileSession->stop(); +} + +void QtFileTransferUploadItem::fileTransferProgressionEventHandler( + SendFileSession & sender, IMContact imContact, File sentFile, int percentage) { + + LOG_DEBUG("fileTransferProgressionEventHandler: " + String::fromNumber(percentage) + "%"); + progressChangeEvent(percentage); +} + +void QtFileTransferUploadItem::fileTransferEventHandler( + SendFileSession & sender, IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { + + LOG_DEBUG("fileTransferProgressionEventHandler: " + String::fromNumber((int)event)); + updateStateEvent((int)event); +} + +void QtFileTransferUploadItem::moduleFinishedEventHandler(CoIpModule & sender) { + LOG_DEBUG("module sendFileSession has finished, delete it"); + + // prevent multiple calls + if (!_sendFileSession) { + return; + } + //// + + // unbind to fileSession events + _sendFileSession->fileTransferProgressionEvent -= + boost::bind(&QtFileTransferUploadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); + _sendFileSession->fileTransferEvent -= + boost::bind(&QtFileTransferUploadItem::fileTransferEventHandler, this, _1, _2, _3, _4); + _sendFileSession->moduleFinishedEvent -= + boost::bind(&QtFileTransferUploadItem::moduleFinishedEventHandler, this, _1); + //// + + OWSAFE_DELETE(_sendFileSession); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERUPLOADITEM_H +#define OWQTFILETRANSFERUPLOADITEM_H + +#include "QtFileTransferItem.h" + +#include + +class SendFileSession; +class File; +class IMContact; +class CoIpModule; + +/** + * A QtFileTransferItem dedicate to upload. + * @author Mathieu Stute + */ +class QtFileTransferUploadItem : public QtFileTransferItem { + Q_OBJECT +public: + + /** + * Constructor. + */ + QtFileTransferUploadItem(QWidget * parent, SendFileSession * fileSession, + const QString & filename, const std::string & contact); + + /** + * @see QtFileTransferItem::isRunning(). + */ + bool isRunning() const { + return (_sendFileSession != NULL); + } + +private Q_SLOTS: + + /** + * @see ReceiveFileSession::pause(). + */ + void pause(); + + /** + * @see ReceiveFileSession::resume(). + */ + void resume(); + + /** + * @see ReceiveFileSession::stop(). + */ + void stop(); + +private: + + /** + * @see SendFileSession::fileTransferProgressionEvent. + */ + void fileTransferProgressionEventHandler(SendFileSession & sender, IMContact imContact, + File sentFile, int percentage); + + /** + * @see SendFileSession::fileTransferEvent. + */ + void fileTransferEventHandler(SendFileSession & sender, IFileSession::IFileSessionEvent event, + IMContact imContact, File sentFile); + + /** + * The module has finished its job, it can be released. + * @see CoIpModule::moduleFinishedEvent + */ + void moduleFinishedEventHandler(CoIpModule & sender); + + /** + * Direct link to SendFileSession. + */ + SendFileSession * _sendFileSession; +}; + +#endif //OWQTFILETRANSFERUPLOADITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFileTransferWidget.h" +#include "QtFileTransferDownloadItem.h" +#include "QtFileTransferUploadItem.h" +#include "ui_FileTransferDialog.h" + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +static int DOWNLOAD_TAB_INDEX = 0; +static int UPLOAD_TAB_INDEX = 1; + +QtFileTransferWidget::QtFileTransferWidget(QWidget * parent) + : QDialog(parent) { + + //init main widget + _ui = new Ui::FileTransferDialog(); + _ui->setupUi(this); + //// + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + +#ifdef OS_LINUX + const std::string &applicationIconPath = config.getApplicationIconPath(); + setWindowIcon(QIcon(QString::fromUtf8(applicationIconPath.c_str()))); +#endif + + if (!config.getFileTransferDownloadFolder().empty()) { + setDownloadFolder(QString::fromUtf8(config.getFileTransferDownloadFolder().c_str())); + } + + //connect signals to slots + SAFE_CONNECT(_ui->cleanButton, SIGNAL(pressed()), SLOT(cleanButtonClicked())); + SAFE_CONNECT(_ui->pathButton, SIGNAL(pressed()), SLOT(pathButtonClicked())); + //// +} + +QtFileTransferWidget::~QtFileTransferWidget() { + OWSAFE_DELETE(_ui); +} + +void QtFileTransferWidget::cleanButtonClicked() { + clean(true); +} + +void QtFileTransferWidget::clean(bool cleanButton) { + + if (_ui->tabWidget->currentIndex() == DOWNLOAD_TAB_INDEX) { + + int count = _ui->downloadTransferListWidget->count(); + for (int i = count - 1; i >= 0; i--) { + + QListWidgetItem * item = _ui->downloadTransferListWidget->item(i); + QtFileTransferDownloadItem * widgetItem = (QtFileTransferDownloadItem*)_ui->downloadTransferListWidget->itemWidget(item); + + if (cleanButton) { + if (!widgetItem->isRunning()) { + _ui->downloadTransferListWidget->takeItem(i); + OWSAFE_DELETE(widgetItem); + } + } else { + if ((widgetItem->removeHasBeenClicked()) && (!widgetItem->isRunning())) { + _ui->downloadTransferListWidget->takeItem(i); + OWSAFE_DELETE(widgetItem); + } + } + } + + } else { + + int count = _ui->uploadTransferListWidget->count(); + for (int i = count - 1; i >= 0; i--) { + + QListWidgetItem * item = _ui->uploadTransferListWidget->item(i); + QtFileTransferUploadItem * widgetItem = (QtFileTransferUploadItem*)_ui->uploadTransferListWidget->itemWidget(item); + + if (cleanButton) { + if (!widgetItem->isRunning()) { + _ui->uploadTransferListWidget->takeItem(i); + OWSAFE_DELETE(widgetItem); + } + } else { + if ((widgetItem->removeHasBeenClicked()) && (!widgetItem->isRunning())) { + _ui->uploadTransferListWidget->takeItem(i); + OWSAFE_DELETE(widgetItem); + } + } + } + } + +} + +void QtFileTransferWidget::pathButtonClicked() { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString startFolder = QString::fromUtf8(config.getFileTransferDownloadFolder().c_str()); + QString dirName = QFileDialog::getExistingDirectory(this, "Select a directory", startFolder); + if (!dirName.isEmpty()) { + setDownloadFolder(dirName); + } +} + +void QtFileTransferWidget::addReceiveItem(ReceiveFileSession * fileSession) { + + QtFileTransferDownloadItem * fileTransferItem = new QtFileTransferDownloadItem(this, fileSession, _downloadFolder); + SAFE_CONNECT(fileTransferItem, SIGNAL(removeClicked()), SLOT(itemRemoveClicked())); + QListWidgetItem * item = new QListWidgetItem(/*_ui->downloadTransferListWidget*/); + item->setSizeHint(fileTransferItem->minimumSizeHint()); + _ui->downloadTransferListWidget->insertItem(0, item); + _ui->downloadTransferListWidget->setItemWidget(item, fileTransferItem); + showDownloadTab(); + showAndRaise(); +} + +void QtFileTransferWidget::addSendItem(SendFileSession * fileSession, + const std::string & filename, const std::string & contact) { + + QtFileTransferUploadItem * fileTransferItem = new QtFileTransferUploadItem(this, fileSession, + QString::fromUtf8(filename.c_str()), contact); + SAFE_CONNECT(fileTransferItem, SIGNAL(removeClicked()), SLOT(itemRemoveClicked())); + QListWidgetItem * item = new QListWidgetItem(/*_ui->uploadTransferListWidget*/); + item->setSizeHint(fileTransferItem->minimumSizeHint()); + _ui->uploadTransferListWidget->insertItem(0, item); + _ui->uploadTransferListWidget->setItemWidget(item, fileTransferItem); + showUploadTab(); + showAndRaise(); +} + +void QtFileTransferWidget::setDownloadFolder(const QString & folder) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY, std::string(folder.toUtf8().constData())); + QDir dir(folder); + _ui->pathButton->setText(dir.dirName()); + _downloadFolder = folder; +} + +void QtFileTransferWidget::showDownloadTab() { + _ui->tabWidget->setCurrentIndex(DOWNLOAD_TAB_INDEX); + _ui->downloadTransferListWidget->scrollToTop(); +} + +void QtFileTransferWidget::showUploadTab() { + _ui->tabWidget->setCurrentIndex(UPLOAD_TAB_INDEX); + _ui->uploadTransferListWidget->scrollToTop(); +} + +void QtFileTransferWidget::itemRemoveClicked() { + clean(false); +} + +void QtFileTransferWidget::showAndRaise() { + activateWindow(); + showNormal(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/filetransfer/QtFileTransferWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,116 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFILETRANSFERWIDGET_H +#define OWQTFILETRANSFERWIDGET_H + +#include +#include + +#include + +class ReceiveFileSession; +class SendFileSession; + +namespace Ui { class FileTransferDialog; } + +/** + * Qt file transfer widget. + * + * @author Mathieu Stute + */ +class QtFileTransferWidget : public QDialog { + Q_OBJECT +public: + + /** + * Default constructor. + * @param parent the parent widget + */ + QtFileTransferWidget(QWidget * parent); + + /** + * Destructor. + */ + ~QtFileTransferWidget(); + + /** + * Set (graphically and in Config) the download folder. + * @param folder the path to the download folder. + */ + void setDownloadFolder(const QString & folder); + + /** + * Add a download item in the widget. + * @param fileSession the fileSession + */ + void addReceiveItem(ReceiveFileSession * fileSession); + + /** + * Add an upload item in the widget + * @param fileSession the file session + * @param filename the filename + * @param contact the contact + */ + void addSendItem(SendFileSession * fileSession, const std::string & filename, + const std::string & contact); + + /** + * Show and raise the widget. + */ + void showAndRaise(); + +private Q_SLOTS: + + /** + * Clean button has been clicked. + */ + void cleanButtonClicked(); + + /** + * Path button has been clicked. + */ + void pathButtonClicked(); + + /** + * A remove button has been clicked. + */ + void itemRemoveClicked(); + +private: + + void clean(bool cleanButton); + + /** + * Set the upload tab active. + */ + void showUploadTab(); + + /** + * Set the download tab active. + */ + void showDownloadTab(); + + /** a cache for the path to the download folder */ + QString _downloadFolder; + + Ui::FileTransferDialog * _ui; +}; + +#endif //OWQTFILETRANSFERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/HistoryWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/HistoryWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/HistoryWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/HistoryWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ + + HistoryWidget + + + + 0 + 0 + 400 + 575 + + + + + 0 + + + 6 + + + + + + + + Qt::CustomContextMenu + + + QAbstractItemView::NoEditTriggers + + + false + + + true + + + + + + + + ClearLineEdit + QLineEdit +
qtutil/ClearLineEdit.h
+
+
+ + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistory.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,436 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtHistory.h" + +#include "QtHistoryWidget.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + + +QString QtHistory::formatName(const std::string& name) const +{ + QString tmpUserName = QString::fromUtf8(name.c_str())/*.remove("sip:")*/; + + CQuteCom & cQuteCom = _cHistory.getCQuteCom(); + CUserProfile* cUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if(cUserProfile) + { + std::string uuid = cUserProfile->getCContactList().findContactThatOwns(name); + if(!uuid.empty()) + { + ContactProfile contactProfile = cUserProfile->getCContactList().getContactProfile(uuid); + if(!contactProfile.getShortDisplayName().empty()) + tmpUserName = QString::fromUtf8(contactProfile.getShortDisplayName().c_str()); + } + } + return tmpUserName; + +} + +static QDateTime qDateTimeForMemento(HistoryMemento* memento) { + Date dt = memento->getDate(); + QDate date(dt.getYear(), dt.getMonth(), dt.getDay()); + Time tm = memento->getTime(); + QTime time(tm.getHour(), tm.getMinute(), tm.getSecond()); + return QDateTime(date, time); +} + +QString QtHistory::formatDate(const QDateTime& dateTime) { + return dateTime.toString(Qt::SystemLocaleDate); +} + +QString QtHistory::formatDuration(const QTime& time) { + return time.toString(Qt::TextDate); +} + +QString QtHistory::textForMementoState(const HistoryMemento::State& state) const { + switch (state) { + case HistoryMemento::IncomingCall: + return tr("Incoming call"); + case HistoryMemento::OutgoingCall: + return tr("Outgoing call"); + case HistoryMemento::MissedCall: + return tr("Missed call"); + case HistoryMemento::RejectedCall: + return tr("Rejected call"); + case HistoryMemento::OutgoingSmsOk: + return tr("Outgoing SMS"); + case HistoryMemento::ChatSession: + return tr("Chat session"); + case HistoryMemento::OutgoingSmsNok: + case HistoryMemento::None: + case HistoryMemento::Any: + case HistoryMemento::FileTransferUploaded: + case HistoryMemento::FileTransferInProgress: + case HistoryMemento::FileTransferDownloaded: + case HistoryMemento::FileTransferCancelled: + case HistoryMemento::FileTransferPaused: + break; + } + return QString(); +} + +static QIcon iconForMementoState(HistoryMemento::State state) { + static QMap iconMap; + if (iconMap.isEmpty()) { + iconMap[HistoryMemento::IncomingCall] = QIcon(":/pics/history/call_incoming.png"); + iconMap[HistoryMemento::OutgoingCall] = QIcon(":/pics/history/call_outgoing.png"); + iconMap[HistoryMemento::MissedCall] = QIcon(":/pics/history/call_missed.png"); + iconMap[HistoryMemento::RejectedCall] = QIcon(":/pics/history/call_missed.png"); + iconMap[HistoryMemento::OutgoingSmsOk] = QIcon(":/pics/history/sms_sent.png"); + iconMap[HistoryMemento::ChatSession] = QIcon(":/pics/history/chat.png"); + } + QMap::ConstIterator it = iconMap.find(state); + if (it != iconMap.end()) { + return it.value(); + } else { + return QIcon(); + } +} + +static QTime qTimeForDuration(int duration) { + if (duration == -1) { + duration = 0; + } + QTime time; + return time.addSecs(duration); +} + +/** + * This helper class is used to sort history by date + */ +class HistoryMementoSorter { +public: + HistoryMementoSorter(HistoryMementoCollection* collection) + : _collection(collection) {} + + bool operator()(int id1, int id2) { + HistoryMemento* m1 = _collection->getMemento(id1); + Q_ASSERT(m1); + HistoryMemento* m2 = _collection->getMemento(id2); + Q_ASSERT(m2); + QDateTime dt1 = qDateTimeForMemento(m1); + QDateTime dt2 = qDateTimeForMemento(m2); + return dt1 > dt2; + } + +private: + HistoryMementoCollection* _collection; +}; + +QtHistory::QtHistory(CHistory & cHistory) + : QAbstractTableModel(NULL), + _cHistory(cHistory) { + + _mutex = new QMutex(QMutex::Recursive); + + _stateFilter = HistoryMemento::Any; + + QtQuteCom * qtQuteCom = (QtQuteCom *) _cHistory.getCQuteCom().getPresentation(); + _historyWidget = new QtHistoryWidget(qtQuteCom->getWidget(), this); + SAFE_CONNECT(_historyWidget, + SIGNAL(replayItemRequested(int)), + SLOT(replayItem(int)) + ); + SAFE_CONNECT(_historyWidget, + SIGNAL(removeItemRequested(int)), + SLOT(removeItem(int)) + ); + SAFE_CONNECT(_historyWidget, + SIGNAL(missedCallsSeen()), + SLOT(resetUnseenMissedCalls()) + ); + qtQuteCom->setQtHistoryWidget(_historyWidget); + + // define user use a QuteCom or a SIP account + UserProfile * userProfile = _cHistory.getCQuteCom().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); + if (userProfile) { + _isQuteComAccountConnected = userProfile->hasQuteComAccount(); + } else { + _isQuteComAccountConnected = false; + } + //// + + updatePresentation(); +} + +QtHistory::~QtHistory() { + delete _mutex; + + OWSAFE_DELETE(_chatLogViewer); + OWSAFE_DELETE(_historyWidget); +} + +QWidget * QtHistory::getWidget() const { + return _historyWidget->getWidget(); +} + +void QtHistory::historyLoadedEvent() { +} + +void QtHistory::updatePresentation() { + + reset(); + _mementoIdList.clear(); + + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + HistoryMap::const_iterator + it = collection->begin(), + end = collection->end(); + for (; it != end; ++it) { + _mementoIdList << it->first; + } + + HistoryMementoSorter sorter(collection); + qSort(_mementoIdList.begin(), _mementoIdList.end(), sorter); +} + +void QtHistory::replayItem(int id) { + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + HistoryMemento* memento = collection->getMemento(id); + + if(!memento) + return; + + if(!memento) + return; + + QtQuteCom * qtQuteCom = (QtQuteCom *) _cHistory.getCQuteCom().getPresentation(); + + QMessageBox mb(tr("@product@ - Call History"), + tr("Do you want to call %1?").arg(formatName(memento->getPeer())), + QMessageBox::Question, + QMessageBox::Yes | QMessageBox::Default, + QMessageBox::No | QMessageBox::Escape, + QMessageBox::NoButton, _historyWidget->getWidget()); + + switch (memento->getState()) { + case HistoryMemento::OutgoingSmsOk: + case HistoryMemento::OutgoingSmsNok: { + //Retrieve info & configure the Sms widget + std::string data = _cHistory.getMementoData(id); + QString text = QString::fromUtf8(data.c_str(), data.size()); + QString phoneNumber = QString::fromUtf8(_cHistory.getMementoPeer(id).c_str()); + + //Test existance of Sms (available only if a QuteComAccount has been created) + QtSms * sms = qtQuteCom->getQtSms(); + if (sms) { + sms->setText(text); + sms->setPhoneNumber(phoneNumber); + sms->getWidget()->show(); + } + break; + } + + case HistoryMemento::OutgoingCall: + case HistoryMemento::IncomingCall: + case HistoryMemento::MissedCall: + case HistoryMemento::RejectedCall: + if (mb.exec() == QMessageBox::Yes) { + _cHistory.replay(id); + } + break; + + case HistoryMemento::ChatSession: + _chatLogViewer = new QtChatLogViewer(NULL, *qtQuteCom, QString::fromUtf8(memento->getData().c_str())); + _chatLogViewer->show(); + break; + + default: + break; + } +} + +void QtHistory::removeItem(int id) { + int firstRow = _mementoIdList.indexOf(id); + if (firstRow == -1) { + return; + } + beginRemoveRows(QModelIndex(), firstRow, firstRow); + _cHistory.removeHistoryMemento(id); + _mementoIdList.removeAll(id); + endRemoveRows(); +} + +void QtHistory::mementoAddedEvent(unsigned id) { + beginInsertRows(QModelIndex(), 0, 0); + _mementoIdList.insert(0, id); + endInsertRows(); +} + +void QtHistory::mementoUpdatedEvent(unsigned id) { +} + +void QtHistory::mementoRemovedEvent(unsigned id) { + int firstRow = _mementoIdList.indexOf(id); + if (firstRow == -1) { + if(id == 0) + updatePresentation(); + return; + } + LOG_WARN("We should not reach this code"); + // We should not reach this code because the memento has probably been + // removed by removeItem, which should have removed the id from our list + beginRemoveRows(QModelIndex(), firstRow, firstRow); + _mementoIdList.removeAll(id); + endRemoveRows(); +} + +void QtHistory::unseenMissedCallsChangedEvent(int count) { +} + +void QtHistory::resetUnseenMissedCalls() { + _cHistory.resetUnseenMissedCalls(); +} + +void QtHistory::clearAllEntries() { + _cHistory.clear(HistoryMemento::Any); +} + +void QtHistory::clearSmsEntries() { + _cHistory.clear(HistoryMemento::OutgoingSmsOk); +} + +void QtHistory::clearChatEntries() { + _cHistory.clear(HistoryMemento::ChatSession); +} + +void QtHistory::clearIncomingCallEntries() { + _cHistory.clear(HistoryMemento::IncomingCall); +} + +void QtHistory::clearOutgoingCallEntries() { + _cHistory.clear(HistoryMemento::OutgoingCall); +} + +void QtHistory::clearMissedCallEntries() { + _cHistory.clear(HistoryMemento::MissedCall); +} + +void QtHistory::clearRejectedCallEntries() { + _cHistory.clear(HistoryMemento::RejectedCall); +} + +CHistory & QtHistory::getCHistory() const { + return _cHistory; +} + +int QtHistory::rowCount(const QModelIndex& parent) const { + if (parent.isValid()) { + return 0; + } + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + return collection->size(); +} + +int QtHistory::columnCount(const QModelIndex&) const { + return 4; +} + +QVariant QtHistory::data(const QModelIndex& index, int role) const { + if (index.row() < 0 || index.row() >= _mementoIdList.size()) { + return QVariant(); + } + int id = _mementoIdList[index.row()]; + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + HistoryMemento* memento = collection->getMemento(id); + if (!memento) { + LOG_ERROR("Couldn't get memento for id " + String::fromNumber(id)); + return QVariant(); + } + + if (role == Qt::DisplayRole) { + switch (index.column()) { + case 0: + return textForMementoState(memento->getState()); + + case 1: + if(memento->getAlias().size()) + return QVariant(formatName(memento->getAlias())); + return QVariant(formatName(memento->getPeer())); + + case 2: + return QVariant(formatDate(qDateTimeForMemento(memento))); + + case 3: + return QVariant(formatDuration(qTimeForDuration(memento->getDuration()))); + + default: + return QVariant(); + } + } else if (role == Qt::DecorationRole) { + if (index.column() == 0) { + return QVariant(iconForMementoState(memento->getState())); + } else { + return QVariant(); + } + } else if (role == Qt::UserRole) { + return QVariant(id); + } + return QVariant(); +} + +QVariant QtHistory::headerData(int section, Qt::Orientation orientation, int role) const { + if (role != Qt::DisplayRole) { + return QVariant(); + } + + if (orientation == Qt::Vertical) { + return QVariant(); + } + + switch (section) { + case 0: + return tr("Type"); + + case 1: + return tr("Name/ID"); + + case 2: + return tr("Date"); + + case 3: + return tr("Duration"); + + default: + return QVariant(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistory.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,139 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTHISTORY_H +#define QTHISTORY_H + +#include + +#include + +#include +#include +#include + +class CHistory; +class QtChatLogViewer; +class QtHistoryWidget; + +/** + * Qt Presentation component for history. + * + * It presents the history as a Qt model. + * + * One can get the memento id of a row using data(index, Qt::UserRole). + * + * @author Mathieu Stute + * @author Aurelien Gateau + */ +class QtHistory : public QAbstractTableModel, public PHistory { + Q_OBJECT +public: + + QtHistory(CHistory & cHistory); + + ~QtHistory(); + + virtual void updatePresentation(); + + void clearAllEntries(); + + void historyLoadedEvent(); + + void mementoAddedEvent(unsigned id); + + void mementoUpdatedEvent(unsigned id); + + void mementoRemovedEvent(unsigned id); + + void unseenMissedCallsChangedEvent(int count); + + void clearSmsEntries(); + + void clearChatEntries(); + + void clearIncomingCallEntries(); + + void clearOutgoingCallEntries(); + + void clearMissedCallEntries(); + + void clearRejectedCallEntries(); + + QWidget * getWidget() const; + + CHistory & getCHistory() const; + + /** + * @name QAbstractTableModel implementation + * @{ + */ + virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; + + virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; + + virtual QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const; + + virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; + /** @} */ + + QString formatName(const std::string& name) const; + + /** + * Format a date in the date column + * Public so that QtHistoryWidget can compute reasonable column widths + */ + static QString formatDate(const QDateTime&); + + /** + * Format the duration column + */ + static QString formatDuration(const QTime&); + + /** + * Return the text for the memento state. Not static because it uses tr() + */ + QString textForMementoState(const HistoryMemento::State& state) const; + +private Q_SLOTS: + + void replayItem(int id); + + void removeItem(int id); + + void resetUnseenMissedCalls(); + +private: + + QtHistoryWidget * _historyWidget; + + QtChatLogViewer * _chatLogViewer; + + HistoryMemento::State _stateFilter; + + CHistory & _cHistory; + + mutable QMutex * _mutex; + + bool _isQuteComAccountConnected; + + QList _mementoIdList; +}; + +#endif //QTHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,208 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtHistoryWidget.h" + +#include "ui_HistoryWidget.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +QtHistoryWidget::QtHistoryWidget(QWidget * parent, QtHistory * qtHistory) + : QObject(parent), + _cHistory(qtHistory->getCHistory()), + _qtHistory(qtHistory) { + + _qtToolBar = NULL; + _qtCallBar = NULL; + _historyWidget = new QWidget(parent); + + _ui = new Ui::HistoryWidget(); + _ui->setupUi(_historyWidget); + + QIcon filterIcon(":/pics/history/filter.png"); + _ui->lineEdit->createLeftButton(filterIcon); + + _proxyModel = new QSortFilterProxyModel(this); + _proxyModel->setSourceModel(qtHistory); + _proxyModel->setFilterKeyColumn(1); + _ui->treeView->setModel(_proxyModel); + SAFE_CONNECT_RECEIVER(_ui->lineEdit, SIGNAL(textChanged(const QString&)), + _proxyModel, SLOT(setFilterFixedString(const QString&)) ); + +//#if defined(OS_MACOSX) +// _historyWidget->layout()->setMargin(10); +//#endif + + computeTreeViewColumnSizes(); + + //treeView + SAFE_CONNECT(_ui->treeView, + SIGNAL(doubleClicked(const QModelIndex&)), + SLOT(emitReplayItemRequested(const QModelIndex&)) + ); + SAFE_CONNECT(_ui->treeView, + SIGNAL(clicked(const QModelIndex&)), + SIGNAL(missedCallsSeen()) ); + + SAFE_CONNECT(_ui->treeView->selectionModel(), + SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), + SLOT(updateCallBarFromIndex(const QModelIndex&)) + ); + + SAFE_CONNECT(_ui->treeView, + SIGNAL(customContextMenuRequested(const QPoint&)), + SLOT(showPopupMenuForCurrentIndex()) + ); +} + +QtHistoryWidget::~QtHistoryWidget() { + OWSAFE_DELETE(_ui); + OWSAFE_DELETE(_historyWidget); +} + +QWidget * QtHistoryWidget::getWidget() const { + return _historyWidget; +} + +int QtHistoryWidget::idFromIndex(const QModelIndex& proxyIndex) { + QModelIndex sourceIndex = _proxyModel->mapToSource(proxyIndex); + return _qtHistory->data(sourceIndex, Qt::UserRole).toInt(); +} + +void QtHistoryWidget::emitReplayItemRequested(const QModelIndex& index) { + int id = idFromIndex(index); + replayItemRequested(id); +} + +void QtHistoryWidget::updateCallBarFromIndex(const QModelIndex& index) { + if (!index.isValid()) { + return; + } + + int id = idFromIndex(index); + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + HistoryMemento* memento = collection->getMemento(id); + if (!memento || !_qtCallBar) { + return; + } + + if (memento->getState() != HistoryMemento::ChatSession) { + SipAddress sipAddress = memento->getPeer(); + _qtCallBar->setPhoneComboBoxEditText(sipAddress.toString()); + } +} + +void QtHistoryWidget::showPopupMenuForCurrentIndex() { + QModelIndex index = _ui->treeView->selectionModel()->currentIndex(); + if (!index.isValid()) { + return; + } + + int id = idFromIndex(index); + HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); + HistoryMemento* memento = collection->getMemento(id); + Q_ASSERT(memento); + + QMenu menu(_ui->treeView); + QAction * replayAction; + switch (memento->getState()) { + case HistoryMemento::OutgoingSmsOk: + case HistoryMemento::OutgoingSmsNok: + replayAction = menu.addAction(QIcon(":/pics/actions/send-sms-16.png"), tr("Open in SMS window")); + break; + case HistoryMemento::OutgoingCall: + case HistoryMemento::IncomingCall: + case HistoryMemento::MissedCall: + case HistoryMemento::RejectedCall: + replayAction = menu.addAction(QIcon(":/pics/actions/accept-phone.png"), tr("Call this peer")); + break; + case HistoryMemento::ChatSession: + replayAction = menu.addAction(QIcon(":/pics/actions/chat.png"), tr("Show chat log")); + break; + default: + LOG_FATAL("Unhandled memento state"); + break; + } + + QAction* deleteAction = menu.addAction(QIcon(":/pics/actions/delete.png"), tr("Erase this entry")); + + QAction* action = menu.exec(QCursor::pos()); + if (action == replayAction) { + replayItemRequested(id); + } else if (action == deleteAction) { + removeItemRequested(id); + } +} + +void QtHistoryWidget::retranslateUi() { + _ui->retranslateUi(_historyWidget); + _qtHistory->updatePresentation(); +} + +void QtHistoryWidget::computeTreeViewColumnSizes() { + // Do *not* use QHeaderView::ResizeToContents because this cause the + // widget to ask for the data of *all* the rows. + QHeaderView* header = _ui->treeView->header(); + + int margin = _ui->treeView->style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; + + // State + // lst is the list of state with a text, see QtHistory::textForMementoState + QList lst; + lst + << HistoryMemento::IncomingCall + << HistoryMemento::OutgoingCall + << HistoryMemento::MissedCall + << HistoryMemento::RejectedCall + << HistoryMemento::OutgoingSmsOk + << HistoryMemento::ChatSession; + int width = 0; + QFontMetrics fm = _ui->treeView->fontMetrics(); + Q_FOREACH(HistoryMemento::State state, lst) { + QString text = _qtHistory->textForMementoState(state); + width = qMax(width, fm.width(text)); + } + width += _ui->treeView->style()->pixelMetric(QStyle::PM_ListViewIconSize); + header->resizeSection(0, width + 4 * margin); + + // Name + header->resizeSection(1, fm.width("a long long long long username")); + + // Date + QString text = QtHistory::formatDate(QDateTime::currentDateTime()); + width = fm.width(text); + header->resizeSection(2, width + 2 * margin); + + // Duration + text = QtHistory::formatDuration(QTime(20, 0)); + width = fm.width(text); + header->setResizeMode(3, QHeaderView::Interactive); + header->resizeSection(3, width + 2 * margin); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/history/QtHistoryWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTHISTORYWIDGET_H +#define OWQTHISTORYWIDGET_H + +#include + +class QSortFilterProxyModel; +class QModelIndex; + +class CHistory; +class QtCallBar; +class QtHistory; +class QtToolBar; + +namespace Ui { class HistoryWidget; } + +/** + * History Widget. + * + * Shows call/sms/chat history + * + * @author Mathieu Stute + * @author Tanguy Krotoff + */ +class QtHistoryWidget : public QObject { + Q_OBJECT +public: + + QtHistoryWidget(QWidget * parent, QtHistory * qtHistory); + + ~QtHistoryWidget(); + + QWidget * getWidget() const; + + void setQtToolBar(QtToolBar * qtToolBar) { + _qtToolBar = qtToolBar; + } + + void setQtCallBar(QtCallBar * qtCallBar) { + _qtCallBar = qtCallBar; + } + +public Q_SLOTS: + + void retranslateUi(); + +Q_SIGNALS: + + void replayItemRequested(int id); + + void removeItemRequested(int id); + + void missedCallsSeen(); + +private Q_SLOTS: + + void updateCallBarFromIndex(const QModelIndex&); + + void showPopupMenuForCurrentIndex(); + + void emitReplayItemRequested(const QModelIndex&); + +private: + + Ui::HistoryWidget * _ui; + + QWidget * _historyWidget; + + QtToolBar * _qtToolBar; + + QtCallBar * _qtCallBar; + + CHistory & _cHistory; + + QtHistory * _qtHistory; + + QSortFilterProxyModel * _proxyModel; + + void computeTreeViewColumnSizes(); + + int idFromIndex(const QModelIndex& index); +}; + +#endif //OWQTHISTORYWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/HttpProxyLoginWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/HttpProxyLoginWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/HttpProxyLoginWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/HttpProxyLoginWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,437 @@ + + + + + HttpProxyLoginWindow + + + + 0 + 0 + 413 + 295 + + + + @product@ - Local HTTP Proxy + + + true + + + + 9 + + + 6 + + + + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + 100 + + + + + + + + + + HTTP Proxy Address: + + + + + + + + + + HTTP Proxy Port Number: + + + + + + + + + + HTTP Proxy Login: + + + + + + + QLineEdit::Password + + + + + + + HTTP Proxy Password: + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 213 + 31 + + + + + + + + OK + + + + + + + Cancel + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + okButton + clicked() + HttpProxyLoginWindow + accept() + + + 252 + 159 + + + 196 + 116 + + + + + cancelButton + clicked() + HttpProxyLoginWindow + reject() + + + 334 + 161 + + + 304 + 107 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/AIMSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/AIMSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/AIMSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/AIMSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,168 @@ + + + + + AIMSettings + + + + 0 + 0 + 302 + 158 + + + + AIM Settings + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 20 + + + + + + + + :/pics/protocols/aim.png + + + + + + + 0 + + + 6 + + + + + Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Login: + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 22 + + + + + + + + + + + :/pics/help.png + + + + + + + + 1 + 13 + 0 + 0 + + + + Forgot your AIM password? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 1 + 1 + 0 + 0 + + + + Get a new AIM Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+ 0 + +
+
+ + loginLineEdit + passwordLineEdit + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/FaceBookSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/FaceBookSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/FaceBookSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/FaceBookSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,137 @@ + + + FacebookSettings + + + + 0 + 0 + 302 + 279 + + + + Facebook Settings + + + + + + + + Email Address + + + + + + + + 220 + 0 + + + + + + + + Password + + + + + + + + 220 + 0 + + + + QLineEdit::Password + + + + + + + + + Qt::Horizontal + + + + 53 + 20 + + + + + + + + + 0 + 0 + + + + +Get a new Facebook Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 55 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 20 + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + passwordLineEdit + + + + + + + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/GoogleTalkSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/GoogleTalkSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/GoogleTalkSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/GoogleTalkSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,129 @@ + + + GoogleTalkSettings + + + + 0 + 0 + 325 + 149 + + + + GoogleTalk Settings + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + :/pics/protocols/google-talk.png + + + + + + + + + Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Login: + + + + + + + + + + + Forgot your GoogleTalk password? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + :/pics/help.png + + + + + + + Get a new GoogleTalk Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + passwordLineEdit + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/ICQSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/ICQSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/ICQSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/ICQSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,168 @@ + + + + + ICQSettings + + + + 0 + 0 + 302 + 158 + + + + ICQ Settings + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 20 + + + + + + + + :/pics/protocols/icq.png + + + + + + + 0 + + + 6 + + + + + Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Login: + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 22 + + + + + + + + + + + :/pics/help.png + + + + + + + + 1 + 13 + 0 + 0 + + + + Forgot your ICQ password? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + 1 + 1 + 0 + 0 + + + + Get a new ICQ Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+ 0 + +
+
+ + loginLineEdit + passwordLineEdit + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountManager.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountManager.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountManager.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,125 @@ + + + + + IMAccountManager + + + + 0 + 0 + 400 + 300 + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + 9 + + + 6 + + + + + + 0 + 70 + + + + 1 + + + false + + + + Protocol + + + + + Login + + + + + + + + 0 + + + 6 + + + + + Delete + + + :/pics/delete.png + + + + + + + Qt::Horizontal + + + + 110 + 26 + + + + + + + + Modify + + + :/pics/edit.png + + + + + + + Close + + + + + + + Add + + + :/pics/add.png + + + + + + + + + + treeWidget + addIMAccountButton + modifyIMAccountButton + deleteIMAccountButton + closeButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountTemplate.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountTemplate.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountTemplate.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/IMAccountTemplate.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,84 @@ + + + + + IMAccountTemplate + + + + 0 + 0 + 313 + 119 + + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + IM Account Settings + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Save + + + + + + + Cancel + + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/JabberSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/JabberSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/JabberSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/JabberSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,171 @@ + + JabberSettings + + + + 0 + 0 + 405 + 312 + + + + Jabber Settings + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 287 + 16 + + + + + + + + :/pics/protocols/jabber.png + + + + + + + 0 + + + 6 + + + + + Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Login: + + + + + + + + + 0 + + + 6 + + + + + Connect Server: + + + + + + + 5222 + + + + + + + <u>Advanced Options</u> + + + + + + + Use TLS if available + + + + + + + Port: + + + + + + + Allow plaintext authentication over unencrypted streams + + + + + + + Force old (port 5223) SSL + + + + + + + Require TLS + + + + + + + + + + + + + Resource: + + + + + + + + + loginLineEdit + passwordLineEdit + useTLSCheckBox + requireTLSCheckBox + forceOldSSLCheckBox + allowPlainTextAuthenticationCheckBox + connectServerLineEdit + portLineEdit + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/MSNSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/MSNSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/MSNSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/MSNSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,176 @@ + + MSNSettings + + + + 0 + 0 + 301 + 191 + + + + MSN Settings + + + + 9 + + + 6 + + + + + :/pics/protocols/msn.png + + + + + + + 0 + + + 6 + + + + + Password: + + + + + + + + + + Login: + + + + + + + QLineEdit::Password + + + + + + + + + 0 + + + 6 + + + + + Use HTTP method + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 6 + + + + + Forgot your MSN password? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + :/pics/help.png + + + + + + + Get a new MSN Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + passwordLineEdit + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/MySpaceSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/MySpaceSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/MySpaceSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/MySpaceSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,135 @@ + + + MySpaceSettings + + + + 0 + 0 + 302 + 158 + + + + MySpace Settings + + + + + + + + Email Address + + + + + + + + 220 + 0 + + + + + + + + Password + + + + + + + + 220 + 0 + + + + QLineEdit::Password + + + + + + + + + Qt::Horizontal + + + + 53 + 20 + + + + + + + + + 0 + 0 + + + + + Get a new MySpace Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 65 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 14 + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + passwordLineEdit + + + + + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,99 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAIMSettings.h" + +#include "ui_AIMSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string AIM_FORGOT_PASSWORD_LINK_EN = "http://www.aol.co.uk/aim/faqs/AIM_FAQ_Passwords.htm"; +static const std::string AIM_FORGOT_PASSWORD_LINK_FR = "http://www.aim.aol.fr/oubli.htm"; +static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_EN = "https://my.screenname.aol.com/_cqr/login/login.psp?mcState=initialized&seamless=n&createSn=1&sitedomain=www.aim.com&siteState=http%3A//www.aim.com/get_aim/congratsd2.adp&triedAimAuth=y&promo=380464"; +static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_FR = "https://reg.my.screenname.aol.com/_cqr/registration/initRegistration.psp?mcState=initialized&seamless=n&createSn=1&siteId=aimregPROD-fr&siteState=http%3A%2F%2Faim%2Eaol%2Efr%2Fupgrade%2Ejsp&mcAuth=%2FBcAG0RtoewAAPdvAHyUj0RtoigIxtPj0NfjWwgAAA%3D%3D"; + +QtAIMSettings::QtAIMSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtAIMSettings::~QtAIMSettings() { + OWSAFE_DELETE(_ui); +} + +void QtAIMSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::AIMSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtAIMSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + //FIXME to remove, must be done inside model + params.set(IMAccountParameters::OSCAR_PORT_KEY, 443); +} + +bool QtAIMSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtAIMSettings::forgotPasswordButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_FR); + } else { + WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_EN); + } +} + +void QtAIMSettings::createAccountButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_FR); + } else { + WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_EN); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtAIMSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTAIMSETTINGS_H +#define OWQTAIMSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class AIMSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtAIMSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtAIMSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtAIMSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void forgotPasswordButtonClicked(); + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::AIMSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTAIMSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFaceBookSettings.h" + +#include "ui_FaceBookSettings.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.facebook.com/"; + +QtFacebookSettings::QtFacebookSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtFacebookSettings::~QtFacebookSettings() { + OWSAFE_DELETE(_ui); +} + +void QtFacebookSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::FacebookSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtFacebookSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + +} + +bool QtFacebookSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + + +void QtFacebookSettings::createAccountButtonClicked() { + WebBrowser::openUrl(MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtFaceBookSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFACEBOOKSETTINGS_H +#define OWQTFACEBOOKSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class FacebookSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtFacebookSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtFacebookSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtFacebookSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::FacebookSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,111 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtGoogleTalkSettings.h" + +#include "ui_GoogleTalkSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string GOOGLETALK_SERVER = "talk.google.com"; +static const std::string GOOGLETALK_LOGIN_EXTENSION = "gmail.com"; +static const std::string GOOGLETALK_FORGOT_PASSWORD_LINK_EN = "https://www.google.com/accounts/ForgotPasswd?hl=en&continue=http%3A%2F%2Fmail.google.com"; +static const std::string GOOGLETALK_FORGOT_PASSWORD_LINK_FR = "https://www.google.com/accounts/ForgotPasswd?hl=fr&continue=http%3A%2F%2Fmail.google.com"; +static const std::string GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.google.com/talk/index.html"; +static const std::string GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_FR = "http://www.google.com/talk/intl/fr/"; +static const int GOOGLETALK_PORT = 80; + +QtGoogleTalkSettings::QtGoogleTalkSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtGoogleTalkSettings::~QtGoogleTalkSettings() { + OWSAFE_DELETE(_ui); +} + +void QtGoogleTalkSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::GoogleTalkSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtGoogleTalkSettings::setIMAccount() { + static const String AT = "@"; + String tmpLogin(_ui->loginLineEdit->text().toUtf8()); + + //Test if login ends with @gmail.com + if (!tmpLogin.contains(AT)) { + tmpLogin = tmpLogin + AT + GOOGLETALK_LOGIN_EXTENSION; + } + + _imAccount.setLogin(tmpLogin); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + params.set(IMAccountParameters::JABBER_USE_TLS_KEY, true); + params.set(IMAccountParameters::JABBER_CONNECTION_SERVER_KEY, GOOGLETALK_SERVER); + params.set(IMAccountParameters::JABBER_PORT_KEY, GOOGLETALK_PORT); +} + +bool QtGoogleTalkSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtGoogleTalkSettings::forgotPasswordButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(GOOGLETALK_FORGOT_PASSWORD_LINK_FR); + } else { + WebBrowser::openUrl(GOOGLETALK_FORGOT_PASSWORD_LINK_EN); + } +} + +void QtGoogleTalkSettings::createAccountButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_FR); + } else { + WebBrowser::openUrl(GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_EN); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtGoogleTalkSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTGOOGLETALKSETTINGS_H +#define OWQTGOOGLETALKSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class GoogleTalkSettings; } + +/** + * GoogleTalk settings for the user. + * + * @author Tanguy Krotoff + */ +class QtGoogleTalkSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtGoogleTalkSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtGoogleTalkSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void forgotPasswordButtonClicked(); + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::GoogleTalkSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTGOOGLETALKSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtICQSettings.h" + +#include "ui_ICQSettings.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string AIM_FORGOT_PASSWORD_LINK_EN = "https://www.icq.com/password/"; +static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_EN = "https://www.icq.com/register/"; + +QtICQSettings::QtICQSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtICQSettings::~QtICQSettings() { + OWSAFE_DELETE(_ui); +} + +void QtICQSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::ICQSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtICQSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + //FIXME to remove, must be done inside model + params.set(IMAccountParameters::OSCAR_PORT_KEY, 443); +} + +bool QtICQSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtICQSettings::forgotPasswordButtonClicked() { + WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_EN); +} + +void QtICQSettings::createAccountButtonClicked() { + WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_EN); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtICQSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTICQSETTINGS_H +#define OWQTICQSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class ICQSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtICQSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtICQSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtICQSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void forgotPasswordButtonClicked(); + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::ICQSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,203 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountManager.h" + +#include "ui_IMAccountManager.h" + +#include "QtIMAccountSettings.h" + +#include +#include + +#include +#include + +#include + +#include + +QtIMAccountManager::QtIMAccountManager(UserProfile & userProfile, bool showAsDialog, QWidget * parent) + : QObject(parent), + _userProfile(userProfile) { + + if (showAsDialog) { + _imAccountManagerWidget = new QDialog(parent); + } else { + _imAccountManagerWidget = new QWidget(parent); + } + + _ui = new Ui::IMAccountManager(); + _ui->setupUi(_imAccountManagerWidget); + + QMenu * addIMAccountMenu = new QMenu(_ui->addIMAccountButton); + SAFE_CONNECT(addIMAccountMenu, SIGNAL(triggered(QAction *)), SLOT(addIMAccount(QAction *))); + + addIMAccountMenu->addAction(QIcon(":pics/protocols/msn.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMSN)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/aim.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolAIM)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/icq.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolICQ)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/yahoo.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolYahoo)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/jabber.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolJabber)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/google-talk.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolGoogleTalk)); +#if defined(ENABLE_FACEBOOK) + addIMAccountMenu->addAction(QIcon(":pics/protocols/facebook.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolFaceBook)); +#endif +#if defined(ENABLE_MYSPACE) + addIMAccountMenu->addAction(QIcon(":pics/protocols/myspace.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMySpace)); +#endif +#if defined(ENABLE_SKYPE) + addIMAccountMenu->addAction(QIcon(":pics/protocols/skype.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolSkype)); +#endif +#if defined(ENABLE_TWITTER) + addIMAccountMenu->addAction(QIcon(":pics/protocols/twitter.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolTwitter)); +#endif + _ui->addIMAccountButton->setMenu(addIMAccountMenu); + + SAFE_CONNECT(_ui->modifyIMAccountButton, SIGNAL(clicked()), SLOT(modifyIMAccount())); + + SAFE_CONNECT(_ui->deleteIMAccountButton, SIGNAL(clicked()), SLOT(deleteIMAccount())); + + if (showAsDialog) { + SAFE_CONNECT_RECEIVER(_ui->closeButton, SIGNAL(clicked()), _imAccountManagerWidget, SLOT(accept())); + } else { + _imAccountManagerWidget->layout()->setMargin(0); + _imAccountManagerWidget->layout()->setSpacing(0); + _ui->closeButton->hide(); + } + + SAFE_CONNECT(_ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), + SLOT(itemDoubleClicked(QTreeWidgetItem *, int))); + + SAFE_CONNECT(_ui->treeWidget, SIGNAL(itemSelectionChanged()), + SLOT(updateButtons())); + + loadIMAccounts(); + updateButtons(); + + if (showAsDialog) { + ((QDialog *) _imAccountManagerWidget)->exec(); + } +} + +QtIMAccountManager::~QtIMAccountManager() { + OWSAFE_DELETE(_ui); +} + +void QtIMAccountManager::loadIMAccounts() { + _ui->treeWidget->clear(); + + IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); + + for (IMAccountList::iterator it = imAccountList.begin(); it != imAccountList.end(); it++) { + IMAccount imAccount = (IMAccount &) (*it); + QStringList accountStrList; + + // protocol + EnumIMProtocol::IMProtocol imProtocol = imAccount.getProtocol(); + if ((imProtocol == EnumIMProtocol::IMProtocolQuteCom) || + (imProtocol == EnumIMProtocol::IMProtocolSIP)){ + //only IM account should be shown + continue; + } + accountStrList << QString::fromUtf8(EnumIMProtocol::toString(imProtocol).c_str()); + //// + + // login + accountStrList << QString::fromUtf8(imAccount.getLogin().c_str()); + //// + accountStrList << QString::null; + + QTreeWidgetItem * item = new QTreeWidgetItem(_ui->treeWidget, accountStrList); + QString id = QString::fromUtf8(imAccount.getUUID().c_str()); + item->setData(0, Qt::UserRole, id); + } +} + +void QtIMAccountManager::addIMAccount(QAction * action) { + QString protocolName = action->text(); + LOG_DEBUG(protocolName.toUtf8()); + + QtEnumIMProtocol::IMProtocol imProtocol = QtEnumIMProtocol::toIMProtocol(protocolName); + QtIMAccountSettings * imAccountSettings = new QtIMAccountSettings(_userProfile, imProtocol, _imAccountManagerWidget); + loadIMAccounts(); + OWSAFE_DELETE(imAccountSettings); +} + +std::auto_ptr QtIMAccountManager::getIMAccountFromItem(QTreeWidgetItem* item) { + if (!item) { + return std::auto_ptr(0); + } + std::string id(item->data(0, Qt::UserRole).toString().toUtf8()); + return std::auto_ptr(_userProfile.getIMAccountManager().getIMAccount(id)); +} + +void QtIMAccountManager::deleteIMAccount() { + QTreeWidgetItem* item = _ui->treeWidget->currentItem(); + std::auto_ptr imAccount = getIMAccountFromItem(item); + if (!imAccount.get()) { + return; + } + int buttonClicked = + QMessageBox::question(_imAccountManagerWidget, + tr("@product@"), + tr("Are sure you want to delete this account?\n") + + QString::fromUtf8(imAccount->getLogin().c_str()), + tr("&Delete"), tr("Cancel")); + + //Button delete clicked + if (buttonClicked == 0) { + _userProfile.removeIMAccount(*imAccount); + } + delete item; +} + +void QtIMAccountManager::modifyIMAccount() { + QTreeWidgetItem* item = _ui->treeWidget->currentItem(); + std::auto_ptr imAccount = getIMAccountFromItem(item); + if (!imAccount.get()) { + return; + } + QtIMAccountSettings * imAccountSettings = + new QtIMAccountSettings(_userProfile, *imAccount.get(), _imAccountManagerWidget); + OWSAFE_DELETE(imAccountSettings); + + imAccount = getIMAccountFromItem(item); + item->setText(1, QString::fromUtf8(imAccount->getLogin().c_str())); +} + +void QtIMAccountManager::itemDoubleClicked(QTreeWidgetItem * item, int column) { + _ui->treeWidget->setCurrentItem(item); + modifyIMAccount(); +} + +void QtIMAccountManager::updateButtons() { + bool itemSelected = _ui->treeWidget->selectedItems().count() != 0; + _ui->modifyIMAccountButton->setEnabled(itemSelected); + _ui->deleteIMAccountButton->setEnabled(itemSelected); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTIMACCOUNTMANAGER_H +#define QTIMACCOUNTMANAGER_H + +#include + +#include + +#include + +class CQuteCom; +class IMAccount; +class UserProfile; + +class QWidget; +class QAction; +class QTreeWidget; +class QTreeWidgetItem; + +namespace Ui { class IMAccountManager; } + +/** + * Manages IM accounts: add/delete/modify IM accounts. + * + * Can be an embedded widget or a separated window. + * + * Very similar to QtIMContactManager but for IM accounts. + * + * @see QtIMContactManager + * @see UserProfile + * @see IMAccount + * @author Tanguy Krotoff + */ +class QtIMAccountManager : public QObject, NonCopyable { + Q_OBJECT +public: + + QtIMAccountManager(UserProfile & userProfile, bool showAsDialog, QWidget * parent); + + ~QtIMAccountManager(); + + QWidget * getWidget() const { + return _imAccountManagerWidget; + } + +private Q_SLOTS: + + void addIMAccount(QAction * action); + + void deleteIMAccount(); + + void modifyIMAccount(); + + void itemDoubleClicked(QTreeWidgetItem * item, int column); + + void updateButtons(); + +private: + + void loadIMAccounts(); + + UserProfile & _userProfile; + + Ui::IMAccountManager * _ui; + + QWidget * _imAccountManagerWidget; + + std::auto_ptr getIMAccountFromItem(QTreeWidgetItem*); +}; + +#endif //QTIMACCOUNTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountPlugin.h" + +#include +#include + +#include + +#include + +QtIMAccountPlugin::QtIMAccountPlugin(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QObject(parent), + _imAccount(imAccount), + _userProfile(userProfile) { + + _parentDialog = parent; +} + +void QtIMAccountPlugin::checkAndSave() { + if (isValid()) { + save(); + _parentDialog->accept(); + } else { + QMessageBox::critical(_parentDialog, tr("@product@"), + tr("Please enter a login"), QMessageBox::Ok, QMessageBox::NoButton); + } +} + +void QtIMAccountPlugin::save() { + // Check if this an IMAccount update or an IMAccount creation + bool update = !_imAccount.getLogin().empty(); + + setIMAccount(); + + if (update) { + _userProfile.getConnectHandler().disconnect(_imAccount.getUUID()); + _userProfile.updateIMAccount(_imAccount); + _userProfile.getConnectHandler().connect(_imAccount.getUUID()); + } else { + _userProfile.addIMAccount(_imAccount); + _userProfile.getConnectHandler().connect(_imAccount.getUUID()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountPlugin.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTIMACCOUNTPLUGIN_H +#define QTIMACCOUNTPLUGIN_H + +#include + +#include + +class IMAccount; +class UserProfile; +class QDialog; + +/** + * Interface for IM accounts (MSN, AIM, Yahoo, Jabber...). + * + * @author Tanguy Krotoff + */ +class QtIMAccountPlugin : public QObject, Interface { + Q_OBJECT +public: + + QtIMAccountPlugin(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + virtual QWidget * getWidget() const = 0; + + /** + * @return true if entered value are valid. + */ + virtual bool isValid() const = 0; + + /** + * Sets entered data on IMAccount. + */ + virtual void setIMAccount() = 0; + +public Q_SLOTS: + + void checkAndSave(); + +protected: + + virtual void init() = 0; + + /** + * Saves the entered data. + */ + void save(); + + IMAccount & _imAccount; + + UserProfile & _userProfile; + + QDialog * _parentDialog; +}; + +#endif //QTIMACCOUNTPLUGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,153 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountSettings.h" + +#include "ui_IMAccountTemplate.h" + +#include "QtIMAccountPlugin.h" +#include "QtMSNSettings.h" +#include "QtAIMSettings.h" +#include "QtICQSettings.h" +#include "QtYahooSettings.h" +#include "QtJabberSettings.h" +#include "QtGoogleTalkSettings.h" + +#include "QtFaceBookSettings.h" +#include "QtMySpaceSettings.h" +#include "QtSkypeSettings.h" +#include "QtTwitterSettings.h" + +#include + +#include +#include +#include +#include + +#include +#include + +#include +#include + +#include + +QtIMAccountSettings::QtIMAccountSettings(UserProfile & userProfile, + IMAccount imAccount, QWidget * parent) + : QObject(parent), + _userProfile(userProfile) { + + _imAccountPlugin = NULL; + _imAccount = imAccount; + createIMProtocolWidget(parent, QtEnumIMProtocol::toIMProtocol(imAccount.getProtocol())); +} + +QtIMAccountSettings::QtIMAccountSettings(UserProfile & userProfile, + QtEnumIMProtocol::IMProtocol imProtocol, QWidget * parent) + : QObject(parent), + _userProfile(userProfile) { + + _imAccountPlugin = NULL; + _imAccount = IMAccount(QtEnumIMProtocol::toModelIMProtocol(imProtocol)); + + // Init _imAccount parameters + std::string imAccountParametersData = UserProfileFileStorage::loadSystemIMAccountParametersData(); + IMAccountParametersXMLSerializer serializer(_imAccount.getIMAccountParameters()); + serializer.unserializeSystemSettings(imAccountParametersData); + + createIMProtocolWidget(parent, imProtocol); +} + +void QtIMAccountSettings::createIMProtocolWidget(QWidget * parent, + QtEnumIMProtocol::IMProtocol imProtocol) { + QDialog * imAccountTemplateWindow = new QDialog(parent); + + _ui = new Ui::IMAccountTemplate(); + _ui->setupUi(imAccountTemplateWindow); + + switch (imProtocol) { + case QtEnumIMProtocol::IMProtocolMSN: { + _imAccountPlugin = new QtMSNSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolYahoo: { + _imAccountPlugin = new QtYahooSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolAIM: { + _imAccountPlugin = new QtAIMSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolICQ: { + _imAccountPlugin = new QtICQSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolJabber: { + _imAccountPlugin = new QtJabberSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolGoogleTalk: { + _imAccountPlugin = new QtGoogleTalkSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolFaceBook: { + _imAccountPlugin = new QtFacebookSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolMySpace: { + _imAccountPlugin = new QtMySpaceSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + case QtEnumIMProtocol::IMProtocolSkype: { + _imAccountPlugin = new QtSkypeSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + case QtEnumIMProtocol::IMProtocolTwitter: { + _imAccountPlugin = new QtTwitterSettings(_userProfile, _imAccount, imAccountTemplateWindow); + break; + } + + default: + LOG_FATAL("unknown IM protocol=" + String::fromNumber(imProtocol)); + } + + //saveButton + SAFE_CONNECT_RECEIVER(_ui->saveButton, SIGNAL(clicked()), + _imAccountPlugin, SLOT(checkAndSave())); + + //cancelButton + SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), + imAccountTemplateWindow, SLOT(reject())); + + QWidget * imProtocolWidget = _imAccountPlugin->getWidget(); + Widget::createLayout(_ui->settingsGroupBox)->addWidget(imProtocolWidget); + _ui->settingsGroupBox->setTitle(imProtocolWidget->windowTitle()); + + imAccountTemplateWindow->setWindowTitle(imProtocolWidget->windowTitle()); + imAccountTemplateWindow->exec(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtIMAccountSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTIMACCOUNTSETTINGS_H +#define QTIMACCOUNTSETTINGS_H + +#include + +#include + +#include + +class QtIMAccountPlugin; +class UserProfile; + +class QWidget; +namespace Ui { class IMAccountTemplate; } + +/** + * Handles QtIMAccountPlugin: IM accounts (MSN, Yahoo, Jabber, AIM...). + * + * @author Tanguy Krotoff + */ +class QtIMAccountSettings : public QObject { + Q_OBJECT +public: + + QtIMAccountSettings(UserProfile & userProfile, + IMAccount imAccount, QWidget * parent); + + QtIMAccountSettings(UserProfile & userProfile, + QtEnumIMProtocol::IMProtocol imProtocol, QWidget * parent); + +private: + + void createIMProtocolWidget(QWidget * parent, QtEnumIMProtocol::IMProtocol imProtocol); + + Ui::IMAccountTemplate * _ui; + + IMAccount _imAccount; + + UserProfile & _userProfile; + + QtIMAccountPlugin * _imAccountPlugin; +}; + +#endif //QTIMACCOUNTSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,145 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtJabberSettings.h" + +#include "ui_JabberSettings.h" + +#include +#include + +#include +#include + +#include + +#include + +#include + +#include +#include +#include + +#define toolTipText "user@jabber.server.com" + +QtJabberSettings::QtJabberSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtJabberSettings::~QtJabberSettings() { + OWSAFE_DELETE(_ui); +} + +void QtJabberSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::JabberSettings(); + _ui->setupUi(_IMSettingsWidget); + + _ui->loginLineEdit->installEventFilter(this); + _originalPalette = _ui->loginLineEdit->palette(); + _greyPalette.setColor(QPalette::Text, Qt::gray); + _toolTip = tr(toolTipText); + _toolTipShown = false; + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + + QString fullLogin = QString::fromUtf8(_imAccount.getLogin().c_str()); + // Hackish way to edit the resource in a more explicit way. There really + // should be another Jabber param in IMAccountParameters to store it. + QString login = fullLogin.section('/', 0, 0); + QString resource = fullLogin.section('/', 1); + if (resource.isEmpty()) { + resource = BINARY_NAME; + } + + if (login.isEmpty()) + showToolTip(); + else + _ui->loginLineEdit->setText(login); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); + _ui->useTLSCheckBox->setChecked(params.isJabberTLSUsed()); + _ui->requireTLSCheckBox->setChecked(params.isJabberTLSRequired()); + _ui->forceOldSSLCheckBox->setChecked(params.isJabberOldSSLUsed()); + _ui->allowPlainTextAuthenticationCheckBox->setChecked(params.isJabberAuthPlainInClearUsed()); + _ui->connectServerLineEdit->setText(QString::fromUtf8(params.getJabberConnectionServer().c_str())); + _ui->portLineEdit->setText(QString("%1").arg(params.getJabberServerPort())); + _ui->resourceLineEdit->setText(resource); +} + +bool QtJabberSettings::isValid() const { + + if (_toolTipShown) + return false; + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtJabberSettings::setIMAccount() { + std::string login(_ui->loginLineEdit->text().toUtf8()); + std::string resource(_ui->resourceLineEdit->text().toUtf8()); + if (!resource.empty()) { + login += '/' + resource; + } + std::string password(_ui->passwordLineEdit->text().toUtf8()); + + _imAccount.setLogin(login); + _imAccount.setPassword(password); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + params.set(IMAccountParameters::JABBER_USE_TLS_KEY, _ui->useTLSCheckBox->isChecked()); + params.set(IMAccountParameters::JABBER_REQUIRE_TLS_KEY, _ui->requireTLSCheckBox->isChecked()); + params.set(IMAccountParameters::JABBER_USE_OLD_SSL_KEY, _ui->forceOldSSLCheckBox->isChecked()); + params.set(IMAccountParameters::JABBER_AUTH_PLAIN_IN_CLEAR_KEY, _ui->allowPlainTextAuthenticationCheckBox->isChecked()); + params.set(IMAccountParameters::JABBER_CONNECTION_SERVER_KEY, std::string(_ui->connectServerLineEdit->text().toUtf8())); + params.set(IMAccountParameters::JABBER_PORT_KEY, _ui->portLineEdit->text().toInt()); +} + +bool QtJabberSettings::eventFilter(QObject *obj, QEvent *ev) +{ + if (obj == _ui->loginLineEdit) + { + if (ev->type() == QEvent::FocusIn) + { + if (_toolTipShown) + hideToolTip(); + } + if (ev->type() == QEvent::FocusOut) + { + if (_ui->loginLineEdit->text().isEmpty()) + showToolTip(); + } + } + return false; +} + +void QtJabberSettings::showToolTip() +{ + _ui->loginLineEdit->setPalette(_greyPalette); + _ui->loginLineEdit->setText(_toolTip); + _toolTipShown = true; +} + +void QtJabberSettings::hideToolTip() +{ + _ui->loginLineEdit->setPalette(_originalPalette); + _ui->loginLineEdit->clear(); + _toolTipShown = false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtJabberSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,79 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTJABBERSETTINGS_H +#define OWQTJABBERSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include +#include +#include +#include +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class JabberSettings; } + +/** + * Jabber settings for the user. + * + * @author Tanguy Krotoff + */ +class QtJabberSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtJabberSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtJabberSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +private: + + void init(); + + bool eventFilter(QObject *obj, QEvent *ev); + + void showToolTip(); + + void hideToolTip(); + + Ui::JabberSettings * _ui; + + QWidget * _IMSettingsWidget; + + QString _toolTip; + + QPalette _originalPalette; + + QPalette _greyPalette; + + bool _toolTipShown; +}; + +#endif //OWQTJABBERSTTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtMSNSettings.h" + +#include "ui_MSNSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string MSN_LOGIN_DEFAULT_EXTENSION = "hotmail.com"; +static const std::string MSN_FORGOT_PASSWORD_LINK_EN = "https://accountservices.passport.net/uiresetpw.srf?lc=1033"; +static const std::string MSN_FORGOT_PASSWORD_LINK_FR = "https://accountservices.passport.net/uiresetpw.srf?lc=1036"; +static const std::string MSN_CREATE_NEW_ACCOUNT_LINK_EN = "https://accountservices.passport.net/reg.srf?bk=1148037006&cru=https://accountservices.passport.net/uiresetpw.srf%3flc%3d1033&lc=1033&sl=1"; +static const std::string MSN_CREATE_NEW_ACCOUNT_LINK_FR = "https://accountservices.passport.net/reg.srf?id=9&cbid=956&sl=1&lc=1036"; + +QtMSNSettings::QtMSNSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtMSNSettings::~QtMSNSettings() { + OWSAFE_DELETE(_ui); +} + +void QtMSNSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::MSNSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + _ui->useHttpMethodCheckBox->setChecked(params.isMSNHttpUsed()); +} + +void QtMSNSettings::setIMAccount() { + static const std::string AT = "@"; + String tmpLogin(_ui->loginLineEdit->text().toUtf8()); + + //Test if login ends with @hotmail.com + if (!tmpLogin.contains(AT)) { + tmpLogin = tmpLogin + AT + MSN_LOGIN_DEFAULT_EXTENSION; + } + + _imAccount.setLogin(tmpLogin); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + //FIXME to remove, must be done inside model + params.set(IMAccountParameters::MSN_USE_HTTP_KEY, _ui->useHttpMethodCheckBox->isChecked()); +} + +bool QtMSNSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtMSNSettings::forgotPasswordButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(MSN_FORGOT_PASSWORD_LINK_FR); + } else { + WebBrowser::openUrl(MSN_FORGOT_PASSWORD_LINK_EN); + } +} + +void QtMSNSettings::createAccountButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(MSN_CREATE_NEW_ACCOUNT_LINK_FR); + } else { + WebBrowser::openUrl(MSN_CREATE_NEW_ACCOUNT_LINK_EN); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMSNSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTMSNSETTINGS_H +#define OWQTMSNSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class MSNSettings; } + +/** + * MSN settings for the user. + * + * @author Tanguy Krotoff + */ +class QtMSNSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtMSNSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtMSNSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual void setIMAccount(); + + virtual bool isValid() const; + +public Q_SLOTS: + + void forgotPasswordButtonClicked(); + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::MSNSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTMSNSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtMySpaceSettings.h" + +#include "ui_MySpaceSettings.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN = "http://signups.myspace.com/index.cfm?fuseaction=signup"; + +QtMySpaceSettings::QtMySpaceSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtMySpaceSettings::~QtMySpaceSettings() { + OWSAFE_DELETE(_ui); +} + +void QtMySpaceSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::MySpaceSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtMySpaceSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + +} + +bool QtMySpaceSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + + +void QtMySpaceSettings::createAccountButtonClicked() { + WebBrowser::openUrl(MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtMySpaceSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTMYSPACESETTINGS_H +#define OWQTMYSPACESETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class MySpaceSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtMySpaceSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtMySpaceSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtMySpaceSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::MySpaceSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSkypeSettings.h" + +#include "ui_SkypeSettings.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string SKYPE_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.skype.com/"; + +QtSkypeSettings::QtSkypeSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtSkypeSettings::~QtSkypeSettings() { + OWSAFE_DELETE(_ui); +} + +void QtSkypeSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::SkypeSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + _ui->createAccountLabel->setVisible(false);//VOXOX CHANGE by Rolando - 2009.07.24 - Modified to complete task "Update Skype Settings window popup" + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + //_ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword())); +} + +void QtSkypeSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + //VOXOX CHANGE CJC SKYPE PLUGGING DOES NOT NEED A PASSWORD + _imAccount.setPassword(""); + +} + +bool QtSkypeSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + + +void QtSkypeSettings::createAccountButtonClicked() { + WebBrowser::openUrl(SKYPE_CREATE_NEW_ACCOUNT_LINK_EN); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtSkypeSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSKYPESETTINGS_H +#define OWQTSKYPESETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class SkypeSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtSkypeSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtSkypeSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtSkypeSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::SkypeSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtTwitterSettings.h" + +#include "ui_TwitterSettings.h" + +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string TWITTER_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.twitter.com/"; + +QtTwitterSettings::QtTwitterSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtTwitterSettings::~QtTwitterSettings() { + OWSAFE_DELETE(_ui); +} + +void QtTwitterSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::TwitterSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +void QtTwitterSettings::setIMAccount() { + _imAccount.setLogin(std::string(_ui->loginLineEdit->text().toUtf8())); + _imAccount.setPassword(std::string(_ui->passwordLineEdit->text().toUtf8())); + +} + +bool QtTwitterSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + + +void QtTwitterSettings::createAccountButtonClicked() { + WebBrowser::openUrl(TWITTER_CREATE_NEW_ACCOUNT_LINK_EN); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtTwitterSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTTWITTERSETTINGS_H +#define OWQTTWITTERSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class TwitterSettings; } + +/** + * AIM settings for the user. + * + * @author Tanguy Krotoff + */ +class QtTwitterSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtTwitterSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtTwitterSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::TwitterSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtYahooSettings.h" + +#include "ui_YahooSettings.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +static const std::string YAHOO_FORGOT_PASSWORD_LINK_EN = "http://edit.yahoo.com/config/eval_forgot_pw?.src=pg&.done=http://messenger.yahoo.com/&.redir_from=MESSENGER"; +static const std::string YAHOO_FORGOT_PASSWORD_LINK_FR = "http://edit.yahoo.com/config/eval_forgot_pw?.src=pg&.done=http://fr.messenger.yahoo.com&.intl=fr&.redir_from=MESSENGER"; +static const std::string YAHOO_CREATE_NEW_ACCOUNT_LINK_EN = "http://login.yahoo.com/config/login?.done=http://messenger.yahoo.com&.src=pg"; +static const std::string YAHOO_CREATE_NEW_ACCOUNT_LINK_FR = "https://edit.yahoo.com/config/eval_register?.intl=fr&.done=http://fr.messenger.yahoo.com&.src=pg"; + +QtYahooSettings::QtYahooSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) + : QtIMAccountPlugin(userProfile, imAccount, parent) { + + init(); +} + +QtYahooSettings::~QtYahooSettings() { + OWSAFE_DELETE(_ui); +} + +void QtYahooSettings::init() { + _IMSettingsWidget = new QWidget(_parentDialog); + + _ui = new Ui::YahooSettings(); + _ui->setupUi(_IMSettingsWidget); + + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); + + SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); + + _ui->loginLineEdit->setText(QString::fromUtf8(_imAccount.getLogin().c_str())); + _ui->passwordLineEdit->setText(QString::fromUtf8(_imAccount.getPassword().c_str())); +} + +bool QtYahooSettings::isValid() const { + return !_ui->loginLineEdit->text().isEmpty(); +} + +void QtYahooSettings::setIMAccount() { + String login(_ui->loginLineEdit->text().toUtf8()); + std::string password(_ui->passwordLineEdit->text().toUtf8()); + + //static const String AT = "@"; + + //Test if login ends with @ + /*if (login.contains(AT)) { + std::string::size_type posAT = login.find(AT); + if (posAT != std::string::npos) { + login = login.substr(0, posAT); + } + }*/ + + _imAccount.setLogin(login); + _imAccount.setPassword(password); + + IMAccountParameters & params = _imAccount.getIMAccountParameters(); + params.set(IMAccountParameters::YAHOO_IS_JAPAN_KEY, _ui->useJapanServerCheckBox->isChecked()); + //FIXME to remove, must be done inside model + params.set(IMAccountParameters::YAHOO_PORT_KEY, 23); +} + +void QtYahooSettings::forgotPasswordButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(YAHOO_FORGOT_PASSWORD_LINK_FR); + } else { + WebBrowser::openUrl(YAHOO_FORGOT_PASSWORD_LINK_EN); + } +} + +void QtYahooSettings::createAccountButtonClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string lang = config.getLanguage(); + + if (lang == "fr") { + WebBrowser::openUrl(YAHOO_CREATE_NEW_ACCOUNT_LINK_FR); + } else { + WebBrowser::openUrl(YAHOO_CREATE_NEW_ACCOUNT_LINK_EN); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/QtYahooSettings.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTYAHOOSETTINGS_H +#define OWQTYAHOOSETTINGS_H + +#include "QtIMAccountPlugin.h" + +#include + +class IMAccount; +class UserProfile; + +class QWidget; +namespace Ui { class YahooSettings; } + +/** + * Yahoo! settings for the user. + * + * @author Tanguy Krotoff + */ +class QtYahooSettings : public QtIMAccountPlugin { + Q_OBJECT +public: + + QtYahooSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); + + ~QtYahooSettings(); + + QWidget * getWidget() const { + return _IMSettingsWidget; + } + + virtual bool isValid() const; + + virtual void setIMAccount(); + +public Q_SLOTS: + + void forgotPasswordButtonClicked(); + + void createAccountButtonClicked(); + +private: + + void init(); + + Ui::YahooSettings * _ui; + + QWidget * _IMSettingsWidget; +}; + +#endif //OWQTYAHOOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/SkypeSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/SkypeSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/SkypeSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/SkypeSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,118 @@ + + + SkypeSettings + + + + 0 + 0 + 302 + 158 + + + + Skype Settings + + + + + + + + Skype Id + + + + + + + + 220 + 0 + + + + + + + + + + Qt::Horizontal + + + + 53 + 20 + + + + + + + + + 0 + 0 + + + + + Get a new Skype Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 53 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 60 + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + + + + + + + + + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/TwitterSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/TwitterSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/TwitterSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/TwitterSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,139 @@ + + + TwitterSettings + + + + 0 + 0 + 302 + 158 + + + + Twitter Settings + + + + + + + + Email Address + + + + + + + + 220 + 0 + + + + + + + + Password + + + + + + + + 220 + 0 + + + + QLineEdit::Password + + + + + + + + + Qt::Horizontal + + + + 53 + 20 + + + + + + + + + 0 + 0 + + + + + Get a new Twitter Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 75 + 20 + + + + + + + + Qt::Vertical + + + + 20 + 17 + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + loginLineEdit + passwordLineEdit + + + + + + + + + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/YahooSettings.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/YahooSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imaccount/YahooSettings.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imaccount/YahooSettings.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,201 @@ + + + + + YahooSettings + + + + 0 + 0 + 275 + 226 + + + + Yahoo! Settings + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 189 + 16 + + + + + + + + Use Yahoo! Japan server + + + + + + + Qt::Vertical + + + QSizePolicy::Fixed + + + + 189 + 16 + + + + + + + + + + 0 + + + 6 + + + + + Password: + + + + + + + QLineEdit::Password + + + + + + + + + + Login: + + + + + + + + + Qt::Vertical + + + + 20 + 16 + + + + + + + + :/pics/protocols/yahoo.png + + + + + + + 0 + + + 6 + + + + + Forgot your Yahoo! password? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + + + + :/pics/help.png + + + + + + + Get a new Yahoo! Account + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+ 0 + +
+
+ + loginLineEdit + passwordLineEdit + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/AddIMContact.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/AddIMContact.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/AddIMContact.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/AddIMContact.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,162 @@ + + + + + AddIMContact + + + + 0 + 0 + 394 + 247 + + + + @product@ - Add a Contact Account + + + + 9 + + + 6 + + + + + Contact Type (protocol): + + + + + + + + + + + + + Contact ID: + + + + + + + Account: + + + + + + + + Enable + + + + + Login + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Add + + + :/pics/add.png + + + + + + + Cancel + + + :/pics/cancel.png + + + + + + + + + + + + + + addIMContactButton + clicked() + AddIMContact + accept() + + + 248 + 251 + + + 96 + 254 + + + + + cancelButton + clicked() + AddIMContact + reject() + + + 331 + 251 + + + 179 + 282 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/IMContactManager.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/IMContactManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/IMContactManager.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/IMContactManager.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,107 @@ + + + + + IMContactManager + + + + 0 + 0 + 305 + 171 + + + + + 0 + + + 6 + + + + + 0 + + + 6 + + + + + Delete + + + :/pics/delete.png + + + + + + + Add + + + :/pics/add.png + + + + + + + Qt::Horizontal + + + + 165 + 24 + + + + + + + + + + + 0 + 70 + + + + false + + + + Contact ID + + + + + Contact Type (protocol) + + + + + + + + Click on the add button below to add a new ID + + + + + + + + treeWidget + addIMContactButton + deleteIMContactButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,197 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAddIMContact.h" + +#include "ui_AddIMContact.h" + +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include + +#include + +QtAddIMContact::QtAddIMContact(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent) + : QObject(parent), + _contactProfile(contactProfile), + _cUserProfile(cUserProfile) { + + _addIMContactWindow = new QDialog(parent); + + _ui = new Ui::AddIMContact(); + _ui->setupUi(_addIMContactWindow); + +#ifdef CUSTOM_ACCOUNT + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/qutecom.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolQuteCom).c_str())); +#endif + + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/sip.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSIP).c_str())); + +#ifdef MULTIIMWRAPPER + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/msn.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolMSN).c_str())); + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/aim.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolAIM).c_str())); + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/icq.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolICQ).c_str())); + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/yahoo.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolYahoo).c_str())); + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/jabber.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolJabber).c_str())); + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/google-talk.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolGoogleTalk).c_str())); + +#if defined(ENABLE_FACEBOOK) + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/facebook.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolFaceBook).c_str())); +#endif +#if defined(ENABLE_MYSPACE) + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/myspace.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolMySpace).c_str())); +#endif +#if defined(ENABLE_SKYPE) + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/skype.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSkype).c_str())); +#endif +#if defined(ENABLE_TWITTER) + _ui->protocolComboBox->addItem(QIcon(":pics/protocols/twitter.png"), + QString::fromUtf8(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolTwitter).c_str())); +#endif +#endif //MULTIIMWRAPPER + + connect(_ui->protocolComboBox, SIGNAL(currentIndexChanged(const QString &)), + SLOT(imProtocolChanged(const QString &))); + + connect(_ui->addIMContactButton, SIGNAL(clicked()), SLOT(addIMContact())); + + show(); +} + +QtAddIMContact::~QtAddIMContact() { + delete _ui; +} + +int QtAddIMContact::show() { + imProtocolChanged(_ui->protocolComboBox->currentText()); + return _addIMContactWindow->exec(); +} + +void QtAddIMContact::addIMContact() { + QString contactId = _ui->contactIdLineEdit->text().trimmed(); + + if (contactId.isEmpty()) { + return; + } + + QString protocolName = _ui->protocolComboBox->currentText(); + + EnumIMProtocol::IMProtocol imProtocol = EnumIMProtocol::toIMProtocol(std::string(protocolName.toUtf8())); + + // sip contact should know their domain + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qutecomSuffix = "@" + QString::fromUtf8( config.getQuteComRealm().c_str() ); + if (imProtocol == EnumIMProtocol::IMProtocolQuteCom) { + contactId += qutecomSuffix; + } else if (imProtocol == EnumIMProtocol::IMProtocolSIP) { + if (!contactId.contains("@")) { + SipAccount * sipaccount = _cUserProfile.getUserProfile().getSipAccount(); + if (sipaccount) { + contactId += QString("@") + QString::fromUtf8(sipaccount->getRealm().c_str()); + } + } + } + //// + + IMContact imContact(imProtocol, std::string(contactId.toUtf8())); + + IMAccountList imAccounts = getSelectedIMAccounts(imProtocol); + + if (imAccounts.empty()) { + _contactProfile.addIMContact(imContact); + } + + for (IMAccountList::const_iterator it = imAccounts.begin(); + it != imAccounts.end(); ++it) { + + IMAccount * imAccount = + _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount((*it).getUUID()); + imContact.setIMAccount(imAccount); + _contactProfile.addIMContact(imContact); + OWSAFE_DELETE(imAccount); + } +} + +void QtAddIMContact::imProtocolChanged(const QString & protocolName) { + loadIMAccounts(EnumIMProtocol::toIMProtocol(std::string(protocolName.toUtf8()))); +} + +void QtAddIMContact::loadIMAccounts(EnumIMProtocol::IMProtocol imProtocol) { + _ui->treeWidget->clear(); + + IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); + + for (IMAccountList::const_iterator it = imAccounts.begin(); + it != imAccounts.end(); ++it) { + + QTreeWidgetItem * item = new QTreeWidgetItem(_ui->treeWidget); + + //By default, check the first element only + if (it == imAccounts.begin()) { + item->setCheckState(0, Qt::Checked); + } else { + item->setCheckState(0, Qt::Unchecked); + } + + item->setText(1, QString::fromUtf8((*it).getLogin().c_str())); + } +} + +IMAccountList QtAddIMContact::getSelectedIMAccounts(EnumIMProtocol::IMProtocol imProtocol) const { + IMAccountList result; + + IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); + + for (IMAccountList::const_iterator it = imAccounts.begin(); + it != imAccounts.end(); ++it) { + + QList list = _ui->treeWidget->findItems(QString::fromUtf8((*it).getLogin().c_str()), Qt::MatchExactly, 1); + + if (list.size() > 0) { + //There should be only one item + QTreeWidgetItem * item = list[0]; + if (item->checkState(0) == Qt::Checked) { + result.push_back(*it); + } + } + } + + return result; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAddIMContact.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTADDIMCONTACT_H +#define OWQTADDIMCONTACT_H + +#include + +#include +#include + +#include + +#include + +class IMAccount; +class ContactProfile; +class CUserProfile; + +class QWidget; +class QDialog; +class QString; +namespace Ui { class AddIMContact; } + +/** + * Window for adding an IM contact to a given contact. + * + * @author Tanguy Krotoff + */ +class QtAddIMContact : public QObject, NonCopyable { + Q_OBJECT +public: + + QtAddIMContact(ContactProfile & contactProfile, CUserProfile & cUserProfile, QWidget * parent); + + ~QtAddIMContact(); + + QDialog * getWidget() const { + return _addIMContactWindow; + } + +private Q_SLOTS: + + void addIMContact(); + + void imProtocolChanged(const QString & protocolName); + +private: + + int show(); + + void loadIMAccounts(EnumIMProtocol::IMProtocol imProtocol); + + IMAccountList getSelectedIMAccounts(EnumIMProtocol::IMProtocol imProtocol) const; + + Ui::AddIMContact * _ui; + + QDialog * _addIMContactWindow; + + ContactProfile & _contactProfile; + + CUserProfile & _cUserProfile; +}; + +#endif //OWQTADDIMCONTACT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAdvancedIMContactManager.h" + +#include "ui_IMContactManager.h" + +#include +#include + +#include +#include + +#include + +#include + +#include + +#include + +QtAdvancedIMContactManager::QtAdvancedIMContactManager(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent) + : QtIMContactManagerInterface(contactProfile, cUserProfile, parent) { + + _imContactManagerWidget = new QWidget(NULL); + + _ui = new Ui::IMContactManager(); + _ui->setupUi(_imContactManagerWidget); + + SAFE_CONNECT(_ui->addIMContactButton, SIGNAL(clicked()), SLOT(addIMContact())); + SAFE_CONNECT(_ui->deleteIMContactButton, SIGNAL(clicked()), SLOT(deleteIMContact())); + + SAFE_CONNECT(_ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem* )), + SLOT(currentItemChangedSlot(QTreeWidgetItem*, QTreeWidgetItem*))); + + loadIMContacts(); + _ui->deleteIMContactButton->setEnabled(false); +} + +QtAdvancedIMContactManager::~QtAdvancedIMContactManager() { + OWSAFE_DELETE(_ui); +} + +void QtAdvancedIMContactManager::loadIMContacts() { + _ui->treeWidget->clear(); + + const IMContactSet & imContactSet = _contactProfile.getIMContactSet(); + + for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { + + IMContact * imContact = (IMContact *) &(*it); + QStringList imContactStrList; + imContactStrList << QString::fromUtf8(imContact->getContactId().c_str()); + EnumIMProtocol::IMProtocol imProtocol = imContact->getProtocol(); + + if (imProtocol == EnumIMProtocol::IMProtocolSIP) { + //This protocol is internal to QuteCom, should not be shown to the user + //continue; + } + + imContactStrList << QString::fromUtf8(EnumIMProtocol::toString(imProtocol).c_str()); + imContactStrList << QString::null; + + QtIMContactItem * item = new QtIMContactItem(_ui->treeWidget, imContactStrList); + item->setIMContact(imContact); + } + + contentHasChanged(); +} + +void QtAdvancedIMContactManager::addIMContact() { + QtAddIMContact(_contactProfile, _cUserProfile, _imContactManagerWidget); //Blocking until window closed + loadIMContacts(); +} + +void QtAdvancedIMContactManager::deleteIMContact() { + QtIMContactItem * imContactItem = (QtIMContactItem *) _ui->treeWidget->currentItem(); + if (imContactItem) { + IMContact * imContact = imContactItem->getIMContact(); + + int buttonClicked = QMessageBox::question(_imContactManagerWidget, + tr("@product@"), + tr("Are sure you want to delete this IM contact?\n") + + QString::fromUtf8(imContact->getContactId().c_str()), + tr("&Delete"), tr("Cancel")); + + //Button delete clicked + if (buttonClicked == 0) { + _contactProfile.removeIMContact(*imContact); + } + } + + loadIMContacts(); +} + +void QtAdvancedIMContactManager::currentItemChangedSlot(QTreeWidgetItem * current, QTreeWidgetItem * previous) { + _ui->deleteIMContactButton->setEnabled(current); +} + +bool QtAdvancedIMContactManager::couldBeSaved() { + return (!_contactProfile.getIMContactSet().empty()); +} + +void QtAdvancedIMContactManager::saveIMContacts() { + // nothing to do here, contacts are already in _contactProfile +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,88 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTADVANCEDIMCONTACTMANAGER_H +#define OWQTADVANCEDIMCONTACTMANAGER_H + +#include + +class ContactProfile; +class CUserProfile; + +class QWidget; +class QTreeWidget; +class QTreeWidgetItem; +namespace Ui { class IMContactManager; } + +/** + * Window that handles IM accounts of a contact (IMContact). + * + * Very similar to QtIMAccountManager but for IM contacts. + * + * @see QtIMAccountManager + * @see Contact + * @see IMContact + * @see QtSimpleIMContactManager + * @see QtIMContactManagerInterface + * + * @author Tanguy Krotoff + * @Xavier Desjardins + */ +class QtAdvancedIMContactManager : public QtIMContactManagerInterface { + Q_OBJECT +public: + + QtAdvancedIMContactManager(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent); + + virtual ~QtAdvancedIMContactManager(); + + virtual bool couldBeSaved(); + + virtual void saveIMContacts(); + + virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode() { + return QtIMContactManagerInterface::contactManagerModeAdvanced; + } + + virtual void setQuteComName(const QString & qutecomName) { + //nothing to do... + } + + virtual void setSipAddress(const QString & sipAddress) { + //nothing to do... + } + + +private Q_SLOTS: + + void addIMContact(); + + void deleteIMContact(); + + void currentItemChangedSlot(QTreeWidgetItem * current, QTreeWidgetItem * previous); + +private: + + void loadIMContacts(); + + Ui::IMContactManager * _ui; +}; + +#endif //OWQTADVANCEDIMCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMContactItem.h" + +#include + +#include + +QtIMContactItem::QtIMContactItem(QTreeWidget * parent, const QStringList & strings) + : QTreeWidgetItem(parent, strings) { + + _imContact = NULL; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactItem.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTIMCONTACTITEM_H +#define QTIMCONTACTITEM_H + +#include + +class IMContact; + +/** + * Handles an item of the QTreeWidget. + * + * @see QtIMContactManager + * @see QtIMAccountItem + * @author Tanguy Krotoff + */ +class QtIMContactItem : public QTreeWidgetItem { +public: + + QtIMContactItem(QTreeWidget * parent, const QStringList & strings); + + void setIMContact(IMContact * imContact) { + _imContact = imContact; + } + + IMContact * getIMContact() const { + return _imContact; + } + +private: + + IMContact * _imContact; +}; + +#endif //QTIMCONTACTITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMContactManagerInterface.h" + +#include + +#include + +#include + +QtIMContactManagerInterface::QtIMContactManagerInterface(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent) + : QObject(parent), + _contactProfile(contactProfile), + _cUserProfile(cUserProfile) { + + _imContactManagerWidget = new QWidget(NULL); +} + +QtIMContactManagerInterface::~QtIMContactManagerInterface() { +} + +QWidget * QtIMContactManagerInterface::getWidget() const { + return _imContactManagerWidget; +} + +QtIMContactManagerInterface::contactManagerMode QtIMContactManagerInterface::getContactManagerMode() { + return QtIMContactManagerInterface::contactManagerModeUndefined; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtIMContactManagerInterface.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTIMCONTACTMANAGERINTERFACE_H +#define OWQTIMCONTACTMANAGERINTERFACE_H + +#include + +#include + +class ContactProfile; +class CUserProfile; + +class QWidget; + +/** + * Interface for classes handling IM accounts of a contact (IMContact). + * + * @see Contact + * @see IMContact + * @see QtSimpleIMContactManager + * @see QtAdvancedIMContactManager + * + * @author Xavier Desjardins + */ +class QtIMContactManagerInterface : public QObject, NonCopyable { + Q_OBJECT +public: + + QtIMContactManagerInterface(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent); + + virtual ~QtIMContactManagerInterface(); + + QWidget * getWidget() const ; + + /** + * Is there at least one valid contact to be saved + */ + virtual bool couldBeSaved() = 0; + + /** + * save IMContacts + */ + virtual void saveIMContacts() = 0; + + enum contactManagerMode { + contactManagerModeUndefined, + contactManagerModeSimple, + contactManagerModeAdvanced + }; + + /** + * @return contactManagerMode + */ + virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode(); + + virtual void setQuteComName(const QString & qutecomName) = 0; + + virtual void setSipAddress(const QString & sipAddress) = 0; + +Q_SIGNALS: + + /** + * something has changed + */ + void contentHasChanged(); + +protected: + + QWidget * _imContactManagerWidget; + + ContactProfile & _contactProfile; + + CUserProfile & _cUserProfile; +}; + +#endif //OWQTIMCONTACTMANAGERINTERFACE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,492 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSimpleIMContactManager.h" + +#include "ui_SimpleIMContactManager.h" + +#include +#include + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#include + +static const QString IMCONTACT_TEXT_SEPARATOR = ";"; + +QtSimpleIMContactManager::QtSimpleIMContactManager(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent) + : QtIMContactManagerInterface(contactProfile, cUserProfile, parent) { + + _imContactManagerWidget = new QWidget(NULL); + + _ui = new Ui::SimpleIMContactManager(); + _ui->setupUi(_imContactManagerWidget); + + _msnLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(msnLineEditClicked())); + _ui->msnLineEdit->installEventFilter(_msnLineEditMouseEventFilter); + _aimLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(aimLineEditClicked())); + _ui->aimLineEdit->installEventFilter(_aimLineEditMouseEventFilter); + _icqLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(icqLineEditClicked())); + _ui->icqLineEdit->installEventFilter(_icqLineEditMouseEventFilter); + _yahooLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(yahooLineEditClicked())); + _ui->yahooLineEdit->installEventFilter(_yahooLineEditMouseEventFilter); + _jabberLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(jabberLineEditClicked())); + _ui->jabberLineEdit->installEventFilter(_jabberLineEditMouseEventFilter); + _googleTalkLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(googleTalkLineEditClicked())); + _ui->googleTalkLineEdit->installEventFilter(_googleTalkLineEditMouseEventFilter); + + _faceBookLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(faceBookLineEditClicked())); + _ui->faceBookLineEdit->installEventFilter(_faceBookLineEditMouseEventFilter); + _mySpaceLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(mySpaceLineEditClicked())); + _ui->mySpaceLineEdit->installEventFilter(_mySpaceLineEditMouseEventFilter); + _skypeLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(skypeLineEditClicked())); + _ui->skypeLineEdit->installEventFilter(_skypeLineEditMouseEventFilter); + _twitterLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(twitterLineEditClicked())); + _ui->twitterLineEdit->installEventFilter(_twitterLineEditMouseEventFilter); + + SAFE_CONNECT(_ui->msnLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->aimLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->icqLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->yahooLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->jabberLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->googleTalkLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->qutecomLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->sipLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + + SAFE_CONNECT(_ui->faceBookLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->mySpaceLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->skypeLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + SAFE_CONNECT(_ui->twitterLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); + +#ifndef CUSTOM_ACCOUNT + _ui->qutecomLabel->hide(); + _ui->label_2->hide(); + _ui->qutecomLineEdit->hide(); +#endif + + +#ifndef ENABLE_FACEBOOK + _ui->faceBookLineEdit->hide(); + _ui->label_11->hide(); + _ui->faceBookLabel->hide(); +#endif +#ifndef ENABLE_MYSPACE + _ui->mySpaceLineEdit->hide(); + _ui->label_12->hide(); + _ui->mySpaceLabel->hide(); +#endif +#ifndef ENABLE_SKYPE + _ui->skypeLineEdit->hide(); + _ui->label_14->hide(); + _ui->skypeLabel->hide(); +#endif +#ifndef ENABLE_TWITTER + _ui->twitterLineEdit->hide(); + _ui->label_13->hide(); + _ui->twitterLabel->hide(); +#endif + +#ifndef MULTIIMWRAPPER + _ui->msnLineEdit->hide(); + _ui->label_4->hide(); + _ui->msnLabel->hide(); + + _ui->aimLineEdit->hide(); + _ui->label_7->hide(); + _ui->aimLabel->hide(); + + _ui->icqLineEdit->hide(); + _ui->label_8->hide(); + _ui->icqLabel->hide(); + + _ui->yahooLineEdit->hide(); + _ui->label_5->hide(); + _ui->yahooLabel->hide(); + + _ui->googleTalkLineEdit->hide(); + _ui->label_9->hide(); + _ui->googleTalkLabel->hide(); + + _ui->jabberLineEdit->hide(); + _ui->label_10->hide(); + _ui->jabberLabel->hide(); + + _ui->faceBookLineEdit->hide(); + _ui->label_11->hide(); + _ui->faceBookLabel->hide(); + + _ui->mySpaceLineEdit->hide(); + _ui->label_12->hide(); + _ui->mySpaceLabel->hide(); + + _ui->skypeLineEdit->hide(); + _ui->label_14->hide(); + _ui->skypeLabel->hide(); + + _ui->skypeLineEdit->hide(); + _ui->label_14->hide(); + _ui->skypeLabel->hide(); + + _ui->twitterLineEdit->hide(); + _ui->label_13->hide(); + _ui->twitterLabel->hide(); +#endif + + loadIMContacts(); +} + +QtSimpleIMContactManager::~QtSimpleIMContactManager() { + OWSAFE_DELETE(_msnLineEditMouseEventFilter); + OWSAFE_DELETE(_aimLineEditMouseEventFilter); + OWSAFE_DELETE(_icqLineEditMouseEventFilter); + OWSAFE_DELETE(_yahooLineEditMouseEventFilter); + OWSAFE_DELETE(_jabberLineEditMouseEventFilter); + OWSAFE_DELETE(_googleTalkLineEditMouseEventFilter); + + OWSAFE_DELETE(_faceBookLineEditMouseEventFilter); + OWSAFE_DELETE(_mySpaceLineEditMouseEventFilter); + OWSAFE_DELETE(_skypeLineEditMouseEventFilter); + OWSAFE_DELETE(_twitterLineEditMouseEventFilter); + + OWSAFE_DELETE(_ui); +} + +std::set QtSimpleIMContactManager::findIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const { + std::set result; + + const IMContactSet & imContactSet = _contactProfile.getIMContactSet(); + for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { + if ((*it).getProtocol() == imProtocol) { + result.insert((IMContact *)(&(*it))); + } + } + + return result; +} + +QString QtSimpleIMContactManager::getIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const { + QString imContacts; + + std::set imContactSet = findIMContactsOfProtocol(imProtocol); + for (std::set::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { + IMContact * imContact = *it; + imContacts += QString::fromUtf8(imContact->getDisplayContactId().c_str()); + imContacts += IMCONTACT_TEXT_SEPARATOR; + } + + //Remove the last IMCONTACT_TEXT_SEPARATOR + int index = imContacts.lastIndexOf(IMCONTACT_TEXT_SEPARATOR); + imContacts.remove(index, 1); + + return imContacts; +} + +void QtSimpleIMContactManager::changeIMProtocolPixmaps(EnumIMProtocol::IMProtocol imProtocol, + QLabel * imProtocolLabel, const char * connectedPixmap, QLineEdit * imProtocolLineEdit) { + + IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); + if (!imAccounts.empty()) { + imProtocolLineEdit->setEnabled(true); + imProtocolLabel->setPixmap(QPixmap(connectedPixmap)); + } +} + +void QtSimpleIMContactManager::loadIMContacts() { + //Update presentation depending if IM accounts exist + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolMSN, + _ui->msnLabel, ":pics/protocols/msn.png", _ui->msnLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolAIM, + _ui->aimLabel, ":pics/protocols/aim.png", _ui->aimLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolICQ, + _ui->icqLabel, ":pics/protocols/icq.png", _ui->icqLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolYahoo, + _ui->yahooLabel, ":pics/protocols/yahoo.png", _ui->yahooLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolJabber, + _ui->jabberLabel, ":pics/protocols/jabber.png", _ui->jabberLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolGoogleTalk, + _ui->googleTalkLabel, ":pics/protocols/google-talk.png", _ui->googleTalkLineEdit); + + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolFaceBook, + _ui->faceBookLabel, ":pics/protocols/facebook.png", _ui->faceBookLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolMySpace, + _ui->mySpaceLabel, ":pics/protocols/myspace.png", _ui->mySpaceLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolSkype, + _ui->skypeLabel, ":pics/protocols/skype.png", _ui->skypeLineEdit); + changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolTwitter, + _ui->twitterLabel, ":pics/protocols/twitter.png", _ui->twitterLineEdit); + + //Loads all the IM contacts + _ui->qutecomLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolQuteCom)); + if (_ui->msnLineEdit->isEnabled()) { + _ui->msnLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolMSN)); + } + if (_ui->aimLineEdit->isEnabled()) { + _ui->aimLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolAIM)); + } + if (_ui->icqLineEdit->isEnabled()) { + _ui->icqLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolICQ)); + } + if (_ui->yahooLineEdit->isEnabled()) { + _ui->yahooLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolYahoo)); + } + if (_ui->jabberLineEdit->isEnabled()) { + _ui->jabberLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolJabber)); + } + if (_ui->googleTalkLineEdit->isEnabled()) { + _ui->googleTalkLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolGoogleTalk)); + } + + if (_ui->faceBookLineEdit->isEnabled()) { + _ui->faceBookLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolFaceBook)); + } + if (_ui->mySpaceLineEdit->isEnabled()) { + _ui->mySpaceLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolMySpace)); + } + if (_ui->skypeLineEdit->isEnabled()) { + _ui->skypeLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolSkype)); + } + if (_ui->twitterLineEdit->isEnabled()) { + _ui->twitterLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolTwitter)); + } + + _ui->sipLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolSIP)); +} + +void QtSimpleIMContactManager::addIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol, const QString & text) { + QString imContactsBefore = getIMContactsOfProtocol(imProtocol); + QStringList contactIdListBefore = imContactsBefore.split(IMCONTACT_TEXT_SEPARATOR); + QString imContactsAfter = text; + QStringList contactIdListAfter = imContactsAfter.split(IMCONTACT_TEXT_SEPARATOR); + for (int i = 0; i < contactIdListAfter.size(); i++) { + contactIdListAfter[i] = contactIdListAfter[i].trimmed(); + } + + //Remove IMContacts + for (int i = 0; i < contactIdListBefore.size(); i++) { + QString contactId = contactIdListBefore[i]; + + if (!contactIdListAfter.contains(contactId)) { + //Remove the imContact from the contactProfile + IMContact imContact(imProtocol, std::string(contactId.toUtf8())); + _contactProfile.removeIMContact(imContact); + } + } + + //Check if id is not empty + if (text.isEmpty()) { + return; + } + + //Add IMContacts + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qutecomSuffix = "@" + QString::fromUtf8( config.getQuteComRealm().c_str() ); + for (int i = 0; i < contactIdListAfter.size(); i++) { + QString contactId = contactIdListAfter[i]; + + if (!contactIdListBefore.contains(contactId)) { + + // sip contact should know their domain + if (imProtocol == EnumIMProtocol::IMProtocolQuteCom) { + contactId += qutecomSuffix; + } else if (imProtocol == EnumIMProtocol::IMProtocolSIP) { + if (!contactId.contains("@")) { + SipAccount * sipaccount = _cUserProfile.getUserProfile().getSipAccount(); + if (sipaccount) { + contactId += QString("@") + QString::fromUtf8(sipaccount->getRealm().c_str()); + } + } + } + //// + + //Add the imContact to the contactProfile + IMContact imContact(imProtocol, std::string(contactId.toUtf8())); + + //IMAccount to associate with the IMContact + IMAccountList imAccounts = + _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); + IMAccountList::const_iterator it = imAccounts.begin(); + if (it != imAccounts.end()) { + IMAccount * imAccount = + _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount((*it).getUUID()); + imContact.setIMAccount(imAccount); + OWSAFE_DELETE(imAccount); + } + + _contactProfile.addIMContact(imContact); + } + } +} + +void QtSimpleIMContactManager::saveIMContacts() { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolQuteCom, _ui->qutecomLineEdit->text()); + if (_ui->msnLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolMSN, _ui->msnLineEdit->text()); + } + if (_ui->aimLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolAIM, _ui->aimLineEdit->text()); + } + if (_ui->icqLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolICQ, _ui->icqLineEdit->text()); + } + if (_ui->yahooLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolYahoo, _ui->yahooLineEdit->text()); + } + if (_ui->jabberLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolJabber, _ui->jabberLineEdit->text()); + } + if (_ui->googleTalkLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolGoogleTalk, _ui->googleTalkLineEdit->text()); + } + + if (_ui->faceBookLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolFaceBook, _ui->faceBookLineEdit->text()); + } + if (_ui->mySpaceLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolMySpace, _ui->mySpaceLineEdit->text()); + } + if (_ui->skypeLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolSkype, _ui->skypeLineEdit->text()); + } + if (_ui->twitterLineEdit->isEnabled()) { + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolTwitter, _ui->twitterLineEdit->text()); + } + + addIMContactsOfProtocol(EnumIMProtocol::IMProtocolSIP, _ui->sipLineEdit->text().remove(" ")); +} + +void QtSimpleIMContactManager::msnLineEditClicked() { + if (!_ui->msnLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolMSN, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::aimLineEditClicked() { + if (!_ui->aimLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolAIM, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::icqLineEditClicked() { + if (!_ui->icqLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolICQ, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::yahooLineEditClicked() { + if (!_ui->yahooLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolYahoo, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::jabberLineEditClicked() { + if (!_ui->jabberLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolJabber, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::faceBookLineEditClicked() { + if (!_ui->faceBookLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolFaceBook, _imContactManagerWidget); + loadIMContacts(); + } +} +void QtSimpleIMContactManager::mySpaceLineEditClicked() { + if (!_ui->mySpaceLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolMySpace, _imContactManagerWidget); + loadIMContacts(); + } +} +void QtSimpleIMContactManager::skypeLineEditClicked() { + if (!_ui->skypeLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolSkype, _imContactManagerWidget); + loadIMContacts(); + } +} +void QtSimpleIMContactManager::twitterLineEditClicked() { + if (!_ui->twitterLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolTwitter, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::googleTalkLineEditClicked() { + if (!_ui->jabberLineEdit->isEnabled()) { + QtIMAccountSettings(_cUserProfile.getUserProfile(), + QtEnumIMProtocol::IMProtocolGoogleTalk, _imContactManagerWidget); + loadIMContacts(); + } +} + +void QtSimpleIMContactManager::setQuteComName(const QString & qutecomName) { + _ui->qutecomLineEdit->setText(qutecomName); + _ui->qutecomLineEdit->setEnabled(true); +} + +void QtSimpleIMContactManager::setSipAddress(const QString & sipAddress) { + _ui->sipLineEdit->setText(sipAddress); + _ui->sipLineEdit->setEnabled(true); +} + +bool QtSimpleIMContactManager::couldBeSaved() { + return ( (/*(_ui->qutecomLineEdit->isEnabled()) &&*/ (!_ui->qutecomLineEdit->text().isEmpty())) || + ((_ui->msnLineEdit->isEnabled()) && (!_ui->msnLineEdit->text().isEmpty())) || + (( _ui->aimLineEdit->isEnabled()) && (! _ui->aimLineEdit->text().isEmpty())) || + (( _ui->icqLineEdit->isEnabled()) && (! _ui->icqLineEdit->text().isEmpty())) || + (( _ui->yahooLineEdit->isEnabled()) && (! _ui->yahooLineEdit->text().isEmpty())) || + (( _ui->jabberLineEdit->isEnabled()) && (! _ui->jabberLineEdit->text().isEmpty())) || + + (( _ui->faceBookLineEdit->isEnabled()) && (! _ui->faceBookLineEdit->text().isEmpty())) || + (( _ui->mySpaceLineEdit->isEnabled()) && (! _ui->mySpaceLineEdit->text().isEmpty())) || + (( _ui->skypeLineEdit->isEnabled()) && (! _ui->skypeLineEdit->text().isEmpty())) || + (( _ui->twitterLineEdit->isEnabled()) && (! _ui->twitterLineEdit->text().isEmpty())) || + + (/*( _ui->sipLineEdit->isEnabled()) &&*/ (!_ui->sipLineEdit->text().isEmpty())) + ); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/QtSimpleIMContactManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,134 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSIMPLEIMCONTACTMANAGER_H +#define OWQTSIMPLEIMCONTACTMANAGER_H + +#include + +#include + +#include + +class IMContact; +class ContactProfile; +class CUserProfile; +class MousePressEventFilter; + +class QLineEdit; +class QLabel; +class QWidget; +namespace Ui { class SimpleIMContactManager; } + +/** + * Simplified widget for adding an IM contact to a given contact. + * + * @see QtIMContactManager + * @see QtSimpleIMAccountManager + * + * @author Tanguy Krotoff + * @author Xavier Desjardins + */ +class QtSimpleIMContactManager : public QtIMContactManagerInterface { + Q_OBJECT +public: + + QtSimpleIMContactManager(ContactProfile & contactProfile, + CUserProfile & cUserProfile, QWidget * parent); + + ~QtSimpleIMContactManager(); + + virtual bool couldBeSaved(); + + virtual void saveIMContacts(); + + virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode() { + return QtIMContactManagerInterface::contactManagerModeSimple; + } + + virtual void setQuteComName(const QString & qutecomName); + + virtual void setSipAddress(const QString & sipAddress); + +private Q_SLOTS: + + void msnLineEditClicked(); + + void aimLineEditClicked(); + + void icqLineEditClicked(); + + void yahooLineEditClicked(); + + void jabberLineEditClicked(); + + void googleTalkLineEditClicked(); + + void faceBookLineEditClicked(); + void mySpaceLineEditClicked(); + void skypeLineEditClicked(); + void twitterLineEditClicked(); + +private: + + void loadIMContacts(); + + /** + * Code factorization. + */ + std::set findIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const; + + /** + * Code factorization. + */ + QString getIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const; + + /** + * Code factorization. + */ + void addIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol, const QString & text); + + /** + * Code factorization. + */ + void changeIMProtocolPixmaps(EnumIMProtocol::IMProtocol imProtocol, + QLabel * imProtocolLabel, const char * connectedPixmap, QLineEdit * imProtocolLineEdit); + + Ui::SimpleIMContactManager * _ui; + + MousePressEventFilter * _msnLineEditMouseEventFilter; + + MousePressEventFilter * _aimLineEditMouseEventFilter; + + MousePressEventFilter * _icqLineEditMouseEventFilter; + + MousePressEventFilter * _yahooLineEditMouseEventFilter; + + MousePressEventFilter * _jabberLineEditMouseEventFilter; + + MousePressEventFilter * _googleTalkLineEditMouseEventFilter; + + MousePressEventFilter * _faceBookLineEditMouseEventFilter; + MousePressEventFilter * _mySpaceLineEditMouseEventFilter; + MousePressEventFilter * _skypeLineEditMouseEventFilter; + MousePressEventFilter * _twitterLineEditMouseEventFilter; + +}; + +#endif //OWQTSIMPLEIMCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/SimpleIMContactManager.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/SimpleIMContactManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/imcontact/SimpleIMContactManager.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/imcontact/SimpleIMContactManager.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,390 @@ + + SimpleIMContactManager + + + + 0 + 0 + 472 + 369 + + + + + + + + 22 + 22 + + + + :/pics/protocols/qutecom.png + + + + + + + + 0 + 0 + + + + @company@ ID: + + + + + + + true + + + + + + + + + + :/pics/protocols/msn_off.png + + + + + + + MSN ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/aim_off.png + + + + + + + AIM ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/icq_off.png + + + + + + + ICQ ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/yahoo_off.png + + + + + + + Yahoo! ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/google-talk_off.png + + + + + + + + 0 + 0 + + + + GoogleTalk ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/jabber_off.png + + + + + + + + 0 + 0 + + + + Jabber ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/facebook_off.png + + + true + + + + + + + + 0 + 0 + + + + FaceBook ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/myspace_off.png + + + true + + + + + + + + 0 + 0 + + + + MySpace ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/skype_off.png + + + true + + + + + + + + 0 + 0 + + + + Skype ID: + + + + + + + false + + + Update your profile + + + + + + + :/pics/protocols/twitter_off.png + + + true + + + + + + + + 0 + 0 + + + + Twitter ID: + + + + + + + false + + + Update your profile + + + + + + + + + + :/pics/protocols/sip.png + + + + + + + SIP ID: + + + + + + + true + + + + + + + + + + Qt::Vertical + + + + 379 + 21 + + + + + + + + qutecomLineEdit + msnLineEdit + aimLineEdit + yahooLineEdit + googleTalkLineEdit + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/install/CMakeLists-install-macosx.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/install/CMakeLists-install-macosx.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/install/CMakeLists-install-macosx.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/install/CMakeLists-install-macosx.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,245 @@ +# vim: filetype=cmake +set(CMAKE_CURRENT_SOURCE_DIR "${SOURCE_DIR}" CACHE INTERNAL "CMake source dir" FORCE) +set(CMAKE_SOURCE_DIR "${SOURCE_DIR}" CACHE INTERNAL "CMake source dir" FORCE) +set(CMAKE_BINARY_DIR "${BINARY_DIR}" CACHE INTERNAL "CMake binary dir" FORCE) + +set(CMAKE_MODULE_PATH + ${CMAKE_SOURCE_DIR}/owbuild + ${CMAKE_SOURCE_DIR}/owbuild/owbuild +) + +# Add macros +include(${CMAKE_SOURCE_DIR}/owbuild/owbuild/CMakeLists.txt) + +# Add options/default values... +include(${CMAKE_SOURCE_DIR}/DefineQuteComOptions.cmake) +include(${CMAKE_SOURCE_DIR}/DefineInstallationPaths.cmake) + +set(CMAKE_MODULE_PATH + ${SOURCE_DIR}/owbuild/owbuild +) + +set(FRAMEWORK_INSTALL_DIR + ${BUILD_DIR}/QuteCom.app/Contents/Frameworks +) + +set(DATA_INSTALL_DIR + ${BUILD_DIR}/QuteCom.app/Contents/Resources +) + +include(OWChangeIdentificationName) +include(OWChangeInstallName) +include(OWCopyDir) +include(OWCopyFile) +include(OWHdiUtil) + +## Copy and create the locale directories to have the Application translated by Mac OS X +file(GLOB_RECURSE _qmFiles ${BUILD_DIR}/lang/qtqutecom_*.qm) + +if (_qmFiles) + foreach (_qm ${_qmFiles}) + # Extract language from qm file + GET_FILENAME_COMPONENT(lang ${_qm} NAME_WE) + STRING(REPLACE "qtqutecom_" "" lang ${lang}) + + make_directory(${DATA_INSTALL_DIR}/${lang}.lproj) + endforeach (_qm ${_qmFiles}) +endif (_qmFiles) +ow_copy_dir(${BUILD_DIR}/lang/*.qm ${DATA_INSTALL_DIR}/lang/.) +#### + +## Create the Info.plist file +file(WRITE "${BUILD_DIR}/QuteCom.app/Contents/Info.plist" +"\n" +"\n" +"\n" +"\n" +" CFBundleDevelopmentRegion\n" +" English\n" +" CFBundleExecutable\n" +" QuteCom\n" +" CFBundleIconFile\n" +" qutecom.icns\n" +" CFBundleIdentifier\n" +" com.mbdsys.QuteCom\n" +" CFBundleInfoDictionaryVersion\n" +" 6.0\n" +" CFBundlePackageType\n" +" APPL\n" +" CFBundleSignature\n" +" WNGP\n" +" CFBundleURLTypes\n" +" \n" +" \n" +" CFBundleTypeRole\n" +" Viewer\n" +" CFBundleURLName\n" +" http://www.qutecom.org\n" +" CFBundleURLSchemes\n" +" \n" +" qutecom\n" +" \n" +" \n" +" \n" +" CFBundleVersion\n" +" ${APPLICATION_VERSION}\n" +"\n" +"\n" +) +#### + +## Copying resources +# QuteCom icon +ow_copy_file(${SOURCE_DIR}/qutecom/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns + ${BUILD_DIR}/QuteCom.app/Contents/Resources/qutecom.icns +) +#### + +## Copying binaries +# Qt +macro (ow_copy_qt libName qtLib) + # e.g: libName = QtCore, qtLib = /Library/Frameworks/QtCore.framework (on Mac OS X) + set(DEST_DIR ${FRAMEWORK_INSTALL_DIR}/${libName}.framework/Versions/4/) + make_directory(${DEST_DIR}) + execute_process( + COMMAND cp -f ${qtLib}/Versions/4/${libName} ${DEST_DIR} + ) +endmacro (ow_copy_qt) + +string(REGEX REPLACE "\\\\" "/" QTDIR "$ENV{QTDIR}") +find_package(Qt4 REQUIRED) + +set(QT_CORE "") +set(QT_GUI "") +set(QT_XML "") +set(QT_SVG "") +set(QT_NETWORK "") +set(QT_DBUS "") +set(QT_WEBKIT "") +set(QT_PHONON "") + +if (CMAKE_BUILD_TYPE MATCHES Debug) + set(QT_CORE ${QT_QTCORE_LIBRARY_DEBUG}) + set(QT_GUI ${QT_QTGUI_LIBRARY_DEBUG}) + set(QT_XML ${QT_QTXML_LIBRARY_DEBUG}) + set(QT_SVG ${QT_QTSVG_LIBRARY_DEBUG}) + set(QT_NETWORK ${QT_QTNETWORK_LIBRARY_DEBUG}) + set(QT_DBUS ${QT_QTDBUS_LIBRARY_DEBUG}) + set(QT_WEBKIT ${QT_QTWEBKIT_LIBRARY_DEBUG}) + set(QT_PHONON ${QT_PHONON_LIBRARY_DEBUG}) +else (CMAKE_BUILD_TYPE MATCHES Debug) + set(QT_CORE ${QT_QTCORE_LIBRARY_RELEASE}) + set(QT_GUI ${QT_QTGUI_LIBRARY_RELEASE}) + set(QT_XML ${QT_QTXML_LIBRARY_RELEASE}) + set(QT_SVG ${QT_QTSVG_LIBRARY_RELEASE}) + set(QT_NETWORK ${QT_QTNETWORK_LIBRARY_RELEASE}) + set(QT_DBUS ${QT_QTDBUS_LIBRARY_RELEASE}) + set(QT_WEBKIT ${QT_QTWEBKIT_LIBRARY_RELEASE}) + set(QT_PHONON ${QT_PHONON_LIBRARY_RELEASE}) +endif (CMAKE_BUILD_TYPE MATCHES Debug) + +ow_copy_qt(QtCore ${QT_CORE}) +ow_copy_qt(QtGui ${QT_GUI}) +ow_copy_qt(QtXml ${QT_XML}) +ow_copy_qt(QtSvg ${QT_SVG}) +ow_copy_qt(QtNetwork ${QT_NETWORK}) +ow_copy_qt(QtDBus ${QT_DBUS}) +ow_copy_qt(QtWebKit ${QT_WEBKIT}) +ow_copy_qt(phonon ${QT_PHONON}) + +# libpng12 +ow_copy_file(/usr/local/lib/libpng12.0.dylib + ${FRAMEWORK_INSTALL_DIR}/libpng12.0.dylib +) + +# libtiff +ow_copy_file(/usr/local/lib/libtiff.3.dylib + ${FRAMEWORK_INSTALL_DIR}/libtiff.3.dylib +) + +# curl +ow_copy_file(${CMAKE_BINARY_DIR}/libs/3rdparty/curl/libcurl.dylib + ${FRAMEWORK_INSTALL_DIR}/libowcurl.dylib +) + +ow_change_identification_name(${FRAMEWORK_INSTALL_DIR}/libowcurl.dylib libowcurl.dylib) + +# webcam +ow_copy_file(${CMAKE_BINARY_DIR}/libs/webcam/libwebcam.dylib + ${FRAMEWORK_INSTALL_DIR}/ +) + +# Copy PhApi +ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi/libphapi.dylib + ${FRAMEWORK_INSTALL_DIR}/ +) + +ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi-util/libphapiutil.dylib + ${FRAMEWORK_INSTALL_DIR}/ +) + +# Copy PhApi plugins +make_directory(${FRAMEWORK_INSTALL_DIR}/phapi-plugins/) + +ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi/phspeexplugin/libphspeexplugin.so + ${FRAMEWORK_INSTALL_DIR}/phapi-plugins/ +) + +ow_copy_file(${CMAKE_BINARY_DIR}/wifo/wifo-plugins/sfp-plugin/libsfp-plugin.so + ${FRAMEWORK_INSTALL_DIR}/phapi-plugins/ +) + +## Change install names +set(QUTECOM_EXE "${BUILD_DIR}QuteCom.app/Contents/MacOS/QuteCom") + +set(COPY_PYTHON_SCRIPT + ${SOURCE_DIR}/scripts/copy_missing_libraries.py +) + +set(UPDATE_LINKS_PYTHON_SCRIPT + ${SOURCE_DIR}/scripts/update_links.py +) + +# Copy missing dependencies of QuteCom binary. +execute_process( + COMMAND + python ${COPY_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/MacOS/QuteCom ${FRAMEWORK_INSTALL_DIR} +) + +execute_process( + COMMAND + python ${COPY_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/MacOS/owcrashreport ${FRAMEWORK_INSTALL_DIR} +) + +# Copy missing dependencies of files in ${FRAMEWORK_INSTALL_DIR}. +execute_process( + COMMAND + python ${COPY_PYTHON_SCRIPT} ${FRAMEWORK_INSTALL_DIR} +) + +# Update install names +execute_process( + COMMAND + python ${UPDATE_LINKS_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/ ${BUILD_DIR}/QuteCom.app/Contents/MacOS/QuteCom +) + +execute_process( + COMMAND + python ${UPDATE_LINKS_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/ ${BUILD_DIR}/QuteCom.app/Contents/MacOS/owcrashreport +) + +#### + +## Update rights on QuteCom files +message("Updating rights on QuteCom.app...") +execute_process( + COMMAND "chmod" -R 755 ${BUILD_DIR}/QuteCom.app +) +#### + +## Creates .dmg of QuteCom +execute_process( + COMMAND "rm" -r ${CMAKE_BINARY_DIR}/QuteCom.dmg +) +ow_hdiutil(QuteCom ${BUILD_DIR}/QuteCom.app ${CMAKE_BINARY_DIR}/QuteCom.dmg) +#### diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/install/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/install/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/install/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/install/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3 @@ +if (APPLE) + include(CMakeLists-install-macosx.txt) +endif (APPLE) \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/CMakeLists.txt qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,19 @@ +# For Qt-4 translations + +add_custom_target(lupdate + COMMAND + "${CMAKE_COMMAND}" + -DPRO_FILE="${CMAKE_SOURCE_DIR}/lang.pro" + -P "${CMAKE_SOURCE_DIR}/owbuild/owbuild/OWLocaleUpdate.cmake" + WORKING_DIRECTORY + ${CMAKE_SOURCE_DIR} +) + +add_custom_target(lrelease + COMMAND + "${CMAKE_COMMAND}" + -DLOCALE_COPY_DIR="${LOCALE_COPY_DIR}" + -P "${CMAKE_SOURCE_DIR}/owbuild/owbuild/OWLocaleRelease.cmake" + WORKING_DIRECTORY + ${CMAKE_SOURCE_DIR} +) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/fixlang.php qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/fixlang.php --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/fixlang.php 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/fixlang.php 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,35 @@ +context as $ctx) + { + foreach($ctx->message as $msg) + { + $text = (string) $msg->translation; + $text = trim($text); + if (strstr($msg->source, "GNU")) + $att="ATTENTION!!!!!*****"; + else + $att=""; + + print $att."translation = ".$text." len=".strlen($text)."\r\n"; + if (!strlen($text)) + { + print "Fixing...\r\n"; + $msg->translation->addAttribute("type", "unfinished"); + } + }; + }; + + $str = $obj->asXML(); + + $out = fopen($fn, "w"); + fputs($out, $str); + fclose($out); +} +?> diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ar_SA.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ar_SA.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ar_SA.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ar_SA.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3966 @@ + + + + + AIMSettings + + AIM Settings + ضبط AIM + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Forgot your AIM password? + هل نسيت كلمة السر ﻟـ AIM ؟ + + + Get a new AIM Account + تحصل على إسم مستخدم جديد ﻟـ AIM + + + + AboutWindow + + @product@ - About + @product@ - حول + + + About + حول البرنامج + + + @product@, a voice over Internet phone + @product@, هاتف عبر شبكة الأنترنت + + + Copyright (C)2008 Mbdsys + حقوق التأليف والنشر محفوظة (C)2008 Halys + + + 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. + هذا البرنامج هو برنامج حر، يمكنك إعادة توزيعه و/أو +تعديله مع احترام شروط الترخيص العامة GNU +كما صدرت من طرف مؤسسة البرمجيات الحرة في الإصدار 2 +أو أي إصدار يتبعه. + + + Authors + المؤلفون + + + Close + إغلاق + + + + AcceptDialog + + File Transfer + نقل الملفات + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">عنوان الاتصال: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">اسم الملف : </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>ملف قادم</h1></span></p></body></html> + + + &Accept + &قبول + + + &Cancel + &إلغاء + + + + AccountSettings + + &Edit my profile + &تعديل ملفي الشخصي + + + + AddAccount + + @product@ - Login + @product@ - تسجيل الدخول + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">ضبط حساب للمكالمات الهاتفية عبر نظام الأنترنت</span><br><br><span>من فضلك قل لنا إذا ما تم توفير حسابك<br/>عن طريق @company@ أو عن طريق خدمة أخرى</span> + + + You don't have any account ? Click here + ليس لديك أي حساب؟ اضغط هنا + + + Configure your account: + تكوين الحساب الخاص بك : + + + @company@ account + @company@ حساب + + + Generic SIP account + حساب عام SIP + + + Need help? + هل تحتاج مساعدة؟ + + + &Back + إلى الخل&ف + + + &Next + إلى الأم&ام + + + Cancel + إلغاء + + + + AddIMContact + + @product@ - Add a Contact Account + @product@ - إضافة صديق + + + Contact Type (protocol): + نوع حساب أو بروتوكول الصديق : + + + Contact ID: + معرف الصديق : + + + Account: + الحساب: + + + Enable + تخويل + + + Login + اسم المستخدم + + + Add + إضافة + + + Cancel + إلغاء + + + + AddQuteComAccount + + @product@ - Login + @product@ - اسم المستخدم + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">التسجيل</span><br><br><span>الرجاء إدخال عنوان بريدك الالكتروني و<br>كلمة السر</span> + + + Click here if you don't have a @company@ account + إضغط هنا إذا لم يكن لديك حسابا ب @company@ + + + Password: + كلمة السر : + + + Forgot your @company@ password? + هل نسيت كلمة سرك الخاصة ب @company@؟ + + + Email Address: + عنوان البريد الإلكتروني : + + + Need help? + هل تحتاج مساعدة؟ + + + &Back + &إلى الخلف + + + &Connect + &ولوج + + + Cancel + إلغاء + + + + AddSIPAccount + + @product@ - Login + @product@ - اسم المستخدم + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">تكوين SIP حساب خاص بك</span><br><br><span>الرجاء إدخال المعلومات التي س<br/>تمكن هاتفك عبر الأنترنت من الولوج إلى<br/>حسابك اﻟـ SIP</span> + + + : + : + + + Password: + كلمة السر : + + + Proxy: + الخادم المفوض : + + + SIP Domain / Realm: + نطاق SIP: + + + Server: + الخادم : + + + Account name: + اسم الحساب: + + + Displayname: + الإسم المعروض: + + + login / username: + اسم المستخدم: + + + Advanced + خاصيات متقدمة + + + Activate presence and chat (SIP/SIMPLE) + تفعيل خاصيات الحضور و المحادثة النصية (SIP/SIMPLE) + + + Need help? + هل تحتاج مساعدة؟ + + + &Back + &إلى الخلف + + + &Connect + &ولوج + + + Cancel + إلغاء + + + + AdvancedConfigWindow + + @product@ - Advanced Configuration + @product@ - إعداد متقدم + + + Preference Name + إسم الخاصية + + + Status + الوضع + + + Type + الصنف + + + Value + القيمة + + + Default Value + القيمة الإعتيادية + + + Close + إغلاق + + + Save + حفظ + + + + AdvancedSettings + + Advanced Settings + خصائص متقدمة + + + Automatically answer incoming calls from + الإجابة آليا على المكالمات القادمة من + + + Add + إضافة + + + Remove + إزالة + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + تنبيه، هذا القسم خاص بالمستخدمين المتمرسين، أي خطإ يمكن أن يعطل البرنامج. + + + Advanced Configuration Window + نافذة الخصائص المتقدمة + + + + AppearanceSettings + + Form + استمارة + + + Toolbar + شريط الأدوات + + + &Icons && Text + نص و أيقونا&ت + + + Icons &Only + أيقونات &فقط + + + &Hidden + &مخفي + + + Chat Theme + هيئة الدردشة + + + + AudioSettings + + &Input device: + &جهاز إدخال الصوت: + + + &Output device: + ج&هاز إخراج الصوت: + + + &Ringing device: + جها&ز إخراج الرنين: + + + &Make a test call + &إجراء مكالمة تجريبية + + + Test + اختبار + + + &Half Duplex + في إتجاه واحد &فقط + + + &Advanced >> + &متقدم >> + + + Audio Codecs + طريقة ترميز الصوت + + + Reset + إعادة للوضع الأول + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + كن حذرا، هذا القسم مخصص للمستخدمين ذوي الصلاحيات فقط. +أي تغيير في قائمة الترميز يمكن أن يؤدي إلى مشاكل عندما تحاول تشغيل @product@ : مثلا لن تتمكن من الإتصال بمخاطبيك أبدا. + + + + AvatarFrame + + Form + استمارة + + + + AvatarWidget + + Form + استمارة + + + + BrowserSoftUpdateWindow + + @product@ - Update available + @product@ - هناك تحديث متوفر + + + Close + إغلاق + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + <html><head></head><body>هناك تحديث متوفر، انقر <span style=" text-decoration: underline; color:#0000ff;">هنا</span> لتحميل النسخة الجديدة<br /><br />الإصدار: %1<br />حجم الملف: %2 (MB)<br /></body></html> + + + + CallForwardSettings + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + تحويل المكالمات نشط اذا لم تكن متصلا على @company@ أو عندما يكون خطك مشغولا أو إن لم ترد على مكالمة خلال ٢٠ ثانية. يمكنك إدخال أكثر من ثلاثة تحويلات إلى هواتف أرضية وهواتف نقالة أو البريد الصوتي (إن وجد) + + + Disable call forwarding + إلغاء تحويل المكالمات + + + Forward all unanswered calls to message box + تحويل جميع المكالمات التي لم يرد عليها إلى صندوق البريد + + + Forward all unanswered calls to following phone numbers: + تحويل جميع المكالمات التي لم يرد عليها إلى أرقام الهاتف: + + + 3rd: + الثالث: + + + 1st: + الأول: + + + 2nd: + الثاني: + + + (+ country code) phone number + رقم الهاتف (كود البلد+) + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + مثلا 3314500XXXX+ + + + + CallToaster + + Incoming Call + مكالمة واردة + + + Message + رسالة + + + + ChatLogViewer + + Chat History + سجل المحادثة النصية + + + &Contact + &عنوان المخاطب + + + @company@ + @company@ + + + &Tools + الأد&وات + + + &Help + &مساعدة + + + &Actions + الإ&جراءات + + + Main Toolbar + شريط الأدوات الرئيسي + + + Call Contact + إتصل بالمخاطب + + + Send a File + إرسال ملف + + + createChatConf + أنشئ دردشة جماعية + + + Show Contact Info + أظهر معلومات المخاطب + + + blockContact + إمنع المخاطب + + + &Save History As... + &حفظ السجل في... + + + actionRestartChat + إعادة تشغيل الدردشة + + + + ChatMainWindow + + MainWindow + النافذة الرئيسية + + + &Edit + &تعديل + + + &Contact + &عنوان المخاطب + + + @company@ + @company@ + + + &Actions + الإ&جراءات + + + &Tools + الأ&دوات + + + Main Toolbar + شريط الأدوات الرئيسي + + + &Close + إ&غلاق + + + Call Contact + إتصل بالمخاطب + + + Send a File + إرسال ملف + + + Start Chat Conference + إبدأ دردشة جماعية + + + Conference + مكالمة جماعية + + + Show Contact Info + أظهر معلومات المخاطب + + + blockContact + إمنع المخاطب + + + &Save History As... + &حفظ السجل في... + + + Cu&t + قط&ع + + + Ctrl+X + Ctrl+X + + + &Copy + &نسخ + + + Ctrl+C + Ctrl+C + + + &Paste + &لصق + + + Ctrl+V + Ctrl+V + + + + ChatRoomInviteWidget + + Chat room + غرفة الدردشة + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">غرفة الدردشة</span></p></body></html> + + + (Conference participants) + (أعضاء الدردشة الجماعية) + + + &Remove + إزا&لة + + + &Start + إ&بدأ + + + Group Name + اسم المجموعة + + + &Add + أض&ف + + + + ChatToaster + + Message + رسالة + + + Incoming Chat + محادثة نصية واردة + + + + ChatWidget + + Form + استمارة + + + + ConferenceCallWidget + + @product@ - Create a Conference + @product@ - إبدأ مكالمة جماعية + + + Start + إبدأ + + + Cancel + إلغاء + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">مكالمة جماعية</span><br /><br />الرجاء إدخال رقمي هاتف </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">أو معرف @company@ حتى</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">تنشئ مكالمة جماعية بثلاثة أفراد.</p> + + + Phone number 2: + رقم الهاتف ٢: + + + Phone number 1: + رقم الهاتف ١: + + + ... + ... + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">مكالمة جماعية</span><br /><br />الرجاء إدخال رقمي هاتف </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">أو معرف @company@ حتى</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">تنشئ مكالمة جماعية بثلاثة أفراد.</p> + + + &Add >> + أ&ضف >> + + + << &Remove + << إزا&لة + + + Available Contacts + المستخدمون الموجودون + + + &Start + إ&بدأ + + + Cancel + إلغاء + + + + ContactGroupPopupMenu + + Remove Contact Group + إزالة مجموعة الاتصال + + + Rename Contact Group + إعادة تسمية مجموعة الاتصال + + + Delete group + حذف المجموعة + + + Do you really want to delete this group? + هل حقا تريد حذف هذه المجموعة؟ + + + &Yes + &نعم + + + &No + &لا + + + + ContactList + + Contact List + قائمة الإتصال + + + goupname + اسم المجموعة + + + + ContactWidget + + No landline phone number set + ليس هناك أي رقم هاتف أرضي مضبوط + + + No mobile phone number set + ليس هناك أي رقم هاتف خلوي مضبوط + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">انقر لتغيير هذا العنوانt</p></body></html> + + + + CrashReport + + Program Failure + تقرير حول فشل البرنامج + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + لقد فشل برنامج @product@ أثناء عمله ولقد تم إنشاء ملف التشخيص. +هذا الملف يحتوي على معلومات مفيدة من أجل حل المشكلة التي تواجهها. +شكرا لمشاركتك. + +فريق تطوير برنامج @product@. + + + Optional Information + معلومات إضافية + + + Your Mail: + عنوان البريد الإلكتروني الخاص بك: + + + In order to help the developers you can complete this report. This step is optional. + من أجل مساعدة مطوري البرنامج يمكنك إكمال هذا التقرير. هذه الخطوة اختيارية. + + + Use Case Description: + وصف حالة الإستخدام: + + + Send + إرسال + + + Cancel + إلغاء + + + + CreditWidget + + Call Forward Method + طريقة تحويل المكالمات + + + Not Available + غير موجود + + + Click here to change your call forward settings + اضغط هنا لتغيير خصائص تحويل المكالمات + + + Call forward mode: + أسلوب تحويل المكالمات: + + + Click here to buy @company@'s credits + اضغط هنا لشراء رصيد لحساب @company@ + + + Purchase call out credits + شراء رصيد للمكالمات الخارجية + + + Call Voice Mail + إتصل بالبريد الصوتي + + + + DesktopService + + Root Folder + المجلد الجذر + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + إضغط على العناصر التي يتغير لونها لتبعث أصواتا لمحادثك. + + + + EventWidget + + 0 + ٠ + + + Click here to call your voice mail + اضغط هنا لتتصل ببريدك الصوتي + + + New Voice Mail: + بريد صوتي جديد: + + + Click here to see missed call(s) + اضغط هنا لرؤية المكالمات التي لم ترد عليها + + + Missed Call(s): + المكالمات التي لم يتم الرد عليها: + + + + FacebookSettings + + Facebook Settings + خصائص Facebook + + + Email Address + عنوان البريد الإلكتروني + + + Password + كلمة السر + + + +Get a new Facebook Account + + تحصل على حساب جديد Facebook + + + + FileTransferDialog + + @product@ - File Transfer Manager + @product@ - إدارة نقل الملفات + + + Download + تنزيل + + + Upload + تحميل + + + Click here to change your download folder + انقر هنا لتغيير مجلد التنزيل + + + ... + ... + + + Download folder: + مجلد التنزيل: + + + Clean all items in the list + تنظيف جميع العناصر في القائمة + + + &Clean + &مسح + + + + FileTransferItem + + Form + استمارة + + + <i>From:</i> + <i>من:</i> + + + Cancel + إلغاء + + + Pause + توقف + + + + GeneralSettings + + When I start my computer + عندما أفتح جهاز الكمبيوتر + + + Automatically start @product@ + بدء تشغيل برنامج @product@ تلقائيا + + + Start in background mode + تشغيل في وضع خلفي + + + When I double-click on a contact + عندما أنقر مرتين على عنوان إتصال + + + Prefere start a free call if applicable + تفضيل بدء مكالمة مجانية عند الإمكان + + + Call cell phone or land line if contact not online + الاتصال بالهاتف الخلوي أو الخط الأرضي إذا كان المخاطب غير متصل بالشبكة + + + Prefere start a chat + تفضيل بدء دردشة + + + Idle status + حالة خمول + + + minutes + الدقائق + + + Show me as "Away" when I am inactive for: + أظهرني "غائبا" عندما أكون غير نشط لمدة: + + + + GoogleTalkSettings + + GoogleTalk Settings + خصائص GoogleTalk + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Forgot your GoogleTalk password? + هل نسيت كلمة سر GoogleTalk ؟ + + + Get a new GoogleTalk Account + تحصل على حساب جديد GoogleTalk + + + + HttpProxyLoginWindow + + @product@ - Local HTTP Proxy + @product@ - بروكسي HTTP محلي + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">إثبات الهوية في HTTP بروكسي</span><br><br><span>البروكسي المحلي HTTP الخاص بك يتطلب إثبات الهوية<br>الرجاء إدخال معلومات تسجيل الدخول وكلمة المرور</span> + + + HTTP Proxy Address: + عنوان البروكسي HTTP: + + + HTTP Proxy Port Number: + رقم بورت البروكسي HTTP: + + + HTTP Proxy Login: + اسم المستخدم للبروكسي HTTP: + + + HTTP Proxy Password: + كلمة السر للبروكسي : + + + OK + موافق + + + Cancel + إلغاء + + + + ICQSettings + + ICQ Settings + خصائص ICQ + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Forgot your ICQ password? + هل نسيت كلمة السر ﻟـ ICQ ؟ + + + Get a new ICQ Account + تحصل على إسم مستخدم جديد ﻟـ ICQ + + + + IMAccountManager + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - حسابات المحادثة النصية الفورية الخاص بي (MSN، Jabber...) + + + Protocol + البروتوكول + + + Login + اسم المستخدم + + + Delete + حذف + + + Modify + تعديل + + + Close + إغلاق + + + Add + إضافة + + + + IMAccountTemplate + + IM Account Settings + خصائص حساب المحادثة النصية الفورية + + + Save + حفظ + + + Cancel + إلغاء + + + + IMContactManager + + Delete + حذف + + + Add + إضافة + + + Contact ID + المعرف + + + Contact Type (protocol) + نوع الحساب أو البروتوكول + + + Click on the add button below to add a new ID + انقر على زر إضافة أدناه لإضافة معرف جديد + + + + IMProfileWidget + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + إضافة حساب محادثة نصية فورية (MSN، AIM، GoogleTalk...) + + + Add an IM account + إضافة حساب محادثة نصية فورية + + + Enter your nickname here + أدخل كنيتك هنا + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">انقر لتغيير الصورة الخاصة بك</p></body></html> + + + + ImageSelector + + OK + موافق + + + Cancel + إلغاء + + + Go Up + إذهب إلى فوق + + + Refresh + تحديث + + + + JabberSettings + + Jabber Settings + خصائص Jabber + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Connect Server: + خادم الإتصال: + + + 5222 + 5222 + + + <u>Advanced Options</u> + <u>خصائص متقدمة</u> + + + Use TLS if available + استخدام TLS إذا كان متوفرا + + + Port: + رقم المنفذ أو البورت: + + + Allow plaintext authentication over unencrypted streams + السماح بإظهار الهوية غير مشفرة + + + Force old (port 5223) SSL + الإجبار على استعمال البورت القديم SSL ٥٢٢٣ + + + Require TLS + فرض TLS + + + Resource: + مصدر: + + + + LanguagesSettings + + Google Translate + مترجم جوجل + + + language to convert the messages received + اللغة التي ستحول إليها الرسائل المتلقاة + + + language to convert the messages sent + اللغة التي ستحول إليها الرسائل المرسلة + + + Your language is not here, do you know that you can do your own translation on Launchpad? + اللغة الخاصة بك ليست هنا ، هل تعرف أنه بإمكانك القيام بالترجمة الخاصة بك على Launchpad؟ + + + More information here. + معلومات إضافية هنا. + + + + LogAccount + + @product@ - Login + @product@ - اسم المستخدم + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">تسجيل الدخول</span><br><br><span>الرجاء اختيار ملف إستخدام سابق<br/> أو إملء معلومات لتسجيل الدخول على<br/> @company@ حساب</span> + + + Configure a &New Profile + تكوين &ملف إستخدام جديد + + + Need help? + هل تحتاج مساعدة؟ + + + &Connect + &ولوج + + + Cancel + إلغاء + + + Password: + كلمة السر : + + + &Modify + &تعديل + + + Account: + الحساب: + + + Forgot your @company@ password? + هل نسيت كلمة سرك الخاصة ب @company@؟ + + + Delete + حذف + + + + MSNSettings + + MSN Settings + خصائص MSN + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Use HTTP method + استخدام نظام HTTP + + + Forgot your MSN password? + هل نسيت كلمة السر ﻟـ MSN ؟ + + + Get a new MSN Account + تحصل على إسم مستخدم جديد ﻟـ MSN + + + + MainWindow + + MainWindow + النافذة الرئيسية + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + قبول المكالمة + + + Send Chat Message + إرسال رسالة دردشة + + + Make Call + القيام بمكالمة + + + Hang Up + إنهاء المكالمة + + + + ManageBlockedUsersSettings + + @product@ - Manage blocked users + @product@ - إدارة المستعملين الممنوعين + + + Unblock User + إتاحة الإتصال بالمستعمل من جديد + + + Close + إغلاق + + + Manage blocked users + إدارة المستعملين الممنوعين + + + + MySpaceSettings + + MySpace Settings + خصائص MySpace + + + Email Address + عنوان البريد الإلكتروني + + + Password + كلمة السر + + + + Get a new MySpace Account + + تحصل على حساب جديد MySpace + + + + NoQuteComAlert + + @product@ - SMS + @product@ -إرسالية قصيرة SMS + + + I have a @company@ account + لدي حساب ﺑ @company@ + + + Create a @company@ account + إنشاء حساب ﺑ @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + لإرسال الرسائل القصيرة ، يجب أن تكون متصلا بحسابك على @company@ و تحتاج إلى رصيد مع @company@. + + + + NotificationSettings + + Select the events for which a sound should be played. + حدد الأحداث التي يصدر لها صوت. + + + + NotificationSettingsItem + + Sound file + ملف صوتي + + + Find a sound file + البحث عن ملف صوتي + + + Play sound file + قراءة الملف الصوتي + + + Play + قراءة + + + + NotifyDialog + + File Transfer + نقل الملفات + + + &Ok + &موافق + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">الحالة:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">ترقية</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + Communication is encrypted + الإتصال مشفر + + + Status + الوضع + + + 00:00:00 + 00:00:00 + + + Nickname + الكنية + + + &Accept + &قبول + + + &Reject + &رفض + + + Dialpad + لوحة الإتصال + + + Audio Smileys + إبتسامات صوتية + + + + PrivacySettings + + Privacy Rules + قواعد الخصوصية + + + When I sign into @company@ + عندما أدخل إلى @company@ + + + Always sign in as "Invisible" (appear offline to all users) + الدخول دائما في وضع "مخفي": ستظهر لجميع أصدقائك و كأنك "غير متصل" + + + Allow chats from + السماح بالدردشة من + + + Anyone + أي شخص + + + Only people from my contact list + فقط الأشخاص من قائمة الاتصال الخاصة بي + + + Allow calls from + السماح للمكالمات من + + + Manage blocked users + إدارة المستعملين الممنوعين + + + + ProfileDetails + + General + عام + + + Network IDs (MSN, Jabber...) + المعرفات بالشبكة (MSN, Jabber...) + + + Advanced >> + متقدم >> + + + Fill in all your network Id to stay connected with your contacts + أدخل جميع معرفاتك بالشبكة للبقاء في حالة إتصال بأصدقائك + + + Phone Numbers + أرقام الهواتف + + + Home phone + هاتف المنزل + + + Mobile phone + هاتف خلوي + + + Contact + العنوان + + + Group: + المجموعة: + + + Last Name: + اللقب: + + + First Name: + الإسم: + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">انقر لتغيير الصورة الخاصة بكr</p></body></html> + + + Details + التفاصيل + + + Web/blog: + عنوان الواب / المدونة: + + + Country: + البلد: + + + State: + الدولة: + + + City: + المدينة: + + + Gender: + الجنس: + + + Birth Date: + تاريخ الميلاد: + + + Email: + عنوان البريد الإلكتروني : + + + dd MMMM yyyy + يوم شهر سنة + + + Unknown + مجهول + + + Male + ذكر + + + Female + أنثى + + + Notes + ملاحظات + + + Cancel + إلغاء + + + Save + حفظ + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + الحسابات + + + Accounts Settings + خصائص الحسابات + + + + QtAddAccount + + Please tell us if your account is provided<br/>by @company@ or by another service + من فضلك أخبرنآ ما إذا كان حسابكم الخاص قدم لكم<br/>عن طريق @company@ أو عن طريق خدمة أخرى + + + Configure your voip account + تكوين الحساب الخاص بك عبر بروتوكول الإنترنت + + + + QtAddAccountUtils + + Test + اختبار + + + Audio Test Call + إختبار مكالمة صوتية + + + Video Test Call + إختبار مكالمة مرئية + + + + QtAddQuteComAccount + + @product@ - Login + @product@ - ولوج + + + Please enter an email address. + الرجاء إدخال عنوان البريد الإلكتروني. + + + Please enter your email address<br/>and your password + الرجاء إدخال عنوان البريد الإلكتروني وكلمة السر + + + Login + اسم المستخدم + + + + QtAddSIPAccount + + Your profile name already exists! + إسم الحساب الخاص بك موجود مسبقا! + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + الرجاء تعبئة المعلومات التي تسمح لهاتفك الرقمي بالإتصال على حسابك SIP + + + Configure your SIP profile + إدخال خصائص ملف SIP + + + + QtAdvancedIMContactManager + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + هل تريد بالتأكيد حذف عنوان الاتصال هذا الخاص بالرسائل الفورية؟ + + + &Delete + حذ&ف + + + Cancel + إلغاء + + + + QtAdvancedSettings + + Advanced + متقدم + + + Advanced Settings + خصائص متقدمة + + + + QtAppearanceSettings + + Me + أنا + + + Hello + مرحبا + + + How are you? + كيف حالك؟ + + + Other + آخر + + + I am fine + أنا بخير + + + Have to go + يجب أن أذهب + + + Bye + الى اللقاء + + + Appearance + المظهر + + + Appearance Settings + خصائص المظهر + + + + QtAudioSettings + + Audio + الصوت + + + Audio Settings + خصائص الصوت + + + Advanced + متقدم + + + + QtCallBar + + +(country code) number or nickname + + (رمز البلد) الرقم أو اسم مخاطبك + + + + QtCallForwardSettings + + Call Forward + تحويل المكالمات + + + Call Forward Settings + خصائص تحويل المكالمات + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + لضبط خصائص تحويل المكالمات تحتاج إلى أن تكون متصلا على حساب ب @company@. + + + + QtChatHistoryWidget + + Save As + حفظ في + + + + QtChatLogViewer + + Account + الحساب + + + Edit Contact + عدل العنوان + + + + QtChatTabWidget + + Close chat + أغلق المحادثة النصية + + + + QtChatWidget + + send + إرسال + + + %1 has joined the chat + %1 قد انضم إلى الدردشة + + + %1 has left the chat + %1 قد غادر الدردشة + + + Your file can not be sent: your contact must be connected on the @company@ network. + الملف لا يمكن أن يرسل: مخاطبك يجب أن يكون متصلا شبكة @company@. + + + Your contact wishes to send a file with @company@. + مخاطبك يرغب في إرسال ملف مع @company@. + + + Go to %1 to install it + انتقل إلى 1% لتثبيته + + + %1 is connected. + %1 متصل بالشبكة. + + + %1 is disconnected. + %1 غير متصل بالشبكة. + + + + QtChatWindow + + @product@ Chat + @product@ المحادثة النصية + + + Account + الحساب + + + %1 is typing + %1 يكتب + + + Edit Contact + عدل العنوان + + + + QtConferenceCallWidget + + Call @company@ + إجراء مكالمة ﻟـ @company@ + + + Call SIP + إجراء مكالمة لحساب SIP + + + Call land line + إجراء مكالمة لهاتف قار + + + Call Mobile + إجراء مكالمة لهاتف خلوي + + + + QtContactCallListWidget + + @product@ - Proceed Conference + @product@ إمض قدما في المكالمة الجماعية + + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + يمكنك الآن إبلاغ محاورك الأول أنه سيكون جزأ من مكالمة جماعية. عندما تنتهي أنقر على الزر أدناه. محاورك الأول سيوضع في حالة إنتظار، في حين سيقع إجراء مكالمة لمحاورك الثاني. + + + Hold first interlocutor and call second one + وضع المحاور الأول في حالة إنتظار و إجراء مكالمة للمحاور الثاني + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + يمكنك الآن إبلاغ محاورك الأول أنه سيكون جزأ من مكالمة جماعية. عندما تنتهي أنقر على الزر أدنا، لبدء مكالمة جماعية. + + + Start Conference + إبدأ مكالمة جماعية + + + + QtContactList + + @product@ - Merge Contacts + @product@ - دمج عناوين الاتصال + + + Merge %1 with %2? + دمج 1% مع 2%؟ + + + &Yes + &نعم + + + &No + &لا + + + + QtContactManager + + Edit Contact + عدل العنوان + + + Delete contact + حذف عنوان الاتصال + + + Do you really want to delete this contact? + هل حقا تريد حذف عنوان الاتصال؟ + + + &Yes + &نعم + + + &No + &لا + + + Call + إجراء مكالمة + + + Free call + مكالمة مجانية + + + Mobile phone + هاتف خلوي + + + Home phone + هاتف المنزل + + + Work phone + هاتف العمل + + + @product@ + @product@ + + + Send SMS + إبعث إرسالية قصيرة SMS + + + Go to website + انتقل إلى الموقع + + + Send file + ارسال ملف + + + Edit contact + عدل العنوان + + + Block contact + إمنع المخاطب + + + Forward to mobile phone + توجيه إلى هاتف خلوي + + + Start chat + إبدأ محادثة نصية + + + Invite to conference + دعوة إلى مكالمة جماعية + + + + QtContactWidget + + No landline phone number set + ليس هناك أي رقم هاتف أرضي مضبوط + + + No mobile phone number set + ليس هناك أي رقم هاتف خلوي مضبوط + + + Click here to call + اضغط هنا للقيام بمكالمة + + + Click here to set a phone number + اضغط هنا لضبط رقم هاتف + + + Click here to edit the contact + اضغط هنا لضبط عنوان الإتصال + + + Click here to send a SMS + انقر هنا لإرسال رسالة قصيرة + + + Click here to start a chat + اضغط هنا للدردشة + + + Click here to start a free call + انقر هنا لبدء مكالمة مجانية + + + Click here to send a file + انقر هنا لإرسال ملف + + + + QtCrashReport + + %1 Crash Report + %1 تقرير عطب + + + + QtEventWidget + + @product@ - Voice Mail + @product@ - البريد الصوتي + + + Do you want to call your voice mail? + هل تريد أن تتصل ببريدك الصوتي؟ + + + + QtFileTransfer + + Choose a directory + إختر ملفا + + + Overwrite File? + إستبدال الملف؟ + + + A file called %1 already exists.Do you want to overwrite it? + يوجد بالفعل ملف بهذا الإسم %1 .هل تريد بالفعل تريد استبداله؟ + + + &Yes + &نعم + + + &No + &لا + + + %1 is a directory. + %1 هو مجلد ملفات. + + + You can not send a directory. + لا يمكنك إرسال مجلد ملفات. + + + %1 is a shortcut. + ٪1 هو طريق مختصرة. + + + You can not send a shortcut. + لا يمكنك إرسال طريق مختصرة. + + + File size error + خطأ في حجم الملف + + + %1 exceeds the maximum authorized size. + %1 تجاوز الحد الأقصى للحجم المسموح به. + + + %1 has size 0. + %1 حجمه 0. + + + Please upgrade<br> your @product@ + الرجاء ترقية الإصدار من @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + الملف لا يمكن إستلامه : يجب ترقية @product@ من أجل إستلامه. + + + Tell your contact<br> to upgrade<br> his @product@ + قل لمخاطبك أن يرفع مستوى نسخته من @product@ + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + يحاول أن يرسل لك الملف ولكن يجب ترقية نسخته من @product@ من أجل الحصول عليه.أطلب منه أن يحمل أحدث نسخة. + + + All Files (*.* *) + جميع أنواع الملفات (*.* *) + + + + QtFileTransferItem + + Downloading... + جاري التنزيل... + + + Waiting for peer... + في انتظار المخاطب... + + + From: + من: + + + To: + إلى: + + + Open + فتح + + + Remove + إزالة + + + Cancel + إلغاء + + + Resume + استئناف + + + Pause + توقف + + + Starting + انطلاق + + + Waiting for anwser... + في انتظار الجواب... + + + Done + أنجز + + + Failed + فشل + + + An error occured during the file transfer + حدث خطأ أثناء نقل الملف + + + This may be caused by : + قد يكون سبب ذلك : + + + Your @product@ is not up to date. Please download the latest version on + نسختك من @product@ ليست آخر نسخة. يرجى تنزيل أحدث إصدار على + + + The @company@ network may be temporarily unavailable. Please try later. + قد تكون الشبكة الخاصة ب @company@ غير متاحة مؤقتا. يرجى المحاولة في وقت لاحق. + + + Paused + متوقف + + + Paused by peer + متوقف من الطرف المقابل + + + Cancelled + ملغى + + + Cancelled by peer + ملغى من الطرف المقابل + + + Uploading... + جاري تحميل... + + + + QtGeneralSettings + + General + عام + + + General Settings + خصائص عامة + + + + QtHistory + + Incoming call + مكالمة واردة + + + Outgoing call + مكالمة خارجة + + + Missed call + مكالمة لم يتم الرد عليها + + + Rejected call + مكالمة مرفوضة + + + Outgoing SMS + إرسالية قصيرة خارجة + + + Chat session + جلسة دردشة + + + @product@ - Call History + @product@ - سجل المكالمات + + + Do you want to call %1? + هل حقا تريد الاتصال ب 1%؟ + + + Type + الصنف + + + Name/ID + الإسم أو المعرف + + + Date + التاريخ + + + Duration + المدة + + + + QtHistoryWidget + + Open in SMS window + إفتح في نافذة المحادثة النصية + + + Call this peer + إتصل بهذا الشخص + + + Show chat log + إظهار سجل المحادثة النصية + + + Erase this entry + محو هذا العنصر + + + + QtIMAccountManager + + @product@ + @product@ + + + Are sure you want to delete this account? + + هل تريد حقا حذف الحساب؟ + + + &Delete + حذ&ف + + + Cancel + إلغاء + + + + QtIMAccountMonitor + + Disconnected + غير متصل بالشبكة + + + Error: %1 + : %1خطأ + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + موجود + + + Invisible + خفي + + + Away + غائب + + + Do not disturb + الرجاء عدم الإزعاج + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + الرجاء إدخال إسم المستخدم + + + + QtIMAccountPresenceMenuManager + + Disconnect + إنهاء الاتصال بالشبكة + + + Online + موجود + + + Away + غائب + + + Do Not Disturb + الرجاء عدم الإزعاج + + + Invisible + خفي + + + Delete Account + حذف الحساب + + + Are sure you want to delete the account <b>%1</b>? + هل تريد حقا حذف الحساب <b>%1</b>؟ + + + @product@ + @product@ + + + &Delete + حذ&ف + + + Cancel + إلغاء + + + + QtIMProfileWidget + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + Edit My Profile + تحرير ملفي الشخصي + + + + QtLanguagesSettings + + Language + اللغة + + + Language Settings + خصائص اللغة + + + + QtLogAccount + + Invalid account + حساب لاغ + + + Warning + تنبيه + + + Do you really want to delete this profile + هل حقا تريد حذف هذا التعريف + + + Yes + نعم + + + No + لا + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + الرجاء اختيار ملف مستخدم سابقا<br/> أو ملء المعلومات للاتصال على<br/>حساب @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - ولوج + + + + QtNotificationSettings + + Incoming call (ringtone) + مكالمة واردة (رنة) + + + Outgoing call (ringtone) + مكالمة خارجة (رنة) + + + Call closed (hang up tone) + مكالمة مغلقة (رنة إغلاق) + + + Incoming chat + محادثة نصية واردة + + + IM account connected + حساب الدردشة الفورية مسجل + + + IM account disconnected + حساب الدردشة الفورية غير مسجل + + + Contact online + الصديق متصل + + + Notifications + الإخطارات + + + Notifications Settings + خصائص الإخطارات + + + + QtNotificationSettingsItem + + Choose a sound file + إختر ملفا صوتيا + + + Sounds + الأصوات + + + + QtPhoneCall + + Status + الوضع + + + Ca&ncel + إل&غاء + + + Hang-up + إنهاء المكالمة + + + Transfert call + تحويل المكالمة + + + Add contact + أضف عنوان صديق + + + Resume + استئناف + + + Hold + وضع المكالمة في حالة إنتظار + + + Initialization... + بدأ... + + + QuteCom - Information + Qutecom -معلومات + + + You must enter a phone number before forwarding + يجب إدخال رقم الهاتف قبل إعادة التوجيه + + + Error + خطأ + + + Talking - Conference + جاري الحديث ـ مكالمة جماعية + + + Talking + جاري الحديث + + + Dialing + جاري الطلب + + + User busy + المستخدم مشغول + + + Call Rejected + المكالمة رفضت + + + User/number not found + المستخدم أو الرقم لم يتم العثور عليه + + + User not available + المستخدم غير موجود + + + Ringing + الهاتف يرن + + + Incoming Call + مكالمة واردة + + + Redirected + تم إعادة توجيهه + + + Closed + مغلق + + + Add a Contact + أضف عنوان صديق + + + + QtPresenceMenuManager + + Online + موجود + + + Away + غائب + + + Do Not Disturb + الرجاء عدم الإزعاج + + + Invisible + خفي + + + Log off + تسجيل الخروج + + + + QtPrivacySettings + + Privacy + الخصوصية + + + Privacy Settings + ضبط الخصوصية + + + + QtProfileBar + + Click here to change your status + انقر هنا لتغيير حالتك + + + Voice mail + البريد الصوتي + + + Set global presence to: + تعديل حالة الحضور العام إلى: + + + active + فعال + + + voicemail + البريد الصوتي + + + inactive + غير فعال + + + unauthorized + غير مسموح به + + + + QtProfileDetails + + @product@ + @product@ + + + @product@ - No Group Selected + @product@ - ليس هناك أي مجموعة مختارة + + + A contact must have a group, please set a group. + أي عنوان اتصال يجب أن يكون لديه مجموعة ، يرجى تحديد المجموعة. + + + Select your avatar + تغيير الصورة الخاصة بك + + + @company@ Avatars + الصور الخاصة ب @company@ + + + << Simple + بسيط >> + + + Advanced >> + متقدم >> + + + + QtQuteCom + + Please hold all the phone calls before placing a new one + يرجى تعليق جميع المكالمات الهاتفية قبل ان تجري مكالمة جديدة + + + Can't place a call, you are not connected + لا يمكن إجراء مكالمة ، أنت غير متصل + + + You must enter a phone number + يجب إدخال رقم هاتف + + + An error has occured trying to place the call + لقد حدث خطأ أثناء محاولة إجراء المكالمة + + + @product@ - Call Error + @product@ خطأ في المكالمة + + + Call + إجراء مكالمة + + + Conference + مكالمة جماعية + + + @product@ - Warning + product@ - تنبيه + + + You have unfinished call(s). + لديك مكالمات لم تكتمل. + + + Are you sure you want to exit the application? + هل أنت متأكد من أنك تريد الخروج من البرنامج؟ + + + &Exit + &خروج + + + &Cancel + إل&غاء + + + Home + الصفحة الرئيسية + + + Account + الحساب + + + Add a Contact + أضف عنوان صديق + + + + QtQuteComConfigDialog + + General + عام + + + Language + اللغة + + + Accounts + الحسابات + + + Privacy + الخصوصية + + + Audio + الصوت + + + Video + الفيديو + + + Notifications + الإخطارات + + + Call Forward + تحويل المكالمات + + + Advanced + متقدم + + + Voicemail + البريد الصوتي + + + security + الحماية + + + + QtRenameGroup + + Bad group name + اسم مجموعة سيئ + + + Group name cannot be empty + لا يمكن أن يكون اسم المجموعة فارغا + + + + QtSecuritySettings + + Security + الحماية + + + Security Settings + خصائص الحماية + + + BETA + نسخة تجريبية + + + + QtSms + + @company@ SMS service + @company@ خدمة الرسائل القصيرة + + + Please fill in a phone number. + الرجاء إدخال رقم هاتف. + + + You can not send an empty message. + لا يمكنك إرسال رسالة فارغة. + + + Your message is too long. +This will send + رسالتك طويلة جدا.هذا وسوف يرسل + + + SMS. + + إرسالية قصيرة SMS. + + + Do you want to continue? + هل تريد الاستمرار؟ + + + Your SMS has not been sent + رسالتك القصيرة لم يتم إرسالها + + + Your SMS has been sent + رسالتك القصيرة تم إرسالها + + + + QtSoftUpdate + + @product@ - Update failed + فشل @product@ تحديث + + + @product@ update failed to start: try to update @product@ manually + تحديث @product@ فشل بدء : محاولة تحديث @product@ يدويا + + + + QtStatusBar + + Output volume is muted + مستوى الصوت الخارج صامت + + + Output volume is 0 + مستوى الصوت الخارج يساوي ٠ + + + Click to adjust output volume + انقر لضبط مستوى الصوت الخارج + + + Input volume is muted + مستوى الصوت الداخل صامت + + + Input volume is 0 + مستوى الصوت الداخل يساوي ٠ + + + Click to adjust input volume + انقر لضبط مستوى الصوت الداخل + + + Not connected + غير مسجل + + + An error occured: Server error. + وقع خطأ: خطأ في الخادم. + + + An error occured: Timeout. + وقع خطأ: إنتهاء المهلة. + + + An error occured: Authentication error. + وقع خطأ: خطأ في التثبت من الهوية. + + + Register done + التسجيل أنجز + + + Unregister done + إلغاء التسجيل أنجز + + + Connecting + جاري الاتصال + + + + QtSystray + + @product@ + @product@ + + + Call + إجراء مكالمة + + + Quit @product@ + غادر @product@ + + + Status + الوضع + + + Send a SMS + إبعث إرسالية قصيرة SMS + + + Send SMS + إبعث إرسالية قصيرة SMS + + + Start a chat + إبدأ محادثة نصية + + + Place Call + إجراء مكالمة + + + Call @company@ + إجراء مكالمة @company@ + + + Call Mobile + إجراء مكالمة لهاتف خلوي + + + Call land line + إجراء مكالمة لهاتف قار + + + Call SIP + إجراء مكالمة لحساب SIP + + + Send File + ارسال ملف + + + Away + غائب + + + Online + موجود + + + Offline + غير متصل حاليا + + + Invisible + خفي + + + Do Not Disturb + الرجاء عدم الإزعاج + + + Multiple Status + حالات متعددة + + + Unknown Status + حالة غير معروفة + + + Connecting... + جاري الاتصال... + + + Internet Connection Error + هناك خطأ في الاتصال بالإنترنت + + + + QtToolBar + + Edit My Profile + تحرير ملفي الشخصي + + + Add a Contact + أضف عنوان صديق + + + Hide Unavailable Contacts + إخفاء العناوين غير المتصلة + + + Show Unavailable Contacts + إظهار العناوين غير المتصلة + + + Hide Groups + إخفاء المجموعات + + + Show Groups + إظهار المجموعات + + + Disable &Video Calls + تعطيل مكالمات ال&فيديو + + + Enable &Video Calls + إتاحة مكالمات الفي&ديو + + + @product@ - Proceed Conference + @product@ إمض قدما في المكالمة الجماعية + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + المكالمة الجماعية لا يمكن أن تتم بينما هناك مكالمات جارية. أنه كل المكالمات ثم حاول مرة أخرى. + + + @product@ - Warning + product@ - تنبيه + + + You have unfinished call(s). + لديك مكالمات غير منهاة. + + + Are you sure you want to log off? + هل أنت متأكد أنك تريد الخروج؟ + + + &Log Off + &تسجيل الخروج + + + &Cancel + &إلغاء + + + Log &Off... + &تسجيل الخروج... + + + Log &On... + ت&سجيل الدخول... + + + + QtTreeViewDelegate + + Contacts list + قائمة الأصدقاء + + + + QtUserProfile + + Network error. + هناك خطأ في الشبكة. + + + @product@ - Authorization Request + @product@ - طلب إذن + + + &Authorize + إءذ&ن + + + &Block + إ&منع + + + Edit Contact + عدل العنوان + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + حدثت مشكلة أثناء تحميل الحساب الخاص بك. +لقد تم تحميل آخر حساب احتياطي: +المعلومات الأخيرة التي تم إدخالها من الممكن أن تكون قد ضاعت + + + Your profile could not be loaded. +Choose another profile or create a new one. + ليس من الممكن تحميل حسابكم. +الرجاء إختيار حساب آخر أو تكوين حساب جديد. + + + Wrong email/password entered + البريد الإلكتروني أو كلمة السر المدخل غير صحيح + + + Wrong login/password entered + إسم الدخول أو كلمة السر المدخل غير صحيح + + + Connection error + وقع خطأ في الإتصال + + + Unexpected error (code: %1 + حصل خطأ غير متوقع (الرمز: 1%) + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + الفيديو + + + Video Settings + خصائص الفيديو + + + Normal + عادي + + + Good + جيد + + + Very good + جيد جدا + + + Excellent + ممتاز + + + + QtVoicemailSettings + + Voicemail + البريد الصوتي + + + Voicemail Settings + خصائص البريد الصوتي + + + + QtWebDirectory + + @product@ - Directory + @product@ - مجلد + + + + QuteComConfigDialog + + @product@ - Configuration + @product@ إدخال الخصائص + + + Title + العنوان + + + Save + حفظ + + + Cancel + إلغاء + + + + QuteComWindow + + @product@ + @product@ + + + Contacts + قائمة الأصدقاء + + + History + السجل + + + Dialpad + لوحة الإتصال + + + &Help + &مساعدة + + + &Actions + الإ&جراءات + + + &Contacts + &قائمة الأصدقاء + + + &Tools + الأدوا&ت + + + Clear &History + &فسخ السجل + + + @company@ + @company@ + + + ToolBar + شريط الأدوات + + + View My @company@ Account... + أظهر حسابك ﺑ @company@ ... + + + &Close + إغ&لاق + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + منتدى& @company@ ... + + + &About... + &حول... + + + Add &Contact... + أضف &عنوان صديق... + + + Add + إضافة + + + Add Contact + أضف عنوان صديق + + + &Configuration... + إدخال الخ&صائص... + + + Send SMS... + إبعث إرسالية قصيرة SMS... + + + SMS + إرسالية قصيرة SMS + + + Send SMS + إبعث إرسالية قصيرة SMS + + + View My &Profile... + عرض ملفي ال&شخصي... + + + View My Profile + عرض ملفي الشخصي + + + Start &Conference... + إبدأ &مكالمة جماعية... + + + Conference + مكالمة جماعية + + + Start Conference + إبدأ مكالمة جماعية + + + @company@ &Wiki/FAQ... + @company@ ويكي / أسئلة شائ&عة... + + + Learn more about @company@ Services... + معرفة المزيد عن خدمات @company@... + + + Show/Hide Unavailable &Contacts + إظهار / إخفاء جهات الاتصال غير المتصل&ين + + + &Chat Sessions + &جلسات الدردشة + + + &All + الج&ميع + + + &Find Contact... + البح&ث عن صديق... + + + Search + بحث + + + Find @company@ Contacts + البحث عن عناوين الاتصال ﻟ@company@ + + + &Accept + &قبول + + + &HangUp + إنهاء الم&كالمة + + + &Hold/Resume + وضع في حالة توقف &وقتي / استئناف + + + Show/Hide &Groups + إ&ظهار أو إخفاء المجموعات + + + Log &Off... + تسجيل ال&خروج... + + + Log Off + تسجيل الخروج + + + Show &Chat Window + إظهار ناف&ذة المحادثة النصية + + + Show Chat Window + إظهار نافذة المحادثة النصية + + + &Outgoing Calls + المكالمات الخار&جة + + + &Incoming Calls + المكالمات ال&واردة + + + &Missed Calls + المكالمات التي لم ي&رد عليها + + + Enable/Disable &Video Calls + إتاحة / تعطيل المكالمات عبر الفي&ديو + + + Short Text &Messages (SMS) + لمشاهدة الرسائل ال&نصية (SMS) + + + Show &File Transfer + عر&ض نقل الملفات + + + Rejected Calls + المكالمات المرفوضة + + + &Quit + &غادر + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + النص ت&حت الأيقونات + + + &Icons Only + أيقو&نات فقط + + + &Hidden + &مخفي + + + + RenameGroupDialog + + @product@ - Rename Contact Group + @product@ - إعادة تسمية مجموعة الأصدقاء + + + OK + موافق + + + Cancel + إلغاء + + + Enter the new group name: + أدخل الاسم الجديد للمجموعة: + + + + SecuritySettings + + Form + استمارة + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ يمكن أن يشفر المكالمات باستخدام ١٢٨ بت والهندسية ونظام ديفي هيلمان لتبادل مفتاح التشفير. + + + Enable call encryption + إتاحة تشفيرالمكالمات + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + ملاحظة : جهات الاتصال الخاصة بك تحتاج إلى إتاحة هذا الخيار من أجل أن تكون المكالمة مشفرة. لمعرفة ما إذا كانت هذه المكالمة مشفرة، يرجى مراجعة الجزء السفلي من نافذة : رمز "قفل" يظهر أثناء المكالمة عندما تكون مشفرة. + + + + SimpleIMContactManager + + @company@ ID: + معرف @company@: + + + MSN ID: + معرف MSN: + + + Update your profile + تحديث ملف التعريف الخاص بك + + + AIM ID: + معرف AIM: + + + ICQ ID: + معرف ICQ: + + + Yahoo! ID: + معرف Yahoo!: + + + GoogleTalk ID: + معرف GoogleTalk: + + + Jabber ID: + معرف Jabber: + + + FaceBook ID: + معرف Facebook: + + + MySpace ID: + معرف MySpace: + + + Skype ID: + معرف Skype: + + + Twitter ID: + معرف Twitter: + + + SIP ID: + معرف SIP: + + + + SkypeSettings + + Skype Settings + خصائص Skype + + + Skype Id + معرف Skype + + + + Get a new Skype Account + + أحصل على حساب جديد في Skype + + + + SmsWindow + + @product@ - SMS + @product@ - إرسالية قصيرة SMS + + + Click here to add a phone number + أنقر هنا لإدخال رقم هاتف + + + 0 /160 + 0/160 + + + Send + إرسال + + + Enter your signature here + أدخل توقيعك هنا + + + Signature: + التوقيع: + + + Phone number(s): + رقم / أرقام الهاتف: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + أدخل رقم أو أرقام الهاتف هنا معزولين ﺑ & أو ؛ أو ، + + + + SoftUpdateWindow + + @product@ - Downloading update + @product@ - جاري تحميل التحديث + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + جاري تحميل التحديث ... + +رقم الإصدار: %١ +العنوان: %٢ +حجم الملف: (MB)%٣ +السرعة: (KB/s)%٤ + + + Cancel + إلغاء + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + خصائص Twitter + + + Email Address + عنوان البريد الإلكتروني + + + Password + كلمة السر + + + + Get a new Twitter Account + + أحصل على حساب Twitter جديد + + + + UserFrame + + Form + استمارة + + + + VideoSettings + + Enable video + إتاحة الفيديو + + + Webcam Selection + اختيار الكاميرا + + + Webcam device: + جهاز الكاميرا: + + + Webcam Preview + معاينة الكاميرا + + + Connection Type + نوعية الإتصال + + + Video quality depends on your Internet connection bandwidth + جودة الفيديو تعتمد على قوة تدفق الإنترنت + + + Video quality + جودة الفيديو + + + Down (kbit/s) + (kbit/s) إلى أدنى + + + Up (kbit/s) + (kbit/s) إلى فوق + + + Normal + عادي + + + 0 to 512 + من ٠ إلى ٥١٢ + + + 0 to 128 + من ٠ إلى ١٢٨ + + + Good + جيد + + + 512 to 2048 + من ٥١٢ إلى ٢٠٤٨ + + + 128 to 256 + من ٨١٢ إلى ٢٥٦ + + + Very good + جيد جدا + + + 2048+ + أكثر من ٢٠٣٨ + + + 256+ + أكثر من ٢٥٦ + + + Excellent + ممتاز + + + 8192+ + أكثر من ٨١٩٢ + + + 1024+ + أكثر من ١٠٢٤ + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">عندما الإستخدام الأول من المستحسن أن تقوم بإختيار نوعية الوضع العادي للفيديو، ثم يمكنك بعد ذلك أن تجرب طرقا مختلفة لمعرفة أنسب واحد.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">إذهب إلى <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a>لتحديد قوة التدفق لاتصالك بالإنترنت.</p></body></html> + + + Make a test video call + إجراء مكالمة لاختبار الفيديو + + + + VideoWindow + + @product@ - Video + @product@ - الفيديو + + + ... + ... + + + + VoicemailSettings + + Form + استمارة + + + Phone number of your voicemail: + رقم الهاتف للبريد الصوتي الخاص بك : + + + Please fill in here the information about your voicemail + يرجى ملأ المعلومات عن البريد الصوتي الخاص بك + + + + Wizard + + Simple Wizard - Step %1 of %2 + معالج بسيط ـ مرحلة %1 من %2 + + + Cancel + إلغاء + + + Finish + أكمل + + + Next > + التالي > + + + < Back + < إلى الخلف + + + + YahooSettings + + Yahoo! Settings + خصائص Yahoo! + + + Use Yahoo! Japan server + إستعمل خادم Yahoo! في اليابان + + + Password: + كلمة السر : + + + Login: + اسم المستخدم: + + + Forgot your Yahoo! password? + هل نسيت كلمة سر Yahoo! ؟ + + + Get a new Yahoo! Account + تحصل على حساب جديد في Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_bg.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_bg.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_bg.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_bg.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4033 @@ + + + + + AIMSettings + + Login: + Потребител: + + + Forgot your AIM password? + Забравили сте си паролата за AIM? + + + Get a new AIM Account + Създаване на нова AIM сметка + + + Password: + Парола + + + AIM Settings + AIM настройки + + + + AboutWindow + + About + Относно програмата + + + Copyright (C)2008 Mbdsys + + + + Authors + Автори + + + Close + Затвори + + + 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. + Тази програма е свободен софтуер; можете да я разпространявате и/или променяте според условията за употреба на ГНУ Общия Публичен Лиценз (GNU GPL), публикуван от Фондацията за Свободен Софтуер (FSF); версия 2 на Лиценза, или (по ваше усмотрение) коя да е по-нова версия. + + + @product@ - About + @product@ - Относно + + + @product@, a voice over Internet phone + @product@, интернет телефон + + + + AcceptDialog + + File Transfer + Прехвърляне на файл + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Приеми + + + &Cancel + &Откажи + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Контакт: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Име на файла: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Входящ файл</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Редактирай моя профил + + + + AddAccount + + Configure your account: + Конфигуриране на вашата сметка: + + + &Next + На&пред + + + Need help? + Нужда от помощ? + + + You don't have any account ? Click here + Нямате никаква сметка? Натиснете тук + + + &Back + &Назад + + + Cancel + Откажи + + + @product@ - Login + @product@ - Потребителско име + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Моля, посочете дали вашата сметка е предоставена от<br/>by @company@ или от друг доставчик</span> + + + @company@ account + @company@ сметка + + + Generic SIP account + SIP сметка + + + + AddIMContact + + Cancel + Откажи + + + Contact Type (protocol): + Тип на контакта (протокол): + + + Contact ID: + Контакт: + + + Account: + Сметка: + + + Enable + Активирай + + + Login + Потребителско име + + + Add + Добави + + + @product@ - Add a Contact Account + @product@ - Добави контакт + + + + AddQuteComAccount + + Password: + Парола + + + Need help? + Нужда от помощ? + + + &Back + &Назад + + + Cancel + Откажи + + + @product@ - Login + @product@ - Потребителско име + + + &Connect + &Свързване + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Регистриране</span><br><br><span>Моля, въведете вашия адрес на е-поща и<br>парола</span> + + + Email Address: + Адрес на е-поща: + + + Click here if you don't have a @company@ account + Натиснете тук ако нямате @company@ сметка + + + Forgot your @company@ password? + Забравили сте вашата @company@ парола? + + + + AddSIPAccount + + Password: + Парола + + + Need help? + Нужда от помощ? + + + &Back + &Назад + + + Cancel + Откажи + + + @product@ - Login + @product@ - Потребителско име + + + &Connect + &Свързване + + + Activate presence and chat (SIP/SIMPLE) + Активирай присъствие и чат + + + Displayname: + Изписано име + + + login / username: + потребителко име: + + + Account name: + Име на сметката + + + Proxy: + Прокси: + + + : + : + + + Server: + Сървър: + + + SIP Domain / Realm: + SIP област + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Конфигуриране на вашия SIP профил</span><br><br><span>Моля, попълнете информацията, която ще<br/>позволи вашият софтфон да се свърже със<br/>SIP сметката ви</span> + + + Advanced + Разширени настройки + + + + AdvancedConfigWindow + + Close + Затвори + + + Preference Name + Име на опцията + + + Type + Тип: + + + Value + Стойност + + + Default Value + Стойност по подразбиране + + + Save + Запиши + + + Status + Състояние + + + @product@ - Advanced Configuration + @product@ - Разширена конфигурация + + + + AdvancedSettings + + Add + Добави + + + Advanced Settings + Разширени настройки + + + Advanced Configuration Window + Прозорец с разширени настройки + + + Automatically answer incoming calls from + Автоматично отговаряне на входящите повиквания от + + + Remove + Премахни + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Предупреждение! Тази част е за напреднали потребители.<br>И най-малката грешка може да нанесе повреди на софтуера. + + + + AppearanceSettings + + Toolbar + Лента с инструменти + + + &Icons && Text + &Икони и текст + + + Icons &Only + &Само икони + + + &Hidden + &Скрит + + + Chat Theme + Чат тема + + + Form + Формуляр + + + + AudioSettings + + Reset + Отмяна + + + Audio Codecs + Аудио кодеци + + + &Input device: + &Входящо устройство + + + &Output device: + &Изходящо устройство + + + &Ringing device: + &Звънящо устройство + + + &Make a test call + &Направи пробно обаждане + + + Test + Тествай + + + &Advanced >> + &Разширени >> + + + &Half Duplex + Половичен дуплекс + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Формуляр + + + + AvatarWidget + + Form + Формуляр + + + + BrowserSoftUpdateWindow + + Close + Затвори + + + @product@ - Update available + @product@ - Налична е по-нова версия + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3-ти: + + + 1st: + 1-ви: + + + 2nd: + 2-ри: + + + (+ country code) phone number + (+ код на страната) телефонен номер + + + Forward all unanswered calls to message box + Прехвърли всички пропуснати разговори към телефонния секретар + + + Disable call forwarding + Деактивирай пренасочването + + + Forward all unanswered calls to following phone numbers: + Пренасочи всички пропуснати разговори към следните телефонни номера: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Например +3314500XXXX (+33 е кодът на страната, а 14500XXXX е телефонният номер) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Пренасочването на обаждания се включва, когато не сте свързан(а) към @company@, когато вашата линя е заета, или когато не отговорите на обаждане. Можете да конфигурирате до три номера за пренасочване към стационарни и мобилни номера, или към гласова поща. + + + + CallToaster + + Incoming Call + Входящо обаждане + + + Message + Съобщение + + + + ChatLogViewer + + Chat History + Чат история + + + &Contact + &Контакт + + + &Tools + &Инструменти + + + &Help + &Помощ + + + &Actions + &Действия + + + Main Toolbar + Главна лента с инструменти + + + Call Contact + Обади се на контакт + + + Send a File + Изпрати файл + + + createChatConf + създайЧатКонференция + + + Show Contact Info + Покажи информация за контакта + + + blockContact + блокирайКонтакт + + + &Save History As... + &Запази историята като... + + + actionRestartChat + рестартирайЧат + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Контакт + + + &Tools + &Инструменти + + + &Actions + &Действия + + + Main Toolbar + Главна лента с инструменти + + + Call Contact + Обади се на контакт + + + Send a File + Изпрати файл + + + Show Contact Info + Покажи информация за контакта + + + blockContact + блокирайКонтакт + + + &Save History As... + &Запази историята като... + + + @company@ + @company@ + + + MainWindow + Главен прозорец + + + &Edit + &Редактирай + + + Cu&t + &Изрежи + + + Ctrl+X + Ctrl+X + + + &Copy + &Копирай + + + Ctrl+C + Ctrl+C + + + &Paste + &Постави + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Започни чат конференция + + + &Close + &Затвори + + + Conference + Конференция + + + + ChatRoomInviteWidget + + Chat room + Чат стая + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Чат стая</span></p></body></html> + + + (Conference participants) + (Участници в конференцията) + + + &Remove + &Премахни + + + &Start + &Старт + + + Group Name + Име на група + + + &Add + &Добави + + + + ChatToaster + + Message + Съобщение + + + Incoming Chat + Входящ чат + + + + ChatWidget + + Form + Формуляр + + + + ConferenceCallWidget + + Cancel + Откажи + + + Start + Старт + + + Phone number 2: + Телефонен номер 2: + + + Phone number 1: + Телефонен номер 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Създай конференция + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Моля, въведете двата номера </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">или @company@ контакти за да</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">започнете 3-странна конференция.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Моля, въведете двата номера </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">или @company@ контакти за да</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">започнете 3-странна конференция.</p> + + + &Add >> + &Добави >> + + + << &Remove + << &Премахни + + + Available Contacts + Достъпни контакти + + + &Start + &Старт + + + Cancel + Откажи + + + + ContactGroupPopupMenu + + Remove Contact Group + Премахни контакт групата + + + Rename Contact Group + Преименувай контакт групата + + + Delete group + Изтрий група + + + Do you really want to delete this group? + Наистина ли искате да изтриете тази група? + + + &Yes + &Да + + + &No + &Не + + + + ContactList + + Contact List + Списък с контакти + + + goupname + + + + + ContactWidget + + No mobile phone number set + Не е зададен номер на мобилен телефон + + + No landline phone number set + Не е зададен номер на стационарен телефон + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натисни за промяна на контакта</p></body></html> + + + + CrashReport + + Cancel + Откажи + + + Program Failure + Провал на програмата + + + Send + Изпрати + + + Optional Information + Незадължителна информация + + + Your Mail: + Вашата е-поща + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Недостъпен(а) + + + Click here to change your call forward settings + Кликнете тук за да промерните вашите настройки за пренасочване на обажданията + + + Call forward mode: + Режим на пренасочване на обажданията + + + Purchase call out credits + Закупуване на кредит + + + Call Forward Method + Метод за пренасочване на обажданията + + + Call Voice Mail + Избери гласова поща + + + Click here to buy @company@'s credits + Натиснете тук, за да купите @company@ кредит + + + + DesktopService + + Root Folder + Коренна директория + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Кликнете върху различните обекти, които си променят цвета, за да изпратите звуци на вашия събеседник. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Натиснете тук за да изберете вашата гласова поща + + + New Voice Mail: + Нова гласова поща: + + + Click here to see missed call(s) + Натиснете тук за да видите вашите пропуснати обаждания + + + Missed Call(s): + Пропуснати обаждания: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Изтегли + + + Upload + Качи + + + Click here to change your download folder + Натиснете тук за да промените вашата директория за изтеглени файлове + + + Download folder: + Директория за изтеглени файлове + + + Clean all items in the list + Изчисти всичките обекти от списъка + + + &Clean + &Изчисти + + + @product@ - File Transfer Manager + @product@ - Менажер за прехвърляне на файлове + + + + FileTransferItem + + Cancel + Откажи + + + Form + Формуляр + + + Pause + Пауза + + + <i>From:</i> + <i>От:</i> + + + + GeneralSettings + + When I double-click on a contact + При двукратно натискане върху контакт + + + Call cell phone or land line if contact not online + Обади се на мобилния или стационарния телефон ако контакта не е включен + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Бездействащо състояние + + + minutes + минути + + + Show me as "Away" when I am inactive for: + Покажи ме като "Отсъстващ" когато не съм активен(а): + + + When I start my computer + Когато стартирам компютъра си + + + Automatically start @product@ + Стартирай @product@ автоматично + + + + GoogleTalkSettings + + Login: + Потребител: + + + Password: + Парола + + + GoogleTalk Settings + GoogleTalk настройки + + + Forgot your GoogleTalk password? + Забравили сте вашата GoogleTalk парола? + + + Get a new GoogleTalk Account + Откриване на нова GoogleTalk сметка + + + + HttpProxyLoginWindow + + Cancel + Откажи + + + HTTP Proxy Address: + HTTP прокси + + + HTTP Proxy Port Number: + Номер на HTTP прокси порт + + + HTTP Proxy Login: + HTTP прокси потребителско имв + + + HTTP Proxy Password: + HTTP прокси парола + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Прокси идентифициране</span><br><br><span>Вашето локално прокси изисква идентифициране<br>Моля въведете вашето име и парола</span> + + + OK + Добре + + + @product@ - Local HTTP Proxy + @product@ - локално HTTP прокси + + + + ICQSettings + + Login: + Потребител: + + + Password: + Парола + + + ICQ Settings + ICQ настройки + + + Forgot your ICQ password? + Забравили сте си паролата за ICQ? + + + Get a new ICQ Account + Създаване на нова ICQ сметка + + + + IMAccountManager + + Close + Затвори + + + Login + Потребителско име + + + Add + Добави + + + Delete + Изтрий + + + Modify + Промени + + + Protocol + Протокол + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - моите сметки за моментални съобщения (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Откажи + + + Save + Запиши + + + IM Account Settings + Настройки на сметки за моментални съобщения + + + + IMContactManager + + Add + Добави + + + Delete + Изтрий + + + Contact Type (protocol) + Тип на контакта + + + Click on the add button below to add a new ID + Натиснете на бутона за добавяне долу за да добавите нов контакт + + + Contact ID + Контакт + + + + IMProfileWidget + + Enter your nickname here + Въведете вашия псевдонимтук + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Придаване на сметка за моментални съобщения (MSN, AIM, GoogleTalk...) + + + Add an IM account + Придаване на сметка за моментални съобщения + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натиснете за смяна на аватар</p></body></html> + + + + ImageSelector + + Cancel + Откажи + + + OK + Добре + + + Go Up + Нагоре + + + Refresh + Обнови + + + + JabberSettings + + Login: + Потребител: + + + Password: + Парола + + + Jabber Settings + Jabber настройки + + + Connect Server: + Сървър + + + <u>Advanced Options</u> + <u>Разширени нестройки</u> + + + Require TLS + Изискай на TLS + + + Port: + Порт: + + + Use TLS if available + Използвай на TLS, ако е наличен + + + Allow plaintext authentication over unencrypted streams + Позволи идентифициране с чист текст по некодиран поток + + + 5222 + 5222 + + + Force old (port 5223) SSL + Принудително използване на стария (порт 5223) SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Ако вашият език не е тук, знаете ли че можете да добавите собствен превод чрез Launchpad? + + + More information here. + Повече информация тук. + + + + LogAccount + + Password: + Парола + + + Need help? + Нужда от помощ? + + + Cancel + Откажи + + + Delete + Изтрий + + + @product@ - Login + @product@ - Потребителско име + + + Account: + Сметка: + + + &Connect + &Свързване + + + Forgot your @company@ password? + Забравили сте вашата @company@ парола? + + + &Modify + &Промени + + + Configure a &New Profile + Конфигурирай &нов профил + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Моля, изберете друг профил<br/> или попълнете необходимата информация за свързване към<br/> @company@ сметка</span> + + + + MSNSettings + + Login: + Потребител: + + + Password: + Парола + + + MSN Settings + MSN настройки + + + Forgot your MSN password? + Забравили сте вашата парола за MSN? + + + Get a new MSN Account + Регистриране на нова MSN сметка + + + Use HTTP method + Използвай HTTP метод + + + + MainWindow + + MainWindow + Главен прозорец + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Приеми обаждане + + + Send Chat Message + Изпрати чат съобщение + + + Make Call + Обади се + + + Hang Up + Затвори + + + + ManageBlockedUsersSettings + + Close + Затвори + + + Unblock User + Отблокирай контакт + + + Manage blocked users + Организирй блокираните контакти + + + @product@ - Manage blocked users + @product@ - Организирй блокираните контакти + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Имам @company@ сметка + + + Create a @company@ account + Създай @company@ сметка + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + За да изпратите SMS е необходимо да сте свързан(а) към<br>@company@ сметка и да разполагате с @company@ кредит. + + + + NotificationSettings + + Select the events for which a sound should be played. + Изберете събитията за които да бъде възпроизведен звук + + + + NotificationSettingsItem + + Sound file + Звуков файл + + + Find a sound file + Намери звуков файл + + + Play sound file + Възпроизведи звуков файл + + + Play + Възпроизведи + + + + NotifyDialog + + File Transfer + Прехвърляне на файл + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Състояние:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Обнови</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Приеми + + + Status + Състояние + + + 00:00:00 + 00:00:00 + + + Nickname + Псевдоним + + + &Reject + &Отхвърляне + + + Dialpad + Панел за набиране + + + Audio Smileys + Аудио усмивки + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Организирй блокираните контакти + + + Privacy Rules + Правила за дискретност + + + Always sign in as "Invisible" (appear offline to all users) + Винаги се регистрирай като "невидим" (за останалите сте като изключен(а)) + + + Allow chats from + Позволи чат от + + + Anyone + Всички + + + Only people from my contact list + Само на хора от моя списък с контакти + + + Allow calls from + Позволи обаждания от + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Откажи + + + Save + Запиши + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натиснете за смяна на аватар</p></body></html> + + + General + Общ + + + Network IDs (MSN, Jabber...) + Мрежова идентификация (MSN, Jabber...) + + + Advanced >> + Допълнителни >> + + + Fill in all your network Id to stay connected with your contacts + Попълнете цялата мрежова идентификация за връзка с вашите контакти + + + Contact + Контакт + + + Group: + Група: + + + Last Name: + Фамилия: + + + First Name: + Име: + + + Details + Допълнителна информация + + + Web/blog: + Уеб адрес / блог + + + Country: + Държава: + + + State: + Област: + + + City: + Град: + + + Gender: + Пол: + + + Birth Date: + Дата на раждане + + + Email: + Ел. поща + + + Notes + Бележки + + + Phone Numbers + Телефонни номера + + + Home phone + Домашен телефон + + + Mobile phone + Мобилен телефон + + + dd MMMM yyyy + дд ММММ гггг + + + Unknown + Неизвестно + + + Male + Мъж + + + Female + Жена + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Сметки + + + Accounts Settings + Настройки на сметките + + + + QtAddAccount + + Configure your voip account + Конфигуриране на вашата voip сметка + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + Тествай + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Потребителско име + + + Please enter an email address. + Моля въведете мейл адрес + + + Please enter your email address<br/>and your password + Моля въведете мейл адрес<br/>и вашата парола + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Моля попълнете информацията която<br/>е необходима за връзка към вашата<br/>SIP сметка + + + Configure your SIP profile + Конфигуриране на вашия SIP профил + + + + QtAdvancedIMContactManager + + Cancel + Откажи + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Изтриване + + + + QtAdvancedSettings + + Advanced + Разширени настройки + + + Advanced Settings + Разширени настройки + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Разширени настройки + + + Audio + Аудио + + + Audio Settings + Аудио настройки + + + + QtCallBar + + +(country code) number or nickname + +(код на държава) номер или псевдоним + + + + QtCallForwardSettings + + Call Forward + Пренасочване на обаждания + + + Call Forward Settings + Настройко за пренасочване на обаждания + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Запиши като + + + + QtChatLogViewer + + Account + + + + Edit Contact + Редактиране на контакт + + + + QtChatTabWidget + + Close chat + Затвори чат + + + + QtChatWidget + + %1 is connected. + %1 е свързан. + + + %1 is disconnected. + %1 е изключен(а). + + + send + изпрати + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Редактиране на контакт + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Обаждане на SIP номер + + + Call land line + Обаждане на стационарен телефон + + + Call Mobile + Обаждане на мобилен телефон + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Можете да информирате вашия пръв събеседник, че той ще е участник в конферентно обаждане.</b><br><br>Когато сте готов(а) натиснете бутона долу. Вашия пръв събеседник ще бъде превключен на изчакване, докато се осъществи връзка с втория събеседник.<br> + + + Hold first interlocutor and call second one + Задръж първия събеседник и се обади на втория + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Сега можете да информирате втория събеседник, че ще участва в конферентен разговор.</b><br><br>Щом сте готови, натиснете бутона по-долу за да започнете конференцията. + + + Start Conference + Започни конференцията + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Да + + + &No + &Не + + + Merge %1 with %2? + Да слея %1 с %2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Да + + + &No + &Не + + + Home phone + Домашен телефон + + + Mobile phone + Мобилен телефон + + + @product@ + + + + + Edit Contact + Редактиране на контакт + + + Do you really want to delete this contact? + Наистина ли искате да изтриете този контакт? + + + Start chat + Зпочни чат + + + Delete contact + Изтрий контакт + + + Call + Обади се + + + Free call + + + + Work phone + Служебен телефон + + + Send SMS + Изпрати SMS + + + Edit contact + Промени контакт + + + Block contact + Блокирай контакт + + + Invite to conference + Покана за конференция + + + Go to website + Отиди на уеб адрес + + + Send file + Изпрати на файл + + + Forward to mobile phone + Пренасочи към мобилен телефон + + + + QtContactWidget + + No mobile phone number set + Не е зададен номер на мобилен телефон + + + No landline phone number set + Не е зададен номер на стационарен телефон + + + Click here to call + Натиснете тук за да се обадите + + + Click here to set a phone number + Натиснете за да въведете телефон + + + Click here to edit the contact + Натиснете за промяна на контакт + + + Click here to send a SMS + Натиснете тук за да изпратите SMS + + + Click here to start a chat + Натиснете тук за да започнете чат + + + Click here to start a free call + Натиснете тук за безплатно обаждане + + + Click here to send a file + Натиснете тук за да изпратите файл + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Искате ли да се обадите на гласовата поща? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Да + + + &No + &Не + + + Choose a directory + Изберете директория + + + Overwrite File? + Да презапиша ли файла? + + + A file called %1 already exists.Do you want to overwrite it? + Файл с име %1 вече съществува. Искате ли да го презапишете? + + + File size error + Грешка в размера на файла + + + %1 exceeds the maximum authorized size. + %1 превишава максимално разрешения обем + + + %1 has size 0. + %1 има обем 0. + + + %1 is a directory. + %1 е директория. + + + You can not send a directory. + Не е възможно да се прати директория. + + + %1 is a shortcut. + %1 е препратка към файл. + + + You can not send a shortcut. + Не е възможно да се прати препратка. + + + All Files (*.* *) + Всички файлове (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Откажи + + + Remove + Премахни + + + Pause + Пауза + + + Starting + Започвам + + + From: + От: + + + To: + До: + + + Open + Отвори + + + Resume + Поднови + + + Waiting for anwser... + Чакам отговор... + + + Done + Готово + + + Failed + Неуспех + + + Paused + На пауза + + + Paused by peer + Задържане от другата страна + + + Cancelled + Отказано + + + Cancelled by peer + Отказано от другата страна + + + Downloading... + Изтеглям... + + + Uploading... + Качвам... + + + Waiting for peer... + Изчаквам другата страна + + + An error occured during the file transfer + Грешка по време на прехвърляне на файла + + + This may be caused by : + Това може да е причинено от: + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Общ + + + General Settings + Общи настройки + + + + QtHistory + + Incoming call + Входящо обаждане + + + Outgoing call + Изходящо обаждане + + + Missed call + Пропуснато обаждане + + + Rejected call + Отхърлено обаждане + + + Outgoing SMS + Изходящ SMS + + + Do you want to call %1? + Искате ли да се обадите на %1? + + + Chat session + Чат сесия + + + @product@ - Call History + + + + + Type + Тип: + + + Name/ID + Контакт + + + Date + Дата + + + Duration + Времетраене + + + + QtHistoryWidget + + Erase this entry + Изтрий този запис + + + Open in SMS window + Отвори в SMS прозорец + + + Call this peer + Обади са на този контакт + + + Show chat log + Покажи чат лога + + + + QtIMAccountManager + + Cancel + Откажи + + + @product@ + + + + + &Delete + &Изтриване + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Изключен + + + Error: %1 + Грешка: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Включен(а) + + + Invisible + Невидим(а) + + + Away + Отсъствам + + + Do not disturb + Не ме безпокойте + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Моля, въведете потребителско име + + + + QtIMAccountPresenceMenuManager + + Cancel + Откажи + + + @product@ + + + + + &Delete + &Изтриване + + + Online + Включен(а) + + + Invisible + Невидим(а) + + + Away + Отсъствам + + + Do Not Disturb + Не ме безпокойте + + + Disconnect + Прекъсни + + + Delete Account + Изтрий сметка + + + Are sure you want to delete the account <b>%1</b>? + Сигурни ли сте, че искате да изтриете сметката <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Промени моя профил + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Език + + + Language Settings + Езикови настройки + + + + QtLogAccount + + Invalid account + Невалидна сметка + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Входящо обаждане (звънящ сигнал) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Приключване на обаждане (затваряне) + + + Incoming chat + Входящ чат + + + IM account connected + Свързан към сметка за моментни съобщеня + + + IM account disconnected + Сметката за моментни съобщения е изключена + + + Contact online + Контакта е свързан + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Избери аудио файл + + + Sounds + Звуци + + + + QtPhoneCall + + Status + Състояние + + + Incoming Call + Входящо обаждане + + + Resume + Поднови + + + Hang-up + Затваряне + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Грешка + + + Talking + Говорене + + + Dialing + Набиране + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Звънене + + + Redirected + Пренасочено + + + Initialization... + Инициализация... + + + Closed + Приключено + + + Hold + Задържане + + + Add contact + Добяване на контакт + + + Ca&ncel + &Откажи + + + Talking - Conference + Разговор - конференция + + + Add a Contact + Добави контакт + + + + QtPresenceMenuManager + + Online + Включен(а) + + + Invisible + Невидим(а) + + + Away + Отсъствам + + + Do Not Disturb + Не ме безпокойте + + + Log off + Изключи ме + + + + QtPrivacySettings + + Privacy + Конфиденциалност + + + Privacy Settings + Настройки на анонимност + + + + QtProfileBar + + Click here to change your status + Натиснете тук за промяна на състоянието + + + active + активен + + + voicemail + Гласова поща + + + inactive + неактивен + + + unauthorized + неоторизиран + + + Set global presence to: + Превключете глобалното присъствие на: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Допълнителни >> + + + @product@ + + + + + A contact must have a group, please set a group. + Контакта трябва да е в група, моля въведете група. + + + << Simple + << Обикновен + + + Select your avatar + Изберете аватар + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Откажи + + + Conference + Конференция + + + Call + Обади се + + + Account + + + + Add a Contact + Добави контакт + + + You have unfinished call(s). + Имате неприключени обаждания + + + @product@ - Warning + + + + + Home + Домашен + + + Are you sure you want to exit the application? + Сигурни ли сте че искате да затворите програмата? + + + &Exit + &Изход + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Разширени настройки + + + General + Общ + + + Accounts + Сметки + + + Audio + Аудио + + + Call Forward + Пренасочване на обаждания + + + Language + Език + + + Privacy + Конфиденциалност + + + Video + Видео + + + Voicemail + Гласова поща + + + security + сигурност + + + Notifications + + + + + QtRenameGroup + + Bad group name + Неправилно име на група + + + Group name cannot be empty + Името на групата не може да бъде празно + + + + QtSecuritySettings + + Security + Сигурност + + + Security Settings + Настройки на сигурността + + + BETA + БЕТА + + + + QtSms + + Please fill in a phone number. + Моля въведете телефонен номер. + + + Do you want to continue? + Желаете ли да продължите? + + + Your SMS has not been sent + Вашият SMS не беше изпратен + + + Your SMS has been sent + Вашият SMS беше изпратен + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + Не можете да изпратите празно съобщение. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Няма връзка + + + Register done + Регистрирането успешно + + + Unregister done + Дерегистрирането успешно + + + Connecting + Свързвам се + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Състояние + + + @product@ + + + + + Call SIP + Обаждане на SIP номер + + + Call land line + Обаждане на стационарен телефон + + + Call Mobile + Обаждане на мобилен телефон + + + Call @company@ + + + + + Call + Обади се + + + Send SMS + Изпрати SMS + + + Online + Включен(а) + + + Invisible + Невидим(а) + + + Away + Отсъствам + + + Do Not Disturb + Не ме безпокойте + + + Internet Connection Error + Грешка в Интернет връзката + + + Offline + Неактивен + + + Connecting... + Свързвам се... + + + Send a SMS + Изпрати SMS + + + Start a chat + Започни чат + + + Place Call + Обади се + + + Send File + Изпрати файл + + + Multiple Status + Общо състояние + + + Unknown Status + Неизвестно състояние + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Откажи + + + @product@ - Proceed Conference + + + + + Edit My Profile + Промени моя профил + + + Add a Contact + Добави контакт + + + Hide Unavailable Contacts + Скрий неактивните контакти + + + Show Unavailable Contacts + Покажи неактивните контакти + + + Hide Groups + Скрий групите + + + Show Groups + Покажи групите + + + You have unfinished call(s). + Имате неприключени обаждания + + + Are you sure you want to log off? + Сигурни ли сте че искате да се изключите? + + + &Log Off + &Изключи ме + + + Disable &Video Calls + Деактивирай &видео обажданията + + + Enable &Video Calls + Активирай &видео обаждания + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Конферемцята не може да започне докато има активни обаждания.</b><br><br>Прекъснете всички обаждания и опитайте отново. + + + @product@ - Warning + + + + + Log &Off... + &Изключи ме... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Списък с конатакти + + + + QtUserProfile + + Edit Contact + Редактиране на контакт + + + &Authorize + &Оторизирай + + + &Block + &Блокирай + + + Network error. + Мрежова грешка. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Грешен мейл или парола + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Видео + + + Normal + Нормално + + + Good + Добро + + + Very good + Много добро + + + Excellent + Отлично + + + Video Settings + Видео настройки + + + + QtVoicemailSettings + + Voicemail + Гласова поща + + + Voicemail Settings + Настройки на гласовата поща + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Откажи + + + Save + Запиши + + + Title + Заглавие + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Приеми + + + &Hidden + &Скрит + + + &Tools + &Инструменти + + + &Help + &Помощ + + + &Actions + &Действия + + + @company@ + @company@ + + + &Close + &Затвори + + + Dialpad + Панел за набиране + + + @product@ + + + + + Start Conference + Започни конференцията + + + Send SMS + Изпрати SMS + + + Contacts + Контакти + + + History + История + + + Clear &History + Изчисти &историята + + + ToolBar + Лента с инструменти + + + Show/Hide Unavailable &Contacts + Покажи/скрий неактивните &контакти + + + &Chat Sessions + &Чат сесии + + + &All + &Всички + + + &HangUp + &Затвори + + + &Hold/Resume + &Задръж/започни + + + Show/Hide &Groups + Покажи/скрий &групите + + + &Outgoing Calls + &Изходящи обаждания + + + &Incoming Calls + &Входящи обаждания + + + &Missed Calls + &Пропуснати обаждания + + + Enable/Disable &Video Calls + Активирай/деактивирай &видео обажданията + + + Short Text &Messages (SMS) + Кратки текстови &съобщения (SMS) + + + Rejected Calls + Отхърлени обаждания + + + &Contacts + &Контакти + + + &About... + &Относно... + + + Add &Contact... + Добави &контакт + + + &Configuration... + &Конфигурация... + + + Send SMS... + Изпрати SMS... + + + View My &Profile... + Преглед на моя &профил + + + View My Profile + Преглед на моя профил + + + Start &Conference... + Започни &конференция... + + + &Find Contact... + &Намери контакт... + + + Log &Off... + &Изключи ме... + + + Log Off + Изключи ме + + + Show &Chat Window + Покажи &чат прозореца + + + Show Chat Window + Покажи чат прозореца + + + Show &File Transfer + Покажи прозореца за изпращане на &файл + + + Add Contact + Добави контакт + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Добави + + + SMS + SMS + + + Conference + Конференция + + + + RenameGroupDialog + + Cancel + Откажи + + + OK + Добре + + + Enter the new group name: + Въведи име на новата група: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Формуляр + + + Enable call encryption + Активирай кодиране на обажданията + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Обновете вашият профил + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Изпрати + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Натисни за добавяне на тел. номер + + + 0 /160 + 0 /160 + + + Enter your signature here + Въведете своят подпис тук + + + Signature: + Подпис: + + + Phone number(s): + Номер(а) + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Въведете номера(та) тук<br>Те трябва да бъдат отделени с & или ; или , + + + + SoftUpdateWindow + + Cancel + Откажи + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Формуляр + + + + VideoSettings + + Normal + Нормално + + + Good + Добро + + + Very good + Много добро + + + Excellent + Отлично + + + Enable video + Активирай видео + + + Webcam Selection + Избор на уебкамера + + + Webcam device: + Уебкам устройство + + + Webcam Preview + Изглед на уебкамера + + + Connection Type + Тип на връзката + + + Video quality + Видео качество + + + Down (kbit/s) + Към вас (кбит/сек.) + + + Up (kbit/s) + От вас (кбит/сек.) + + + 0 to 512 + 0 до 512 + + + 0 to 128 + 0 до 128 + + + 512 to 2048 + 512 до 2048 + + + 128 to 256 + 128 до 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Качеството на видео картината зависи от скоростта на вашата Интернет връзка + + + Make a test video call + Направи пробно видео обаждане + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Формуляр + + + Phone number of your voicemail: + Номерът на вашата гласова поща: + + + Please fill in here the information about your voicemail + Моля попълнете необходимата информация за вашата гласова поща + + + + Wizard + + Cancel + Откажи + + + Finish + Приключи + + + Next > + Следващ > + + + < Back + < Назад + + + Simple Wizard - Step %1 of %2 + Обикновен помощник - стъпка %1 от %2 + + + + YahooSettings + + Login: + Потребител: + + + Password: + Парола + + + Yahoo! Settings + Yahoo! настройки + + + Use Yahoo! Japan server + Използвай Yahoo! Japan сървър + + + Forgot your Yahoo! password? + Забравили сте си Yahoo! паролата? + + + Get a new Yahoo! Account + Получете нова Yahoo! сметка + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ca.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ca.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ca.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ca.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3955 @@ + + + + + AIMSettings + + Login: + Entrada: + + + Forgot your AIM password? + Heu oblidat la vostra contrasenya de l'AIM? + + + Get a new AIM Account + Crea un compte nou de l'AIM + + + Password: + Contrasenya: + + + AIM Settings + Paràmetres de l'AIM + + + + AboutWindow + + About + Quant a + + + Copyright (C)2008 Mbdsys + + + + Authors + Autors + + + Close + Tanca + + + 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. + Aquest programa és programari lliure; podeu redistribuir-lo i/o +modificar-lo sota els termes de la Llicència Pública General GNU + publicada per la Free Software Foundation; ja sigui la versió 2 + de la Llicència, o (si ho preferiu) qualsevol versió posterior. + + + @product@ - About + @product@ - Quant a + + + @product@, a voice over Internet phone + @product@, un telèfon de veu per Internet + + + + AcceptDialog + + File Transfer + Transferència de fitxers + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Accepta + + + &Cancel + &Cancel·la + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacte: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nom del fitxer: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Fitxer entrant</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Edita el meu perfil + + + + AddAccount + + Configure your account: + Configureu el vostre compte: + + + &Next + &Següent + + + Need help? + Necessiteu ajuda? + + + You don't have any account ? Click here + Encara no teniu un compte? Feu clic aquí + + + &Back + &Enrere + + + Cancel + Cancel·la + + + @product@ - Login + @product@ - Entrada + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configureu el vostre compte de veu per internet (voip)</span><br><br><span>Cal que indiqueu si el vostre proveïdor és <br/>@company@ o bé un altre servei</span> + + + @company@ account + Compte de @company@ + + + Generic SIP account + Compte SIP genèric + + + + AddIMContact + + Cancel + Cancel·la + + + Contact Type (protocol): + Tipus de contacte (protocol): + + + Contact ID: + Identificador del contacte: + + + Account: + Compte: + + + Enable + Habilita + + + Login + Accés + + + Add + Afegeix + + + @product@ - Add a Contact Account + @product@ - Addició d'un compte de contacte + + + + AddQuteComAccount + + Password: + Contrasenya: + + + Need help? + Necessiteu ajuda? + + + &Back + &Enrere + + + Cancel + Cancel·la + + + @product@ - Login + @product@ - Entrada + + + &Connect + &Connecta + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Entrada</span><br><br><span>Escriviu la vostra adreça de correu electrònic i la<br>contrasenya</span> + + + Email Address: + Adreça de correu electrònic: + + + Click here if you don't have a @company@ account + Feu clic aquí si encara no teniu un compte de @company@ + + + Forgot your @company@ password? + Heu oblidat la vostra contrasenya de @company@? + + + + AddSIPAccount + + Password: + Contrasenya: + + + Need help? + Necessiteu ajuda? + + + &Back + &Enrere + + + Cancel + Cancel·la + + + @product@ - Login + @product@ - Entrada + + + &Connect + &Connecta + + + Activate presence and chat (SIP/SIMPLE) + Activa la detecció de presència i el xat (SIP/SIMPLE) + + + Displayname: + Nom a mostrar: + + + login / username: + entrada / nom d'usuari: + + + Account name: + Nom del compte: + + + Proxy: + Servidor intermediari: + + + : + : + + + Server: + Servidor: + + + SIP Domain / Realm: + Domini / regne SIP + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configureu el vostre perfil SIP</span><br><br><span>Ompliu la informació que <br/>permetrà el vostre telèfon per programari connectar-vos al vostre<br/>compte SIP</span> + + + Advanced + Avançat + + + + AdvancedConfigWindow + + Close + Tanca + + + Preference Name + Nom de la preferència + + + Type + Tipus + + + Value + Valor + + + Default Value + Valor per defecte + + + Save + Desa + + + Status + Estat + + + @product@ - Advanced Configuration + @product@ - Configuració avançada + + + + AdvancedSettings + + Add + Afegeix + + + Advanced Settings + Configuració avançada + + + Advanced Configuration Window + Finestra de configuració avançada + + + Automatically answer incoming calls from + Accepta automàticament les trucades entrants de + + + Remove + Suprimeix + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Compte, aquesta part és per a usuaris avançats.<br>Qualsevol errada pot malmetre el programa greument. + + + + AppearanceSettings + + Toolbar + Barra d'eines + + + &Icons && Text + &Icones i text + + + Icons &Only + N&omés icones + + + &Hidden + O&cult + + + Chat Theme + Tema del xat + + + Form + Format + + + + AudioSettings + + Reset + Reinicialitza + + + Audio Codecs + Còdecs d'àudio + + + &Input device: + Dispositiu d'&entrada: + + + &Output device: + Dispositiu de &sortida: + + + &Ringing device: + Dispositiu de so de &trucada: + + + &Make a test call + &Fes una trucada de prova + + + Test + Prova + + + &Advanced >> + &Avançat >> + + + &Half Duplex + Semi &dúplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Format + + + + AvatarWidget + + Form + Format + + + + BrowserSoftUpdateWindow + + Close + Tanca + + + @product@ - Update available + @product@ - Actualització disponible + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3er: + + + 1st: + 1er: + + + 2nd: + 2on: + + + (+ country code) phone number + (+ codi del país) número de telèfon + + + Forward all unanswered calls to message box + Desvia totes les trucades sense contestar a la bústia de missatges + + + Disable call forwarding + Inhabilita la desviació de trucades + + + Forward all unanswered calls to following phone numbers: + Desvia totes les trucades sense contestar als números de telèfon següents: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Per exemple +3493500XXXX (+34 és el codi del país i 93500XXXX es el número de telèfon) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + La desviació de trucada s'activarà si no esteu connectat a @company@, o bé quan la línia estigui comunicant, o bé 20 segons després de no contestar una trucada. Podeu configurar més de tres desviacions de trucada a telèfons fixes, telèfons mòbils o bústia de veu (si és que en disposeu) + + + + CallToaster + + Incoming Call + Trucada entrant + + + Message + Missatge + + + + ChatLogViewer + + Chat History + Historial del xat + + + &Contact + &Contacte + + + &Tools + &Eines + + + &Help + &Ajuda + + + &Actions + &Accions + + + Main Toolbar + Barra d'eines principal + + + Call Contact + Truca el contacte + + + Send a File + Envia un fitxer + + + createChatConf + Configuració del xat + + + Show Contact Info + Mostra informació del contacte + + + blockContact + Bloca el contacte + + + &Save History As... + Anomena i &desa l'historial... + + + actionRestartChat + Reinicia el xat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contacte + + + &Tools + &Eines + + + &Actions + &Accions + + + Main Toolbar + Barra d'eines principal + + + Call Contact + Truca el contacte + + + Send a File + Envia un fitxer + + + Show Contact Info + Mostra informació del contacte + + + blockContact + Bloca el contacte + + + &Save History As... + Anomena i &desa l'historial... + + + @company@ + @company@ + + + MainWindow + Finestra Principal + + + &Edit + &Edita + + + Cu&t + Re&talla + + + Ctrl+X + Ctrl+X + + + &Copy + &Copia + + + Ctrl+C + Ctrl+C + + + &Paste + Engan&xa + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Inicia una conferència de xat + + + &Close + &Tanca + + + Conference + Conferència + + + + ChatRoomInviteWidget + + Chat room + Sala de xat + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de xat</span></p></body></html> + + + (Conference participants) + (Participants a la conferència) + + + &Remove + &Suprimeix + + + &Start + &Inicia + + + Group Name + Nom del grup + + + &Add + &Afegeix + + + + ChatToaster + + Message + Missatge + + + Incoming Chat + Xat entrant + + + + ChatWidget + + Form + Format + + + + ConferenceCallWidget + + Cancel + Cancel·la + + + Start + Inicia + + + Phone number 2: + Número de telèfon 2: + + + Phone number 1: + Número de telèfon 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Establiment d'una conferència + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferència</span><br /><br />Escriviu dos números de telèfon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> o bé identificadors de contacte de @company@ per a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iniciar una conferència a tres.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferència</span><br /><br />Escriviu dos números de telèfon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> o bé identificadors de contacte de @company@ per a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iniciar una conferència a tres.</p> + + + &Add >> + &Afegeix >> + + + << &Remove + << &Suprimeix + + + Available Contacts + Contactes disponibles + + + &Start + &Inicia + + + Cancel + Cancel·la + + + + ContactGroupPopupMenu + + Remove Contact Group + Elimina el grup de contactes + + + Rename Contact Group + Canvia el nom del grup de contactes + + + Delete group + Suprimeix el grup + + + Do you really want to delete this group? + Esteu segur que voleu suprimir el grup? + + + &Yes + &Sí + + + &No + &No + + + + ContactList + + Contact List + Llista de contactes + + + goupname + + + + + ContactWidget + + No mobile phone number set + No hi ha cap número de telèfon mòbil definit + + + No landline phone number set + No hi ha cap número de telèfon fixe definit + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic per a editar aquest contacte</p></body></html> + + + + CrashReport + + Cancel + Cancel·la + + + Program Failure + Fallada del programa + + + Send + Envia + + + Optional Information + Informació opcional + + + Your Mail: + La vostra adreça electrònica: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + No disponible + + + Click here to change your call forward settings + Clica aquí per a canviar les opcions del reenviament de trucada + + + Call forward mode: + Mode de desviació de trucada: + + + Purchase call out credits + Compra crèdit de trucada + + + Call Forward Method + Mètode de desviació de trucada + + + Call Voice Mail + Truca la bústia de veu + + + Click here to buy @company@'s credits + Feu clic aquí per a comprar crèdit de @company@ + + + + DesktopService + + Root Folder + Carpeta pare + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Feu clic en els diversos elements que canvien de color per a enviar sons al vostre interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Feu clic aquí per a trucar la vostra bústia de veu + + + New Voice Mail: + Missatge de veu nou: + + + Click here to see missed call(s) + Feu clic aquí per a veure les trucades perdudes + + + Missed Call(s): + Trucades perdudes: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Baixa + + + Upload + Puja + + + Click here to change your download folder + Feu clic aquí per a canviar la vostra carpeta de baixades + + + Download folder: + Carpeta de baixades: + + + Clean all items in the list + Neteja tots els elements de la llista + + + &Clean + &Neteja + + + @product@ - File Transfer Manager + @product@ - Gestor de les transferències de fitxers + + + + FileTransferItem + + Cancel + Cancel·la + + + Form + Format + + + Pause + Pausa + + + <i>From:</i> + <i>De:</i> + + + + GeneralSettings + + When I double-click on a contact + En fer doble clic en el contacte + + + Call cell phone or land line if contact not online + Fes una trucada al telèfon mòbil o telèfon fixe si el contacte no està en línia + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Estat inactiu + + + minutes + minuts + + + Show me as "Away" when I am inactive for: + Mostra'm com a «absent» quan hagi estat inactiu durant: + + + When I start my computer + En iniciar l'ordinador + + + Automatically start @product@ + Inicia @product@ automàticament + + + + GoogleTalkSettings + + Login: + Entrada: + + + Password: + Contrasenya: + + + GoogleTalk Settings + Paràmetres del GoogleTalk + + + Forgot your GoogleTalk password? + Heu oblidat la contrasenya del GoogleTalk? + + + Get a new GoogleTalk Account + Creeu un compte nou del GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Cancel·la + + + HTTP Proxy Address: + Adreça del servidor intermediari d'HTTP: + + + HTTP Proxy Port Number: + Número de port del servidor intermediari d'HTTP: + + + HTTP Proxy Login: + Dades d'entrada del servidor intermediari d'HTTP: + + + HTTP Proxy Password: + Contrasenya del servidor intermediari d'HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autenticació del servidor intermediari d'HTTP</span><br><br><span>El vostre servidor intermediari d'HTTP local utilitza autenticació<br>Escriviu les dades d'entrada i la contrasenya</span> + + + OK + D'acord + + + @product@ - Local HTTP Proxy + @product@ - Servidor intermediari HTTP local + + + + ICQSettings + + Login: + Entrada: + + + Password: + Contrasenya: + + + ICQ Settings + Paràmetres de l'ICQ + + + Forgot your ICQ password? + Heu oblidat la vostra contrasenya de l'ICQ? + + + Get a new ICQ Account + Creeu un compte nou de l'ICQ + + + + IMAccountManager + + Close + Tanca + + + Login + Accés + + + Add + Afegeix + + + Delete + Suprimeix + + + Modify + Modifica + + + Protocol + Protocol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Els meus comptes de missatgeria instantània (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Cancel·la + + + Save + Desa + + + IM Account Settings + Paràmetres del compte de MI + + + + IMContactManager + + Add + Afegeix + + + Delete + Suprimeix + + + Contact Type (protocol) + Tipus de contacte (protocol) + + + Click on the add button below to add a new ID + Feu clic en el botó de sota per a afegir un nou identificador + + + Contact ID + Identificador del contacte + + + + IMProfileWidget + + Enter your nickname here + Escriviu el vostre sobrenom aquí + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Crea un compte de missatgeria instantània (MSN, AIM, GoogleTalk...) + + + Add an IM account + Crea un compte nou de missatgeria instantània (MI) + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic aquí per a canviar el vostre àvatar</p></body></html> + + + + ImageSelector + + Cancel + Cancel·la + + + OK + D'acord + + + Go Up + Vés cap amunt + + + Refresh + Referesca + + + + JabberSettings + + Login: + Entrada: + + + Password: + Contrasenya: + + + Jabber Settings + Paràmetres del Jabber + + + Connect Server: + Connecta al servidor: + + + <u>Advanced Options</u> + <u>Opcions Avançades</u> + + + Require TLS + Requereix TLS + + + Port: + Port: + + + Use TLS if available + Utilitza TLS si està disponible + + + Allow plaintext authentication over unencrypted streams + Permet l'autenticació per mitjà de text a través de corrents de dades no xifrats + + + 5222 + 5222 + + + Force old (port 5223) SSL + Força la utilització del port antic (5223) de l'SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + El vostre idioma no és en aquesta llista. Sabíeu que podeu traduir aquest programa en el Launchpad? + + + More information here. + Més informació aquí. + + + + LogAccount + + Password: + Contrasenya: + + + Need help? + Necessiteu ajuda? + + + Cancel + Cancel·la + + + Delete + Suprimeix + + + @product@ - Login + @product@ - Entrada + + + Account: + Compte: + + + &Connect + &Connecta + + + Forgot your @company@ password? + Heu oblidat la vostra contrasenya de @company@? + + + &Modify + &Modifica + + + Configure a &New Profile + Configura un &perfil nou + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Trieu un perfil que hagueu utilitzat prèviament<br/> o bé ompliu la informació necessària <br/> per a connectar-vos a un compte de @company@</span> + + + + MSNSettings + + Login: + Entrada: + + + Password: + Contrasenya: + + + MSN Settings + Paràmetres de l'MSN + + + Forgot your MSN password? + Heu oblidat la contrasenya de l'MSN? + + + Get a new MSN Account + Creeu un nou compte de l'MSN + + + Use HTTP method + Utilitza el mètode HTTP + + + + MainWindow + + MainWindow + Finestra Principal + + + Command::terminate() + Ordre::termina() + + + Command::start() + Ordre::inicia() + + + Accept Call + Accepta la trucada + + + Send Chat Message + Envia un missatge de xat + + + Make Call + Fes una trucada + + + Hang Up + Penja + + + + ManageBlockedUsersSettings + + Close + Tanca + + + Unblock User + Desfés el blocat de l'usuari + + + Manage blocked users + Gestió dels usuaris blocats + + + @product@ - Manage blocked users + @product@ - Gestió dels usuaris blocats + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - Missatges de text + + + I have a @company@ account + Ja tinc un compte de @company@ + + + Create a @company@ account + Crea un compte de @product@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Per a enviar un missatge de text heu d'estar connectat a través d'un<br>compte de @company@ i tenir crèdit de @company@. + + + + NotificationSettings + + Select the events for which a sound should be played. + Seleccioneu els esdeveniments per als quals s'ha de reproduir un so. + + + + NotificationSettingsItem + + Sound file + Fitxer de so + + + Find a sound file + Cerca un fitxer de so + + + Play sound file + Reprodueix el fitxer de so + + + Play + Reprodueix + + + + NotifyDialog + + File Transfer + Transferència de fitxers + + + &Ok + &D'acord + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estat:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualitza</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Accepta + + + Status + Estat + + + 00:00:00 + 00:00:00 + + + Nickname + Sobrenom + + + &Reject + De&sestima + + + Dialpad + Marcador + + + Audio Smileys + Emoticones d'àudio + + + Communication is encrypted + La comunicació és xifrada + + + + PrivacySettings + + Manage blocked users + Gestió dels usuaris blocats + + + Privacy Rules + Regles de privadesa + + + Always sign in as "Invisible" (appear offline to all users) + Connecta'm sempre amb l'estat «invisible» (la resta d'usuaris em veuran com a «fora de línia») + + + Allow chats from + Permet rebre invitacions de xat de + + + Anyone + Qualsevol + + + Only people from my contact list + Només persones de la meva llista de contactes + + + Allow calls from + Permet rebre trucades de + + + When I sign into @company@ + En connectar-me a @company@ + + + + ProfileDetails + + Cancel + Cancel·la + + + Save + Desa + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic aquí per a canviar el vostre àvatar</p></body></html> + + + General + General + + + Network IDs (MSN, Jabber...) + Identificadors de xarxa (MSN, Jabber...) + + + Advanced >> + Avançat >> + + + Fill in all your network Id to stay connected with your contacts + Ompliu tots els identificadors de xarxa per a romandre connectat amb els vostres contactes + + + Contact + Contacte + + + Group: + Grup: + + + Last Name: + Cognom: + + + First Name: + Nom: + + + Details + Detalls + + + Web/blog: + Web/bloc: + + + Country: + País: + + + State: + Estat: + + + City: + Ciutat: + + + Gender: + Sexe: + + + Birth Date: + Data de naixement: + + + Email: + Correu electrònic: + + + Notes + Notes + + + Phone Numbers + Números de telèfon + + + Home phone + Telèfon del domicili + + + Mobile phone + Telèfon mòbil + + + dd MMMM yyyy + dd MMM aaaa + + + Unknown + Desconegut + + + Male + Home + + + Female + Dona + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Comptes + + + Accounts Settings + Paràmetres dels comptes + + + + QtAddAccount + + Configure your voip account + Configureu el vostre compte de veu per internet (voip) + + + Please tell us if your account is provided<br/>by @company@ or by another service + Indiqueu si el proveïdor del vostre compte és <br/>@company@ o un altre servei + + + + QtAddAccountUtils + + Test + Prova + + + Audio Test Call + Trucada d'àudio de prova + + + Video Test Call + Trucada de vídeo de prova + + + + QtAddQuteComAccount + + Login + Accés + + + Please enter an email address. + Escriviu una adreça de correu electrònic. + + + Please enter your email address<br/>and your password + Escriviu la vostra adreça de correu electrònic<br/>i la vostra contrasenya + + + @product@ - Login + @product@ - Connexió + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Ompliu la informació que <br/>permetrà el vostre telèfon per programari connectar-vos al vostre<br/>compte SIP + + + Configure your SIP profile + Configureu el vostre perfil SIP + + + + QtAdvancedIMContactManager + + Cancel + Cancel·la + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Esteu segur de voler eliminar aquest contacte de MI? + + + + &Delete + &Suprimeix + + + + QtAdvancedSettings + + Advanced + Avançat + + + Advanced Settings + Configuració avançada + + + + QtAppearanceSettings + + Me + Jo + + + Hello + Hola + + + How are you? + Com estàs? + + + Other + Altres + + + I am fine + Estic bé + + + Have to go + Me n'he d'anar + + + Bye + Adéu + + + Appearance + Aparença + + + Appearance Settings + Configuració de l'aparença + + + + QtAudioSettings + + Advanced + Avançat + + + Audio + Àudio + + + Audio Settings + Configuració de l'àudio + + + + QtCallBar + + +(country code) number or nickname + +(codi de país) número o sobrenom + + + + QtCallForwardSettings + + Call Forward + Desviació de trucada + + + Call Forward Settings + Configuració de la desviació de trucada + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Anomena i desa + + + + QtChatLogViewer + + Account + + + + Edit Contact + Edita el contacte + + + + QtChatTabWidget + + Close chat + Tanca el xat + + + + QtChatWidget + + %1 is connected. + %1 està connectat/connectada. + + + %1 is disconnected. + %1 està desconnectat/desconnectada. + + + send + envia + + + Your file can not be sent: your contact must be connected on the @company@ network. + No es pot enviar el vostre fitxer: el contacte ha d'estar connectat a la xarxa de @company@ per a poder-ho fer. + + + Your contact wishes to send a file with @company@. + El vostre contacte vol enviar un fitxer a través de @company@. + + + Go to %1 to install it + Aneu a %1 per a instal·lar-ho + + + %1 has joined the chat + %1 ha entrat al xat + + + %1 has left the chat + %1 ha sortit del xat + + + + QtChatWindow + + Edit Contact + Edita el contacte + + + @product@ Chat + Xat de @product@ + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Trucada SIP + + + Call land line + Trucada a un telèfon fixe + + + Call Mobile + Trucada a un telèfon mòbil + + + Call @company@ + Trucada @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Ara podeu informar el vostre primer interlocutor que formarà part d'una trucada de conferència.</b><br>Quan ho hagueu fet, feu clic en el botó de sota. El vostre primer interlocutor serà posat en espera i mentrestant es trucarà el vostre segon interlocutor.<br> + + + Hold first interlocutor and call second one + Poseu el primer interlocutor en espera i truqueu el segon + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Ara podeu informar el vostre segon interlocutor que formarà part d'una trucada de conferència.</b><br><br>Quan ho hagueu feu clic en el botó de sota per a iniciar la conferència. + + + Start Conference + Inicia una conferència + + + @product@ - Proceed Conference + @product@ - Procedeix amb la conferència + + + + QtContactList + + &Yes + &Sí + + + &No + &No + + + Merge %1 with %2? + Voleu fusionar %1 amb %2? + + + @product@ - Merge Contacts + @product@ - Fusió de contactes + + + + QtContactManager + + &Yes + &Sí + + + &No + &No + + + Home phone + Telèfon del domicili + + + Mobile phone + Telèfon mòbil + + + @product@ + @product@ + + + Edit Contact + Edita el contacte + + + Do you really want to delete this contact? + Esteu segur que voleu suprimir aquest contacte? + + + Start chat + Inicia un xat + + + Delete contact + Suprimeix el contacte + + + Call + Trucada + + + Free call + + + + Work phone + Telèfon de la feina + + + Send SMS + Envia un missatge de text + + + Edit contact + Edita el contacte + + + Block contact + Bloca el contacte + + + Invite to conference + Convida a una conferència + + + Go to website + Ves al lloc web + + + Send file + Envia un fitxer + + + Forward to mobile phone + Desvia cap al telèfon mòbil + + + + QtContactWidget + + No mobile phone number set + No hi ha cap número de telèfon mòbil definit + + + No landline phone number set + No hi ha cap número de telèfon fixe definit + + + Click here to call + Feu clic aquí per a trucar + + + Click here to set a phone number + Feu clic aquí per a definir un número de telèfon + + + Click here to edit the contact + Feu clic aquí per a editar el contacte + + + Click here to send a SMS + Feu clic aquí per a enviar un missatge de text + + + Click here to start a chat + Feu clic aquí per a iniciar un xat + + + Click here to start a free call + Feu clic aquí per a iniciar una trucada gratuïta + + + Click here to send a file + Feu clic aquí per a enviar un fitxer + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Voleu trucar la vostra bústia de veu + + + @product@ - Voice Mail + @product@ - Bústia de veu + + + + QtFileTransfer + + &Yes + &Sí + + + &No + &No + + + Choose a directory + Seleccioneu un directori + + + Overwrite File? + Voleu sobreescriure el fitxer? + + + A file called %1 already exists.Do you want to overwrite it? + Ja hi ha un fitxer anomenat %1. Voleu sobreescriure'l? + + + File size error + Error en la mida del fitxer + + + %1 exceeds the maximum authorized size. + %1 excedeix la mida màxima autoritzada. + + + %1 has size 0. + La mida de %1 és 0. + + + %1 is a directory. + %1 és un directori + + + You can not send a directory. + No podeu enviar un directori. + + + %1 is a shortcut. + %1 és una drecera. + + + You can not send a shortcut. + No podeu enviar una drecera. + + + All Files (*.* *) + Tots els fitxers (*.* *) + + + Please upgrade<br> your @product@ + Hauríeu d'actualitzar<br> la vostra versió de @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Hauríeu de dir al vostre contacte que ha<br> d'actualitzar<br> la seva versió de @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + No podeu rebre el fitxer: hauríeu d'actualitzar la vostra versió de @product@ per a rebre'l. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + està intentant enviar-vos un fitxer, però la seva versió de @product@ s'ha d'actualitzar per a poder-lo rebre. Hauríeu de dir-li que es baixi l'última versió del programa. + + + + QtFileTransferItem + + Cancel + Cancel·la + + + Remove + Suprimeix + + + Pause + Pausa + + + Starting + S'està iniciant + + + From: + De: + + + To: + Per a: + + + Open + Obre + + + Resume + Reprèn + + + Waiting for anwser... + S'està esperant una resposta... + + + Done + Fet + + + Failed + Ha fallat + + + Paused + En pausa + + + Paused by peer + En pausa per l'altre usuari + + + Cancelled + Cancel·lat + + + Cancelled by peer + Cancel·lat per l'altre usuari + + + Downloading... + S'està baixant... + + + Uploading... + S'està pujant... + + + Waiting for peer... + S'està esperant l'altre usuari... + + + An error occured during the file transfer + S'ha produït un error durant la transferència de fitxers + + + This may be caused by : + Pot haver estat causat per: + + + Your @product@ is not up to date. Please download the latest version on + La vostra versió de @product@ no és actual. Hauríeu de baixar l'última versió des de + + + The @company@ network may be temporarily unavailable. Please try later. + Pot ser que la xarxa de @company@ no estigui disponible temporalment. Proveu-ho de nou d'aquí a una estona. + + + + QtGeneralSettings + + General + General + + + General Settings + Paràmetres Generals + + + + QtHistory + + Incoming call + Trucada entrant + + + Outgoing call + Trucada sortint + + + Missed call + Trucada perduda + + + Rejected call + Trucada desestimada + + + Outgoing SMS + Missatge de text sortint + + + Do you want to call %1? + Voleu trucar %1? + + + Chat session + Sessió de xat + + + @product@ - Call History + @product@ - Historial de trucades + + + Type + Tipus + + + Name/ID + Nom/identificador + + + Date + Data + + + Duration + Durada + + + + QtHistoryWidget + + Erase this entry + Esborra aquesta entrada + + + Open in SMS window + Obre en una finestra de missatges de text + + + Call this peer + Truca aquest usuari + + + Show chat log + Mostra el registre dels xats + + + + QtIMAccountManager + + Cancel + Cancel·la + + + @product@ + @product@ + + + &Delete + &Suprimeix + + + Are sure you want to delete this account? + + Esteu segur de voler suprimir aquest compte? + + + + + QtIMAccountMonitor + + Disconnected + Desconnectat + + + Error: %1 + Error: %1 + + + Online + En línia + + + Invisible + Invisible + + + Away + Absent + + + Do not disturb + No em molesteu + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Escriviu un nom d'usuari + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancel·la + + + @product@ + @product@ + + + &Delete + &Suprimeix + + + Online + En línia + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + No em molesteu + + + Disconnect + Desconnecta + + + Delete Account + Suprimeix el compte + + + Are sure you want to delete the account <b>%1</b>? + Esteu segur de voler suprimir el compte <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Edita el meu perfil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Idioma + + + Language Settings + Configuració de l'idioma + + + + QtLogAccount + + Invalid account + Compte no vàlid + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Si us plau, trieu un perfil que hagueu utilitzat anteriorment<br/> o bé ompliu la informació per a connectar-vos a un<br/> compte de @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - Connexió + + + + QtNotificationSettings + + Incoming call (ringtone) + Trucada entrant (to de trucada) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Trucada finalitzada (to en penjar) + + + Incoming chat + Xat entrant + + + IM account connected + Compte de MI connectat + + + IM account disconnected + Compte de MI desconnectat + + + Contact online + Contacte en línia + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Escolliu un fitxer de so + + + Sounds + Sons + + + + QtPhoneCall + + Status + Estat + + + Incoming Call + Trucada entrant + + + Resume + Reprèn + + + Hang-up + Penja + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Error + + + Talking + Esteu parlant + + + Dialing + S'està marcant + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + S'està trucant + + + Redirected + Desviada + + + Initialization... + S'està inicialitzant... + + + Closed + Tancada + + + Hold + Posa en espera + + + Add contact + Afegeix un contacte + + + Ca&ncel + Ca&ncel·la + + + Talking - Conference + Esteu parlant - conferència + + + Add a Contact + Afegeix un contacte + + + + QtPresenceMenuManager + + Online + En línia + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + No em molesteu + + + Log off + Desconnecta + + + + QtPrivacySettings + + Privacy + Privadesa + + + Privacy Settings + Configuració de la privadesa + + + + QtProfileBar + + Click here to change your status + Feu clic aquí per a canviar el vostre estat + + + active + actiu + + + voicemail + bústia de veu + + + inactive + inactiu + + + unauthorized + no autoritzat + + + Set global presence to: + Estableix l'estat de presència global a: + + + Voice mail + Bústia de veu + + + + QtProfileDetails + + Advanced >> + Avançat >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Un contacte ha de ser part d'un grup, si us plau seleccioneu-ne un. + + + << Simple + << Simple + + + Select your avatar + Seleccioneu el vostre àvatar + + + @product@ - No Group Selected + @product@ - No s'ha seleccionat cap grup + + + @company@ Avatars + Àvatars de @company@ + + + + QtQuteCom + + &Cancel + &Cancel·la + + + Conference + Conferència + + + Call + Trucada + + + Account + + + + Add a Contact + Afegeix un contacte + + + You have unfinished call(s). + Teniu trucades no finalitzades. + + + @product@ - Warning + @product@ - Avís + + + Home + Inici + + + Are you sure you want to exit the application? + Esteu segur de voler sortir del programa? + + + &Exit + &Surt + + + @product@ - Call Error + @product@ - Error de trucada + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avançat + + + General + General + + + Accounts + Comptes + + + Audio + Àudio + + + Call Forward + Desviació de trucada + + + Language + Idioma + + + Privacy + Privadesa + + + Video + Vídeo + + + Voicemail + Bústia de veu + + + security + seguretat + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nom de grup erroni + + + Group name cannot be empty + El nom del grup no es pot deixar en blanc + + + + QtSecuritySettings + + Security + Seguretat + + + Security Settings + Configuració de la seguretat + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Escriviu un número de telèfon, si us plau. + + + Do you want to continue? + Voleu continuar? + + + Your SMS has not been sent + No s'ha enviat el vostre missatge de text + + + Your SMS has been sent + S'ha enviat el vostre missatge de text + + + Your message is too long. +This will send + El vostre missatge és massa llarg. +Això enviarà + + + SMS. + + missatge de text. + + + + You can not send an empty message. + No podeu enviar un missatge en blanc. + + + @company@ SMS service + Servei de missatgeria de text de @company@ + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - L'actualització ha fallat + + + @product@ update failed to start: try to update @product@ manually + No s'ha pogut iniciar l'actualització de @product@: proveu de dur a terme l'actualització manualment + + + + QtStatusBar + + Not connected + No connectat + + + Register done + S'ha efectuat el registre + + + Unregister done + S'ha desfet el registre + + + Connecting + S'està connectant + + + Output volume is muted + El volum de sortida està emmudit + + + Output volume is 0 + El volum de sortida és 0. + + + Click to adjust output volume + Cliqueu per a ajustar el volum de sortida + + + Input volume is muted + El volum d'entrada està emmudit. + + + Input volume is 0 + El volum d'entrada és 0. + + + Click to adjust input volume + Cliqueu per a ajustar el volum d'entrada + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Estat + + + @product@ + @product@ + + + Call SIP + Trucada SIP + + + Call land line + Trucada a un telèfon fixe + + + Call Mobile + Trucada a un telèfon mòbil + + + Call @company@ + Trucada @company@ + + + Call + Trucada + + + Send SMS + Envia un missatge de text + + + Online + En línia + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + No em molesteu + + + Internet Connection Error + Connexió d'Internet amb errors + + + Offline + Fora de línia + + + Connecting... + S'està connectant... + + + Send a SMS + Envia un missatge de text + + + Start a chat + Inicia un xat + + + Place Call + Fes una trucada + + + Send File + Envia un fitxer + + + Multiple Status + Estats múltiples + + + Unknown Status + Estat desconegut + + + Quit @product@ + Surt de @product@ + + + + QtToolBar + + &Cancel + &Cancel·la + + + @product@ - Proceed Conference + @product@ - Procedeix amb la conferència + + + Edit My Profile + Edita el meu perfil + + + Add a Contact + Afegeix un contacte + + + Hide Unavailable Contacts + Oculta els contactes no disponibles + + + Show Unavailable Contacts + Mostra els contactes no disponibles + + + Hide Groups + Oculta els grups + + + Show Groups + Mostra els grups + + + You have unfinished call(s). + Teniu trucades no finalitzades. + + + Are you sure you want to log off? + Esteu segur de voler desconnectar? + + + &Log Off + De&sconnecta + + + Disable &Video Calls + Inhabilita les trucades de &vídeo + + + Enable &Video Calls + Habilita les trucades de &vídeo + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>No es pot iniciar la conferència mentre hi hagi trucades actives.</b><br><br>Hauríeu de finalitzar totes les trucades i intentar-ho de nou. + + + @product@ - Warning + @product@ - Avís + + + Log &Off... + &Desconnecta... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Llista de contactes + + + + QtUserProfile + + Edit Contact + Edita el contacte + + + &Authorize + &Autoritza + + + &Block + &Bloca + + + Network error. + Error de la xarxa. + + + @product@ - Authorization Request + @product@ - Sol·licitud d'autorització + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + S'ha produït un problema en carregar el vostre perfil. +En lloc d'aquest s'ha carregat l'última còpia de seguretat. +És possible que els últims canvis que hagueu fet s'hagin perdut + + + Your profile could not be loaded. +Choose another profile or create a new one. + No s'ha pogut carregar el vostre perfil. +Trieu un altre perfil o bé creeu-ne un de nou. + + + Wrong email/password entered + Heu escrit una adreça de correu electrònic o contrasenya equivocades + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Vídeo + + + Normal + Normal + + + Good + Bona + + + Very good + Molt bona + + + Excellent + Excel·lent + + + Video Settings + Configuració del vídeo + + + + QtVoicemailSettings + + Voicemail + Bústia de veu + + + Voicemail Settings + Configuració de la bústia de veu + + + + QtWebDirectory + + @product@ - Directory + @product@ - Directori + + + + QuteComConfigDialog + + Cancel + Cancel·la + + + Save + Desa + + + Title + Títol + + + @product@ - Configuration + @product@ - Configuració + + + + QuteComWindow + + &Accept + &Accepta + + + &Hidden + O&cult + + + &Tools + &Eines + + + &Help + &Ajuda + + + &Actions + &Accions + + + @company@ + @company@ + + + &Close + &Tanca + + + Dialpad + Marcador + + + @product@ + @product@ + + + Start Conference + Inicia una conferència + + + Send SMS + Envia un missatge de text + + + Contacts + Contactes + + + History + Historial + + + Clear &History + Neteja l'&historial + + + ToolBar + Barra d'eines + + + Show/Hide Unavailable &Contacts + Mostra/oculta els &contactes no disponibles + + + &Chat Sessions + Sessions de &xat + + + &All + T&ot + + + &HangUp + &Penja + + + &Hold/Resume + Posa en espe&ra/reprèn + + + Show/Hide &Groups + Mostra/oculta els &grups + + + &Outgoing Calls + Trucades &sortints + + + &Incoming Calls + Trucades &entrants + + + &Missed Calls + Tru&cades perdudes + + + Enable/Disable &Video Calls + Habilita/inhabilita les trucades de &vídeo + + + Short Text &Messages (SMS) + Missatges de te&xt (SMS) + + + Rejected Calls + Trucades desestimades + + + &Contacts + &Contactes + + + &About... + &Quant a... + + + Add &Contact... + Afegeix un &contacte... + + + &Configuration... + &Configuració... + + + Send SMS... + Envia un missatge de text... + + + View My &Profile... + Visualitza el meu &perfil... + + + View My Profile + Visualitza el meu perfil + + + Start &Conference... + Inicia una &conferència... + + + &Find Contact... + Cerca un &contacte... + + + Log &Off... + &Desconnecta... + + + Log Off + Desconnecta + + + Show &Chat Window + Mostra la finestra del &xat + + + Show Chat Window + Mostra la finestra del xat + + + Show &File Transfer + Mostra les transferències de &fitxers + + + Add Contact + Afegeix un contacte + + + View My @company@ Account... + Visualitza el meu compte de @company@... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + &Fòrum de @company@... + + + @company@ &Wiki/FAQ... + PMF/&Wiki de @company@... + + + Learn more about @company@ Services... + Obteniu més informació dels serveis de @company@... + + + Search + Cerca + + + Find @company@ Contacts + Cerca contactes de @company@ + + + &Quit + &Surt + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Text sota les icones + + + &Icons Only + Només &icones + + + Add + Afegeix + + + SMS + Missatges de text + + + Conference + Conferència + + + + RenameGroupDialog + + Cancel + Cancel·la + + + OK + D'acord + + + Enter the new group name: + Escriviu el nom nom per al grup: + + + @product@ - Rename Contact Group + @product@ - Canvi del nom del grup de contactes + + + + SecuritySettings + + Form + Format + + + Enable call encryption + Habilita el xifratge de les trucades + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ pot xifrar les trucades a través del sistema de xifrat AES de 128 bits i del sistema Diffie-Hellman per a l'intercanvi de claus. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Actualitza el perfil + + + Yahoo! ID: + Identificador del Yahoo!: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + Identificador de l'MSN + + + SIP ID: + Identificador SIP: + + + ICQ ID: + Identificador de l'ICQ: + + + AIM ID: + Identificador de l'AIM: + + + @company@ ID: + Identificador de @company@: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Envia + + + @product@ - SMS + @product@ - Missatges de text + + + Click here to add a phone number + Feu clic aquí per a afegir un número de telèfon + + + 0 /160 + 0 /160 + + + Enter your signature here + Escriviu la vostra signatura aquí + + + Signature: + Signatura: + + + Phone number(s): + Número(s) de telèfon: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Escriviu els números de telèfon aquí<br>Han d'estar separats pels caràcters & o bé ; o bé , + + + + SoftUpdateWindow + + Cancel + Cancel·la + + + @product@ - Downloading update + @product@ - Baixada d'una actualització + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Format + + + + VideoSettings + + Normal + Normal + + + Good + Bona + + + Very good + Molt bona + + + Excellent + Excel·lent + + + Enable video + Habilita el vídeo + + + Webcam Selection + Selecció de la càmera web + + + Webcam device: + Càmera web: + + + Webcam Preview + Visualització prèvia de la càmera web + + + Connection Type + Tipus de connexió + + + Video quality + Qualitat de vídeo + + + Down (kbit/s) + Baixada (kbit/s) + + + Up (kbit/s) + Pujada (kbit/s) + + + 0 to 512 + De 0 a 512 + + + 0 to 128 + De 0 a 128 + + + 512 to 2048 + De 512 a 2048 + + + 128 to 256 + De 128 a 256 + + + 2048+ + Més de 2048 + + + 256+ + Més de 256 + + + 8192+ + Més de 8192 + + + 1024+ + Més de 1024 + + + Video quality depends on your Internet connection bandwidth + La qualitat de vídeo depèn de l'amplada de banda de la vostra connexió a Internet + + + Make a test video call + Fes una trucada de vídeo de prova + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Vídeo + + + + VoicemailSettings + + Form + Format + + + Phone number of your voicemail: + Número de telèfon de la vostra bústia de veu: + + + Please fill in here the information about your voicemail + Escriviu la informació referent a la vostra bústia de veu aquí + + + + Wizard + + Cancel + Cancel·la + + + Finish + Finalitza + + + Next > + Següent > + + + < Back + < Enrere + + + Simple Wizard - Step %1 of %2 + Auxiliar simple - pas %1 de %2 + + + + YahooSettings + + Login: + Entrada: + + + Password: + Contrasenya: + + + Yahoo! Settings + Configuració del Yahoo! + + + Use Yahoo! Japan server + Utilitza el servidor del Yahoo! del Japó + + + Forgot your Yahoo! password? + Heu oblidat la vostra contrasenya del Yahoo!? + + + Get a new Yahoo! Account + Crea un compte nou del Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cs.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cs.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cs.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cs.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3952 @@ + + + + + AIMSettings + + Login: + Přihlašovací jméno: + + + Forgot your AIM password? + Zapomněli jste AIM heslo? + + + Get a new AIM Account + Vytvořit nový AIM účet + + + Password: + Heslo: + + + AIM Settings + Nastavení AIM + + + + AboutWindow + + About + Informace o aplikaci + + + Copyright (C)2008 Mbdsys + + + + Authors + Autoři + + + Close + Zavřít + + + 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. + Tento program je svobodný software; můžete jej redistribuovat a/nebo upravovat za podmínek GNU Genarl Public License jak je zveřejněna Free Software Foundation; buď podle verze 2 této licence nebo (dle vašeho uvážení) podle libovolné pozdější verze. + + + @product@ - About + @product@ - O programu + + + @product@, a voice over Internet phone + @product@, volání přes internet + + + + AcceptDialog + + File Transfer + Přenos souboru + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Přijmout + + + &Cancel + Z&rušit + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Název souboru: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Příchozí soubor</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Upravit profil + + + + AddAccount + + Configure your account: + Nastavit účet: + + + &Next + &Další + + + Need help? + Potřebujete pomoc? + + + You don't have any account ? Click here + Nemáte žádný účet? Klikněte sem + + + &Back + &Zpět + + + Cancel + Zrušit + + + @product@ - Login + @product@ - Přihlášení + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Konfigurujte svůj voip účet</span><br><br><span>Sdělte nám, prosím, je-li váš účet poskytován <br/>@company@ nebo jinou službou</span> + + + @company@ account + @company@ účet + + + Generic SIP account + Generický SIP účet + + + + AddIMContact + + Cancel + Zrušit + + + Contact Type (protocol): + Typ kontaktu (protokol): + + + Contact ID: + ID kontaktu: + + + Account: + Účet: + + + Enable + Povolit + + + Login + Přihlásit se + + + Add + Přidat + + + @product@ - Add a Contact Account + @product@ - Přidat účet kontaktu + + + + AddQuteComAccount + + Password: + Heslo: + + + Need help? + Potřebujete pomoc? + + + &Back + &Zpět + + + Cancel + Zrušit + + + @product@ - Login + @product@ - Přihlášení + + + &Connect + &Připojit + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Login</span><br><br><span>Zadejte svou e-mailovou adresu a<br>heslo</span> + + + Email Address: + E-mailová adresa: + + + Click here if you don't have a @company@ account + Klikněte sem, pokud nemáte @company@ účet + + + Forgot your @company@ password? + Zapomněl jste svůj účet @company@? + + + + AddSIPAccount + + Password: + Heslo: + + + Need help? + Potřebujete pomoc? + + + &Back + &Zpět + + + Cancel + Zrušit + + + @product@ - Login + @product@ - Přihlášení + + + &Connect + &Připojit + + + Activate presence and chat (SIP/SIMPLE) + Aktivovat přítomnost a chat (SIP/SIMPLE) + + + Displayname: + Zobrazit jméno: + + + login / username: + login / uživatelské jméno: + + + Account name: + Název účtu: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + SIP doména: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Nastavení SIP profilu</span><br><br><span>Zadejte informace, které umožní<br/>připojení k vašemu<br/>SIP účtu</span> + + + Advanced + Pokročilé + + + + AdvancedConfigWindow + + Close + Zavřít + + + Preference Name + Preferované jméno + + + Type + Typ + + + Value + Hodnota + + + Default Value + Výchozí hodnota + + + Save + Uložit + + + Status + Stav + + + @product@ - Advanced Configuration + @product@ - Pokročilá konfigurace + + + + AdvancedSettings + + Add + Přidat + + + Advanced Settings + Pokročilá nastavení + + + Advanced Configuration Window + Okno expertního nastavení + + + Automatically answer incoming calls from + Automaticky odpovídat na příchozí hovory od + + + Remove + Odstranit + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Varování: tato část je pouze pro pokročilé uživatele.<br>Chybné nastavení může vést k nefunkčnosti programu. + + + + AppearanceSettings + + Toolbar + Panel nástrojů + + + &Icons && Text + &Ikony && Text + + + Icons &Only + &Pouze ikony + + + &Hidden + &Skrýt + + + Chat Theme + Téma rozhovoru + + + Form + Formulář + + + + AudioSettings + + Reset + Obnovit + + + Audio Codecs + Zvukové kodeky + + + &Input device: + V&stupní zařízení: + + + &Output device: + &Výstupní zařízení: + + + &Ringing device: + Vy&zváněcí zařízení: + + + &Make a test call + &Zkušební volání + + + Test + Vyzkoušet + + + &Advanced >> + &Pokročilé >> + + + &Half Duplex + &Poloduplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulář + + + + AvatarWidget + + Form + Formulář + + + + BrowserSoftUpdateWindow + + Close + Zavřít + + + @product@ - Update available + @product@ - Je dostupná nová verze + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3.: + + + 1st: + 1.: + + + 2nd: + 2.: + + + (+ country code) phone number + (+ kód země) číslo + + + Forward all unanswered calls to message box + Přesměrovat všechny zmeškané hovory do hlasové schránky + + + Disable call forwarding + Zrušit přesměrování hovorů + + + Forward all unanswered calls to following phone numbers: + Přesměrovat všechna zmeškaná volání na následující telefonní čísla: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Například +4214500XXXX (kde +42 je kód země a 14500XXXX je číslo) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Přesměrování volání je aktivní pokud nejste připojeni k @company@, pokud vaše linka je obsazená nebo 20 sekund poté, co nezvedáte příchozí hovor. Můžete konfigurovat až 3 čísla pro přesměrování volání na pevné linky, mobilní telefony nebo hlasovou poštu (pokud je dostupná) + + + + CallToaster + + Incoming Call + Příchozí hovor + + + Message + Zpráva + + + + ChatLogViewer + + Chat History + Historie rozhovoru + + + &Contact + &Kontakt + + + &Tools + &Nástroje + + + &Help + Nápo&věda + + + &Actions + &Akce + + + Main Toolbar + Hlavní nástrojová lišta + + + Call Contact + Volat kontakt + + + Send a File + Poslat soubor + + + createChatConf + createChatConf + + + Show Contact Info + Zobrazit informace o kontaktu + + + blockContact + blockContact + + + &Save History As... + &Uložit historii jako... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Nástroje + + + &Actions + &Akce + + + Main Toolbar + Hlavní nástrojová lišta + + + Call Contact + Volat kontakt + + + Send a File + Poslat soubor + + + Show Contact Info + Zobrazit informace o kontaktu + + + blockContact + blockContact + + + &Save History As... + &Uložit historii jako... + + + @company@ + @company@ + + + MainWindow + MainWindow + + + &Edit + &Upravit + + + Cu&t + &Vyjmout + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopírovat + + + Ctrl+C + Ctrl+C + + + &Paste + &Vložit + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Začít konferenci rozhovoru + + + &Close + &Zavřít + + + Conference + Konference + + + + ChatRoomInviteWidget + + Chat room + Místnost + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Místnost</span></p></body></html> + + + (Conference participants) + (účastnící konference) + + + &Remove + Odeb&rat + + + &Start + &Start + + + Group Name + Název skupiny + + + &Add + Přid&at + + + + ChatToaster + + Message + Zpráva + + + Incoming Chat + Příchozí zpráva + + + + ChatWidget + + Form + Formulář + + + + ConferenceCallWidget + + Cancel + Zrušit + + + Start + Spustit + + + Phone number 2: + Telefonní číslo 2: + + + Phone number 1: + Telefonní číslo 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Vytvořit konferenci + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konference</span><br /><br />Zadejte prosím dvě telefonní čísla </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">nebo @company@ ID kontakty pro </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vytvoření 3-cestné konference.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konference</span><br /><br />Zadejte prosím dvě telefonní čísla </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">nebo @company@ ID kontakty pro </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vytvoření 3-cestné konference.</p> + + + &Add >> + &Přidat >> + + + << &Remove + << &Odebrat + + + Available Contacts + Dostupné kontakty + + + &Start + &Start + + + Cancel + Zrušit + + + + ContactGroupPopupMenu + + Remove Contact Group + Odstranit skupinu kontaktů + + + Rename Contact Group + Přejmenovat skupinu kontaktů + + + Delete group + Smazat skupinu + + + Do you really want to delete this group? + Chcete skutečně smazat tuto skupinu? + + + &Yes + &Ano + + + &No + &Ne + + + + ContactList + + Contact List + Seznam kontaktů + + + goupname + + + + + ContactWidget + + No mobile phone number set + Číslo mobilu nenastaveno + + + No landline phone number set + Číslo pevné linky nenastaveno + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pro úpravu kontaktu klikněte sem</p></body></html> + + + + CrashReport + + Cancel + Zrušit + + + Program Failure + Selhání programu + + + Send + Poslat + + + Optional Information + Volitelné informace + + + Your Mail: + Můj e-mail: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + nedostupné + + + Click here to change your call forward settings + Kliknutím sem změníte nastavení přesměrování + + + Call forward mode: + Režim přesměrování: + + + Purchase call out credits + Objednat kredity + + + Call Forward Method + Metoda přesměrování + + + Call Voice Mail + Volat hlasovou schránku + + + Click here to buy @company@'s credits + Klikněte sem, pokud chcete zakoupit @company@ kredit + + + + DesktopService + + Root Folder + Kořenová složka + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Kliknutím na jednotlivé položky měnící při přejzdu myší barvu zašlete protějšku zvuky. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Kliknutím sem zavoláte do hlasové schránky + + + New Voice Mail: + Nová hlasová schránka: + + + Click here to see missed call(s) + Kliknutím sem zobrazíte zmeškané hovory + + + Missed Call(s): + Zmeškané hovory: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Stáhnout + + + Upload + Odeslat + + + Click here to change your download folder + Kliknutím sem změníte adresář pro stažené soubory + + + Download folder: + Adresář stahování: + + + Clean all items in the list + Vyčistit všechny položky ze seznamu: + + + &Clean + &Vyčistit + + + @product@ - File Transfer Manager + @product@ - Správce přenosu souborů + + + + FileTransferItem + + Cancel + Zrušit + + + Form + Formulář + + + Pause + Pauza + + + <i>From:</i> + <i>Od:</i> + + + + GeneralSettings + + When I double-click on a contact + Po dvojitém kliknutí na kontakt + + + Call cell phone or land line if contact not online + Pokud není kontakt online, mobil nebo pevnou linku + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Nečinný + + + minutes + min + + + Show me as "Away" when I am inactive for: + Nastavit stav "Pryč" při neaktivitě delší než: + + + When I start my computer + Při spuštění počítače + + + Automatically start @product@ + Automaticky spustit @product@ + + + + GoogleTalkSettings + + Login: + Přihlašovací jméno: + + + Password: + Heslo: + + + GoogleTalk Settings + Nastavení GoogleTalk + + + Forgot your GoogleTalk password? + Zapomněli jste své GoogleTalk heslo? + + + Get a new GoogleTalk Account + Vytvořit nový GoogleTalk účet + + + + HttpProxyLoginWindow + + Cancel + Zrušit + + + HTTP Proxy Address: + Adresa HTTP proxy: + + + HTTP Proxy Port Number: + Port HTTP proxy: + + + HTTP Proxy Login: + Přihlašovací jméno HTTP proxy: + + + HTTP Proxy Password: + Heslo HTTP proxy: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP proxy ověřování</span><br><br><span>Vaše lokální HTTP proxy vyžaduje oveření<br>Zadejte své přihlašovací jméno a heslo</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Lokální HTTP Proxy + + + + ICQSettings + + Login: + Přihlašovací jméno: + + + Password: + Heslo: + + + ICQ Settings + Nastavení ICQ + + + Forgot your ICQ password? + Zapomněli jste ICQ heslo? + + + Get a new ICQ Account + Vytvořit nový ICQ účet + + + + IMAccountManager + + Close + Zavřít + + + Login + Přihlásit se + + + Add + Přidat + + + Delete + Smazat + + + Modify + Změnit + + + Protocol + Protokol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Moje IM účty (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Zrušit + + + Save + Uložit + + + IM Account Settings + Nastavení IM účtu + + + + IMContactManager + + Add + Přidat + + + Delete + Smazat + + + Contact Type (protocol) + Typ kontaktu (protokol) + + + Click on the add button below to add a new ID + Kliknutím na tlačítko vložení níže vložíte nové ID + + + Contact ID + ID kontaktu + + + + IMProfileWidget + + Enter your nickname here + Zde napište svou přezdívku + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Přidat instant messaging účet (MSN, AIM, GoogleTalk...) + + + Add an IM account + Přidat IM účet + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikněte sem, pokud chcete změnit svoje zosobnění</p></body></html> + + + + ImageSelector + + Cancel + Zrušit + + + OK + OK + + + Go Up + Přejít nahoru + + + Refresh + Obnovit + + + + JabberSettings + + Login: + Přihlašovací jméno: + + + Password: + Heslo: + + + Jabber Settings + Nastavení Jabberu + + + Connect Server: + Připojit k serveru: + + + <u>Advanced Options</u> + <u>Expertní volby</u> + + + Require TLS + Vyžaduje TLS + + + Port: + Port: + + + Use TLS if available + Použít TSL, pokud je dostupná + + + Allow plaintext authentication over unencrypted streams + Povolit při ověřování čistý text přes nešifrované proudy + + + 5222 + 5222 + + + Force old (port 5223) SSL + Vynutit staré SSL (port 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Není zde váš jazyk obsažen? Víte, že se překladu můžete přímo účastnit v aplikaci Launchpad? + + + More information here. + Více informací najdete zde. + + + + LogAccount + + Password: + Heslo: + + + Need help? + Potřebujete pomoc? + + + Cancel + Zrušit + + + @product@ - Login + @product@ - Přihlášení + + + Account: + Účet: + + + &Connect + &Připojit + + + Forgot your @company@ password? + Zapomněl jste svůj účet @company@? + + + &Modify + Z&měnit + + + Delete + Smazat + + + Configure a &New Profile + Nastavit &nový profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Vybetre prosím dříve použitý profil<br/> nebo vypňte údaje potřebné pro přihlášení se k<br/> @company@ account</span> + + + + MSNSettings + + Login: + Přihlašovací jméno: + + + Password: + Heslo: + + + MSN Settings + MSN nastavení + + + Forgot your MSN password? + Zapomněli jste MSN heslo? + + + Get a new MSN Account + Vytvořit nový MSN účet + + + Use HTTP method + Použít HTTP metodu + + + + MainWindow + + MainWindow + MainWindow + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Přijmout volání + + + Send Chat Message + Poslat zprávu + + + Make Call + Volat + + + Hang Up + Zavěsit + + + + ManageBlockedUsersSettings + + Close + Zavřít + + + Unblock User + Odblokovat uživatele + + + Manage blocked users + Spravovat zablokované uživatele + + + @product@ - Manage blocked users + @product@ - Správa blokovaných uživatelů + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Mám účet @company@ + + + Create a @company@ account + Vytvořit účet @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Pro poslání SMS potřebujete být přihlášen k<br>@company@ účtu a mít @company@ kredit. + + + + NotificationSettings + + Select the events for which a sound should be played. + Zvolte událost, pro kterou se má zvuk přehrát. + + + + NotificationSettingsItem + + Sound file + Zvukový soubor + + + Find a sound file + Vyhledat zvukový soubor + + + Play sound file + Přehrát zvukový soubor + + + Play + Přehrát + + + + NotifyDialog + + File Transfer + Přenos souboru + + + &Ok + &OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stav:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualizace</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Přijmout + + + Status + Stav + + + 00:00:00 + 00:00:00 + + + Nickname + Přezdívka + + + &Reject + &Odmítnout + + + Dialpad + Číselník + + + Audio Smileys + Audio smajlíci + + + Communication is encrypted + Komunikace je šifrovaná + + + + PrivacySettings + + Manage blocked users + Spravovat zablokované uživatele + + + Privacy Rules + Pravidla soukromí + + + Always sign in as "Invisible" (appear offline to all users) + Vždy se přihlásit jako "Neviditelný" (pro ostatní uživatele budete nepřipojení) + + + Allow chats from + Povolir rozhovory s + + + Anyone + Kdokoliv + + + Only people from my contact list + Pouze kontakty ze seznamu + + + Allow calls from + Povolit volání od + + + When I sign into @company@ + Pokud se přihlásím do @company@ + + + + ProfileDetails + + Cancel + Zrušit + + + Save + Uložit + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikněte sem, pokud chcete změnit svoje zosobnění</p></body></html> + + + General + Obecné + + + Network IDs (MSN, Jabber...) + ID sítě (MSN, Jabber...) + + + Advanced >> + Pokročilé >> + + + Fill in all your network Id to stay connected with your contacts + Zadejte všechna ID sítě, abyste zůstali spojeni se všemi kontakty + + + Contact + Kontakt + + + Group: + Skupina: + + + Last Name: + Příjmení: + + + First Name: + Jméno: + + + Details + Detaily + + + Web/blog: + Web/blog: + + + Country: + Země: + + + State: + Stát: + + + City: + Město: + + + Gender: + Pohlaví: + + + Birth Date: + Datum narození: + + + Email: + E-mail: + + + Notes + Poznámky + + + Phone Numbers + Telefonní čísla + + + Home phone + Telefon domů + + + Mobile phone + Mobil + + + dd MMMM yyyy + dd. MMMM yyyy + + + Unknown + Neznámé + + + Male + Muž + + + Female + Žena + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Účty + + + Accounts Settings + Nastavení účtů + + + + QtAddAccount + + Configure your voip account + Nastavte svůj VoIP účet + + + Please tell us if your account is provided<br/>by @company@ or by another service + Řekněte nám prosím, je-li vaš účet poskytován<br/> @company@ nebo jinou službou + + + + QtAddAccountUtils + + Test + Vyzkoušet + + + Audio Test Call + Volání pro vyzkoušení zvuku + + + Video Test Call + Volání pro vyzkoušení obrazu + + + + QtAddQuteComAccount + + Login + Přihlásit se + + + Please enter an email address. + Zadejte e-mailovou adresu. + + + Please enter your email address<br/>and your password + Zadejte e-mailovou adresu<br/>a heslo + + + @product@ - Login + @product@ - spojení + + + + QtAddSIPAccount + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Zadejte informace, které umožní<br> připojení k vašemu SIP účtu + + + Configure your SIP profile + Nastavte svůj SIP profil + + + Your profile name already exists! + Profil s tímto názvem již existuje! + + + + QtAdvancedIMContactManager + + Cancel + Zrušit + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Jste si jist, že chcete smazat tento IM kontakt? + + + + &Delete + &Smazat + + + + QtAdvancedSettings + + Advanced + Pokročilé + + + Advanced Settings + Pokročilá nastavení + + + + QtAppearanceSettings + + Me + + + + Hello + Dobrý den + + + How are you? + Jak se máte? + + + Other + Ostatní + + + I am fine + Mám se dobře + + + Have to go + Musím končit + + + Bye + Nashledanou + + + Appearance + Vzhled + + + Appearance Settings + Nastavení vzhledu + + + + QtAudioSettings + + Advanced + Pokročilé + + + Audio + Zvuk + + + Audio Settings + Nastavení zvuku + + + + QtCallBar + + +(country code) number or nickname + +(kód země) číslo nebo přezdívka + + + + QtCallForwardSettings + + Call Forward + Přesměrování hovoru + + + Call Forward Settings + Nastavení přesměrování hovorů + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Uložit jako + + + + QtChatLogViewer + + Account + + + + Edit Contact + Upravit kontakt + + + + QtChatTabWidget + + Close chat + Ukončit rozhovor + + + + QtChatWidget + + %1 is connected. + %1 je připojen. + + + %1 is disconnected. + %1 je odpojen. + + + send + odeslat + + + Your file can not be sent: your contact must be connected on the @company@ network. + Váš soubor nemůže být poslán: váš kontakt musí být připojen do sítě @company@. + + + Your contact wishes to send a file with @company@. + Váš kontakt vám chce poslat soubor prostřednictvím @company@. + + + Go to %1 to install it + Pro nainstalování spusťte k %1 + + + %1 has joined the chat + %1 se připojil k rozhovoru + + + %1 has left the chat + %1 opustil rozhovor + + + + QtChatWindow + + Edit Contact + Upravit kontakt + + + @product@ Chat + @product@ rozhovor + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + SIP volání + + + Call land line + Volání na pevnou linku + + + Call Mobile + Volání na mobil + + + Call @company@ + Volat @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Nyní můžete informovat prvního účastníka, že se zapojil do konferenčního volání.</b><br><br>Pak klikněte na tlačítko níže. První účastník bude pozdržen a spustí se volání druhému účastníkovi.<br> + + + Hold first interlocutor and call second one + Pozdržet první hovor a začít druhý + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Nyní můžete informovat druhého účastníka, že se zapojil do konferenčního volání.</b><br><br>K zahájení konference klikněte na tlačítko níže. + + + Start Conference + Začít konferenci + + + @product@ - Proceed Conference + @product@ - pokračovat konferenci + + + + QtContactList + + &Yes + &Ano + + + &No + &Ne + + + Merge %1 with %2? + Sloučit %1 s %2? + + + @product@ - Merge Contacts + @product@ - spojit kontakty + + + + QtContactManager + + &Yes + &Ano + + + &No + &Ne + + + Home phone + Telefon domů + + + Mobile phone + Mobil + + + @product@ + @product@ + + + Edit Contact + Upravit kontakt + + + Do you really want to delete this contact? + Chcete skutečně smazat tento kontakt? + + + Start chat + Zahájit rozhovor + + + Delete contact + Smazat kontakt + + + Call + Zavolat + + + Free call + + + + Work phone + Telefon do práce + + + Send SMS + Poslat SMS + + + Edit contact + Upravit kontakt + + + Block contact + Blokovat kontakt + + + Invite to conference + Pozvat do konference + + + Go to website + Otevřít webovou stránku + + + Send file + Poslat soubor + + + Forward to mobile phone + Přeposlat na mobil + + + + QtContactWidget + + No mobile phone number set + Číslo mobilu nenastaveno + + + No landline phone number set + Číslo pevné linky nenastaveno + + + Click here to call + Kliknutím sem zahájíte volání + + + Click here to set a phone number + Kliknutím se nastavíte telefonní číslo + + + Click here to edit the contact + Kliknutím sem upravíte kontakt + + + Click here to send a SMS + Kliknutím sem odešlete SMS + + + Click here to start a chat + Kliknutím zde zahájíte rozhovor + + + Click here to start a free call + Kliknutím sem zahájíte volání zdarma + + + Click here to send a file + Kliknutím sem odešlete soubor + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Chcete volat svou hlasovou schránku? + + + @product@ - Voice Mail + @product@ - Hlasová pošta + + + + QtFileTransfer + + &Yes + &Ano + + + &No + &Ne + + + Choose a directory + Zvolte adresář + + + Overwrite File? + Přepsat soubor? + + + A file called %1 already exists.Do you want to overwrite it? + Soubor %1 již existuje. Chcete jej přepsat? + + + File size error + Chybná velikost souboru + + + %1 exceeds the maximum authorized size. + %1 dosahuje maximální velikosti. + + + %1 has size 0. + %1 má velikost 0. + + + %1 is a directory. + %1 je adresář. + + + You can not send a directory. + Adresář nelze odeslat. + + + %1 is a shortcut. + %1 je odkaz. + + + You can not send a shortcut. + Odkaz nelze odeslat. + + + All Files (*.* *) + Všechny soubory (*.* *) + + + Please upgrade<br> your @product@ + Aktualizujte prosím<br> vaše @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Řekněte vašemu kontaktu,<br> aby aktualizoval<br> svoje @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Soubor nemohl být přijat: musíte aktualizovat svoje @product@, abyste jej mohl(a) přijmout. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + vám zkouší zaslat soubor, ale jeho @product@ musí být aktualizováno, abyste jej mohl přijmout. Řekněte mu, aby si stáhnul novou verzi. + + + + QtFileTransferItem + + Cancel + Zrušit + + + Remove + Odstranit + + + Pause + Pauza + + + Starting + Spouští se + + + From: + Od: + + + To: + Komu: + + + Open + Otevřít + + + Resume + Obnovit + + + Waiting for anwser... + Čeká se na odpověď... + + + Done + Hotovo + + + Failed + Došlo k selhání + + + Paused + Pozastaveno + + + Paused by peer + Pozastaveno protějškem + + + Cancelled + Zrušeno + + + Cancelled by peer + Zrušeno protějškem + + + Downloading... + Stahuji... + + + Uploading... + Odesílám... + + + Waiting for peer... + Čeká se na protějšek... + + + An error occured during the file transfer + Při přenosu souboru došlo k chybě + + + This may be caused by : + To může být zapřičiněno: + + + Your @product@ is not up to date. Please download the latest version on + Váše @product@ není aktuální. Stáhněte si prosím poslední verzi na + + + The @company@ network may be temporarily unavailable. Please try later. + Síť @company@ je zřejmě dočasně nedostupná. Zkuste to prosím později. + + + + QtGeneralSettings + + General + Obecné + + + General Settings + Obecná nastavení + + + + QtHistory + + Incoming call + Příchozí volání + + + Outgoing call + Odchozí volání + + + Missed call + Zameškaný hovor + + + Rejected call + Odmítnutý hovor + + + Outgoing SMS + Odeslané SMS + + + Do you want to call %1? + Chcete volat %1? + + + Chat session + Rozhovor + + + @product@ - Call History + @product@ - Historie volání + + + Type + Typ + + + Name/ID + Jméno/ID + + + Date + Datum + + + Duration + Trvání + + + + QtHistoryWidget + + Erase this entry + Smazat tuto položku + + + Open in SMS window + Otevřít v SMS okně + + + Call this peer + Volat tento protějšek + + + Show chat log + Zobrazit log rozhovoru + + + + QtIMAccountManager + + Cancel + Zrušit + + + @product@ + @product@ + + + &Delete + &Smazat + + + Are sure you want to delete this account? + + Jste si jist(a), že chcete smazat tento účet? + + + + + QtIMAccountMonitor + + Disconnected + Odpojen + + + Error: %1 + Chyba: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Online + + + Invisible + Neviditelný + + + Away + Pryč + + + Do not disturb + Nerušit + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Zadejte přihlašovací jméno + + + + QtIMAccountPresenceMenuManager + + Cancel + Zrušit + + + @product@ + @product@ + + + &Delete + &Smazat + + + Online + Online + + + Invisible + Neviditelný + + + Away + Pryč + + + Do Not Disturb + Nerušit + + + Disconnect + Odpojit + + + Delete Account + Smazat účet + + + Are sure you want to delete the account <b>%1</b>? + Jste si jistí, že chcete smazat účet <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Upravit profil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Jazyk + + + Language Settings + Nastavení jazyka + + + + QtLogAccount + + Invalid account + Chybný účet + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Vyberte prosím dříve použitý účet<br/> nebo vyplňte informace potřebné k připojení se k<br/> @company@ account + + + Warning + Pozor + + + Do you really want to delete this profile + Opravdu chcete smazat tento profil? + + + Yes + Ano + + + No + Ne + + + + QtLoginDialog + + @product@ - Login + @product@ - spojení + + + + QtNotificationSettings + + Incoming call (ringtone) + Příchozí hovor (vyzvánění) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Volání ukončeno (zvuk zavěšení) + + + Incoming chat + Příchozí rozhovor + + + IM account connected + IM účet připojen + + + IM account disconnected + IM účet odpojen + + + Contact online + Kontakt připojen + + + Notifications + Upozorňování + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Vybrat zvukový soubor + + + Sounds + Zvuky + + + + QtPhoneCall + + Status + Stav + + + Incoming Call + Příchozí hovor + + + Resume + Obnovit + + + Hang-up + Zavěsit + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Chyba + + + Talking + Hovor + + + Dialing + Vytáčím + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Vyzváním + + + Redirected + Přesměrováno + + + Initialization... + Inicializace... + + + Closed + Ukončeno + + + Hold + Pozdržet + + + Add contact + Přidat kontakt + + + Ca&ncel + Z&rušit + + + Talking - Conference + Hovořící - konference + + + Add a Contact + Přidat kontakt + + + + QtPresenceMenuManager + + Online + Online + + + Invisible + Neviditelný + + + Away + Pryč + + + Do Not Disturb + Nerušit + + + Log off + Odhlásit + + + + QtPrivacySettings + + Privacy + Soukromí + + + Privacy Settings + Nastavení soukromí + + + + QtProfileBar + + Click here to change your status + Kliknutím sem změníte svůj stav + + + active + aktiva + + + voicemail + hlasová schránka + + + inactive + neaktivní + + + unauthorized + neautorizován + + + Set global presence to: + Nastavit globální stav na: + + + Voice mail + Hlasová pošta + + + + QtProfileDetails + + Advanced >> + Pokročilé >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Kontakt musí náležet do skupiny. Nastavte skupinu. + + + << Simple + << Jednoduché + + + Select your avatar + Zvolte svého avatara + + + @product@ - No Group Selected + @product@ - Není vybrána žádná skupina + + + @company@ Avatars + @company@ zosobnění + + + + QtQuteCom + + &Cancel + Z&rušit + + + Conference + Konference + + + Call + Zavolat + + + Account + + + + Add a Contact + Přidat kontakt + + + You have unfinished call(s). + Máte neukončená volání. + + + @product@ - Warning + @product@ - varování + + + Home + Domů + + + Are you sure you want to exit the application? + Jste si jistí, že chcete ukončit aplikaci? + + + &Exit + &Ukončit + + + @product@ - Call Error + @product@ - Chyba volání + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Pokročilé + + + General + Obecné + + + Accounts + Účty + + + Audio + Zvuk + + + Call Forward + Přesměrování hovoru + + + Language + Jazyk + + + Privacy + Soukromí + + + Video + Video + + + Voicemail + Hlasová schránka + + + security + bezpečnost + + + Notifications + Upozorňování + + + + QtRenameGroup + + Bad group name + Chybný název skupiny + + + Group name cannot be empty + Název skupiny nesmí být prázdný + + + + QtSecuritySettings + + Security + Bezpečnost + + + Security Settings + Nastavení bezpečnosti + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Zadejte telefonní číslo. + + + Do you want to continue? + Chcete pokračovat? + + + Your SMS has not been sent + Vaše SMS nebyla odeslána + + + Your SMS has been sent + Vaše SMS byla odeslána + + + Your message is too long. +This will send + Vaše zpráva je příliš dlouhá. +Bude poslána + + + SMS. + + SMS + + + + You can not send an empty message. + Nelze odeslat prázdnou zprávu + + + @company@ SMS service + @company@ SMS služba + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - aktualizace se nezdařila + + + @product@ update failed to start: try to update @product@ manually + @product@ aktualizace nezačala: zkuste provést aktualizaci @product@ ručně + + + + QtStatusBar + + Not connected + Nepřipojeno + + + Register done + Zaregistrován + + + Unregister done + Odregistrován + + + Connecting + Navazuji spojení + + + Output volume is muted + Výstup je ztlumen + + + Output volume is 0 + Výstupní hlasitost je 0 + + + Click to adjust output volume + Klikněte pro přizpůsobení výstupní hlasitosti + + + Input volume is muted + Vstup je ztlumen + + + Input volume is 0 + Vstupní hlasitost je 0 + + + Click to adjust input volume + Klikněte pro přizpůsobení vstupní hlasitosti + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Stav + + + @product@ + @product@ + + + Call SIP + SIP volání + + + Call land line + Volání na pevnou linku + + + Call Mobile + Volání na mobil + + + Call @company@ + Volat @company@ + + + Call + Zavolat + + + Send SMS + Poslat SMS + + + Online + Online + + + Invisible + Neviditelný + + + Away + Pryč + + + Do Not Disturb + Nerušit + + + Internet Connection Error + Připojení k internetu: chyba + + + Offline + Nepřipojen + + + Connecting... + Připojuji se... + + + Send a SMS + Poslat SMS + + + Start a chat + Začít rozhovor + + + Place Call + Volání domů + + + Send File + Poslat soubor + + + Multiple Status + Vícečetný stav + + + Unknown Status + Neznámý stav + + + Quit @product@ + Ukončit @product@ + + + + QtToolBar + + &Cancel + Z&rušit + + + @product@ - Proceed Conference + @product@ - pokračovat konferenci + + + Edit My Profile + Upravit profil + + + Add a Contact + Přidat kontakt + + + Hide Unavailable Contacts + Skrýt nedostupné kontakty + + + Show Unavailable Contacts + Zobrazit nedostupné kontakty + + + Hide Groups + Skrýt skupiny + + + Show Groups + Zobrazit skupiny + + + You have unfinished call(s). + Máte neukončená volání. + + + Are you sure you want to log off? + Jste si jistí, že se chcete odhlásit? + + + &Log Off + &Odhlásit + + + Disable &Video Calls + Zakázat &video volání + + + Enable &Video Calls + Povolit &video volání + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Konferenci nelze zahájit, pokud máte jiná aktivní volání.</b><br><br>Ukončete všechny hovory a opakujte. + + + @product@ - Warning + @product@ - varování + + + Log &Off... + &Odhlásit... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Seznam kontaktů + + + + QtUserProfile + + Edit Contact + Upravit kontakt + + + &Authorize + &Autorizovat + + + &Block + &Blokovat + + + Network error. + Chyba sítě. + + + @product@ - Authorization Request + @product@ - Autorizační požadavek + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Během otevírání vašeho profilu se vyskytl problém. +Byla použita poslední záloha vašeho profilu: +nejnovější změny mohu být ztraceny. + + + Your profile could not be loaded. +Choose another profile or create a new one. + Nepodařilo se otevřít váš profil. +Vyberte jiný profil nebo vytvořte nový. + + + Wrong email/password entered + Zadán špatný e-mail nebo heslo + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normální + + + Good + Dobrá + + + Very good + Velmi dobrá + + + Excellent + Vynikající + + + Video Settings + Nastavení videa + + + + QtVoicemailSettings + + Voicemail + Hlasová schránka + + + Voicemail Settings + Nastavení hlasové schránky + + + + QtWebDirectory + + @product@ - Directory + @product@ - Adresář + + + + QuteComConfigDialog + + Cancel + Zrušit + + + Save + Uložit + + + Title + Název + + + @product@ - Configuration + @product@ - nastavení + + + + QuteComWindow + + &Accept + &Přijmout + + + &Hidden + &Skrýt + + + &Tools + &Nástroje + + + &Help + Nápo&věda + + + &Actions + &Akce + + + @company@ + @company@ + + + &Close + &Zavřít + + + Dialpad + Číselník + + + @product@ + @product@ + + + Start Conference + Začít konferenci + + + Send SMS + Poslat SMS + + + Contacts + Kontakty + + + History + Historie + + + Clear &History + Vyčistit &historii + + + ToolBar + Lišta nástrojů + + + Show/Hide Unavailable &Contacts + Zobrazit/skrýt nedostupné &kontakty + + + &Chat Sessions + &Rozhovory + + + &All + &Všechny + + + &HangUp + &Zavěsit + + + &Hold/Resume + &Pozdržet/pokračovat + + + Show/Hide &Groups + Zobrazit/skrýt &skupiny + + + &Outgoing Calls + &Odchozí hovory + + + &Incoming Calls + &Příchozí hovory + + + &Missed Calls + &Zameškané hovory + + + Enable/Disable &Video Calls + Povolit/zakázat &video volání + + + Short Text &Messages (SMS) + &SMS + + + Rejected Calls + Odmítnuté hovory + + + &Contacts + &Kontakty + + + &About... + &O aplikaci + + + Add &Contact... + Přidat &kontakt... + + + &Configuration... + &Nastavení... + + + Send SMS... + Poslat SMS... + + + View My &Profile... + Zobrazit můj &profil... + + + View My Profile + Zobrazit můj profil + + + Start &Conference... + Začít &konferenci... + + + &Find Contact... + &Najít kontakt + + + Log &Off... + &Odhlásit... + + + Log Off + Odhlásit + + + Show &Chat Window + Zobrazit &okno rozhovoru + + + Show Chat Window + Zobrazit okno rozhovoru + + + Show &File Transfer + Zobrazit &transfer souboru + + + Add Contact + Přidat kontakt + + + View My @company@ Account... + Prohlížet můj účet @company@ ... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ &Fórum... + + + @company@ &Wiki/FAQ... + @company@ &Wiki/FAQ... + + + Learn more about @company@ Services... + Zjistit více o službách @company@ ... + + + Search + Hledat + + + Find @company@ Contacts + Hledat @company@ kontakty + + + &Quit + &Ukončit + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Text pod ikonami + + + &Icons Only + Pouze &ikony + + + Add + Přidat + + + SMS + SMS + + + Conference + Konference + + + + RenameGroupDialog + + Cancel + Zrušit + + + OK + OK + + + Enter the new group name: + Zadejte název nové skupiny. + + + @product@ - Rename Contact Group + @product@ - Přejmenování skupiny kontaktů + + + + SecuritySettings + + Form + Formulář + + + Enable call encryption + Povolit šifrování hovorů + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ může šifrovat volání použitím AES 128-bits šifrovacího systému a systému Diffie-Hellman pro výměnu klíčů. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Aktualizovat profil + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Poslat + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Kliknutím sem vložíte telefonní číslo + + + 0 /160 + 0/160 + + + Enter your signature here + Zde zadejte podpis + + + Signature: + Podpis: + + + Phone number(s): + Telefonní číslo/a: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Zde zadejte telefonní číslo.<br> K oddělení více čísel můžete použijte jeden ze znaků &;, + + + + SoftUpdateWindow + + Cancel + Zrušit + + + @product@ - Downloading update + @product@ - Stažení aktualizace + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulář + + + + VideoSettings + + Normal + Normální + + + Good + Dobrá + + + Very good + Velmi dobrá + + + Excellent + Vynikající + + + Enable video + Povolit video + + + Webcam Selection + Výběr kamery + + + Webcam device: + Zařízení kamery: + + + Webcam Preview + Náhled kamery + + + Connection Type + Typ připojení + + + Video quality + Kvalita obrazu + + + Down (kbit/s) + Stahování (kbit/s) + + + Up (kbit/s) + odesílání (kbit/s) + + + 0 to 512 + 0 až 512 + + + 0 to 128 + 0 až 128 + + + 512 to 2048 + 512 až 2048 + + + 128 to 256 + 128 až 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Kvalita obrazu závisí na rychlosti vašeho připojení + + + Make a test video call + Testovací video hovor + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Formulář + + + Phone number of your voicemail: + Číslo hlasové schránky: + + + Please fill in here the information about your voicemail + Zde vyplňte údaje o své hlasové schránce + + + + Wizard + + Cancel + Zrušit + + + Finish + Dokončit + + + Next > + Další > + + + < Back + < Zpět + + + Simple Wizard - Step %1 of %2 + Jednoduchý průvodce - krok %1/%2 + + + + YahooSettings + + Login: + Přihlašovací jméno: + + + Password: + Heslo: + + + Yahoo! Settings + Yahoo! nastavení + + + Use Yahoo! Japan server + Použít japonský Yahoo! server + + + Forgot your Yahoo! password? + Zapomněli jste Yahoo! heslo? + + + Get a new Yahoo! Account + Vytvořit nový Yahoo! účet + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cy.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cy.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cy.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_cy.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4600 @@ + + + + + AIMSettings + + Login: + Mewngofnodi: + + + Forgot your AIM password? + Wedi anghofio eich cyfrinair AIM? + + + Get a new AIM Account + Estyn cyfrif AIM Newydd + + + Password: + Cyfrinair: + + + AIM Settings + Gosodiadau AIM + + + + AboutWindow + + About + Ynghylch + + + Copyright (C)2008 Mbdsys + + + + Authors + Awduron + + + Close + Cau + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Trosglwyddo Ffeiliau + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Derbyn + + + &Cancel + &Diddymu + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cyswllt:: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enw ffeil: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Ffeil i mewn</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Golygu Proffil + + + + AddAccount + + Configure your account: + Ffurfweddu eich cyfrif + + + &Next + &Nesaf + + + Need help? + Angen cymorth? + + + You don't have any account ? Click here + Does gennych chi ddim cyfrif? Cliciwch yma? + + + &Back + &Nôl + + + Cancel + Diddymu + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Diddymu + + + Contact Type (protocol): + Math o Gontract (protocol) + + + Contact ID: + Enw Cyswllt + + + Account: + Cyfrif + + + Enable + Galluogi + + + Login + Mewngofnodi + + + Add + Ychwanegu + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Cyfrinair: + + + Need help? + Angen cymorth? + + + &Back + &Nôl + + + Cancel + Diddymu + + + @product@ - Login + + + + + &Connect + &Cysylltu + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Mewngofnodi</span><br><br><span>Rhowch eich cyfeiriad e-bost a<br>password</span> + + + Email Address: + Cyfeiriad e-bost: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Cyfrinair: + + + Need help? + Angen cymorth? + + + &Back + &Nôl + + + Cancel + Diddymu + + + @product@ - Login + + + + + &Connect + &Cysylltu + + + Activate presence and chat (SIP/SIMPLE) + Gweithredu'r presenoldeb a sgwrs (SIP/SIMPLE) + + + Displayname: + Enwdangos + + + login / username: + mewngofnodi / enw defnyddiwr + + + Account name: + Enw cyfrif + + + Proxy: + Dirprwy: + + + : + : + + + Server: + Gweinydd: + + + SIP Domain / Realm: + Parth / Teyrnas SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Ffurfweddu eich proffil SIP</span><br><br><span>Rhowch y wybodaeth fydd yn<br/>caniatáu i'ch ffôn meddal gysylltu â'ch<br/>cyfrif SIP</span> + + + Advanced + Uwch + + + + AdvancedConfigWindow + + Close + Cau + + + Preference Name + Dewis Enw + + + Type + Math + + + Value + Gwerth + + + Default Value + Gwerth Rhagosodedig + + + Save + Cadw + + + Status + Statws + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Ychwanegu + + + Advanced Settings + Gosodiadau Uwch + + + Advanced Configuration Window + Ffenestr Ffurfweddu Uwch + + + Automatically answer incoming calls from + Ateb yn awtomatig galwadau o + + + Remove + Tynnu + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Rhybudd, mae'r rhan yma ar gyfer defnyddwyr uwch.<br>Gall unrhyw gamgymeriad beri difrod i'r feddalwedd.. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Ffurflen + + + + AudioSettings + + Reset + Ailosod + + + Audio Codecs + Codecs Sain + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Ffurflen + + + + AvatarWidget + + Form + Ffurflen + + + + BrowserSoftUpdateWindow + + Close + Cau + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + Pob neges heb ei hateb ymlaen i'r blwch ateb + + + Disable call forwarding + Anablu galwad ymlaen + + + Forward all unanswered calls to following phone numbers: + Pob neges heb ei hateb ymlaen i'r rhifau ffôn canlynol: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + Ffurflen + + + + ConferenceCallWidget + + Cancel + Diddymu + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Diddymu + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Diddymu + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Diddymu + + + Form + Ffurflen + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Mewngofnodi: + + + Password: + Cyfrinair: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Diddymu + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Mewngofnodi: + + + Password: + Cyfrinair: + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Cau + + + Login + Mewngofnodi + + + Add + Ychwanegu + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Diddymu + + + Save + Cadw + + + IM Account Settings + + + + + + IMContactManager + + Add + Ychwanegu + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Diddymu + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Mewngofnodi: + + + Password: + Cyfrinair: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Cyfrinair: + + + Need help? + Angen cymorth? + + + Cancel + Diddymu + + + Delete + + + + + @product@ - Login + + + + + Account: + Cyfrif + + + &Connect + &Cysylltu + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Mewngofnodi: + + + Password: + Cyfrinair: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Cau + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Trosglwyddo Ffeiliau + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Derbyn + + + Status + Statws + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Diddymu + + + Save + Cadw + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + Uwch >> + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Mewngofnodi + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Diddymu + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + Uwch + + + Advanced Settings + Gosodiadau Uwch + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Uwch + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Diddymu + + + Remove + Tynnu + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Math + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Diddymu + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Diddymu + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Statws + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Uwch >> + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Diddymu + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Uwch + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Statws + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Diddymu + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Diddymu + + + Save + Cadw + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Derbyn + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Ychwanegu + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Diddymu + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Ffurflen + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Diddymu + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Ffurflen + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Ffurflen + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Diddymu + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Mewngofnodi: + + + Password: + Cyfrinair: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_da.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_da.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_da.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_da.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4654 @@ + + + + + AIMSettings + + Login: + Brugernavn: + + + Forgot your AIM password? + Glemt dit AIM kodeord? + + + Get a new AIM Account + Få en ny AIM konto + + + Password: + Kodeord: + + + AIM Settings + + + + + + AboutWindow + + About + Om... + + + Copyright (C)2008 Mbdsys + + + + Authors + Forfattere + + + Close + Luk + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Filoverførsel + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Acceptér + + + &Cancel + &Annuller + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + &Rediger min profil + + + + AddAccount + + Configure your account: + Konfigurer din konto + + + &Next + &Næste + + + Need help? + Brug for hjælp? + + + You don't have any account ? Click here + Ingen konto? Klik her + + + &Back + &Tilbage + + + Cancel + Annuller + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Annuller + + + Contact Type (protocol): + Kontakt-type (protokol): + + + Contact ID: + Kontakt-ID: + + + Account: + Konto: + + + Enable + Aktiver + + + Login + Login + + + Add + Tilføj + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Kodeord: + + + Need help? + Brug for hjælp? + + + &Back + &Tilbage + + + Cancel + Annuller + + + @product@ - Login + + + + + &Connect + &Forbind + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Kodeord: + + + Need help? + Brug for hjælp? + + + &Back + &Tilbage + + + Cancel + Annuller + + + @product@ - Login + + + + + &Connect + &Forbind + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Luk + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Tilføj + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Luk + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Annuller + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Annuller + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Annuller + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Annuller + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Brugernavn: + + + Password: + Kodeord: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Annuller + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Brugernavn: + + + Password: + Kodeord: + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Luk + + + Login + Login + + + Add + Tilføj + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Annuller + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + Tilføj + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Annuller + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Brugernavn: + + + Password: + Kodeord: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Kodeord: + + + Need help? + Brug for hjælp? + + + Cancel + Annuller + + + Delete + + + + + @product@ - Login + + + + + Account: + Konto: + + + &Connect + &Forbind + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Brugernavn: + + + Password: + Kodeord: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Luk + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Filoverførsel + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Acceptér + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Annuller + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Login + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Annuller + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Annuller + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Annuller + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Annuller + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Annuller + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Annuller + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Annuller + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Acceptér + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Tilføj + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Annuller + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Annuller + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Annuller + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Brugernavn: + + + Password: + Kodeord: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_de.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_de.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_de.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_de.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3957 @@ + + + + + AIMSettings + + Login: + Benutzername: + + + Forgot your AIM password? + AIM-Passwort vergessen? + + + Get a new AIM Account + Einen neuen AIM-Zugang erstellen + + + Password: + Passwort: + + + AIM Settings + AIM-Einstellungen + + + + AboutWindow + + About + Über QuteCom + + + Copyright (C)2008 Mbdsys + + + + Authors + Entwickler + + + Close + Schließen + + + 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. + Dieses Programm ist freie Software. Sie können es unter den +Bedingungen der GNU General Public License, wie von der +Free Software Foundation veröffentlicht, weitergeben und/oder +modifizieren, entweder gemäß Version 2 der Lizenz oder +(nach Ihrer Option) jeder späteren Version. + + + @product@ - About + @product@ - Über + + + @product@, a voice over Internet phone + @product@, ein Voice over Internet Phone + + + + AcceptDialog + + File Transfer + Dateitransfer + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Annehmen + + + &Cancel + &Abbrechen + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dateiname: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Eingehende Datei</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Mein Profil ändern + + + + AddAccount + + Configure your account: + Zugangseinstellungen: + + + &Next + &Weiter + + + Need help? + Brauchst du Hilfe? + + + You don't have any account ? Click here + Du hast noch keinen Zugang? Klicke hier. + + + &Back + &Zurück + + + Cancel + Abbrechen + + + @product@ - Login + @product@ - Anmeldung + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">VoIP-Zugang konfigurieren</span><br><br><span>Bitte teile uns mit, ob dein Zugang von <br/>@company@ oder einem anderen Anbieter zur Verfügung gestellt wird</span> + + + @company@ account + @company@-Zugang + + + Generic SIP account + Generischer SIP-Zugang + + + + AddIMContact + + Cancel + Abbrechen + + + Contact Type (protocol): + Kontaktart (Protokoll): + + + Contact ID: + Kontakt-ID: + + + Account: + Zugang: + + + Enable + Aktivieren + + + Login + Anmeldung + + + Add + Hinzufügen + + + @product@ - Add a Contact Account + @product@ - Kontakt-Zugang hinzufügen + + + + AddQuteComAccount + + Password: + Passwort: + + + Need help? + Brauchst du Hilfe? + + + &Back + &Zurück + + + Cancel + Abbrechen + + + @product@ - Login + @product@ - Anmeldung + + + &Connect + &Verbinden + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Anmeldung</span><br><br><span>Bitte gib deine E-Mail Adresse und dein Passwort ein</span> + + + Email Address: + E-Mail-Adresse + + + Click here if you don't have a @company@ account + Klicke hier, wenn du noch keinen @company@-Zugang hast + + + Forgot your @company@ password? + @company@ Passwort vergessen? + + + + AddSIPAccount + + Password: + Passwort: + + + Need help? + Brauchst du Hilfe? + + + &Back + &Zurück + + + Cancel + Abbrechen + + + @product@ - Login + @product@ - Anmeldung + + + &Connect + &Verbinden + + + Activate presence and chat (SIP/SIMPLE) + Anwesenheit und Chat aktivieren (SIP/SIMPLE) + + + Displayname: + angezeigter Name: + + + login / username: + Kennung / Benutzername: + + + Account name: + Zugangsbezeichnung: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + SIP-Domäne / -Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Einstellungen deines SIP-Pofils</span><br><br><span>Bitte gib die nötigen Informationen an,<br/> welche es deinem Softphone ermöglichen, sich mit deinem SIP-Zugang<br/>zu verbinden.</span> + + + Advanced + Erweitert + + + + AdvancedConfigWindow + + Close + Schließen + + + Preference Name + Einstellungsname + + + Type + Typ + + + Value + Wert + + + Default Value + Standardwert + + + Save + Speichern + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - Erweiterte-Einstellungen + + + + AdvancedSettings + + Add + Hinzufügen + + + Advanced Settings + Erweiterte-Einstellungen + + + Advanced Configuration Window + Erweiterte-Einstellungen öffnen + + + Automatically answer incoming calls from + Beantworte automatisch eingehende Anrufe von + + + Remove + Entfernen + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Achtung, dieser Abschnitt ist für erfahrene Anwender.<br />Falsche Einstellungen könnten die Software schwer beschädigen. + + + + AppearanceSettings + + Toolbar + Werkzeugleiste + + + &Icons && Text + &Icons && Text + + + Icons &Only + Icons &alleine + + + &Hidden + &Versteckt + + + Chat Theme + Chat Theme + + + Form + Eingabemaske + + + + AudioSettings + + Reset + Zurücksetzen + + + Audio Codecs + Audio-Codecs + + + &Input device: + &Aufnahmegerät: + + + &Output device: + &Wiedergabegerät: + + + &Ringing device: + &Rufsignalisierungsgerät: + + + &Make a test call + &Testanruf ausführen + + + Test + Test + + + &Advanced >> + &Erweitert >> + + + &Half Duplex + &Halbduplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Eingabemaske + + + + AvatarWidget + + Form + Eingabemaske + + + + BrowserSoftUpdateWindow + + Close + Schließen + + + @product@ - Update available + @product@ - Update verfügbar + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Dritte: + + + 1st: + Erste: + + + 2nd: + Zweite: + + + (+ country code) phone number + (+ Ländercode) Telefonnummer + + + Forward all unanswered calls to message box + Alle nicht angenommenen Anrufe zum Anrufbeantworter weiterleiten + + + Disable call forwarding + Anrufweiterleitung ausschalten + + + Forward all unanswered calls to following phone numbers: + Alle nicht angenommenen Anrufe zu den folgenden Telefonnummern weiterleiten: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Zum Beispiel +3314500XXXX (+33 ist der Ländercode und 14500XXXX ist die Telefonnummer) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Die Anrufweiterleitung ist aktiv, wenn keine Verbindung mit @company@ besteht, wenn die Leitung besetzt ist oder nach 20 Sekunden bei Nichtannahme eines Anrufes. Du kannst bis zu drei Anrufweiterleitungen zu Festnetzanschlüssen, Mobiltelefonen oder einem Voicemail-System (sofern verfügbar) festlegen. + + + + CallToaster + + Incoming Call + Eingehender Anruf + + + Message + Nachricht + + + + ChatLogViewer + + Chat History + Chatverlauf + + + &Contact + &Kontakt + + + &Tools + &Extras + + + &Help + &Hilfe + + + &Actions + &Aktionen + + + Main Toolbar + Haupt-Symbolleiste + + + Call Contact + Aktuellen Kontakt anrufen + + + Send a File + Eine Datei senden + + + createChatConf + Chat.Konferenz erstellen + + + Show Contact Info + Informationen über den aktuellen Kontakt anzeigen + + + blockContact + Kontakt blockieren + + + &Save History As... + &Verlauf speichern als... + + + actionRestartChat + Chat neu starten + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Extras + + + &Actions + &Aktionen + + + Main Toolbar + Haupt-Symbolleiste + + + Call Contact + Aktuellen Kontakt anrufen + + + Send a File + Eine Datei senden + + + Show Contact Info + Informationen über den aktuellen Kontakt anzeigen + + + blockContact + Kontakt blockieren + + + &Save History As... + &Verlauf speichern als... + + + @company@ + @company@ + + + MainWindow + Hauptfenster + + + &Edit + &Bearbeiten + + + Cu&t + &Ausschneiden + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopieren + + + Ctrl+C + Ctrl+C + + + &Paste + &Einfügen + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Chat-Konferenz starten + + + &Close + &Schließen + + + Conference + Konferenz + + + + ChatRoomInviteWidget + + Chat room + Chatraum + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chatraum</span></p></body></html> + + + (Conference participants) + (Konferenzteilnehmer) + + + &Remove + &Entfernen + + + &Start + &Start + + + Group Name + Gruppenname + + + &Add + &Hinzufügen + + + + ChatToaster + + Message + Nachricht + + + Incoming Chat + Eingehender Chat + + + + ChatWidget + + Form + Eingabemaske + + + + ConferenceCallWidget + + Cancel + Abbrechen + + + Start + Starten + + + Phone number 2: + Telefonnummer 2: + + + Phone number 1: + Telefonnummer 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Konferenz starten + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Bitte gib zwei Telefonnummern </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">oder @company@-Kontakt-IDsein, um</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eine Dreierkonferenz zu starten.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Bitte gib zwei Telefonnummern </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">oder @company@-Kontakt-IDsein, um</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eine Dreierkonferenz zu starten.</p> + + + &Add >> + &Hinzufügen >> + + + << &Remove + << &Entfernen + + + Available Contacts + Verfügbare Kontakte + + + &Start + &Start + + + Cancel + Abbrechen + + + + ContactGroupPopupMenu + + Remove Contact Group + Kontaktgruppe entfernen + + + Rename Contact Group + Kontaktgruppe umbenennen + + + Delete group + Gruppe löschen + + + Do you really want to delete this group? + Willst Du diese Gruppe wirklich löschen? + + + &Yes + &Ja + + + &No + &Nein + + + + ContactList + + Contact List + Kontaktliste + + + goupname + + + + + ContactWidget + + No mobile phone number set + Keine Handynummer angegeben + + + No landline phone number set + Keine Festnetznummer angegeben + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um den Kontakt zu bearbeiten</p></body></html> + + + + CrashReport + + Cancel + Abbrechen + + + Program Failure + Programmfehler + + + Send + Senden + + + Optional Information + Freiwillige Angaben: + + + Your Mail: + Deine E-Mail Adresse: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Nicht verfügbar + + + Click here to change your call forward settings + Klicke hier, um Deine Anrufweiterleitungen zu ändern + + + Call forward mode: + Anrufweiterleitungen: + + + Purchase call out credits + Call Out-Credits kaufen + + + Call Forward Method + Anrufweiterleitungsart: + + + Call Voice Mail + Voicemail anrufen + + + Click here to buy @company@'s credits + Klicke hier, um @company@-Credits zu kaufen + + + + DesktopService + + Root Folder + Hauptordner + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Klicke auf die verschiedenen, sich in der Farbe verändernden Dinge, um Geräusche an Deinen Gesprächspartner zu senden. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Klicke hier, um Dein Anrufbeantworter anzurufen + + + New Voice Mail: + Neue Voicemail: + + + Click here to see missed call(s) + Klicke hier, um Deine verpassten Anrufe zu sehen + + + Missed Call(s): + Verpasste Anrufe: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Download + + + Upload + Upload + + + Click here to change your download folder + Klicke hier, um den Downloadordner zu ändern + + + Download folder: + Downloadverzeichnis: + + + Clean all items in the list + Alle Einträge in der Liste löschen + + + &Clean + &Aufräumen + + + @product@ - File Transfer Manager + @product@ - Dateitransfer-Manager + + + + FileTransferItem + + Cancel + Abbrechen + + + Form + Eingabemaske + + + Pause + Pause + + + <i>From:</i> + <i>Von:</i> + + + + GeneralSettings + + When I double-click on a contact + Wenn ich auf einen Kontakt doppelklicke + + + Call cell phone or land line if contact not online + Handy oder Festnetz anrufen, wenn der Kontakt nicht online ist. + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + (Inaktiv) Status + + + minutes + Minuten + + + Show me as "Away" when I am inactive for: + Markiere mich als "Abwesend", wenn ich inaktiv bin seit: + + + When I start my computer + Wenn ich meinen Computer starte + + + Automatically start @product@ + Starte @product@ automatsich + + + + GoogleTalkSettings + + Login: + Benutzername: + + + Password: + Passwort: + + + GoogleTalk Settings + GoogleTalk-Einstellungen + + + Forgot your GoogleTalk password? + GoogleTalk Passwort vergessen? + + + Get a new GoogleTalk Account + Einen neuen GoogleTalk-Zugang erstellen + + + + HttpProxyLoginWindow + + Cancel + Abbrechen + + + HTTP Proxy Address: + HTTP Proxy Adresse: + + + HTTP Proxy Port Number: + HTTP Proxy Port-Nummer: + + + HTTP Proxy Login: + HTTP Proxy Benutzername: + + + HTTP Proxy Password: + HTTP Proxy Passwort: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Proxy Authentifizierung</span><br /><br /><span>Dein lokaler HTTP proxy benötigt eine Authentifizierung<br />Bitte gib Deinen Benutzernamen und Dein Passwort ein</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Lokaler HTTP Proxy + + + + ICQSettings + + Login: + Benutzername: + + + Password: + Passwort: + + + ICQ Settings + ICQ-Einstellungen + + + Forgot your ICQ password? + AIM-Passwort vergessen? + + + Get a new ICQ Account + Einen neuen AIM-Zugang erstellen + + + + IMAccountManager + + Close + Schließen + + + Login + Anmeldung + + + Add + Hinzufügen + + + Delete + Löschen + + + Modify + Ändern + + + Protocol + Protokoll + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Meine Instant Messaging-Zugänge (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Abbrechen + + + Save + Speichern + + + IM Account Settings + IM-Zugangseinstellungen + + + + IMContactManager + + Add + Hinzufügen + + + Delete + Löschen + + + Contact Type (protocol) + Art des Kontakts (Protokoll) + + + Click on the add button below to add a new ID + Klick unten auf den "Hinzufügen"-Button um eine neue ID hinzuzufügen + + + Contact ID + Kontakt-ID + + + + IMProfileWidget + + Enter your nickname here + Gib hier Deinen Spitznamen ein + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Einen IM-Zugang hinzufügen (MSN, AIM, GoogleTalk...) + + + Add an IM account + Einen IM-Zugang hinzufügen + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um deinen Avatar zu ändern.</p></body></html> + + + + ImageSelector + + Cancel + Abbrechen + + + OK + OK + + + Go Up + Nach oben + + + Refresh + Aktualisieren + + + + JabberSettings + + Login: + Benutzername: + + + Password: + Passwort: + + + Jabber Settings + Jabber-Einstellungen + + + Connect Server: + Jabber-Server: + + + <u>Advanced Options</u> + <u>Erweiterte-Einstellungen</u> + + + Require TLS + TLS + + + Port: + Port: + + + Use TLS if available + TLS, wenn möglich + + + Allow plaintext authentication over unencrypted streams + Erlaube eine Anmeldung per Klartext über eine unverschlüsselte Verbindung + + + 5222 + 5222 + + + Force old (port 5223) SSL + Erzwinge altes SSL (Port 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Deine Sprache ist noch nicht vorhanden. Weißt du, dass du deine eigene Übersetzung mit Hilfe von Launchpad machen kannst? + + + More information here. + Mehr Informationen. + + + + LogAccount + + Password: + Passwort: + + + Need help? + Brauchst du Hilfe? + + + Cancel + Abbrechen + + + Delete + Löschen + + + @product@ - Login + @product@ - Anmeldung + + + Account: + Zugang: + + + &Connect + &Verbinden + + + Forgot your @company@ password? + @company@ Passwort vergessen? + + + &Modify + &Bearbeiten + + + Configure a &New Profile + Ein &Neues Profil erstellen + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Bitte wähle ein zuvor benutztes Profil<br/> oder gib die nötigen Informationen an, um Verbindung mit einem<br/> @company@-Zugang herzustellen</span> + + + + MSNSettings + + Login: + Benutzername: + + + Password: + Passwort: + + + MSN Settings + MSN-Einstellungen + + + Forgot your MSN password? + MSN Passwort vergessen? + + + Get a new MSN Account + Einen neuen MSN-Zugang erstellen + + + Use HTTP method + HTTP-Methode benutzen + + + + MainWindow + + MainWindow + Hauptfenster + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Anruf annehmen + + + Send Chat Message + Chat-Nachricht senden + + + Make Call + Anrufen + + + Hang Up + Auflegen + + + + ManageBlockedUsersSettings + + Close + Schließen + + + Unblock User + Blockierung des Benutzers aufheben + + + Manage blocked users + Blockierte Benutzer verwalten + + + @product@ - Manage blocked users + @product@ - Blockierte Kontakte verwalten + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Ich habe einen @company@-Zugang + + + Create a @company@ account + Einen @company@-Zugang erstellen + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Um SMS-Nachrichten zu verschicken, musst du mit einem <br>@company@-Zugang angemeldet sein und @company@-Credits besitzen. + + + + NotificationSettings + + Select the events for which a sound should be played. + Wähle die Ereignisse aus, bei denen ein Klang abgespielt werden soll. + + + + NotificationSettingsItem + + Sound file + Klangdatei + + + Find a sound file + Klangdatei finden + + + Play sound file + Klangdatei abspielen + + + Play + Abspielen + + + + NotifyDialog + + File Transfer + Dateitransfer + + + &Ok + &OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualisierung</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Annehmen + + + Status + Status + + + 00:00:00 + 00:00:00 + + + Nickname + Spitzname + + + &Reject + &Ablehnen + + + Dialpad + Wähltasten + + + Audio Smileys + Audio-Smileys + + + Communication is encrypted + Die Verbindung ist verschlüsselt + + + + PrivacySettings + + Manage blocked users + Blockierte Benutzer verwalten + + + Privacy Rules + Datenschutz + + + Always sign in as "Invisible" (appear offline to all users) + Immer als "Unsichtbar" anmelden (erscheint offline für alle anderen Benutzer) + + + Allow chats from + Chats erlauben von + + + Anyone + Jeder + + + Only people from my contact list + Nur Personen von meiner Kontaktliste + + + Allow calls from + Erlaube Anrufe von + + + When I sign into @company@ + Wenn ich mich bei @company@ anmelde + + + + ProfileDetails + + Cancel + Abbrechen + + + Save + Speichern + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um deinen Avatar zu ändern.</p></body></html> + + + General + Allgemein + + + Network IDs (MSN, Jabber...) + Netzwerk-IDs (MSN, Jabber...) + + + Advanced >> + Erweitert >> + + + Fill in all your network Id to stay connected with your contacts + Gib alle deine Netzwerk-IDs an, um in Verbindung mit deinen Freunden zu bleiben + + + Contact + Kontakt + + + Group: + Gruppe: + + + Last Name: + Nachname: + + + First Name: + Vorname: + + + Details + Details + + + Web/blog: + Web/Blog: + + + Country: + Land: + + + State: + Bundesland/Kanton: + + + City: + Stadt: + + + Gender: + Geschlecht: + + + Birth Date: + Geburtsdatum: + + + Email: + E-Mail: + + + Notes + Anmerkungen + + + Phone Numbers + Telefonnummern + + + Home phone + Tel. (privat) + + + Mobile phone + Handy: + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Unbekannt + + + Male + männlich + + + Female + weiblich + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Zugänge + + + Accounts Settings + Zugangseinstellungen + + + + QtAddAccount + + Configure your voip account + VoIP-Zugang konfigurieren + + + Please tell us if your account is provided<br/>by @company@ or by another service + Bitte teile uns mit, ob dein Zugang von <br/>@company@ oder einem anderen Anbieter zur Verfügung gestellt wird + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + Audio-Testanruf + + + Video Test Call + Video-Testanruf + + + + QtAddQuteComAccount + + Login + Anmeldung + + + Please enter an email address. + Bitte eine E-Mail Adresse angeben. + + + Please enter your email address<br/>and your password + Bitte gib deine E-Mail Adresse<br/>und dein Passwort ein + + + @product@ - Login + @product@ - Verbindung + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Bitte gib die nötigen Informationen an, damit<br/>das Softphone sich mit deinem SIP-Zugang<br/>verbinden kann. + + + Configure your SIP profile + SIP-Profil konfigurieren + + + + QtAdvancedIMContactManager + + Cancel + Abbrechen + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Willst du diesen IM-Kontakt wirklich löschen? + + + + &Delete + &Löschen + + + + QtAdvancedSettings + + Advanced + Erweitert + + + Advanced Settings + Erweiterte-Einstellungen + + + + QtAppearanceSettings + + Me + Mich + + + Hello + Hallo + + + How are you? + Wie geht es dir? + + + Other + Sonstige + + + I am fine + Mir geht es gut. + + + Have to go + Ich muss weg. + + + Bye + Tschüss! + + + Appearance + Darstellung + + + Appearance Settings + Darstellungseinstellungen + + + + QtAudioSettings + + Advanced + Erweitert + + + Audio + Audio + + + Audio Settings + Audio-Einstellungen + + + + QtCallBar + + +(country code) number or nickname + +(Ländercode) Nummer oder Spitzname + + + + QtCallForwardSettings + + Call Forward + Anrufweiterleitung + + + Call Forward Settings + Anrufweiterleitungen + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Speichern unter + + + + QtChatLogViewer + + Account + + + + Edit Contact + Kontakt ändern + + + + QtChatTabWidget + + Close chat + Chat schließen + + + + QtChatWidget + + %1 is connected. + %1 ist verbunden. + + + %1 is disconnected. + %1 ist getrennt. + + + send + senden + + + Your file can not be sent: your contact must be connected on the @company@ network. + Die Datei konnte nicht gesendet werden: Der Kontakt muss mit dem @company@-Netzwerk verbunden sein. + + + Your contact wishes to send a file with @company@. + Dein Kontakt möchte eine Datei mit @company@ senden. + + + Go to %1 to install it + Gehe zu %1, um es zu installieren + + + %1 has joined the chat + %1 hat den Chat betreten + + + %1 has left the chat + %1 hat den Chat verlassen + + + + QtChatWindow + + Edit Contact + Kontakt ändern + + + @product@ Chat + @product@ Chat + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + SIP-Adresse anrufen + + + Call land line + Festnetztelefon anrufen + + + Call Mobile + Handy anrufen + + + Call @company@ + @company@ anrufen + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Du kannst nun Deinen ersten Gesprächspartner informieren, dass er Teilnehmer eines Konferenzgespräches wird.</b><br><br>Klicke danach auf den unteren Button. Dein erster Gesprächspartner wird gehalten, während Dein zweiter Gesprächspartner angerufen wird.<br> + + + Hold first interlocutor and call second one + Ersten Gesprächspartner halten und eine zweiten anrufen + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Du kannst nun Deinen zweiten Gesprächspartner informieren, dass er Teilnehmer eines Konferenzgespräches wird.</b><br><br>Klicke danach auf den unteren Button, um die Konferenz zu starten. + + + Start Conference + Konferenz starten + + + @product@ - Proceed Conference + @product@ - Konferenz vortsetzen + + + + QtContactList + + &Yes + &Ja + + + &No + &Nein + + + Merge %1 with %2? + Verbinde %1 mit %2? + + + @product@ - Merge Contacts + @product@ - Kontakte zusammenführen + + + + QtContactManager + + &Yes + &Ja + + + &No + &Nein + + + Home phone + Tel. (privat) + + + Mobile phone + Handy: + + + @product@ + @product@ + + + Edit Contact + Kontakt ändern + + + Do you really want to delete this contact? + Willst du diesen Kontakt wirklich löschen? + + + Start chat + Chat starten + + + Delete contact + Kontakt löschen + + + Call + Anruf + + + Free call + + + + Work phone + Tel. (gesch.) + + + Send SMS + SMS senden + + + Edit contact + Kontakt bearbeiten + + + Block contact + Kontakt blockieren + + + Invite to conference + Zur Konferenz einladen + + + Go to website + Zur Website + + + Send file + Datei senden + + + Forward to mobile phone + Weiterleiten zum Handy + + + + QtContactWidget + + No mobile phone number set + Keine Handynummer angegeben + + + No landline phone number set + Keine Festnetznummer angegeben + + + Click here to call + Hier klicken, um anzurufen + + + Click here to set a phone number + Hier klicken, um eine Telefonnummer festzulegen + + + Click here to edit the contact + Hier klicken, um den Kontakt zu bearbeiten + + + Click here to send a SMS + Hier klicken, um eine SMS zu senden + + + Click here to start a chat + Hier klicken, um einen Chat zu starten + + + Click here to start a free call + Hier klicken, um einen kostenlosen Anruf zu tätigen + + + Click here to send a file + Hier klicken, um eine Datei zu senden + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Willst du deinen Anrufbeantworter anrufen? + + + @product@ - Voice Mail + @product@ - Voice Mail + + + + QtFileTransfer + + &Yes + &Ja + + + &No + &Nein + + + Choose a directory + Verzeichnis auswählen + + + Overwrite File? + Datei überschreiben? + + + A file called %1 already exists.Do you want to overwrite it? + Eine Datei mit dem Namen %1 existiert bereits.Soll diese überschrieben werden? + + + File size error + Fehlerhafte Dateigröße + + + %1 exceeds the maximum authorized size. + %1 hat die maximal erlaubte Größe überschritten. + + + %1 has size 0. + %1 hat die Größe 0. + + + %1 is a directory. + %1 ist ein Verzeichnis. + + + You can not send a directory. + Du kannst kein Verzeichnis versenden. + + + %1 is a shortcut. + %1 ist eine Verknüpfung. + + + You can not send a shortcut. + Du kannst keine Verknüpfung versenden. + + + All Files (*.* *) + Alle Dateien (*.**) + + + Please upgrade<br> your @product@ + Bitte aktualisiere<br> dein @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Teile deinem Gesprächspartner mit, <br> dass er sein<br> @product@ aktualisieren muss + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Die Datei kann nicht empfangen werden: Du musst dein @product@ aktualisieren, um sie zu empfangen. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + versucht dir eine Datei zu senden aber sein @product@ muss aktualisiert werden, um es zu versenden. Teile ihm mit, dass er die neueste Version herunterladen muss. + + + + QtFileTransferItem + + Cancel + Abbrechen + + + Remove + Entfernen + + + Pause + Pause + + + Starting + Startet + + + From: + Von: + + + To: + Zu: + + + Open + Öffnen + + + Resume + Fortsetzen + + + Waiting for anwser... + Warte auf Antwort... + + + Done + Fertig + + + Failed + Fehlgeschlagen + + + Paused + Angehalten + + + Paused by peer + Angehalten vom Verbindungspartner + + + Cancelled + Abgebrochen + + + Cancelled by peer + Abgebrochen vom Verbindungspartner + + + Downloading... + Wird heruntergeladen... + + + Uploading... + Lade hoch... + + + Waiting for peer... + Warte auf Partner... + + + An error occured during the file transfer + Während der Übertragung ist ein Fehler aufgetreten + + + This may be caused by : + Der Grund könnte folgender sein: + + + Your @product@ is not up to date. Please download the latest version on + Dein @product@ ist nicht aktuell. Bitte lade dir die aktuellste Version herunter, unter + + + The @company@ network may be temporarily unavailable. Please try later. + Das @company@-Netzwerk ist möglicherweise vorübergehend nicht erreichbar. Bitte versuche es später noch einmal. + + + + QtGeneralSettings + + General + Allgemein + + + General Settings + Allgemeine Einstellungen + + + + QtHistory + + Incoming call + Eingehender Anruf + + + Outgoing call + Abgehender Anruf + + + Missed call + Verpasster Anruf + + + Rejected call + Abgewiesener Anruf + + + Outgoing SMS + Abgehende SMS + + + Do you want to call %1? + Möchtest Du %1 anrufen? + + + Chat session + Chatsitzung + + + @product@ - Call History + @product@ - Gesprächsverlauf + + + Type + Typ + + + Name/ID + Name/ID + + + Date + Datum + + + Duration + Dauer + + + + QtHistoryWidget + + Erase this entry + Diesen Eintrag löschen + + + Open in SMS window + In SMS-Fenster öffnen + + + Call this peer + Diesen Partner anrufen + + + Show chat log + Chat-Protokoll anzeigen + + + + QtIMAccountManager + + Cancel + Abbrechen + + + @product@ + @product@ + + + &Delete + &Löschen + + + Are sure you want to delete this account? + + Willst du diesen Kontakt wirklich löschen? + + + + + QtIMAccountMonitor + + Disconnected + Nicht verbunden + + + Error: %1 + Fehler: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Online + + + Invisible + Unsichtbar + + + Away + Abwesend + + + Do not disturb + Nicht stören + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Bitte gib einen Benutzernamen ein + + + + QtIMAccountPresenceMenuManager + + Cancel + Abbrechen + + + @product@ + @product@ + + + &Delete + &Löschen + + + Online + Online + + + Invisible + Unsichtbar + + + Away + Abwesend + + + Do Not Disturb + Nicht stören + + + Disconnect + Verbindung trennen + + + Delete Account + Zugang löschen + + + Are sure you want to delete the account <b>%1</b>? + Bist Du sicher, dass du den Zugang <b>%1</b> löschen willst? + + + + QtIMProfileWidget + + Edit My Profile + Mein Profil bearbeiten + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Sprache + + + Language Settings + Spracheinstellungen + + + + QtLogAccount + + Invalid account + Ungüliger Zugang + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Bitte wähle ein zuvor benutztes Profil<br/> oder gib die nötigen Informationen an, um Verbindung mit einem<br/> @company@-Zugang herzustellen + + + + QtLoginDialog + + @product@ - Login + @product@ - Verbindung + + + + QtNotificationSettings + + Incoming call (ringtone) + Eingehender Anruf (Klingelton) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Anruf beendet (Besetztzeichen) + + + Incoming chat + Eingehender Chat + + + IM account connected + IM-Zugang verbunden + + + IM account disconnected + IM-Zugang getrennt + + + Contact online + Kontakt online + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Wähle eine Klangdatei + + + Sounds + Klänge + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Eingehender Anruf + + + Resume + Fortsetzen + + + Hang-up + Auflegen + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Fehler + + + Talking + Am sprechen + + + Dialing + Wähle + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Es klingelt + + + Redirected + Umgeleited + + + Initialization... + Initialisierung... + + + Closed + Geschlossen + + + Hold + Halten + + + Add contact + Kontakt hinzufügen + + + Ca&ncel + Ab&brechen + + + Talking - Conference + Am sprechen - Konferenz + + + Add a Contact + Kontakt hinzufügen + + + + QtPresenceMenuManager + + Online + Online + + + Invisible + Unsichtbar + + + Away + Abwesend + + + Do Not Disturb + Nicht stören + + + Log off + Abmelden + + + + QtPrivacySettings + + Privacy + Datenschutz + + + Privacy Settings + Einstellungen zur Privatsphäre + + + + QtProfileBar + + Click here to change your status + Klicke hier, um deinen Status zu ändern + + + active + aktiv + + + voicemail + Sprachnachricht + + + inactive + inaktiv + + + unauthorized + nicht berechtigt + + + Set global presence to: + Globale Anwesenheit setzen: + + + Voice mail + Voice-Mailbox + + + + QtProfileDetails + + Advanced >> + Erweitert >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Ein Kontakt muß einer Gruppe zugeordnet sein, bitte gib eine Gruppe an. + + + << Simple + << Einfach + + + Select your avatar + Avatar auswählen + + + @product@ - No Group Selected + @product@ - Keine Gruppe ausgewählt + + + @company@ Avatars + @company@ Avatare + + + + QtQuteCom + + &Cancel + &Abbrechen + + + Conference + Konferenz + + + Call + Anruf + + + Account + + + + Add a Contact + Kontakt hinzufügen + + + You have unfinished call(s). + Du hast noch unbeendete anrufe. + + + @product@ - Warning + @product@ - Warnung + + + Home + Start + + + Are you sure you want to exit the application? + Wollen Sie die Anwendung wirklich beenden? + + + &Exit + &Beenden + + + @product@ - Call Error + @product@ - Anruffehler + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Erweitert + + + General + Allgemein + + + Accounts + Zugänge + + + Audio + Audio + + + Call Forward + Anrufweiterleitung + + + Language + Sprache + + + Privacy + Datenschutz + + + Video + Video + + + Voicemail + Voicemail + + + security + Sicherheit + + + Notifications + + + + + QtRenameGroup + + Bad group name + Ungültiger Gruppenname + + + Group name cannot be empty + Ein Gruppenname kann nicht leer sein + + + + QtSecuritySettings + + Security + Sicherheitseinstellungen + + + Security Settings + Sicherheitseinstellungen + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Bitte gib eine Telefonnummer ein. + + + Do you want to continue? + Willst du fortfahren? + + + Your SMS has not been sent + Deine SMS wurde nicht gesendet + + + Your SMS has been sent + Deine SMS wurde gesendet + + + Your message is too long. +This will send + Die Nachricht ist zu lang. +Folgendes wird gesendet: + + + SMS. + + SMS. + + + + You can not send an empty message. + Du kannst keine leere Nachricht senden. + + + @company@ SMS service + @company@ SMS-Service + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Update fehlgeschlagen + + + @product@ update failed to start: try to update @product@ manually + @product@ Update konnte nicht gestartet werden: Bitte versuche @product@ manuell zu aktualisieren + + + + QtStatusBar + + Not connected + Nicht verbunden + + + Register done + Angemeldet + + + Unregister done + Abgemeldet + + + Connecting + Verbindung wird hergestellt + + + Output volume is muted + Die Ausgabelautstärke ist stumm gestellt. + + + Output volume is 0 + Die Ausgabelautstärke ist 0. + + + Click to adjust output volume + Hier klicken, um die Ausgabelautstärke einzustellen + + + Input volume is muted + Das Mikrofon ist stumm gestellt. + + + Input volume is 0 + Die Lautstärke des Mikrofons ist 0 + + + Click to adjust input volume + Hier klicken, um die Lautstärke des Mikrofons einzustellen + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + @product@ + + + Call SIP + SIP-Adresse anrufen + + + Call land line + Festnetztelefon anrufen + + + Call Mobile + Handy anrufen + + + Call @company@ + @company@ anrufen + + + Call + Anruf + + + Send SMS + SMS senden + + + Online + Online + + + Invisible + Unsichtbar + + + Away + Abwesend + + + Do Not Disturb + Nicht stören + + + Internet Connection Error + Die Internetverbindung ist: Fehlerhaft + + + Offline + Offline + + + Connecting... + Verbindung wird hergestellt... + + + Send a SMS + SMS senden + + + Start a chat + Chat starten + + + Place Call + Anruf tätigen + + + Send File + Datei senden + + + Multiple Status + Mehrfacher Status + + + Unknown Status + Unbekannter Status + + + Quit @product@ + Beende @product@ + + + + QtToolBar + + &Cancel + &Abbrechen + + + @product@ - Proceed Conference + @product@ - Konferenz vortsetzen + + + Edit My Profile + Mein Profil bearbeiten + + + Add a Contact + Kontakt hinzufügen + + + Hide Unavailable Contacts + Nicht erreichbare Kontakte verbergen + + + Show Unavailable Contacts + Nicht erreichbare Kontakte anzeigen + + + Hide Groups + Gruppen verbergen + + + Show Groups + Gruppen anzeigen + + + You have unfinished call(s). + Du hast noch unbeendete anrufe. + + + Are you sure you want to log off? + Bist Du sicher, das du dich abmelden willst? + + + &Log Off + &Abmelden + + + Disable &Video Calls + &Videoanrufe deaktivieren + + + Enable &Video Calls + &Videoanrufe ermöglichen + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Konferenz kann nicht gestartet werden, solange andere Gespräche aktiv sind.</b><br><br>Beende alle Gespräche und probiere erneut. + + + @product@ - Warning + @product@ - Warnung + + + Log &Off... + &Abmelden + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Kontaktliste + + + + QtUserProfile + + Edit Contact + Kontakt ändern + + + &Authorize + &Berechtigen + + + &Block + &Blockieren + + + Network error. + Netzwerkfehler. + + + @product@ - Authorization Request + @product@ - Autorisationsanfrage + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Beim laden des Profils ist ein Problem aufgetreten. +Das letzte Backup des Profils wurde geladen: +nach dem letzten Backup gemachte Änderungen +sind möglicherweise verloren gegangen + + + Your profile could not be loaded. +Choose another profile or create a new one. + Das Profil konnte nicht geladen werden. +Bitte wähle ein anderes aus oder erstelle ein neues. + + + Wrong email/password entered + Falsche E-Mail Adresse oder falsches Passwort eingegeben + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normal + + + Good + Gut + + + Very good + Sehr gut + + + Excellent + Exzellent + + + Video Settings + Video-Einstellungen + + + + QtVoicemailSettings + + Voicemail + Voicemail + + + Voicemail Settings + Voicemail-Einstellungen + + + + QtWebDirectory + + @product@ - Directory + @product@ - Verzeichnis + + + + QuteComConfigDialog + + Cancel + Abbrechen + + + Save + Speichern + + + Title + Titel + + + @product@ - Configuration + @product@ - Einstellungen + + + + QuteComWindow + + &Accept + &Annehmen + + + &Hidden + &Versteckt + + + &Tools + &Extras + + + &Help + &Hilfe + + + &Actions + &Aktionen + + + @company@ + @company@ + + + &Close + &Schließen + + + Dialpad + Wähltasten + + + @product@ + @product@ + + + Start Conference + Konferenz starten + + + Send SMS + SMS senden + + + Contacts + Meine Kontakte + + + History + Verlauf + + + Clear &History + &Verlauf leeren + + + ToolBar + Symbolleiste + + + Show/Hide Unavailable &Contacts + Nicht erreichbare &Kontakte anzeigen/verbergen + + + &Chat Sessions + &Chatsitzung + + + &All + &Alle + + + &HangUp + &Auflegen + + + &Hold/Resume + &Halten/Wiederaufnehmen + + + Show/Hide &Groups + &Gruppen anzeigen/verbergen + + + &Outgoing Calls + &Ausgehende Anrufe + + + &Incoming Calls + &Eingehende Anrufe + + + &Missed Calls + &Verpasste Anrufe + + + Enable/Disable &Video Calls + &Videoanrufe einschalten/ausschalten + + + Short Text &Messages (SMS) + &Kurznachrichten (SMS) + + + Rejected Calls + Abgelehnte Anrufe + + + &Contacts + &Kontakte + + + &About... + &Über... + + + Add &Contact... + &Kontakt hinzufügen... + + + &Configuration... + &Einstellungen... + + + Send SMS... + SMS senden... + + + View My &Profile... + Mein &Profil ansehen... + + + View My Profile + Mein Profil ansehen + + + Start &Conference... + &Konferenz starten... + + + &Find Contact... + Kontakt &finden.. + + + Log &Off... + &Abmelden + + + Log Off + Abmelden + + + Show &Chat Window + &Chatfenster anzeigen + + + Show Chat Window + Chatfenster anzeigen + + + Show &File Transfer + &Dateitransfer anzeigen + + + Add Contact + Kontakt hinzufügen + + + View My @company@ Account... + Mein @company@ Zugang... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ &Forum... + + + @company@ &Wiki/FAQ... + @company@ &Wiki/FAQ... + + + Learn more about @company@ Services... + Mehr über die @company@ Dienste erfahren... + + + Search + Suchen + + + Find @company@ Contacts + @company@-Kontakte finden + + + &Quit + &Beenden + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Text unter den Icons + + + &Icons Only + Nur &Symbole + + + Add + Hinzufügen + + + SMS + SMS + + + Conference + Konferenz + + + + RenameGroupDialog + + Cancel + Abbrechen + + + OK + OK + + + Enter the new group name: + Gib den neuen Gruppennamen ein: + + + @product@ - Rename Contact Group + @product@ - Kontaktgruppe umbenennen + + + + SecuritySettings + + Form + Eingabemaske + + + Enable call encryption + Verschlüsselung der Anrufe einschalten + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ kann Anrufe mit Hilfe des AES 128-Bits Verschlüsselungssystems verschlüsseln und Diffie-Hellman für den Schlüsselaustausch verwenden. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Aktualisiere dein Profil + + + Yahoo! ID: + Yahoo!-ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN-ID: + + + SIP ID: + SIP-ID + + + ICQ ID: + AIM/ICQ-ID: + + + AIM ID: + AIM-ID: + + + @company@ ID: + @company@-ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Senden + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Klicke hier, um eine Telefonnummer hinzuzufügen + + + 0 /160 + 0 /160 + + + Enter your signature here + Gib hier deine Signatur ein + + + Signature: + Signatur: + + + Phone number(s): + Telefonnummer(n): + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Gib die Telefonnummer(n) hier ein<br />Sie müßen mit einem "&" oder ";" oder "," getrennt werden. + + + + SoftUpdateWindow + + Cancel + Abbrechen + + + @product@ - Downloading update + @product@ - Update wird heruntergeladen + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Eingabemaske + + + + VideoSettings + + Normal + Normal + + + Good + Gut + + + Very good + Sehr gut + + + Excellent + Exzellent + + + Enable video + Video aktivieren + + + Webcam Selection + Webcam Auswahl + + + Webcam device: + Webcam: + + + Webcam Preview + Webcam Vorschau + + + Connection Type + Verbindungsart + + + Video quality + Videoqualität + + + Down (kbit/s) + Down (kbit/s) + + + Up (kbit/s) + Up (kbit/s) + + + 0 to 512 + 0 bis 512 + + + 0 to 128 + 0 bis 128 + + + 512 to 2048 + 512 bis 2048 + + + 128 to 256 + 128 bis 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Die Videoqualität hängt von der Bandbreite des Internetzugangs ab + + + Make a test video call + Test-Videoanruf ausführen + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Eingabemaske + + + Phone number of your voicemail: + Voicemail-Telefonnummer: + + + Please fill in here the information about your voicemail + Gib hier die notwendigen Informationen über dein Voicemail an: + + + + Wizard + + Cancel + Abbrechen + + + Finish + Fertig stellen + + + Next > + Weiter > + + + < Back + < Zurück + + + Simple Wizard - Step %1 of %2 + Einfacher Wizard - Schritt %1 von %2 + + + + YahooSettings + + Login: + Benutzername: + + + Password: + Passwort: + + + Yahoo! Settings + Yahoo!-Einstellungen + + + Use Yahoo! Japan server + Verwende japanischen Yahoo!-Server + + + Forgot your Yahoo! password? + Yahoo!-Passwort vergessen? + + + Get a new Yahoo! Account + Einen neuen Yahoo!-Zugang erstellen + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_el.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_el.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_el.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_el.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4668 @@ + + + + + AIMSettings + + Login: + Σύνδεση: + + + Forgot your AIM password? + Ξεχάσατε τον κωδικό του ΑΙΜ; + + + Get a new AIM Account + Κάντε έναν νέο λογαριασμό ΑΙΜ + + + Password: + Κωδικός: + + + AIM Settings + Ρυθμίσεις AIM + + + + AboutWindow + + About + Σχετικά + + + Copyright (C)2008 Mbdsys + + + + Authors + Συγγραφείς + + + Close + Κλείσιμο + + + 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. + + + + + @product@ - About + @product@ - Σχετικά + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Μεταφορά Αρχείου + + + toto@qutecom.fr + + + + + test.bmp + + + + + &Accept + Απο&δοχή + + + &Cancel + Ακύ&ρωση + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + &Επεξεργασία του προφίλ μου + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + Ακύρωση + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Ακύρωση + + + Contact Type (protocol): + + + + + Contact ID: + Όνομα Επαφής: + + + Account: + + + + + Enable + + + + + Login + Σύνδεση + + + Add + Προσθήκη + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Κωδικός: + + + Need help? + + + + + &Back + + + + + Cancel + Ακύρωση + + + @product@ - Login + + + + + &Connect + &Σύνδεση + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Κωδικός: + + + Need help? + + + + + &Back + + + + + Cancel + Ακύρωση + + + @product@ - Login + + + + + &Connect + &Σύνδεση + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Κλείσιμο + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Προσθήκη + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Κλείσιμο + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Ακύρωση + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Ακύρωση + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Ακύρωση + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Ακύρωση + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Σύνδεση: + + + Password: + Κωδικός: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Ακύρωση + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Σύνδεση: + + + Password: + Κωδικός: + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Κλείσιμο + + + Login + Σύνδεση + + + Add + Προσθήκη + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Ακύρωση + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + Προσθήκη + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Ακύρωση + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Σύνδεση: + + + Password: + Κωδικός: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Κωδικός: + + + Need help? + + + + + Cancel + Ακύρωση + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + &Σύνδεση + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Σύνδεση: + + + Password: + Κωδικός: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Κλείσιμο + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Μεταφορά Αρχείου + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + Απο&δοχή + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Ακύρωση + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Σύνδεση + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Ακύρωση + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Ακύρωση + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Ακύρωση + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Ακύρωση + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + Ακύ&ρωση + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + Ακύ&ρωση + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Ακύρωση + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + Απο&δοχή + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Προσθήκη + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Ακύρωση + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Ακύρωση + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Ακύρωση + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Σύνδεση: + + + Password: + Κωδικός: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en_GB.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en_GB.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en_GB.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en_GB.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4446 @@ + + + + + AIMSettings + + Login: + Login: + + + Forgot your AIM password? + Forgot your AIM password? + + + Get a new AIM Account + Get a new AIM Account + + + Password: + Password: + + + AIM Settings + AIM Settings + + + + AboutWindow + + About + About + + + Copyright (C)2008 Mbdsys + + + + Authors + Authors + + + Close + Close + + + 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 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. + + + @product@ - About + @product@ - About + + + @product@, a voice over Internet phone + @product@, a voice over Internet phone + + + + AcceptDialog + + File Transfer + File Transfer + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Accept + + + &Cancel + &Cancel + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Edit my profile + + + + AddAccount + + Configure your account: + Configure your account: + + + &Next + &Next + + + Need help? + Need help? + + + You don't have any account ? Click here + You don't have an account? Click here + + + &Back + &Back + + + Cancel + Cancel + + + @product@ - Login + @product@ - Login + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configure your VOIP account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + @company@ account + @company@ account + + + Generic SIP account + Generic SIP account + + + + AddIMContact + + Cancel + Cancel + + + Contact Type (protocol): + Contact Type (protocol): + + + Contact ID: + Contact ID: + + + Account: + Account: + + + Enable + Enable + + + Login + Login + + + Add + Add + + + @product@ - Add a Contact Account + @product@ - Add a Contact Account + + + + AddQuteComAccount + + Password: + Password: + + + Need help? + Need help? + + + &Back + &Back + + + Cancel + Cancel + + + @product@ - Login + @product@ - Login + + + &Connect + &Connect + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Login</span><br/><br/><span>Please enter your email address and<br/>password</span> + + + Email Address: + Email Address: + + + Click here if you don't have a @company@ account + Click here if you don't have a @company@ account + + + Forgot your @company@ password? + Forgot your @company@ password? + + + + AddSIPAccount + + Password: + Password: + + + Need help? + Need help? + + + &Back + &Back + + + Cancel + Cancel + + + @product@ - Login + @product@ - Login + + + &Connect + &Connect + + + Activate presence and chat (SIP/SIMPLE) + Activate presence and chat (SIP/SIMPLE) + + + Displayname: + Displayname: + + + login / username: + login / username: + + + Account name: + Account name: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + SIP Domain / Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + Advanced + Advanced + + + + AdvancedConfigWindow + + Close + Close + + + Preference Name + Preference Name + + + Type + Type + + + Value + Value + + + Default Value + Default Value + + + Save + Save + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - Advanced Configuration + + + + AdvancedSettings + + Add + Add + + + Advanced Settings + Advanced Settings + + + Advanced Configuration Window + Advanced Configuration Window + + + Automatically answer incoming calls from + Automatically answer incoming calls from + + + Remove + Remove + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Warning, this part is for advanced users.<br/>Any mistake can badly damage the software. + + + + AppearanceSettings + + Toolbar + Toolbar + + + &Icons && Text + &Icons && Text + + + Icons &Only + Icons &Only + + + &Hidden + &Hidden + + + Chat Theme + Chat Theme + + + Form + Form + + + + AudioSettings + + Reset + Reset + + + Audio Codecs + Audio Codecs + + + &Input device: + &Input device: + + + &Output device: + &Output device: + + + &Ringing device: + &Ringing device: + + + &Make a test call + &Make a test call + + + Test + Test + + + &Advanced >> + &Advanced >> + + + &Half Duplex + &Half Duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Form + + + + AvatarWidget + + Form + Form + + + + BrowserSoftUpdateWindow + + Close + Close + + + @product@ - Update available + @product@ - Update available + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3rd: + + + 1st: + 1st: + + + 2nd: + 2nd: + + + (+ country code) phone number + (+ country code) phone number + + + Forward all unanswered calls to message box + Forward all unanswered calls to message box + + + Disable call forwarding + Disable call forwarding + + + Forward all unanswered calls to following phone numbers: + Forward all unanswered calls to the following phone numbers: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + CallToaster + + Incoming Call + Incoming Call + + + Message + Message + + + + ChatLogViewer + + Chat History + Chat History + + + &Contact + &Contact + + + &Tools + &Tools + + + &Help + &Help + + + &Actions + &Actions + + + Main Toolbar + Main Toolbar + + + Call Contact + Call Contact + + + Send a File + Send a File + + + createChatConf + createChatConf + + + Show Contact Info + Show Contact Info + + + blockContact + blockContact + + + &Save History As... + &Save History As... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contact + + + &Tools + &Tools + + + &Actions + &Actions + + + Main Toolbar + Main Toolbar + + + Call Contact + Call Contact + + + Send a File + Send a File + + + Show Contact Info + Show Contact Info + + + blockContact + blockContact + + + &Save History As... + &Save History As... + + + @company@ + @company@ + + + MainWindow + MainWindow + + + &Edit + &Edit + + + Cu&t + Cu&t + + + Ctrl+X + Ctrl+X + + + &Copy + &Copy + + + Ctrl+C + Ctrl+C + + + &Paste + &Paste + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Start Chat Conference + + + &Close + &Close + + + Conference + Conference + + + + ChatRoomInviteWidget + + Chat room + Chat room + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:"MS Shell Dlg"; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + (Conference participants) + (Conference participants) + + + &Remove + &Remove + + + &Start + &Start + + + Group Name + Group Name + + + &Add + &Add + + + + ChatToaster + + Message + Message + + + Incoming Chat + Incoming Chat + + + + ChatWidget + + Form + Form + + + + ConferenceCallWidget + + Cancel + Cancel + + + Start + Start + + + Phone number 2: + Phone number 2: + + + Phone number 1: + Phone number 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Create a Conference + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">or @company@ contact ID in order</p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">to create a 3-way conference.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">or @company@ contact ID in order</p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">to create a 3-way conference.</p> + + + &Add >> + &Add >> + + + << &Remove + << &Remove + + + Available Contacts + Available Contacts + + + &Start + &Start + + + Cancel + Cancel + + + + ContactGroupPopupMenu + + Remove Contact Group + Remove Contact Group + + + Rename Contact Group + Rename Contact Group + + + Delete group + Delete group + + + Do you really want to delete this group? + Do you really want to delete this group? + + + &Yes + &Yes + + + &No + &No + + + + ContactList + + Contact List + Contact List + + + goupname + + + + + ContactWidget + + No mobile phone number set + No mobile phone number set + + + No landline phone number set + No landline phone number set + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'sans-serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">Click to edit this contact</p></body></html> + + + + CrashReport + + Cancel + Cancel + + + Program Failure + Program Failure + + + Send + Send + + + Optional Information + Optional Information + + + Your Mail: + Your Mail: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Not Available + + + Click here to change your call forward settings + Click here to change your call forwarding settings + + + Call forward mode: + Call forward mode: + + + Purchase call out credits + Purchase call out credits + + + Call Forward Method + Call Forward Method + + + Call Voice Mail + Call Voice Mail + + + Click here to buy @company@'s credits + Click here to buy @company@'s credits + + + + DesktopService + + Root Folder + Root Folder + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Click on the various colour changing items to send sounds to your interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Click here to call your voice mail + + + New Voice Mail: + New Voice Mail: + + + Click here to see missed call(s) + Click here to see missed call(s) + + + Missed Call(s): + Missed Call(s): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Download + + + Upload + Upload + + + Click here to change your download folder + Click here to change your download folder + + + Download folder: + Download folder: + + + Clean all items in the list + Clean all items in the list + + + &Clean + &Clean + + + @product@ - File Transfer Manager + @product@ - File Transfer Manager + + + + FileTransferItem + + Cancel + Cancel + + + Form + Form + + + Pause + Pause + + + <i>From:</i> + <i>From:</i> + + + + GeneralSettings + + When I double-click on a contact + When I double-click on a contact + + + Call cell phone or land line if contact not online + Call mobile phone or landline if contact not online + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Idle status + + + minutes + minutes + + + Show me as "Away" when I am inactive for: + Show me as "Away" when I am inactive for: + + + When I start my computer + When I start my computer + + + Automatically start @product@ + Automatically start @product@ + + + + GoogleTalkSettings + + Login: + Login: + + + Password: + Password: + + + GoogleTalk Settings + GoogleTalk Settings + + + Forgot your GoogleTalk password? + Forgot your GoogleTalk password? + + + Get a new GoogleTalk Account + Get a new GoogleTalk Account + + + + HttpProxyLoginWindow + + Cancel + Cancel + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Login: + + + Password: + Password: + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Close + + + Login + Login + + + Add + Add + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Cancel + + + Save + Save + + + IM Account Settings + + + + + + IMContactManager + + Add + Add + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Cancel + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Login: + + + Password: + Password: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Password: + + + Need help? + Need help? + + + Cancel + Cancel + + + Delete + + + + + @product@ - Login + @product@ - Login + + + Account: + Account: + + + &Connect + &Connect + + + Forgot your @company@ password? + Forgot your @company@ password? + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Login: + + + Password: + Password: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + MainWindow + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Close + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + File Transfer + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Accept + + + Status + Status + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Cancel + + + Save + Save + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Login + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Cancel + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + Advanced + + + Advanced Settings + Advanced Settings + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Advanced + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Yes + + + &No + &No + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Yes + + + &No + &No + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + No mobile phone number set + + + No landline phone number set + No landline phone number set + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Yes + + + &No + &No + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Cancel + + + Remove + Remove + + + Pause + Pause + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Type + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Cancel + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancel + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Incoming Call + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Cancel + + + Conference + Conference + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Advanced + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Cancel + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Cancel + + + Save + Save + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Accept + + + &Hidden + &Hidden + + + &Tools + &Tools + + + &Help + &Help + + + &Actions + &Actions + + + @company@ + @company@ + + + &Close + &Close + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Add + + + SMS + + + + + Conference + Conference + + + + RenameGroupDialog + + Cancel + Cancel + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Form + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Send + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Cancel + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Form + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Form + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Cancel + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Login: + + + Password: + Password: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_en.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4734 @@ + + + + + AIMSettings + + Login: + + + + + Forgot your AIM password? + + + + + Get a new AIM Account + + + + + Password: + + + + + AIM Settings + + + + + + AboutWindow + + About + + + + + Copyright (C)2008 Mbdsys + + + + Authors + + + + + Close + + + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + + + + + toto@qutecom.fr + + + + + test.bmp + + + + + &Accept + + + + + &Cancel + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + + + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + + + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + + + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + + + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + + + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + + + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + + + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + + + + + Password: + + + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + + + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + + + + + Password: + + + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + + + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + + + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + + + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + + + + + Password: + + + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + + + + + Need help? + + + + + Cancel + + + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + + + + + Password: + + + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + + + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + + + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + + + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + + + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + + + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Call QuteCom contact + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + + + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + + + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + Call QuteCom contact + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + + + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + + + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + + + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + + + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + + + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + + + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + + + + + Password: + + + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_eo.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_eo.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_eo.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_eo.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4668 @@ + + + + + AIMSettings + + Login: + Uzanto: + + + Forgot your AIM password? + + + + + Get a new AIM Account + + + + + Password: + Pasvorto + + + AIM Settings + + + + + + AboutWindow + + About + + + + + Copyright (C)2008 Mbdsys + + + + Authors + Aŭtoroj + + + Close + Fermu + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + + + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Akceptu + + + &Cancel + &Rezignu + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakto: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Disiernomo: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + &Editu mian profilon + + + + AddAccount + + Configure your account: + + + + + &Next + &Skeva + + + Need help? + Bezonas helpi? + + + You don't have any account ? Click here + Vi ne havas konton? Kliku tie cxi + + + &Back + + + + + Cancel + Rezignu + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Rezignu + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + kapabligi + + + Login + + + + + Add + Aldonu + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Pasvorto + + + Need help? + Bezonas helpi? + + + &Back + + + + + Cancel + Rezignu + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Pasvorto + + + Need help? + Bezonas helpi? + + + &Back + + + + + Cancel + Rezignu + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Fermu + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Aldonu + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Fermu + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Rezignu + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Rezignu + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Rezignu + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Rezignu + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Uzanto: + + + Password: + Pasvorto + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Rezignu + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Uzanto: + + + Password: + Pasvorto + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Fermu + + + Login + + + + + Add + Aldonu + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Rezignu + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + Aldonu + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Rezignu + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Uzanto: + + + Password: + Pasvorto + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Pasvorto + + + Need help? + Bezonas helpi? + + + Cancel + Rezignu + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Uzanto: + + + Password: + Pasvorto + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Fermu + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + + + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Akceptu + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Rezignu + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Rezignu + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Rezignu + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Rezignu + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Rezignu + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + Rezignu + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Rezignu + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Rezignu + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Rezignu + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Akceptu + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Aldonu + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Rezignu + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Rezignu + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Rezignu + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Uzanto: + + + Password: + Pasvorto + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_es.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_es.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_es.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_es.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4088 @@ + + + + + AIMSettings + + Login: + Usuario: + + + Forgot your AIM password? + ¿Olvidó su contraseña de AIM? + + + Get a new AIM Account + Obtenga una nueva cuenta de AIM + + + Password: + Contraseña: + + + AIM Settings + Preferencias de AIM/ICQ + + + + AboutWindow + + About + Acerca de... + + + Copyright (C)2008 Mbdsys + + + + Authors + Autores + + + Close + Cerrar + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Transferencia de Archivos + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Aceptar + + + &Cancel + &Cancelar + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacto: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Archivo: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Archivo entrante</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Editar mi perfil + + + + AddAccount + + Configure your account: + Configurar su cuenta: + + + &Next + &Siguiente + + + Need help? + ¿Necesitas Ayuda? + + + You don't have any account ? Click here + ¿No posees ninguna cuenta? Has click aquí + + + &Back + &Atras + + + Cancel + Cancelar + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Cancelar + + + Contact Type (protocol): + Tipo de Contacto (protocolo): + + + Contact ID: + ID del contacto: + + + Account: + Cuenta: + + + Enable + Activar + + + Login + Usuario + + + Add + Agregar + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Contraseña: + + + Need help? + ¿Necesitas Ayuda? + + + &Back + &Atras + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + &Conectar + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Login</span><br><br><span>Por favor ingrese su dirección de Email y<br>contraseña</span> + + + Email Address: + Dirección de E-Mail: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Contraseña: + + + Need help? + ¿Necesitas Ayuda? + + + &Back + &Atras + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + &Conectar + + + Activate presence and chat (SIP/SIMPLE) + Activar presencia y mensajería (SIP/SIMPLE) + + + Displayname: + Nombre a mostrar: + + + login / username: + Ingreso / Nombre de usuario: + + + Account name: + Nombre de la cuenta: + + + Proxy: + Proxy: + + + : + : + + + Server: + Servidor: + + + SIP Domain / Realm: + Dominio SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configurar su perfil de SIP</span><br><br><span>Por favor ingrese la información que permitirá<br/>que su programa de Telefonía se conecte con su<br/>cuenta SIP</span + + + Advanced + Avanzado + + + + AdvancedConfigWindow + + Close + Cerrar + + + Preference Name + Nombre de la Preferencia + + + Type + Tipo + + + Value + Valor + + + Default Value + Valor por Defecto + + + Save + Salvar + + + Status + Estado + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Agregar + + + Advanced Settings + Preferencias Avanzadas + + + Advanced Configuration Window + Ventana Avanzada de Configuración + + + Automatically answer incoming calls from + Contestar automáticamente las llamadas entrantes de + + + Remove + Eliminar + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Cuidado, esta sección es para usuarios avanzados.<br>Cualquier error puede causar daños en el programa. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Formulario + + + + AudioSettings + + Reset + Reiniciar + + + Audio Codecs + Codecs de Audio + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulario + + + + AvatarWidget + + Form + Formulario + + + + BrowserSoftUpdateWindow + + Close + Cerrar + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Tercero: + + + 1st: + Primero: + + + 2nd: + Segundo: + + + (+ country code) phone number + (+ código del país) número de teléfono + + + Forward all unanswered calls to message box + Redireccionar llamadas no contestadas a la casilla de mensajes + + + Disable call forwarding + Desactivar redirección de llamada + + + Forward all unanswered calls to following phone numbers: + Redireccionar llamadas no contestadas a los siguientes números de teléfono: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Por ejemplo +3314500XXXX (+33 es el código del País y 14500XXXX es el número de teléfono) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Llamada entrante + + + Message + Mensaje + + + + ChatLogViewer + + Chat History + Historial de Charlas + + + &Contact + &Contacto + + + &Tools + &Herramientas + + + &Help + &Ayuda + + + &Actions + &Acciones + + + Main Toolbar + Barra de herramientas principal + + + Call Contact + Llamar al Contacto + + + Send a File + Envíar un Archivo + + + createChatConf + createChatConf + + + Show Contact Info + Mostrar Información del Contacto + + + blockContact + blockContact + + + &Save History As... + &Salvar Historial Cómo... + + + actionRestartChat + actionRestartChat + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Contacto + + + &Tools + &Herramientas + + + &Actions + &Acciones + + + Main Toolbar + Barra de herramientas principal + + + Call Contact + Llamar al Contacto + + + Send a File + Envíar un Archivo + + + Show Contact Info + Mostrar Información del Contacto + + + blockContact + blockContact + + + &Save History As... + &Salvar Historial Cómo... + + + @company@ + + + + + MainWindow + Ventana Principal + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + &Cerrar + + + Conference + Conferencia + + + + ChatRoomInviteWidget + + Chat room + Sala de charla + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de Charla</span></p></body></html> + + + (Conference participants) + (Participantes de la conferencia) + + + &Remove + &Eliminar + + + &Start + &Iniciar + + + Group Name + Nombre del Grupo + + + &Add + &Agregar + + + + ChatToaster + + Message + Mensaje + + + Incoming Chat + Charla Entrante + + + + ChatWidget + + Form + Formulario + + + + ConferenceCallWidget + + Cancel + Cancelar + + + Start + Iniciar + + + Phone number 2: + Número de teléfono 2: + + + Phone number 1: + Número de Teléfono 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Iniciar + + + Cancel + Cancelar + + + + ContactGroupPopupMenu + + Remove Contact Group + Eliminar el Grupo de Contactos + + + Rename Contact Group + Renombrar Grupo de Contactos + + + Delete group + Eliminar grupo + + + Do you really want to delete this group? + ¿Realmente desea eliminar este grupo? + + + &Yes + &Sí + + + &No + &No + + + + ContactList + + Contact List + Lista de Contactos + + + goupname + + + + + ContactWidget + + No mobile phone number set + No ha establecido un número de teléfono móvil + + + No landline phone number set + No ha establecido un número de teléfono fijo + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Cancelar + + + Program Failure + Falla en el programa + + + Send + Envíar + + + Optional Information + Información opcional + + + Your Mail: + Su Correo: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + No disponible + + + Click here to change your call forward settings + Has click aquí para cambiar las preferencias del reenvío de llamadas + + + Call forward mode: + Modo redirección de llamada: + + + Purchase call out credits + Comprar créditos "call out" + + + Call Forward Method + Método de reenvío de llamada + + + Call Voice Mail + Llamar al correo de voz + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Carpeta del Administrador + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Haga Click en los elementos de variados colores cambiantes para envíar sonidos a su interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Pulse aquí para llamar a su correo de voz + + + New Voice Mail: + Nuevo Mensaje de Voz: + + + Click here to see missed call(s) + Has click aquí para ver llamada(s) perdida(s) + + + Missed Call(s): + Llamada(s) Perdida(s): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Descarga + + + Upload + Subida + + + Click here to change your download folder + Haga Click aquí para cambiar la carpeta de descargas + + + Download folder: + Carpeta de Descargas: + + + Clean all items in the list + Limpiar todos los elementos de la lista + + + &Clean + &Limpiar + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Cancelar + + + Form + Formulario + + + Pause + Pausa + + + <i>From:</i> + <i>De:</i> + + + + GeneralSettings + + When I double-click on a contact + Cuando haga doble-click sobre un contacto + + + Call cell phone or land line if contact not online + Llamar al teléfono celular o de línea fija si el contacto no se encuentra conectado + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Estado inactivo + + + minutes + minutos + + + Show me as "Away" when I am inactive for: + Mostrarme como "Ausente" cuando esté inactivo por: + + + When I start my computer + Cuando inicia mi computadora + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Usuario: + + + Password: + Contraseña: + + + GoogleTalk Settings + Preferencias de GoogleTalk + + + Forgot your GoogleTalk password? + ¿Olvidó su contraseña de GoogleTalk? + + + Get a new GoogleTalk Account + Consiga una nueva cuenta de GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Cancelar + + + HTTP Proxy Address: + Dirección Proxy HTTP: + + + HTTP Proxy Port Number: + Número de Puerto del Proxy HTTP: + + + HTTP Proxy Login: + Usuario del Proxy HTTP: + + + HTTP Proxy Password: + Contraseña del Proxy HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autentificación del Proxy HTTP</span><br><br><span>Su proxy local HTTP usa autentificación<br>Por favor ingrese el nombre de usuario y contraseña del mismo</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Usuario: + + + Password: + Contraseña: + + + ICQ Settings + Preferencias de AIM/ICQ + + + Forgot your ICQ password? + ¿Olvidó su contraseña de AIM? + + + Get a new ICQ Account + Obtenga una nueva cuenta de AIM + + + + IMAccountManager + + Close + Cerrar + + + Login + Usuario + + + Add + Agregar + + + Delete + Eliminar + + + Modify + Modificar + + + Protocol + Protocolo + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Cancelar + + + Save + Salvar + + + IM Account Settings + Preferencias de la cuenta de IM + + + + IMContactManager + + Add + Agregar + + + Delete + Eliminar + + + Contact Type (protocol) + Tipo de contacto (protocolo) + + + Click on the add button below to add a new ID + Haga click en el botón "Agregar" más abajo para ingresar un nuevo ID + + + Contact ID + ID del Contacto + + + + IMProfileWidget + + Enter your nickname here + Ingrese su apodo aquí + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Agregar una cuenta de mensajería instantánea (MSN, AIM, GoogleTalk...) + + + Add an IM account + Agregar una cuenta de IM + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Cancelar + + + OK + OK + + + Go Up + Arriba + + + Refresh + Recargar + + + + JabberSettings + + Login: + Usuario: + + + Password: + Contraseña: + + + Jabber Settings + Preferencias de Jabber + + + Connect Server: + Servidor de conexión: + + + <u>Advanced Options</u> + <u>Opciones Avanzadas</u> + + + Require TLS + Requiere TLS + + + Port: + Puerto: + + + Use TLS if available + Usar TLS si está disponible + + + Allow plaintext authentication over unencrypted streams + Permitir autentificación en formato de texto plano sobre trasmisiones no encriptadas + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forzar antiguo (Puerto 5223) SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + ¿No encuentra su idioma? ¿Sabe que puede realizar su propia traducción en Launchpad? + + + More information here. + Más información Aquí. + + + + LogAccount + + Password: + Contraseña: + + + Need help? + ¿Necesitas Ayuda? + + + Cancel + Cancelar + + + Delete + Eliminar + + + @product@ - Login + + + + + Account: + Cuenta: + + + &Connect + &Conectar + + + Forgot your @company@ password? + + + + + &Modify + &Modificar + + + Configure a &New Profile + Configurar un &Nuevo Perfil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Usuario: + + + Password: + Contraseña: + + + MSN Settings + Preferencias de MSN + + + Forgot your MSN password? + ¿Olvidó su contraseña de MSN? + + + Get a new MSN Account + Obtenga una nueva cuenta de MSN + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Ventana Principal + + + Command::terminate() + Comando::terminar() + + + Command::start() + Comando::iniciar() + + + Accept Call + Aceptar llamada + + + Send Chat Message + Enviar un mensaje de Charla + + + Make Call + Realizar una llamada + + + Hang Up + Colgar + + + + ManageBlockedUsersSettings + + Close + Cerrar + + + Unblock User + Desbloquear Usuario + + + Manage blocked users + Administrar usuarios bloqueados + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Selecciona los eventos en los cuales debería reproducirse un sonido. + + + + NotificationSettingsItem + + Sound file + Archivo de sonido + + + Find a sound file + Buscar un archivo de sonido + + + Play sound file + Ejecutar archivo de sonido + + + Play + Reproducir + + + + NotifyDialog + + File Transfer + Transferencia de Archivos + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estado:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualizar</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Aceptar + + + Status + Estado + + + 00:00:00 + 00:00:00 + + + Nickname + Apodo + + + &Reject + &Rechazar + + + Dialpad + Teclado + + + Audio Smileys + Emoticonos audibles + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Administrar usuarios bloqueados + + + Privacy Rules + Reglas de privacidad + + + Always sign in as "Invisible" (appear offline to all users) + Siempre iniciar sesión cómo "Invisible" (aparecerá desconectado para el resto de los usuarios) + + + Allow chats from + Permitir charlas de + + + Anyone + Cualquiera + + + Only people from my contact list + Solamente personas de mi lista de contactos + + + Allow calls from + Permitir llamadas de + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Cancelar + + + Save + Salvar + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + General + + + Network IDs (MSN, Jabber...) + ID de Red (MSN, Jabber...) + + + Advanced >> + Avanzado >> + + + Fill in all your network Id to stay connected with your contacts + Completa todas tus IDs de Red para mantenerte conectado con tus contactos + + + Contact + Contacto + + + Group: + Grupo: + + + Last Name: + Apellido: + + + First Name: + Primer Nombre: + + + Details + Detalles + + + Web/blog: + Web/blog: + + + Country: + País: + + + State: + Estado: + + + City: + Ciudad: + + + Gender: + Sexo: + + + Birth Date: + Fecha de Nacimiento: + + + Email: + E-Mail: + + + Notes + Notas + + + Phone Numbers + Números de Teléfono + + + Home phone + Teléfono de Casa + + + Mobile phone + Teléfono celular + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Desconocido + + + Male + Masculino + + + Female + Femenino + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Cuentas + + + Accounts Settings + Configuración de Cuentas + + + + QtAddAccount + + Configure your voip account + Configurar su cuenta de VoIP + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Usuario + + + Please enter an email address. + Por favor ingrese una dirección de Email. + + + Please enter your email address<br/>and your password + Por favor introduzca su dirección de correo electrónico<br/>y su contraseña + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Por favor complete la información que<br/>permitirá que su programa de telefonía se conecte a su<br/>cuenta SIP + + + Configure your SIP profile + Configurar el perfil de SIP + + + + QtAdvancedIMContactManager + + Cancel + Cancelar + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Eliminar + + + + QtAdvancedSettings + + Advanced + Avanzado + + + Advanced Settings + Preferencias Avanzadas + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Avanzado + + + Audio + Audio + + + Audio Settings + Preferencias de Audio + + + + QtCallBar + + +(country code) number or nickname + +(código del país) número o apodo + + + + QtCallForwardSettings + + Call Forward + Reenvío de Llamada + + + Call Forward Settings + Preferencias de redirección de llamada + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Guardar como + + + + QtChatLogViewer + + Account + + + + Edit Contact + Editar Contacto + + + + QtChatTabWidget + + Close chat + Cerrar conversación + + + + QtChatWidget + + %1 is connected. + %1 está conectado. + + + %1 is disconnected. + %1 está desconectado. + + + send + envíar + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Editar Contacto + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + LLamada SIP + + + Call land line + Llamar a una línea fija + + + Call Mobile + Llamar a un teléfono celular + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Ahora puede informar a su primer interlocutor que será parte de la conferencia.</b><br><br>Cuando esté listo, haga Click en el botón más abajo. Su primer interlocutor estará en modo de espera cuando se esté llamando al segundo.<br> + + + Hold first interlocutor and call second one + Ponga en espera el primer interlocutor y llame al segundo + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Ahora puede informar a su segundo interlocutor que será parte de la conferencia.</b><br><br>When it's done, click the button below to start the conference. + + + Start Conference + Iniciar Conferencia + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Sí + + + &No + &No + + + Merge %1 with %2? + ¿Fusionar %1 con %2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Sí + + + &No + &No + + + Home phone + Teléfono de Casa + + + Mobile phone + Teléfono celular + + + @product@ + + + + + Edit Contact + Editar Contacto + + + Do you really want to delete this contact? + ¿Realmente desea eliminar este contacto? + + + Start chat + Iniciar charla + + + Delete contact + Eliminar contacto + + + Call + Llamar + + + Free call + + + + Work phone + Teléfono de la oficina + + + Send SMS + Enviar SMS + + + Edit contact + Editar contacto + + + Block contact + Bloquear contacto + + + Invite to conference + Invitar a la conferencia + + + Go to website + Ir al sitio Web + + + Send file + Envíar un archivo + + + Forward to mobile phone + Redireccionar hacia un teléfono celular + + + + QtContactWidget + + No mobile phone number set + No ha establecido un número de teléfono móvil + + + No landline phone number set + No ha establecido un número de teléfono fijo + + + Click here to call + Pulsar aquí para llamar + + + Click here to set a phone number + Pulse aquí para establecer un número de teléfono + + + Click here to edit the contact + Pulse aquí para editar el contacto + + + Click here to send a SMS + Pulsar aquí para enviar un SMS + + + Click here to start a chat + Pulse aquí para empezar una charla + + + Click here to start a free call + Pulsar aquí para hacer una llamada gratuíta + + + Click here to send a file + Haga Click aquí para enviar un archivo + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + ¿Quiere llamar a su correo de voz? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Sí + + + &No + &No + + + Choose a directory + Elige un directorio + + + Overwrite File? + ¿Sobreescribir archivo? + + + A file called %1 already exists.Do you want to overwrite it? + Un archivo con el nombre %1 ya existe. ¿Desea sobreescribirlo? + + + File size error + Error en el tamaño del archivo + + + %1 exceeds the maximum authorized size. + %1 supera el tamaño máximo permitido. + + + %1 has size 0. + %1 tiene tamaño 0. + + + %1 is a directory. + %1 es un directorio. + + + You can not send a directory. + No puede envíar un directorio. + + + %1 is a shortcut. + %1 es una acceso directo. + + + You can not send a shortcut. + No puede envíar un acceso directo. + + + All Files (*.* *) + Todos los archivos (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Cancelar + + + Remove + Eliminar + + + Pause + Pausa + + + Starting + Iniciando + + + From: + De: + + + To: + Para: + + + Open + Abrir + + + Resume + Resumir + + + Waiting for anwser... + Esperando respuesta... + + + Done + Hecho + + + Failed + Ha fallado + + + Paused + Pausada + + + Paused by peer + Pausado por el interlocutor + + + Cancelled + Cancelado + + + Cancelled by peer + Cancelado por el interlocutor + + + Downloading... + Descargando... + + + Uploading... + Enviando... + + + Waiting for peer... + Esperando al cliente... + + + An error occured during the file transfer + Un error ha ocurrido durante la transferencia del archivo + + + This may be caused by : + Esto pudo ser causado por : + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + General + + + General Settings + Preferencias Generales + + + + QtHistory + + Incoming call + Llamada entrante + + + Outgoing call + Llamada saliente + + + Missed call + Llamada perdida + + + Rejected call + Llamada rechazada + + + Outgoing SMS + SMS salientes + + + Do you want to call %1? + Quieres llamar a %1? + + + Chat session + Sesión de charla + + + @product@ - Call History + + + + + Type + Tipo + + + Name/ID + Nombre/ID + + + Date + Fecha + + + Duration + Duración + + + + QtHistoryWidget + + Erase this entry + Eliminar esta entrada + + + Open in SMS window + Abrir en la ventana de SMS + + + Call this peer + Llamar a este interlocutor + + + Show chat log + Mostrar el historial de la charla + + + + QtIMAccountManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + &Eliminar + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Desconectado + + + Error: %1 + Error: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + En línea + + + Invisible + Invisible + + + Away + Ausente + + + Do not disturb + No molestar + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Por favor ingreso un nombre de usuario + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + &Eliminar + + + Online + En línea + + + Invisible + Invisible + + + Away + Ausente + + + Do Not Disturb + No molestar + + + Disconnect + Desconectar + + + Delete Account + Eliminar cuenta + + + Are sure you want to delete the account <b>%1</b>? + ¿Está seguro de borrar esta cuenta <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Editar mi perfil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Idioma + + + Language Settings + Confuguración de Idioma + + + + QtLogAccount + + Invalid account + Cuenta incorrecta + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Llamada entrante (tono de llamda) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Llamada cancelada (tono de cuelgue) + + + Incoming chat + Charla entrante + + + IM account connected + Cuenta de IM conectada + + + IM account disconnected + Cuenta de IM desconectada + + + Contact online + Contacto en línea + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Elija un archivo de sonido + + + Sounds + Sonidos + + + + QtPhoneCall + + Status + Estado + + + Incoming Call + Llamada entrante + + + Resume + Resumir + + + Hang-up + Colgar + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Error + + + Talking + Hablando + + + Dialing + Marcando + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Llamando + + + Redirected + Redireccionado + + + Initialization... + Inicialización... + + + Closed + Cerrado + + + Hold + Pausar + + + Add contact + Agregar un contacto + + + Ca&ncel + Ca&ncelar + + + Talking - Conference + Hablando - Conferencia + + + Add a Contact + Añadir contacto + + + + QtPresenceMenuManager + + Online + En línea + + + Invisible + Invisible + + + Away + Ausente + + + Do Not Disturb + No molestar + + + Log off + Cerrar Sesión + + + + QtPrivacySettings + + Privacy + Privacidad + + + Privacy Settings + Configuración de privacidad + + + + QtProfileBar + + Click here to change your status + Pulsa aquí para cambiar tu estado + + + active + activo + + + voicemail + Correo de voz + + + inactive + inactivo + + + unauthorized + no autorizado + + + Set global presence to: + Establecer preferencia global a: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Avanzado >> + + + @product@ + + + + + A contact must have a group, please set a group. + Un contacto debe tener un grupo, por favor establezca uno. + + + << Simple + << Simple + + + Select your avatar + Seleccione su avatar + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Cancelar + + + Conference + Conferencia + + + Call + Llamar + + + Account + + + + Add a Contact + Añadir contacto + + + You have unfinished call(s). + Posee llamada(s) sin finalizar. + + + @product@ - Warning + + + + + Home + Inicio + + + Are you sure you want to exit the application? + ¿Está seguro que desea salir de la aplicación? + + + &Exit + &Salir + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avanzado + + + General + General + + + Accounts + Cuentas + + + Audio + Audio + + + Call Forward + Reenvío de Llamada + + + Language + Idioma + + + Privacy + Privacidad + + + Video + Video + + + Voicemail + Correo de voz + + + security + Seguridad + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nombre de grupo incorrecto + + + Group name cannot be empty + El nombre del grupo no puede estar vacío + + + + QtSecuritySettings + + Security + Seguridad + + + Security Settings + Configuraciones de seguridad + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Por favor ingrese un número de teléfono. + + + Do you want to continue? + ¿Quiere continuar? + + + Your SMS has not been sent + Su SMS no ha sido enviado + + + Your SMS has been sent + Su SMS ha sido enviado + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + No puede envíar un mensaje vacío. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + No conectado + + + Register done + Registro correcto + + + Unregister done + Eliminación de registro completado + + + Connecting + Conectando + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Estado + + + @product@ + + + + + Call SIP + LLamada SIP + + + Call land line + Llamar a una línea fija + + + Call Mobile + Llamar a un teléfono celular + + + Call @company@ + + + + + Call + Llamar + + + Send SMS + Enviar SMS + + + Online + En línea + + + Invisible + Invisible + + + Away + Ausente + + + Do Not Disturb + No molestar + + + Internet Connection Error + Error en la conexión a Internet + + + Offline + Fuera de línea + + + Connecting... + Conectando... + + + Send a SMS + Envíar SMS + + + Start a chat + Iniciar charla + + + Place Call + Iniciar una llamada + + + Send File + Envíar un archivo + + + Multiple Status + Estados múltiples + + + Unknown Status + Estado desconodido + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Cancelar + + + @product@ - Proceed Conference + + + + + Edit My Profile + Editar mi perfil + + + Add a Contact + Añadir contacto + + + Hide Unavailable Contacts + Ocultar contactos no disponibles + + + Show Unavailable Contacts + Mostrar contactos no disponibles + + + Hide Groups + Ocultar grupos + + + Show Groups + Mostrar grupos + + + You have unfinished call(s). + Posee llamada(s) sin finalizar. + + + Are you sure you want to log off? + ¿Está seguro de cerrar sesión? + + + &Log Off + &Cerrar sesión + + + Disable &Video Calls + Activar/Desactivar &videollamadas + + + Enable &Video Calls + Activar/Desactivar &videollamadas + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Una conferencia no puede iniciarse durante llamadas de teléfono activas.</b><br><br>Finalice todas las llamadas y vuelva a intentarlo. + + + @product@ - Warning + + + + + Log &Off... + Cerrar &Sesión... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Lista de contactos + + + + QtUserProfile + + Edit Contact + Editar Contacto + + + &Authorize + &Autorizar + + + &Block + &Bloquear + + + Network error. + Error en la Red. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Email y/o contraseña introducida incorrecta + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Video + + + Normal + Normal + + + Good + Bueno + + + Very good + Muy bueno + + + Excellent + Excelente + + + Video Settings + Preferencias de vídeo + + + + QtVoicemailSettings + + Voicemail + Correo de voz + + + Voicemail Settings + Configuración de correo de voz + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Cancelar + + + Save + Salvar + + + Title + Título + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Aceptar + + + &Hidden + + + + + &Tools + &Herramientas + + + &Help + &Ayuda + + + &Actions + &Acciones + + + @company@ + + + + + &Close + &Cerrar + + + Dialpad + Teclado + + + @product@ + + + + + Start Conference + Iniciar Conferencia + + + Send SMS + Enviar SMS + + + Contacts + Contactos + + + History + Historial + + + Clear &History + Limpiar &Historial + + + ToolBar + Barra de herramientas + + + Show/Hide Unavailable &Contacts + Mostrar/ocultar &contactos no disponibles + + + &Chat Sessions + Sesiones de &Charla + + + &All + &Todo + + + &HangUp + &Colgar + + + &Hold/Resume + &Pausar/Resumir + + + Show/Hide &Groups + Mostar/Ocultar &Grupos + + + &Outgoing Calls + Llamadas &salientes + + + &Incoming Calls + Llamadas &entrantes + + + &Missed Calls + Llamadas &perdidas + + + Enable/Disable &Video Calls + Activar/Desactivar &videollamadas + + + Short Text &Messages (SMS) + &Mensajes cortos de texto (SMS) + + + Rejected Calls + Llamadas rechazadas + + + &Contacts + &Contactos + + + &About... + &Acerca de... + + + Add &Contact... + Agregar una &Cuenta... + + + &Configuration... + &Configuración... + + + Send SMS... + Enviar SMS... + + + View My &Profile... + Mostrar Mi &Perfil... + + + View My Profile + Mostrar Mi Perfil + + + Start &Conference... + Iniciar &Conferencia... + + + &Find Contact... + &Buscar Contacto... + + + Log &Off... + Cerrar &Sesión... + + + Log Off + Cerrar Sesión + + + Show &Chat Window + Mostrar ventana de &Charla + + + Show Chat Window + Mostrar ventana de Charla + + + Show &File Transfer + Mostrar transferencia del &Archivo + + + Add Contact + Agregar un contacto + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Agregar + + + SMS + SMS + + + Conference + Conferencia + + + + RenameGroupDialog + + Cancel + Cancelar + + + OK + OK + + + Enter the new group name: + Introduzca el nombre del nuevo grupo: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Formulario + + + Enable call encryption + Activar llamadas encriptadas + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Actualizar su perfil + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + ID de SIP: + + + ICQ ID: + ID de AIM/ICQ: + + + AIM ID: + ID de AIM/ICQ: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Envíar + + + @product@ - SMS + + + + + Click here to add a phone number + Pulse aquí para añadir un número de teléfono + + + 0 /160 + 0 /160 + + + Enter your signature here + Introduzca su firma aquí + + + Signature: + Firma: + + + Phone number(s): + Número(s) de teléfono: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Ingrese el/los número(s) de teléfono aquí<br>Deben estar separados por & ó ; ó , + + + + SoftUpdateWindow + + Cancel + Cancelar + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulario + + + + VideoSettings + + Normal + Normal + + + Good + Bueno + + + Very good + Muy bueno + + + Excellent + Excelente + + + Enable video + Activar vídeo + + + Webcam Selection + Selección de la Webcam + + + Webcam device: + Dispositivo de Webcam: + + + Webcam Preview + Previsualización de la Webcam + + + Connection Type + Tipo de conexión + + + Video quality + Calidad de vídeo + + + Down (kbit/s) + Bajada (kbit/s) + + + Up (kbit/s) + Subida (kbit/s) + + + 0 to 512 + 0 a 512 + + + 0 to 128 + 0 a 128 + + + 512 to 2048 + 512 a 2048 + + + 128 to 256 + 128 a 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + La calidad del vídeo depende del ancho de banda de su conexión a Internet + + + Make a test video call + Hacer una videollamada de prueba + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Formulario + + + Phone number of your voicemail: + Número de teléfono de su correo de voz: + + + Please fill in here the information about your voicemail + Por favor ingrese la información necesaria de su correo de voz + + + + Wizard + + Cancel + Cancelar + + + Finish + Finalizar + + + Next > + Siguiente > + + + < Back + < Atras + + + Simple Wizard - Step %1 of %2 + Asistente Simple - Paso %1 de %2 + + + + YahooSettings + + Login: + Usuario: + + + Password: + Contraseña: + + + Yahoo! Settings + Configuración de Yahoo! + + + Use Yahoo! Japan server + Utilizar el servidor de Yahoo! de Japón + + + Forgot your Yahoo! password? + ¿Olvidó su contraseña de Yahoo! ? + + + Get a new Yahoo! Account + Obtenga una nueva cuenta de Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fi.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fi.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fi.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fi.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4152 @@ + + + + + AIMSettings + + Login: + Tunnus: + + + Forgot your AIM password? + Oletko unohtanut AIM salasanasi? + + + Get a new AIM Account + Luo uusi AIM tili + + + Password: + Salasana: + + + AIM Settings + AIM/ICQ Asetukset + + + + AboutWindow + + About + Tietoa + + + Copyright (C)2008 Mbdsys + + + + Authors + Tekijät + + + Close + Sulje + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Tiedostonsiirto + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Hyväksy + + + &Cancel + &Peruuta + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yhteystiedot: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tiedoston nimi: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Tuleva tiedosto</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Muokkaa omaa profiilia + + + + AddAccount + + Configure your account: + Muokkaa omaa tiliä: + + + &Next + &Seuraava + + + Need help? + Tarvitsetko Apua? + + + You don't have any account ? Click here + Sinulla ei ole yhtään tiliä. Napsauta tästä + + + &Back + &Takaisin + + + Cancel + Peruuta + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Peruuta + + + Contact Type (protocol): + Yhteystieto Tyyppi: + + + Contact ID: + Yhteystieto ID: + + + Account: + Tili: + + + Enable + Salli + + + Login + + + + + Add + Lisää + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Salasana: + + + Need help? + Tarvitsetko Apua? + + + &Back + &Takaisin + + + Cancel + Peruuta + + + @product@ - Login + + + + + &Connect + &Yhdistä + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + Sähköpostiosoite: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Salasana: + + + Need help? + Tarvitsetko Apua? + + + &Back + &Takaisin + + + Cancel + Peruuta + + + @product@ - Login + + + + + &Connect + &Yhdistä + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + Näytettävä nimi: + + + login / username: + + + + + Account name: + Tilin nimi: + + + Proxy: + Välityspalvelin: + + + : + : + + + Server: + Palvelin: + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Sulje + + + Preference Name + Yksilöllinen Nimi + + + Type + Tyyppi + + + Value + Arvo + + + Default Value + Oletusarvo + + + Save + Tallenna + + + Status + Tila + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Lisää + + + Advanced Settings + Lisäasetukset + + + Advanced Configuration Window + Lisäasetus Ikkuna + + + Automatically answer incoming calls from + Vastaa automaattisesti tuleviin puheluihin käyttäjältä + + + Remove + Poista + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Varoitus, tämä alue on edistyneille käyttäjille.<br>Yksikin virhe voi vaurioittaa ohjelmaa pahasti. + + + + AppearanceSettings + + Toolbar + Työkalupalkki + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + Tyhjennä + + + Audio Codecs + Äänikoodekit + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + Kokeile + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Sulje + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3. + + + 1st: + 1. + + + 2nd: + 2. + + + (+ country code) phone number + (+ maatunnus) puhelin numero + + + Forward all unanswered calls to message box + Ohjaa kaikki vastaamattomat puhelut vastaajaan + + + Disable call forwarding + Estä soitonohjaus + + + Forward all unanswered calls to following phone numbers: + Ohjaa kaikki vastaamattomat puhelut seuraaviin puhelinnumeroihin: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Esim. +3584012XXXX (+358 on maatunnus ja 04012XXXX on puhelin numero) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Saapuva puhelu + + + Message + Viesti + + + + ChatLogViewer + + Chat History + Keskusteluhistoria + + + &Contact + &Kontakti + + + &Tools + &Työkalut + + + &Help + &Ohje + + + &Actions + &Toiminnot + + + Main Toolbar + Päätyökalurivi + + + Call Contact + Soita Kontaktiin + + + Send a File + Lähetä tiedosto + + + createChatConf + + + + + Show Contact Info + Näytä Yhteystiedot + + + blockContact + torju kontakti + + + &Save History As... + &Tallenna Historia... + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Kontakti + + + &Tools + &Työkalut + + + &Actions + &Toiminnot + + + Main Toolbar + Päätyökalurivi + + + Call Contact + Soita Kontaktiin + + + Send a File + Lähetä tiedosto + + + Show Contact Info + Näytä Yhteystiedot + + + blockContact + torju kontakti + + + &Save History As... + &Tallenna Historia... + + + @company@ + + + + + MainWindow + PääIkkuna + + + &Edit + &Muokkaa + + + Cu&t + Lei&kkaa + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopioi + + + Ctrl+C + Ctrl+C + + + &Paste + L&iitä + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + &Sulje + + + Conference + Neuvottelu + + + + ChatRoomInviteWidget + + Chat room + Keskustelu + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Keskustelu</span></p></body></html> + + + (Conference participants) + + + + + &Remove + &Poista + + + &Start + &Aloita + + + Group Name + Ryhmän nimi + + + &Add + &Lisää + + + + ChatToaster + + Message + Viesti + + + Incoming Chat + Tuleva Keskustelu + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Peruuta + + + Start + Aloita + + + Phone number 2: + Puhelin numero 2: + + + Phone number 1: + Puhelin numero 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + << &Poista + + + Available Contacts + Käytettävissä olevat Kontaktit + + + &Start + &Aloita + + + Cancel + Peruuta + + + + ContactGroupPopupMenu + + Remove Contact Group + Poista Kontakti Ryhmä + + + Rename Contact Group + Nimeä Kontakti Ryhmä Uudelleen + + + Delete group + Poista ryhmä + + + Do you really want to delete this group? + Haluatko varmasti poistaa tämän ryhmän? + + + &Yes + &Kyllä + + + &No + &Ei + + + + ContactList + + Contact List + Kontakti Luettelo + + + goupname + + + + + ContactWidget + + No mobile phone number set + Ei matkapuhelin numeroa + + + No landline phone number set + Ei lankapuhelin numeroa + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Peruuta + + + Program Failure + Ohjelma Virhe + + + Send + Lähettäjä + + + Optional Information + Lisätiedot + + + Your Mail: + Sähköposti: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Ei tavoittevissa + + + Click here to change your call forward settings + Napsauta muokataksesi soitonohjaus asetuksia + + + Call forward mode: + Soitonsiirto tila: + + + Purchase call out credits + Hanki kredittejä ulossoittoon + + + Call Forward Method + Soitonsiirto metodi + + + Call Voice Mail + Soita vastaajaan + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Juurikansio + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Soita vastaajaan napsauttamalla tästä + + + New Voice Mail: + Uusi Ääniviesti: + + + Click here to see missed call(s) + Napsauta nähdäksesi vastaamattomat puhelut + + + Missed Call(s): + Vastaamattomat Puhelut: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Ladatut + + + Upload + Lähetetyt + + + Click here to change your download folder + Napsauta muuttaaksesi latauskansiota + + + Download folder: + Latauskansio: + + + Clean all items in the list + + + + + &Clean + &Tyhjennä + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Peruuta + + + Form + + + + + Pause + Pysäytä + + + <i>From:</i> + <i>Lähettäjä:</i> + + + + GeneralSettings + + When I double-click on a contact + Kun kaksoisnapsautan kontaktia + + + Call cell phone or land line if contact not online + Soita matka- tai lankapuhelimeen jos kontakti ei ole tavoitettavissa + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Tilan asetus + + + minutes + minuuttiin + + + Show me as "Away" when I am inactive for: + Näytä tilaksi "Poissa" kun en ole aktiivinen: + + + When I start my computer + Kun käynnistän tietokoneen + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Tunnus: + + + Password: + Salasana: + + + GoogleTalk Settings + GoogleTalk Asetukset + + + Forgot your GoogleTalk password? + Olet unohtanut GoogleTalk salasanasi? + + + Get a new GoogleTalk Account + Luo uusi GoogleTalk tili + + + + HttpProxyLoginWindow + + Cancel + Peruuta + + + HTTP Proxy Address: + HTTP Välityspalvelimen Osoite: + + + HTTP Proxy Port Number: + HTTP Välityspalvelimen Portti: + + + HTTP Proxy Login: + HTTP Välityspalvelmen tunnus: + + + HTTP Proxy Password: + HTTP Välityspalvelimen Salasana: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + OK + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Tunnus: + + + Password: + Salasana: + + + ICQ Settings + AIM/ICQ Asetukset + + + Forgot your ICQ password? + Oletko unohtanut AIM salasanasi? + + + Get a new ICQ Account + Luo uusi AIM tili + + + + IMAccountManager + + Close + Sulje + + + Login + + + + + Add + Lisää + + + Delete + Poista + + + Modify + Muokkaa + + + Protocol + Protokolla + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Peruuta + + + Save + Tallenna + + + IM Account Settings + IM Tilin Asetukset + + + + IMContactManager + + Add + Lisää + + + Delete + Poista + + + Contact Type (protocol) + Kontaktin Tyyppi + + + Click on the add button below to add a new ID + Napsauta lisää painiketta lisätäksesi uuden ID:n + + + Contact ID + Kontakti ID + + + + IMProfileWidget + + Enter your nickname here + Anna nimimerkki tähän + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Peruuta + + + OK + OK + + + Go Up + Mene ylös + + + Refresh + Päivitä + + + + JabberSettings + + Login: + Tunnus: + + + Password: + Salasana: + + + Jabber Settings + Jabber Asetukset + + + Connect Server: + Yhteys Palvelin: + + + <u>Advanced Options</u> + <u>Lisäasetukset Asetukset</u> + + + Require TLS + Vaatii TLS:n + + + Port: + Portti: + + + Use TLS if available + Käytä TLS:ää jos mahdollista + + + Allow plaintext authentication over unencrypted streams + Salli viestien todennus salaamattomilla yhteyksillä + + + 5222 + 5222 + + + Force old (port 5223) SSL + Käytä vanhaa (portti 5223) SSL:ää + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Salasana: + + + Need help? + Tarvitsetko Apua? + + + Cancel + Peruuta + + + Delete + Poista + + + @product@ - Login + + + + + Account: + Tili: + + + &Connect + &Yhdistä + + + Forgot your @company@ password? + + + + + &Modify + &Muokkaa + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Tunnus: + + + Password: + Salasana: + + + MSN Settings + MSN Asetukset + + + Forgot your MSN password? + Olet unohtanut MSN salasanasi? + + + Get a new MSN Account + Luo uusi MSN tili + + + Use HTTP method + + + + + + MainWindow + + MainWindow + PääIkkuna + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + Hyväksy soittto + + + Send Chat Message + Lähetä Keskustelu Viesti + + + Make Call + Soita + + + Hang Up + Vastaa + + + + ManageBlockedUsersSettings + + Close + Sulje + + + Unblock User + Poista käyttäjän torjunta + + + Manage blocked users + Hallitse torjuttuja käyttäjiä + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + Äänitiedosto + + + Find a sound file + Etsi äänitiedosto + + + Play sound file + Toista äänitiedosto + + + Play + Toista + + + + NotifyDialog + + File Transfer + Tiedostonsiirto + + + &Ok + &OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Hyväksy + + + Status + Tila + + + 00:00:00 + 00:00:00 + + + Nickname + Nimimerkki + + + &Reject + + + + + Dialpad + Näppäimistö + + + Audio Smileys + Ääni hymiöt + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Hallitse torjuttuja käyttäjiä + + + Privacy Rules + Yksityisyysasetukset + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + Salli keskustelut + + + Anyone + Kuka tahansa + + + Only people from my contact list + Vain yhteystiedoissani olevat henkilöt + + + Allow calls from + Salli puhelut + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Peruuta + + + Save + Tallenna + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + Yleiset + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + Lisäasetukset >> + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + Ryhmä: + + + Last Name: + Sukunimi: + + + First Name: + Etunimi: + + + Details + Tiedot + + + Web/blog: + Kotisivu: + + + Country: + Maa: + + + State: + Lääni: + + + City: + Kaupunki: + + + Gender: + Sukupuoli: + + + Birth Date: + Syntymäpäivä: + + + Email: + Sähköposti: + + + Notes + Huomautuksia + + + Phone Numbers + Puhelin numerot + + + Home phone + Kotipuhelin + + + Mobile phone + Matkapuhelin + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Tuntematon + + + Male + Mies + + + Female + Nainen + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Tilit + + + Accounts Settings + Tilien Asetukset + + + + QtAddAccount + + Configure your voip account + Muokkaa omaa tiliä: + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + Kokeile + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + Anna sähköpostiosoite. + + + Please enter your email address<br/>and your password + Anna sähköpostiosoite<br/>ja salasana + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + Muokkaa omaa tiliä: + + + + QtAdvancedIMContactManager + + Cancel + Peruuta + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Poista + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + Lisäasetukset + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + Ääni + + + Audio Settings + Ääni Asetukset + + + + QtCallBar + + +(country code) number or nickname + +(maakoodi) numero tai nimimerkki + + + + QtCallForwardSettings + + Call Forward + Soiton ohjaus + + + Call Forward Settings + Soiton Ohjaus Asetukset + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Tallenna nimellä + + + + QtChatLogViewer + + Account + + + + Edit Contact + Muokkaa Kontaktia + + + + QtChatTabWidget + + Close chat + Sulje keskustelu + + + + QtChatWidget + + %1 is connected. + %1 on yhdistetty. + + + %1 is disconnected. + %1 yhteys on katkaistu. + + + send + lähetä + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Muokkaa Kontaktia + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Soita SIP + + + Call land line + Soita lankapuhelimaan + + + Call Mobile + Soita Matkapuhelimeen + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + Aloita Konfrenssi + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Kyllä + + + &No + &Ei + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Kyllä + + + &No + &Ei + + + Home phone + Kotipuhelin + + + Mobile phone + Matkapuhelin + + + @product@ + + + + + Edit Contact + Muokkaa Kontaktia + + + Do you really want to delete this contact? + Haluatko varmasti poistaa tämän kontaktin? + + + Start chat + Aloita keskustelu + + + Delete contact + Poista kontakti + + + Call + Soita + + + Free call + + + + Work phone + Työpuhelin + + + Send SMS + Lähetä Tekstiviesti + + + Edit contact + Muokkaa kontaktia + + + Block contact + Torju kontakti + + + Invite to conference + Kutsu konferenssiin + + + Go to website + Siirry Web-sivulle + + + Send file + Lähetä tiedosto + + + Forward to mobile phone + Ohjaa matkapuhelimeen + + + + QtContactWidget + + No mobile phone number set + Ei matkapuhelin numeroa + + + No landline phone number set + Ei lankapuhelin numeroa + + + Click here to call + Napsauta soittaaksesi + + + Click here to set a phone number + Napsauta antaaksesi puhelin numero + + + Click here to edit the contact + Napsauta muokataksesi kontaktia + + + Click here to send a SMS + Napsauta lähettääksesi tekstiviesti + + + Click here to start a chat + Napsauta aloittaaksesi keskustelun + + + Click here to start a free call + Napsauta aloittaaksesi ilmainen puhelu + + + Click here to send a file + Napsauta lähettääksesi tiedosto + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Haluatko soittaa vastaajaasi? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Kyllä + + + &No + &Ei + + + Choose a directory + Valitse hakemisto + + + Overwrite File? + Kirjoitetaanko tiedoston yli? + + + A file called %1 already exists.Do you want to overwrite it? + Tiedosto %1 on jo olemassa. Haluatko korvata sen? + + + File size error + Tiedoston koko virhe + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + %1 on kooltaan 0. + + + %1 is a directory. + %1 on hakemisto. + + + You can not send a directory. + Et voi lähettää hakemistoa. + + + %1 is a shortcut. + %1 on pikakuvake. + + + You can not send a shortcut. + Et voi lähettää pikakuvaketta. + + + All Files (*.* *) + Kaikki tiedostot (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Peruuta + + + Remove + Poista + + + Pause + Pysäytä + + + Starting + Aloitetaan + + + From: + Lähettäjä: + + + To: + Vastaanottaja: + + + Open + Avaa + + + Resume + Palauta + + + Waiting for anwser... + Odotetaan vastausta... + + + Done + Valmis + + + Failed + Epäonnistui + + + Paused + + + + + Paused by peer + + + + + Cancelled + Peruutettu + + + Cancelled by peer + Peruutettu + + + Downloading... + Ladataan... + + + Uploading... + Lähetetään... + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Yleiset + + + General Settings + Yleiset Asetukset + + + + QtHistory + + Incoming call + Vastatut + + + Outgoing call + Soitetut + + + Missed call + Vastaamattomat + + + Rejected call + Ohjatut + + + Outgoing SMS + Lähetetyt Tekstiviestit + + + Do you want to call %1? + Haluatko soittaa %1? + + + Chat session + Keskustelu istunto + + + @product@ - Call History + + + + + Type + Tyyppi + + + Name/ID + Nimi/ID + + + Date + Päivä + + + Duration + Kesto + + + + QtHistoryWidget + + Erase this entry + Poista merkintä + + + Open in SMS window + Avaa Tekstiviesti ikkuna + + + Call this peer + + + + + Show chat log + Näytä keskustelu logi + + + + QtIMAccountManager + + Cancel + Peruuta + + + @product@ + + + + + &Delete + &Poista + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Katkaistu + + + Error: %1 + Virhe: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Online + + + Invisible + Näkymätön + + + Away + Poissa + + + Do not disturb + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Peruuta + + + @product@ + + + + + &Delete + &Poista + + + Online + Online + + + Invisible + Näkymätön + + + Away + Poissa + + + Do Not Disturb + + + + + Disconnect + Katkaistu + + + Delete Account + Poista tili + + + Are sure you want to delete the account <b>%1</b>? + Haluatko varmasti poistaa <b>%1</b> tilin? + + + + QtIMProfileWidget + + Edit My Profile + Muokkaa Profiiliasi + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Kieli + + + Language Settings + Kieliasetukset + + + + QtLogAccount + + Invalid account + Tuntematon tili + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Tuleva puhelu (soittoääni) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Puhelun sulkeminen (luurin laskuääni) + + + Incoming chat + Tuleva keskustelu + + + IM account connected + IM tili yhdistetty + + + IM account disconnected + IM tilin yhteys katkaistu + + + Contact online + Kontakti online + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Valitse äänitiedosto + + + Sounds + Äänet + + + + QtPhoneCall + + Status + Tila + + + Incoming Call + Saapuva puhelu + + + Resume + Palauta + + + Hang-up + Vastaa + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Virhe + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Soittaa + + + Redirected + Uudelleen ohjattu + + + Initialization... + Valmistelee... + + + Closed + Suljettu + + + Hold + Pidä + + + Add contact + Lisää kontakti + + + Ca&ncel + &Peruuta + + + Talking - Conference + + + + + Add a Contact + Lisää Kontakti + + + + QtPresenceMenuManager + + Online + Online + + + Invisible + Näkymätön + + + Away + Poissa + + + Do Not Disturb + + + + + Log off + Kirjaudu ulos + + + + QtPrivacySettings + + Privacy + Yksityisyys + + + Privacy Settings + Yksityisyysasetukset + + + + QtProfileBar + + Click here to change your status + Napsauta tästä vaihtaaksesi tilaasi + + + active + käytössä + + + voicemail + ääniposti + + + inactive + pois käytöstä + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + Vastaaja + + + + QtProfileDetails + + Advanced >> + Lisäasetukset >> + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + << Yksinkertainen + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Peruuta + + + Conference + Neuvottelu + + + Call + Soita + + + Account + + + + Add a Contact + Lisää Kontakti + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + Oletko varma että haluat sulkea sovelluksen? + + + &Exit + &Lopeta + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + Yleiset + + + Accounts + Tilit + + + Audio + Ääni + + + Call Forward + Soiton ohjaus + + + Language + Kieli + + + Privacy + Yksityisyys + + + Video + Video + + + Voicemail + Vastaaja + + + security + turvallisuus + + + Notifications + + + + + QtRenameGroup + + Bad group name + Ryhmän nimi ei kelpaa + + + Group name cannot be empty + Ryhmän nimi ei voi olla tyhjä + + + + QtSecuritySettings + + Security + Turvallisuus + + + Security Settings + Turvallisuusasetukset + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + Haluatko jatkaa? + + + Your SMS has not been sent + Tekstiviestiä ei ole lähetetty + + + Your SMS has been sent + Tekstiviesti on lähetetty + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + Et voi lähettää tyhjää viestiä. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Ei yhdistetty + + + Register done + Kirjautunut + + + Unregister done + Ei kirjautunut + + + Connecting + Yhdistää + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Tila + + + @product@ + + + + + Call SIP + Soita SIP + + + Call land line + Soita lankapuhelimaan + + + Call Mobile + Soita Matkapuhelimeen + + + Call @company@ + + + + + Call + Soita + + + Send SMS + Lähetä Tekstiviesti + + + Online + Online + + + Invisible + Näkymätön + + + Away + Poissa + + + Do Not Disturb + + + + + Internet Connection Error + Virhe Internet Yhteydessä + + + Offline + Offline + + + Connecting... + Yhdistetään… + + + Send a SMS + Lähetä Tekstiviesti + + + Start a chat + Aloita keskustelu + + + Place Call + + + + + Send File + Lähetä tiedosto + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Peruuta + + + @product@ - Proceed Conference + + + + + Edit My Profile + Muokkaa Profiiliasi + + + Add a Contact + Lisää Kontakti + + + Hide Unavailable Contacts + Piilota Offline kontaktit + + + Show Unavailable Contacts + Näytä Offline kontaktit + + + Hide Groups + Piilota Ryhmät + + + Show Groups + Näytä Ryhmät + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + &Kirjaudu Ulos + + + Disable &Video Calls + V&astaamattomat Puhelut + + + Enable &Video Calls + Video käytössä + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + Kirjaudu &Ulos... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Kontakti luettelo + + + + QtUserProfile + + Edit Contact + Muokkaa Kontaktia + + + &Authorize + &Salli + + + &Block + &Estä + + + Network error. + Verkkovirhe. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Väärä sähköposti/salasana annettu + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Video + + + Normal + Normaali + + + Good + Hyvä + + + Very good + Erittäin hyvä + + + Excellent + Loistava + + + Video Settings + Video Asetukset + + + + QtVoicemailSettings + + Voicemail + Vastaaja + + + Voicemail Settings + Vastaajan Asetukset + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Peruuta + + + Save + Tallenna + + + Title + Otsikko + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Hyväksy + + + &Hidden + + + + + &Tools + &Työkalut + + + &Help + &Ohje + + + &Actions + &Toiminnot + + + @company@ + + + + + &Close + &Sulje + + + Dialpad + Näppäimistö + + + @product@ + + + + + Start Conference + Aloita Konfrenssi + + + Send SMS + Lähetä Tekstiviesti + + + Contacts + Kontaktit + + + History + Historia + + + Clear &History + &Tyhjennä Historia + + + ToolBar + Työkalurivi + + + Show/Hide Unavailable &Contacts + Näytä/Piilota Offline &Kontaktit + + + &Chat Sessions + &Keskustelu istunto + + + &All + &Kaikki + + + &HangUp + &Vastaa + + + &Hold/Resume + &Odota/Pidä + + + Show/Hide &Groups + Näytä/Piilota &Ryhmät + + + &Outgoing Calls + &Soitetut Puhelut + + + &Incoming Calls + &Vastatut Puhelut + + + &Missed Calls + V&astaamattomat Puhelut + + + Enable/Disable &Video Calls + Salli/Estä &Videopuhelut + + + Short Text &Messages (SMS) + + + + + Rejected Calls + &Hylätyt Puhelut + + + &Contacts + &Kontaktit + + + &About... + &Tietoja... + + + Add &Contact... + Lisää &Kontakti... + + + &Configuration... + + + + + Send SMS... + Lähetä Tekstiviesti... + + + View My &Profile... + Näytä &Profiilini... + + + View My Profile + Näytä Profiilini + + + Start &Conference... + + + + + &Find Contact... + &Etsi Kontakti... + + + Log &Off... + Kirjaudu &Ulos... + + + Log Off + Kirjaudu Ulos + + + Show &Chat Window + Näytä &Keskustelu Ikkuna + + + Show Chat Window + Näytä Keskustelu Ikkuna + + + Show &File Transfer + Näytä &Tiedoston Siirto + + + Add Contact + Lisää kontakti + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + Etsi + + + Find @company@ Contacts + + + + + &Quit + &Lopeta + + + Ctrl+Q + Ctrl+L + + + &Text Under Icons + + + + + &Icons Only + &Vain kuvakkeet + + + Add + Lisää + + + SMS + Tekstiviesti + + + Conference + Neuvottelu + + + + RenameGroupDialog + + Cancel + Peruuta + + + OK + OK + + + Enter the new group name: + Uusi ryhmän nimi: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + Salli soiton koodaus + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Päivitä profiilisi + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP: ID + + + ICQ ID: + AIM/ICQ ID: + + + AIM ID: + AIM/ICQ ID: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Lähettäjä + + + @product@ - SMS + + + + + Click here to add a phone number + Napsauta lisätäksesi puhelin numero + + + 0 /160 + 0 /160 + + + Enter your signature here + Anna allekirjoitus tähän + + + Signature: + Allekirjoitus: + + + Phone number(s): + Puhelin numero(t): + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Kirjoita puhelinnumero(t) tähän<br>Numerot erotetaan toisistaan käyttämällä & tai ; tai , + + + + SoftUpdateWindow + + Cancel + Peruuta + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + Normaali + + + Good + Hyvä + + + Very good + Erittäin hyvä + + + Excellent + Loistava + + + Enable video + Video käytössä + + + Webcam Selection + Web kameran valinta + + + Webcam device: + Web kamera laite: + + + Webcam Preview + Web kameran esikatselu + + + Connection Type + Yhteyden Tyyppi + + + Video quality + Videon laatu + + + Down (kbit/s) + Sisään (kbit/s) + + + Up (kbit/s) + Ulos (kbit/s) + + + 0 to 512 + 0 - 512 + + + 0 to 128 + 0 - 128 + + + 512 to 2048 + 512 - 2048 + + + 128 to 256 + 128 - 156 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + Soita testi video puhelu + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Peruuta + + + Finish + Valmis + + + Next > + Seuraava > + + + < Back + < Edellinen + + + Simple Wizard - Step %1 of %2 + Yksinkertainen Avustaja - Askel %1 - %2 + + + + YahooSettings + + Login: + Tunnus: + + + Password: + Salasana: + + + Yahoo! Settings + Yahoo! Asetukset + + + Use Yahoo! Japan server + Käytä Yahoo! Japanin palvelinta + + + Forgot your Yahoo! password? + Unohditko Yahoo! salasanan? + + + Get a new Yahoo! Account + Ota uusi Yahoo! Tili + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fr.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fr.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fr.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_fr.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4051 @@ + + + + + AIMSettings + + Login: + Identifiant : + + + Forgot your AIM password? + Mot de passe AIM oublié ? + + + Get a new AIM Account + Créez un nouveau compte AIM + + + Password: + Mot de passe : + + + AIM Settings + Paramètres AIM + + + + AboutWindow + + About + À propos + + + Copyright (C)2008 Mbdsys + + + + Authors + Auteurs + + + Close + Fermer + + + 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 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. + + + @product@ - About + À propos - @product@ + + + @product@, a voice over Internet phone + @product@, un téléphone voix sur Internet + + + + AcceptDialog + + File Transfer + Transfert de Fichiers + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Accepter + + + &Cancel + &Annuler + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nom du fichier: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Réception d'un fichier</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + Éditer mon &profil + + + + AddAccount + + Configure your account: + Configurez votre compte : + + + &Next + &Suivant > + + + Need help? + Besoin d'aide ? + + + You don't have any account ? Click here + Vous n'avez pas de compte ? Cliquez ici + + + &Back + &Précédent + + + Cancel + Annuler + + + @product@ - Login + @product@ - Login + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + @company@ compte + + + Generic SIP account + Compte SIP générique + + + + AddIMContact + + Cancel + Annuler + + + Contact Type (protocol): + Type de contact (réseau): + + + Contact ID: + Identifiant: + + + Account: + Compte: + + + Enable + Activé + + + Login + Identifiant + + + Add + Ajouter + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Mot de passe : + + + Need help? + Besoin d'aide ? + + + &Back + &Précédent + + + &Connect + + + + Cancel + Annuler + + + @product@ - Login + @product@ - Login + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:18pt;">Login</span><br><br><span>Veuillez renseigner votre adresse mail et<br>votre mot de passe</span> {16p?} + + + Email Address: + Adresse email: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Mot de passe : + + + Need help? + Besoin d'aide ? + + + &Back + &Précédent + + + &Connect + + + + Cancel + Annuler + + + @product@ - Login + @product@ - Login + + + Activate presence and chat (SIP/SIMPLE) + Activer la présence et le chat (SIP/SIMPLE) + + + Displayname: + Nom affiché: + + + login / username: + identifiant / nom d'utilisateur : + + + Account name: + Nom du compte : + + + Proxy: + Proxy: + + + : + : + + + Server: + Serveur : + + + SIP Domain / Realm: + Domaine SIP / Realm : + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configurez votre profil SIP</span><br><br><span>Veuillez renseigner les informations qui <br/>permettront à votre logiciel de se connecter à votre<br/>compte SIP</span> + + + Advanced + Avancé + + + + AdvancedConfigWindow + + Close + Fermer + + + Preference Name + Nom de l'option + + + Type + Type + + + Value + Valeur + + + Default Value + Valeur par défaut + + + Save + Enregistrer + + + Status + Statut + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Ajouter + + + Advanced Settings + Paramètres avancés + + + Remove + + + + Advanced Configuration Window + Fenêtre de configuration avancée + + + Automatically answer incoming calls from + Toujours accepter les appels de + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Attention, cette section est réservée pour les utilisateurs avertis.<br>Toute modification peut altérer le bon fonctionnement du logiciel. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Formulaire + + + + AudioSettings + + Reset + Réinitialiser + + + Audio Codecs + Codecs audio + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + Test + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulaire + + + + AvatarWidget + + Form + Formulaire + + + + BrowserSoftUpdateWindow + + Close + Fermer + + + @product@ - Update available + Mise à jour disponible - @product@ + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3ème : + + + 1st: + 1er : + + + 2nd: + 2ème : + + + (+ country code) phone number + (+ indicatif pays) numéro de téléphone + + + Forward all unanswered calls to message box + Transférer tous vos appels non aboutis vers la messagerie vocale + + + Disable call forwarding + Désactiver le transfert d'appel + + + Forward all unanswered calls to following phone numbers: + Transférer tout les appels en absence vers les numéros suivants: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Par exemple +3314500XXXX (+33 est l'indicatif du pays et 14500XXXX le numéro de téléphone) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Réception d'un appel + + + Message + Message + + + + ChatLogViewer + + Chat History + Historique des Chat + + + &Contact + &Contact + + + &Tools + &Outils + + + &Help + Aid&e + + + &Actions + &Actions + + + Main Toolbar + Barre d'outils principale + + + Call Contact + Appeler le Contact + + + Send a File + Envoyer un fichier + + + createChatConf + Créer une conférence + + + Show Contact Info + Afficher le profil du contact + + + blockContact + Bloquer le contact + + + &Save History As... + &Enregistrer l'historique sous... + + + actionRestartChat + Initier un nouveau Chat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contact + + + &Tools + &Outils + + + &Actions + &Actions + + + Main Toolbar + Barre d'outils principale + + + Call Contact + Appeler le Contact + + + Send a File + Envoyer un fichier + + + Show Contact Info + Afficher le profil du contact + + + blockContact + Bloquer le contact + + + &Save History As... + &Enregistrer l'historique sous... + + + @company@ + @company@ + + + MainWindow + Fenêtre Principale + + + &Edit + É&dition + + + Cu&t + Co&uper + + + Ctrl+X + Ctrl+X + + + &Copy + &Copier + + + Ctrl+C + Ctrl+C + + + &Paste + C&oller + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + + + + + &Close + &Fermer + + + Conference + Conférence + + + + ChatRoomInviteWidget + + Chat room + Salon de chat + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Salon de chat</span></p></body></html> + + + (Conference participants) + (Participants à la conférence) + + + &Remove + &Enlever + + + &Start + &Démarrer + + + Group Name + Nom du groupe + + + &Add + &Ajouter + + + + ChatToaster + + Message + Message + + + Incoming Chat + Réception d'un chat + + + + ChatWidget + + Form + Formulaire + + + + ConferenceCallWidget + + Cancel + Annuler + + + Start + Appeler + + + Phone number 2: + Numéro 2: + + + Phone number 1: + Numéro 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Démarrer + + + Cancel + Annuler + + + + ContactGroupPopupMenu + + Remove Contact Group + Supprimer le groupe + + + Rename Contact Group + Renommer le groupe + + + Delete group + Supprimer le groupe + + + Do you really want to delete this group? + Êtes-vous sur de vouloir supprimer ce groupe ? + + + &Yes + &Oui + + + &No + &Non + + + + ContactList + + Contact List + Liste de contacts + + + goupname + + + + + ContactWidget + + No mobile phone number set + Aucun numéro de téléphone portable saisi + + + No landline phone number set + Aucun numéro de téléphone fixe saisi + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez ici pour éditer ce contact</p></body></html> + + + + CrashReport + + Cancel + Annuler + + + Program Failure + Défaillance du programme + + + Send + Envoyer + + + Optional Information + Information optionnelle + + + Your Mail: + Votre email : + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Non disponible + + + Click here to change your call forward settings + Cliquez ici pour modifier le transfert d'appel + + + Call forward mode: + Mode de transfert d'appel: + + + Purchase call out credits + Acheter des crédits de communication + + + Call Forward Method + Méthode du transfert d'appel: + + + Call Voice Mail + Appeler la boite vocale + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Fichier racine + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Cliquez sur les différents éléments qui changent de couleurs pour envoyer des sons à votre interlocuteur. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Cliquez ici pour appeler votre messagerie + + + New Voice Mail: + Nouveau message vocal : + + + Click here to see missed call(s) + Cliquez ici pour voir les appels en absence + + + Missed Call(s): + Appel(s) manqué(s): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Réception + + + Upload + Envoi + + + Click here to change your download folder + Cliquez ici pour changer votre dossier de téléchargement + + + Download folder: + Dossier de téléchargement: + + + Clean all items in the list + Nettoyer tous les éléments de la liste + + + &Clean + &Nettoyer + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Annuler + + + Form + Formulaire + + + Pause + Pause + + + <i>From:</i> + <i>De:</i> + + + + GeneralSettings + + When I double-click on a contact + Quand je double-clique sur un contact + + + Call cell phone or land line if contact not online + Appeler le mobile ou la ligne fixe si le contact n'est pas disponible + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Inactivité + + + minutes + minutes + + + Show me as "Away" when I am inactive for: + Changer mon statut en « absent » après une période d'inactivité de : + + + When I start my computer + Au démarrage du système + + + Automatically start @product@ + Démarrer automatiquement @product@ + + + + GoogleTalkSettings + + Login: + Identifiant : + + + Password: + Mot de passe : + + + GoogleTalk Settings + Paramètres GoogleTalk + + + Forgot your GoogleTalk password? + Mot de passe GoogleTalk oublié? + + + Get a new GoogleTalk Account + Créez un nouveau compte GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Annuler + + + HTTP Proxy Address: + Adresse du Proxy HTTP: + + + HTTP Proxy Port Number: + Port: + + + HTTP Proxy Login: + Nom d'utilisateur: + + + HTTP Proxy Password: + Mot de passe: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autentification du proxy HTTP</span><br><br><span>Votre proxy HTTP local utilise une autentification<br>Veuillez renseinger votre identifiant et votre mot de passe</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Identifiant : + + + Password: + Mot de passe : + + + ICQ Settings + Paramètres ICQ + + + Forgot your ICQ password? + Mot de passe ICQ oublié ? + + + Get a new ICQ Account + Créer un nouveau compte ICQ + + + + IMAccountManager + + Close + Fermer + + + Login + Identifiant + + + Add + Ajouter + + + Delete + Supprimer + + + Modify + Modifier + + + Protocol + Réseau + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Annuler + + + Save + Enregistrer + + + IM Account Settings + Paramètres des comptes de Messagerie + + + + IMContactManager + + Add + Ajouter + + + Delete + Supprimer + + + Contact Type (protocol) + Type de contact (réseau) + + + Click on the add button below to add a new ID + Ajouter des comptes de Messagerie Instantanée à votre contact + + + Contact ID + Identifiant du contact + + + + IMProfileWidget + + Enter your nickname here + Entrez votre pseudo ici + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Ajouter un compte de messagerie instantanée (MSN, AIM, GoogleTalk...) + + + Add an IM account + Ajouter un compte MI + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez pour changer votre avatar</p></body></html> + + + + ImageSelector + + Cancel + Annuler + + + OK + OK + + + Go Up + Remonter + + + Refresh + Rafraîchir + + + + JabberSettings + + Login: + Identifiant : + + + Password: + Mot de passe : + + + Jabber Settings + Paramètres de Jabber + + + Connect Server: + Se connecter au serveur: + + + <u>Advanced Options</u> + <u>Options avancées</u> + + + Require TLS + Nécessite TLS + + + Port: + Port: + + + Use TLS if available + Utiliser TLS, si possible + + + Allow plaintext authentication over unencrypted streams + Autoriser l'identifcation en clair sur des connexions non cryptées + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forcer SSL (5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Votre langue n'est pas disponible ici, savez vous que vous pouvez faire votre propre traduction sur Launchpad.net ? + + + More information here. + Plus d'informations ici. + + + + LogAccount + + Password: + Mot de passe : + + + Need help? + Besoin d'aide ? + + + Cancel + Annuler + + + @product@ - Login + @product@ - Login + + + &Connect + + + + Account: + Compte: + + + Forgot your @company@ password? + + + + + Delete + Supprimer + + + &Modify + &Modifier + + + Configure a &New Profile + Configurez un &nouveau profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Identifiant : + + + Password: + Mot de passe : + + + MSN Settings + Paramètres MSN + + + Forgot your MSN password? + Mot de passe MSN oublié? + + + Get a new MSN Account + Créez un nouveau compte MSN + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Fenêtre Principale + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Accepter l'appel + + + Send Chat Message + Envoyer un message chat + + + Make Call + Passer un appel + + + Hang Up + Raccrocher + + + + ManageBlockedUsersSettings + + Close + Fermer + + + Unblock User + Débloquer le contact + + + Manage blocked users + Gérer les contacts bloqués + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Sélectionnez les évènements pour lesquels un son doit être joué. + + + + NotificationSettingsItem + + Sound file + Fichier son + + + Find a sound file + Trouver un fichier son + + + Play sound file + Jouer le fichier son + + + Play + Jouer + + + + NotifyDialog + + File Transfer + Transfert de Fichiers + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Statut:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Mise à jour</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Accepter + + + Status + Statut + + + 00:00:00 + 00:00:00 + + + Nickname + Pseudo + + + &Reject + &Rejeter + + + Dialpad + + + + Audio Smileys + Smileys Audio + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Gérer les contacts bloqués + + + Privacy Rules + Confidentialité + + + Always sign in as "Invisible" (appear offline to all users) + Toutjours se connecter en mode invisible (les autres utilisateurs ne vous +voient pas) + + + Allow chats from + Autorisez les chats provenant de + + + Anyone + Tout le monde + + + Only people from my contact list + Uniquement de mes contacts + + + Allow calls from + Autoriser les appels provenant de + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Annuler + + + Save + Enregistrer + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez pour changer votre avatar</p></body></html> + + + General + Général + + + Network IDs (MSN, Jabber...) + Identifiants (MSN, Jabber...) + + + Advanced >> + Avancé >> + + + Fill in all your network Id to stay connected with your contacts + Veuillez renseigner tous vos identifiants pour rester connecté avec vos contacts + + + Contact + Contact + + + Group: + Groupe: + + + Last Name: + Nom: + + + First Name: + Prénom: + + + Details + Détails + + + Web/blog: + Web/blog: + + + Country: + Pays: + + + State: + Région: + + + City: + Ville: + + + Gender: + Sexe: + + + Birth Date: + Date de naissance: + + + Email: + Email: + + + Notes + Notes + + + Phone Numbers + Numéros de téléphone + + + Home phone + Téléphone fixe + + + Mobile phone + Téléphone mobile + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Inconnu + + + Male + Homme + + + Female + Femme + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Comptes + + + Accounts Settings + Paramètres de compte + + + + QtAddAccount + + Configure your voip account + Configurez votre compte VoIP + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Identifiant + + + Please enter an email address. + Veuillez saisir une adresse email. + + + Please enter your email address<br/>and your password + Veuillez saisir votre adresse email<br/>et votre mot de passe + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Veuillez renseigner les informations qui<br/>permettront à votre softphone de se connecter à votre<br/> compte SIP + + + Configure your SIP profile + Configurez votre profil SIP + + + + QtAdvancedIMContactManager + + Cancel + Annuler + + + @product@ + + + + + Are sure you want to delete this IM contact? + + Êtes-vous sûr de vouloir supprimer ce contact ? + + + + &Delete + &Supprimer + + + + QtAdvancedSettings + + Advanced + Avancé + + + Advanced Settings + Paramètres avancés + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Avancé + + + Audio + Audio + + + Audio Settings + Paramètres Audio + + + + QtCallBar + + +(country code) number or nickname + +(indicatif pays) numéro ou pseudo + + + + QtCallForwardSettings + + Call Forward + Transfert d'appel + + + Call Forward Settings + Paramètres de transfert d'appel + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Enregistrer sous + + + + QtChatLogViewer + + Account + + + + Edit Contact + Editer le contact + + + + QtChatTabWidget + + Close chat + Fermer le chat + + + + QtChatWidget + + %1 is connected. + %1 s'est connecté. + + + %1 is disconnected. + %1 s'est déconnecté. + + + send + envoyer + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Editer le contact + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Appeler un contact SIP + + + Call land line + Appeler une ligne fixe + + + Call Mobile + Appeler un mobile + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + Cliquez sur le bouton ci-dessous pour appeler votre second interlocuteur. +En attendant, le premier sera mis en attente. + + + Hold first interlocutor and call second one + Démarrer le deuxième appel + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + Cliquez sur le bouton ci-dessous pour démarrer la conférence + + + Start Conference + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Oui + + + &No + &Non + + + Merge %1 with %2? + Fusionner %1 avec %2 ? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Oui + + + &No + &Non + + + Home phone + Téléphone fixe + + + Mobile phone + Téléphone mobile + + + @product@ + + + + + Edit Contact + Editer le contact + + + Do you really want to delete this contact? + Voulez vous vraiment supprimer ce contact? + + + Start chat + Commencer un chat + + + Delete contact + Supprimer le contact + + + Call + + + + Free call + + + + Work phone + Téléphone du bureau + + + Send SMS + + + + Edit contact + Editer le contact + + + Block contact + Bloquer le contact + + + Invite to conference + Inviter à la conférence + + + Go to website + Aller sur son site Internet + + + Send file + Envoyer un fichier + + + Forward to mobile phone + Transférer vers un mobile + + + + QtContactWidget + + No mobile phone number set + Aucun numéro de téléphone portable saisi + + + No landline phone number set + Aucun numéro de téléphone fixe saisi + + + Click here to call + Cliquer ici pour appeler + + + Click here to set a phone number + Cliquer ici pour renseigner un numéro de téléphone + + + Click here to edit the contact + Cliquer ici pour éditer le contact + + + Click here to send a SMS + Cliquer ici pour envoyer un SMS + + + Click here to start a chat + Cliquez ici pour démarrer un chat + + + Click here to start a free call + Cliquez ici pour démarrer un appel gratuit + + + Click here to send a file + Cliquez ici pour envoyer un fichier + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Voulez-vous appeler votre messagerie ? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Oui + + + &No + &Non + + + Choose a directory + Choisissez un répertoire + + + Overwrite File? + Remplacer le fichier? + + + A file called %1 already exists.Do you want to overwrite it? + Un fichier appelé %1 existe déjà. Voulez-vous le remplacer ? + + + File size error + Taille de fichier incorrecte + + + %1 exceeds the maximum authorized size. + %1 excède la taille maximale autorisée. + + + %1 has size 0. + %1 est vide (taille 0). + + + %1 is a directory. + %1 est un répertoire. + + + You can not send a directory. + Vous ne pouvez pas envoyer un répertoire. + + + %1 is a shortcut. + %1 est un raccourci. + + + You can not send a shortcut. + Vous ne pouvez envoyer un raccourci. + + + All Files (*.* *) + Tous les fichiers (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Annuler + + + Pause + Pause + + + Starting + Démarrage + + + From: + De: + + + To: + Vers: + + + Open + Ouvrir + + + Remove + + + + Resume + Reprendre + + + Waiting for anwser... + Attente d'une réponse... + + + Done + Terminé + + + Failed + Echec + + + Paused + Mis en pause + + + Paused by peer + Mis en pause par le contact + + + Cancelled + Annulé + + + Cancelled by peer + Annulé par le contact + + + Downloading... + Réception... + + + Uploading... + Envoi... + + + Waiting for peer... + Attente d'une réponse ... + + + An error occured during the file transfer + Une erreur est survenue<br> pendant le transfert du fichier + + + This may be caused by : + Cela peut être dû à : + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Général + + + General Settings + Configuration générale + + + + QtHistory + + Incoming call + Appel reçu + + + Outgoing call + Appel émis + + + Missed call + Appel en absence + + + Rejected call + Appel refusé + + + Outgoing SMS + SMS + + + Do you want to call %1? + Voulez-vous appeler %1 ? + + + Chat session + Session Chat + + + @product@ - Call History + Historique des appels - @product@ + + + Type + Type + + + Name/ID + Nom/identifiant + + + Date + Date + + + Duration + Durée + + + + QtHistoryWidget + + Erase this entry + Effacer cet élément + + + Open in SMS window + Ouvrir dans une fenêtre SMS + + + Call this peer + Appeler cette personne + + + Show chat log + Afficher les sessions de chat + + + + QtIMAccountManager + + Cancel + Annuler + + + @product@ + + + + + &Delete + &Supprimer + + + Are sure you want to delete this account? + + Êtes-vous sur de vouloir supprimer ce compte ? + + + + + QtIMAccountMonitor + + Disconnected + Déconnecté + + + Error: %1 + Erreur : %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + En ligne + + + Invisible + Invisible + + + Away + Absent + + + Do not disturb + Ne pas déranger + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Veuiller entrer un identifiant + + + + QtIMAccountPresenceMenuManager + + Cancel + Annuler + + + @product@ + + + + + &Delete + &Supprimer + + + Online + En ligne + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + Ne pas déranger + + + Disconnect + Déconnecter + + + Delete Account + Supprimer le compte + + + Are sure you want to delete the account <b>%1</b>? + Êtes-vous sûr que vous voulez supprimer le compte <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Editer mon profil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Langue + + + Language Settings + Paramètres de langue + + + + QtLogAccount + + Invalid account + Compte invalide + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Réception d'un appel (sonnerie) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Raccrochage (tonalité) + + + Incoming chat + Réception d'un chat + + + IM account connected + Connexion d'un compte de messagerie + + + IM account disconnected + Déconnexion d'un compte de messagerie + + + Contact online + Contact en ligne + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Choisir un fichier son + + + Sounds + Sons + + + + QtPhoneCall + + Status + Statut + + + Incoming Call + Réception d'un appel + + + Resume + Reprendre + + + Hang-up + Raccrocher + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Erreur + + + Talking + Communication en cours + + + Dialing + Numérotation + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + En attente + + + Redirected + Transféré + + + Initialization... + Initialisation... + + + Closed + Raccroché + + + Hold + En attente + + + Add contact + Ajouter contact + + + Ca&ncel + An&nuler + + + Talking - Conference + Appel en cours - Conférence + + + Add a Contact + Ajouter un contact + + + + QtPresenceMenuManager + + Online + En ligne + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + Ne pas déranger + + + Log off + Déconnecter + + + + QtPrivacySettings + + Privacy + Confidentialité + + + Privacy Settings + Paramètres de confidentialité + + + + QtProfileBar + + Click here to change your status + Cliquer ici pour changer de statut + + + active + activé + + + voicemail + messagerie + + + inactive + inactif + + + unauthorized + Interdit + + + Set global presence to: + Définissez votre présence globale : + + + Voice mail + Messagerie vocale + + + + QtProfileDetails + + Advanced >> + Avancé >> + + + @product@ + + + + + A contact must have a group, please set a group. + Un contact doit être placé dans un groupe, veuillez sélectionnez un groupe +pour votre contact. + + + << Simple + << Basique + + + Select your avatar + Choisissez votre avatar + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Annuler + + + Conference + Conférence + + + Call + + + + You have unfinished call(s). + + + + Account + + + + Add a Contact + Ajouter un contact + + + @product@ - Warning + Avertissement - @product@ + + + Home + Accueil + + + Are you sure you want to exit the application? + Êtes vous sûr de vouloir quitter l'application ? + + + &Exit + &Quitter + + + @product@ - Call Error + Erreur d'appel - @product@ + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avancé + + + General + Général + + + Accounts + Comptes + + + Audio + Audio + + + Call Forward + Transfert d'appel + + + Language + Langue + + + Privacy + Confidentialité + + + Video + Vidéo + + + Voicemail + Messagerie Vocale + + + security + sécurité + + + Notifications + + + + + QtRenameGroup + + Bad group name + Mauvais nom de groupe + + + Group name cannot be empty + Le nom du groupe ne peut être vide + + + + QtSecuritySettings + + Security + Sécurité + + + Security Settings + Paramètres de Sécurité + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Veuillez renseigner le numéro de téléphone. + + + Do you want to continue? + Voulez vous continuer? + + + Your SMS has not been sent + Votre SMS n'a pas été envoyé + + + Your SMS has been sent + Votre SMS a été envoyé + + + Your message is too long. +This will send + Votre message est trop long. +Il sera découpé en + + + SMS. + + SMS. + + + + You can not send an empty message. + Vous ne pouvez pas envoyer un message vide. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Déconnecté + + + Register done + Identification effectuée + + + Unregister done + Déconnexion effectuée + + + Connecting + Connexion + + + Output volume is muted + Le volume de sortie est sur sourdine + + + Output volume is 0 + Le volume de sortie est 0 + + + Click to adjust output volume + + + + + Input volume is muted + Le volume d'entrée est sur sourdine + + + Input volume is 0 + Le volume d'entrée est 0 + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Statut + + + @product@ + + + + + Call SIP + Appeler un contact SIP + + + Call land line + Appeler une ligne fixe + + + Call Mobile + Appeler un mobile + + + Call @company@ + + + + + Online + En ligne + + + Invisible + Invisible + + + Away + Absent + + + Do Not Disturb + Ne pas déranger + + + Internet Connection Error + Erreur de connexion Internet + + + Offline + Déconnecté + + + Connecting... + Connexion... + + + Send a SMS + Envoyer un SMS + + + Call + + + + Send SMS + + + + Start a chat + Commencer un chat + + + Place Call + Démarrer un appel + + + Send File + Envoyer un fichier + + + Multiple Status + Statut multiple + + + Unknown Status + Statut inconnu + + + Quit @product@ + Quitter @product@ + + + + QtToolBar + + &Cancel + &Annuler + + + @product@ - Proceed Conference + + + + + Edit My Profile + Editer mon profil + + + Add a Contact + Ajouter un contact + + + Hide Unavailable Contacts + Cacher les contacts non disponibles + + + Show Unavailable Contacts + Afficher les contacts non disponibles + + + Hide Groups + Cacher les Groupes + + + Show Groups + Afficher les Groupes + + + You have unfinished call(s). + + + + Are you sure you want to log off? + Êtes vous sûr de vouloir vous déconnecter ? + + + &Log Off + &Se déconnecter + + + Disable &Video Calls + Désactiver les Appels &Video + + + Enable &Video Calls + Activer les Appels &Video + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Vous ne pouvez lancer de conférence tant que vous avez des appels en cours.</b><br><br>Mettez fin à tous vos appels et essayez de nouveau. + + + @product@ - Warning + Avertissement - @product@ + + + Log &Off... + Se &Déconnecter... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Liste de contacts + + + + QtUserProfile + + Edit Contact + Editer le contact + + + &Authorize + &Autoriser + + + &Block + &Bloquer + + + Network error. + Erreur de réseau. + + + @product@ - Authorization Request + Demande d'authorisation - @product@ + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Un problème est survenu pendant le chargement de votre profil. +La dernière sauvegarde de votre profil a été chargée: +les dernières modifications réalisées ont peut-être été perdues + + + Your profile could not be loaded. +Choose another profile or create a new one. + Votre profil ne peut être chargé. +Veuillez choisir un autre profil ou créer en un. + + + Wrong email/password entered + Erreur de saisie des identifiants + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Vidéo + + + Normal + Normale + + + Good + Bonne + + + Very good + Très bonne + + + Excellent + Excellente + + + Video Settings + Paramètres vidéo + + + + QtVoicemailSettings + + Voicemail + Messagerie Vocale + + + Voicemail Settings + Paramètres de Messagerie Vocale + + + + QtWebDirectory + + @product@ - Directory + Répertoire - @product@ + + + + QuteComConfigDialog + + Cancel + Annuler + + + Save + Enregistrer + + + Title + Titre + + + @product@ - Configuration + Configuration - @product@ + + + + QuteComWindow + + &Accept + &Accepter + + + &Hidden + + + + + &Tools + &Outils + + + &Help + Aid&e + + + &Actions + &Actions + + + @company@ + @company@ + + + &Close + &Fermer + + + @product@ + + + + + Contacts + Contacts + + + History + Historique + + + Dialpad + + + + Clear &History + Effacer l'&Historique + + + ToolBar + Barre d'outils + + + Send SMS + + + + Start Conference + + + + Show/Hide Unavailable &Contacts + Afficher/Cacher les contacts &indisponibles + + + &Chat Sessions + &Conversations chat + + + &All + &Tous + + + &HangUp + &Raccrocher + + + &Hold/Resume + &Pause/Reprise + + + Show/Hide &Groups + Afficher/Cacher les &groupes + + + &Outgoing Calls + Appels &émis + + + &Incoming Calls + Appels &reçus + + + &Missed Calls + &Appels en absence + + + Enable/Disable &Video Calls + Activer/Désactiver appels &videos + + + Short Text &Messages (SMS) + SMS + + + Rejected Calls + Appels refusés + + + &Contacts + &Contacts + + + &About... + À &propos + + + Add &Contact... + Ajouter un &Contact... + + + &Configuration... + Panneau de &Configuration... + + + Send SMS... + Envoyer un SMS... + + + View My &Profile... + Afficher Mon &Profil... + + + View My Profile + Afficher Mon Profil + + + Start &Conference... + Commencer une &Conférence... + + + &Find Contact... + &Trouver Contact... + + + Log &Off... + Se &Déconnecter... + + + Log Off + Se Déconnecter + + + Show &Chat Window + Afficher la fenêtre &Chat + + + Show Chat Window + Afficher la fenêtre Chat + + + Show &File Transfer + Afficher le gestionnaire de Transfert de &Fichiers + + + Add Contact + Contact + + + View My @company@ Account... + Voir mon compte @company@... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + &Forum de @company@ + + + @company@ &Wiki/FAQ... + &Wiki/FAQ de @company@... + + + Learn more about @company@ Services... + Découvrir les services de @company@ + + + Search + Rechercher + + + Find @company@ Contacts + Rechercher des contacts de @company@ + + + &Quit + &Quitter + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Texte sous les icônes + + + &Icons Only + &Icônes seulement + + + Add + Ajouter + + + SMS + SMS + + + Conference + Conférence + + + + RenameGroupDialog + + Cancel + Annuler + + + OK + OK + + + Enter the new group name: + Saisissez un nouveau nom de groupe : + + + @product@ - Rename Contact Group + Renommer un groupe de contact - @product@ + + + + SecuritySettings + + Form + Formulaire + + + Enable call encryption + Permettre le chiffrement des appels + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Compléter votre profil + + + Yahoo! ID: + Identifiant Yahoo! : + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + Identifiant MSN : + + + SIP ID: + Identifiant SIP : + + + ICQ ID: + Identifiant ICQ : + + + AIM ID: + Identifiant AIM + + + @company@ ID: + Identifiant @company@ : + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Envoyer + + + @product@ - SMS + + + + + Click here to add a phone number + Cliquer ici pour ajouter un numéro de téléphone + + + 0 /160 + 0 /160 + + + Enter your signature here + Entrer votre signature ici + + + Signature: + Signature: + + + Phone number(s): + Numéro(s) de téléphone: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Saisissez vos numéros de téléphone ici<br>Ils doivent être séparés par & ou ; ou , + + + + SoftUpdateWindow + + Cancel + Annuler + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulaire + + + + VideoSettings + + Normal + Normale + + + Good + Bonne + + + Very good + Très bonne + + + Excellent + Excellente + + + Enable video + Activer la vidéo + + + Webcam Selection + Sélection de la webcam + + + Webcam device: + Webcam: + + + Webcam Preview + Aperçu de votre image + + + Connection Type + Type de connexion + + + Video quality + Qualité vidéo + + + Down (kbit/s) + Réception (kbit/s) + + + Up (kbit/s) + Envoi (kbit/s) + + + 0 to 512 + 0 à 512 + + + 0 to 128 + 0 à 128 + + + 512 to 2048 + 512 à 2048 + + + 128 to 256 + 128 à 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + La qualité de la vidéo dépend de la vitesse de votre connexion Internet + + + Make a test video call + Effectuer un appel vidéo de test + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + Video - @product@ + + + + VoicemailSettings + + Form + Formulaire + + + Phone number of your voicemail: + Numéro de téléphone de votre messagerie vocale: + + + Please fill in here the information about your voicemail + Veuillez renseigner ici les informations à propos de votre messagerie vocale + + + + Wizard + + Cancel + Annuler + + + Finish + Terminer + + + Next > + Suivant > + + + < Back + < Précédent + + + Simple Wizard - Step %1 of %2 + Assistant Simple - Étape %1 sur %2 + + + + YahooSettings + + Login: + Identifiant : + + + Password: + Mot de passe : + + + Yahoo! Settings + Paramètres Yahoo + + + Use Yahoo! Japan server + Choisir le serveur Yahoo Japon + + + Forgot your Yahoo! password? + Mot de passe Yahoo oublié ? + + + Get a new Yahoo! Account + Créer un nouveau compte Yahoo + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_gl.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_gl.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_gl.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_gl.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4574 @@ + + + + + AIMSettings + + Login: + Usuario: + + + Forgot your AIM password? + Esqueceu o seu contrasinal de AIM? + + + Get a new AIM Account + Conseguir unha nova conta AIM + + + Password: + Contrasinal: + + + AIM Settings + Preferencias AIM/ICQ + + + + AboutWindow + + About + Sobre + + + Copyright (C)2008 Mbdsys + + + + Authors + Autores + + + Close + Pechar + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Transferencia de arquivos + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Aceptar + + + &Cancel + &Cancelar + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + &Editar o meu perfil + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + At&rás + + + Cancel + Cancelar + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Cancelar + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + Conta: + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Contrasinal: + + + Need help? + + + + + &Back + At&rás + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + Enderezo de correo: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Contrasinal: + + + Need help? + + + + + &Back + At&rás + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + Conta: + + + Proxy: + Proxy + + + : + : + + + Server: + Servidor: + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + Avanzado + + + + AdvancedConfigWindow + + Close + Pechar + + + Preference Name + + + + + Type + Tipo + + + Value + Valor + + + Default Value + Valor por omisión + + + Save + Gardar + + + Status + Estatus + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + Configuración avanzada + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + Borrar + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Pechar + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Chamada entrante + + + Message + Mensaxe + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + &Ferramentas + + + &Help + A&xuda + + + &Actions + &Accións + + + Main Toolbar + Barra de ferramentas principal + + + Call Contact + + + + + Send a File + Enviar un ficheiro + + + createChatConf + + + + + Show Contact Info + Amosar información de contacto + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + &Ferramentas + + + &Actions + &Accións + + + Main Toolbar + Barra de ferramentas principal + + + Call Contact + + + + + Send a File + Enviar un ficheiro + + + Show Contact Info + Amosar información de contacto + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + &Quitar + + + &Start + + + + Group Name + Nome do grupo + + + &Add + Eng&adir... + + + + ChatToaster + + Message + Mensaxe + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Cancelar + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + Teléfono número 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + Cancel + Cancelar + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + Eliminar grupo + + + Do you really want to delete this group? + Verdadeiramente desexas borrar este grupo? + + + &Yes + &Si + + + &No + &Non + + + + ContactList + + Contact List + Lista de contactos + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Cancelar + + + Program Failure + + + + + Send + Enviar + + + Optional Information + Información opcional: + + + Your Mail: + O seu correo electrónico: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Non dispoñíbel + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + Adquirir créditos de chamada + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Cartafol Raíz + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + Faga clic aquí para ver a(s) chamada(s) perdida(s) + + + Missed Call(s): + Chamada(s) perdida(s) + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Descargar + + + Upload + + + + + Click here to change your download folder + Faga clic aquí para cambiar o cartafol de descarga + + + Download folder: + Cartafol de descarga: + + + Clean all items in the list + Limpar tódolos elementos da lista + + + &Clean + &Limpar + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Cancelar + + + Form + + + + + Pause + Deter + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + Cando fago doble clic nun contacto + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + minutos + + + Show me as "Away" when I am inactive for: + Amosarme como "Ausente" cando estea inactivo por: + + + When I start my computer + Cando encendo o meu computador + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Usuario: + + + Password: + Contrasinal: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Cancelar + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Usuario: + + + Password: + Contrasinal: + + + ICQ Settings + Preferencias AIM/ICQ + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + Conseguir unha nova conta AIM + + + + IMAccountManager + + Close + Pechar + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Cancelar + + + Save + Gardar + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + Conseguir unha nova conta AIM + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Cancelar + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Usuario: + + + Password: + Contrasinal: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Contrasinal: + + + Need help? + + + + + Cancel + Cancelar + + + Delete + + + + + @product@ - Login + + + + + Account: + Conta: + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Usuario: + + + Password: + Contrasinal: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Pechar + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Transferencia de arquivos + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Aceptar + + + Status + Estatus + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Cancelar + + + Save + Gardar + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + Avanzado >> + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + Preferencias AIM/ICQ + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Cancelar + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + Avanzado + + + Advanced Settings + Configuración avanzada + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Avanzado + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Si + + + &No + &Non + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Si + + + &No + &Non + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Si + + + &No + &Non + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Cancelar + + + Remove + Borrar + + + Pause + Deter + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Tipo + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Conta: + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Estatus + + + Incoming Call + Chamada entrante + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + &Cancelar + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Avanzado >> + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Cancelar + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avanzado + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Estatus + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Cancelar + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Cancelar + + + Save + Gardar + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Aceptar + + + &Hidden + + + + + &Tools + &Ferramentas + + + &Help + A&xuda + + + &Actions + &Accións + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Cancelar + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Enviar + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Cancelar + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Cancelar + + + Finish + Rematar + + + Next > + Seguinte > + + + < Back + < Atrás + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Usuario: + + + Password: + Contrasinal: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + Esqueceu o seu contrasinal en Yahoo!? + + + Get a new Yahoo! Account + Conseguir unha nova conta Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_he.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_he.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_he.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_he.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4471 @@ + + + + + AIMSettings + + Login: + + + + + Forgot your AIM password? + אינך יודע את ססמת AIM שלך? + + + Get a new AIM Account + צור חשבון AIM חדש + + + Password: + סיסמא: + + + AIM Settings + הגדרות שמע + + + + AboutWindow + + About + אודות + + + Copyright (C)2008 Mbdsys + + + + Authors + כותבים + + + Close + סגור + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + העברת קובץ + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + + + + + &Accept + + + + + &Cancel + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + שנה את הגדרות המשתמש + + + + AddAccount + + Configure your account: + הוסף קרדיט לחשבונך... + + + &Next + המשך + + + Need help? + צריך עזרה? + + + You don't have any account ? Click here + אין ברשותך חשבון וונגו? <font color="#0055ff"><u>Click here</u></font> + + + &Back + חזרה למסך הקודם + + + Cancel + ביטול + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + ביטול + + + Contact Type (protocol): + פרוטוקול + + + Contact ID: + זיהוי איש קשר: + + + Account: + חשבון : + + + Enable + אפשר + + + Login + כניסה + + + Add + הוסף + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + סיסמא: + + + Need help? + צריך עזרה? + + + &Back + חזרה למסך הקודם + + + Cancel + ביטול + + + @product@ - Login + + + + + &Connect + מחובר + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + כתובת דוא"ל: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + סיסמא: + + + Need help? + צריך עזרה? + + + &Back + חזרה למסך הקודם + + + Cancel + ביטול + + + @product@ - Login + + + + + &Connect + מחובר + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + שם תצוגה + + + login / username: + שם משתמש: + + + Account name: + חשבון : + + + Proxy: + מתווך (proxy): + + + : + : + + + Server: + שרת: + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + מתקדם + + + + AdvancedConfigWindow + + Close + סגור + + + Preference Name + אפשרות + + + Type + סוג + + + Value + ערך + + + Default Value + ערך ברירת מחדל + + + Save + שמור + + + Status + מצב + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + הוסף + + + Advanced Settings + הגדרות מתקדמות + + + Advanced Configuration Window + חלון הגדרות מתקדמות + + + Automatically answer incoming calls from + ענה לשיחות נכנסות באופן אוטומטי + + + Remove + הסר + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + אזהרה, חלק זה מיועד למשתמשים מתקדמים. הכנסת ערך שגוי עלולה לגרום לתוכנה להפסיק לעבוד. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + שיחזור הגדרות מקוריות + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Audio Codecs + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + סגור + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + שלישי: + + + 1st: + ראשון: + + + 2nd: + שני: + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + שיחות שאינן נענות יועברו למענה האוטומטי + + + Disable call forwarding + שיחות שאינן נענות לא יועברו + + + Forward all unanswered calls to following phone numbers: + שיחות שאינן נענות יועברו למספרים: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + לדוגמא, 3314500XXXX+ כאשר 33+ היא הקידומת הבינלאומית עבור המדינה ו-14500XXXX מספר הטלפון. + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + שיחה נכנסת + + + Message + + + + + + ChatLogViewer + + Chat History + היסטוריית שיחות + + + &Contact + איש קשר + + + &Tools + &כלים + + + &Help + &עזרה + + + &Actions + &פעולות + + + Main Toolbar + סרגל כלים ראשי + + + Call Contact + התקשר + + + Send a File + שלח קובץ + + + createChatConf + + + + + Show Contact Info + אודות איש הקשר + + + blockContact + + + + + &Save History As... + שמור שיחה בקובץ + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + איש קשר + + + &Tools + &כלים + + + &Actions + &פעולות + + + Main Toolbar + סרגל כלים ראשי + + + Call Contact + התקשר + + + Send a File + שלח קובץ + + + Show Contact Info + אודות איש הקשר + + + blockContact + + + + + &Save History As... + שמור שיחה בקובץ + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + חדר + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + משתתפים + + + &Remove + + + + + &Start + + + + + Group Name + שם הקבוצה + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + צ'ט נכנס + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + ביטול + + + Start + התחל + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + ביטול + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + מחק קבוצה + + + Do you really want to delete this group? + אתה בטוח שברצונך למחוק את הקבוצה? + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + אנשי קשר + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + ביטול + + + Program Failure + שגיאה בתוכנית + + + Send + שלח + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + הורדה + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + ביטול + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + + + + + Password: + סיסמא: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + ביטול + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + אישור + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + + + + + Password: + סיסמא: + + + ICQ Settings + הגדרות וידאו + + + Forgot your ICQ password? + הכנס את סיסמתך + + + Get a new ICQ Account + צור חשבון חדש... + + + + IMAccountManager + + Close + סגור + + + Login + כניסה + + + Add + הוסף + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + ביטול + + + Save + שמור + + + IM Account Settings + + + + + + IMContactManager + + Add + הוסף + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + הוסף איש קשר + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + ביטול + + + OK + אישור + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + + + + + Password: + סיסמא: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + יציאה: + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + סיסמא: + + + Need help? + צריך עזרה? + + + Cancel + ביטול + + + Delete + + + + + @product@ - Login + + + + + Account: + חשבון : + + + &Connect + מחובר + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + + + + + Password: + סיסמא: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + בצע שיחה + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + סגור + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + העברת קובץ + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + + + + + Status + מצב + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + לוח מקשים + + + Audio Smileys + רגשוני שמע + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + ביטול + + + Save + שמור + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + כללי + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + מתקדם >> + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + שם משפחה: + + + First Name: + שם פרטי: + + + Details + + + + + Web/blog: + + + + + Country: + ארץ: + + + State: + + + + + City: + עיר: + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + הערות + + + Phone Numbers + מספרי טלפון + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + גבר + + + Female + אישה + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + הגדרות שמע + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + כניסה + + + Please enter an email address. + Enter the realm address + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + ביטול + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &מחק + + + + QtAdvancedSettings + + Advanced + מתקדם + + + Advanced Settings + הגדרות מתקדמות + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + מתקדם + + + Audio + + + + + Audio Settings + הגדרות שמע + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + התקשר + + + Free call + + + + Work phone + + + + + Send SMS + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + אין באפשרותך לשלוח הודעת SMS + + + %1 is a shortcut. + + + + + You can not send a shortcut. + אין באפשרותך לשלוח הודעת SMS + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + ביטול + + + Remove + הסר + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + ממתין... + + + An error occured during the file transfer + תקלה במערכת הקול: + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + כללי + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + רזולוציה + + + @product@ - Call History + + + + + Type + סוג + + + Name/ID + + + + + Date + + + + + Duration + משך + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + ביטול + + + @product@ + + + + + &Delete + &מחק + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + מחובר + + + Error: %1 + + + + + Online + מחובר + + + Invisible + + + + + Away + רחוק + + + Do not disturb + נא לא להפריע + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + ביטול + + + @product@ + + + + + &Delete + &מחק + + + Online + מחובר + + + Invisible + + + + + Away + רחוק + + + Do Not Disturb + נא לא להפריע + + + Disconnect + מחובר + + + Delete Account + מחק קבוצה + + + Are sure you want to delete the account <b>%1</b>? + האם אתה בטוח שברצונך למחוק + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + שפה + + + Language Settings + הגדרות מתקדמות + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + מצב + + + Incoming Call + שיחה נכנסת + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + ביטול + + + Talking - Conference + + + + + Add a Contact + הוסף איש קשר + + + + QtPresenceMenuManager + + Online + מחובר + + + Invisible + + + + + Away + רחוק + + + Do Not Disturb + נא לא להפריע + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + הגדרות מתקדמות + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + מתקדם >> + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + בחר את מצלמת האינטרנט שלך + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + Conference + + + + + Call + התקשר + + + Account + + + + Add a Contact + הוסף איש קשר + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + &Cancel + + + + Home + + + + + Are you sure you want to exit the application? + האם אתה בטוח שברצונך למחוק + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + מתקדם + + + General + כללי + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + שפה + + + Privacy + + + + + Video + ודיאו + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + הגדרות שמע + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + מצב + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + התקשר + + + Online + מחובר + + + Invisible + + + + + Away + רחוק + + + Do Not Disturb + נא לא להפריע + + + Internet Connection Error + + + + + Offline + לא מחובר + + + Connecting... + + + + + Send a SMS + + + + + Send SMS + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + המצב שלי + + + Quit @product@ + + + + + + QtToolBar + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + הוסף איש קשר + + + Hide Unavailable Contacts + שחרר חסימת משתמש + + + Show Unavailable Contacts + שחרר חסימת משתמש + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + האם אתה בטוח שברצונך למחוק + + + &Log Off + + + + + Disable &Video Calls + אפשר וידאו + + + Enable &Video Calls + אפשר וידאו + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + &Cancel + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + ודיאו + + + Normal + נורמאלי + + + Good + טוב + + + Very good + + + + + Excellent + מעולה + + + Video Settings + הגדרות וידאו + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + הגדרות וידאו + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + ביטול + + + Save + שמור + + + Title + סגנון + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + + + + + &Hidden + + + + + &Tools + &כלים + + + &Help + &עזרה + + + &Actions + &פעולות + + + @company@ + + + + + &Close + + + + + Dialpad + לוח מקשים + + + @product@ + + + + + Start Conference + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Send SMS... + + + + Send SMS + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + אודות + + + Add &Contact... + &הוסף איש קשר + + + &Configuration... + הגדרות + + + View My &Profile... + צפה בפרופיל שלי... + + + View My Profile + צפה בפרופיל שלי... + + + Start &Conference... + התחל צ'אט... + + + &Find Contact... + &הוסף איש קשר + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + העברת קובץ + + + Add Contact + &הוסף איש קשר + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + הוסף + + + SMS + SMS + + + Conference + + + + + + RenameGroupDialog + + Cancel + ביטול + + + OK + אישור + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + יציאת SIP: + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + שלח + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + חתימה : + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + ביטול + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + נורמאלי + + + Good + טוב + + + Very good + + + + + Excellent + מעולה + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + תצוגה מקדימה של המצלמה + + + Connection Type + סוג חיבור + + + Video quality + + + + + Down (kbit/s) + הורדה kbit/s) + + + Up (kbit/s) + העלאה kbit/s) + + + 0 to 512 + 0 to 512 + + + 0 to 128 + 0 to 128 + + + 512 to 2048 + 512 to 2048 + + + 128 to 256 + 128 to 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + מספר טלפון של איש הקשר + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + ביטול + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + + + + + Password: + סיסמא: + + + Yahoo! Settings + הגדרות שמע + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + הכנס את סיסמתך + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hi.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hi.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hi.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hi.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4736 @@ + + + + + AIMSettings + + Login: + + + + + Forgot your AIM password? + + + + + Get a new AIM Account + + + + + Password: + + + + + AIM Settings + + + + + + AboutWindow + + About + + + + + Copyright (C)2008 Mbdsys + + + + Authors + + + + + Close + + + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + + + + + toto@qutecom.fr + + + + + test.bmp + + + + + &Accept + + + + + &Cancel + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + + + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + + + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + + + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + + + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + + + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + + + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + + + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + + + + + Password: + + + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + + + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + + + + + Password: + + + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + + + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + + + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + + + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + + + + + Password: + + + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + + + + + Need help? + + + + + Cancel + + + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + + + + + Password: + + + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + + + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + + + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + + + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + + + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + + + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + + + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + + + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + + + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + + + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + + + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + + + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + + + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + + + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + + + + + Password: + + + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hu.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hu.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hu.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_hu.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3967 @@ + + + + + AIMSettings + + Login: + Bejelentkezés: + + + Forgot your AIM password? + Elfelejtette az AIM jelszavát? + + + Get a new AIM Account + Új AIM fiók regisztrációja + + + Password: + Jelszó: + + + AIM Settings + AIM/ICQ Beállítások + + + + AboutWindow + + About + Névjegy + + + Copyright (C)2008 Mbdsys + + + + Authors + Készítők + + + Close + Bezárás + + + 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. + Ez egy szabad szoftver; terjeszthető illetve módosítható a +GNU Általános Közreadási Feltételek dokumentumában leírtak +szerint -- 2. vagy későbbi verzió --, melyet a Szabad Szoftver +Alapítvány ad ki. + + + @product@ - About + @product@ - Névjegy + + + @product@, a voice over Internet phone + @product@, internet telefon + + + + AcceptDialog + + File Transfer + Fájlátvitel + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + Elfog&adás + + + &Cancel + &Mégsem + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kapcsolat: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Fájlnév: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Bejövő fájl</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Saját profil szerkesztése + + + + AddAccount + + Configure your account: + Fiók beállításai + + + &Next + &Következő + + + Need help? + Segítség kérése + + + You don't have any account ? Click here + Még nem regisztrált? Katt ide + + + &Back + &Vissza + + + Cancel + Mégsem + + + @product@ - Login + @product@ - Belépés + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">VOIP fiók beállítása</span><br><br><span>A szolgáltató <br/> @company@ cég vagy más</span> + + + @company@ account + @company@ fiók + + + Generic SIP account + Általános SIP fiók + + + + AddIMContact + + Cancel + Mégsem + + + Contact Type (protocol): + Partnerfiók típusa (protokoll): + + + Contact ID: + Felhasználó ID + + + Account: + Fiók: + + + Enable + Bekapcsolás + + + Login + Bejelentkezés + + + Add + Hozzáadás + + + @product@ - Add a Contact Account + @product@ - Partner fiók felvétele + + + + AddQuteComAccount + + Password: + Jelszó: + + + Need help? + Segítség kérése + + + &Back + &Vissza + + + Cancel + Mégsem + + + @product@ - Login + @product@ - Belépés + + + &Connect + &Csatlakozás + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Bejelentkezés</span><br><br><span>Kérjük adja meg elektronikus levelezési címét és<br>jelszavát</span> + + + Email Address: + Elektronikus levelezési-cím: + + + Click here if you don't have a @company@ account + Kattintson ide, ha még nem rendelkezik @company@ fiókkal + + + Forgot your @company@ password? + Elfelejtette @company@ jelszavát? + + + + AddSIPAccount + + Password: + Jelszó: + + + Need help? + Segítség kérése + + + &Back + &Vissza + + + Cancel + Mégsem + + + @product@ - Login + @product@ - Belépés + + + &Connect + &Csatlakozás + + + Activate presence and chat (SIP/SIMPLE) + Jelenlét és csevegés aktiválása (SIP/SIMPLE) + + + Displayname: + Megjelenített név: + + + login / username: + Belépés: + + + Account name: + Fióknév: + + + Proxy: + Proxy: + + + : + : + + + Server: + Kiszolgáló: + + + SIP Domain / Realm: + SIP Domain / Tartomány: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">SIP profil beállítása</span><br><br><span>Kérem töltsön ki minden információt ami<br/>lehetővé teszi az ön szoftveres telefonjának a<br/>SIP fiókjához való kapcsolódást</span> + + + Advanced + Szakértői + + + + AdvancedConfigWindow + + Close + Bezárás + + + Preference Name + Tulajdonság neve + + + Type + Típus + + + Value + Érték + + + Default Value + Alapértelmezett érték + + + Save + Mentés + + + Status + Státusz + + + @product@ - Advanced Configuration + @product@ - További beállítások + + + + AdvancedSettings + + Add + Hozzáadás + + + Advanced Settings + Szakértői beállítások + + + Advanced Configuration Window + Szakértői beálltások ablaka + + + Automatically answer incoming calls from + Bejövő hívások automatikus fogadása + + + Remove + Eltávolítás + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Figyelem, ez a rész csak haladó felhasználóknak ajánlott.<br>Minden hiba súlyosan károsíthatja a szoftvert. + + + + AppearanceSettings + + Toolbar + Eszköztár + + + &Icons && Text + &Ikonok és szövegek + + + Icons &Only + &Csak ikonok + + + &Hidden + &Rejtett + + + Chat Theme + Csevegési sablonok + + + Form + Űrlap + + + + AudioSettings + + Reset + Visszaállítás + + + Audio Codecs + Hangkodekek + + + &Input device: + &Bemeneti eszköz: + + + &Output device: + &Kimeneti eszköz: + + + &Ringing device: + &Csengetési eszköz: + + + &Make a test call + &Teszt hívás kezdeményezése + + + Test + Teszt + + + &Advanced >> + &További opciók >> + + + &Half Duplex + &Fél duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + Figyelem, ezek a beállítások csak haladó felhasználók számára ajánlott. +Bármilyen változtatás a kodekek sorrendjében problémákat okozhat a @product@ használatában: elképzelhető hogy nem fogja tudni felhívni a kapcsolatait többé. + + + + AvatarFrame + + Form + Űrlap + + + + AvatarWidget + + Form + Űrlap + + + + BrowserSoftUpdateWindow + + Close + Bezárás + + + @product@ - Update available + @product@ - Frissítés elérhető + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + <html><head></head><body>Újabb frissítés érhető el, kattints <span style=" text-decoration: underline; color:#0000ff;">ide</span>a letöltéshez<br /><br />Verzió: %1<br />Fájlméret: %2 (MB)<br /></body></html> + + + + CallForwardSettings + + 3rd: + Harmadik: + + + 1st: + Első: + + + 2nd: + Második: + + + (+ country code) phone number + (+ országkód) telefonszám + + + Forward all unanswered calls to message box + Minden fel nem vett hívás továbbítása a hangpostára + + + Disable call forwarding + Hívástovábbítás tiltása + + + Forward all unanswered calls to following phone numbers: + Minden fel nem vett hívás továbbítása a következő telefonszámokra: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Például +3314500XXXX (+33 az országkód, és 14500XXXX a telefonszám) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Hivásátirányítás aktív ha ne kapcsolódsz a @company@, mikor foglalt a vonal vagy 20 másodperccel a nemfogadott hívást követően. Beállíthatsz maximum 3 átirányítás vezetékes és mobil telefonokra vagy hangpostára (ha engedélyezett) + + + + CallToaster + + Incoming Call + Bejövő hívás + + + Message + Üzenet + + + + ChatLogViewer + + Chat History + Előzmények + + + &Contact + &Kapcsolat + + + &Tools + &Eszközök + + + &Help + &Segítség + + + &Actions + &Műveletek + + + Main Toolbar + Fő eszköztár + + + Call Contact + Partner hívása + + + Send a File + Fájl küldése + + + createChatConf + createChatConf + + + Show Contact Info + Kapcsolat infó megjelenítése + + + blockContact + blockContact + + + &Save History As... + Előzmény menté&se másként... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kapcsolat + + + &Tools + &Eszközök + + + &Actions + &Műveletek + + + Main Toolbar + Fő eszköztár + + + Call Contact + Partner hívása + + + Send a File + Fájl küldése + + + Show Contact Info + Kapcsolat infó megjelenítése + + + blockContact + blockContact + + + &Save History As... + Előzmény menté&se másként... + + + @company@ + @company@ + + + MainWindow + Főablak + + + &Edit + &Szerkesztés + + + Cu&t + &Kivágás + + + Ctrl+X + Ctrl+X + + + &Copy + &Másolás + + + Ctrl+C + Ctrl+C + + + &Paste + &Beillesztés + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Konferencia indítása + + + &Close + &Bezárás + + + Conference + Konferencia + + + + ChatRoomInviteWidget + + Chat room + Chat-szoba + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat-szoba</span></p></body></html> + + + (Conference participants) + (Konferencia résztvevők) + + + &Remove + &Eltávolítás + + + &Start + &Indítás + + + Group Name + Csoport neve + + + &Add + &Hozzáadás + + + + ChatToaster + + Message + Üzenet + + + Incoming Chat + Bejövő társalgás + + + + ChatWidget + + Form + Formula + + + + ConferenceCallWidget + + Cancel + Mégsem + + + Start + Indítás + + + Phone number 2: + Telefonszám 2: + + + Phone number 1: + Telefonszám 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Konferencia kezdeményezése + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferencia</span><br /><br />Adjon meg két telefonszámot </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vagy @company@ kapcsolat azonosítót </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a konferencia indításához</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferencia</span><br /><br />Adjon meg két telefonszámot </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vagy @company@ kapcsolat azonosítót </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a konferencia indításához</p> + + + &Add >> + &Hozzáadás >> + + + << &Remove + << &Eltávolítás + + + Available Contacts + Elérhető partnerek + + + &Start + &Indítás + + + Cancel + Mégsem + + + + ContactGroupPopupMenu + + Remove Contact Group + Kapcsolati csoport eltávolítása + + + Rename Contact Group + Kapcsolati csoport átnevezése + + + Delete group + Csoport törlése + + + Do you really want to delete this group? + Valóban törölni kívánja a csoportot? + + + &Yes + &Igen + + + &No + &Nem + + + + ContactList + + Contact List + Kapcsolati lista + + + goupname + + + + + ContactWidget + + No mobile phone number set + Nincs mobil telefonszám beállítva + + + No landline phone number set + Nincs vezetékes telefonszám beállítva + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Partner szerkesztése</p></body></html> + + + + CrashReport + + Cancel + Mégsem + + + Program Failure + Programhiba + + + Send + Küldés + + + Optional Information + Egyéb információ + + + Your Mail: + Az Ön elektronikus levélcíme: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + A @product@ végrehajtása közben hibat történt amiről hibanapló készült. +Ez a fájl hasznos információkat tartalmaz a probléma elhárításához. +Köszönjük közreműködését. + +A @product@ Fejlesztő Csapat. + + + In order to help the developers you can complete this report. This step is optional. + A fejlesztők munkájának segítéséhez kiegészítheti ezt a jelentést. Nem kötelező. + + + Use Case Description: + Használat körményeinek leírása: + + + + CreditWidget + + Not Available + Nem érhető el + + + Click here to change your call forward settings + A hívásátirányítás megváltoztatásához kattintson ide + + + Call forward mode: + Hívásátirányítás módja: + + + Purchase call out credits + Kredit vásárlása + + + Call Forward Method + Hívásátirányítás módja + + + Call Voice Mail + Hangposta hívása + + + Click here to buy @company@'s credits + @company@ kredit vásárlásához kattinton ide + + + + DesktopService + + Root Folder + Gyökérkönyvtár + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Hangok küldéséhez kattintson a színváltó elemekre. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Hangposta hívásához kattintson ide + + + New Voice Mail: + Új hangüzenet: + + + Click here to see missed call(s) + Nem fogadott hívások listázásához kattintson ide + + + Missed Call(s): + Nem fogadott hívások: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Letöltés + + + Upload + Feltöltés + + + Click here to change your download folder + A letöltési mappa megváltoztatásához kattintson ide + + + Download folder: + Letöltési könyvtár: + + + Clean all items in the list + Minden elem eltávolítása a listáról + + + &Clean + &Tisztítás + + + @product@ - File Transfer Manager + @product@ - Fájl átvitel kezelő + + + + FileTransferItem + + Cancel + Mégsem + + + Form + Űrlap + + + Pause + Szünet + + + <i>From:</i> + <i>Küldő:</i> + + + + GeneralSettings + + When I double-click on a contact + Amikor duplán kattintok egy partner nevére + + + Call cell phone or land line if contact not online + Mobil- vagy vezetékes-telefonszám hívása, ha a partner nem elérhető + + + Start in background mode + + + + Prefere start a free call if applicable + + + + Prefere start a chat + + + + Idle status + Tétlen állapot + + + minutes + percek + + + Show me as "Away" when I am inactive for: + "Távol" állapot, ha tétlen ennyi ideig: + + + When I start my computer + A számítógép indításakor + + + Automatically start @product@ + @product@ automatikus indítása + + + + GoogleTalkSettings + + Login: + Bejelentkezés: + + + Password: + Jelszó: + + + GoogleTalk Settings + GoogleTalk beállítások + + + Forgot your GoogleTalk password? + Elfelejtette a GoogleTalk jelszavát? + + + Get a new GoogleTalk Account + Új GoogleTalk fiók regisztrációja + + + + HttpProxyLoginWindow + + Cancel + Mégsem + + + HTTP Proxy Address: + HTTP Proxy cím: + + + HTTP Proxy Port Number: + HTTP proxy port: + + + HTTP Proxy Login: + HTTP Proxy felhasználónév: + + + HTTP Proxy Password: + HTTP Proxy jelszó: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Kérem adja meg a felhasználónevét és jelszavát</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Helyi HTTP proxy + + + + ICQSettings + + Login: + Bejelentkezés: + + + Password: + Jelszó: + + + ICQ Settings + AIM/ICQ Beállítások + + + Forgot your ICQ password? + Elfelejtette az ICQ jelszavát? + + + Get a new ICQ Account + Új ICQ fiók létrehozása + + + + IMAccountManager + + Close + Bezárás + + + Login + Bejelentkezés + + + Add + Hozzáadás + + + Delete + Törlés + + + Modify + Módosítás + + + Protocol + Protokoll + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Üzenetküldő fiókjaim (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Mégsem + + + Save + Mentés + + + IM Account Settings + IM Fiók beállítások + + + + IMContactManager + + Add + Hozzáadás + + + Delete + Törlés + + + Contact Type (protocol) + Kapcsolat típusa (protokoll) + + + Click on the add button below to add a new ID + Válassza a "Hozzáadás" gombot új felhasználói ID felvételéhez + + + Contact ID + Kapcsolat ID + + + + IMProfileWidget + + Enter your nickname here + Adja meg a becenevét + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Üzenetküldő fiók hozzáadása (MSN, AIM, GoogleTalk stb.) + + + Add an IM account + Fiók hozzáadása + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Mégsem + + + OK + OK + + + Go Up + Fel + + + Refresh + Frissítés + + + + JabberSettings + + Login: + Bejelentkezés: + + + Password: + Jelszó: + + + Jabber Settings + Jabber beállítások + + + Connect Server: + Kiszolgáló: + + + <u>Advanced Options</u> + <u>Szakértői beállítások</u> + + + Require TLS + TLS szükséges: + + + Port: + Port: + + + Use TLS if available + TLS használata, ha elérhető + + + Allow plaintext authentication over unencrypted streams + Titkosítatlan hitelesítés engedélyezése + + + 5222 + 5222 + + + Force old (port 5223) SSL + Régi SSL használatának kikényszerítése (port 5223) + + + Resource: + Erőforrás: + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Az Ön nyelve nem szerepel a listán. Tudta, hogy a Launchpadon elkészítheti a saját fordítását? + + + More information here. + További informácio itt. + + + + LogAccount + + Password: + Jelszó: + + + Need help? + Segítségre van szüksége? + + + Cancel + Mégsem + + + Delete + Törlés + + + @product@ - Login + @product@ - Belépés + + + Account: + Fiók: + + + &Connect + &Csatlakozás + + + Forgot your @company@ password? + Elfelejtette @company@ jelszavát? + + + &Modify + &Módosítás + + + Configure a &New Profile + Új &felhasználó + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Belépés</span><br><br><span>Kérem válasszon egy korábban használt profilt<br/> vagy töltse ki az információkat a(z)<br/> @company@ fiókba történő belépéshez</span> + + + + MSNSettings + + Login: + Bejelentkezés: + + + Password: + Jelszó: + + + MSN Settings + MSN beállítások + + + Forgot your MSN password? + Elfelejtette az MSN jelszavát? + + + Get a new MSN Account + Új MSN fiók regisztrációja + + + Use HTTP method + HTTP eljárás használata + + + + MainWindow + + MainWindow + Főablak + + + Command::terminate() + Parancs: megszakítás () + + + Command::start() + Parancs: indítás() + + + Accept Call + Hívásfogadás + + + Send Chat Message + Chat üzenet küldése + + + Make Call + Híváskezdeményezés + + + Hang Up + Vonal bontása + + + + ManageBlockedUsersSettings + + Close + Bezárás + + + Unblock User + Felhasználó-blokkolás feloldása + + + Manage blocked users + Blokkolt felhasználók kezelése + + + @product@ - Manage blocked users + @product@ - Blokkolt felhasználók kezelése + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Már rendelkezek @company@ fiókkal + + + Create a @company@ account + Új @company@ fiók létrehozása + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + SMS küldéshez be kell jelentkeznie egy @company@<br>fiókba és rendelkeznie kell @company@ egyenleggel. + + + + NotificationSettings + + Select the events for which a sound should be played. + Válassza ki, hogy mely eseményeket kísérje hangjelzés! + + + + NotificationSettingsItem + + Sound file + Hangfájl + + + Find a sound file + Hangfájl keresése + + + Play sound file + Hangfájl lejátszása + + + Play + Lejátszás + + + + NotifyDialog + + File Transfer + Fájlátvitel + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Állapot:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Frissítés</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + Elfog&adás + + + Status + Státusz + + + 00:00:00 + 00:00:00 + + + Nickname + Becenév + + + &Reject + Elutasított hívás + + + Dialpad + Tárcsázó + + + Audio Smileys + Audió smiley-k + + + Communication is encrypted + Kommunikáció titkosítva + + + + PrivacySettings + + Manage blocked users + Blokkolt felhasználók kezelése + + + Privacy Rules + Titoktartási szabályok + + + Always sign in as "Invisible" (appear offline to all users) + Belépés "Láthatatlan" módban (másoknak nem elérhetőként látszik) + + + Allow chats from + Chat engedélyezése az alábbi helyekről + + + Anyone + Bárki + + + Only people from my contact list + Csak a kapcsolati listában szereplő partnerek + + + Allow calls from + Hívás engedélyezése az alábbi helyekről + + + When I sign into @company@ + Amikor belépek ide @company@ + + + + ProfileDetails + + Cancel + Mégsem + + + Save + Mentés + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + Általános + + + Network IDs (MSN, Jabber...) + Hálózati azonosító (MSN, Jabber...) + + + Advanced >> + Haladó >> + + + Fill in all your network Id to stay connected with your contacts + Adja meg az összes fiók-hozzáférését, hogy minden partnerével kommunikálhasson + + + Contact + Kapcsolat + + + Group: + Csoport: + + + Last Name: + Vezetéknév: + + + First Name: + Keresztnév: + + + Details + Részletek + + + Web/blog: + Web/blog + + + Country: + Ország: + + + State: + Állam: + + + City: + Város: + + + Gender: + Nem: + + + Birth Date: + Születési dátum: + + + Email: + Elektronikus levelezési cím: + + + Notes + Megjegyzés + + + Phone Numbers + Telefonszámok + + + Home phone + Otthoni telefon + + + Mobile phone + Mobiletelefon + + + dd MMMM yyyy + nn HHHH eeee + + + Unknown + Ismeretlen + + + Male + Férfi + + + Female + + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Fiókok + + + Accounts Settings + Fiók beállítások + + + + QtAddAccount + + Configure your voip account + Internettelefon-fiók beállítása + + + Please tell us if your account is provided<br/>by @company@ or by another service + Az ön szolgáltatója @company@ vagy más szolgáltató + + + + QtAddAccountUtils + + Test + Teszt + + + Audio Test Call + Teszt hang hívás + + + Video Test Call + Teszt videó hívás + + + + QtAddQuteComAccount + + Login + Bejelentkezés + + + Please enter an email address. + Kérem adja meg az elektronikus levelezési címét <br/> és jelszavát + + + Please enter your email address<br/>and your password + Kérem adja meg az elektronikus levelezési címét <br/> és jelszavát + + + @product@ - Login + @product@ - Kapcsolat + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Adja meg SIP fiókjának adatait! + + + Configure your SIP profile + SIP profil beállításai + + + + QtAdvancedIMContactManager + + Cancel + Mégsem + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Biztosan törölni akarja a partnert? + + + + &Delete + &Törlés + + + + QtAdvancedSettings + + Advanced + Szakértői + + + Advanced Settings + Szakértői beállítások + + + + QtAppearanceSettings + + Me + Én + + + Hello + Szia + + + How are you? + Hogy vagy? + + + Other + Egyéb + + + I am fine + Kösz, jól + + + Have to go + Mennem kell + + + Bye + Viszlát + + + Appearance + Megjelenés + + + Appearance Settings + Megjelenés beállítása + + + + QtAudioSettings + + Advanced + Szakértői + + + Audio + Audió + + + Audio Settings + Audió beállítások + + + + QtCallBar + + +(country code) number or nickname + + (orszám hívószám) szám vagy becenév + + + + QtCallForwardSettings + + Call Forward + Hívástovábbítás + + + Call Forward Settings + Hívástovábbítás beállításai + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + Hivásátirányítás beállításához szükséges<BR> belépnie egy @company@ fiókkal. + + + + QtChatHistoryWidget + + Save As + Mentés másként + + + + QtChatLogViewer + + Account + + + + Edit Contact + Partner szerkesztése + + + + QtChatTabWidget + + Close chat + Csevegés bezárása + + + + QtChatWidget + + %1 is connected. + %1 elérhető. + + + %1 is disconnected. + %1 kijelentkezett. + + + send + küldés + + + Your file can not be sent: your contact must be connected on the @company@ network. + A fájlt nem lehet elküldeni: a partnerének a @company@ hálózatához kell csatlakoznia. + + + Your contact wishes to send a file with @company@. + Az ön partnere egy fájlt szeretne küldeni @company@ keresztül. + + + Go to %1 to install it + Lépjen ide %1 a telepítéshez + + + %1 has joined the chat + %1 csatlakozott a csevegéshez + + + %1 has left the chat + %1 elhagyta a csevegést + + + + QtChatWindow + + Account + + + + %1 is typing + + + + Edit Contact + Partner szerkesztése + + + @product@ Chat + @product@ Csevegés + + + + QtConferenceCallWidget + + Call SIP + SIP hívása + + + Call land line + Vezetékes telefonszám hívása + + + Call Mobile + Mobil hivása + + + Call @company@ + @company@ hívása + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Most közölheti az első partnerrel, hogy konferenciahívásban fog részt venni.</b><br><br>Ha ezzel kész, kattintson a lenti gombra. Amíg a második résztvevőt hívja, addig az első várakoztatásra kerül.<br> + + + Hold first interlocutor and call second one + Várakoztassa az első résztvevőt, és hívja a másodikat + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Most közölheti a második partnerrel, hogy konferenciahívásban fog részt venni.</b><br><br>Ha ezzel kész, kattintson a lenti gombra a konferenciahívás megkezdéséhez. + + + Start Conference + Konferencia indítása + + + @product@ - Proceed Conference + @product@ - Konferencia + + + + QtContactList + + &Yes + &Igen + + + &No + &Nem + + + Merge %1 with %2? + %1 és %2 összeolvasztása? + + + @product@ - Merge Contacts + @product@ - Partnerek összefésülése + + + + QtContactManager + + &Yes + &Igen + + + &No + &Nem + + + Home phone + Otthoni telefon + + + Mobile phone + Mobiletelefon + + + @product@ + @product@ + + + Edit Contact + Partner szerkesztése + + + Do you really want to delete this contact? + Valóban törölni kívánja ezt a partnert? + + + Start chat + Chat indítása + + + Delete contact + Partner törlése + + + Call + Hívás + + + Free call + + + + Work phone + Munkahelyi telefon + + + Send SMS + SMS küldése + + + Edit contact + Partner szerkesztése + + + Block contact + Partner blokkolása + + + Invite to conference + Meghívás konferenciába + + + Go to website + Weboldal megnyitása + + + Send file + Fájl küldése + + + Forward to mobile phone + Továbbítás mobil telefonszámra + + + + QtContactWidget + + No mobile phone number set + Nincs mobil telefonszám beállítva + + + No landline phone number set + Nincs vezetékes telefonszám beállítva + + + Click here to call + Hívás kezdeményezése + + + Click here to set a phone number + Telefonszám megadása + + + Click here to edit the contact + Partner szerkesztéséhez kattintson + + + Click here to send a SMS + SMS küldése + + + Click here to start a chat + Csevegés indítása + + + Click here to start a free call + Ingyenes hívás kezdeményezése + + + Click here to send a file + Fájl küldése + + + + QtCrashReport + + %1 Crash Report + %1Hibajelentés + + + + QtEventWidget + + Do you want to call your voice mail? + Valóban kívánja a hangpostát hívni? + + + @product@ - Voice Mail + @product@ - Hangposta + + + + QtFileTransfer + + &Yes + &Igen + + + &No + &Nem + + + Choose a directory + Válasszon egy könyvtárat + + + Overwrite File? + Felül szeretné írni a fájlt? + + + A file called %1 already exists.Do you want to overwrite it? + A(z) %1 fájl már létezik. Felül szeretné írni a fájlt? + + + File size error + Hibás fájlméret + + + %1 exceeds the maximum authorized size. + %1 elérte a maximálisan engedélyezett méretet + + + %1 has size 0. + %1 mérete 0. + + + %1 is a directory. + %1 egy mappa. + + + You can not send a directory. + Mappát nem lehet küldeni. + + + %1 is a shortcut. + %1 egy link. + + + You can not send a shortcut. + Linket nem lehet küldeni. + + + All Files (*.* *) + Minden fájl (*.* *) + + + Please upgrade<br> your @product@ + Kérem frissítse<br> a(z) @product@ szoftvert + + + Tell your contact<br> to upgrade<br> his @product@ + Kérje meg partnerét,<br> hogy frissítse<br> @product@ szoftverét + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + A fájlt nem lehet fogadni: frissítse a @product@-et a fájl fogadásához. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + fájlt próbál meg küldeni de frissíteni kell a @product@ a fogadáshoz. Kérje meg, hogy töltse le a legfrissebb verziót. + + + + QtFileTransferItem + + Cancel + Mégsem + + + Remove + Eltávolítás + + + Pause + Szünet + + + Starting + Indítás + + + From: + Feladó: + + + To: + Címzett: + + + Open + Megnyitás + + + Resume + Hívás tartásból visszavétele + + + Waiting for anwser... + Várakozás válaszra... + + + Done + Kész + + + Failed + Hiba + + + Paused + Felfüggesztve + + + Paused by peer + A partner felfüggesztette + + + Cancelled + Leállítva + + + Cancelled by peer + A partner megszakította + + + Downloading... + Letöltés... + + + Uploading... + Feltöltés... + + + Waiting for peer... + Fájlátvitel indítása + + + An error occured during the file transfer + Hiba történt a fájl átvitele közben + + + This may be caused by : + Lehetséges oka : + + + Your @product@ is not up to date. Please download the latest version on + Az ön @product@ nem a legfrissebb verzió. Kérem töltse le és telepítse a legfrissebb verziót + + + The @company@ network may be temporarily unavailable. Please try later. + A(z) @company@ hálózat ideiglenesen nem elérhető. Kérem próbálkozzon újra később. + + + + QtGeneralSettings + + General + Általános + + + General Settings + Általános beállítások + + + + QtHistory + + Incoming call + Bejövő hívás + + + Outgoing call + Kimenő hívás + + + Missed call + Nem fogadott hívás + + + Rejected call + Elutasított hívás + + + Outgoing SMS + Kimenő SMS + + + Do you want to call %1? + Fel kívánja hívni %1-t? + + + Chat session + Csevegés + + + @product@ - Call History + @product@ - Hívásnapló + + + Type + Típus + + + Name/ID + Név/ID + + + Date + Dátum + + + Duration + Időtartam + + + + QtHistoryWidget + + Erase this entry + Bejegyzés törlése + + + Open in SMS window + SMS ablak megnyitása + + + Call this peer + Partner hívása + + + Show chat log + A csevegés szövege + + + + QtIMAccountManager + + Cancel + Mégsem + + + @product@ + @product@ + + + &Delete + &Törlés + + + Are sure you want to delete this account? + + Biztosan törölni akarja a fiókot? + + + + + QtIMAccountMonitor + + Disconnected + Nincs kapcsolódva + + + Error: %1 + Hiba: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Elérhető + + + Invisible + Láthatatlan + + + Away + Távol + + + Do not disturb + Ne zavarjanak + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Felhasználónév megadása + + + + QtIMAccountPresenceMenuManager + + Cancel + Mégsem + + + @product@ + @product@ + + + &Delete + &Törlés + + + Online + Elérhető + + + Invisible + Láthatatlan + + + Away + Távol + + + Do Not Disturb + Ne zavarj + + + Disconnect + A kapcsolat bontása + + + Delete Account + Fiók törlése + + + Are sure you want to delete the account <b>%1</b>? + Valóban le kívánja törölni a(z) <b>%1</b> fiókot? + + + + QtIMProfileWidget + + Edit My Profile + Saját profil szerkesztése + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Nyelv + + + Language Settings + Nyelvi beállítások + + + + QtLogAccount + + Invalid account + Érvénytelen fiók + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Kérem válasszon egy korábban használt profilt <br/> vagy adja meg a @company@ fiók <br/> használatához szükséges információkat + + + + QtLoginDialog + + @product@ - Login + @product@ - Kapcsolat + + + + QtNotificationSettings + + Incoming call (ringtone) + Bejövő hívás (csengőhang) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Hívás megszakítása + + + Incoming chat + Bejövő chat + + + IM account connected + IM fiók csatlakoztatása + + + IM account disconnected + IM fiók lecsatlakoztatása + + + Contact online + Partner bejelentkezett + + + Notifications + Figyelmeztetések + + + Notifications Settings + Figyelmeztetések beállításai + + + + QtNotificationSettingsItem + + Choose a sound file + Hangfájl választása + + + Sounds + Hangok + + + + QtPhoneCall + + Status + Státusz + + + Incoming Call + Bejövő hívás + + + Resume + Hívás tartásból visszavétele + + + Hang-up + Hívás bontása + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Hiba + + + Talking + Beszélgetés + + + Dialing + Hívás + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Csengetés + + + Redirected + Átirányítva + + + Initialization... + Inicializálás... + + + Closed + Bezárva + + + Hold + Hívás tartásba helyezése + + + Add contact + Partner hozzáadása + + + Ca&ncel + &Mégsem + + + Talking - Conference + Konferenciahívás + + + Add a Contact + Partner hozzáadása + + + + QtPresenceMenuManager + + Online + Elérhető + + + Invisible + Láthatatlan + + + Away + Távol + + + Do Not Disturb + Ne zavarj + + + Log off + Kijelentkezés + + + + QtPrivacySettings + + Privacy + Titoktartás + + + Privacy Settings + Magánszféra beállításai + + + + QtProfileBar + + Click here to change your status + Állapot megváltoztatása + + + active + aktív + + + voicemail + hangposta + + + inactive + inaktív + + + unauthorized + nem hitelesített + + + Set global presence to: + Jelenlét mindenütt: + + + Voice mail + Hangposta + + + + QtProfileDetails + + Advanced >> + Haladó >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Nem lehet partnert felvenni csoport nélkül, kérem adjon meg egy csoportot + + + << Simple + << Egyszerű + + + Select your avatar + Avatár kiválasztása + + + @product@ - No Group Selected + @product@ - Nincs csoport kiválasztva + + + @company@ Avatars + @company@ Avatars + + + + QtQuteCom + + &Cancel + &Mégsem + + + Conference + Konferencia + + + Call + Hívás + + + Account + + + + Add a Contact + Partner hozzáadása + + + You have unfinished call(s). + Még van(nak) folyamatban lévő hívás(ok). + + + @product@ - Warning + @product@ - Figyelmeztetés + + + Home + Otthon + + + Are you sure you want to exit the application? + Biztosan ki akar lépni? + + + &Exit + &Kilépés + + + @product@ - Call Error + @product@ - Hívási hiba + + + Please hold all the phone calls before placing a new one + Újabb hívás előtt tegye várakozó állapotba a már megkezdetteket + + + Can't place a call, you are not connected + Nem kezdeményezhet hívást, nincs kapcsolódva + + + You must enter a phone number + Meg kell adnia egy telefonszámot + + + An error has occured trying to place the call + Hiba történt hívás kezdeményezésekor + + + + QtQuteComConfigDialog + + Advanced + Szakértői + + + General + Általános + + + Accounts + Fiókok + + + Audio + Audió + + + Call Forward + Hívástovábbítás + + + Language + Nyelv + + + Privacy + Titoktartás + + + Video + Videó + + + Voicemail + Hangposta + + + security + titkosítás + + + Notifications + Figyelmeztetések + + + + QtRenameGroup + + Bad group name + Hibás csoport név + + + Group name cannot be empty + A csoport neve nem lehet üres + + + + QtSecuritySettings + + Security + Titkosítás + + + Security Settings + Biztonsági beállítások + + + BETA + BÉTA + + + + QtSms + + Please fill in a phone number. + Adjon meg egy telefonszámot + + + Do you want to continue? + Folytatja? + + + Your SMS has not been sent + Sikertelen SMS küldés + + + Your SMS has been sent + Sikeres SMS küldés + + + Your message is too long. +This will send + Az üzenet túl hosszú. +Ezért + + + SMS. + + SMS fog kiküldésre kerülni. + + + + You can not send an empty message. + Nem lehet üres üzenetet küldeni. + + + @company@ SMS service + @company@ SMS szolgáltatás + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Sikertelen frissítés + + + @product@ update failed to start: try to update @product@ manually + @product@ frissítése nem sikerült: próbálja meg manuálisan + + + + QtStatusBar + + Not connected + Nincs kapcsolódva + + + Register done + Regisztráció megtörtént + + + Unregister done + Regisztráció törlése megtörtént + + + Connecting + Kapcsolódás + + + Output volume is muted + A kimeneti hangerő elnémítva + + + Output volume is 0 + A kimeneti hangerő 0 + + + Click to adjust output volume + Kimeneti hangerő állításához kattintson + + + Input volume is muted + Bemeneti hangerő elnémítva + + + Input volume is 0 + Bemeneti hangerő 0 + + + Click to adjust input volume + Bemeneti hangerő állításához kattintson + + + An error occured: Server error. + Hiba történt: Kiszolgáló hiba. + + + An error occured: Timeout. + Hiba történt: Időtúllépés. + + + An error occured: Authentication error. + Hiba történt: Azonosítás sikertelen. + + + + QtSystray + + Status + Státusz + + + @product@ + @product@ + + + Call SIP + SIP hívása + + + Call land line + Vezetékes telefonszám hívása + + + Call Mobile + Mobil hivása + + + Call @company@ + @company@ hívása + + + Call + Hívás + + + Send SMS + SMS küldése + + + Online + Elérhető + + + Invisible + Láthatatlan + + + Away + Távol + + + Do Not Disturb + Ne zavarj + + + Internet Connection Error + Internet kapcsolati hiba + + + Offline + Nem elérhető + + + Connecting... + Kapcsolódás... + + + Send a SMS + SMS küldése + + + Start a chat + Chat indítása + + + Place Call + Híváskezdeményezés + + + Send File + Fájl küldése + + + Multiple Status + Több állapot + + + Unknown Status + Ismeretlen állapot + + + Quit @product@ + Kilépés + + + + QtToolBar + + &Cancel + &Mégsem + + + @product@ - Proceed Conference + @product@ - Konferencia + + + Edit My Profile + Saját profil szerkesztése + + + Add a Contact + Partner hozzáadása + + + Hide Unavailable Contacts + Kilépett partnerek elrejtése + + + Show Unavailable Contacts + Kilépett partnerek mutatása + + + Hide Groups + Csoportok elrejtése + + + Show Groups + Csoportok mutatása + + + You have unfinished call(s). + Még van(nak) folyamatban lévő hívás(ok). + + + Are you sure you want to log off? + Biztos, hogy ki akar jelentkezni? + + + &Log Off + &Kijelentkezés + + + Disable &Video Calls + &Video hívások tiltása + + + Enable &Video Calls + &Videó bekapcsolása + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Nem kezdeményezhető konferenciahívás, amíg más hívások</b><br><br> +<b>vannak folyamatban.</b> + + + @product@ - Warning + @product@ - Figyelmeztetés + + + Log &Off... + Kijelentkezés + + + Log &On... + Bejelentkezés... + + + + QtTreeViewDelegate + + Contacts list + Partnerlista + + + + QtUserProfile + + Edit Contact + Partner szerkesztése + + + &Authorize + &Hozzáférés + + + &Block + &Blokkolás + + + Network error. + Hálózati hiba. + + + @product@ - Authorization Request + @product@ - Hitelesítés szükséges + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Probléma történt a profil betöltések közben. +A legutolsó mentett profil kerül betöltésre: +a legutóbbi módosítások elvesztek + + + Your profile could not be loaded. +Choose another profile or create a new one. + A profilt nem sikerült betölteni. +Válasszon másik profilt vagy hozzon létre egy újat. + + + Wrong email/password entered + Rossz elektronikus levelezési cím/jelszót adott meg + + + Wrong login/password entered + Rossz felhasználónevet/jelszót adott meg + + + Connection error + Kapcsolódási hiba + + + Unexpected error (code: %1 + Váratlan hiba (kód: %1 + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Videó + + + Normal + Normál + + + Good + + + + Very good + Nagyon jó + + + Excellent + Kiváló + + + Video Settings + Videó beállítások + + + + QtVoicemailSettings + + Voicemail + Hangposta + + + Voicemail Settings + Hangposta beállítások + + + + QtWebDirectory + + @product@ - Directory + @product@ - Telefonkönyv + + + + QuteComConfigDialog + + Cancel + Mégsem + + + Save + Mentés + + + Title + Cím + + + @product@ - Configuration + @product@ - Beállítás + + + + QuteComWindow + + &Accept + Elfog&adás + + + &Hidden + &Rejtett + + + &Tools + &Eszközök + + + &Help + &Segítség + + + &Actions + &Műveletek + + + @company@ + @company@ + + + &Close + &Bezárás + + + Dialpad + Tárcsázó + + + @product@ + @product@ + + + Start Conference + Konferenciahívás indítása + + + Send SMS + SMS küldése + + + Contacts + Partnerek + + + History + Előzmények + + + Clear &History + &Előzmények törlése + + + ToolBar + Eszköztár + + + Show/Hide Unavailable &Contacts + Nem elérhető kapcsolatok megjelentítése/elrejtése + + + &Chat Sessions + &Chat kapcsolatok + + + &All + &Mind + + + &HangUp + &Megszakítás + + + &Hold/Resume + &Tartás/visszavétel + + + Show/Hide &Groups + &Csoportok megjelenítése/elrejtése + + + &Outgoing Calls + &Kimenő hívások + + + &Incoming Calls + &Bejövő hívások + + + &Missed Calls + &Nem fogadott hívások + + + Enable/Disable &Video Calls + &Videó hívások be/kikapcsolása + + + Short Text &Messages (SMS) + S&MS + + + Rejected Calls + Hívás visszautasítása + + + &Contacts + &Partnerek + + + &About... + &Névjegy + + + Add &Contact... + &Partner hozzáadása + + + &Configuration... + &Beállítások + + + Send SMS... + SMS küldése + + + View My &Profile... + &Saját adatlap szerkesztése + + + View My Profile + &Saját adatlap szerkesztése + + + Start &Conference... + &Konferenciahívás + + + &Find Contact... + &Partnerek keresése + + + Log &Off... + Kilépés + + + Log Off + Kijelentkezés + + + Show &Chat Window + &Chat ablak megjelenítése + + + Show Chat Window + Chat ablak megjelenítése + + + Show &File Transfer + &Fájlátvitel mutatása + + + Add Contact + Partner hozzáadása + + + View My @company@ Account... + @company@ fiókom megtekintése... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ &Fórum... + + + @company@ &Wiki/FAQ... + @company@ &Wiki/GyIK... + + + Learn more about @company@ Services... + További információ a @company@ szolgáltatásairól... + + + Search + Keresés + + + Find @company@ Contacts + @company@ partnerek keresése + + + &Quit + &Kilépés + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Szövegek az ikonok alatt + + + &Icons Only + &Csak ikonok + + + Add + Hozzáadás + + + SMS + SMS + + + Conference + Konferencia + + + + RenameGroupDialog + + Cancel + Mégsem + + + OK + OK + + + Enter the new group name: + Új csoport neve: + + + @product@ - Rename Contact Group + @product@ - Partner csoport átnevezése + + + + SecuritySettings + + Form + Formula + + + Enable call encryption + Hívástitkosítás bekapcsolása + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ titkosítani tudja a hívásokat AES 128-bites titkosítással és a kulcsok váltáshoz Diffie-Hellman használ + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + Megjegyzés: Parnereinek engedélyezni kell ezt a beállítást a hívás titkosításához. A hívás titkosságáról meggyőződhet ha a @product@ ablakában megjelenik egy "lakat" ikon a hívás ideje alatt. + + + + SimpleIMContactManager + + Update your profile + Profil módosítása + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Küldés + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Telefonszám megadása + + + 0 /160 + 0 / 160 + + + Enter your signature here + Adja meg az aláírását + + + Signature: + Aláírás: + + + Phone number(s): + Telefonszám(ok): + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Adja meg a telefonszámo(ka)t <br>. Elválasztáshoz használja a & (és) ; (kettőspont) vagy , (vessző) jeleket + + + + SoftUpdateWindow + + Cancel + Mégsem + + + @product@ - Downloading update + @product@ - Frissítés letöltése + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + @product@ frissítés letöltése... + +Verzió: %1 +URL: %2 +Fájl méret: %3 (MB) +Sebesség: %4 (kB/s) + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formula + + + + VideoSettings + + Normal + Normál + + + Good + + + + Very good + Nagyon jó + + + Excellent + Kiváló + + + Enable video + Videó bekapcsolása + + + Webcam Selection + Webkamera kiválasztása + + + Webcam device: + Webkamera: + + + Webcam Preview + Webkamera előnézet + + + Connection Type + Kapcsolat típusa + + + Video quality + Videó minődésge + + + Down (kbit/s) + Letöltési sebesség (kbit/s) + + + Up (kbit/s) + Feltöltési sebesség (kbit/s) + + + 0 to 512 + 0-512 + + + 0 to 128 + 0-128 + + + 512 to 2048 + 512-2048 + + + 128 to 256 + 128-256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + A videó minősége függ az internet kapcsolat sebességétől + + + Make a test video call + Videó teszthívás indítása + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Első alkalommal ajánlott a normál videó minőséget választania ,ezután kipróbálhajta a különböző módokat hogy megtalálja önnek megfelelőt .</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ugrás <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> az ön internet kapcsolat sebességének megállapításához.</p></body></html> + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Videó + + + + VoicemailSettings + + Form + Formula + + + Phone number of your voicemail: + Hangposta telefonszáma: + + + Please fill in here the information about your voicemail + Adja meg a hangpostájának adatait + + + + Wizard + + Cancel + Mégsem + + + Finish + Kész + + + Next > + Következő > + + + < Back + < Vissza + + + Simple Wizard - Step %1 of %2 + Egyszerű varázsló - %1. lépés a %2-ből + + + + YahooSettings + + Login: + Bejelentkezés: + + + Password: + Jelszó: + + + Yahoo! Settings + Yahoo! beállítások + + + Use Yahoo! Japan server + Yahoo! Japán kiszolgáló használata + + + Forgot your Yahoo! password? + Elfelejtette a Yahoo! jelszavát? + + + Get a new Yahoo! Account + Új Yahoo! fiók létrehozása + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_it.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_it.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_it.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_it.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3955 @@ + + + + + AIMSettings + + Login: + Nome utente: + + + Forgot your AIM password? + Hai dimenticato la password AIM? + + + Get a new AIM Account + Ottieni un nuovo account AIM + + + Password: + Password: + + + AIM Settings + Impostazioni AIM + + + + AboutWindow + + About + Informazioni su + + + Copyright (C)2008 Mbdsys + + + + Authors + Autori + + + Close + Chiudi + + + 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. + Questo programma è software libero; puoi redistribuirlo e/o +modificarlo secondo i termini della GNU General Public License +come pubblicata dalla Free Software Foundation; sia la versione 2 +della licenza, o (a tua scelta) qualunque versione successiva. + + + @product@ - About + @product@ - Informazioni su + + + @product@, a voice over Internet phone + @product@, un programma di telefonia via Internet + + + + AcceptDialog + + File Transfer + Trasferimento file + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Accetta + + + &Cancel + A&nnulla + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contatto: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome file: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>File in entrata</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Modifica il mio profilo + + + + AddAccount + + Configure your account: + Configurazione del proprio account: + + + &Next + A&vanti + + + Need help? + Hai bisogno di aiuto? + + + You don't have any account ? Click here + Non hai ancora un account? Fai clic qui + + + &Back + &Indietro + + + Cancel + Annulla + + + @product@ - Login + @product@ - Accesso + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configura il tuo account voip</span><br><br><span>Specifica se il tuo account è fornito<br/>da @company@ o da un altro servizio</span> + + + @company@ account + Account @company@ + + + Generic SIP account + Account generico SIP + + + + AddIMContact + + Cancel + Annulla + + + Contact Type (protocol): + Tipo di contatto (protocollo): + + + Contact ID: + ID contatto: + + + Account: + Account: + + + Enable + Abilita + + + Login + Accedi + + + Add + Aggiungi + + + @product@ - Add a Contact Account + @product@ - Aggiungi un contatto + + + + AddQuteComAccount + + Password: + Password: + + + Need help? + Hai bisogno di aiuto? + + + &Back + &Indietro + + + Cancel + Annulla + + + @product@ - Login + @product@ - Accesso + + + &Connect + &Connetti + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Login</span><br><br><span>Indicare il proprio indirizzo di posta elettronica<br>e la password</span> + + + Email Address: + Indirizzo di posta elettronica: + + + Click here if you don't have a @company@ account + Fai clic qui se non hai un account @company@ + + + Forgot your @company@ password? + Hai dimenticato la password di @company@? + + + + AddSIPAccount + + Password: + Password: + + + Need help? + Hai bisogno di aiuto? + + + &Back + &Indietro + + + Cancel + Annulla + + + @product@ - Login + @product@ - Accesso + + + &Connect + &Connetti + + + Activate presence and chat (SIP/SIMPLE) + Attiva notifica di presenza e chat (SIP/SIMPLE) + + + Displayname: + Nome visualizzato + + + login / username: + ID / nome utente: + + + Account name: + Nome account: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + Dominio SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configurazione profilo SIP</span><br><br><span>Inserire tutte le informazioni<br/>necessarie al programma per la connessione<br/>al proprio account SIP</span> + + + Advanced + Avanzate + + + + AdvancedConfigWindow + + Close + Chiudi + + + Preference Name + Nome opzione + + + Type + Tipo + + + Value + Valore + + + Default Value + Valore predefinito + + + Save + Salva + + + Status + Stato + + + @product@ - Advanced Configuration + @product@ - Configurazione avanzata + + + + AdvancedSettings + + Add + Aggiungi + + + Advanced Settings + Impostazioni avanzate + + + Advanced Configuration Window + Finestra di configurazione avanzata + + + Automatically answer incoming calls from + Rispondi automaticamente alle chiamate da parte di + + + Remove + Rimuovi + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Attenzione, questa sezione è riservata a utenti avanzati.<br>Ogni errore potrebbe compromettere seriamente il programma. + + + + AppearanceSettings + + Toolbar + Barra degli strumenti + + + &Icons && Text + &Icone e testo + + + Icons &Only + S&olo icone + + + &Hidden + &Nascosto + + + Chat Theme + Tema chat + + + Form + Modulo + + + + AudioSettings + + Reset + Reimposta + + + Audio Codecs + Codificatori audio + + + &Input device: + D&ispositivo d'ingresso: + + + &Output device: + Disp&ositivo di uscita: + + + &Ringing device: + Segnalazione chiamata ent&rante (squillo): + + + &Make a test call + Effettua una chia&mata di prova + + + Test + Prova + + + &Advanced >> + &Avanzate >> + + + &Half Duplex + &Half Duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Modulo + + + + AvatarWidget + + Form + Modulo + + + + BrowserSoftUpdateWindow + + Close + Chiudi + + + @product@ - Update available + @product@ - Aggiornamento disponibile + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3°: + + + 1st: + 1°: + + + 2nd: + 2°: + + + (+ country code) phone number + (+ prefisso indicativo del paese) numero di telefono + + + Forward all unanswered calls to message box + Trasferisci tutte le chiamate alla segreteria telefonica + + + Disable call forwarding + Disabilita trasferimento di chiamata + + + Forward all unanswered calls to following phone numbers: + Trasferisci tutte le chiamate senza risposta ai seguenti numeri di telefono: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Per esempio +3906XXXX (+39 è il prefisso indicativo del paese e 06XXXX il numero di telefono) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Il trasferimento di chiamata è attivo se non sei connesso a @company@, quando la linea è occupata o dopo 20 secondi in caso di mancata risposta. Puoi configurare fino a tre trasferimenti di chiamata verso rete fissa, cellulari o segreteria telefonica (se disponibile) + + + + CallToaster + + Incoming Call + Chiamata in entrata + + + Message + Messaggio + + + + ChatLogViewer + + Chat History + Cronologia chat + + + &Contact + &Contatto + + + &Tools + S&trumenti + + + &Help + &Aiuto + + + &Actions + &Azioni + + + Main Toolbar + Barra degli strumenti principale + + + Call Contact + Chiama contatto + + + Send a File + Invia un file + + + createChatConf + createChatConf + + + Show Contact Info + Mostra informazioni sul contatto + + + blockContact + blockContact + + + &Save History As... + &Salva Cronologia come... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contatto + + + &Tools + S&trumenti + + + &Actions + &Azioni + + + Main Toolbar + Barra degli strumenti principale + + + Call Contact + Chiama contatto + + + Send a File + Invia un file + + + Show Contact Info + Mostra informazioni sul contatto + + + blockContact + blockContact + + + &Save History As... + &Salva Cronologia come... + + + @company@ + @company@ + + + MainWindow + MainWindow + + + &Edit + &Modifica + + + Cu&t + &Taglia + + + Ctrl+X + Ctrl+X + + + &Copy + &Copia + + + Ctrl+C + Ctrl+C + + + &Paste + &Incolla + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Avvia conferenza + + + &Close + &Chiudi + + + Conference + Conferenza + + + + ChatRoomInviteWidget + + Chat room + Stanza di chat + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Stanza di chat</span></p></body></html> + + + (Conference participants) + (Partecipanti alla conferenza) + + + &Remove + &Rimuovi + + + &Start + A&vvia + + + Group Name + Nome gruppo + + + &Add + A&ggiungi + + + + ChatToaster + + Message + Messaggio + + + Incoming Chat + Chat in entrata + + + + ChatWidget + + Form + Modulo + + + + ConferenceCallWidget + + Cancel + Annulla + + + Start + Avvia + + + Phone number 2: + Numero di telefono 2: + + + Phone number 1: + Numero di telefono 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Crea una conferenza + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferenza</span><br /><br />Inserisci due numeri di telefono </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">o ID di contatti @company@ per</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">creare una conferenza a tre.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferenza</span><br /><br />Inserisci due numeri di telefono </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">o ID di contatti @company@ per</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">creare una conferenza a tre.</p> + + + &Add >> + &Aggiungi >> + + + << &Remove + << &Rimuovi + + + Available Contacts + Contatti disponibili + + + &Start + A&vvia + + + Cancel + Annulla + + + + ContactGroupPopupMenu + + Remove Contact Group + Rimuovi gruppo contatti + + + Rename Contact Group + Rinomina gruppo contatti + + + Delete group + Elimina gruppo + + + Do you really want to delete this group? + Vuoi davvero eliminare questo gruppo? + + + &Yes + &Sì + + + &No + &No + + + + ContactList + + Contact List + Lista contatti + + + goupname + + + + + ContactWidget + + No mobile phone number set + Nessun numero di cellulare impostato + + + No landline phone number set + Nessun numero di telefono fisso impostato + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic qui per modificare questo contatto</p></body></html> + + + + CrashReport + + Cancel + Annulla + + + Program Failure + Errore del programma + + + Send + Invia + + + Optional Information + Informazioni aggiuntive + + + Your Mail: + Il tuo indirizzo di posta: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Non disponibile + + + Click here to change your call forward settings + Fai clic per cambiare le impostazioni di trasferimento di chiamata + + + Call forward mode: + Modalità del trasferimento di chiamata: + + + Purchase call out credits + Acquista credito + + + Call Forward Method + Modalità di trasferimento di chiamata + + + Call Voice Mail + Chiama casella vocale + + + Click here to buy @company@'s credits + Fai clic qui per acquistare credito @company@ + + + + DesktopService + + Root Folder + Cartella principale + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Fai clic sui diversi elementi che cambiano colore per inviare suoni agli interlocutori. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Fai clic qui per chiamare la tua segreteria telefonica + + + New Voice Mail: + Nuovo messaggio vocale: + + + Click here to see missed call(s) + Fai clic qui per visualizzare le chiamate perse + + + Missed Call(s): + Chiamate perse: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Ricevuti + + + Upload + Inviati + + + Click here to change your download folder + Fai clic per cambiare la cartella di destinazione dei file scaricati + + + Download folder: + Cartella di destinazione: + + + Clean all items in the list + Cancella tutti gli elementi della lista + + + &Clean + &Pulisci + + + @product@ - File Transfer Manager + @product@ - Gestore trasferimenti file + + + + FileTransferItem + + Cancel + Annulla + + + Form + Modulo + + + Pause + Pausa + + + <i>From:</i> + <i>Da:</i> + + + + GeneralSettings + + When I double-click on a contact + Al doppio clic su un contatto + + + Call cell phone or land line if contact not online + Chiama cellulare o fisso se il contatto non è in linea + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Inattività + + + minutes + minuti + + + Show me as "Away" when I am inactive for: + Mostrami come "Assente" quando sono inattivo per: + + + When I start my computer + All'avvio del computer + + + Automatically start @product@ + Avvia automaticamente @product@ + + + + GoogleTalkSettings + + Login: + Nome utente: + + + Password: + Password: + + + GoogleTalk Settings + Impostazioni GoogleTalk + + + Forgot your GoogleTalk password? + Hai dimenticato la password GoogleTalk? + + + Get a new GoogleTalk Account + Ottieni un nuovo account GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Annulla + + + HTTP Proxy Address: + Indirizzo proxy HTTP: + + + HTTP Proxy Port Number: + Numero porta proxy HTTP: + + + HTTP Proxy Login: + Nome utente proxy HTTP: + + + HTTP Proxy Password: + Password proxy HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autenticazione proxy HTTP</span><br><br><span>Il proxy locale HTTP utilizza l'autenticazione<br>Inserire nome utente e password</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Proxy HTTP locale + + + + ICQSettings + + Login: + Nome utente: + + + Password: + Password: + + + ICQ Settings + Impostazioni ICQ + + + Forgot your ICQ password? + Hai dimenticato la password ICQ? + + + Get a new ICQ Account + Ottieni un nuovo account ICQ + + + + IMAccountManager + + Close + Chiudi + + + Login + Accedi + + + Add + Aggiungi + + + Delete + Elimina + + + Modify + Modifica + + + Protocol + Protocollo + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - I miei account di messaggistica istantanea (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Annulla + + + Save + Salva + + + IM Account Settings + Impostazioni account IM + + + + IMContactManager + + Add + Aggiungi + + + Delete + Elimina + + + Contact Type (protocol) + Tipo di contatto (protocollo) + + + Click on the add button below to add a new ID + Fai clic sul pulsante seguente per aggiungere un nuovo ID + + + Contact ID + ID contatto + + + + IMProfileWidget + + Enter your nickname here + Inserisci qui il tuo nickname + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Aggiungi un account di messaggistica istantanea (MSN, AIM, GoogleTalk...) + + + Add an IM account + Aggiungi un account IM + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic per cambiare il tuo avatar</p></body></html> + + + + ImageSelector + + Cancel + Annulla + + + OK + OK + + + Go Up + Vai su + + + Refresh + Aggiorna + + + + JabberSettings + + Login: + Nome utente: + + + Password: + Password: + + + Jabber Settings + Impostazioni Jabber + + + Connect Server: + Collegati al server: + + + <u>Advanced Options</u> + <u>Opzioni avanzate</u> + + + Require TLS + Richiedi TLS + + + Port: + Porta: + + + Use TLS if available + Utilizza TLS se disponibile + + + Allow plaintext authentication over unencrypted streams + Permetti autenticazione con testo in chiaro su flussi non cifrati + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forza vecchio SSL (porta 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + La tua lingua non è presente; sapevi che puoi aggiungere la tua traduzione su Launchpad? + + + More information here. + Ulteriori informazioni qui. + + + + LogAccount + + Password: + Password: + + + Need help? + Hai bisogno di aiuto? + + + Cancel + Annulla + + + Delete + Elimina + + + @product@ - Login + @product@ - Accesso + + + Account: + Account: + + + &Connect + &Connetti + + + Forgot your @company@ password? + Hai dimenticato la password di @company@? + + + &Modify + &Modifica + + + Configure a &New Profile + Configura un &nuovo profilo + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Accesso</span><br><br><span>Scegli un profilo precedentemente utilizzato<br/> o inserisci le informazioni per connetterti a un<br/> account @company@</span> + + + + MSNSettings + + Login: + Nome utente: + + + Password: + Password: + + + MSN Settings + Impostazioni MSN + + + Forgot your MSN password? + Hai dimenticato la password MSN? + + + Get a new MSN Account + Ottieni un nuovo account MSN + + + Use HTTP method + Usa metodo HTTP + + + + MainWindow + + MainWindow + MainWindow + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Accetta chiamata + + + Send Chat Message + Invia messaggio di testo + + + Make Call + Effettua una chiamata + + + Hang Up + Riaggancia + + + + ManageBlockedUsersSettings + + Close + Chiudi + + + Unblock User + Sblocca utente + + + Manage blocked users + Gestisci utenti bloccati + + + @product@ - Manage blocked users + @product@ - Gestione utenti bloccati + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Ho un account @company@ + + + Create a @company@ account + Crea un account @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Per inviare un SMS, è necessario essersi autenticati con un<br>account @company@ e avere del credito @company@. + + + + NotificationSettings + + Select the events for which a sound should be played. + Selezionare l'evento da associare al suono da riprodurre + + + + NotificationSettingsItem + + Sound file + File sonoro + + + Find a sound file + Trova un file sonoro + + + Play sound file + Riproduci file sonoro + + + Play + Riproduci + + + + NotifyDialog + + File Transfer + Trasferimento file + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stato:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aggiorna</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Accetta + + + Status + Stato + + + 00:00:00 + 00:00:00 + + + Nickname + Nickname + + + &Reject + &Rifiuta + + + Dialpad + Tastierino numerico + + + Audio Smileys + Smile audio + + + Communication is encrypted + La comunicazione è cifrata + + + + PrivacySettings + + Manage blocked users + Gestisci utenti bloccati + + + Privacy Rules + Regole di riservatezza + + + Always sign in as "Invisible" (appear offline to all users) + Accedi sempre come "Invisibile" (apparirò a tutti gli utenti come "non in linea") + + + Allow chats from + Permetti messaggi di testo da + + + Anyone + Chiunque + + + Only people from my contact list + Solo persone della mia lista contatti + + + Allow calls from + Permetti chiamate da + + + When I sign into @company@ + Quando accedo a @company@ + + + + ProfileDetails + + Cancel + Annulla + + + Save + Salva + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic per cambiare il tuo avatar</p></body></html> + + + General + Generale + + + Network IDs (MSN, Jabber...) + ID di rete (MSN, Jabber...) + + + Advanced >> + Avanzate >> + + + Fill in all your network Id to stay connected with your contacts + Inserire tutti gli ID di rete per rimanere connesso con i propri contatti + + + Contact + Contatto + + + Group: + Gruppo: + + + Last Name: + Cognome: + + + First Name: + Nome: + + + Details + Dettagli + + + Web/blog: + Web/blog: + + + Country: + Nazione: + + + State: + Regione: + + + City: + Città: + + + Gender: + Sesso: + + + Birth Date: + Data di nascita: + + + Email: + Indirizzo di posta elettronica: + + + Notes + Note + + + Phone Numbers + Numeri di telefono + + + Home phone + Telefono di casa + + + Mobile phone + Cellulare + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Sconosciuto + + + Male + Maschio + + + Female + Femmina + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Account + + + Accounts Settings + Impostazioni account + + + + QtAddAccount + + Configure your voip account + Configura il tuo account voip + + + Please tell us if your account is provided<br/>by @company@ or by another service + Specifica se il tuo account è fornito<br/>da @company@ o da un altro servizio + + + + QtAddAccountUtils + + Test + Prova + + + Audio Test Call + Chiamata audio di prova + + + Video Test Call + Chiamata video di prova + + + + QtAddQuteComAccount + + Login + Accedi + + + Please enter an email address. + Inserire un indirizzo di posta elettronica. + + + Please enter your email address<br/>and your password + Inserisci il tuo indirizzo di posta elettronica<br/> e la password + + + @product@ - Login + @product@ - Connessione + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Inserire tutte le informazioni necessarie<br/> al programma per la connessione<br/>al proprio account SIP + + + Configure your SIP profile + Configura il tuo account SIP + + + + QtAdvancedIMContactManager + + Cancel + Annulla + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Sei sicuro di voler eliminare questo account IM? + + + + &Delete + &Elimina + + + + QtAdvancedSettings + + Advanced + Avanzate + + + Advanced Settings + Impostazioni avanzate + + + + QtAppearanceSettings + + Me + Me + + + Hello + Ciao + + + How are you? + Come stai? + + + Other + Altro + + + I am fine + Sto bene + + + Have to go + Devo andare + + + Bye + Arrivederci + + + Appearance + Aspetto + + + Appearance Settings + Impostazioni aspetto + + + + QtAudioSettings + + Advanced + Avanzate + + + Audio + Audio + + + Audio Settings + Impostazioni audio + + + + QtCallBar + + +(country code) number or nickname + (+ prefisso indicativo del paese) numero o nickname + + + + QtCallForwardSettings + + Call Forward + Trasferimento di chiamata + + + Call Forward Settings + Impostazioni trasferimento di chiamata + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Salva come + + + + QtChatLogViewer + + Account + + + + Edit Contact + Modifica contatto + + + + QtChatTabWidget + + Close chat + Chiudi chat + + + + QtChatWidget + + %1 is connected. + %1 è connesso. + + + %1 is disconnected. + %1 è disconnesso. + + + send + invia + + + Your file can not be sent: your contact must be connected on the @company@ network. + Il tuo file non può essere inviato: il contatto deve essere connesso alla rete @company@. + + + Your contact wishes to send a file with @company@. + Il contatto desidera inviarti un file con @company@. + + + Go to %1 to install it + Vai a %1 per installarlo + + + %1 has joined the chat + %1 è entrato nella chat + + + %1 has left the chat + %1 ha lasciato la chat + + + + QtChatWindow + + Edit Contact + Modifica contatto + + + @product@ Chat + @product@ Chat + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Chiama indirizzo SIP + + + Call land line + Chiama telefono fisso + + + Call Mobile + Chiama cellulare + + + Call @company@ + Chiama @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Ora è possibile informare il primo interlocutore che sta per entrare a far parte di una conferenza.</b><br><br>Successivamente, fai clic sul pulsante sottostante. Il primo interlocutore verrà messo in attesa, mentre il secondo verrà chiamato.<br> + + + Hold first interlocutor and call second one + Metti in attesa il primo interlocutore e chiama il secondo + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>È possibile informare il secondo interlocutore che sta per entrare a far parte di una conferenza.</b><br><br>Fatto ciò, fai clic sul pulsante sottostante per iniziare la conferenza. + + + Start Conference + Inizia conferenza + + + @product@ - Proceed Conference + @product@ - Avvia conferenza + + + + QtContactList + + &Yes + &Sì + + + &No + &No + + + Merge %1 with %2? + Fondere %1 con %2? + + + @product@ - Merge Contacts + QuteCom - Fusione di contatti + + + + QtContactManager + + &Yes + &Sì + + + &No + &No + + + Home phone + Telefono di casa + + + Mobile phone + Cellulare + + + @product@ + @product@ + + + Edit Contact + Modifica contatto + + + Do you really want to delete this contact? + Eliminare definitivamente questo contatto? + + + Start chat + Avvia chat + + + Delete contact + Elimina contatto + + + Call + Chiama + + + Free call + + + + Work phone + Telefono ufficio + + + Send SMS + Invia SMS + + + Edit contact + Modifica contatto + + + Block contact + Blocca contatto + + + Invite to conference + Invita alla conferenza + + + Go to website + Vai al sito + + + Send file + Invia file + + + Forward to mobile phone + Inoltra a cellulare + + + + QtContactWidget + + No mobile phone number set + Nessun numero di cellulare impostato + + + No landline phone number set + Nessun numero di telefono fisso impostato + + + Click here to call + Fai clic qui per chiamare + + + Click here to set a phone number + Fai clic qui per impostare un numero di telefono + + + Click here to edit the contact + Fai clic qui per modificare il contatto + + + Click here to send a SMS + Fare clic qui per inviare un SMS + + + Click here to start a chat + Fai clic qui per avviare una chat + + + Click here to start a free call + Fai clic qui per iniziare una chiamata gratuita + + + Click here to send a file + Fai clic qui per inviare un file + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Vuoi chiamare la tua segreteria telefonica? + + + @product@ - Voice Mail + @product@ - Segreteria telefonica + + + + QtFileTransfer + + &Yes + &Sì + + + &No + &No + + + Choose a directory + Scegliere una cartella + + + Overwrite File? + Sovrascrivere il file? + + + A file called %1 already exists.Do you want to overwrite it? + Un file chiamato %1 esiste già. Vuoi sovrascriverlo? + + + File size error + Errore nella dimensione del file + + + %1 exceeds the maximum authorized size. + %1 eccede la dimensione massima consentita. + + + %1 has size 0. + %1 ha dimensione nulla. + + + %1 is a directory. + %1 è una cartella. + + + You can not send a directory. + Impossibile inviare una cartella. + + + %1 is a shortcut. + %1 è un collegamento. + + + You can not send a shortcut. + Impossibile inviare un collegamento. + + + All Files (*.* *) + Tutti i file (*.* *) + + + Please upgrade<br> your @product@ + Aggiorna<br> il tuo @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Suggerisci al tuo contatto<br> ad aggiornare<br> il suo @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Il file non può essere ricevuto: devi aggiornare il tuo @product@ per riceverlo. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + sta cercando di inviarti un file, ma il suo @product@ deve essere aggiornato per riceverlo. Digli di scaricare l'ultima versione. + + + + QtFileTransferItem + + Cancel + Annulla + + + Remove + Rimuovi + + + Pause + Pausa + + + Starting + Avvio + + + From: + Da: + + + To: + A: + + + Open + Apri + + + Resume + Ripristina + + + Waiting for anwser... + In attesa di risposta... + + + Done + Fatto + + + Failed + Non riuscito + + + Paused + In pausa + + + Paused by peer + Sospeso dalla rete + + + Cancelled + Annullato + + + Cancelled by peer + Annullato dalla rete + + + Downloading... + Scaricamento in corso... + + + Uploading... + Invio in corso... + + + Waiting for peer... + In attesa dell'interlocutore... + + + An error occured during the file transfer + Si è verificato un errore durante il trasferimento file + + + This may be caused by : + Potrebbe essere causato da: + + + Your @product@ is not up to date. Please download the latest version on + Il tuo @product@ non è aggiornato. Scarica l'ultima versione + + + The @company@ network may be temporarily unavailable. Please try later. + La rete @company@ potrebbe essere temporaneamente non disponibile. Prova più tardi. + + + + QtGeneralSettings + + General + Generale + + + General Settings + Impostazioni generali + + + + QtHistory + + Incoming call + Chiamata in entrata + + + Outgoing call + Chiamata in uscita + + + Missed call + Chiamata persa + + + Rejected call + Chiamata rifiutata + + + Outgoing SMS + SMS in uscita + + + Do you want to call %1? + Vuoi chiamare %1? + + + Chat session + Sessione di chat + + + @product@ - Call History + @product@ - Cronologia chiamate + + + Type + Tipo + + + Name/ID + Nome/ID + + + Date + Data + + + Duration + Durata + + + + QtHistoryWidget + + Erase this entry + Elimina questo elemento + + + Open in SMS window + Apri nella finestra SMS + + + Call this peer + Chiama questa rete + + + Show chat log + Mostra registro di chat + + + + QtIMAccountManager + + Cancel + Annulla + + + @product@ + @product@ + + + &Delete + &Elimina + + + Are sure you want to delete this account? + + Sei sicuro di voler eliminare questo account? + + + + + QtIMAccountMonitor + + Disconnected + Disconnesso + + + Error: %1 + Errore: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + In linea + + + Invisible + Invisibile + + + Away + Assente + + + Do not disturb + Non disturbare + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Inserisci un nome utente + + + + QtIMAccountPresenceMenuManager + + Cancel + Annulla + + + @product@ + @product@ + + + &Delete + &Elimina + + + Online + In linea + + + Invisible + Invisibile + + + Away + Assente + + + Do Not Disturb + Non disturbare + + + Disconnect + Disconnetti + + + Delete Account + Elimina account + + + Are sure you want to delete the account <b>%1</b>? + Sei sicuro di voler eliminare l'account <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Modifica il mio profilo + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Lingua + + + Language Settings + Impostazioni di lingua + + + + QtLogAccount + + Invalid account + Account non valido + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Scegli un profilo precedentemente utilizzato<br/> o inserisci le informazioni per connetterti all'<br/>acccount @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - Connessione + + + + QtNotificationSettings + + Incoming call (ringtone) + Chiamata in entrata (suoneria) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Chiamata terminata (tono di riaggancio) + + + Incoming chat + Messaggio di testo in entrata + + + IM account connected + Account IM connesso + + + IM account disconnected + Account IM disconnesso + + + Contact online + Contatto in linea + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Scegli un file sonoro + + + Sounds + Suoni + + + + QtPhoneCall + + Status + Stato + + + Incoming Call + Chiamata in entrata + + + Resume + Ripristina + + + Hang-up + Riaggancia + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Errore + + + Talking + In conversazione + + + Dialing + Composizione + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Sta squillando + + + Redirected + Rediretta + + + Initialization... + Inizializzazione... + + + Closed + Chiuso + + + Hold + Sospendi + + + Add contact + Aggiungi contatto + + + Ca&ncel + A&nnulla + + + Talking - Conference + In conversazione - Conferenza + + + Add a Contact + Aggiungi un contatto + + + + QtPresenceMenuManager + + Online + In linea + + + Invisible + Invisibile + + + Away + Assente + + + Do Not Disturb + Non disturbare + + + Log off + Disconnetti + + + + QtPrivacySettings + + Privacy + Riservatezza + + + Privacy Settings + Impostazioni sulla privacy + + + + QtProfileBar + + Click here to change your status + Fai clic qui per cambiare il tuo stato + + + active + attivo + + + voicemail + segreteria telefonica + + + inactive + inattivo + + + unauthorized + non autorizzato + + + Set global presence to: + Imposta la presenza globale a: + + + Voice mail + Segreteria telefonica + + + + QtProfileDetails + + Advanced >> + Avanzate >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Un contatto deve avere un gruppo, impostane uno + + + << Simple + << Semplice + + + Select your avatar + Seleziona il tuo avatar + + + @product@ - No Group Selected + @product@ - Nessun gruppo selezionato + + + @company@ Avatars + Avatar di @company@ + + + + QtQuteCom + + &Cancel + A&nnulla + + + Conference + Conferenza + + + Call + Chiama + + + Account + + + + Add a Contact + Aggiungi un contatto + + + You have unfinished call(s). + Ci sono chiamate non ancora terminate. + + + @product@ - Warning + @product@ - Avviso + + + Home + Casa + + + Are you sure you want to exit the application? + Sei sicuro di voler chiudere l'applicazione? + + + &Exit + &Esci + + + @product@ - Call Error + @product@ - Errore di chiamata + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avanzate + + + General + Generale + + + Accounts + Account + + + Audio + Audio + + + Call Forward + Trasferimento di chiamata + + + Language + Lingua + + + Privacy + Riservatezza + + + Video + Video + + + Voicemail + Segreteria telefonica + + + security + sicurezza + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nome gruppo non valido + + + Group name cannot be empty + Il nome del gruppo non può essere vuoto + + + + QtSecuritySettings + + Security + Sicurezza + + + Security Settings + Impostazioni di sicurezza + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Inserire un numero di telefono. + + + Do you want to continue? + Vuoi continuare? + + + Your SMS has not been sent + Il tuo SMS non è stato inviato + + + Your SMS has been sent + Il tuo SMS è stato inviato + + + Your message is too long. +This will send + Il messaggio è troppo lungo. +Saranno inviati + + + SMS. + + SMS. + + + + You can not send an empty message. + Non puoi inviare un messaggio vuoto. + + + @company@ SMS service + Servizio SMS di @company@ + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Aggiornamento non riuscito + + + @product@ update failed to start: try to update @product@ manually + L'aggiornamento di @product@ non è partito: prova ad aggiornare @product@ manualmente + + + + QtStatusBar + + Not connected + Non connesso + + + Register done + Identificazione effettuata + + + Unregister done + Disconnessione effettuata + + + Connecting + Connessione in corso + + + Output volume is muted + Il volume di uscita è silenziato + + + Output volume is 0 + Il volume di uscita è 0 + + + Click to adjust output volume + Fai clic per regolare il volume di uscita + + + Input volume is muted + Il volume d'ingresso è silenziato + + + Input volume is 0 + Il volume d'ingresso è 0 + + + Click to adjust input volume + Fai clic per regolare il volume d'ingresso + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Stato + + + @product@ + @product@ + + + Call SIP + Chiama indirizzo SIP + + + Call land line + Chiama telefono fisso + + + Call Mobile + Chiama cellulare + + + Call @company@ + Chiama @company@ + + + Call + Chiama + + + Send SMS + Invia SMS + + + Online + In linea + + + Invisible + Invisibile + + + Away + Assente + + + Do Not Disturb + Non disturbare + + + Internet Connection Error + Errore di connessione a Internet + + + Offline + Non in linea + + + Connecting... + Connessione in corso... + + + Send a SMS + Invia un SMS + + + Start a chat + Avvia una chat + + + Place Call + Chiama + + + Send File + Invia file + + + Multiple Status + Stato multiplo + + + Unknown Status + Stato sconosciuto + + + Quit @product@ + Chiudi @product@ + + + + QtToolBar + + &Cancel + A&nnulla + + + @product@ - Proceed Conference + @product@ - Avvia conferenza + + + Edit My Profile + Modifica il mio profilo + + + Add a Contact + Aggiungi un contatto + + + Hide Unavailable Contacts + Nascondi i contatti non disponibili + + + Show Unavailable Contacts + Mostra contatti non disponibili + + + Hide Groups + Nascondi gruppi + + + Show Groups + Mostra gruppi + + + You have unfinished call(s). + Ci sono chiamate non ancora terminate. + + + Are you sure you want to log off? + Disconnettersi? + + + &Log Off + &Disconnetti + + + Disable &Video Calls + Disabilita le chiamate &video + + + Enable &Video Calls + Abilita le chiamate &video + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>La conferenza non può essere avviata mentre ci sono telefonate attive.</b><br><br>Termina tutte le telefonate e riprova. + + + @product@ - Warning + @product@ - Avviso + + + Log &Off... + Disc&onnetti... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Lista contatti + + + + QtUserProfile + + Edit Contact + Modifica contatto + + + &Authorize + &Autorizza + + + &Block + &Blocca + + + Network error. + Errore di rete. + + + @product@ - Authorization Request + @product@ - Richiesta di autorizzazione + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Si è verificato un problema durante il caricamento del tuo profilo. +È stato caricato l'ultimo profilo salvato: +potresti aver perso le ultime modifiche + + + Your profile could not be loaded. +Choose another profile or create a new one. + Il tuo profilo non può essere caricato. +Scegli un altro profilo o creane uno nuovo. + + + Wrong email/password entered + Email/password inserita non valida + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normale + + + Good + Buona + + + Very good + Molto buona + + + Excellent + Eccellente + + + Video Settings + Impostazioni video + + + + QtVoicemailSettings + + Voicemail + Segreteria telefonica + + + Voicemail Settings + Impostazioni segreteria telefonica + + + + QtWebDirectory + + @product@ - Directory + @product@ - Cartella + + + + QuteComConfigDialog + + Cancel + Annulla + + + Save + Salva + + + Title + Titolo + + + @product@ - Configuration + @product@ - Configurazione + + + + QuteComWindow + + &Accept + &Accetta + + + &Hidden + &Nascosto + + + &Tools + S&trumenti + + + &Help + &Aiuto + + + &Actions + &Azioni + + + @company@ + @company@ + + + &Close + &Chiudi + + + Dialpad + Tastierino numerico + + + @product@ + @product@ + + + Start Conference + Inizia conferenza + + + Send SMS + Invia SMS + + + Contacts + Contatti + + + History + Cronologia + + + Clear &History + Svuota &cronologia + + + ToolBar + Barra degli strumenti + + + Show/Hide Unavailable &Contacts + Mostra/Nascondi &contatti non disponibili + + + &Chat Sessions + Sessione di &chat + + + &All + &Tutto + + + &HangUp + &Riaggancia + + + &Hold/Resume + &Sospendi/Ripristina + + + Show/Hide &Groups + Mostra/Nascondi &gruppi + + + &Outgoing Calls + C&hiamate in uscita + + + &Incoming Calls + Ch&iamate in entrata + + + &Missed Calls + Chia&mate perse + + + Enable/Disable &Video Calls + Abilita/Disabilita le chiamate &video + + + Short Text &Messages (SMS) + Breve &messaggio di testo (SMS) + + + Rejected Calls + Chiamate rifiutate + + + &Contacts + &Contatti + + + &About... + Inform&azioni su... + + + Add &Contact... + Aggiungi &contatto... + + + &Configuration... + &Configurazione... + + + Send SMS... + Invia SMS... + + + View My &Profile... + Visualizza il mio &profilo + + + View My Profile + Visualizza il mio profilo + + + Start &Conference... + Avvia &conferenza... + + + &Find Contact... + &Trova contatto... + + + Log &Off... + Disc&onnetti... + + + Log Off + Disconnetti + + + Show &Chat Window + Mostra la finestra di &chat + + + Show Chat Window + Mostra la finestra di chat + + + Show &File Transfer + Mostra trasferimento &file + + + Add Contact + Aggiungi contatto + + + View My @company@ Account... + Visualizza il mio account @company@... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + &Forum di @company@... + + + @company@ &Wiki/FAQ... + &Wiki/FAQ di @company@... + + + Learn more about @company@ Services... + Ulteriori informazioni sui servizi @company@... + + + Search + Cerca: + + + Find @company@ Contacts + Trova i contatti @company@ + + + &Quit + E&sci + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Testo sotto le icone + + + &Icons Only + Solo &icone + + + Add + Aggiungi + + + SMS + SMS + + + Conference + Conferenza + + + + RenameGroupDialog + + Cancel + Annulla + + + OK + OK + + + Enter the new group name: + Inserisci il nuovo nome del gruppo: + + + @product@ - Rename Contact Group + @product@ - Rinomina gruppo + + + + SecuritySettings + + Form + Modulo + + + Enable call encryption + Abilita la cifratura delle chiamate + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ può cifrare le chiamate utilizzando il sistema di cifratura AES a 128-bit e Diffie-Hellman per lo scambio delle chiavi. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Aggiorna il tuo profilo + + + Yahoo! ID: + ID Yahoo!: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + ID MSN: + + + SIP ID: + SIP ID: + + + ICQ ID: + ID ICQ: + + + AIM ID: + ID AIM: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Invia + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Fai clic qui per aggiungere un numero di telefono + + + 0 /160 + 0 /160 + + + Enter your signature here + Inserisci qui la tua firma + + + Signature: + Firma: + + + Phone number(s): + Numeri di telefono: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Inserisci qui i numeri di telefono <br>Devono essere separati da & o ; o , + + + + SoftUpdateWindow + + Cancel + Annulla + + + @product@ - Downloading update + @product@ - Scaricamento aggiornamenti + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Modulo + + + + VideoSettings + + Normal + Normale + + + Good + Buona + + + Very good + Molto buona + + + Excellent + Eccellente + + + Enable video + Abilita video + + + Webcam Selection + Selezione webcam + + + Webcam device: + Dispositivo webcam: + + + Webcam Preview + Anteprima webcam + + + Connection Type + Tipo di connessione + + + Video quality + Qualità video + + + Down (kbit/s) + Scaric. (kbit/s) + + + Up (kbit/s) + Inv. (kbit/s) + + + 0 to 512 + da 0 a 512 + + + 0 to 128 + da 0 a 128 + + + 512 to 2048 + da 512 a 2048 + + + 128 to 256 + da 128 a 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + La qualità del video dipende dall'ampiezza di banda della tua connessione a Internet + + + Make a test video call + Effettua una chiamata video di prova + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Modulo + + + Phone number of your voicemail: + Numero di telefono della propria segreteria telefonica: + + + Please fill in here the information about your voicemail + Inserisci le informazioni riguardanti la tua segreteria telefonica + + + + Wizard + + Cancel + Annulla + + + Finish + Fine + + + Next > + Successivo > + + + < Back + < Precedente + + + Simple Wizard - Step %1 of %2 + Procedura guidata semplice - Passo %1 di %2 + + + + YahooSettings + + Login: + Nome utente: + + + Password: + Password: + + + Yahoo! Settings + Impostazioni Yahoo! + + + Use Yahoo! Japan server + Usa server Yahoo! Giappone + + + Forgot your Yahoo! password? + Hai dimenticato la password di Yahoo!? + + + Get a new Yahoo! Account + Ottieni un nuovo account Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ja.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ja.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ja.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ja.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3898 @@ + + + + + AIMSettings + + Login: + ログイン: + + + Forgot your AIM password? + AIMパスワードを忘れました? + + + Get a new AIM Account + AIMアカウントを新規取得 + + + Password: + パスワード: + + + AIM Settings + AIMの設定 + + + + AboutWindow + + About + 関して + + + Copyright (C)2008 Mbdsys + Copyright (C)2008 Mbdsy + + + Authors + 著作者 + + + Close + 閉じる + + + 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. + このプログラムはフリープログラムです。Free Software Foundation に基ずくGNU General Public License により、再配布と修正をしても構いません。バージョン2も同じじくフリープログラムとなります。 + + + @product@ - About + @product@ - 関して + + + @product@, a voice over Internet phone + @product@, ボイスオーバーIP電話 + + + + AcceptDialog + + File Transfer + ファイル転送 + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + 承認(&A) + + + &Cancel + キャンセル(&C) + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + "x; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + プロフィール編集(&E) + + + + AddAccount + + Configure your account: + アカウント設定: + + + &Next + &次へ + + + Need help? + ヘルプ + + + You don't have any account ? Click here + アカウントを持っていません ? こちらをクリックして下さい。 + + + &Back + + + + Cancel + キャンセル + + + @product@ - Login + @product@ - ログイン + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + @company@ account + @company@ アカウント + + + Generic SIP account + 一般SIPアカウント + + + + AddIMContact + + Cancel + キャンセル + + + Contact Type (protocol): + コンタクトタイプ(プロトコル): + + + Contact ID: + コンタクトID: + + + Account: + アカウント: + + + Enable + 有効 + + + Login + ログイン + + + Add + 追加 + + + @product@ - Add a Contact Account + @product@ - コンタクトアカウントの追加 + + + + AddQuteComAccount + + Password: + パスワード: + + + Need help? + ヘルプ + + + &Back + &戻る + + + Cancel + キャンセル + + + @product@ - Login + @product@ - ログイン + + + &Connect + &コネクト + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">ログイン </span><br><br><span>Eメールアドレスと<br>パスワードを入力して下さい。</span> + + + Email Address: + Eメールアドレス: + + + Click here if you don't have a @company@ account + @company@ accountを持っていない場合はこちらをクリックして下さい。 + + + Forgot your @company@ password? + あなたの@company@ passwordを忘れました? + + + + AddSIPAccount + + Password: + パスワード: + + + Need help? + ヘルプ + + + &Back + &戻る + + + Cancel + キャンセル + + + @product@ - Login + @product@ - ログイン + + + &Connect + &コネクト + + + Activate presence and chat (SIP/SIMPLE) + プレゼンスをアクティベイトそしてチャット(SIP/SIMPLE) + + + Displayname: + 表示名 + + + login / username: + ログイン /ユーザー名: + + + Account name: + アカウント名: + + + Proxy: + プロキシ: + + + : + : + + + Server: + サーバー: + + + SIP Domain / Realm: + SIPドメイン/ Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">SIPプロフィールを設定</span><br><br><span>ソフトフォンを SIPアカウントに接続する情報を入力して下さい。</span> + + + Advanced + アドバンスト + + + + AdvancedConfigWindow + + Close + 閉じる + + + Preference Name + プリファレンス名 + + + Type + タイプ + + + Value + 変数 + + + Default Value + 既定値 + + + Save + 保存 + + + Status + ステータス + + + @product@ - Advanced Configuration + @product@ -アドバンスト設定 + + + + AdvancedSettings + + Add + 追加 + + + Advanced Settings + アドバンスト設定 + + + Advanced Configuration Window + アドバンスト設定ウィンドウ + + + Automatically answer incoming calls from + からの着信に自動応答する。 + + + Remove + 削除 + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + 警告, このパートはアドバンストユーザーです。<br>何らかの間違いでソフトウェアに重大なダメージを与えます。 + + + + AppearanceSettings + + Toolbar + ツールバー + + + &Icons && Text + &アイコン && テキスト + + + Icons &Only + アイコン &のみ + + + &Hidden + &隠れる + + + Chat Theme + チャットテーマ + + + Form + フォーム + + + + AudioSettings + + Reset + リセット + + + Audio Codecs + オーディオコーデック + + + &Input device: + &入力デバイス: + + + &Output device: + &出力デバイス: + + + &Ringing device: + &リングデバイス: + + + &Make a test call + &テスト発信コール + + + Test + テスト + + + &Advanced >> + &アドバンスト >> + + + &Half Duplex + &ハーフデュプレックス + + + Be aware, this section is for power users only. Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + 警告!このセクションはパワーユーザーのみです。コーデック順番を変更することによって、あなたの@product@に重大な問題が起こる可能性があります。 以後は連絡されても対応できません。 + + + + AvatarFrame + + Form + フォーム + + + + AvatarWidget + + Form + フォーム + + + + BrowserSoftUpdateWindow + + Close + 閉じる + + + @product@ - Update available + @product@ - アップデート可能 + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + <html><head></head><body>アップデートが可能です。クリックして下さい。 <span style=" text-decoration: underline; color:#0000ff;">here</span>新バージョンをダウンロードできます。 <br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + CallForwardSettings + + 3rd: + 3番目: + + + 1st: + 1番目: + + + 2nd: + 2番目: + + + (+ country code) phone number + (+ 国別コード) 電話番号 + + + Forward all unanswered calls to message box + すべての不在着信をメッセージボックスに送る。 + + + Disable call forwarding + 着信転送を利用しない。 + + + Forward all unanswered calls to following phone numbers: + すべての不在着信を以下の電話番号に転送する: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + 例えば +3314500XXXX (+33 は、国番で、 14500XXXXは電話番号です。) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + @company@に接続できなくとも着信転送はアクティブです。不在着信してから20秒経過するかビジーの場合、固定電話や携帯電話に転送が行われます。 + + + + CallToaster + + Incoming Call + 着信 + + + Message + メッセージ + + + + ChatLogViewer + + Chat History + チャット履歴 + + + &Contact + コンタクト(&C) + + + &Tools + ツール(&T) + + + &Help + ヘルプ(&H) + + + &Actions + アクション(&A) + + + Main Toolbar + メインツールバー + + + Call Contact + コールコンタクト + + + Send a File + ファイル転送 + + + createChatConf + ChatConf作成 + + + Show Contact Info + コンタクト情報表示 + + + blockContact + コンタクト拒否 + + + &Save History As... + 履歴を保存(&S) + + + actionRestartChat + チャット再起動アクション + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + コンタクト(&C) + + + &Tools + ツール(&T) + + + &Actions + アクション(&A) + + + Main Toolbar + メインツールバー + + + Call Contact + コールコンタクト + + + Send a File + ファイル転送 + + + Show Contact Info + コンタクト情報表示 + + + &Save History As... + 履歴を保存(&S) + + + @company@ + @company@ + + + MainWindow + メインウィンドウ + + + &Edit + 編集(&E) + + + blockContact + コンタクト拒否 + + + Cu&t + カット(&t) + + + Ctrl+X + Ctrl+X + + + &Copy + コピー(&C) + + + Ctrl+C + Ctrl+C + + + &Paste + 貼り付け(&P) + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + チャット会議開始 + + + &Close + 閉じる(&C) + + + Conference + 会議 + + + + ChatRoomInviteWidget + + Chat room + チャットルーム + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">チャットルーム </span></p></body></html> + + + (Conference participants) + (会議参加者) + + + &Remove + 削除 + + + &Start + 開始 + + + Group Name + グループ名 + + + &Add + 追加 + + + + ChatToaster + + Message + メッセージ + + + Incoming Chat + チャットを受信 + + + + ChatWidget + + Form + フォーム + + + + ConferenceCallWidget + + Cancel + キャンセル + + + Start + 開始 + + + Phone number 2: + 電話番号2: + + + Phone number 1: + 電話番号1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - 会議の作成 + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />2つの電話番号を入力します。 </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> 3ウェイ会議を作成するためです。</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />2つの電話番号を入力します。 </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">3ウェイ会議を作成するためです。</p> + + + &Add >> + 追加 >> + + + <<&Remove + <<削除 + + + Available Contacts + 有効なコンタクト + + + &Start + 開始 + + + Cancel + キャンセル + + + + ContactGroupPopupMenu + + Remove Contact Group + コンタクトグループの削除 + + + Rename Contact Group + コンタクトグループのリネーム + + + Delete group + グループ削除 + + + Do you really want to delete this group? + 本当にこのグループを削除してもよいですか? + + + &Yes + はい(&Y) + + + &No + いいえ(&N) + + + + ContactList + + Contact List + コンタクトリスト + + + goupname + グループ名 + + + + ContactWidget + + No mobile phone number set + 携帯電話番号がセットされてない + + + No landline phone number set + 固定電話番号がセットされてない + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">このコンタクトを編集するにはクリックします。 </p></body></html> + + + + CrashReport + + Cancel + キャンセル + + + Program Failure + プログラム失敗 + + + Send + 送信 + + + Optional Information + オプション情報 + + + Your Mail: + あなたのメール: + + + The @product@ execution failed and has generated a diagnostic file. This file contains useful information to solve the problem you are encountering. Thanks for your contribution. The @product@ Development Team. + @product@ execution は失敗しました。診断ファイルを生成します。あなたが直面した問題を解決するための役立つ情報がこのファイルに含まれています。どうもご協力ありがとうございました。@product@ Developmentチーム一同 + + + In order to help the developers you can complete this report. This step is optional. + 開発者に役立てるためにこのレポートを作成して下さい。このステップはオプションです。 + + + Use Case Description: + ケース記述を使用: + + + + CreditWidget + + Not Available + 利用できません。 + + + Click here to change your call forward settings + 着信転送設定を変更するには、ここをクリックします。 + + + Call forward mode: + 着信転送モード: + + + Purchase call out credits + コールクレジットの購入 + + + Call Forward Method + 着信転送方法 + + + Call Voice Mail + コールボイスメール + + + Click here to buy @company@'s credits + @company@'s creditsを購入するにはここをクリックします。 + + + + DesktopService + + Root Folder + ルートフォルダ + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + あなたの対話者に音声を送るには、様々な色の変更項目をクリックします。 + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + ボイスメールにコールするには、ここをクリックします。 + + + New Voice Mail: + 新規ボイスメール: + + + Click here to see missed call(s) + 失敗した通話を見るにはここをクリックします。 + + + Missed Call(s): + 失敗した通話: + + + + FacebookSettings + + Facebook Settings + Facebookの設定 + + + Email Address + Eメールアドレス + + + Password + パスワード + + + +Get a new Facebook Account + +新規Facebookアカウントを取得 + + + + FileTransferDialog + + ... + ... + + + Download + ダウンロード + + + Upload + アップロード + + + Click here to change your download folder + ダウンロードフォルダを変更するにはここをクリックします。 + + + Download folder: + ダウンロードフォルダ: + + + Clean all items in the list + リストの全ての項目をクリーン + + + &Clean + クリア(&C) + + + @product@ - File Transfer Manager + @product@ - ファイル転送マネージャー + + + + FileTransferItem + + Cancel + キャンセル + + + Form + フォーム + + + Pause + 一時停止 + + + <i>From:</i> + <i>From:</i> + + + + GeneralSettings + + When I double-click on a contact + コンタクトをダブルクリック時 + + + Call cell phone or land line if contact not online + コンタクトがオフラインなら、携帯電話か固定電話にコール + + + Prefere start a free call if applicable + もし可能ならフリーコールを開始 + + + Start in background mode + バックグラウンドモードを開始 + + + Prefere start a chat + チャット開始 + + + Idle status + アイドル状態 + + + minutes + + + + Show me as "Away" when I am inactive for: + 使用していない時は"退席中"と表示 + + + When I start my computer + コンピュータを起動した時 + + + Automatically start @product@ + 自動スタート @product@ + + + + GoogleTalkSettings + + Login: + ログイン: + + + Password: + パスワード: + + + GoogleTalk Settings + GoogleTalkの設定 + + + Forgot your GoogleTalk password? + GoogleTalkのパスワードを忘れた? + + + Get a new GoogleTalk Account + 新規GoogleTalkアカウントを取得 + + + + HttpProxyLoginWindow + + Cancel + キャンセル + + + HTTP Proxy Address: + HTTP プロキシアドレス: + + + HTTP Proxy Port Number: + HTTPプロキシポート番号 + + + HTTP Proxy Login: + HTTP Proxy Login:ログイン: + + + HTTP Proxy Password: + HTTPプロキシパスワード: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Proxy 認証</span><br><br><span>あなたのHTTPプロキシは認証を使用しています。<br>ログインIDとパスワードを入力して下さい。 </span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - ローカルHTTP プロキシ + + + + ICQSettings + + Login: + ログイン: + + + Password: + パスワード: + + + ICQ Settings + ICQの設定 + + + Forgot your ICQ password? + AIMのパスワードを忘れた? + + + Get a new ICQ Account + 新規AIMアカウントを取得 + + + + IMAccountManager + + Close + 閉じる + + + Login + ログイン + + + Add + 追加 + + + Delete + 削除 + + + Modify + 変更 + + + Protocol + プロトコル + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - 私のインスタントメッセージアカウント(MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + キャンセル + + + Save + 保存 + + + IM Account Settings + IMアカウント設定 + + + + IMContactManager + + Add + 追加 + + + Delete + 削除 + + + Contact Type (protocol) + コンタクトタイプ(プロトコル) + + + Click on the add button below to add a new ID + 新規IDを追加するために下の追加ボタンをクリックします。 + + + Contact ID + コンタクトID + + + + IMProfileWidget + + Enter your nickname here + ここにニックネームを入力して下さい。 + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + インスタントメッセージアカウント (MSN, AIM, GoogleTalk...)の追加 + + + Add an IM account + IM アカウントの追加 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">アバタを変更するにはクリック </p></body></html> + + + + ImageSelector + + Cancel + キャンセル + + + OK + OK + + + Go Up + 上へ + + + Refresh + リフレッシュ + + + + JabberSettings + + Login: + ログイン: + + + Password: + パスワード: + + + Jabber Settings + Jabberの設定 + + + Connect Server: + 接続サーバ: + + + <u>Advanced Options</u> + <u>アドバンストオプション</u> + + + Require TLS + TLSは必須 + + + Port: + ポート: + + + Use TLS if available + 有効ならばTLSを使用する + + + Allow plaintext authentication over unencrypted streams + 非暗号化通信でプレーンテキスト認証を許可する + + + 5222 + 5222 + + + Force old (port 5223) SSL + SSL (ポート番号:5223) を強制 + + + Resource: + リソース: + + + + LanguagesSettings + + Google Translate + Google翻訳 + + + language to convert the messages received + 受信したメッセージを変換する言語 + + + language to convert the messages sent + 送信されたメッセージを変換する言語 + + + Your language is not here, do you know that you can do your own translation on Launchpad? + あなたの言語はこちらにありません。,ランチパッドを使いあなた自身で翻訳できることを知っていますか? + + + More information here. + より多くの情報はこちら + + + + LogAccount + + Password: + パスワード: + + + Need help? + ヘルプ + + + Cancel + キャンセル + + + Delete + 削除 + + + @product@ - Login + @product@ - ログイン + + + Account: + アカウント: + + + &Connect + 接続 + + + Forgot your @company@ password? + @company@ passwordを忘れた? + + + &Modify + 修正 + + + Configure a &New Profile + 新規プロフィールを設定 + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>前のプロフィールを選択します。 <br/> 接続するために情報を入力します。<br/> @company@ account</span> + + + + MSNSettings + + Login: + ログイン: + + + Password: + パスワード: + + + MSN Settings + MSN設定 + + + Forgot your MSN password? + MSNのパスワードを忘れた? + + + Get a new MSN Account + 新規MSNアカウントを取得 + + + Use HTTP method + HTTP メソッド使用 + + + + MainWindow + + MainWindow + メインウィンドウ + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + コール承認 + + + Send Chat Message + チャットメッセージ送信 + + + Make Call + + + + Hang Up + ハングアップ + + + + ManageBlockedUsersSettings + + Close + 閉じる + + + Unblock User + ブロックされていないユーザ + + + Manage blocked users + ブロックユーザー管理 + + + @product@ - Manage blocked users + @product@ - ブロックユーザー管理 + + + + MySpaceSettings + + MySpace Settings + MySpace設定 + + + Email Address + Eメールアドレス + + + Password + パスワード + + + + Get a new MySpace Account + + 新規MySpace アカウント取得 + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + @company@ accountを持っています。 + + + Create a @company@ account + @company@ account作成 + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + SMSを送信するためにログインします。<br>@company@ account と@company@'s creditsが必要となります。 + + + + NotificationSettings + + Select the events for which a sound should be played. + プレイしたサウンドのイベントを選択 + + + + NotificationSettingsItem + + Sound file + サウンドファイル + + + Find a sound file + サウンドファイルを検出 + + + Play sound file + サウンドファイル再生 + + + Play + プレイ + + + + NotifyDialog + + File Transfer + ファイル転送 + + + &Ok + OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + 承認(&A) + + + Status + ステータス + + + 00:00:00 + 00:00:00 + + + Nickname + ニックネーム + + + &Reject + 拒絶 + + + Dialpad + ダイヤルパッド + + + Audio Smileys + オーディオスマイリー + + + Communication is encrypted + 通話が暗号化 + + + + PrivacySettings + + Manage blocked users + 拒否ユーザ管理 + + + Privacy Rules + プライバシールール + + + Always sign in as "Invisible" (appear offline to all users) + 常に"不可視"でサインインする(全てのユーザはオフライン) + + + Allow chats from + からチャットを許可 + + + Anyone + 誰でも + + + Only people from my contact list + コンタクトリストに登録者のみ + + + Allow calls from + からの通話を許可 + + + When I sign into @company@ + @company@にサインインする時 + + + + ProfileDetails + + Cancel + キャンセル + + + Save + 保存 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">アバタを変更するのにクリックします。 </p></body></html> + + + General + 全般 + + + Network IDs (MSN, Jabber...) + ネットワークID(MSN, Jabber...) + + + Advanced >> + アドバンスト >> + + + Fill in all your network Id to stay connected with your contacts + あなたのコンタクトに接続している全てのネットワークIDを表示します。 + + + Contact + コンタクト + + + Group: + グループ: + + + Last Name: + 姓: + + + First Name: + 名: + + + Details + 詳細 + + + Web/blog: + Web/blog: + + + Country: + 国: + + + State: + 都道府県: + + + City: + 都市: + + + Gender: + 性別: + + + Birth Date: + 誕生日: + + + Email: + Eメール: + + + Notes + 注記 + + + Phone Numbers + 電話番号 + + + Home phone + ホーム電話 + + + Mobile phone + 携帯電話 + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + 名称未明 + + + Male + 男性 + + + Female + 女性 + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + アカウント + + + Accounts Settings + アカウント設定 + + + + QtAddAccount + + Configure your voip account + あなたのVoIPアカウントを設定 + + + Please tell us if your account is provided<br/>by @company@ or by another service + あなたのアカウントが供給されているかどうか教えて下さい。<br/>@company@ または他のサービスか + + + + QtAddAccountUtils + + Test + テスト + + + Audio Test Call + オーディオテストコール + + + Video Test Call + ビデオテストコール + + + + QtAddQuteComAccount + + Login + ログイン + + + Please enter an email address. + Eメールアドレスを入力して下さい。 + + + Please enter your email address<br/>and your password + Eメールアドレスとパスワードを<br/>入力してください。 + + + @product@ - Connexion + @product@ - Connexion + + + + QtAddSIPAccount + + Your profile name already exists! + あなたのプロフィールは既に存在します! + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + 必要な情報を入力して下さい。<br/>ソフトフォンをあなたのSIPアカウントに<br/>接続させます。 + + + Configure your SIP profile + SIPプロフィールを設定 + + + + QtAdvancedIMContactManager + + Cancel + キャンセル + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + このIMコンタクトを削除したいですか? + + + &Delete + 削除(&D) + + + + QtAdvancedSettings + + Advanced + アドバンスト + + + Advanced Settings + アドバンスト設定 + + + + QtAppearanceSettings + + Me + Me + + + Hello + Hello + + + How are you? + How are you? + + + Other + + + + I am fine + I am fine + + + Have to go + いかなければなりません。 + + + Bye + Bye + + + Appearance + 概観 + + + Appearance Settings + 概観設定 + + + + QtAudioSettings + + Advanced + アドバンスト + + + Audio + オーディオ + + + Audio Settings + オーディオ設定 + + + + QtCallBar + + +(country code) number or nickname + +(国別コード)番号またはニックネーム + + + + QtCallForwardSettings + + Call Forward + 着信転送 + + + Call Forward Settings + 着信転送の設定 + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + 着信転送の設定するためには<BR>@company@ accountでログインしなければなりません。 + + + + QtChatHistoryWidget + + Save As + 保存 + + + + QtChatLogViewer + + Account + アカウント + + + Edit Contact + コンタクトの編集 + + + + QtChatTabWidget + + Close chat + チャットを閉じる。 + + + + QtChatWidget + + %1 is connected. + %1が接続しました。 + + + %1 is disconnected. + %1が切断しました。 + + + send + 送信 + + + Your file can not be sent: your contact must be connected on the @company@ network. + ファイルが送信されません: あなたのコンタクトは、@company@ networkに接続しなければなりません。 + + + Your contact wishes to send a file with @company@. + あなたのコンタクトで@company@と一緒にファイルを送信します。 + + + Go to %1 to install it + インストールするために %1に移動 + + + %1 has joined the chat + %1 はチャットに参加します。 + + + %1 has left the chat + %1はチャットを離れます。 + + + + QtChatWindow + + Edit Contact + コンタクトの編集 + + + @product@ Chat + @product@ チャット + + + Account + アカウント + + + %1 is typing + %1 はタイピング + + + + QtConferenceCallWidget + + Call SIP + SIPにコール + + + Call land line + 固定電話にコール + + + Call Mobile + 携帯電話にコール + + + Call @company@ + 発信 @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>会議の参加者である2番目の対話者にあなたが知らせることができます。</b><br><br>終了したら、2番目の対話者にコールしている間は、最初の対話者を保留にします。 <br> + + + Hold first interlocutor and call second one + 最初の対話者を保留にして、2番目の対話者にコールします。 + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>会議の参加者である2番目の対話者にあなたが知らせることができます。</b><br><br>終了したら、会議を開始するためにボタンをクリックして下さい。 + + + Start Conference + 会議開始 + + + @product@ - Proceed Conference + @product@ - 会議進行 + + + + QtContactList + + &Yes + はい(&Y) + + + &No + いいえ(&N) + + + Merge %1 with %2? + %1 を %2 と合わせますか? + + + @product@ - Merge Contacts + @product@ - コンタクトマージ + + + + QtContactManager + + &Yes + はい(&Y) + + + &No + いいえ(&N) + + + Home phone + ホーム電話 + + + Mobile phone + 携帯電話 + + + @product@ + @product@ + + + Edit Contact + コンタクトの編集 + + + Do you really want to delete this contact? + 本当にこのコンタクトを削除しますか? + + + Start chat + チャットの開始 + + + Delete contact + コンタクトの削除 + + + Call + コール + + + Free call + フリーコール + + + Work phone + 仕事の電話 + + + Send SMS + SMS送信 + + + Edit contact + コンタクトの編集 + + + Block contact + コンタクトをブロック + + + Invite to conference + 会議に招待 + + + Go to website + ウェブに移動 + + + Send file + 送信ファイル + + + Forward to mobile phone + 携帯電話に転送 + + + + QtContactWidget + + No mobile phone number set + 携帯電話番号がセットされていません。 + + + No landline phone number set + 固定電話番号がセットされていません。 + + + Click here to call + コールするには、ここをクリックして下さい。 + + + Click here to set a phone number + 電話番号をセットするには、ここをクリックして下さい。 + + + Click here to edit the contact + コンタクトを編集するには、ここをクリックして下さい。 + + + Click here to send a SMS + SMSを送信するには、ここをクリックして下さい。 + + + Click here to start a chat + チャットを開始するには、ここをクリックして下さい。 + + + Click here to start a free call + フリーコールを開始するには、ここをクリックして下さい。 + + + Click here to send a file + ファイルを送信するにはここをクリックして下さい。 + + + + QtCrashReport + + %1 Crash Report + %1 クラッシュレポート + + + + QtEventWidget + + Do you want to call your voice mail? + あなたのボイスメールにコールしますか? + + + @product@ - Voice Mail + @product@ - ボイスメール + + + + QtFileTransfer + + &Yes + はい(&Y) + + + &No + いいえ(&N) + + + Choose a directory + ディレクトリの選択 + + + Overwrite File? + ファイルを上書きしますか? + + + A file called %1 already exists.Do you want to overwrite it? + %1のファイルは既に存在します。上書きしますか? + + + File size error + ファイルサイズエラー + + + %1 exceeds the maximum authorized size. + %1は最大許可サイズを超えています。 + + + %1 has size 0. + %1 はサイズ0 + + + %1 is a directory. + %1 はディレクトリです。 + + + You can not send a directory. + ディレクトリを送信できません。 + + + %1 is a shortcut. + %1はショートカットです。 + + + You can not send a shortcut. + ショートカットを送信できません。 + + + All Files (*.* *) + 全てのファイル (*.* *) + + + Please upgrade<br> your @product@ + アップグレードして下さい。<br>あなたの@product@ + + + Tell your contact<br> to upgrade<br> his @product@ + コンタクトして下さい。<br>アップグレードするために <br> その@product@を + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + ファイルは受信できません。受信するためには、@product@をアップグレードしなければなりません。 + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + ファイルを送信しようとしています。しかし、受信するためには、@product@をアップデートしなければなりません。最新バージョンをダウンロードして下さい。 + + + + QtFileTransferItem + + Cancel + キャンセル + + + Remove + 削除 + + + Pause + 一時停止 + + + Starting + 開始しています。 + + + From: + From: + + + To: + To: + + + Open + 開く + + + Resume + 再開 + + + Waiting for anwser... + 応答を待機中… + + + Done + 完了 + + + Failed + 失敗 + + + Paused + 一時停止 + + + Paused by peer + ピアにより一時停止 + + + Cancelled + キャンセルされました。 + + + Cancelled by peer + ピアによりキャンセル + + + Downloading... + ダウンロード中… + + + Uploading... + アップロード中… + + + Waiting for peer... + ピアを待機中… + + + An error occured during the file transfer + ファイル転送時にエラーが発生しました。 + + + This may be caused by : + これが原因です: + + + Your @product@ is not up to date. Please download the latest version on + @product@ はアップデートされていません。最新バージョンをダウンロードして下さい。 + + + The @company@ network may be temporarily unavailable. Please try later. + @company@ networkは一時的に利用できないかもしれません。後で試して下さい。 + + + + QtGeneralSettings + + General + 全般 + + + General Settings + 一般設定 + + + + QtHistory + + Incoming call + コール受信中 + + + Outgoing call + コール発信中 + + + Missed call + コールが失敗しました。 + + + Rejected call + コールが拒否されました。 + + + Outgoing SMS + SMS送信中 + + + Do you want to call %1? + %1 にコールしますか? + + + Chat session + チャットセッション + + + @product@ - Call History + @product@ - コール履歴 + + + Type + タイプ + + + Name/ID + 名前/ID + + + Date + 日付 + + + Duration + 通話時間 + + + + QtHistoryWidget + + Erase this entry + このエントリーの削除 + + + Open in SMS window + SMSウィンドウ内に開く + + + Call this peer + このピアにコール + + + Show chat log + チャットログ表示 + + + + QtIMAccountManager + + Cancel + キャンセル + + + @product@ + @product@ + + + &Delete + 削除(&D) + + + Are sure you want to delete this account? + このアカウントを削除していいですか? + + + + QtIMAccountMonitor + + Disconnected + 切断 + + + Error: %1 + エラー: %1 + + + Online + オンライン + + + Invisible + 不可視 + + + Away + 退席中 + + + Do not disturb + 取り込み中 + + + %1 (%2/%3) +%1 is message, %2 is currentStep, %3 is totalSteps %1 はメッセージ, %2 は現在のステップ, %3 はトータルステップ + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + ログインして下さい。 + + + + QtIMAccountPresenceMenuManager + + Cancel + キャンセル + + + @product@ + @product@ + + + &Delete + 削除(&D) + + + Online + オンライン + + + Invisible + 不可視 + + + Away + 退席中 + + + Do Not Disturb + 取り込み中 + + + Disconnect + 未接続 + + + Delete Account + アカウント削除 + + + Are sure you want to delete the account <b>%1</b>? + アカウントを削除していいですか<b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + プロフィールの編集 + + + %1 (%2) %3 +%1 is login, %2 is protocol, %3 is status %1 はログイン, %2 はプロトコル, %3 はステータス + + + + QtLanguagesSettings + + Language + 言語 + + + Language Settings + 言語設定 + + + + QtLogAccount + + Invalid account + 無効アカウント + + + Warning + 警告 + + + Do you really want to delete this profile + このプロフィールを削除してもいいですか? + + + Yes + Yes + + + No + No + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + 前に使用したプロフィールを選択して下さい。<br/>接続するための情報を入力して下さい。<br/>@company@ account + + + + QtLoginDialog + + @product@ - Connexion + @product@ - 接続 + + + + QtNotificationSettings + + Incoming call (ringtone) + 着信コール(リングトーン) + + + Outgoing call (ringtone) + 発信コール(リングトーン) + + + Call closed (hang up tone) + 通話切断(ハングアップトーン) + + + Incoming chat + チャット着信 + + + IM account connected + IMアカウント接続 + + + IM account disconnected + IMアカウント未接続 + + + Contact online + コンタクトオンライン + + + Notifications + 通知 + + + Notifications Settings + 通知設定 + + + + QtNotificationSettingsItem + + Choose a sound file + サウンドファイル選択 + + + Sounds + サウンド + + + + QtPhoneCall + + Status + ステータス + + + Incoming Call + 着信 + + + Resume + 再開 + + + Hang-up + 切断 + + + Transfert call + 転送コール + + + QuteCom - Information + QuteCom – 情報 + + + You must enter a phone number before forwarding + 転送する前に電話番号を入力しなければなりません。 + + + Error + エラー + + + Talking + 会話中 + + + Dialing + ダイヤル中 + + + User busy + ユーザーはビジー + + + Call Rejected + コール拒否 + + + User/number not found + ユーザー/番号が見つかりません。 + + + User not available + ユーザーは無効です。 + + + Ringing + 呼び出し中 + + + Redirected + リダイヤル + + + Initialization... + 初期化中... + + + Closed + 閉じました + + + Hold + 保留 + + + Add contact + コンタクトの追加 + + + Ca&ncel + キャンセル + + + Talking - Conference + 会話中 – 会議 + + + Add a Contact + コンタクトの追加 + + + + QtPresenceMenuManager + + Online + オンライン + + + Invisible + 不可視 + + + Away + 退席中 + + + Do Not Disturb + 取り込み中 + + + Log off + ログオフ + + + + QtPrivacySettings + + Privacy + プライバシー + + + Privacy Settings + プライバシー設定 + + + + QtProfileBar + + Click here to change your status + ステータスを変更するにはここをクリックして下さい。 + + + active + アクティブ + + + voicemail + ボイスメール + + + inactive + 非アクティブ + + + unauthorized + 未認証 + + + Set global presence to: + グローバルプレゼンスを設定: + + + Voice mail + ボイスメール + + + + QtProfileDetails + + Advanced >> + アドバンスト >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + コンタクトはグループに属する必要があります。グループを選択してくだい。 + + + <<Simple + <<シンプル + + + Select your avatar + アバタを選択 + + + @product@ - No Group Selected + @product@ - グループが選択されていません。 + + + @company@ Avatars + @company@ アバタ + + + + QtQuteCom + + &Cancel + キャンセル(&C) + + + Conference + 会議 + + + Call + コール + + + Account + アカウント + + + Add a Contact + コンタクト追加 + + + You have unfinished call(s). + 未完了のコールがあります。 + + + @product@ - Warning + @product@ - 警告 + + + Home + ホーム + + + Are you sure you want to exit the application? + アプリケーションを終了したいですか? + + + &Exit + 終了 + + + @product@ - Call Error + @product@ - コールエラー + + + Please hold all the phone calls before placing a new one + 新たにコールする前に全ての電話コールを保留して下さい。 + + + Can't place a call, you are not connected + 電話ができません。接続できませんでした。 + + + You must enter a phone number + 電話番号を入力して下さい。 + + + An error has occured trying to place the call + 発信時にエラーが発生しました。 + + + + QtQuteComConfigDialog + + Advanced + アドバンスト + + + General + 全般 + + + Accounts + アカウント + + + Audio + オーディオ + + + Call Forward + 着信転送 + + + Language + 言語 + + + Privacy + プライバシー + + + Video + ビデオ + + + Voicemail + ボイスメール + + + security + セキュリティ + + + Notifications + 通知 + + + + QtRenameGroup + + Bad group name + 不正グループネーム + + + Group name cannot be empty + グループネームは空にできません。 + + + + QtSecuritySettings + + Security + セキュリティ + + + Security Settings + セキュリティ設定 + + + BETA + ベータ + + + + QtSms + + Please fill in a phone number. + 電話番号を入力して下さい。 + + + Do you want to continue? + 続けますか? + + + Your SMS has not been sent + SMSは送信されませんでした。 + + + Your SMS has been sent + SMSは送信されました。 + + + Your message is too long. This will send + あなたのメッセージは長すぎます。 + + + SMS. + SMS + + + You can not send an empty message. + 空のメッセージは送信できません。 + + + @company@ SMS service + + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - アップデートに失敗しました。 + + + @product@ update failed to start: try to update @product@ manually + @product@アップデートは失敗しました: @product@ 手動でアップデートして下さい。 + + + + QtStatusBar + + Not connected + 接続していません + + + Register done + 登録完了 + + + Unregister done + 未登録完了 + + + Connecting + 接続中 + + + Output volume is muted + 出力ボリュームを消音 + + + Output volume is 0 + 出力ボリュームは 0 + + + Click to adjust output volume + 出力ボリューム調整をクリック + + + Input volume is muted + 入力ボリュームは消音 + + + Input volume is 0 + 入力ボリュームは0 + + + Click to adjust input volume + 入力ボリュームをクリック + + + An error occured: Server error. + エラー発生:サーバーエラー + + + An error occured: Timeout. + エラー発生: タイムアウト + + + An error occured: Authentication error. + エラー発生: 認証エラー.. + + + + QtSystray + + Status + ステータス + + + @product@ + @product + + + Call SIP + SIPにコール + + + Call land line + 固定電話にコール + + + Call Mobile + 携帯にコール + + + Call @company@ + コール@company@ + + + Call + コール + + + Send SMS + SMS送信 + + + Online + オンライン + + + Invisible + 不可視 + + + Away + 退席中 + + + Do Not Disturb + 取り込み中 + + + Internet Connection Error + インターネット接続エラー + + + Offline + オフライン + + + Connecting... + 接続中... + + + Send a SMS + SMS送信 + + + Start a chat + チャット開始 + + + Place Call + コール先 + + + Send File + ファイル送信 + + + Multiple Status + マルチステータス + + + Unknown Status + + + + Quit @product@ + 中止@product@ + + + + QtToolBar + + &Cancel + キャンセル(&C) + + + @product@ - Proceed Conference + @product@ - 会議進行 + + + Edit My Profile + プロフィールの編集 + + + Add a Contact + コンタクトの追加 + + + Hide Unavailable Contacts + 無効コンタクトを隠す + + + Show Unavailable Contacts + 無効コンタクトを表示 + + + Hide Groups + グループ隠す + + + Show Groups + グループ表示 + + + You have unfinished call(s). + 終了していないコールがあります。 + + + Are you sure you want to log off? + ログオフをしてもいいですか? + + + &Log Off + ログオフ + + + Disable &Video Calls + ビデオコールを無効 + + + Enable &Video Calls + ビデオコールを有効 + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>アクティブな電話コールがある時は会議は開始できません。</b><br><br>全ての電話が終わったら、再度トライして下さい。 + + + @product@ - Warning + @product@ - 警告 + + + Log &Off... + ログオフ + + + Log &On... + ログオン… + + + + QtTreeViewDelegate + + Contacts list + コンタクトリスト + + + + QtUserProfile + + Edit Contact + コンタクト編集 + + + &Authorize + 許可(&A) + + + &Block + 拒否(&B) + + + Network error. + ネットワークエラー + + + @product@ - Authorization Request + @product@ - 認証要求 + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. The last backuped profile has been loaded: you may have lost last changes made + プロフィールをロード中に問題が起きました。最後にバックアップしたプロフィールをロードして下さい。最後に変更した内容は失われます。 + + + Your profile could not be loaded. Choose another profile or create a new one. + あなたのプロフィールがロードできませんでした。他のプロフィールか新規でプロフィールを作成して下さい。 + + + Wrong email/password entered + Eメールまたはパスワードが間違っています。 + + + Wrong login/password entered + ログイン/パスワード入力が間違っています。 + + + Connection error + コネクションエラー + + + Unexpected error (code: %1 + 予期せぬエラー (code: %1 + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + ビデオ + + + Normal + 普通 + + + Good + 良い + + + Very good + 非常に良い + + + Excellent + 素晴らしい + + + Video Settings + ビデオ設定 + + + + QtVoicemailSettings + + Voicemail + ボイスメール + + + Voicemail Settings + ボイスメール設定 + + + + QtWebDirectory + + @product@ - Directory + @product@ - ディレクトリ + + + + QuteComConfigDialog + + Cancel + キャンセル + + + Save + 保存 + + + Title + タイトル + + + @product@ - Configuration + @product@ - 設定 + + + + QuteComWindow + + &Accept + 承認(&A) + + + &Hidden + 隠す(&H) + + + &Tools + ツール(&T) + + + &Help + ヘルプ(&H) + + + &Actions + アクション(&A) + + + @company@ + @company@ + + + &Close + 閉じる(&C) + + + Dialpad + ダイヤルパッド + + + @product@ + @product@ + + + Start Conference + 会議開始 + + + Send SMS + SMS送信 + + + Contacts + コンタクト + + + History + 履歴 + + + Clear &History + 履歴クリア(&H) + + + ToolBar + ツールバー + + + Show/Hide Unavailable &Contacts + 無効コンタクトの表示/非表示 + + + &Chat Sessions + チャットセッション(&C) + + + &All + 全て(&A) + + + &HangUp + 切断(&H) + + + &Hold/Resume + 保留/再開(&H) + + + Show/Hide &Groups + グループの表示/非表示(&G) + + + &Outgoing Calls + 発信コール(&O) + + + &Incoming Calls + 着信コール(&I) + + + &Missed Calls + 失敗したコール(&M) + + + Enable/Disable &Video Calls + ビデオコールを有効/無効(&V) + + + Short Text &Messages (SMS) + ショートテキストメッセージ(SMS) + + + Rejected Calls + コール拒否 + + + &Contacts + コンタクト + + + &About... + 関して + + + Add &Contact... + コンタクト追加 + + + &Configuration... + 設定 + + + Send SMS... + SMS送信… + + + View My &Profile... + プロフィール閲覧 + + + View My Profile + プロフィール閲覧 + + + Start &Conference... + 会議開始 + + + &Find Contact... + コンタクト検出 + + + Log &Off... + ログオフ… + + + Log Off + ログオフ + + + Show &Chat Window + チャットウィンドウ表示 + + + Show Chat Window + チャットウィンドウ表示 + + + Show &File Transfer + ファイル転送表示 + + + Add Contact + コンタクト追加 + + + View My @company@ Account... + 私の @company@ アカウント閲覧... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ フォーラム(&F)... + + + @company@ &Wiki/FAQ... + @company@ &Wiki/FAQ... + + + Learn more about @company@ Services... + @company@ Services.に関して学習.. + + + Search + 検索 + + + Find @company@ Contacts + @company@ コンタクト検出 + + + &Quit + 中止(&Q) + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + アイコン下のテキスト(&TUI) + + + &Icons Only + アイコンのみ(&I) + + + Add + 追加 + + + SMS + SMS + + + Conference + 会議 + + + + RenameGroupDialog + + Cancel + キャンセル + + + OK + OK + + + Enter the new group name: + 新規グループ名を入力: + + + @product@ - Rename Contact Group + @product@ - コンタクトグループリネーム + + + + SecuritySettings + + Form + フォーム + + + Enable call encryption + コール暗号化を有効 + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ は、AES 128-bits 暗号化システムとDiffie-Hellman キー交換で暗号化されています。 + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock" appears during the call when it is encrypted. + 注記: あなたのコンタクトが暗号化されたコールオプションを有効にする必要があります。暗号化されたかどうかは、@product@ ウィンドウの下をチェックして下さい。アイコンがロックマークがあれば、コールは暗号化されています。 + + + + SimpleIMContactManager + + Update your profile + プロフィールを更新 + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + GoogleTalk ID: + + + Jabber ID: + Jabber ID: + + + FaceBook ID: + FaceBook ID: + + + MySpace ID: + MySpace ID + + + Skype ID: + Skype ID: + + + Twitter ID: + Twitter ID: + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + AIM/ICQ ID: + + + AIM ID: + AIM/ICQ ID: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + Skype設定 + + + Skype Id + Skype ID + + + + Get a new Skype Account + + 新規Skypeアカウントを取得 + + + + SmsWindow + + Send + 送信 + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + 電話番号を追加するにはここをクリックします。 + + + 0 /160 + 0 /160 + + + Enter your signature here + ここに署名を入力してください。 + + + Signature: + 署名: + + + Phone number(s): + 電話番号: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + ここに電話番号を入力して下さい。<br>&; か ,で分けなければなりません。 + + + + SoftUpdateWindow + + Cancel + キャンセル + + + @product@ - Downloading update + @product@ - アップデートダウンロード中 + + + Downloading @product@ update... Version: %1 URL: %2 File Size: %3 (MB) Speed: %4 (kB/s) + ダウンロード中 @product@ アップデート... バージョン: %1 URL: %2ファイルサイズ: %3 (MB) スピード: %4 (kB/s) + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + Twitter設定 + + + Email Address + Eメールアドレス + + + Password + パスワード + + + + Get a new Twitter Account + + 新規Twitterアカウント取得 + + + + UserFrame + + Form + フォーム + + + + VideoSettings + + Normal + 普通 + + + Good + 良い + + + Very good + 非常に良い + + + Excellent + 素晴らしい + + + Enable video + ビデオを有効にする + + + Webcam Selection + Webcam選択 + + + Webcam device: + Webcamデバイス: + + + Webcam Preview + Webcamプレビュー + + + Connection Type + 接続タイプ + + + Video quality + 品質 + + + Down (kbit/s) + Down (kbit/s) + + + Up (kbit/s) + Up (kbit/s) + + + 0 to 512 + 0 to 512 + + + 0 to 128 + 0 to 128 + + + 512 to 2048 + 512 to 2048 + + + 128 to 256 + 128 to 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + ビデオの品質はインターネット接続帯域に依存します。 + + + Make a test video call + ビデオコールテスト + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> p, li { white-space: pre-wrap; } </style></head><body> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">W最初に利用する時は、ノーマルビデオ品質モードを選択することをご推進します。それから最も適したモードに調整してゆきます。</p> <p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a>インターネット接続のバンド幅を決定します。</p></body></html> + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - ビデオ + + + + VoicemailSettings + + Form + フォーム + + + Phone number of your voicemail: + あなたのボイスメールの電話番号: + + + Please fill in here the information about your voicemail + Plボイスメールに関する情報はここで入力します。 + + + + Wizard + + Cancel + キャンセル + + + Finish + 終了 + + + Next > + 次へ > + + + <Back + <戻る + + + Simple Wizard - Step %1 of %2 + シンプルウィザード – ステップ%1 of %2 + + + + YahooSettings + + Login: + ログイン: + + + Password: + パスワード: + + + Yahoo! Settings + + + + Use Yahoo! Japan server + + + + Forgot your Yahoo! password? + + + + Get a new Yahoo! Account + 新規Yahoo!アカウントを取得 + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ku.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ku.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ku.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ku.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4569 @@ + + + + + AIMSettings + + Login: + Têketin: + + + Forgot your AIM password? + + + + + Get a new AIM Account + + + + + Password: + Şîfre: + + + AIM Settings + Mîhengên Pêşketî + + + + AboutWindow + + About + Der barê de + + + Copyright (C)2008 Mbdsys + + + + Authors + Nivîskar + + + Close + Dade + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Şandina Pelê + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + Bi&pejirîne + + + &Cancel + &Betal + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + Profîla min &sererast bike + + + + AddAccount + + Configure your account: + + + + + &Next + &Pêşde + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + &Paşde + + + Cancel + Betal + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Betal + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + Hesab: + + + Enable + Çalak bike + + + Login + Têketin + + + Add + Lê zêde bike + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Şîfre: + + + Need help? + + + + + &Back + &Paşde + + + Cancel + Betal + + + @product@ - Login + + + + + &Connect + &Tekilî + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Şîfre: + + + Need help? + + + + + &Back + &Paşde + + + Cancel + Betal + + + @product@ - Login + + + + + &Connect + &Tekilî + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + Hesab: + + + Proxy: + + + + + : + : + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + Pêşkeftî + + + + AdvancedConfigWindow + + Close + Dade + + + Preference Name + + + + + Type + Cure + + + Value + Nirx + + + Default Value + Nirxa Standard + + + Save + Tomar bike + + + Status + Rewş + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Lê zêde bike + + + Advanced Settings + Mîhengên Pêşketî + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + Rake + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Dade + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3.: + + + 1st: + 1.: + + + 2nd: + 2.: + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + Peyam + + + + ChatLogViewer + + Chat History + + + + + &Contact + &Tekilî + + + &Tools + &Amûr + + + &Help + &Alîkarî + + + &Actions + &Çalakî + + + Main Toolbar + Darikê amûran yê mak + + + Call Contact + + + + + Send a File + Pelekî bişîne + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Tekilî + + + &Tools + &Amûr + + + &Actions + &Çalakî + + + Main Toolbar + Darikê amûran yê mak + + + Call Contact + + + + + Send a File + Pelekî bişîne + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + &Rake + + + &Start + + + + + Group Name + Navê Komê + + + &Add + Lê &zêde bike + + + + ChatToaster + + Message + Peyam + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + Betal + + + Start + Destpêk + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Betal + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + Komê rake + + + Do you really want to delete this group? + + + + + &Yes + &Erê + + + &No + &Na + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Betal + + + Program Failure + + + + + Send + Bişîne + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + &Pakij bike + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Betal + + + Form + + + + + Pause + Behndan + + + <i>From:</i> + <i>Ji:</i> + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Têketin: + + + Password: + Şîfre: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Betal + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + Temam + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Têketin: + + + Password: + Şîfre: + + + ICQ Settings + Eyarên giştî + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + Dade + + + Login + Têketin + + + Add + Lê zêde bike + + + Delete + Jê bibe + + + Modify + Biguherîne + + + Protocol + Protokol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Betal + + + Save + Tomar bike + + + IM Account Settings + + + + + + IMContactManager + + Add + Lê zêde bike + + + Delete + Jê bibe + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Betal + + + OK + Temam + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Têketin: + + + Password: + Şîfre: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Şîfre: + + + Need help? + + + + + Cancel + Betal + + + Delete + Jê bibe + + + @product@ - Login + + + + + Account: + Hesab: + + + &Connect + &Tekilî + + + Forgot your @company@ password? + + + + + &Modify + Biguherîne + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Têketin: + + + Password: + Şîfre: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Dade + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Şandina Pelê + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + Bi&pejirîne + + + Status + Rewş + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Betal + + + Save + Tomar bike + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + Mîhengên Pêşketî + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Têketin + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Betal + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + Pêşkeftî + + + Advanced Settings + Mîhengên Pêşketî + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Pêşkeftî + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Erê + + + &No + &Na + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Erê + + + &No + &Na + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Erê + + + &No + &Na + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Betal + + + Remove + Rake + + + Pause + Behndan + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + Eyarên giştî + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Cure + + + Name/ID + Nav/ID + + + Date + Dîrok + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Betal + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Betal + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Komê rake + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Ziman + + + Language Settings + Mîhengên Pêşketî + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Rewş + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + &Betal + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + Mîhengên Pêşketî + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Betal + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Pêşkeftî + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + Ziman + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + Eyarên giştî + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Rewş + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + Rewş + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Betal + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + Eyarên giştî + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Betal + + + Save + Tomar bike + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + Bi&pejirîne + + + &Hidden + + + + + &Tools + &Amûr + + + &Help + &Alîkarî + + + &Actions + &Çalakî + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + Der barê de + + + Add &Contact... + &Tekilî + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + &Tekilî + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + &Tekilî + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Lê zêde bike + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Betal + + + OK + Temam + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Bişîne + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Betal + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Betal + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Têketin: + + + Password: + Şîfre: + + + Yahoo! Settings + Eyarên giştî + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_lv.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_lv.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_lv.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_lv.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4736 @@ + + + + + AIMSettings + + Login: + + + + + Forgot your AIM password? + + + + + Get a new AIM Account + + + + + Password: + + + + + AIM Settings + + + + + + AboutWindow + + About + + + + + Copyright (C)2008 Mbdsys + + + + Authors + + + + + Close + + + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + + + + + toto@qutecom.fr + + + + + test.bmp + + + + + &Accept + + + + + &Cancel + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + + + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + + + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + + + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + + + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + + + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + + + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + + + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + + + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + + + + + Password: + + + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + + + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + + + + + Password: + + + + + ICQ Settings + + + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + + + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + + + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + + + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + + + + + Password: + + + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + + + + + Need help? + + + + + Cancel + + + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + + + + + Password: + + + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + + + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + + + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + + + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + + + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + + + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + + + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + + + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + + + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + + + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + + + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + + + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + + + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + + + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + + + + + Password: + + + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_mn.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_mn.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_mn.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_mn.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4708 @@ + + + + + AIMSettings + + Login: + Login + + + Forgot your AIM password? + Nuuts ugee martsan bol + + + Get a new AIM Account + Shineer AIM account uusgeh + + + Password: + Nuuts ug + + + AIM Settings + AIM/ICQ tohiruulga + + + + AboutWindow + + About + + + + + Copyright (C)2008 Mbdsys + + + + Authors + + + + + Close + + + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + + + + + toto@qutecom.fr + + + + + test.bmp + + + + + &Accept + + + + + &Cancel + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + + + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Nuuts ug + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Nuuts ug + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + + + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + + + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + + + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + + + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + + + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + + + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Login + + + Password: + Nuuts ug + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + + + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Login + + + Password: + Nuuts ug + + + ICQ Settings + AIM/ICQ tohiruulga + + + Forgot your ICQ password? + Nuuts ugee martsan bol + + + Get a new ICQ Account + Shineer AIM account uusgeh + + + + IMAccountManager + + Close + + + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + + + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + Shineer AIM account uusgeh + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + + + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Login + + + Password: + Nuuts ug + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Nuuts ug + + + Need help? + + + + + Cancel + + + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Login + + + Password: + Nuuts ug + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + + + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + + + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + + + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + + + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + AIM/ICQ tohiruulga + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + + + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + + + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Shineer AIM account uusgeh + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + + + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + + + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + + + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + + + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + + + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + + + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + + + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Login + + + Password: + Nuuts ug + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + Nuuts ugee martsan bol + + + Get a new Yahoo! Account + Shineer AIM account uusgeh + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nb.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nb.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nb.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nb.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4262 @@ + + + + + AIMSettings + + Login: + Pålogging + + + Forgot your AIM password? + Har du glemt ditt AIM passord? + + + Get a new AIM Account + Opprette en ny AIM konto + + + Password: + Passord: + + + AIM Settings + AIM innstillinger + + + + AboutWindow + + About + Om... + + + Copyright (C)2008 Mbdsys + + + + Authors + Forfattere + + + Close + Lukk + + + 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. + Dette programmet er fri programvare; Du kan redistribuere det og/eller +modifisere det under vilkårnen til "GNU General Public License" +som publisert av Free Software Foundation; enten versjon 2 +av lisensen, eller (som fritt valg) en senere versjon. + + + @product@ - About + @product@ - Om + + + @product@, a voice over Internet phone + @product@, en Internet telefon + + + + AcceptDialog + + File Transfer + Fil overføring + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Godta + + + &Cancel + &Avbryt + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filnavn: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Innkommende fil</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Rediger min profil + + + + AddAccount + + Configure your account: + Sett opp kontoen din + + + &Next + &Neste + + + Need help? + Trengs hjelp? + + + You don't have any account ? Click here + Har du ikke en konto? Klikk her + + + &Back + &Tilbake + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Pålogging + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Vær vennlig å fortell oss om kontoen din<br/>by er levert av @company@ eller en annen tjeneste</span> + + + @company@ account + @company@ konto + + + Generic SIP account + Standardisert SIP konto + + + + AddIMContact + + Cancel + Avbryt + + + Contact Type (protocol): + Kontakt type (protokoll) + + + Contact ID: + Kontakt ID + + + Account: + Konto + + + Enable + Aktiver + + + Login + Innlogging + + + Add + Legg til + + + @product@ - Add a Contact Account + @product@ - Legg til en kontakt konto + + + + AddQuteComAccount + + Password: + Passord: + + + Need help? + Trengs hjelp? + + + &Back + &Tilbake + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Pålogging + + + &Connect + Koble &til + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + span style="font-size:16pt;">Pålogging</span><br><br><span>Vennligst skriv in din e-post adresse og<br>passord</span> + + + Email Address: + E-post adresse + + + Click here if you don't have a @company@ account + Klikk her om du ikke har en @company@ konto + + + Forgot your @company@ password? + Har du glemt ditt @company@ passord? + + + + AddSIPAccount + + Password: + Passord: + + + Need help? + Trengs hjelp? + + + &Back + &Tilbake + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Pålogging + + + &Connect + Koble &til + + + Activate presence and chat (SIP/SIMPLE) + Aktiver tilstedværlse og tekstsamtaler (SIP/SIMPLE) + + + Displayname: + Visningsnavn: + + + login / username: + Påloggings / brukernavn: + + + Account name: + Kontonavn: + + + Proxy: + Mellomtjener: + + + : + : + + + Server: + Tjener + + + SIP Domain / Realm: + SIP domene/område: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Konfigurer din SIP profil</span><br><br><span>Vær vennlig å fyll in informasjonen som vil<br/>tillate din programvare telefon å knytte seg <br/>til din SIP konto</span> + + + Advanced + Avansert + + + + AdvancedConfigWindow + + Close + Lukk + + + Preference Name + Foretrukket Navn + + + Type + Type: + + + Value + Verdi + + + Default Value + Standard verdi + + + Save + Lagre + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - Avansert konfigurasjon + + + + AdvancedSettings + + Add + Legg til + + + Advanced Settings + Avanserte innstillinger + + + Advanced Configuration Window + Vindu for avansert konfigurasjon + + + Automatically answer incoming calls from + Svar automatisk på innkommende samtaler + + + Remove + Fjern + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Advarsel, denne delen er bare for avanserte brukere.<br>En hver feil kan seriøst skade programvarens virkemåte + + + + AppearanceSettings + + Toolbar + Verktøyslinje + + + &Icons && Text + &Iconer && tekst + + + Icons &Only + &Bare ikoner + + + &Hidden + &Skjult + + + Chat Theme + Tekstsamtale tema + + + Form + Skjema + + + + AudioSettings + + Reset + Tilbakestill + + + Audio Codecs + Lyd kodeker + + + &Input device: + &Inngangs enhet: + + + &Output device: + &Utgangs enhet: + + + &Ringing device: + + + + + &Make a test call + &Gjøre en test samtale + + + Test + Prøve + + + &Advanced >> + &Avansert >> + + + &Half Duplex + &Halv duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Skjema + + + + AvatarWidget + + Form + Skjema + + + + BrowserSoftUpdateWindow + + Close + Lukk + + + @product@ - Update available + @product@ - oppdatering tilgjengelig + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Tredje: + + + 1st: + Første: + + + 2nd: + Andre: + + + (+ country code) phone number + (+ lands kode) telefon nummer + + + Forward all unanswered calls to message box + Vidersend alle ubesvarte samtaler til meldings boksen + + + Disable call forwarding + Ta bort viderekobbling + + + Forward all unanswered calls to following phone numbers: + Videresend alle ubesvarte samtaler til følgende telefonnummre: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + For eksempel +473780xxxx (+47 er lands koden og 3780xxxx er telefon nummeret) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Viderkobling av samtaler er aktivert om du ikke er koblet til @company@, når linjen din er opptatt eller om du ikke besvarer en samtale etter 20 sekunder. Du kan konfigurere opp til tre viderekoblinger til fasttelefon, mobiltelefon eller tale post(hvis tilgjengelig) + + + + CallToaster + + Incoming Call + Innkommende samtale + + + Message + Melding + + + + ChatLogViewer + + Chat History + Tekstsamtale historie + + + &Contact + &Kontakt + + + &Tools + &Verktøy + + + &Help + &Hjelp + + + &Actions + &Handlinger + + + Main Toolbar + Hovedverktøylinje + + + Call Contact + Ring kontakt + + + Send a File + Send fil + + + createChatConf + createChatConf + + + Show Contact Info + Vis kontakt informasjon + + + blockContact + createChatConf + + + &Save History As... + &Lagre loggen som.... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Verktøy + + + &Actions + &Handlinger + + + Main Toolbar + Hovedverktøylinje + + + Call Contact + Ring kontakt + + + Send a File + Send fil + + + Show Contact Info + Vis kontakt informasjon + + + blockContact + createChatConf + + + &Save History As... + &Lagre loggen som.... + + + @company@ + @company@ + + + MainWindow + MainWindow + + + &Edit + &Rediger + + + Cu&t + K&lipp + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopier + + + Ctrl+C + Ctrl+C + + + &Paste + &Lim inn + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Start tekst konferansesamtale + + + &Close + &Lukk + + + Conference + Konferanse + + + + ChatRoomInviteWidget + + Chat room + Tekstsamtale rom + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Tekstsamtale rom</span></p></body></html> + + + (Conference participants) + (Konferanse deltagere) + + + &Remove + &Fjern + + + &Start + &Start + + + Group Name + Gruppe navn + + + &Add + &Legg til + + + + ChatToaster + + Message + Melding + + + Incoming Chat + Inkommende tekstsamtale + + + + ChatWidget + + Form + Skjema + + + + ConferenceCallWidget + + Cancel + Avbryt + + + Start + Start + + + Phone number 2: + Telefonnummer 2: + + + Phone number 1: + Telefonnummer 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Lag en konferanse + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferanse</span><br /><br />Vær vennlig å legg inn to telefonnummers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@ kontakter</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">for å lage en konferansesamtale.</ + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferanse</span><br /><br />Vær vennlig å legg inn to telefonnummers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@ kontakter</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">for å lage en konferansesamtale.</ + + + &Add >> + &Legg til >> + + + << &Remove + << &Fjern + + + Available Contacts + Tilgjengelige kontakter + + + &Start + &Start + + + Cancel + Avbryt + + + + ContactGroupPopupMenu + + Remove Contact Group + Ta bort kontakt gruppe + + + Rename Contact Group + Gi kontaktgruppe nytt navn + + + Delete group + Slett gruppe + + + Do you really want to delete this group? + Vil du virkelig slette denne gruppen? + + + &Yes + &Ja + + + &No + &Nei + + + + ContactList + + Contact List + Kontakt liste + + + goupname + + + + + ContactWidget + + No mobile phone number set + Mobiltelefon nummer ikke definert + + + No landline phone number set + Fasttelefon nummer ikke definert + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å redigere denne kontakten</p></body></html> + + + + CrashReport + + Cancel + Avbryt + + + Program Failure + Programmet feilet + + + Send + Send + + + Optional Information + Tilleggsinformasjon + + + Your Mail: + Din e-post: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Ikke tillgjengelig + + + Click here to change your call forward settings + Klikk her for å endre dine viderekobblings innstillinger + + + Call forward mode: + Viderkobblings modus + + + Purchase call out credits + Kjløp tid for å ringe ut til det vanlige telefonnettet + + + Call Forward Method + Viderkobblingsmetode + + + Call Voice Mail + Ring talepostboks + + + Click here to buy @company@'s credits + Klikk her for å kjøpe @company@ tid + + + + DesktopService + + Root Folder + Rot mapper + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Klikk på de forskjellige elementene for å sende lyder. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Klikk her for å ringe til din talepostkasse + + + New Voice Mail: + Ny tele post: + + + Click here to see missed call(s) + Klikk her for å se tapt(e) anrop + + + Missed Call(s): + Tapt(e ) anrop + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Last ned + + + Upload + Last opp + + + Click here to change your download folder + Klikk her for å endre mappen hvor nedlastinger lagres + + + Download folder: + Nedlastings mappe: + + + Clean all items in the list + Slett alle elementer i listen + + + &Clean + &Slett + + + @product@ - File Transfer Manager + @product@ - Fil overførings håndterer + + + + FileTransferItem + + Cancel + Avbryt + + + Form + Skjema + + + Pause + Pause + + + <i>From:</i> + <i>Fra:</i> + + + + GeneralSettings + + When I double-click on a contact + Når jeg dobbel klikker på en kontakt + + + Call cell phone or land line if contact not online + Ring mobiltelefon eller fasttelefon om kontakten ikke er på nettet + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Ledig tilstand + + + minutes + minutter + + + Show me as "Away" when I am inactive for: + Vis meg som "Borte" når jeg er inaktiv i: + + + When I start my computer + Når jeg starter datamaskinen + + + Automatically start @product@ + Automatisk start @product@ + + + + GoogleTalkSettings + + Login: + Pålogging + + + Password: + Passord: + + + GoogleTalk Settings + GoogleTalk innstillinger + + + Forgot your GoogleTalk password? + Har du glemt GoogleTalk passordet? + + + Get a new GoogleTalk Account + Få en ny GoogleTalk konto + + + + HttpProxyLoginWindow + + Cancel + Avbryt + + + HTTP Proxy Address: + HTTP mellomtjener adresse: + + + HTTP Proxy Port Number: + HTTP mellomtjener port nummer: + + + HTTP Proxy Login: + HTTP mellomtjener pålogging + + + HTTP Proxy Password: + HTTP mellomtjener passord: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP mellomtjener </span><br><br><span>Din lokale HTTP benytter bruker verifisering<br>Vær vennlig å skriv inn ditt brukernavn og passord</span> + + + OK + Ok + + + @product@ - Local HTTP Proxy + @product@ - lokal HTTP mellomtjener + + + + ICQSettings + + Login: + Pålogging + + + Password: + Passord: + + + ICQ Settings + ICQ innstillinger + + + Forgot your ICQ password? + HAr du glemt ditt ICQ passord? + + + Get a new ICQ Account + Lag en ny ICQ konto + + + + IMAccountManager + + Close + Lukk + + + Login + Innlogging + + + Add + Legg til + + + Delete + Slett + + + Modify + Modifiser + + + Protocol + Protokoll + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Mine lynmeldingskontoer (Jabber, MSN, AIM...) + + + + IMAccountTemplate + + Cancel + Avbryt + + + Save + Lagre + + + IM Account Settings + Lynmeldingskonto innstillinger + + + + IMContactManager + + Add + Legg til + + + Delete + Slett + + + Contact Type (protocol) + Kontakt type (Protokoll) + + + Click on the add button below to add a new ID + Klikk på knappen nedenfor for å legge til en ny ID + + + Contact ID + Kontakt ID + + + + IMProfileWidget + + Enter your nickname here + Legg inn kallenavnet ditt her + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Legg til en lynmeldingskonto (MSN, AIM, GoogleTalk...) + + + Add an IM account + Legg til en lynmeldingskonto + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å endre din avatar</p></body></html> + + + + ImageSelector + + Cancel + Avbryt + + + OK + Ok + + + Go Up + Gå opp + + + Refresh + Frisk opp + + + + JabberSettings + + Login: + Pålogging + + + Password: + Passord: + + + Jabber Settings + Jabber innstillinger + + + Connect Server: + Koble til tjener: + + + <u>Advanced Options</u> + <u>Avanserte valg</u> + + + Require TLS + Krev TLS: + + + Port: + Port: + + + Use TLS if available + Bruk TLS om det er tilgjengelig + + + Allow plaintext authentication over unencrypted streams + Tillat ren tekst autentisering på ukrypterte datastømmer + + + 5222 + 5222 + + + Force old (port 5223) SSL + Tving gammen (port 5222) SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Ditt språk er ikke her, vet su at du kan gjøre din egen oversettelse i Launchpad? + + + More information here. + Mere informasjon her. + + + + LogAccount + + Password: + Passord: + + + Need help? + Trengs hjelp? + + + Cancel + Avbryt + + + Delete + Slett + + + @product@ - Login + @product@ - Pålogging + + + Account: + Konto + + + &Connect + Koble &til + + + Forgot your @company@ password? + Har du glemt ditt @company@ passord? + + + &Modify + &Endre + + + Configure a &New Profile + Konfigurer en &Ny profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Vær vennlig å velg en tidligere valgt profil<br/> eller fyll in informasjonen for å logge på en<br/> @company@ konto</span> + + + + MSNSettings + + Login: + Pålogging + + + Password: + Passord: + + + MSN Settings + MSN innstillinger + + + Forgot your MSN password? + Har du glemt ditt MSN passord? + + + Get a new MSN Account + Opprette en MSN konto? + + + Use HTTP method + Bruk HTTP metode + + + + MainWindow + + MainWindow + MainWindow + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Aksepter samtale + + + Send Chat Message + Send lynmelding + + + Make Call + Start samtale + + + Hang Up + Avslutt samtale + + + + ManageBlockedUsersSettings + + Close + Lukk + + + Unblock User + Ta bort blokkering for bruker + + + Manage blocked users + Vedlikehold blokkerte brukere + + + @product@ - Manage blocked users + @product@ - Vedlikehold blokkerte brukere + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Jeg har en @company@ konto + + + Create a @company@ account + Lag en @company@ konto + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + For å sende en SMS må du være innlogget med en<br>@company@ konto og ha @company@'s forhåndsbetalte tellerskritt.. + + + + NotificationSettings + + Select the events for which a sound should be played. + Velg en hendelse som skal ha en lyd knyttet til seg + + + + NotificationSettingsItem + + Sound file + Lyd fil + + + Find a sound file + Finn en lyd fil + + + Play sound file + Spill av en lyd + + + Play + Spill + + + + NotifyDialog + + File Transfer + Fil overføring + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Oppgrader</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Godta + + + Status + Status + + + 00:00:00 + 00:00:00 + + + Nickname + Kallenavn + + + &Reject + &Avvis + + + Dialpad + Telefon tastatur + + + Audio Smileys + Lyd "smileys" + + + Communication is encrypted + Kommunikasjonen er kryptert + + + + PrivacySettings + + Manage blocked users + Vedlikehold blokkerte brukere + + + Privacy Rules + Personvern regler + + + Always sign in as "Invisible" (appear offline to all users) + Alltid logg in som "Usynelig" (Ser ut som frakobblet for alle brukere) + + + Allow chats from + Tillat lynmeldinger fra + + + Anyone + Alle og en hver + + + Only people from my contact list + Bare personer fra min lynmeldingsliste + + + Allow calls from + Tillat samtaler fra + + + When I sign into @company@ + Når jeg logger inn på @company@ + + + + ProfileDetails + + Cancel + Avbryt + + + Save + Lagre + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å endre din avatar</p></body></html> + + + General + Generelt + + + Network IDs (MSN, Jabber...) + Nettverks IDer (MSN, Jabber, GoogleTalk...) + + + Advanced >> + Avansert >> + + + Fill in all your network Id to stay connected with your contacts + Fyll inn alle dine netverks IDer for å forbli koblet til dine kontakter + + + Contact + Kontakt + + + Group: + Gruppe: + + + Last Name: + Etternavn: + + + First Name: + Fornavn: + + + Details + Detaljer + + + Web/blog: + Web/blog: + + + Country: + Land: + + + State: + Stat: + + + City: + By: + + + Gender: + Kjønn: + + + Birth Date: + Fødselsdato: + + + Email: + E-post: + + + Notes + Notater + + + Phone Numbers + Telefon nummer + + + Home phone + Hjemme telefon + + + Mobile phone + Mobiltelefon + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Ukjent + + + Male + Mann + + + Female + Kvinne + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Kontoer + + + Accounts Settings + Konto innstillinger + + + + QtAddAccount + + Configure your voip account + Konfigurer din voip konto + + + Please tell us if your account is provided<br/>by @company@ or by another service + Vær vennlig å fortell oss om din konto er levert <br/>av @company@ elelr av en annen tjeneste + + + + QtAddAccountUtils + + Test + Prøve + + + Audio Test Call + Lydtest samtale + + + Video Test Call + Test video samtale + + + + QtAddQuteComAccount + + Login + Innlogging + + + Please enter an email address. + Vær vennlig å skrive inn en e-post adresse + + + Please enter your email address<br/>and your password + Vær vennlig å skriv inn din e-post adresse<br/>og ditt passord + + + @product@ - Login + @product@ - kobling + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Vær vennlig å fyll inn informasjonen som vil<br/> tillate din programvare telefon å koble seg til din<br/>SIP konto + + + Configure your SIP profile + Konfigurer din SIP profil + + + + QtAdvancedIMContactManager + + Cancel + Avbryt + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Er du sikker på at du vil slette denne lynmeldings kontoen? + + + + &Delete + &Slett + + + + QtAdvancedSettings + + Advanced + Avansert + + + Advanced Settings + Avanserte innstillinger + + + + QtAppearanceSettings + + Me + Meg + + + Hello + Hallo + + + How are you? + Hvordan har du det? + + + Other + Andre + + + I am fine + Jeg har det bra + + + Have to go + Må stikke + + + Bye + Hdet + + + Appearance + Utseende + + + Appearance Settings + Utseende innstillinger + + + + QtAudioSettings + + Advanced + Avansert + + + Audio + Lyd + + + Audio Settings + Lyd innstillinger + + + + QtCallBar + + +(country code) number or nickname + ?(landskode) nummer eller kallenavn + + + + QtCallForwardSettings + + Call Forward + Viderkobbling + + + Call Forward Settings + Viderekobblings innstillinger + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Lagre som + + + + QtChatLogViewer + + Account + + + + Edit Contact + Rediger kontakt + + + + QtChatTabWidget + + Close chat + Lukk lynmelding + + + + QtChatWidget + + %1 is connected. + %1 er tilkobblet + + + %1 is disconnected. + %1 er frakobblet. + + + send + send + + + Your file can not be sent: your contact must be connected on the @company@ network. + Filen din kan ikke sendes: din kontakt må være oppkobblet på @company@ nettverket. + + + Your contact wishes to send a file with @company@. + Kontakten din ønsker å sende en fil med @company@. + + + Go to %1 to install it + Gå til %1 for å innstalere det + + + %1 has joined the chat + + + + + %1 has left the chat + %1 har folatt samtalen + + + + QtChatWindow + + Edit Contact + Rediger kontakt + + + @product@ Chat + @product@ tekstsamtale + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Rinfgg SIP + + + Call land line + Ring fasttelefon + + + Call Mobile + Ring mobiltelefon + + + Call @company@ + Ring @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + >b>Du kan nå informere din første samtalepartner at han/hun kommer til å være en del av en konferanse samtale.</b><br><br>Når det er gjort, klikk på knappen nedenfor. Din første samtalepartner wil bli lagt på venting mens din andre samtalepartner blir ringt opp.<br> + + + Hold first interlocutor and call second one + Sett første samtalepartner på vent og ring den andre. + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Du kan nå informere din andre samtalepartner om at han/hun kommer til å bli tatt inn i en konferansesamtale.</b><br><br>Når det er gjort, klikk på knappen nedenfor så starter konferansesamtalen. + + + Start Conference + Start konferanse + + + @product@ - Proceed Conference + @product@ - fortsett med konferanse + + + + QtContactList + + &Yes + &Ja + + + &No + &Nei + + + Merge %1 with %2? + Kobble sammen %1 med %2? + + + @product@ - Merge Contacts + @product@ - Slå ssammen kontakter + + + + QtContactManager + + &Yes + &Ja + + + &No + &Nei + + + Home phone + Hjemme telefon + + + Mobile phone + Mobiltelefon + + + @product@ + @product@ + + + Edit Contact + Rediger kontakt + + + Do you really want to delete this contact? + Vil du virkelig slette denne kontakten? + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + Mobiltelefon nummer ikke definert + + + No landline phone number set + Fasttelefon nummer ikke definert + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Ja + + + &No + &Nei + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Avbryt + + + Remove + Fjern + + + Pause + Pause + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Generelt + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Type: + + + Name/ID + Navn/ID + + + Date + Dato + + + Duration + Varighet + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Avbryt + + + @product@ + @product@ + + + &Delete + &Slett + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Avbryt + + + @product@ + @product@ + + + &Delete + &Slett + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + @product@ - kobling + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Innkommende samtale + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Avansert >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Avbryt + + + Conference + Konferanse + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avansert + + + General + Generelt + + + Accounts + Kontoer + + + Audio + Lyd + + + Call Forward + Viderkobbling + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + @product@ + + + Call SIP + Rinfgg SIP + + + Call land line + Ring fasttelefon + + + Call Mobile + Ring mobiltelefon + + + Call @company@ + Ring @company@ + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Avbryt + + + @product@ - Proceed Conference + @product@ - fortsett med konferanse + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + Rediger kontakt + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Avbryt + + + Save + Lagre + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Godta + + + &Hidden + &Skjult + + + &Tools + &Verktøy + + + &Help + &Hjelp + + + &Actions + &Handlinger + + + @company@ + @company@ + + + &Close + &Lukk + + + Dialpad + Telefon tastatur + + + @product@ + @product@ + + + Start Conference + Start konferanse + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Legg til + + + SMS + + + + + Conference + Konferanse + + + + RenameGroupDialog + + Cancel + Avbryt + + + OK + Ok + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Skjema + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Send + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Avbryt + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Skjema + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Skjema + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Avbryt + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Pålogging + + + Password: + Passord: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nl.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nl.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nl.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_nl.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3978 @@ + + + + + AIMSettings + + Login: + Login: + + + Forgot your AIM password? + Uw AIM wachtwoord vergeten? + + + Get a new AIM Account + Maak een nieuwe AIM account aan + + + Password: + Wachtwoord: + + + AIM Settings + AIM Instellingen + + + + AboutWindow + + About + Over + + + Copyright (C)2008 Mbdsys + + + + Authors + Auteurs + + + Close + Sluiten + + + 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. + Dit programma is vrije software; u mag het verspreiden en/of +wijzigen onder de voorwaarden van de GNU General Public License zoals +gepubliceerd door de Free Software Foundation; ofwel versie 2, ofwel (als +u dat wil) een nieuwere versie. + + + @product@ - About + @product@ - Over + + + @product@, a voice over Internet phone + @product@, een voice over internet telefoon + + + + AcceptDialog + + File Transfer + Bestandsoverdracht + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Accepteer + + + &Cancel + &Annuleren + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contactpersoon: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bestandsnaam: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Inkomend Bestand</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Bewerk mijn profiel + + + + AddAccount + + Configure your account: + Configureer uw account: + + + &Next + &Volgende + + + Need help? + Hulp Nodig? + + + You don't have any account ? Click here + U heeft geen account? Klik hier + + + &Back + &Terug + + + Cancel + Annuleren + + + @product@ - Login + @product@ - Inlognaam + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configureer uw voip account</span><br><br><span>Laat ons weten of uw account wordt verzorgd<br/>door @company@ of door een andere provider</span> + + + @company@ account + @company@ account + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Annuleren + + + Contact Type (protocol): + Contact Type (protocol): + + + Contact ID: + Contact ID: + + + Account: + Account: + + + Enable + Toestaan + + + Login + Inlognaam + + + Add + Toevoegen + + + @product@ - Add a Contact Account + @product@ - Voeg een Contactpersoon Toe + + + + AddQuteComAccount + + Password: + Wachtwoord: + + + Need help? + Hulp Nodig? + + + &Back + &Terug + + + Cancel + Annuleren + + + @product@ - Login + @product@ - Inlognaam + + + &Connect + &Verbinden + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:18pt;">Aanmelden</span><br><br><span>Voer uw e-mailadres en wachtwoord in</span> + + + Email Address: + Emailadres: + + + Click here if you don't have a @company@ account + Klik hier als u geen @company@ account hebt + + + Forgot your @company@ password? + Uw @company@ wachtwoord vergeten? + + + + AddSIPAccount + + Password: + Wachtwoord: + + + Need help? + Hulp Nodig? + + + &Back + &Terug + + + Cancel + Annuleren + + + @product@ - Login + @product@ - Inlognaam + + + &Connect + &Verbinden + + + Activate presence and chat (SIP/SIMPLE) + Activeer aanwezigheid en chat (SIP/SIMPLE) + + + Displayname: + Bijnaam: + + + login / username: + login / gebruikersnaam: + + + Account name: + Accountnaam: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + SIP Domein / Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configureer uw SIP-profiel</span><br><br><span>Vul de gegevens in waarmee uw softphone<br/>met uw SIP-account kan verbinden</span> + + + Advanced + Geavanceerd + + + + AdvancedConfigWindow + + Close + Sluiten + + + Preference Name + Voorkeur-naam + + + Type + Soort + + + Value + Waarde + + + Default Value + Standaardwaarde + + + Save + Opslaan + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - Geavanceerde Configuratie + + + + AdvancedSettings + + Add + Toevoegen + + + Advanced Settings + Uitgebreide instellingen + + + Advanced Configuration Window + Geavanceerd Configuratiescherm + + + Automatically answer incoming calls from + Automatisch de binnenkomende gesprekken beantwoorden van + + + Remove + Verwijderen + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Waarschuwing, dit gedeelte is voor geavanceerde gebruikers,<br>iedere fout kan de software ernstig beschadigen. + + + + AppearanceSettings + + Toolbar + Werkbalk + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + &Verborgen + + + Chat Theme + + + + + Form + Formulier + + + + AudioSettings + + Reset + Herstellen + + + Audio Codecs + Audio-codecs + + + &Input device: + &Inputapparaat: + + + &Output device: + &Outputapparaat + + + &Ringing device: + &Beltoonapparaat: + + + &Make a test call + &Voer een testgesprek + + + Test + Test + + + &Advanced >> + &Geavanceerd >> + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulier + + + + AvatarWidget + + Form + Formulier + + + + BrowserSoftUpdateWindow + + Close + Sluiten + + + @product@ - Update available + @product@ - Update beschikbaar + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3e: + + + 1st: + 1ste: + + + 2nd: + 2e: + + + (+ country code) phone number + (+ landcode) telefoonnummer + + + Forward all unanswered calls to message box + Schakel alle onbeantwoorde gesprekken door naar de messagebox + + + Disable call forwarding + Schakel doorsturen uit + + + Forward all unanswered calls to following phone numbers: + Schakel alle onbeantwoorde gesprekken door naar de volgende telefoonnummers: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Bijvoorbeeld +3314500XXXX (+33 is de landcode en 14500XXXX is het telefoonnummer) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Het doorschakelen van gesprekken is actief als u niet verbonden bent met @company@, als uw lijn in gesprek is of 20 seconden nadat u een gesprek niet beantwoordde. U kunt tot drie doorschakelmogelijkheden configureren naar vaste lijnen, mobiele telefoons of voicemail (indien van toepassing) + + + + CallToaster + + Incoming Call + Binnenkomend Gesprek + + + Message + Bericht + + + + ChatLogViewer + + Chat History + Chatgeschiedenis + + + &Contact + &Contactpersoon + + + &Tools + &Gereedschappen + + + &Help + &Help + + + &Actions + &Acties + + + Main Toolbar + Hoofdwerkbalk + + + Call Contact + Contactpersoon bellen + + + Send a File + Bestand verzenden + + + createChatConf + createChatConf + + + Show Contact Info + Contactinformatie weergeven + + + blockContact + blockContact + + + &Save History As... + Geschiedenis op&slaan als... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contactpersoon + + + &Tools + &Gereedschappen + + + &Actions + &Acties + + + Main Toolbar + Hoofdwerkbalk + + + Call Contact + Contactpersoon bellen + + + Send a File + Bestand verzenden + + + Show Contact Info + Contactinformatie weergeven + + + blockContact + blockContact + + + &Save History As... + Geschiedenis op&slaan als... + + + @company@ + @company@ + + + MainWindow + MainWindow + + + &Edit + B&ewerken + + + Cu&t + &Knippen + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopiëren + + + Ctrl+C + Ctrl+C + + + &Paste + &Plakken + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Start Groepschat + + + &Close + Sl&uiten + + + Conference + Groepsgesprek + + + + ChatRoomInviteWidget + + Chat room + Chatroom + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chatroom</span></p></body></html> + + + (Conference participants) + (Groepsgesprek-deelnemers) + + + &Remove + &Verwijderen + + + &Start + &Start + + + Group Name + Groepsnaam + + + &Add + &Toevoegen + + + + ChatToaster + + Message + Bericht + + + Incoming Chat + Binnenkomende chat + + + + ChatWidget + + Form + Formulier + + + + ConferenceCallWidget + + Cancel + Annuleren + + + Start + Start + + + Phone number 2: + Telefoonnummer 2: + + + Phone number 1: + Telefoonnummer 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Start een Groepsgesprek + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Groepsgesprek</span><br /><br />Gelieve twee telefoonnummers of @company@ </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">contact ID's in te voeren om</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">een groepsgesprek met 3 deelnemers te starten.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Groepsgesprek</span><br /><br />Gelieve twee telefoonnummers of @company@ </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">contact ID's in te voeren om</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">een groepsgesprek met 3 deelnemers te starten.</p> + + + &Add >> + &Toevoegen >> + + + << &Remove + << &Verwijder + + + Available Contacts + Beschikbare Contactpersonen + + + &Start + &Start + + + Cancel + Annuleren + + + + ContactGroupPopupMenu + + Remove Contact Group + Verwijder contactpersonengroep + + + Rename Contact Group + Contectpersonengroep hernoemen + + + Delete group + Groep verwijderen + + + Do you really want to delete this group? + Weet u zeker dat u deze groep wilt verwijderen? + + + &Yes + &Ja + + + &No + &Nee + + + + ContactList + + Contact List + Contactenlijst + + + goupname + + + + + ContactWidget + + No mobile phone number set + Geen mobielnummer ingevuld + + + No landline phone number set + Geen vast nummer ingevuld + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om dit contactpersoon te wijzigen</p></body></html> + + + + CrashReport + + Cancel + Annuleren + + + Program Failure + Programmafout + + + Send + Versturen + + + Optional Information + Optionele infomatie + + + Your Mail: + Uw e-mailadres: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Niet beschikbaar + + + Click here to change your call forward settings + Klik hier om uw doorschakelinstellingen te wijzigen + + + Call forward mode: + Doorschakelmodus: + + + Purchase call out credits + Koop uitbel-credits + + + Call Forward Method + Doorschakelmethode + + + Call Voice Mail + Voicemail bellen + + + Click here to buy @company@'s credits + Klik hier om krediet bij @company@ te kopen + + + + DesktopService + + Root Folder + Hoofdmap + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Klik op de diverse van kleur veranderende items om geluiden naar uw gesprekspartner te sturen. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Klik hier om uw voicemail te bellen. + + + New Voice Mail: + Nieuwe voicemail: + + + Click here to see missed call(s) + Klik hier om gemist(e) gesprek(ken) te bekijken + + + Missed Call(s): + Gemist(e) gesprek(ken): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Download + + + Upload + Upload + + + Click here to change your download folder + Klik hier om uw downloadmap te wijzigen + + + Download folder: + Downloadmap: + + + Clean all items in the list + Alle items in de lijst wissen + + + &Clean + &Wissen + + + @product@ - File Transfer Manager + @product@ - Bestandsoverdrachtbeheer + + + + FileTransferItem + + Cancel + Annuleren + + + Form + Formulier + + + Pause + Pauze + + + <i>From:</i> + <i>Van:</i> + + + + GeneralSettings + + When I double-click on a contact + Als ik op een contactpersoon dubbeklik + + + Call cell phone or land line if contact not online + Bel mobiel of vast nummer als de contactpersoon niet online is + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Inactief status + + + minutes + minuten + + + Show me as "Away" when I am inactive for: + Geef mij al "Weg" weer als ik langer inactief ben dan: + + + When I start my computer + Als ik mijn computer start + + + Automatically start @product@ + Start @product@ automatisch + + + + GoogleTalkSettings + + Login: + Login: + + + Password: + Wachtwoord: + + + GoogleTalk Settings + GoogleTalk instellingen + + + Forgot your GoogleTalk password? + GoogleTalk wachtwoord vergeten? + + + Get a new GoogleTalk Account + Nieuw Google Talk account aanmaken + + + + HttpProxyLoginWindow + + Cancel + Annuleren + + + HTTP Proxy Address: + HTTP-proxyadres: + + + HTTP Proxy Port Number: + HTTP-proxy poortnummer: + + + HTTP Proxy Login: + HTTP_proxy gebruikersnaam: + + + HTTP Proxy Password: + HTTP-proxy wachtwoord: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP-proxy authentificatie</span><br><br><span>Uw lokale HTTP-proxy gebruikt authentificatie<br>Voer uw gebruikersnaam en wachtwoord in</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Lokale HTTP Proxy + + + + ICQSettings + + Login: + Login: + + + Password: + Wachtwoord: + + + ICQ Settings + ICQ instellingen + + + Forgot your ICQ password? + ICQ wachtwoord vergeten? + + + Get a new ICQ Account + Nieuw ICQ-account + + + + IMAccountManager + + Close + Sluiten + + + Login + Inlognaam + + + Add + Toevoegen + + + Delete + Verwijderen + + + Modify + Wijzigen + + + Protocol + Protocol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Mijn Instant Messaging Accounts (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Annuleren + + + Save + Opslaan + + + IM Account Settings + IM-accountinstellingen + + + + IMContactManager + + Add + Toevoegen + + + Delete + Verwijderen + + + Contact Type (protocol) + Contactpersoon-type (protocol) + + + Click on the add button below to add a new ID + Klik de knop toevoegen hieronder om een nieuw ID toe te voegen + + + Contact ID + Contactpersoon-ID + + + + IMProfileWidget + + Enter your nickname here + Voer uw nickname in + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Nieuw instant messaging account (MSN, AIM, GoogleTalk...) + + + Add an IM account + Nieuw IM-account + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om uw avatar te veranderen</p></body></html> + + + + ImageSelector + + Cancel + Annuleren + + + OK + OK + + + Go Up + Naar boven + + + Refresh + Verversen + + + + JabberSettings + + Login: + Login: + + + Password: + Wachtwoord: + + + Jabber Settings + Jabber-instellingen + + + Connect Server: + Verbinden met server: + + + <u>Advanced Options</u> + <u>Geavanceerde opties</u> + + + Require TLS + TLS vereist + + + Port: + Poort: + + + Use TLS if available + TLS gebruiken indien beschikbaar + + + Allow plaintext authentication over unencrypted streams + Authenticatie in platte tekst over niet-geëncrypte stream toestaan + + + 5222 + 5222 + + + Force old (port 5223) SSL + Oude SSL (poort 5223) forceren + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Uw taal staat hier niet bij, weet u dat u op Launchpad uw eigen vertaling kunt maken? + + + More information here. + Meer informatie hier. + + + + LogAccount + + Password: + Wachtwoord: + + + Need help? + Hulp Nodig? + + + Cancel + Annuleren + + + Delete + Verwijderen + + + @product@ - Login + @product@ - Inlognaam + + + Account: + Account: + + + &Connect + &Verbinden + + + Forgot your @company@ password? + Uw @company@ wachtwoord vergeten? + + + &Modify + &Wijzigen + + + Configure a &New Profile + Configureer een &nieuw profiel + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Kies een eerder gebruikt profiel<br/> of vul de informatie in om een nieuwe<br/> @company@ account aan te maken</span> + + + + MSNSettings + + Login: + Login: + + + Password: + Wachtwoord: + + + MSN Settings + MSN-instellingen + + + Forgot your MSN password? + MSN-wachtwoord vergeten? + + + Get a new MSN Account + Nieuw MSN-account + + + Use HTTP method + Gebruik HTTP methode + + + + MainWindow + + MainWindow + MainWindow + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Gesprek accepteren + + + Send Chat Message + Chatbericht versturen + + + Make Call + Opbellen + + + Hang Up + Ophangen + + + + ManageBlockedUsersSettings + + Close + Sluiten + + + Unblock User + Gebruiker deblokkeren + + + Manage blocked users + Geblokkeerde gebruikers beheren + + + @product@ - Manage blocked users + @product@ - Bewerk geblokkeerde gebruikers + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Ik heb een @company@ account + + + Create a @company@ account + Maak een @company@ account aan + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Om een SMS-bericht te verzenden dient u ingelogd te zijn met een<br>@company@account en dient u krediet bij @company@ te hebben. + + + + NotificationSettings + + Select the events for which a sound should be played. + Kies de gebeurtenissen waarvoor een geluid moet worden afgespeeld. + + + + NotificationSettingsItem + + Sound file + Geluidsbestand + + + Find a sound file + Geluidsbestand zoeken + + + Play sound file + Geluidsbestand afspelen + + + Play + Afspelen + + + + NotifyDialog + + File Transfer + Bestandsoverdracht + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Accepteer + + + Status + Status + + + 00:00:00 + 00:00:00 + + + Nickname + Nickname + + + &Reject + &Afwijzen + + + Dialpad + Kiestoetsen + + + Audio Smileys + Audio smileys + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Geblokkeerde gebruikers beheren + + + Privacy Rules + Privacy regels + + + Always sign in as "Invisible" (appear offline to all users) + Altijd als "Onzichtbaar" aanmelden (lijkt op offline voor alle gebruikers) + + + Allow chats from + Chats toestaan van + + + Anyone + Iedereen + + + Only people from my contact list + Alleen mensen op mijn contactenlijst + + + Allow calls from + Telefoongesprekken toestaan van + + + When I sign into @company@ + Als ik inlog by @company@ + + + + ProfileDetails + + Cancel + Annuleren + + + Save + Opslaan + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om uw avatar te veranderen</p></body></html> + + + General + Algemeen + + + Network IDs (MSN, Jabber...) + Netwerk-ID's (MSN,Jabber...) + + + Advanced >> + Geavanceerd >> + + + Fill in all your network Id to stay connected with your contacts + Vul al uw netwerk-ID's in om met uw contactpersonen in contact te blijven + + + Contact + Contactpersoon + + + Group: + Groep: + + + Last Name: + Achternaam: + + + First Name: + Voornaam: + + + Details + Details + + + Web/blog: + Web/blog: + + + Country: + Land: + + + State: + Provincie: + + + City: + Stad: + + + Gender: + Geslacht: + + + Birth Date: + Geboortedatum: + + + Email: + E-mailadres: + + + Notes + Notities + + + Phone Numbers + Telefoonnummers + + + Home phone + Telefoon thuis + + + Mobile phone + Mobiele telefoon + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Onbekend + + + Male + Man + + + Female + Vrouw + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Accounts + + + Accounts Settings + Accountinstellingen + + + + QtAddAccount + + Configure your voip account + Configureer uw VOIP-account + + + Please tell us if your account is provided<br/>by @company@ or by another service + Gelieve ons te laten weten of uw account wordt verzorgd</br>door @company@ of door een andere provider + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + Audio Testgesprek + + + Video Test Call + Video Testgesprek + + + + QtAddQuteComAccount + + Login + Inlognaam + + + Please enter an email address. + Voer een email adres in. + + + Please enter your email address<br/>and your password + Voer uw e-mailadres en<br/>uw wachtwoord in + + + @product@ - Login + @product@ - Verbinding + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Vul de informatie in waarmee<br/>QuteCom met uw SIP-account kan<br/>verbinden + + + Configure your SIP profile + Configureer uw SIP-profiel + + + + QtAdvancedIMContactManager + + Cancel + Annuleren + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Weet u zeker dat u dit IM contactpersoon wil verwijderen? + + + + &Delete + Verwij&deren + + + + QtAdvancedSettings + + Advanced + Geavanceerd + + + Advanced Settings + Uitgebreide instellingen + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Geavanceerd + + + Audio + Geluid + + + Audio Settings + Geluidsinstellingen + + + + QtCallBar + + +(country code) number or nickname + +(landcode) nummer of nickname + + + + QtCallForwardSettings + + Call Forward + Doorschakelen + + + Call Forward Settings + Doorschakelinstellingen + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Opslaan als + + + + QtChatLogViewer + + Account + + + + Edit Contact + Contactpersoon bewerken + + + + QtChatTabWidget + + Close chat + Chat sluiten + + + + QtChatWidget + + %1 is connected. + %1 is verbonden. + + + %1 is disconnected. + %1 is niet verbonden. + + + send + versturen + + + Your file can not be sent: your contact must be connected on the @company@ network. + Uw bestand kan niet worden verzonden: uw contactpersoon dient verbonden te zijn met het @company@ netwerk. + + + Your contact wishes to send a file with @company@. + Uw contactpersoon wil u een bestand versturen met @company@. + + + Go to %1 to install it + Ga naar %1 om het te installeren + + + %1 has joined the chat + %1 neemt deel aan de chat + + + %1 has left the chat + %1 heeft de chat verlaten + + + + QtChatWindow + + Edit Contact + Contactpersoon bewerken + + + @product@ Chat + @product@ Chat + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Bel SIP + + + Call land line + Bel vast nummer + + + Call Mobile + Bel mobiel + + + Call @company@ + Bel @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>U kunt uw eerste gesprekspartner nu vertellen dat hij deel gaat uitmaken van een groepsgesprek.</b><br><br>Klik, zodra u dat hebt gedaan, op de knop hieronder. Uw eerste gesprekspartner zal in de wacht worden gezet terwijl uw tweede gesprekspartner wordt gebeld.<br> + + + Hold first interlocutor and call second one + Zet eerste gesprekspartner in de wacht en bel de tweede + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>U kunt nu uw tweede gesrprekspartner vertellen dat hij deel gaat uitmaken van een groepsgesprek.</b><br><br>Klik, zodra u dat hebt gedaan, op de knop hieronder om het groepsgesprek te starten. + + + Start Conference + Groepsgesprek starten + + + @product@ - Proceed Conference + @product@ - Ga verder met Groepsgesprek + + + + QtContactList + + &Yes + &Ja + + + &No + &Nee + + + Merge %1 with %2? + %1 en %2 samenvoegen? + + + @product@ - Merge Contacts + @product@ - Contactpersonen Samenvoegen + + + + QtContactManager + + &Yes + &Ja + + + &No + &Nee + + + Home phone + Telefoon thuis + + + Mobile phone + Mobiele telefoon + + + @product@ + @product@ + + + Edit Contact + Contactpersoon bewerken + + + Do you really want to delete this contact? + Wilt u deze contactpersoon werkelijk verwijderen? + + + Start chat + Begin chat + + + Delete contact + Contactpersoon verwijderen + + + Call + Bellen + + + Free call + + + + Work phone + Telefoon werk + + + Send SMS + SMS versturen + + + Edit contact + Contactpersoon bewerken + + + Block contact + Contactpersoon blokkeren + + + Invite to conference + Uitnodigen voor groepsgesprek + + + Go to website + Ga naar website + + + Send file + Bestand sturen + + + Forward to mobile phone + Doorschakelen naar mobiel nummer + + + + QtContactWidget + + No mobile phone number set + Geen mobielnummer ingevuld + + + No landline phone number set + Geen vast nummer ingevuld + + + Click here to call + Klik hier om te bellen + + + Click here to set a phone number + Klik hier om een telefoonnummer in te stellen + + + Click here to edit the contact + Klik hier om de contactpersoon te bewerken + + + Click here to send a SMS + Klik hier om een SMS te versturen + + + Click here to start a chat + Klik hier om een chat te beginnen + + + Click here to start a free call + Klik hier om een gratis telefoongesprek te beginnen + + + Click here to send a file + Klik hier om een bestand te sturen + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Wilt u uw voicemail bellen? + + + @product@ - Voice Mail + @product@ - Voicemail + + + + QtFileTransfer + + &Yes + &Ja + + + &No + &Nee + + + Choose a directory + Kies een map + + + Overwrite File? + Bestand overschrijven? + + + A file called %1 already exists.Do you want to overwrite it? + Er bestaat al een bestand met de naam %1. Wilt u dit bestand overschrijven? + + + File size error + Fout in bestandsgrootte + + + %1 exceeds the maximum authorized size. + %1 overschrijdt de maximum toegestane grootte. + + + %1 has size 0. + %1 heeft een grootte van 0. + + + %1 is a directory. + %1 is een map. + + + You can not send a directory. + U kunt geen map versturen. + + + %1 is a shortcut. + %1 is een snelkoppeling. + + + You can not send a shortcut. + U kunt geen snelkoppeling versturen. + + + All Files (*.* *) + Alle bestanden (*.* *) + + + Please upgrade<br> your @product@ + Gelieve uw @product@<br> te upgraden + + + Tell your contact<br> to upgrade<br> his @product@ + Vertel uw contactpersoon<br> dat zijn @product@<br> geüpgrade dient te worden + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Annuleren + + + Remove + Verwijderen + + + Pause + Pauze + + + Starting + Opstarten + + + From: + Van: + + + To: + Naar: + + + Open + Openen + + + Resume + Doorgaan + + + Waiting for anwser... + Wachten op antwoord... + + + Done + Gereed + + + Failed + Mislukt + + + Paused + Gepauzeerd + + + Paused by peer + Gepauzeerd door gesprekspartner + + + Cancelled + Geannuleerd + + + Cancelled by peer + Geannuleerd door gesprekspartner + + + Downloading... + Downloaden... + + + Uploading... + Uploaden... + + + Waiting for peer... + Wachten op de gesprekspartner... + + + An error occured during the file transfer + Er is een fout opgetreden tijdens de bstandsoverdracht + + + This may be caused by : + Dit kan worden veroozaakt door: + + + Your @product@ is not up to date. Please download the latest version on + Uw @product@-versie is niet actueel. Gelieve de nieuwste versie te downloaden op + + + The @company@ network may be temporarily unavailable. Please try later. + Het @company@netwerk kan tijdelijk onbeschikbaar zijn. Probeert u het later nog eens. + + + + QtGeneralSettings + + General + Algemeen + + + General Settings + Algemene instellingen + + + + QtHistory + + Incoming call + Binnenkomend gesprek + + + Outgoing call + Uitgaand gesprek + + + Missed call + Gemist gesprek + + + Rejected call + Afgewezen gesprek + + + Outgoing SMS + Uitgaande SMS + + + Do you want to call %1? + Wilt u %1 opbellen? + + + Chat session + Chatsessie + + + @product@ - Call History + @product@ - Belgeschiedenis + + + Type + Soort + + + Name/ID + Naam/ID + + + Date + Datum + + + Duration + Gespreksduur + + + + QtHistoryWidget + + Erase this entry + Dit item wissen + + + Open in SMS window + Openen in SMS venster + + + Call this peer + Bel deze persoon + + + Show chat log + Chatlog weergeven + + + + QtIMAccountManager + + Cancel + Annuleren + + + @product@ + @product@ + + + &Delete + Verwij&deren + + + Are sure you want to delete this account? + + Weet u zeker dat u deze account wil verwijderen? + + + + + QtIMAccountMonitor + + Disconnected + Verbinding verbroken + + + Error: %1 + Fout: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Online + + + Invisible + Onzichtbaar + + + Away + Weg + + + Do not disturb + Niet storen + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Voer een gebruikersnaam in + + + + QtIMAccountPresenceMenuManager + + Cancel + Annuleren + + + @product@ + @product@ + + + &Delete + Verwij&deren + + + Online + Online + + + Invisible + Onzichtbaar + + + Away + Weg + + + Do Not Disturb + Niet storen + + + Disconnect + Verbinding verbreken + + + Delete Account + Account verwijderen + + + Are sure you want to delete the account <b>%1</b>? + Weet u zeker dat u account <b>%1</b> wilt verwijderen? + + + + QtIMProfileWidget + + Edit My Profile + Bewerk mijn profiel + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Taal + + + Language Settings + Taalinstellingen + + + + QtLogAccount + + Invalid account + Ongeldig account + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Gelieve een eerder gebruikt profiel te kiezen<br/> of de benodigde informatie in te vullen om<br/> verbinding te maken met een @company@ account + + + + QtLoginDialog + + @product@ - Login + @product@ - Verbinding + + + + QtNotificationSettings + + Incoming call (ringtone) + Binnenkomend gesprek (ringtone) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Gesprek beïndigd (geluid bij ophangen) + + + Incoming chat + Binnenkomend bericht + + + IM account connected + IM-account verbonden + + + IM account disconnected + IM-account niet verbonden + + + Contact online + Contactpersoon online + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Kies een geluidsbestand + + + Sounds + Geluiden + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Binnenkomend Gesprek + + + Resume + Doorgaan + + + Hang-up + Ophangen + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Fout + + + Talking + In gesprek + + + Dialing + Nummer kiezen + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Gaat over + + + Redirected + Doorgeschakeld + + + Initialization... + Initialisatie... + + + Closed + Gesloten + + + Hold + Wacht + + + Add contact + Contactpersoon toevoegen + + + Ca&ncel + A&nnuleren + + + Talking - Conference + In gesprek - Groepsgesprek + + + Add a Contact + Contactpersoon toevoegen + + + + QtPresenceMenuManager + + Online + Online + + + Invisible + Onzichtbaar + + + Away + Weg + + + Do Not Disturb + Niet storen + + + Log off + Afmelden + + + + QtPrivacySettings + + Privacy + Privacy + + + Privacy Settings + Privacy-instellingen + + + + QtProfileBar + + Click here to change your status + Klik hier om uw status te wijzigen + + + active + actief + + + voicemail + voicemail + + + inactive + inactief + + + unauthorized + niet toegestaan + + + Set global presence to: + Stel globale aanwezigheid in op: + + + Voice mail + Voicemail + + + + QtProfileDetails + + Advanced >> + Geavanceerd >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Een contactpersoon moet een groep hebben. Stel een groep in. + + + << Simple + << Simpel + + + Select your avatar + Kies uw avatar + + + @product@ - No Group Selected + @product@ - Geen Groep Geselecteerd + + + @company@ Avatars + @company@ Avatars + + + + QtQuteCom + + &Cancel + &Annuleren + + + Conference + Groepsgesprek + + + Call + Bellen + + + Account + + + + Add a Contact + Contactpersoon toevoegen + + + You have unfinished call(s). + U hebt onafgemaakte telefoongesprek(ken). + + + @product@ - Warning + @product@ - Waarschuwing + + + Home + Persoonlijke map + + + Are you sure you want to exit the application? + Weet u zeker dat u het programma wilt afsluiten? + + + &Exit + Afsluit&en + + + @product@ - Call Error + @product@ - Gespreksfout + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Geavanceerd + + + General + Algemeen + + + Accounts + Accounts + + + Audio + Geluid + + + Call Forward + Doorschakelen + + + Language + Taal + + + Privacy + Privacy + + + Video + Video + + + Voicemail + Voicemail + + + security + beveiliging + + + Notifications + + + + + QtRenameGroup + + Bad group name + Fout in groepsnaam + + + Group name cannot be empty + Groepsnaam mag niet leeg zijn + + + + QtSecuritySettings + + Security + Beveiliging + + + Security Settings + Beveiligingsinstellingen + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Voer een telefoonnummer in. + + + Do you want to continue? + Wilt u doorgaan? + + + Your SMS has not been sent + Uw SMS is niet verzonden + + + Your SMS has been sent + Uw SMS is verzonden + + + Your message is too long. +This will send + Uw bericht is te lang. +Dit zal worden verzonden: + + + SMS. + + SMS. + + + + You can not send an empty message. + U kunt geen leeg bericht verzenden. + + + @company@ SMS service + @company@ SMS dienst + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Update mislukt + + + @product@ update failed to start: try to update @product@ manually + @product@ update kon niet worden gestart: probeer @product@ handmatig te updaten + + + + QtStatusBar + + Not connected + Niet verbonden + + + Register done + Registratie gereed + + + Unregister done + Uitschrijven gereed + + + Connecting + Verbinden + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + @product@ + + + Call SIP + Bel SIP + + + Call land line + Bel vast nummer + + + Call Mobile + Bel mobiel + + + Call @company@ + Bel @company@ + + + Call + Bellen + + + Send SMS + SMS versturen + + + Online + Online + + + Invisible + Onzichtbaar + + + Away + Weg + + + Do Not Disturb + Niet storen + + + Internet Connection Error + Probleem met internetverbinding + + + Offline + Offline + + + Connecting... + Verbinden... + + + Send a SMS + Verstuur een SMS + + + Start a chat + Begin een chat + + + Place Call + Begin een gesprek + + + Send File + Bestand verzenden + + + Multiple Status + Meervoudige status + + + Unknown Status + Onbekende status + + + Quit @product@ + Sluit @product@ + + + + QtToolBar + + &Cancel + &Annuleren + + + @product@ - Proceed Conference + @product@ - Ga verder met Groepsgesprek + + + Edit My Profile + Bewerk mijn profiel + + + Add a Contact + Contactpersoon toevoegen + + + Hide Unavailable Contacts + Beschikbare contacten verbergen + + + Show Unavailable Contacts + Niet-beschikbare contactpersonen weergeven + + + Hide Groups + Groepen verbergen + + + Show Groups + Groepen weergeven + + + You have unfinished call(s). + U hebt onafgemaakte telefoongesprek(ken). + + + Are you sure you want to log off? + Weet u zeker dat u zich wilt afmelden? + + + &Log Off + Afme&lden + + + Disable &Video Calls + &Videogesprekken uitschakelen + + + Enable &Video Calls + &Videogesprekken inschakelen + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Groepsgesprek kan niet worden gestart als er nog telefoongesprekken actief zijn.</b><br><br>Rond alle gesprekken af en probeer opnieuw. + + + @product@ - Warning + @product@ - Waarschuwing + + + Log &Off... + A&fmelden + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Contactenlijst + + + + QtUserProfile + + Edit Contact + Contactpersoon bewerken + + + &Authorize + Toest&aan + + + &Block + %Blokkeren + + + Network error. + Netwerkfout. + + + @product@ - Authorization Request + @product@ - Authorizatieverzoek + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Er deed zich een probleem voor bij het laden van uw profiel. +Het laatste profiel waarvan een back-up beschikbaar was is geladen: +het is mogelijk dat recente veranderingen verloren zijn gegaan + + + Your profile could not be loaded. +Choose another profile or create a new one. + Uw profiel kon niet worden geladen. +Kies een ander profiel of maak een nieuwe aan. + + + Wrong email/password entered + Verkeerd email/wachtwoord ingevuld + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normaal + + + Good + Goed + + + Very good + Zeer goed + + + Excellent + Uitstekend + + + Video Settings + Video-instellingen + + + + QtVoicemailSettings + + Voicemail + Voicemail + + + Voicemail Settings + Voicemail-instellingen + + + + QtWebDirectory + + @product@ - Directory + @product@ - Directory + + + + QuteComConfigDialog + + Cancel + Annuleren + + + Save + Opslaan + + + Title + Titel + + + @product@ - Configuration + @product@ - Configuratie + + + + QuteComWindow + + &Accept + &Accepteer + + + &Hidden + &Verborgen + + + &Tools + &Gereedschappen + + + &Help + &Help + + + &Actions + &Acties + + + @company@ + @company@ + + + &Close + Sl&uiten + + + Dialpad + Kiestoetsen + + + @product@ + @product@ + + + Start Conference + Groepsgesprek starten + + + Send SMS + SMS versturen + + + Contacts + Contactpersonen + + + History + Geschiedenis + + + Clear &History + Gesc&hiedenis wissen + + + ToolBar + Werkbalk + + + Show/Hide Unavailable &Contacts + Niet-beschikbare &contactpersonen weergeven/verbergen + + + &Chat Sessions + &Chatsessies + + + &All + &Alles + + + &HangUp + Op&hangen + + + &Hold/Resume + Wac&ht/voortzetten + + + Show/Hide &Groups + &Groepen tonen/verbergen + + + &Outgoing Calls + &Uitgaande gesprekken + + + &Incoming Calls + &Binnenkomende gesprekken + + + &Missed Calls + Ge&miste oproepen + + + Enable/Disable &Video Calls + &Videogesprekken aan/uit + + + Short Text &Messages (SMS) + Tekstberichten (S&MS) + + + Rejected Calls + Geweigerde gesprekken + + + &Contacts + &Contactpersonen + + + &About... + &Info... + + + Add &Contact... + &Contactpersoon toevoegen + + + &Configuration... + &Configuratie... + + + Send SMS... + SMS sturen... + + + View My &Profile... + Mijn &profiel... + + + View My Profile + Mijn profiel + + + Start &Conference... + &Groepsgesprek starten + + + &Find Contact... + Contactpersoon &zoeken... + + + Log &Off... + A&fmelden + + + Log Off + Afmelden + + + Show &Chat Window + &Chatvenster weergeven + + + Show Chat Window + Chatvenster weergeven + + + Show &File Transfer + &Bestandsoverdracht weergeven + + + Add Contact + Contactpersoon toevoegen + + + View My @company@ Account... + Bekijk Mijn @company@ Account... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ &Forum + + + @company@ &Wiki/FAQ... + @company@ &Wiki/Veelgestelde Vragen... + + + Learn more about @company@ Services... + Kom meer te weten over diensten van @company@... + + + Search + Zoeken + + + Find @company@ Contacts + Vind @company@ Contactpersonen + + + &Quit + &Afsluiten + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Tekst Onder Iconen + + + &Icons Only + Alleen p&ictogrammen + + + Add + Toevoegen + + + SMS + SMS + + + Conference + Groepsgesprek + + + + RenameGroupDialog + + Cancel + Annuleren + + + OK + OK + + + Enter the new group name: + Voer de nieuwe groepnaam in: + + + @product@ - Rename Contact Group + @product@ - Hernaam Contactpersonengroep + + + + SecuritySettings + + Form + Formulier + + + Enable call encryption + Gespreksversleuteling inschakelen + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ can gesprekken encrypteren met het AES 128-bits encryptiesysteem en Diffie-Hellman voor sleuteluitwisseling. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Uw profiel bijwerken + + + Yahoo! ID: + Yahoo!-ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN-ID: + + + SIP ID: + SIP-ID: + + + ICQ ID: + ICQ-ID: + + + AIM ID: + AIM-ID: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Versturen + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Klik hier om een telefoonnummer toe te voegen + + + 0 /160 + 0 /160 + + + Enter your signature here + Voer hier uw handtekening in + + + Signature: + Handtekening: + + + Phone number(s): + Telefoonnummer(s): + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Voer hier telefoonnummer(s) in<br>Ze moeten worden gescheiden door een & of ; of , + + + + SoftUpdateWindow + + Cancel + Annuleren + + + @product@ - Downloading update + @product@ - Bezig met downloaden van update + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulier + + + + VideoSettings + + Normal + Normaal + + + Good + Goed + + + Very good + Zeer goed + + + Excellent + Uitstekend + + + Enable video + Video inschakelen + + + Webcam Selection + Webcamkeuze + + + Webcam device: + Webcam-apparaat: + + + Webcam Preview + Webcam voorbeeldweergave + + + Connection Type + Verbindingstype + + + Video quality + Videokwaliteit + + + Down (kbit/s) + Down (kbit/s) + + + Up (kbit/s) + Up (kbit/s) + + + 0 to 512 + 0 tot 512 + + + 0 to 128 + 0 tot 128 + + + 512 to 2048 + 512 tot 2048 + + + 128 to 256 + 128 tot 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Videokwaliteit hangt af van de bandbreedte van uw internetverbinding + + + Make a test video call + Maak een test video-oproep + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Formulier + + + Phone number of your voicemail: + Telefoonnummer van uw voicemail: + + + Please fill in here the information about your voicemail + Vul hier uw de informatie over uw voicemail in + + + + Wizard + + Cancel + Annuleren + + + Finish + Einde + + + Next > + Volgende > + + + < Back + < Terug + + + Simple Wizard - Step %1 of %2 + Simpele wizard - stap %1 van %2 + + + + YahooSettings + + Login: + Login: + + + Password: + Wachtwoord: + + + Yahoo! Settings + Yahoo!-instellingen + + + Use Yahoo! Japan server + Gebruik Yahoo! Japan server + + + Forgot your Yahoo! password? + Yahoo!-wachtwoord vergeten? + + + Get a new Yahoo! Account + Nieuw Yahoo!-account + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pl.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pl.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pl.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pl.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3955 @@ + + + + + AIMSettings + + Login: + Użytkownik: + + + Forgot your AIM password? + Zapomniałeś swojego hasła AIM? + + + Get a new AIM Account + Załóż nowe konto AIM + + + Password: + Hasło: + + + AIM Settings + Ustawienia AIM/ICQ + + + + AboutWindow + + About + O QuteCom + + + Copyright (C)2008 Mbdsys + + + + Authors + Autorzy + + + Close + Zamknij + + + 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. + Ten program jest darmowym oprogramowaniem. Można go redystrybuować i/lub +modyfikować na zasadach licencji GNU General Public License opublikowanej +przez Free Software Foundation; wersja 2 lub (według uznania) jakiejkolwiek +późniejszej wersji. + + + @product@ - About + @product@ - informacje + + + @product@, a voice over Internet phone + @product@, rozmowy za pomocą telefonii internetowej + + + + AcceptDialog + + File Transfer + Transfer plików + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Odbierz + + + &Cancel + &Anuluj + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nazwa pliku: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Plik przychodzący</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Edytuj mój profil + + + + AddAccount + + Configure your account: + Konfiguracja konta + + + &Next + Następn&y + + + Need help? + Potrzebujesz pomocy? + + + You don't have any account ? Click here + Nie masz jeszcze konta? Kliknij tutaj. + + + &Back + &Powrót + + + Cancel + Anuluj + + + @product@ - Login + @product@ - Logowanie + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Konfiguruj swoje konto voip</span><br><br><span>Poinformuj nas, czy dostawcą twojego konta jest<br/> @company@, czy inny usługodawca</span> + + + @company@ account + Konto @company@ + + + Generic SIP account + Podstawowe konto SIP + + + + AddIMContact + + Cancel + Anuluj + + + Contact Type (protocol): + Typ kontaktu (protokół): + + + Contact ID: + Identyfikator kontaktu: + + + Account: + Konto: + + + Enable + Aktywność + + + Login + Identyfikator + + + Add + Dodaj + + + @product@ - Add a Contact Account + @product@ - dodawanie konta kontaktu + + + + AddQuteComAccount + + Password: + Hasło: + + + Need help? + Potrzebujesz pomocy? + + + &Back + &Powrót + + + Cancel + Anuluj + + + @product@ - Login + @product@ - Logowanie + + + &Connect + &Połącz + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Logowanie</span><br><br><span>Proszę wprowadzić swój adres e-mail i hasło</span> + + + Email Address: + E-mail: + + + Click here if you don't have a @company@ account + Kliknij tutaj jeśli nie masz konta @company@ + + + Forgot your @company@ password? + zapomniałeś swoje hasło @company@? + + + + AddSIPAccount + + Password: + Hasło: + + + Need help? + Potrzebujesz pomocy? + + + &Back + &Powrót + + + Cancel + Anuluj + + + @product@ - Login + @product@ - Logowanie + + + &Connect + &Połącz + + + Activate presence and chat (SIP/SIMPLE) + Uaktywnij status w sieci i czat (SIP/SIMPLE) + + + Displayname: + Wyświetlana nazwa + + + login / username: + Identyfikator/Nazwa użytkownika + + + Account name: + Nazwa konta: + + + Proxy: + Pośrednik: + + + : + : + + + Server: + Serwer: + + + SIP Domain / Realm: + Domena / Strefa SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Skonfiguruj swój profil SIP</span><br><br><span>Proszę podać informacje<br/>które pozwolą połączyć się z twoim<br/>kontem SIP</span> + + + Advanced + Zaawansowane + + + + AdvancedConfigWindow + + Close + Zamknij + + + Preference Name + Nazwa ustawień + + + Type + Typ + + + Value + Wartość + + + Default Value + Wartość domyślna + + + Save + Zapisz + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - konfiguracja zaawansowana + + + + AdvancedSettings + + Add + Dodaj + + + Advanced Settings + Ustawienia zaawansowane + + + Advanced Configuration Window + Ustawienia zaawansowane + + + Automatically answer incoming calls from + Automatycznie odbierz rozmowy od + + + Remove + Usuń + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Ostrzeżenie! Ta część jest przeznaczona dla zaawansowanych użytkowników.<br>Jakakolwiek błędna operacja może poważnie uszkodzić aplikację. + + + + AppearanceSettings + + Toolbar + Pasek narzędziowy + + + &Icons && Text + &Ikony && Tekst + + + Icons &Only + &Tylko Ikony + + + &Hidden + &Ukryj + + + Chat Theme + Wygląd okna rozmowy + + + Form + Formularz + + + + AudioSettings + + Reset + Resetuj + + + Audio Codecs + Kodeki audio + + + &Input device: + Urządzenia wejściowe: + + + &Output device: + Urządzenia wyjściowe: + + + &Ringing device: + Dzwonek: + + + &Make a test call + &Wykonaj połączenie testowe + + + Test + Test + + + &Advanced >> + &Zaawansowane>> + + + &Half Duplex + &Half Duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formularz + + + + AvatarWidget + + Form + Formularz + + + + BrowserSoftUpdateWindow + + Close + Zamknij + + + @product@ - Update available + @product@ - jest dostępna aktualizacja + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3: + + + 1st: + 1: + + + 2nd: + 2: + + + (+ country code) phone number + (+ kod kraju) numer telefonu + + + Forward all unanswered calls to message box + Przekazuj wszystkie nieodebrane połączenia na pocztę głosową + + + Disable call forwarding + Wyłącz przekazywanie połączeń + + + Forward all unanswered calls to following phone numbers: + Przekazuj wszystkie nieodebrane połączenia na następujące numery telefonów: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Na przykład: +42325364837 (+42 jest kodem kraju, a 325364837 jest numerem) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Przekazywanie połączeń uaktywnia się jeśli nie jesteś połączony z @company@, twoja linia jest zajęta lub nie odbierasz połączenia w ciągu 20 sekund. Możesz skonfigurować maksymalnie trzy przekierowywania na telefon stacjonarny, komórkowy lub pocztę głosową - jeśli jest dostępna + + + + CallToaster + + Incoming Call + Rozmowa przychodząca + + + Message + Wiadomość + + + + ChatLogViewer + + Chat History + Historia czatu + + + &Contact + &Kontakt + + + &Tools + &Narzędzia + + + &Help + &Pomoc + + + &Actions + &Akcje + + + Main Toolbar + Główny pasek narzędziowy + + + Call Contact + Zadzwoń do kontaktu + + + Send a File + Wyślij plik + + + createChatConf + Utwórz czat grupowy + + + Show Contact Info + Pokaż info o kontakcie + + + blockContact + Zablokuj kontakt + + + &Save History As... + &Zapisz historię jako... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Narzędzia + + + &Actions + &Akcje + + + Main Toolbar + Główny pasek narzędziowy + + + Call Contact + Zadzwoń do kontaktu + + + Send a File + Wyślij plik + + + Show Contact Info + Pokaż info o kontakcie + + + blockContact + Zablokuj kontakt + + + &Save History As... + &Zapisz historię jako... + + + @company@ + @company@ + + + MainWindow + Okno główne + + + &Edit + &Edytuj + + + Cu&t + Wy&tnij + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopiuj + + + Ctrl+C + Ctrl+C + + + &Paste + &Wklej + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Rozpocznij czat konferencyjny + + + &Close + &Zamknij + + + Conference + Konferencja + + + + ChatRoomInviteWidget + + Chat room + Pokój rozmów + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Pokój rozmów</span></p></body></html> + + + (Conference participants) + (Uczestnicy konferencji) + + + &Remove + &Usuń + + + &Start + &Rozpocznij + + + Group Name + Nazwa grupy + + + &Add + &Dodaj + + + + ChatToaster + + Message + Wiadomość + + + Incoming Chat + Przychodzący czat + + + + ChatWidget + + Form + Formularz + + + + ConferenceCallWidget + + Cancel + Anuluj + + + Start + Start + + + Phone number 2: + Numer/Identyfikator: + + + Phone number 1: + Numer/Identyfikator: + + + ... + ... + + + @product@ - Create a Conference + @product@ - tworzenie konferencji + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferencja</span><br /><br />Proszę wprowadzić dwa numery telefonów</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">lub ID kontaktu @company@, aby </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">trójdrożną konferencję.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferencja</span><br /><br />Proszę wprowadzić dwa numery telefonów</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">lub ID kontaktu @company@, aby </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">trójdrożną konferencję.</p> + + + &Add >> + Dod&aj >> + + + << &Remove + << &Usuń + + + Available Contacts + Dostępne kontakty + + + &Start + &Rozpocznij + + + Cancel + Anuluj + + + + ContactGroupPopupMenu + + Remove Contact Group + Usuń grupę kontaktów + + + Rename Contact Group + Zmień nazwę grupy + + + Delete group + Usuń grupę + + + Do you really want to delete this group? + Czy usunąć tę grupę? + + + &Yes + &Tak + + + &No + &Nie + + + + ContactList + + Contact List + Lista kontaktów + + + goupname + + + + + ContactWidget + + No mobile phone number set + Nie podano numeru telefonu komórkowego + + + No landline phone number set + Nie podano numeru telefonu stacjonarnego + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby edytować ten kontakt</p></body></html> + + + + CrashReport + + Cancel + Anuluj + + + Program Failure + Awaria programu + + + Send + Wyślij + + + Optional Information + Informacje dodatkowe + + + Your Mail: + Twój adres e-mail: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Niedostępny + + + Click here to change your call forward settings + Kliknij tutaj, aby zmienić ustawienia przekazywania + + + Call forward mode: + Przekazywanie: + + + Purchase call out credits + Doładuj konto + + + Call Forward Method + Metoda przekazywania + + + Call Voice Mail + Poczta głosowa + + + Click here to buy @company@'s credits + Kliknij tutaj, aby kupić środki @company@ + + + + DesktopService + + Root Folder + Folder główny + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Aby wysłać dźwięk do rozmówcy, kliknij na elemencie, który zmienia kolor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Kliknij tutaj, aby odsłuchać pocztę głosową + + + New Voice Mail: + Nowa wiadomość głosowa: + + + Click here to see missed call(s) + Kliknij tutaj, aby zobaczyć nieodebrane połączenie(a) + + + Missed Call(s): + Nieodebrana rozmowa(y): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Pobieranie + + + Upload + Wysyłanie + + + Click here to change your download folder + Kliknij tutaj, aby zmienić folder pobierania + + + Download folder: + Folder pobierania: + + + Clean all items in the list + Wyczyść wszystkie elementy listy + + + &Clean + &Wyczyść + + + @product@ - File Transfer Manager + @product@ - Menedżer transferu plików + + + + FileTransferItem + + Cancel + Anuluj + + + Form + Formularz + + + Pause + Wstrzymaj + + + <i>From:</i> + <i>Od:</i> + + + + GeneralSettings + + When I double-click on a contact + Dwukrotne kliknięcie na kontakcie + + + Call cell phone or land line if contact not online + Jeśli kontakt jest niezalogowany połącz z telefonem komórkowym lub stacjonarnym + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Czas bezczynności + + + minutes + min. + + + Show me as "Away" when I am inactive for: + Zmień status na "Zaraz wracam", gdy jestem nieaktywny przez: + + + When I start my computer + W trakcie uruchamiania komputera + + + Automatically start @product@ + Automatycznie uruchamiaj @product@ + + + + GoogleTalkSettings + + Login: + Użytkownik: + + + Password: + Hasło: + + + GoogleTalk Settings + Ustawienia GoogleTalk + + + Forgot your GoogleTalk password? + Zapomniałeś swoje hasło Google Talk? + + + Get a new GoogleTalk Account + Załóż nowe konto Google Talk + + + + HttpProxyLoginWindow + + Cancel + Anuluj + + + HTTP Proxy Address: + Serwer proksy HTTP: + + + HTTP Proxy Port Number: + Numer portu: + + + HTTP Proxy Login: + Login: + + + HTTP Proxy Password: + Hasło: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autoryzacja proxy HTTP</span><br><br><span>Serwer proxy HTTP wymaga autoryzacji<br>Wprowadź identyfikator i hasło</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Lokalne proxy HTTP + + + + ICQSettings + + Login: + Użytkownik: + + + Password: + Hasło: + + + ICQ Settings + Ustawienia AIM/ICQ + + + Forgot your ICQ password? + Zapomniałeś swoje hasło AIM? + + + Get a new ICQ Account + Załóż nowe konto AIM + + + + IMAccountManager + + Close + Zamknij + + + Login + Identyfikator + + + Add + Dodaj + + + Delete + Usuń + + + Modify + Modyfikuj + + + Protocol + Protokół + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Moje konta komunikatorów (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Anuluj + + + Save + Zapisz + + + IM Account Settings + Ustawienia kont komunikatorów + + + + IMContactManager + + Add + Dodaj + + + Delete + Usuń + + + Contact Type (protocol) + Typ kontaktu (protokół) + + + Click on the add button below to add a new ID + Aby dodać nowy kontakt naciśnij przycisk "Dodaj" + + + Contact ID + Nazwa + + + + IMProfileWidget + + Enter your nickname here + Tutaj wprowaź identyfikator użytkownika + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Dodaj konto komunikatora (MSN, AIM, GoogleTalk...) + + + Add an IM account + Dodaj konto komunikatora + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby zmienić swój awatar</p></body></html> + + + + ImageSelector + + Cancel + Anuluj + + + OK + OK + + + Go Up + Przejdź do góry + + + Refresh + Odśwież + + + + JabberSettings + + Login: + Użytkownik: + + + Password: + Hasło: + + + Jabber Settings + Ustawienia Jabbera + + + Connect Server: + Serwer: + + + <u>Advanced Options</u> + <u>Opcje zaawansowane</u> + + + Require TLS + Szyfrowanie TLS + + + Port: + Port: + + + Use TLS if available + Użyj TLS jeśli jest dostępne + + + Allow plaintext authentication over unencrypted streams + Pozwól na autoryzację zwykłym tekstem przez połączenie nieszyfrowane + + + 5222 + 5222 + + + Force old (port 5223) SSL + Wymuś stary SSL (port 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Jeśli twojej wersji językowej na powyższej liście nie ma, możesz ją stworzyć za pomocą Launchpada. + + + More information here. + Więcej informacji na ten temat znajdziesz tutaj. + + + + LogAccount + + Password: + Hasło: + + + Need help? + Potrzebujesz pomocy? + + + Cancel + Anuluj + + + Delete + Usuń + + + @product@ - Login + @product@ - Logowanie + + + Account: + Konto: + + + &Connect + &Połącz + + + Forgot your @company@ password? + zapomniałeś swoje hasło @company@? + + + &Modify + &Zmień + + + Configure a &New Profile + Utwórz &nowy profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Proszę wybrać poprzednio użyty profil<br/> lub podać dane do połączenia z kontem<br/> @company@</span> + + + + MSNSettings + + Login: + Użytkownik: + + + Password: + Hasło: + + + MSN Settings + Ustawienia MSN + + + Forgot your MSN password? + Zapomniałeś swoje hasło MSN? + + + Get a new MSN Account + Załóż nowe konto MSN + + + Use HTTP method + Użyj metody HTTP + + + + MainWindow + + MainWindow + Okno główne + + + Command::terminate() + Polecenie::terminate() + + + Command::start() + Polecenie::start() + + + Accept Call + Odbierz rozmowę + + + Send Chat Message + Wyślij wiadomość + + + Make Call + Wykonaj połączenie + + + Hang Up + Rozłącz się + + + + ManageBlockedUsersSettings + + Close + Zamknij + + + Unblock User + Odblokuj użytkownika + + + Manage blocked users + Zarblokowani użytkownicy + + + @product@ - Manage blocked users + @product@ - Zarządzanie zablokowanymi użytkownikami + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Mam konto @company@ + + + Create a @company@ account + Utwórz konto @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Aby wysyłać SMS-y musisz być zalogowany na konto<br>@company@ i posiadać na nim środki. + + + + NotificationSettings + + Select the events for which a sound should be played. + Wybierz zdarzenia dla, których będa odtwarzane dźwięki. + + + + NotificationSettingsItem + + Sound file + Plik dźwiękowy + + + Find a sound file + Znajdź plik dźwiękowy + + + Play sound file + Odtwórz dźwięk + + + Play + Odtwórz + + + + NotifyDialog + + File Transfer + Transfer plików + + + &Ok + &OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualizacja</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Odbierz + + + Status + Status + + + 00:00:00 + 00:00:00 + + + Nickname + Identyfikator użytkownika + + + &Reject + &Odrzuć + + + Dialpad + Klawiatura + + + Audio Smileys + Żarty dżwiękowe + + + Communication is encrypted + Komunikacja jest szyfrowana + + + + PrivacySettings + + Manage blocked users + Zarblokowani użytkownicy + + + Privacy Rules + Ustawienia prywatności + + + Always sign in as "Invisible" (appear offline to all users) + Po zalogowaniu pokaż mnie jako "Niewidoczny" + + + Allow chats from + Zezwalaj na czaty + + + Anyone + wszystkimi + + + Only people from my contact list + tylko z osobami z mojej listy kontaktów + + + Allow calls from + Zezwalaj na rozmowy + + + When I sign into @company@ + Gdy zaloguję się do @company@ + + + + ProfileDetails + + Cancel + Anuluj + + + Save + Zapisz + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby zmienić swój awatar</p></body></html> + + + General + Ogólne + + + Network IDs (MSN, Jabber...) + Identyfikator sieci (MSN, Jabber...) + + + Advanced >> + Zaawansowane >> + + + Fill in all your network Id to stay connected with your contacts + Aby mieć stałe połączenia ze swoimi kontaktami z innych sieci, wprowadź tutaj swoje identyfikatory w tych sieciach + + + Contact + Kontakt + + + Group: + Grupa: + + + Last Name: + Nazwisko: + + + First Name: + Imię: + + + Details + Szczegóły + + + Web/blog: + Strona/blog: + + + Country: + Kraj: + + + State: + Woj.: + + + City: + Miasto: + + + Gender: + Płeć: + + + Birth Date: + Data urodz.: + + + Email: + E-mail: + + + Notes + Notatki + + + Phone Numbers + Numery telefonów + + + Home phone + Telefon domowy + + + Mobile phone + Telefon komórkowy + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Nieznana + + + Male + Mężczyzna + + + Female + Kobieta + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Konta + + + Accounts Settings + Ustawienia kont + + + + QtAddAccount + + Configure your voip account + Konfiguruj swoje konto voip + + + Please tell us if your account is provided<br/>by @company@ or by another service + Poinformuj nas, czy dostarczycielem twojego<br/> konta jest @company@, czy inny usługodavca + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + Test połączenia audio + + + Video Test Call + Test połączenia wideo + + + + QtAddQuteComAccount + + Login + Identyfikator + + + Please enter an email address. + Proszę wprowadzić adres e-mail + + + Please enter your email address<br/>and your password + Proszę wprowadzić swój adres e-mail i hasło + + + @product@ - Login + @product@ - połączenie + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Proszę wprowadzić informacje, które<br>pozwolą aplikacji telefonicznej połączyć się<br>z twoim kontem SIP + + + Configure your SIP profile + Aktualizuj profil SIP + + + + QtAdvancedIMContactManager + + Cancel + Anuluj + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Czy na pewno chcesz usunąć ten kontakt IM? + + + + &Delete + &Usuń + + + + QtAdvancedSettings + + Advanced + Zaawansowane + + + Advanced Settings + Ustawienia zaawansowane + + + + QtAppearanceSettings + + Me + Ja + + + Hello + Cześć + + + How are you? + Jak się masz? + + + Other + Inne + + + I am fine + W porządku + + + Have to go + Muszę iść + + + Bye + Do zobaczenia + + + Appearance + Wygląd + + + Appearance Settings + Ustawienia wyglądu + + + + QtAudioSettings + + Advanced + Zaawansowane + + + Audio + Audio + + + Audio Settings + Ustawienia audio + + + + QtCallBar + + +(country code) number or nickname + +(kod kraju) numer lub identyfikator + + + + QtCallForwardSettings + + Call Forward + Przekazywanie + + + Call Forward Settings + Ustawienia przekazywania połączeń + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Zapisz jako + + + + QtChatLogViewer + + Account + + + + Edit Contact + Edytuj kontakt + + + + QtChatTabWidget + + Close chat + Zakończ czat + + + + QtChatWidget + + %1 is connected. + %1jest połączony. + + + %1 is disconnected. + %1jest niepołączony. + + + send + Wyślij + + + Your file can not be sent: your contact must be connected on the @company@ network. + Plik nie może być wysłany. Twój kontakt musi być zalogowany w sieci @company@. + + + Your contact wishes to send a file with @company@. + Twój kontakt chce wysłać plik używając sieci @company@. + + + Go to %1 to install it + Aby zainstalować przejdź do %1 + + + %1 has joined the chat + %1 przyłączył się do czatu + + + %1 has left the chat + %1 opuścił czat + + + + QtChatWindow + + Edit Contact + Edytuj kontakt + + + @product@ Chat + Czat @product@ + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Identyfikator użytkownika + + + Call land line + Numer stacjonarny + + + Call Mobile + Numer komórkowy + + + Call @company@ + Połącz z @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Teraz możesz poinformować pierwszego rozmówcę, że tworzysz konferencję z jego udziałem.</b><br><br>Gdy ju ż to zrobisz, naciśnij poniższy przycisk. Pierwsza rozmowa zostanie zawieszona i rozpoczniesz połączenie z drugim rozmówcą.<br> + + + Hold first interlocutor and call second one + Zawieś pierwszą rozmowę i rozpocznij drugą + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Teraz możesz poinformować drugiego rozmówcę, że tworzysz konferencję z jego udziałem.</b><br><br>Gdy ju ż to zrobisz, naciśnij poniższy przycisk, aby rozpocząć konferencję. + + + Start Conference + Rozpocznij konferencję + + + @product@ - Proceed Conference + @product@ - Tworzenie konferencji + + + + QtContactList + + &Yes + &Tak + + + &No + &Nie + + + Merge %1 with %2? + Połączyć %1 z %2? + + + @product@ - Merge Contacts + @product@ - Łączenie kontaktów + + + + QtContactManager + + &Yes + &Tak + + + &No + &Nie + + + Home phone + Telefon domowy + + + Mobile phone + Telefon komórkowy + + + @product@ + @product@ + + + Edit Contact + Edytuj kontakt + + + Do you really want to delete this contact? + Czy napewno chcesz usunąć ten kontakt? + + + Start chat + Rozpocznij czat + + + Delete contact + Usuń kontakt + + + Call + Połącz + + + Free call + + + + Work phone + Telefon służbowy + + + Send SMS + Wyślij SMS + + + Edit contact + Edytuj kontakt + + + Block contact + Zablokuj kontakt + + + Invite to conference + Zaproś do konferencji + + + Go to website + Przejdź na stronę + + + Send file + Wyślij plik + + + Forward to mobile phone + Przekieruj na telefom komórkowy + + + + QtContactWidget + + No mobile phone number set + Nie podano numeru telefonu komórkowego + + + No landline phone number set + Nie podano numeru telefonu stacjonarnego + + + Click here to call + Kliknij tutaj, aby zadzwonić + + + Click here to set a phone number + Kliknij tutaj, aby wprowadzić numer telefonu + + + Click here to edit the contact + Kliknij tutaj, aby edytować kontakt + + + Click here to send a SMS + Kliknij tutaj, aby wysłać SMS + + + Click here to start a chat + Kliknij tutaj, aby rozpocząć czat + + + Click here to start a free call + Kliknij tutaj, aby rozpocząć bezpłatną rozmowę + + + Click here to send a file + Kliknij tutaj, aby wysłać plik + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Czy chcesz połączyć się ze swoją pocztą głosową? + + + @product@ - Voice Mail + @product@ - poczta głosowa + + + + QtFileTransfer + + &Yes + &Tak + + + &No + &Nie + + + Choose a directory + Wybierz katalog + + + Overwrite File? + Zastąpić plik? + + + A file called %1 already exists.Do you want to overwrite it? + Plik o nazwie %1 już istnieje. Czy chcesz go zastąpić? + + + File size error + Niewłaściwa wielkość pliku + + + %1 exceeds the maximum authorized size. + %1 przekroczył dopuszczakną wielkość + + + %1 has size 0. + %! posiada wartość 0 + + + %1 is a directory. + %1 jest katalogiem + + + You can not send a directory. + Nie można wysyłać katalogów + + + %1 is a shortcut. + %1 jest skrótem + + + You can not send a shortcut. + Nie można wysyłać skrótów + + + All Files (*.* *) + Wszystkie pliki (*.* *) + + + Please upgrade<br> your @product@ + Proszę zaktualizować<br> @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Poinformuj swój kontakt,<br> aby zaktualizował<br> @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Nie można odebrać pliku:musisz uaktualnić swój @product@ aby móc odbierać pliki. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + próbuje wysłać ci plik, ale jego @product@ musi być najpierw uaktualniony.Zasugeruj mu zaktualizowanie do najnowszej wersji. + + + + QtFileTransferItem + + Cancel + Anuluj + + + Remove + Usuń + + + Pause + Wstrzymaj + + + Starting + Uruchamianie... + + + From: + Od: + + + To: + Do: + + + Open + Otwórz + + + Resume + Wznów + + + Waiting for anwser... + Oczekuje na odpowiedź... + + + Done + Zakończono + + + Failed + Transfer pliku nie powiódł się + + + Paused + Wstrzymano + + + Paused by peer + Wstrzymano przez odbiorcę + + + Cancelled + Anulowano + + + Cancelled by peer + Anulowano przez odbiorcę + + + Downloading... + Pobieranie... + + + Uploading... + Wysyłanie... + + + Waiting for peer... + Oczekiwanie na partnera... + + + An error occured during the file transfer + Podczas transferu pliku wystąpił błąd + + + This may be caused by : + Błąd ten mógł być spowodowany przez: + + + Your @product@ is not up to date. Please download the latest version on + Masz starą wersję @product@. Pobierz najnowszą wersję z + + + The @company@ network may be temporarily unavailable. Please try later. + Sieć @company@ jest chwilowo niedostępna. Proszę spróbować później. + + + + QtGeneralSettings + + General + Ogólne + + + General Settings + Ustawienia ogólne + + + + QtHistory + + Incoming call + Rozmowa przychodząca + + + Outgoing call + Rozmowa wychodząca + + + Missed call + Rozmowa nieodebrana + + + Rejected call + Rozmowa odrzucona + + + Outgoing SMS + Wysłany SMS + + + Do you want to call %1? + Czy chcesz zadzwonić do %1? + + + Chat session + Sesja czatu + + + @product@ - Call History + @product@ - historia połączeń + + + Type + Typ + + + Name/ID + Nazwa/ID + + + Date + Data + + + Duration + Czas trwania + + + + QtHistoryWidget + + Erase this entry + Usuń ten wpis + + + Open in SMS window + Otwórz w oknie SMS-ów + + + Call this peer + Połącz z tym kontaktem + + + Show chat log + Wyświetl dziennik zdarzeń czatu + + + + QtIMAccountManager + + Cancel + Anuluj + + + @product@ + @product@ + + + &Delete + &Usuń + + + Are sure you want to delete this account? + + Czy na pewno chcesz usunąć to konto? + + + + + QtIMAccountMonitor + + Disconnected + Niezalogowany + + + Error: %1 + Błąd: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Zalogowany + + + Invisible + Niewidoczny + + + Away + Zaraz wracam + + + Do not disturb + Nie przeszkadzać + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Proszę wprowadzić login + + + + QtIMAccountPresenceMenuManager + + Cancel + Anuluj + + + @product@ + @product@ + + + &Delete + &Usuń + + + Online + Zalogowany + + + Invisible + Niewidoczny + + + Away + Zaraz wracam + + + Do Not Disturb + Nie przeszkadzać + + + Disconnect + Wyrejestruj + + + Delete Account + Usuń konto + + + Are sure you want to delete the account <b>%1</b>? + Czy na pewno chcesz usunąć to konto <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + edycja profilu + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Język + + + Language Settings + Ustawienia języka interfejsu + + + + QtLogAccount + + Invalid account + Nieprawidłowe konto + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Proszę wybrać poprzednio użyty profil<br/> lub uzupełnić dane, aby połączyć się z<br/>kontem @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - połączenie + + + + QtNotificationSettings + + Incoming call (ringtone) + Rozmowa przychodząca (ringtone) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Zakończenie rozmowy (hang up tone) + + + Incoming chat + Przychodzący czat + + + IM account connected + Zalogowanie do komunikatora + + + IM account disconnected + Wylogowanie z komunikatora + + + Contact online + Zalogowanie kontaktu + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Wybierz plik dźwiękowy + + + Sounds + Pliki dźwiękowe + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Rozmowa przychodząca + + + Resume + Wznów + + + Hang-up + Rozłącz + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Błąd + + + Talking + Rozmowa w toku + + + Dialing + Łączę... + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Dzwonię... + + + Redirected + Przekazana + + + Initialization... + Rozpoczynanie... + + + Closed + Zamknięte + + + Hold + Zawieś + + + Add contact + Dodaj kontakt + + + Ca&ncel + A&nuluj + + + Talking - Conference + Rozmowa konferencyjna + + + Add a Contact + Dodaj kontakt + + + + QtPresenceMenuManager + + Online + Zalogowany + + + Invisible + Niewidoczny + + + Away + Zaraz wracam + + + Do Not Disturb + Nie przeszkadzać + + + Log off + Wyloguj + + + + QtPrivacySettings + + Privacy + Prywatność + + + Privacy Settings + Ustawienia prywatności + + + + QtProfileBar + + Click here to change your status + Kliknij tutaj, aby zmienić swój status + + + active + aktywne + + + voicemail + poczta głosowa + + + inactive + nieaktywna + + + unauthorized + Nieuruchomione + + + Set global presence to: + Ustaw globalne wyświetlanie statusu na: + + + Voice mail + Poczta głosowa + + + + QtProfileDetails + + Advanced >> + Zaawansowane >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Kontakt musi być przydzielony do grupy. Proszę wybrać grupę. + + + << Simple + << Prosty + + + Select your avatar + Wybierz swój awatar + + + @product@ - No Group Selected + @product@ - nie wybrano grupy + + + @company@ Avatars + Awatary @company@ + + + + QtQuteCom + + &Cancel + &Anuluj + + + Conference + Konferencja + + + Call + Połącz + + + Account + + + + Add a Contact + Dodaj kontakt + + + You have unfinished call(s). + Trwa niezakończona(e) rozmowa(y) + + + @product@ - Warning + @product@ - ostrzerzenie + + + Home + Strona domowa + + + Are you sure you want to exit the application? + Czy na pewno chcesz zamknąć aplikację? + + + &Exit + &Zamknij + + + @product@ - Call Error + @product@ - błąd połączenia + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Zaawansowane + + + General + Ogólne + + + Accounts + Konta + + + Audio + Audio + + + Call Forward + Przekazywanie + + + Language + Język + + + Privacy + Prywatność + + + Video + Wideo + + + Voicemail + Poczta głosowa + + + security + Bezpieczeństwo + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nieprawidłowa nazwa grupy + + + Group name cannot be empty + Musi być określona nazwa grupy + + + + QtSecuritySettings + + Security + Bezpieczeństwo + + + Security Settings + Ustawienia bezpieczeństwa + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Proszę wprowadzić numer telefonu. + + + Do you want to continue? + Czy chcesz kontynuować? + + + Your SMS has not been sent + SMS nie został wysłany + + + Your SMS has been sent + SMS został wysłany + + + Your message is too long. +This will send + Wiadomość jest za długa. +To zostanie wysłane + + + SMS. + + SMS. + + + + You can not send an empty message. + Nie można wysłać pustej wiadomości + + + @company@ SMS service + @company@ - Usługi SMS + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Aktualizacja nie powiodła się + + + @product@ update failed to start: try to update @product@ manually + Aktualizacja @product@ nie powiodła się. Spróbuj wykonać aktualizację @product@ ręcznie + + + + QtStatusBar + + Not connected + Niepołączony + + + Register done + Zarejestrowany + + + Unregister done + Wyrejestrowany + + + Connecting + Łączenie + + + Output volume is muted + Dźwięk jest wyciszony + + + Output volume is 0 + Głośność ustawiona na 0 + + + Click to adjust output volume + Naciśnij aby ustwić głośność + + + Input volume is muted + Wejście jest wyciszona + + + Input volume is 0 + Głośność wejścia ustawiona na 0 + + + Click to adjust input volume + Naciśnij aby ustawić głośność wejścia + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + @product@ + + + Call SIP + Identyfikator użytkownika + + + Call land line + Numer stacjonarny + + + Call Mobile + Numer komórkowy + + + Call @company@ + Połącz z @company@ + + + Call + Połącz + + + Send SMS + Wyślij SMS + + + Online + Zalogowany + + + Invisible + Niewidoczny + + + Away + Zaraz wracam + + + Do Not Disturb + Nie przeszkadzać + + + Internet Connection Error + Błąd połączenia internetowego + + + Offline + Niezalogowany + + + Connecting... + Łączenie... + + + Send a SMS + Wyślij SMS + + + Start a chat + Rozpocznij czat + + + Place Call + Wybierz numer + + + Send File + Wyślij plik + + + Multiple Status + Status złożony + + + Unknown Status + Nieznany status + + + Quit @product@ + Zamknij @product@ + + + + QtToolBar + + &Cancel + &Anuluj + + + @product@ - Proceed Conference + @product@ - Tworzenie konferencji + + + Edit My Profile + edycja profilu + + + Add a Contact + Dodaj kontakt + + + Hide Unavailable Contacts + Ukryj niedostępne kontakty + + + Show Unavailable Contacts + Wyświetl niedostępne kontakty + + + Hide Groups + Ukryj grupy + + + Show Groups + Wyświetl grupy + + + You have unfinished call(s). + Trwa niezakończona(e) rozmowa(y) + + + Are you sure you want to log off? + Czy na pewno chcesz się wylogować? + + + &Log Off + Wy&loguj + + + Disable &Video Calls + Wyłącz przekaz &wideo + + + Enable &Video Calls + Włącz przekaz &wideo + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Konferencja nie może zostać rozpoczęta, gdy trwają rozmowy.</b><br><br>Zakończ wszystkie rozmowy i spróbuj ponownie. + + + @product@ - Warning + @product@ - ostrzerzenie + + + Log &Off... + Wyl&oguj... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Lista kontaktów + + + + QtUserProfile + + Edit Contact + Edytuj kontakt + + + &Authorize + &Autoryzuj + + + &Block + &Blokuj + + + Network error. + Błąd sieci + + + @product@ - Authorization Request + @product@ - prośba o autoryzację + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Wystąpił błąd podczas wczytywania twojego profilu. +Profil został wczytany z ostatniej kopii zapasowej: +Możesz nie mieć ostatnio wykonanych zmian. + + + Your profile could not be loaded. +Choose another profile or create a new one. + Nie można wczytać twojego profilu. +Wybierz inny profil lub utwórz nowy. + + + Wrong email/password entered + Wprowadzono nieprawidłowy adres e-mail lub hasło + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Wideo + + + Normal + Normalna + + + Good + Dobra + + + Very good + Bardzo dobra + + + Excellent + Najlepsza + + + Video Settings + Ustawienia wideo + + + + QtVoicemailSettings + + Voicemail + Poczta głosowa + + + Voicemail Settings + Ustawienia poczty głosowej + + + + QtWebDirectory + + @product@ - Directory + @product@ - katalog + + + + QuteComConfigDialog + + Cancel + Anuluj + + + Save + Zapisz + + + Title + Tytuł + + + @product@ - Configuration + @product@ - konfiguracja + + + + QuteComWindow + + &Accept + &Odbierz + + + &Hidden + &Ukryj + + + &Tools + &Narzędzia + + + &Help + &Pomoc + + + &Actions + &Akcje + + + @company@ + @company@ + + + &Close + &Zamknij + + + Dialpad + Klawiatura + + + @product@ + @product@ + + + Start Conference + Rozpocznij konferencję + + + Send SMS + Wyślij SMS + + + Contacts + Kontakty + + + History + Historia + + + Clear &History + Wyczyść &historię + + + ToolBar + Pasek narzędziowy + + + Show/Hide Unavailable &Contacts + Wyświetl/ukryj niedostępne &kontakty + + + &Chat Sessions + Sesje &czatów + + + &All + &Wszystkie + + + &HangUp + &Rozłącz + + + &Hold/Resume + &Zawieś/Wznów + + + Show/Hide &Groups + Wyświetl/ukryj &grupy + + + &Outgoing Calls + &Rozmowy wychodzące + + + &Incoming Calls + &Rozmowy przychodzące + + + &Missed Calls + &Rozmowy nieodebrane + + + Enable/Disable &Video Calls + Włącz/wyłącz przekaz &wideo + + + Short Text &Messages (SMS) + Wiadomości &SMS + + + Rejected Calls + Rozmowy odrzucone + + + &Contacts + &Kontakty + + + &About... + &O QuteCom... + + + Add &Contact... + Dodaj &kontakt... + + + &Configuration... + &Ustawienia... + + + Send SMS... + Wyślij SMS... + + + View My &Profile... + Pokaż mój &profil... + + + View My Profile + Pokaż mój profil + + + Start &Conference... + Rozpocznij &konferencję... + + + &Find Contact... + &Znajdź kontakt... + + + Log &Off... + Wyl&oguj... + + + Log Off + Wyloguj + + + Show &Chat Window + Wyświetl okno &czatu + + + Show Chat Window + Wyświetl okno czatu + + + Show &File Transfer + Wyświetl okno &transferu plików + + + Add Contact + Dodaj kontakt + + + View My @company@ Account... + Wyświetl moje konto @company@ + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@ i Forum... + + + @company@ &Wiki/FAQ... + @company@ i Wiki/FAQ... + + + Learn more about @company@ Services... + Dowiedz się więcej o usługach @company@... + + + Search + Szukaj + + + Find @company@ Contacts + Szukaj kontaktów Szukaj + + + &Quit + &Zakończ + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + %Etykiety ikon + + + &Icons Only + Tylko &ikony + + + Add + Dodaj + + + SMS + SMS + + + Conference + Konferencja + + + + RenameGroupDialog + + Cancel + Anuluj + + + OK + OK + + + Enter the new group name: + Podaj nową nazwę grupy: + + + @product@ - Rename Contact Group + @product@ - zmień nazwę grupy kontaktów + + + + SecuritySettings + + Form + Formularz + + + Enable call encryption + Włącz szyfrowanie rozmów + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ może szyfrować połączenia używając 128 bitowego systemu szyfrowania AES i systemu Diffie-Hellman do wymiany kluczy. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Aktualizuj profil + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Wyślij + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Kliknij tutaj, aby dodać numer telefonu + + + 0 /160 + 0/160 + + + Enter your signature here + Tutaj wprowaź swój podpis + + + Signature: + Podpis: + + + Phone number(s): + Numer(y) telefonu(ów) + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Tutaj wprowadź numer(y) telefonu(ów) .<br>Należy je oddzielić & lub ; lub , + + + + SoftUpdateWindow + + Cancel + Anuluj + + + @product@ - Downloading update + @product@ - pobieranie aktualizacji + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formularz + + + + VideoSettings + + Normal + Normalna + + + Good + Dobra + + + Very good + Bardzo dobra + + + Excellent + Najlepsza + + + Enable video + Włącz wideo + + + Webcam Selection + Wybór kamery + + + Webcam device: + Kamera: + + + Webcam Preview + Podgląd obrazu z kamery + + + Connection Type + Typ połączenia + + + Video quality + Jakość przekazu + + + Down (kbit/s) + Pobieranie (kbit/s) + + + Up (kbit/s) + Wysyłanie (kbit/s) + + + 0 to 512 + 0 do 512 + + + 0 to 128 + 0 do 128 + + + 512 to 2048 + 512 do 2048 + + + 128 to 256 + 128 do 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Jakość przekazu wideo zależy od szybkości połączenia internetowego + + + Make a test video call + Wykonaj test połączenia wideo + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - wideo + + + + VoicemailSettings + + Form + Formularz + + + Phone number of your voicemail: + Numer telefonu twojej poczty głosowej: + + + Please fill in here the information about your voicemail + Tutaj proszę wprowadzić dane o swojej poczcie głosowej + + + + Wizard + + Cancel + Anuluj + + + Finish + Zakończ + + + Next > + Dalej > + + + < Back + < Powrót + + + Simple Wizard - Step %1 of %2 + Kreator - krok %1 z %2 + + + + YahooSettings + + Login: + Użytkownik: + + + Password: + Hasło: + + + Yahoo! Settings + Yahoo! - ustawienia + + + Use Yahoo! Japan server + Użyj serwera Yahoo! Japan + + + Forgot your Yahoo! password? + Zapomniałeś swoje hasło Yahoo!? + + + Get a new Yahoo! Account + Załóż nowe konto Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt_BR.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt_BR.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt_BR.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt_BR.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4132 @@ + + + + + AIMSettings + + Login: + Nome de usuário: + + + Forgot your AIM password? + Esqueceu sua senha no AIM? + + + Get a new AIM Account + Crie uma nova conta no AIM + + + Password: + Senha: + + + AIM Settings + Configurações do AIM + + + + AboutWindow + + About + Sobre + + + Copyright (C)2008 Mbdsys + + + + Authors + Autores + + + Close + Fechar + + + 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. + Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo +sob os termos da Licença Pública Geral GNU (GNU General Public +License), conforme publicada pela Free Software Foundation; tanto a +versão 2 da Licença como (a seu critério) qualquer versão mais nova. + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Tranferência de Arquivo + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Aceitar + + + &Cancel + &Cancelar + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;"><span style=" font-weight:600;">Contato: +</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome de +arquivo: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Arquivo +recebido</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Editar meu perfil + + + + AddAccount + + Configure your account: + Configure sua conta: + + + &Next + &Próximo + + + Need help? + Precisa de ajuda? + + + You don't have any account ? Click here + Você não tem uma conta ? Clique aqui + + + &Back + &Voltar + + + Cancel + Cancelar + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Cancelar + + + Contact Type (protocol): + Tipo do contato (protocolo): + + + Contact ID: + ID do contato: + + + Account: + Conta: + + + Enable + Habilitar + + + Login + + + + Add + Adicionar + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + &Back + &Voltar + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + &Conectar + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Registro</span><br><br><span>Por favor, entre com seu endereço de email e<br>senha</span> + + + Email Address: + Endereço de email: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + &Back + &Voltar + + + Cancel + Cancelar + + + @product@ - Login + + + + + &Connect + &Conectar + + + Activate presence and chat (SIP/SIMPLE) + Ativar presença e bate-papo (SIP/SIMPLE) + + + Displayname: + Nome de Apresentação: + + + login / username: + Nome de usuário: + + + Account name: + Nome da conta: + + + Proxy: + Proxy: + + + : + : + + + Server: + Servidor: + + + SIP Domain / Realm: + Domínio SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configure seu perfil SIP</span><br><br><span>Por favor, preencha a informação que irá <br/>permitir que seu softphone se conecte com<br/>sua conta SIP </span> + + + Advanced + Avançado + + + + AdvancedConfigWindow + + Close + Fechar + + + Preference Name + Nome preferido + + + Type + Tipo + + + Value + Valor + + + Default Value + Valor Padrão + + + Save + Salvar + + + Status + Status + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Adicionar + + + Advanced Settings + Configurações Avançadas + + + Advanced Configuration Window + Janela de Configuração Avançada + + + Automatically answer incoming calls from + Responder automaticamente chamadas vindas de + + + Remove + Remover + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Atenção, esta parte é para usuários experientes.<br>Qualquer erro pode danificar o software. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Formulário + + + + AudioSettings + + Reset + Restaurar + + + Audio Codecs + Codecs de Áudio + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulário + + + + AvatarWidget + + Form + Formulário + + + + BrowserSoftUpdateWindow + + Close + Fechar + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Terceiro: + + + 1st: + Primeiro: + + + 2nd: + Segundo: + + + (+ country code) phone number + (+ código do país) número do telefone + + + Forward all unanswered calls to message box + Encaminhe todas chamadas não atendidas para a caixa de mensagens + + + Disable call forwarding + Desabilitar encaminhamento de chamadas + + + Forward all unanswered calls to following phone numbers: + Encaminhar todas as chamadas não atendidas para os seguintes números de +telefone: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Por exemplo +3314500XXXX (+33 é o ódigo do país e 14500XXXX é o número do +telefone) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Recebendo Chamada + + + Message + Mensagem + + + + ChatLogViewer + + Chat History + Histórico de Bate-Papo + + + &Contact + &Contato + + + &Tools + &Ferramentas + + + &Help + + + + &Actions + &Ações + + + Main Toolbar + Barra de Ferramentas Principal + + + Call Contact + Chamar Contato + + + Send a File + Enviar um Arquivo + + + createChatConf + createChatConf + + + Show Contact Info + Mostrar Informações do Contato + + + blockContact + blockContact + + + &Save History As... + &Salvar Histórico Como... + + + actionRestartChat + actionRestartChat + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Contato + + + &Tools + &Ferramentas + + + &Actions + &Ações + + + Main Toolbar + Barra de Ferramentas Principal + + + Call Contact + Chamar Contato + + + Send a File + Enviar um Arquivo + + + Show Contact Info + Mostrar Informações do Contato + + + blockContact + blockContact + + + &Save History As... + &Salvar Histórico Como... + + + @company@ + + + + + MainWindow + Janela Principal + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + &Fechar + + + Conference + Conferência + + + + ChatRoomInviteWidget + + Chat room + Sala de bate-papo + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + Sala de bate-papo + + + (Conference participants) + (Participantes da conferência) + + + &Remove + &Remover + + + &Start + &Iniciar + + + Group Name + Nome do Grupo + + + &Add + &Adicionar + + + + ChatToaster + + Message + Mensagem + + + Incoming Chat + Recebendo Chat + + + + ChatWidget + + Form + Formulário + + + + ConferenceCallWidget + + Cancel + Cancelar + + + Start + Iniciar + + + Phone number 2: + Segundo telefone: + + + Phone number 1: + Primeiro telefone: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Iniciar + + + Cancel + Cancelar + + + + ContactGroupPopupMenu + + Remove Contact Group + Remover Grupo de Contatos + + + Rename Contact Group + Renomear Grupo de Contatos + + + Delete group + Excluir grupo + + + Do you really want to delete this group? + Você realmente deseja excluir este grupo? + + + &Yes + &Sim + + + &No + &Não + + + + ContactList + + Contact List + Lista de Contatos + + + goupname + + + + + ContactWidget + + No mobile phone number set + Nenhum número de telefone móvel definido + + + No landline phone number set + Nenhum número de telefone fixo definido + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para editar este contato</p></body></html> + + + + CrashReport + + Cancel + Cancelar + + + Program Failure + Falha do Programa + + + Send + Enviar + + + Optional Information + Informação Opcional + + + Your Mail: + Seu email: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Não disponível + + + Click here to change your call forward settings + Clique aqui para mudar suas configurações de encaminhamento de chamadas + + + Call forward mode: + Modo encaminhar chamadas: + + + Purchase call out credits + Comprar créditos para chamada externa + + + Call Forward Method + Método de Encaminhamento de Chamadas + + + Call Voice Mail + Ouvir correio de voz + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Diretório Raiz + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Clique nos vários itens que mudam de cor para enviar sons para seu interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Clique aqui para ouvir seu correio de voz + + + New Voice Mail: + Novo Correio de Voz: + + + Click here to see missed call(s) + Clique aqui para ver sua(s) chamada(s) perdida(s) + + + Missed Call(s): + Chamada(s) Perdida(s): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Download + + + Upload + Carregar + + + Click here to change your download folder + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;">Clique aqui para trocar a sua pasta de +downloads</p></body></html> + + + Download folder: + Pasta de Downloads: + + + Clean all items in the list + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;">Limpar todos os itens da lista</p></body></html> + + + &Clean + &Limpar + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Cancelar + + + Form + Formulário + + + Pause + Pausar + + + <i>From:</i> + <i>De:</i> + + + + GeneralSettings + + When I double-click on a contact + Quando eu clicar em um contato + + + Call cell phone or land line if contact not online + Chamar telefone celular ou linha fixa caso o contato não esteja online + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Status ocioso + + + minutes + minutos + + + Show me as "Away" when I am inactive for: + Mostrar-me como "Ausente" quando eu estiver inativo por: + + + When I start my computer + Quando eu iniciar meu computador + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Nome de usuário: + + + Password: + Senha: + + + GoogleTalk Settings + Configurações do GoogleTalk + + + Forgot your GoogleTalk password? + Esqueceu sua senha no GoogleTalk? + + + Get a new GoogleTalk Account + Criar uma nova conta no GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Cancelar + + + HTTP Proxy Address: + Endereço do proxy HTTP: + + + HTTP Proxy Port Number: + Número da porta do proxy HTTP: + + + HTTP Proxy Login: + Nome de usuário do proxy HTTP: + + + HTTP Proxy Password: + Senha do proxy HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autenticação no Proxy HTTP</span><br><br><span>Seu proxy HTTP local utiliza autenticação<br>Por favor, entre seu nome de usuário e sua senha</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Nome de usuário: + + + Password: + Senha: + + + ICQ Settings + Configurações do ICQ + + + Forgot your ICQ password? + Esqueceu sua senha no ICQ? + + + Get a new ICQ Account + Crie uma nova conta no ICQ + + + + IMAccountManager + + Close + Fechar + + + Add + Adicionar + + + Delete + Excluir + + + Login + + + + Modify + Modificar + + + Protocol + Protocolo + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Cancelar + + + Save + Salvar + + + IM Account Settings + Configurações de contas IM + + + + IMContactManager + + Add + Adicionar + + + Delete + Excluir + + + Contact Type (protocol) + Tipo de Contato (protocolo) + + + Click on the add button below to add a new ID + Clique no botão "adicionar" abaixo para adicionar um novo ID + + + Contact ID + ID de contato + + + + IMProfileWidget + + Enter your nickname here + Digite aqui o seu apelido + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Adicionar uma conta de mensagem instantânea (MSN, AIM, GoogleTalk...) + + + Add an IM account + Adicionar uma conta de IM + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique aqui para mudar seu avatar</p></body></html> + + + + ImageSelector + + Cancel + Cancelar + + + OK + OK + + + Go Up + Acima + + + Refresh + Atualizar + + + + JabberSettings + + Login: + Nome de usuário: + + + Password: + Senha: + + + Jabber Settings + Configurações do Jabber + + + Connect Server: + Conectar ao Servidor: + + + <u>Advanced Options</u> + <u>Opções Avançadas</u> + + + Require TLS + Requerer TLS + + + Port: + Porta: + + + Use TLS if available + Usar TLS se disponível + + + Allow plaintext authentication over unencrypted streams + Permitir autenticação em texto puro sem uso de criptografia + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forçar SSL antigo (na porta 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Seu idioma não está aqui, você sabia que pode fazer sua própria tradução no Launchpad? + + + More information here. + Mais informações aqui. + + + + LogAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + Cancel + Cancelar + + + Delete + Excluir + + + @product@ - Login + + + + + Account: + Conta: + + + &Connect + &Conectar + + + Forgot your @company@ password? + + + + + &Modify + &Modificar + + + Configure a &New Profile + Configurar um &Novo Perfil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Nome de usuário: + + + Password: + Senha: + + + MSN Settings + Configurações do MSN + + + Forgot your MSN password? + Esqueceu sua senha no MSN? + + + Get a new MSN Account + Faça uma nova conta no MSN + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Janela Principal + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Aceitar Chamada + + + Send Chat Message + Enviar Mensagem + + + Make Call + Fazer Chamada + + + Hang Up + Desligar + + + + ManageBlockedUsersSettings + + Close + Fechar + + + Unblock User + Desbloquear Usuário + + + Manage blocked users + Gerenciar usuários bloqueados + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Selecionar os eventos para os quais um som deve ser tocado. + + + + NotificationSettingsItem + + Sound file + Arquivo de Som + + + Find a sound file + Procurar um arquivo de som + + + Play sound file + Tocar arquivo de som + + + Play + Tocar + + + + NotifyDialog + + File Transfer + Tranferência de Arquivo + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;"> Status</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;"><span style=" font-size:18pt; font-weight:600; +color:#ffffff;">atualizar</span></p></body></html> + + + + PhoneCallWidget + + &Accept + &Aceitar + + + Status + Status + + + 00:00:00 + 00:00:00 + + + Nickname + Apelido + + + &Reject + &Rejeitar + + + Dialpad + Teclado + + + Audio Smileys + Smileys em áudio + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Gerenciar usuários bloqueados + + + Privacy Rules + Regras de privacidade + + + Always sign in as "Invisible" (appear offline to all users) + Sempre conectar como "Invisível" (aparecer como desconectado) + + + Allow chats from + Permitir bate-papos de + + + Anyone + Qualquer um + + + Only people from my contact list + Apenas pessoas da minha lista de contatos + + + Allow calls from + Permitir chamadas de + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Cancelar + + + Save + Salvar + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique aqui para mudar seu avatar</p></body></html> + + + General + Geral + + + Network IDs (MSN, Jabber...) + IDs de rede (MSN, Jabber...) + + + Advanced >> + Avançado >> + + + Fill in all your network Id to stay connected with your contacts + Por favor, preencha toda sua identificação na rede para estar sempre conectado com seus amigos + + + Contact + Contato + + + Group: + Grupo: + + + Last Name: + Sobrenome: + + + First Name: + Nome: + + + Details + Detalhes + + + Web/blog: + Site/blog: + + + Country: + País: + + + State: + Estado: + + + City: + Cidade: + + + Gender: + Sexo: + + + Birth Date: + Data de Nascimento: + + + Email: + Email: + + + Notes + Notas + + + Phone Numbers + Números de telefone + + + Home phone + Telefone de casa + + + Mobile phone + Telefone móvel + + + dd MMMM yyyy + dd MMMM yyyy + + + Unknown + Desconhecido + + + Male + Masculino + + + Female + Feminino + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Contas + + + Accounts Settings + Configurações de Contas + + + + QtAddAccount + + Configure your voip account + Configure sua conta voip + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Please enter an email address. + Por favor, digite um endereço de email + + + Please enter your email address<br/>and your password + Por favor, digite seu endereço de email<br/>e sua senha + + + Login + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Por favor, preencha a informação que irá<br/>permitir que seu softphone se conecte com<br/>sua conta SIP + + + Configure your SIP profile + Configure seu perfil SIP + + + + QtAdvancedIMContactManager + + Cancel + Cancelar + + + @product@ + + + + + Are sure you want to delete this IM contact? + + Você tem certeza que deseja excluir esta conta de IM? + + + + &Delete + &Excluir + + + + QtAdvancedSettings + + Advanced + Avançado + + + Advanced Settings + Configurações Avançadas + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Avançado + + + Audio + Áudio + + + Audio Settings + Configurações de Áudio + + + + QtCallBar + + +(country code) number or nickname + +(código do país) telefone ou apelido + + + + QtCallForwardSettings + + Call Forward + Encaminhar Chamadas + + + Call Forward Settings + Configurações para encaminhamento de chamadas + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Salvar Como + + + + QtChatLogViewer + + Account + + + + Edit Contact + Editar Contato + + + + QtChatTabWidget + + Close chat + Fechar bate-papo + + + + QtChatWidget + + %1 is connected. + %1 está conectado. + + + %1 is disconnected. + %1 está desconectado. + + + send + enviar + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Editar Contato + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Chamar SIP + + + Call land line + Chamar telefone fixo + + + Call Mobile + Chamar telefone móvel + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Agora você pode informar ao seu interlocutor que ele fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo. Seu primeiro interlocutor será colocado em modo retenção, enquanto o segundo interlocutor será chamado.<br> + + + Hold first interlocutor and call second one + Reter o primeiro interlocutor e chamar o segundo + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Agora você pode selecionar um segundo interlocutor que fará aprte da conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo para iniciar a conferência. + + + Start Conference + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Sim + + + &No + &Não + + + Merge %1 with %2? + Misturar %1 com %2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Sim + + + &No + &Não + + + Home phone + Telefone de casa + + + Mobile phone + Telefone móvel + + + @product@ + + + + + Edit Contact + Editar Contato + + + Do you really want to delete this contact? + Você realmente deseja exluir este contato? + + + Start chat + Iniciar bate-papo + + + Delete contact + Excluir contato + + + Call + Chamar + + + Free call + + + + Work phone + Telefone do trabalho + + + Send SMS + Enviar SMS + + + Edit contact + Editar contato + + + Block contact + Bloquear contato + + + Invite to conference + Convidar para conferência + + + Go to website + Vá para o site + + + Send file + Enviar arquivo + + + Forward to mobile phone + Encaminhar para telefone celular + + + + QtContactWidget + + No mobile phone number set + Nenhum número de telefone móvel definido + + + No landline phone number set + Nenhum número de telefone fixo definido + + + Click here to call + Clique aqui para chamar + + + Click here to set a phone number + Clique aqui para definir um número de telefone + + + Click here to edit the contact + Clique aqui para editar o contato + + + Click here to send a SMS + Clique aqui para enviar uma mensagem SMS + + + Click here to start a chat + Clique aqui para iniciar um bate-papo + + + Click here to start a free call + clique aqui para iniciar uma chamada gratuita + + + Click here to send a file + Clique aqui para enviar um arquivo + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Você quer ouvir suas mensagens de voz? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Sim + + + &No + &Não + + + Choose a directory + Escolher um diretório + + + Overwrite File? + Sobrescrever arquivo? + + + A file called %1 already exists.Do you want to overwrite it? + Um arquivo chamado %1 já existe. Você quer sobrescrevê-lo? + + + File size error + Erro no tamanho do arquivo + + + %1 exceeds the maximum authorized size. + %1 excede o tamanho máximo autorizado. + + + %1 has size 0. + %1 tem tamanho 0. + + + %1 is a directory. + %1 é um diretório. + + + You can not send a directory. + Você não pode enviar um diretório. + + + %1 is a shortcut. + %1 é um atalho. + + + You can not send a shortcut. + Você não pode enviar um atalho. + + + All Files (*.* *) + Todos os Arquivos (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Cancelar + + + Remove + Remover + + + Pause + Pausar + + + Starting + Iniciando + + + From: + De: + + + To: + Para: + + + Open + Abrir + + + Resume + Continuar + + + Waiting for anwser... + Aguardando uma resposta... + + + Done + Feito + + + Failed + Falhou + + + Paused + Interrompido + + + Paused by peer + Interrompido pelo outro + + + Cancelled + Cancelado + + + Cancelled by peer + Cancelado pelo parceiro + + + Downloading... + Baixando... + + + Uploading... + Enviando... + + + Waiting for peer... + Aguardando pelo parceiro + + + An error occured during the file transfer + <html><head><meta name="qrichtext" content="1" /></head><body style=" +white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt;font- +weight:400; font-style:normal; text-decoration:none;"><p style=" margin- +top:0px;margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- +indent:0; text-indent:0px;"><span style=" font-size:18pt; font-weight:600; +color:#ffffff;">Um erro<br> occorreu durante<br>a transferência do +arquivo</span></p></body></html> + + + This may be caused by : + Isto pode ser causado por: + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Geral + + + General Settings + Configurações Gerais + + + + QtHistory + + Incoming call + Chamada recebida + + + Outgoing call + Chamada realizada + + + Missed call + Chamada perdida + + + Rejected call + Chamada rejeitada + + + Outgoing SMS + SMS enviado + + + Do you want to call %1? + Você deseja chamar %1? + + + Chat session + Sessão de bate-papo + + + @product@ - Call History + + + + + Type + Tipo + + + Name/ID + Nome/ID + + + Date + Data + + + Duration + Duração + + + + QtHistoryWidget + + Erase this entry + Apagar esta entrada + + + Open in SMS window + Abrir a janela de SMS + + + Call this peer + Chamar + + + Show chat log + Mostrar o log de bate-papo + + + + QtIMAccountManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + &Excluir + + + Are sure you want to delete this account? + + Você tem certeza que deseja excluir esta conta? + + + + + QtIMAccountMonitor + + Disconnected + Desconetado + + + Error: %1 + Erro: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Online + + + Invisible + Invisível + + + Away + Ausente + + + Do not disturb + Não Perturbe + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Por favor, digite um login + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancelar + + + @product@ + + + + + &Delete + &Excluir + + + Online + Online + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Perturbe + + + Disconnect + Desconectar + + + Delete Account + Excluir Conta + + + Are sure you want to delete the account <b>%1</b>? + Você tem certeza que deseja excluir a conta <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Editar Meu Perfil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Idioma + + + Language Settings + Configurações de Idioma + + + + QtLogAccount + + Invalid account + Conta inválida + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Chamada recebida (toque) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Chamada encerrada (toque) + + + Incoming chat + Bate papo solicitado + + + IM account connected + Conta de IM Conectou + + + IM account disconnected + Conta de IM desconectou + + + Contact online + Contato online + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Escolha um arquivo de som + + + Sounds + Sons + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Recebendo Chamada + + + Resume + Continuar + + + Hang-up + Desligar + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Erro + + + Talking + Falando + + + Dialing + Discando + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Chamando + + + Redirected + Redirecionado + + + Initialization... + Inicialização... + + + Closed + Encerrado + + + Hold + Reter + + + Add contact + Adicionar contato + + + Ca&ncel + Ca&ncelar + + + Talking - Conference + Falando - Conferência + + + Add a Contact + Adicionar um Contato + + + + QtPresenceMenuManager + + Online + Online + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Perturbe + + + Log off + Desconectar + + + + QtPrivacySettings + + Privacy + Privacidade + + + Privacy Settings + Configurações de Privacidade + + + + QtProfileBar + + Click here to change your status + Clique aqui para alterar o seu + + + active + ativo + + + voicemail + correio de voz + + + inactive + inativo + + + unauthorized + Não autorizado + + + Set global presence to: + Ajustar status de presença global para: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Avançado >> + + + @product@ + + + + + A contact must have a group, please set a group. + Um contato precisa estar em um grupo, por favor selecione um. + + + << Simple + << Simples + + + Select your avatar + Selecione seu avatar + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Cancelar + + + Conference + Conferência + + + Call + Chamar + + + Account + + + + Add a Contact + Adicionar um Contato + + + You have unfinished call(s). + Você tem chamada(s) não concluída(s). + + + @product@ - Warning + + + + + Home + Pasta Pessoal + + + Are you sure you want to exit the application? + Você tem certeza que deseja sair da aplicação + + + &Exit + &Sair + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avançado + + + General + Geral + + + Accounts + Contas + + + Audio + Áudio + + + Call Forward + Encaminhar Chamadas + + + Language + Idioma + + + Privacy + Privacidade + + + Video + Vídeo + + + Voicemail + + + + security + segurança + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nome de grupo inválido + + + Group name cannot be empty + Nome de grupo não pode ser vazio + + + + QtSecuritySettings + + Security + Segurança + + + Security Settings + Configurações de Segurança + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Por favor, preencha com um número de telefone. + + + Do you want to continue? + Você deseja continuar? + + + Your SMS has not been sent + Problemas ao enviar seu SMS + + + Your SMS has been sent + Seu SMS foi enviado + + + Your message is too long. +This will send + Sua mensagem é muito longa. Isto será enviado + + + SMS. + + SMS. + + + + You can not send an empty message. + Você não pode enviar uma mensagem vazia. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Desconectado + + + Register done + Registro feito + + + Unregister done + Desregistro feito + + + Connecting + Conectando + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + + + + + Call SIP + Chamar SIP + + + Call land line + Chamar telefone fixo + + + Call Mobile + Chamar telefone móvel + + + Call @company@ + + + + + Call + Chamar + + + Send SMS + Enviar SMS + + + Online + Online + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Perturbe + + + Internet Connection Error + Erro na Conexão com Internet + + + Offline + Offline + + + Connecting... + Conectando... + + + Send a SMS + Enviar um SMS + + + Start a chat + Iniciar um bate-papo + + + Place Call + Realizar Chamada + + + Send File + Enviar arquivo + + + Multiple Status + Múltiplos Status + + + Unknown Status + Status Desconhecido + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Cancelar + + + @product@ - Proceed Conference + + + + + Edit My Profile + Editar Meu Perfil + + + Add a Contact + Adicionar um Contato + + + Hide Unavailable Contacts + Ocultar Contatos &Indisponíveis + + + Show Unavailable Contacts + Mostrar Contatos &Indisponíveis + + + Hide Groups + Ocultar &Grupos + + + Show Groups + Mostrar &Grupos + + + You have unfinished call(s). + Você tem chamada(s) não concluída(s). + + + Are you sure you want to log off? + Você tem certeza que deseja desconectar? + + + &Log Off + &Desconectar + + + Disable &Video Calls + Desabilitar Chamadas de &Vídeo + + + Enable &Video Calls + Habilitar Chamadas de &Vídeo + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Conferência não pode ser iniciada enquanto houverem ligações ativas.</b><br><br>Finalize todas as ligações e tente novamente. + + + @product@ - Warning + + + + + Log &Off... + &Desconectar... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Lista de Contatos + + + + QtUserProfile + + Edit Contact + Editar Contato + + + &Authorize + &Autorizar + + + Network error. + + + + &Block + &Bloquear + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Um problema ocorreu ao carregar seu perfil. +A última cópia de segurança de seu perfil foi carregada: você talvez tenha perdido as últimas alterações + + + Your profile could not be loaded. +Choose another profile or create a new one. + Seu perfil não pode ser carregado. +Selecione outro perfil ou crie um novo. + + + Wrong email/password entered + Email ou senha incorretos + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Vídeo + + + Normal + Normal + + + Good + Boa + + + Very good + Muito boa + + + Excellent + Excelente + + + Video Settings + Configurações de Vídeo + + + + QtVoicemailSettings + + Voicemail + + + + Voicemail Settings + Configurações de Correio de Voz + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Cancelar + + + Save + Salvar + + + Title + Título + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Aceitar + + + &Hidden + + + + + &Tools + &Ferramentas + + + &Actions + &Ações + + + @company@ + + + + + &Close + &Fechar + + + Dialpad + Teclado + + + @product@ + + + + + Send SMS + Enviar SMS + + + Contacts + Contatos + + + History + Histórico + + + &Help + + + + Clear &History + Limpar &Histórico + + + ToolBar + Barra de ferramentas + + + Start Conference + + + + Show/Hide Unavailable &Contacts + Mostrar/Ocultar &Contatos Indisponíveis + + + &Chat Sessions + Sessões de &Chat + + + &All + &Todos + + + &HangUp + &Desligar + + + &Hold/Resume + &Reter/Retornar + + + Show/Hide &Groups + Mostrar/Ocultar &Grupos + + + &Outgoing Calls + Chamadas R&ealizadas + + + &Incoming Calls + Chamadas &Recebidas + + + &Missed Calls + Chamadas &Perdidas + + + Enable/Disable &Video Calls + Habilitar/Desabilitar Chamadas de &Vídeo + + + Short Text &Messages (SMS) + &Mensagens Curtas de Texto (SMS) + + + Rejected Calls + Chamadas Re&jeitadas + + + &Contacts + &Contatos + + + &About... + &Sobre... + + + Add &Contact... + Adicionar &Contato... + + + &Configuration... + &Configuração... + + + Send SMS... + &Enviar SMS... + + + View My &Profile... + Visualizar Meu &Perfil... + + + View My Profile + Visualziar Meu Perfil + + + Start &Conference... + Iniciar &Conferência... + + + &Find Contact... + &Localizar Contato... + + + Log &Off... + &Desconectar... + + + Log Off + Desconectar + + + Show &Chat Window + Mostrar Janela de &Bate-Papo + + + Show Chat Window + Mostrar Janela de Bate-Papo + + + Show &File Transfer + Mostrar Transferência de &Arquivos + + + Add Contact + Contato + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Adicionar + + + SMS + SMS + + + Conference + Conferência + + + + RenameGroupDialog + + Cancel + Cancelar + + + OK + OK + + + Enter the new group name: + Digite o nome do novo grupo: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Formulário + + + Enable call encryption + Habilitar a criptografia de chamadas + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Atualizar seu perfil + + + Yahoo! ID: + ID do Yahoo!: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + ID do MSN: + + + SIP ID: + ID SIP: + + + ICQ ID: + ID ICQ: + + + AIM ID: + ID AIM: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Enviar + + + @product@ - SMS + + + + + Click here to add a phone number + Clique aqui para adicionar um número de telefone + + + 0 /160 + 0 /160 + + + Enter your signature here + Digite sua assinatura aqui + + + Signature: + Assinatura: + + + Phone number(s): + Número(s) de telefone: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Digite aqui o(s) número(s) de telefone<br>Eles devem ser separados por & ou ; ou , + + + + SoftUpdateWindow + + Cancel + Cancelar + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulário + + + + VideoSettings + + Normal + Normal + + + Good + Boa + + + Very good + Muito boa + + + Excellent + Excelente + + + Enable video + Habilitar vídeo + + + Webcam Selection + Seleção de Webcam + + + Webcam device: + Dispositivo webcam: + + + Webcam Preview + Visualizar Webcam + + + Connection Type + Tipo de Conexão + + + Video quality + Qualidade de vídeo + + + Down (kbit/s) + Baixar (kbit/s) + + + Up (kbit/s) + Subir (kbit/s) + + + 0 to 512 + 0 até 512 + + + 0 to 128 + 0 até 128 + + + 512 to 2048 + 512 até 2048 + + + 128 to 256 + 128 até 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + A qualidade de vídeo depende de sua velocidade de conexão com a Internet + + + Make a test video call + Realizar uma chamada de teste de vídeo + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Formulário + + + Phone number of your voicemail: + Número de telefone de seu correio de voz: + + + Please fill in here the information about your voicemail + Por favor, preencha aqui a informação sobre seu correio de voz + + + + Wizard + + Cancel + Cancelar + + + Finish + Finalizar + + + Next > + Próximo > + + + < Back + < Anterior + + + Simple Wizard - Step %1 of %2 + Assistente - Passo %1 de %2 + + + + YahooSettings + + Login: + Nome de usuário: + + + Password: + Senha: + + + Yahoo! Settings + Configurações Yahoo! + + + Use Yahoo! Japan server + Utilizar o servidor japonês do Yahoo! + + + Forgot your Yahoo! password? + Esqueceu sua senha no Yahoo!? + + + Get a new Yahoo! Account + Obter uma nova conta Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_pt.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3975 @@ + + + + + AIMSettings + + Login: + Nome de Utilizador: + + + Forgot your AIM password? + Esqueceu a sua senha AIM? + + + Get a new AIM Account + Obter nova conta AIM + + + Password: + Senha: + + + AIM Settings + Definições AIM + + + + AboutWindow + + About + Acerca + + + Copyright (C)2008 Mbdsys + + + + Authors + Autores + + + Close + Fechar + + + 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. + Este programa é 'software' livre; pode-o redistribuir e/ou modificá-lo nos termos da Licença Pública Geral GNU como publicado pela Fundação de 'Software' Livre; versão 2 da licença, ou (por sua opção) qualquer versão posterior. + + + @product@ - About + @product@ - Acerca + + + @product@, a voice over Internet phone + @product@, um telefone através da Internet + + + + AcceptDialog + + File Transfer + Transferência de Ficheiros + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + teste.bmp + + + &Accept + &Aceitar + + + &Cancel + &Cancelar + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacto: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome do ficheiro: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Ficheiro recebido</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Editar o meu perfil + + + + AddAccount + + Configure your account: + Configure a sua conta: + + + &Next + &Próximo + + + Need help? + Precisa de ajuda? + + + You don't have any account ? Click here + Não tem uma conta? Clique aqui + + + &Back + &Anterior + + + Cancel + Cancelar + + + @product@ - Login + @product@ - Nome de utilizador + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configure a sua conta voip</span><br><br><span>Por favor diga-nos se a sua conta fornecida<br/>pela @company@ ou por outro serviço</span> + + + @company@ account + Conta @company@ + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Cancelar + + + Contact Type (protocol): + Tipo de Contacto (protocolo): + + + Contact ID: + ID de Contacto: + + + Account: + Conta: + + + Enable + Activar + + + Login + Nome de utilizador + + + Add + Adicionar + + + @product@ - Add a Contact Account + @product@ - Adiciona uma Conta de Contacto + + + + AddQuteComAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + &Back + &Anterior + + + Cancel + Cancelar + + + @product@ - Login + @product@ - Nome de utilizador + + + &Connect + &Conectar + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:18pt;">Nome de Utilizador</span><br><br><span>Por favor indique o seu endereço electrónico e<br>senha</span> + + + Email Address: + Endereço Electrónico: + + + Click here if you don't have a @company@ account + Clique aqui se não tem uma conta @company@ + + + Forgot your @company@ password? + Esqueceu a sua senha @company@ + + + + AddSIPAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + &Back + &Anterior + + + Cancel + Cancelar + + + @product@ - Login + @product@ - Nome de utilizador + + + &Connect + &Conectar + + + Activate presence and chat (SIP/SIMPLE) + Activar presença e conversa (SIP/SIMPLE) + + + Displayname: + Nome de Apresentação: + + + login / username: + nome de utilizador: + + + Account name: + Nome da conta: + + + Proxy: + Proxy: + + + : + : + + + Server: + Servidor: + + + SIP Domain / Realm: + Domínio SIP/Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configure o seu perfil </span><br><br><span>Por favor, preencha a informação que irá <br/>permitir que o seu 'softphone' seja conectado à sua<br/>conta SIP </span> + + + Advanced + Avançado + + + + AdvancedConfigWindow + + Close + Fechar + + + Preference Name + Nome Preferido + + + Type + Tipo + + + Value + Valor + + + Default Value + Valor Predefinido + + + Save + Gravar + + + Status + Estado + + + @product@ - Advanced Configuration + @product@ - Configuração Avançada + + + + AdvancedSettings + + Add + Adicionar + + + Advanced Settings + Configurações Avançadas + + + Advanced Configuration Window + Janela de Configuração Avançada + + + Automatically answer incoming calls from + Responder automaticamente a todas as chamadas de + + + Remove + Remover + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Atenção, esta parte é para utilizadores avançados.<br>Qualquer engano pode danificar gravemente o programa. + + + + AppearanceSettings + + Toolbar + Barra de ferramentas + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + &Oculto + + + Chat Theme + + + + + Form + Formulário + + + + AudioSettings + + Reset + Restaurar + + + Audio Codecs + Codificadores de Áudio + + + &Input device: + D&ispositivo de entrada + + + &Output device: + Disp&ositivo de saída + + + &Ringing device: + Dispositivo de &toque + + + &Make a test call + &Efectuar chamada de teste + + + Test + Teste + + + &Advanced >> + &Avançado >> + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulário + + + + AvatarWidget + + Form + Formulário + + + + BrowserSoftUpdateWindow + + Close + Fechar + + + @product@ - Update available + @product@ - Actualização disponível + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3.ª: + + + 1st: + 1.ª: + + + 2nd: + 2.ª: + + + (+ country code) phone number + (+ código do país) número de telefone + + + Forward all unanswered calls to message box + Reencaminhar todas as chamadas não atendidas para a caixa de mensagens + + + Disable call forwarding + Desactivar reencaminhamento de chamadas + + + Forward all unanswered calls to following phone numbers: + Reencaminhar todas as chamadas não atendidas para os números de telefone seguintes: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Por exemplo +3314500XXXX (+33 é o código do país e 14500XXXX é o número de telefone) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + O reencaminhamento de chamadas está activo se não estiver ligado ao @company@, quando a sua linha estiver ocupada ou 20 segundos após não ter atendido uma chamada. Pode configurar até três reencaminhamentos de chamadas para telefones fixos, telemóveis ou correio de voz (se aplicável) + + + + CallToaster + + Incoming Call + Chamada recebida + + + Message + Mensagem + + + + ChatLogViewer + + Chat History + Histórico de Conversas + + + &Contact + &Contacto + + + &Tools + &Ferramentas + + + &Help + &Ajuda + + + &Actions + &Acções + + + Main Toolbar + Barra de Ferramentas Principal + + + Call Contact + Chamar Contacto + + + Send a File + Enviar um Ficheiro + + + createChatConf + criarConferenciaConversa + + + Show Contact Info + Mostrar Informação do Contacto + + + blockContact + bloquearContacto + + + &Save History As... + &Gravar Histórico Como... + + + actionRestartChat + acçãoReiniciarConversa + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contacto + + + &Tools + &Ferramentas + + + &Actions + &Acções + + + Main Toolbar + Barra de Ferramentas Principal + + + Call Contact + Chamar Contacto + + + Send a File + Enviar um Ficheiro + + + Show Contact Info + Mostrar Informação do Contacto + + + blockContact + bloquearContacto + + + &Save History As... + &Gravar Histórico Como... + + + @company@ + @company@ + + + MainWindow + JanelaPrincipal + + + &Edit + &Editar + + + Cu&t + Cor&tar + + + Ctrl+X + Ctrl+X + + + &Copy + &Copiar + + + Ctrl+C + Ctrl+C + + + &Paste + Co&lar + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Iniciar Conversa por Conferência + + + &Close + &Fechar + + + Conference + Conferência + + + + ChatRoomInviteWidget + + Chat room + Sala de conversa + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de conversa</span></p></body></html> + + + (Conference participants) + (Participantes da conferência) + + + &Remove + &Remover + + + &Start + &Iniciar + + + Group Name + Nome do Grupo + + + &Add + &Adicionar + + + + ChatToaster + + Message + Mensagem + + + Incoming Chat + Conversa Activa + + + + ChatWidget + + Form + Formulário + + + + ConferenceCallWidget + + Cancel + Cancelar + + + Start + Iniciar + + + Phone number 2: + Número de telefone 2: + + + Phone number 1: + Número de telefone 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Criar Conferência + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Por favor indique dois números de telefone </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ou ID de contacto @company@ por ordem</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">para criar 3-vias de conferência.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conference</span><br /><br />Por favor indique dois números de telefone </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ou ID de contacto @company@ por ordem</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">para criar 3-vias de conferência.</p> + + + &Add >> + &Adicionar >> + + + << &Remove + << &Remover + + + Available Contacts + Contactos Disponíveis + + + &Start + &Iniciar + + + Cancel + Cancelar + + + + ContactGroupPopupMenu + + Remove Contact Group + Remover Grupo de Contactos + + + Rename Contact Group + Renomear Grupo de Contactos + + + Delete group + Apagar grupo + + + Do you really want to delete this group? + Deseja realmente apagar este grupo? + + + &Yes + &Sim + + + &No + &Não + + + + ContactList + + Contact List + Lista de Contactos + + + goupname + + + + + ContactWidget + + No mobile phone number set + Sem número de telefone definido + + + No landline phone number set + Sem número de telefone fixo definido + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para editar este contacto</p></body></html> + + + + CrashReport + + Cancel + Cancelar + + + Program Failure + Falha do Programa + + + Send + Enviar + + + Optional Information + Informação Opcional + + + Your Mail: + O seu endereço electrónico: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Não Disponível + + + Click here to change your call forward settings + Clique aqui para alterar as suas definições de reencaminhamento de chamadas + + + Call forward mode: + Modo de reencaminhamento de chamadas: + + + Purchase call out credits + Comprar créditos de chamadas externas + + + Call Forward Method + Método de Reencaminhamento de Chamadas + + + Call Voice Mail + Chamar Correio de Voz + + + Click here to buy @company@'s credits + Clique aqui para comprar créditos @company@ + + + + DesktopService + + Root Folder + Pasta de Raiz + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Clique nos vários itens que mudam de cor para enviar sons para seu interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Clique aqui para chamar o seu correio de voz + + + New Voice Mail: + Novo Correio Voz: + + + Click here to see missed call(s) + Clique aqui para ver a(s) sua(s) chamada(s) perdida(s) + + + Missed Call(s): + Chamada(s) Perdida(s): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Transferir + + + Upload + Enviar + + + Click here to change your download folder + Clique aqui para alterar a sua pasta de transferências + + + Download folder: + Pasta de transferências: + + + Clean all items in the list + Limpar todos os itens da lista + + + &Clean + &Limpar + + + @product@ - File Transfer Manager + @product@ - Gestão da Transferência de Ficheiros + + + + FileTransferItem + + Cancel + Cancelar + + + Form + Formulário + + + Pause + Pausar + + + <i>From:</i> + <i>De:</i> + + + + GeneralSettings + + When I double-click on a contact + Quando faço duplo clique num contacto + + + Call cell phone or land line if contact not online + Chamar o telemóvel ou telefone fixo se o contacto não estiver em linha + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Estado inactivo + + + minutes + minutos + + + Show me as "Away" when I am inactive for: + Mostrar-me como "Ausente" quando estiver inactivo por: + + + When I start my computer + Quando inicio o meu computador + + + Automatically start @product@ + Iniciar automaticamente o @product@ + + + + GoogleTalkSettings + + Login: + Nome de Utilizador: + + + Password: + Senha: + + + GoogleTalk Settings + Definições GoogleTalk + + + Forgot your GoogleTalk password? + Esqueceu a sua senha GoogleTalk? + + + Get a new GoogleTalk Account + Obter nova conta GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Cancelar + + + HTTP Proxy Address: + Endereço Proxy HTTP: + + + HTTP Proxy Port Number: + Número do porto do Proxy HTTP: + + + HTTP Proxy Login: + Nome de utilizador do Proxy HTTP: + + + HTTP Proxy Password: + Senha do Proxy HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autenticação Proxy HTTP</span><br><br><span>O seu proxy HTTP local usa autenticação<br>Por favor indique o seu nome de utilizador e senha</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Proxy HTTP Local + + + + ICQSettings + + Login: + Nome de Utilizador: + + + Password: + Senha: + + + ICQ Settings + Definições ICQ + + + Forgot your ICQ password? + Esqueceu a sua senha ICQ? + + + Get a new ICQ Account + Obter nova conta ICQ + + + + IMAccountManager + + Close + Fechar + + + Login + Nome de utilizador + + + Add + Adicionar + + + Delete + Apagar + + + Modify + Modificar + + + Protocol + Protocolo + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - As Minhas Contas de Mensagens Instantâneas (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Cancelar + + + Save + Gravar + + + IM Account Settings + Definições de contas IM + + + + IMContactManager + + Add + Adicionar + + + Delete + Apagar + + + Contact Type (protocol) + Tipo de Contacto (protocolo) + + + Click on the add button below to add a new ID + Clique no botão adicionar abaixo para adicionar um novo ID + + + Contact ID + ID de Contacto + + + + IMProfileWidget + + Enter your nickname here + Indique aqui a sua alcunha + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Adicionar uma conta de mensagem instantânea (MSN, AIM, GoogleTalk...) + + + Add an IM account + Adicionar conta IM + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para alterar a sua imagem</p></body></html> + + + + ImageSelector + + Cancel + Cancelar + + + OK + OK + + + Go Up + Acima + + + Refresh + Refrescar + + + + JabberSettings + + Login: + Nome de Utilizador: + + + Password: + Senha: + + + Jabber Settings + Definições Jabber + + + Connect Server: + Conectar ao Servidor: + + + <u>Advanced Options</u> + <u>Opções Avançadas</u> + + + Require TLS + Requerer TLS + + + Port: + Porto: + + + Use TLS if available + Usar TLS se disponível + + + Allow plaintext authentication over unencrypted streams + Permitir autenticação em texto simples sem encriptação + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forçar SSL antigo (porto 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + O seu idioma não está aqui, sabia que pode fazer sua própria tradução no Launchpad? + + + More information here. + Mais informação aqui. + + + + LogAccount + + Password: + Senha: + + + Need help? + Precisa de ajuda? + + + Cancel + Cancelar + + + Delete + Apagar + + + @product@ - Login + @product@ - Nome de utilizador + + + Account: + Conta: + + + &Connect + &Conectar + + + Forgot your @company@ password? + Esqueceu a sua senha @company@ + + + &Modify + &Modificar + + + Configure a &New Profile + Configurar &Novo Perfil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Login</span><br><br><span>Por favor escolha um perfil usado anteriormente<br/> ou preencha as informações para se ligar a uma<br/> conta @company@</span> + + + + MSNSettings + + Login: + Nome de Utilizador: + + + Password: + Senha: + + + MSN Settings + Definições MSN + + + Forgot your MSN password? + Esqueceu sua senha MSN? + + + Get a new MSN Account + Obter nova conta MSN + + + Use HTTP method + Usar método HTTP + + + + MainWindow + + MainWindow + JanelaPrincipal + + + Command::terminate() + Comando::terminar() + + + Command::start() + Comando::iniciar() + + + Accept Call + Aceitar Chamada + + + Send Chat Message + Enviar Mensagem de Conversa + + + Make Call + Efectuar Chamada + + + Hang Up + Desligar + + + + ManageBlockedUsersSettings + + Close + Fechar + + + Unblock User + Desbloquear Utilizador + + + Manage blocked users + Gerir utilizadores bloqueados + + + @product@ - Manage blocked users + @product@ - Gerir utilizadores bloqueados + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Tenho uma conta @company@ + + + Create a @company@ account + Criar conta @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Para enviar uma SMS; precisa estar autenticado numa<br>conta @company@ e ter créditos @company@ + + + + NotificationSettings + + Select the events for which a sound should be played. + Seleccione os eventos para os quais um som deve ser reproduzido. + + + + NotificationSettingsItem + + Sound file + Ficheiro de som + + + Find a sound file + Procurar um ficheiro de som + + + Play sound file + Reproduzir um ficheiro de som + + + Play + Reproduzir + + + + NotifyDialog + + File Transfer + Transferência de Ficheiros + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estado:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualizar</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Aceitar + + + Status + Estado + + + 00:00:00 + 00:00:00 + + + Nickname + Alcunha + + + &Reject + &Rejeitar + + + Dialpad + Teclado + + + Audio Smileys + Sorrisos Áudio + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Gerir utilizadores bloqueados + + + Privacy Rules + Regras de Privacidade + + + Always sign in as "Invisible" (appear offline to all users) + Entrar sempre como "Invisível" (aparece como desligado) + + + Allow chats from + Permitir conversas de + + + Anyone + Qualquer um + + + Only people from my contact list + Apenas pessoas da minha lista de contactos + + + Allow calls from + Permitir chamadas de + + + When I sign into @company@ + Quando entro no @company@ + + + + ProfileDetails + + Cancel + Cancelar + + + Save + Gravar + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> + p, li { white-space: pre-wrap; } + </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> + <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para alterar a sua imagem</p></body></html> + + + General + Geral + + + Network IDs (MSN, Jabber...) + IDs de Rede (MSN, Jabber...) + + + Advanced >> + Avançado >> + + + Fill in all your network Id to stay connected with your contacts + Preencha toda sua identificação de rede para estar conectado com os seus contactos + + + Contact + Contacto + + + Group: + Grupo: + + + Last Name: + Último Nome: + + + First Name: + Primeiro Nome: + + + Details + Detalhes + + + Web/blog: + Sítio/blog: + + + Country: + País: + + + State: + Estado: + + + City: + Cidade: + + + Gender: + Género: + + + Birth Date: + Data de Nascimento: + + + Email: + Endereço Electrónico: + + + Notes + Notas + + + Phone Numbers + Números de Telefone + + + Home phone + Telefone de casa + + + Mobile phone + Telemóvel + + + dd MMMM yyyy + dd MMMM aaaa + + + Unknown + Desconhecido + + + Male + Masculino + + + Female + Feminino + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Contas + + + Accounts Settings + Configurações de Contas + + + + QtAddAccount + + Configure your voip account + Configure a sua conta voip + + + Please tell us if your account is provided<br/>by @company@ or by another service + Por favor diga-nos se a sua conta é fornecida<br/>pelo @company@ ou por outro serviço + + + + QtAddAccountUtils + + Test + Teste + + + Audio Test Call + Chamada Teste de Áudio + + + Video Test Call + Chamada Teste de Vídeo + + + + QtAddQuteComAccount + + Login + Nome de utilizador + + + Please enter an email address. + Por favor indique um endereço electrónico. + + + Please enter your email address<br/>and your password + Por favor indique o seu endereço electrónico<br/>e a sua senha + + + @product@ - Login + @product@ - Conexão + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Por favor preencha a informação que irá<br/>permitir que o seu 'softphone' se conecte à sua<br/>conta SIP + + + Configure your SIP profile + Configure o seu perfil SIP + + + + QtAdvancedIMContactManager + + Cancel + Cancelar + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Tem certeza que deseja apagar este contacto IM? + + + + &Delete + &Apagar + + + + QtAdvancedSettings + + Advanced + Avançado + + + Advanced Settings + Configurações Avançadas + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Avançado + + + Audio + Áudio + + + Audio Settings + Definições de Áudio + + + + QtCallBar + + +(country code) number or nickname + +(código do país) telefone ou alcunha + + + + QtCallForwardSettings + + Call Forward + Reencaminhar Chamada + + + Call Forward Settings + Definições de Reencaminhamento de Chamadas + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Guardar Como + + + + QtChatLogViewer + + Account + + + + Edit Contact + Editar Contacto + + + + QtChatTabWidget + + Close chat + Fechar conversa + + + + QtChatWidget + + %1 is connected. + %1 está conectado. + + + %1 is disconnected. + %1 está desconectado. + + + send + enviar + + + Your file can not be sent: your contact must be connected on the @company@ network. + O seu ficheiro não pode ser enviado: o seu contacto tem que estar conectado na rede @company@. + + + Your contact wishes to send a file with @company@. + O seu contacto deseja enviar um ficheiro com @company@. + + + Go to %1 to install it + Vá para %1 para o instalar + + + %1 has joined the chat + %1 entrou na conversa + + + %1 has left the chat + %1 saiu da conversa + + + + QtChatWindow + + Edit Contact + Editar Contacto + + + @product@ Chat + @product@ Conversa + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Chamar SIP + + + Call land line + Chamar telefone fixo + + + Call Mobile + Chamar telemóvel + + + Call @company@ + Chamar @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Pode agora informar o seu primeiro interlocutor que fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo. O seu primeiro interlocutor será colocado em espera, enquanto o segundo interlocutor será chamado.<br> + + + Hold first interlocutor and call second one + Colocar o primeiro interlocutor em espera e chamar o segundo + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Pode agora informar o seu segundo interlocutor que fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo para iniciar a conferência. + + + Start Conference + Iniciar Conferência + + + @product@ - Proceed Conference + @product@ - Prosseguir com a Conferência + + + + QtContactList + + &Yes + &Sim + + + &No + &Não + + + Merge %1 with %2? + Misturar %1 com %2? + + + @product@ - Merge Contacts + @product@ - Juntar Contactos + + + + QtContactManager + + &Yes + &Sim + + + &No + &Não + + + Home phone + Telefone de casa + + + Mobile phone + Telemóvel + + + @product@ + @product@ + + + Edit Contact + Editar Contacto + + + Do you really want to delete this contact? + Deseja realmente apagar este contacto? + + + Start chat + Iniciar conversa + + + Delete contact + Apagar contacto + + + Call + Chamar + + + Free call + + + + Work phone + Telefone de trabalho + + + Send SMS + Enviar SMS + + + Edit contact + Editar contacto + + + Block contact + Bloquear contacto + + + Invite to conference + Convidar para conferência + + + Go to website + Vá para o sítio + + + Send file + Enviar ficheiro + + + Forward to mobile phone + Reencaminhar para telemóvel + + + + QtContactWidget + + No mobile phone number set + Sem número de telefone definido + + + No landline phone number set + Sem número de telefone fixo definido + + + Click here to call + Clique aqui para chamar + + + Click here to set a phone number + Clique aqui para definir um número de telefone + + + Click here to edit the contact + Clique aqui para editar o contato + + + Click here to send a SMS + Clique aqui para enviar uma mensagem SMS + + + Click here to start a chat + CLique aqui para iniciar uma conversa + + + Click here to start a free call + clique aqui para iniciar uma chamada gratuita + + + Click here to send a file + Clique aqui para enviar um ficheiro + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Deseja chamar o seu correio voz? + + + @product@ - Voice Mail + @product@ - Correio de Voz + + + + QtFileTransfer + + &Yes + &Sim + + + &No + &Não + + + Choose a directory + Escolha um directório + + + Overwrite File? + Substituir ficheiro? + + + A file called %1 already exists.Do you want to overwrite it? + Um ficheiro chamado %1 já existe. Deseja-o substituir? + + + File size error + Erro no tamanho do ficheiro + + + %1 exceeds the maximum authorized size. + %1 excede o tamanho máximo autorizado. + + + %1 has size 0. + %1 tem tamanho 0. + + + %1 is a directory. + %1 é um directório. + + + You can not send a directory. + Não pode enviar um directório. + + + %1 is a shortcut. + %1 é um atalho. + + + You can not send a shortcut. + Não pode enviar um atalho. + + + All Files (*.* *) + Todos os Ficheiros (*.* *) + + + Please upgrade<br> your @product@ + Por favor actualize<br> o seu @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Diga ao seu contacto<br> para actualizar<br> o @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Cancelar + + + Remove + Remover + + + Pause + Pausar + + + Starting + A iniciar + + + From: + De: + + + To: + Para: + + + Open + Abrir + + + Resume + Resumir + + + Waiting for anwser... + A aguardar uma resposta... + + + Done + Terminado + + + Failed + Falhado + + + Paused + Pausado + + + Paused by peer + Pausado pelo contacto + + + Cancelled + Cancelado + + + Cancelled by peer + Cancelado pelo contacto + + + Downloading... + A transferir... + + + Uploading... + A enviar... + + + Waiting for peer... + A aguardar pelo contacto... + + + An error occured during the file transfer + Ocorreu um erro durante a tranferência do ficheiro + + + This may be caused by : + Isto pode ser causado por: + + + Your @product@ is not up to date. Please download the latest version on + O seu @product@ não está actualizado. Por favor transfira a última versão em + + + The @company@ network may be temporarily unavailable. Please try later. + A rede @company@ pode estar temporariamente indisponível. Por favor tente mais tarde. + + + + QtGeneralSettings + + General + Geral + + + General Settings + Definições Gerais + + + + QtHistory + + Incoming call + Chamada recebida + + + Outgoing call + Chamada realizada + + + Missed call + Chamada perdida + + + Rejected call + Chamada rejeitada + + + Outgoing SMS + SMS enviado + + + Do you want to call %1? + Deseja chamar %1? + + + Chat session + Sessão de conversa + + + @product@ - Call History + @product@ - Histórico de Chamadas + + + Type + Tipo + + + Name/ID + Nome/ID + + + Date + Data + + + Duration + Duração + + + + QtHistoryWidget + + Erase this entry + Apagar esta entrada + + + Open in SMS window + Abrir na janela SMS + + + Call this peer + Chamar este contacto + + + Show chat log + Mostrar registo da conversa + + + + QtIMAccountManager + + Cancel + Cancelar + + + @product@ + @product@ + + + &Delete + &Apagar + + + Are sure you want to delete this account? + + Tem certeza que deseja apagar esta conta? + + + + + QtIMAccountMonitor + + Disconnected + Desconetado + + + Error: %1 + Erro: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Em linha + + + Invisible + Invisível + + + Away + Ausente + + + Do not disturb + Não Incomodar + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Por favor indique um nome de utilizador + + + + QtIMAccountPresenceMenuManager + + Cancel + Cancelar + + + @product@ + @product@ + + + &Delete + &Apagar + + + Online + Em linha + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Incomodar + + + Disconnect + Desconectar + + + Delete Account + Apagar Conta + + + Are sure you want to delete the account <b>%1</b>? + Tem certeza que deseja apagar a conta <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Editar O Meu Perfil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Idioma + + + Language Settings + Definições de Idioma + + + + QtLogAccount + + Invalid account + Conta inválida + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Por favor escolha um perfil usado anteriormente<br/> ou preencha as informações para se ligar a uma<br/> conta @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - Conexão + + + + QtNotificationSettings + + Incoming call (ringtone) + Chamada recebida (toque) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Chamada fechada (toque) + + + Incoming chat + Conversa recebida + + + IM account connected + Conta IM Conectada + + + IM account disconnected + Conta IM desconectada + + + Contact online + Contacto em linha + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Escolha um ficheiro de som + + + Sounds + Sons + + + + QtPhoneCall + + Status + Estado + + + Incoming Call + Chamada recebida + + + Resume + Resumir + + + Hang-up + Desligar + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Erro + + + Talking + A falar + + + Dialing + A marcar + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + A chamar + + + Redirected + Redireccionado + + + Initialization... + Inicialização... + + + Closed + Fechado + + + Hold + Em espera + + + Add contact + Adicionar contacto + + + Ca&ncel + Ca&ncelar + + + Talking - Conference + A falar - Conferência + + + Add a Contact + Adicionar Contacto + + + + QtPresenceMenuManager + + Online + Em linha + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Incomodar + + + Log off + Desconectar + + + + QtPrivacySettings + + Privacy + Privacidade + + + Privacy Settings + Definições de Privacidade + + + + QtProfileBar + + Click here to change your status + Clique aqui para alterar o seu estado + + + active + ativo + + + voicemail + correio voz + + + inactive + inativo + + + unauthorized + não autorizado + + + Set global presence to: + Definir presença global para: + + + Voice mail + Correio voz + + + + QtProfileDetails + + Advanced >> + Avançado >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Um contacto precisa ter um grupo, por favor selecione um. + + + << Simple + << Simples + + + Select your avatar + Seleccione a sua imagem + + + @product@ - No Group Selected + @product@ - Nenhum Grupo Seleccionado + + + @company@ Avatars + Imagens @company@ + + + + QtQuteCom + + &Cancel + &Cancelar + + + Conference + Conferência + + + Call + Chamar + + + Account + + + + Add a Contact + Adicionar Contacto + + + You have unfinished call(s). + Tem chamada(s) não concluída(s). + + + @product@ - Warning + @product@ - Aviso + + + Home + Pasta Pessoal + + + Are you sure you want to exit the application? + Tem certeza que deseja sair da aplicação? + + + &Exit + &Sair + + + @product@ - Call Error + @product@ - Erro de Chamada + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avançado + + + General + Geral + + + Accounts + Contas + + + Audio + Áudio + + + Call Forward + Reencaminhar Chamada + + + Language + Idioma + + + Privacy + Privacidade + + + Video + Vídeo + + + Voicemail + Correio de voz + + + security + segurança + + + Notifications + + + + + QtRenameGroup + + Bad group name + Nome de grupo inválido + + + Group name cannot be empty + O nome do grupo não pode estar vazio + + + + QtSecuritySettings + + Security + Segurança + + + Security Settings + Definições de Segurança + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Por favor indique um número de telefone. + + + Do you want to continue? + Deseja continuar? + + + Your SMS has not been sent + O seu SMS não foi enviado + + + Your SMS has been sent + O seu SMS foi enviado + + + Your message is too long. +This will send + A sua mensagem é demasiado longa. +Isto irá enviar + + + SMS. + + SMS. + + + + You can not send an empty message. + Não pode enviar uma mensagem vazia. + + + @company@ SMS service + Serviço SMS @company@ + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Actualização falhada + + + @product@ update failed to start: try to update @product@ manually + Actualização @product@ falhou ao iniciar: tente actualizar o @product@ manualmente + + + + QtStatusBar + + Not connected + Desconectado + + + Register done + Registo terminado + + + Unregister done + Remoção de registo terminada + + + Connecting + A conectar + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Estado + + + @product@ + @product@ + + + Call SIP + Chamar SIP + + + Call land line + Chamar telefone fixo + + + Call Mobile + Chamar telemóvel + + + Call @company@ + Chamar @company@ + + + Call + Chamar + + + Send SMS + Enviar SMS + + + Online + Em linha + + + Invisible + Invisível + + + Away + Ausente + + + Do Not Disturb + Não Incomodar + + + Internet Connection Error + Erro na Conexão Internet + + + Offline + Desligado + + + Connecting... + A conectar... + + + Send a SMS + Enviar SMS + + + Start a chat + Iniciar conversa + + + Place Call + Efectuar Chamada + + + Send File + Enviar Ficheiro + + + Multiple Status + Estados Múltiplos + + + Unknown Status + Estado Desconhecido + + + Quit @product@ + Sair do @product@ + + + + QtToolBar + + &Cancel + &Cancelar + + + @product@ - Proceed Conference + @product@ - Prosseguir com a Conferência + + + Edit My Profile + Editar O Meu Perfil + + + Add a Contact + Adicionar Contacto + + + Hide Unavailable Contacts + Ocultar Contactos Indisponíveis + + + Show Unavailable Contacts + Mostrar Contactos Indisponíveis + + + Hide Groups + Ocultar Grupos + + + Show Groups + Mostrar Grupos + + + You have unfinished call(s). + Tem chamada(s) não concluída(s). + + + Are you sure you want to log off? + Tem certeza que deseja desconectar? + + + &Log Off + &Desconectar + + + Disable &Video Calls + Desactivar Chamadas de &Vídeo + + + Enable &Video Calls + Activar Chamadas de &Vídeo + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>A conferência não pode ser iniciada enquanto existirem chamadas activas.</b><br><br>Finalize todas as chamadas e tente novamente. + + + @product@ - Warning + @product@ - Aviso + + + Log &Off... + &Desconectar... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Lista de contactos + + + + QtUserProfile + + Edit Contact + Editar Contacto + + + &Authorize + &Autorizar + + + &Block + &Bloquear + + + Network error. + Erro de Rede + + + @product@ - Authorization Request + @product@ - Pedido de Autorização + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Ocorreu um problema ao carregar o seu perfil. +O último perfil salvaguardado foi carregado: +pode ter perdido as alterações que efectuou + + + Your profile could not be loaded. +Choose another profile or create a new one. + Não foi possível carregar o seu perfil. +Escolha outro perfil ou crie um novo. + + + Wrong email/password entered + Endereço electrónico/senha incorretos + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Vídeo + + + Normal + Normal + + + Good + Bom + + + Very good + Muito bom + + + Excellent + Excelente + + + Video Settings + Definições de Vídeo + + + + QtVoicemailSettings + + Voicemail + Correio de voz + + + Voicemail Settings + Definições de Correio de Voz + + + + QtWebDirectory + + @product@ - Directory + @product@ - Directório + + + + QuteComConfigDialog + + Cancel + Cancelar + + + Save + Gravar + + + Title + Título + + + @product@ - Configuration + @product@ - Configuração + + + + QuteComWindow + + &Accept + &Aceitar + + + &Hidden + &Oculto + + + &Tools + &Ferramentas + + + &Help + &Ajuda + + + &Actions + &Acções + + + @company@ + @company@ + + + &Close + &Fechar + + + Dialpad + Teclado + + + @product@ + @product@ + + + Start Conference + Iniciar Conferência + + + Send SMS + Enviar SMS + + + Contacts + Contactos + + + History + Histórico + + + Clear &History + Limpar &Histórico + + + ToolBar + Barra de Ferramentas + + + Show/Hide Unavailable &Contacts + Mostrar/Ocultar &Contactos Indisponíveis + + + &Chat Sessions + Sessões de &Conversa + + + &All + &Tudo + + + &HangUp + &Desconectar + + + &Hold/Resume + &Em espera/Resumir + + + Show/Hide &Groups + Mostrar/Ocultar &Grupos + + + &Outgoing Calls + Chamadas R&ealizadas + + + &Incoming Calls + Chamadas &Recebidas + + + &Missed Calls + Chamadas &Perdidas + + + Enable/Disable &Video Calls + Activar/Desactivar Chamadas de &Vídeo + + + Short Text &Messages (SMS) + &Mensagens de Texto Curtas (SMS) + + + Rejected Calls + Chamadas Rejeitadas + + + &Contacts + &Contactos + + + &About... + &Acerca... + + + Add &Contact... + Adicionar &Contacto... + + + &Configuration... + &Configuração... + + + Send SMS... + Enviar SMS... + + + View My &Profile... + Ver O Meu &Perfil... + + + View My Profile + Ver O Meu Perfil + + + Start &Conference... + Ini&ciar Conferência... + + + &Find Contact... + &Procurar Contacto... + + + Log &Off... + &Desconectar... + + + Log Off + Desconectar + + + Show &Chat Window + Mostrar Janela de &Conversa + + + Show Chat Window + Mostrar Janela de Conversa + + + Show &File Transfer + Mostrar Transferência de &Ficheiros + + + Add Contact + Adicionar Contacto + + + View My @company@ Account... + Ver A Minha Conta @company@ + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + Fórum @company@... + + + @company@ &Wiki/FAQ... + &Wiki/FAQ @company@... + + + Learn more about @company@ Services... + Saber mais acerca dos Serviços @company@... + + + Search + Procurar + + + Find @company@ Contacts + Procurar Contactos @company@ + + + &Quit + &Sair + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Texto Debaixo dos Ícones + + + &Icons Only + Apenas &Ícones + + + Add + Adicionar + + + SMS + SMS + + + Conference + Conferência + + + + RenameGroupDialog + + Cancel + Cancelar + + + OK + OK + + + Enter the new group name: + Indique o novo nome do grupo: + + + @product@ - Rename Contact Group + @product@ - Renomear Grupo de Contacto + + + + SecuritySettings + + Form + Formulário + + + Enable call encryption + Activar encriptação de chamadas + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + O @product@ pode encriptar chamadas usando o sistema de encriptação AES 128-bits e o Diffie-Hellman para troca de chaves. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Actualize o seu perfil + + + Yahoo! ID: + ID Yahoo!: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + ID MSN: + + + SIP ID: + ID SIP: + + + ICQ ID: + ID ICQ: + + + AIM ID: + ID AIM: + + + @company@ ID: + ID @company@: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Enviar + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Clique aqui para adicionar um número de telefone + + + 0 /160 + 0 /160 + + + Enter your signature here + Indique aqui a sua assinatura + + + Signature: + Assinatura: + + + Phone number(s): + Número(s) de telefone: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Indique aqui o(s) número(s) de telefone<br>Têm que estar separados por & ou ; ou , + + + + SoftUpdateWindow + + Cancel + Cancelar + + + @product@ - Downloading update + @product@ - A transferir actualização + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulário + + + + VideoSettings + + Normal + Normal + + + Good + Bom + + + Very good + Muito bom + + + Excellent + Excelente + + + Enable video + Activar vídeo + + + Webcam Selection + Selecção Webcam + + + Webcam device: + Dispositivo webcam: + + + Webcam Preview + Previsão da Webcam + + + Connection Type + Tipo de Conexão + + + Video quality + Qualidade de vídeo + + + Down (kbit/s) + Receber (kbit/s) + + + Up (kbit/s) + Enviar (kbit/s) + + + 0 to 512 + 0 até 512 + + + 0 to 128 + 0 até 128 + + + 512 to 2048 + 512 até 2048 + + + 128 to 256 + 128 até 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + A qualidade de vídeo depende da largura de banda da sua conexão Internet + + + Make a test video call + Realizar chamada de teste de vídeo + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Vídeo + + + + VoicemailSettings + + Form + Formulário + + + Phone number of your voicemail: + Número de telefone do seu correio voz: + + + Please fill in here the information about your voicemail + Por favor preencha aqui a informação acerca do seu correio voz + + + + Wizard + + Cancel + Cancelar + + + Finish + Finalizar + + + Next > + Próximo > + + + < Back + < Anterior + + + Simple Wizard - Step %1 of %2 + Assistente Simples - Passo %1 de %2 + + + + YahooSettings + + Login: + Nome de Utilizador: + + + Password: + Senha: + + + Yahoo! Settings + Definições Yahoo! + + + Use Yahoo! Japan server + Usar servidor Japonês Yahoo! + + + Forgot your Yahoo! password? + Esqueceu a sua senha Yahoo!? + + + Get a new Yahoo! Account + Obter nova conta Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ro.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ro.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ro.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ro.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3969 @@ + + + + + AIMSettings + + Login: + Utilizator: + + + Forgot your AIM password? + V-ați uitat parola AIM? + + + Get a new AIM Account + Creați un cont AIM nou + + + Password: + Parolă: + + + AIM Settings + Setări AIM + + + + AboutWindow + + About + Despre + + + Copyright (C)2008 Mbdsys + + + + Authors + Autori + + + Close + Închide + + + 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. + Acest soft este liber; puteți să-l redistribuiți și/sau +să-l modificați respectînd termenii GNU General Public License +așa cum a fost publicată de Free Software Foundation; fie versiunea 2 +a Licenței, fie (la alegerea dv.) orice altă versiune ulterioară. + + + @product@ - About + @product@ - Despre + + + @product@, a voice over Internet phone + @product@, un telefon vocal prin internet + + + + AcceptDialog + + File Transfer + Transfer de Fișiere + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + A&cceptă + + + &Cancel + &Anulează + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Fișier: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Fișier de Primit</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Editează Profilul Meu + + + + AddAccount + + Configure your account: + Configurați-vă contul: + + + &Next + Co&ntinuă + + + Need help? + Aveți nevoie de ajutor? + + + You don't have any account ? Click here + N-aveți nici un cont? Faceți clic aici + + + &Back + Îna&poi + + + Cancel + Anulează + + + @product@ - Login + @product@ - Logare + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Configurarea Contului VOIP</span><br><br><span>Spuneți-ne dacă contul dv. este oferit<br/>de @company@ sau de un alt serviciu</span> + + + @company@ account + Cont @company@ + + + Generic SIP account + Cont SIP Generic + + + + AddIMContact + + Cancel + Anulează + + + Contact Type (protocol): + Tip de Contact (protocol): + + + Contact ID: + ID Contact: + + + Account: + Cont: + + + Enable + Activează + + + Login + Utilizator + + + Add + Adaugă + + + @product@ - Add a Contact Account + @product@ - Adaugă un Cont de Contact + + + + AddQuteComAccount + + Password: + Parolă: + + + Need help? + Ajutor + + + &Back + Îna&poi + + + Cancel + Anulează + + + @product@ - Login + @product@ - Logare + + + &Connect + &Conectează + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Logare</span><br><br><span>Introduceți adresa de poștă electronică și<br>parola</span> + + + Email Address: + E-mail: + + + Click here if you don't have a @company@ account + Clicați aici dacă nu aveți un cont @company@ + + + Forgot your @company@ password? + V-ați uitat parola @company@? + + + + AddSIPAccount + + Password: + Parolă: + + + Need help? + E nevoie de ajutor? + + + &Back + Î&napoi + + + Cancel + Anulează + + + @product@ - Login + @product@ - Logare + + + &Connect + &Conectează + + + Activate presence and chat (SIP/SIMPLE) + Activează prezența și taifasul [chat] (SIP/SIMPLE) + + + Displayname: + Nume Afișat: + + + login / username: + Utilizator: + + + Account name: + Numele Contului: + + + Proxy: + Proxy: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + Domeniu SIP: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configurați-vă profilul SIP</span><br><br><span>Completați informațiile care vor<br/>permite softfonului să se conecteze la<br/>contul dv. SIP</span> + + + Advanced + Setări Avansate + + + + AdvancedConfigWindow + + Close + Închide + + + Preference Name + Setare + + + Type + Tip + + + Value + Valoare + + + Default Value + Valoare Implicită + + + Save + Salvează + + + Status + Stare + + + @product@ - Advanced Configuration + @product@ - Configurare Avansată + + + + AdvancedSettings + + Add + Adaugă + + + Advanced Settings + Setări Avansate + + + Advanced Configuration Window + Fereastra Setărilor Avansate + + + Automatically answer incoming calls from + Răspunde automat la apelurile venite de la + + + Remove + Înlătură + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Atenție, această parte este pentru utilizatorii avansați.<br>Orice greșeală ar putea deteriora iremediabil softul. + + + + AppearanceSettings + + Toolbar + Bara de Unelte + + + &Icons && Text + &Iconițe și Text + + + Icons &Only + D&oar Iconițe + + + &Hidden + &Ascunsă + + + Chat Theme + Tema Taifasului [Chat] + + + Form + Formular + + + + AudioSettings + + Reset + Resetează + + + Audio Codecs + Codecuri Audio + + + &Input device: + Dispozitiv de &Intrare: + + + &Output device: + Disp&ozitiv de Ieșire: + + + &Ringing device: + Dispozitiv de Ala&rmă: + + + &Make a test call + &Faceți un apel de test + + + Test + Testează + + + &Advanced >> + Setări &Avansate >> + + + &Half Duplex + &Semi-Duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + Atenție, această secțiune este doar pentru utilizatorii avansați. +Orice modificare a ordinii din lista de codecuri ar putea cauza probleme la rularea @product@: e posibil chiar să nu mai puteți apela contactele dv. + + + + AvatarFrame + + Form + Formular + + + + AvatarWidget + + Form + Formular + + + + BrowserSoftUpdateWindow + + Close + Închide + + + @product@ - Update available + @product@ - Actualizare disponibilă + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + <html><head></head><body>E disponibilă o actualizare, clicați <span style=" text-decoration: underline; color:#0000ff;">aici</span> pt. a descărca versiunea nouă<br /><br />Versiune: %1<br />Mărime: %2 (MB)<br /></body></html> + + + + CallForwardSettings + + 3rd: + 3-lea: + + + 1st: + 1-ul: + + + 2nd: + 2-lea: + + + (+ country code) phone number + (+ cod de țară) nr. de telefon + + + Forward all unanswered calls to message box + Redirecționează apelurile pierdute către căsuța vocală + + + Disable call forwarding + Dezactivează redirecționarea apelurilor [call forwarding] + + + Forward all unanswered calls to following phone numbers: + Redirecționează apelurile pierdute către numerele de telefon: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + De exemplu +3314500XXXX (+33 e codul de țară și 14500XXXX e numărul de telefon) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Redirecționarea apelurilor devine activă cînd nu sînteți conectat la @company@, cînd linia dv. e ocupată sau după 20 de secunde în care nu ați răspuns la un apel primit. Puteți configura pînă la 3 redirecționări de apeluri către linii fixe, telefoane mobile sau mesagerie vocală (dacă e disponibilă) + + + + CallToaster + + Incoming Call + Apel Primit + + + Message + Mesaj + + + + ChatLogViewer + + Chat History + Istoricul Taifasului [Chat] + + + &Contact + &Contact + + + &Tools + &Unelte + + + &Help + A&jutor + + + &Actions + &Acțiuni + + + Main Toolbar + Bara de Unelte Principală + + + Call Contact + Apelează Contactul + + + Send a File + Trimite un Fișier + + + createChatConf + Inițiază Conferință + + + Show Contact Info + Arată Info despre Contact + + + blockContact + Blochează Contactul + + + &Save History As... + &Salvează Istoricul Ca... + + + actionRestartChat + Repornește Taifasul + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Contact + + + &Tools + &Unelte + + + &Actions + &Acțiuni + + + Main Toolbar + Bara de Unelte Principală + + + Call Contact + Apelează Contactul + + + Send a File + Trimite un Fișier + + + Show Contact Info + Arată Info despre Contact + + + blockContact + blochează Contactul + + + &Save History As... + &Salvează Istoricul Ca... + + + @company@ + @company@ + + + MainWindow + Fereastra Principală + + + &Edit + &Editează + + + Cu&t + &Decupează + + + Ctrl+X + Ctrl+X + + + &Copy + &Copiază + + + Ctrl+C + Ctrl+C + + + &Paste + &Lipește + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Pornește Conferință + + + &Close + Înc&hide + + + Conference + Conferință + + + + ChatRoomInviteWidget + + Chat room + Camera de Taifas + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Camera Taifasului</span></p></body></html> + + + (Conference participants) + (Participanți la Conferință) + + + &Remove + În&lătură + + + &Start + &Pornește + + + Group Name + Numele Grupului + + + &Add + &Adaugă + + + + ChatToaster + + Message + Mesaj + + + Incoming Chat + Taifas Primit + + + + ChatWidget + + Form + Formular + + + + ConferenceCallWidget + + Cancel + Anulează + + + Start + Pornește + + + Phone number 2: + Nr. de Telefon 2: + + + Phone number 1: + Nr. de Telefon 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Creează o Conferință + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferință</span><br /><br />Introduceți două numere de telefon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sau ID-uri de contacte @company@ pentru a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">crea o conferință în 3.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Conferință</span><br /><br />Introduceți două numere de telefon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sau ID-uri de contacte @company@ pentru a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">crea o conferință în 3.</p> + + + &Add >> + &Adaugă >> + + + << &Remove + << În&lătură + + + Available Contacts + Contacte Disponibile + + + &Start + &Pornește + + + Cancel + Anulează + + + + ContactGroupPopupMenu + + Remove Contact Group + Înlătură Grupul de Contacte + + + Rename Contact Group + Renumește Grupul de Contacte + + + Delete group + Șterge Grupul + + + Do you really want to delete this group? + Sigur doriți să ștergeți acest grup? + + + &Yes + &Da + + + &No + &Nu + + + + ContactList + + Contact List + Lista de Contacte + + + goupname + + + + + ContactWidget + + No mobile phone number set + N-a fost setat nici un număr de mobil + + + No landline phone number set + N-a fost setat nici un număr de tel. fix + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a edita acest contact</p></body></html> + + + + CrashReport + + Cancel + Anulează + + + Program Failure + Prăbușire a Programului + + + Send + Trimite + + + Optional Information + Informații Opționale + + + Your Mail: + E-mail: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + Lansarea @product@ a eșuat și a fost generat un fișier de diagnostic. +Acest fișier conține informații utile pt. rezolvarea problemei pe care ați întîlnit-o. +Vă mulțumim pentru contribuție. + +Echipa de Dezvoltatori @product@. + + + In order to help the developers you can complete this report. This step is optional. + Pentru a-i ajuta pe dezvoltatori, completați raportul. Această etapă este opțională. + + + Use Case Description: + Descrierea celor întîmplate (care au dus probabil la prăbușirea softului): + + + + CreditWidget + + Not Available + Indisponibil + + + Click here to change your call forward settings + Clicați aici pentru a schimba setările de redirecționare a apelurilor + + + Call forward mode: + Mod de Redirecționare: + + + Purchase call out credits + Cumpărați Credite de Apelare + + + Call Forward Method + Metodă de Redirecționare + + + Call Voice Mail + Mesagerie Vocală + + + Click here to buy @company@'s credits + Clicați aici pentru a cumpăra credite @company@ + + + + DesktopService + + Root Folder + Dosar Rădăcină + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Clicați pe itemurile ce-și schimbă culoarea pentru a trimite sunete interlocutorului dv. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Clicați aici pentru a apela mesageria dv. vocală + + + New Voice Mail: + Mesaj Vocal Nou: + + + Click here to see missed call(s) + Clicați aici pentru a vedea apelurile pierdute + + + Missed Call(s): + Apeluri Pierdute: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Descarcă + + + Upload + Încarcă + + + Click here to change your download folder + Clicați aici pentru a schimba dosarul de descărcare + + + Download folder: + Dosar de Descărcare: + + + Clean all items in the list + Curăță toate itemurile din listă + + + &Clean + &Curăță + + + @product@ - File Transfer Manager + @product@ - Manager de Transfer al Fișierelor + + + + FileTransferItem + + Cancel + Anulează + + + Form + Formular + + + Pause + Pauzează + + + <i>From:</i> + <i>De la:</i> + + + + GeneralSettings + + When I double-click on a contact + Cînd fac dublu-clic pe un contact + + + Call cell phone or land line if contact not online + Apelează telefon fix sau mobil dacă contactul e neconectat + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Stare de Inactivitate + + + minutes + minute + + + Show me as "Away" when I am inactive for: + Arată-mă ca "Absent" cînd sînt inactiv pentru: + + + When I start my computer + Cînd dau drumul la calculator + + + Automatically start @product@ + Pornește automat @product@ + + + + GoogleTalkSettings + + Login: + Utilizator: + + + Password: + Parolă: + + + GoogleTalk Settings + Setări GoogleTalk + + + Forgot your GoogleTalk password? + V-ați uitat parola GoogleTalk? + + + Get a new GoogleTalk Account + Creați un nou cont GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Anulează + + + HTTP Proxy Address: + Adresă Proxy: + + + HTTP Proxy Port Number: + Port Proxy: + + + HTTP Proxy Login: + Utilizator Proxy: + + + HTTP Proxy Password: + Parolă Proxy: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autentificare Proxy HTTP</span><br><br><span>Serverul Proxy HTTP necesită autentificare<br>Introduceți numele de utilizator și parola</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Proxy HTTP Local + + + + ICQSettings + + Login: + Utilizator: + + + Password: + Parolă: + + + ICQ Settings + Setări ICQ + + + Forgot your ICQ password? + V-ați uitat parola ICQ? + + + Get a new ICQ Account + Creați un nou cont ICQ + + + + IMAccountManager + + Close + Închide + + + Login + Utilizator + + + Add + Adaugă + + + Delete + Șterge + + + Modify + Modifică + + + Protocol + Protocol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Conturile Mele de Mesagerie Instantanee (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Anulează + + + Save + Salvează + + + IM Account Settings + Setările Contului de MI [Mesagerie Instantanee] + + + + IMContactManager + + Add + Adaugă + + + Delete + Șterge + + + Contact Type (protocol) + Tipul de Contact (protocol) + + + Click on the add button below to add a new ID + Clicați pe butonul Adaugă de mai jos pentru a adăuga un ID nou + + + Contact ID + ID Contact + + + + IMProfileWidget + + Enter your nickname here + Scrieți aici porecla pe care o folosiți + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Adăugați un cont de mesagerie instantanee (MSN, YM, AIM...) + + + Add an IM account + Adăugați un cont de MI + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a vă schimba avatarul</p></body></html> + + + + ImageSelector + + Cancel + Anulează + + + OK + OK + + + Go Up + Mergi în Sus + + + Refresh + Împrospătează + + + + JabberSettings + + Login: + Utilizator: + + + Password: + Parolă: + + + Jabber Settings + Setări Jabber + + + Connect Server: + Server de Conectare: + + + <u>Advanced Options</u> + <u>Opțiuni Avansate</u> + + + Require TLS + Necesită TLS (criptare) + + + Port: + Port: + + + Use TLS if available + Folosește TLS dacă e disponibil + + + Allow plaintext authentication over unencrypted streams + Permite autentificarea cu text-simplu pe fluxuri necriptate + + + 5222 + 5222 + + + Force old (port 5223) SSL + Forțează SSL vechi (port 5223) + + + Resource: + Resursă: + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Dacă limba dv. maternă nu este aici, știați că puteți să traduceți dv. înșivă softul? + + + More information here. + Mai multe informații aici. + + + + LogAccount + + Password: + Parolă: + + + Need help? + Aveți nevoie de ajutor? + + + Cancel + Anulează + + + Delete + Șterge + + + @product@ - Login + @product@ - Logare + + + Account: + Cont: + + + &Connect + &Conectează + + + Forgot your @company@ password? + V-ați uitat parola @company@? + + + &Modify + &Modifică + + + Configure a &New Profile + Configurați un Profil &Nou + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Logare</span><br><br><span>Alegeți un profil folosit anterior<br/> sau completați informațiile pentru a vă conecta la un<br/>cont @company@</span> + + + + MSNSettings + + Login: + Utilizator: + + + Password: + Parolă: + + + MSN Settings + Setări MSN + + + Forgot your MSN password? + V-ați uitat parola MSN? + + + Get a new MSN Account + Creați un nou cont MSN + + + Use HTTP method + Folosește metoda HTTP + + + + MainWindow + + MainWindow + Fereastra Principală + + + Command::terminate() + Oprește + + + Command::start() + Pornește + + + Accept Call + Acceptă Apelul + + + Send Chat Message + Trimite Mesaj de Taifas [Chat] + + + Make Call + Apelează + + + Hang Up + Întrerupe + + + + ManageBlockedUsersSettings + + Close + Închide + + + Unblock User + Deblochează Utilizatorul + + + Manage blocked users + Administrează Utilizatorii Blocați + + + @product@ - Manage blocked users + @product@ - Administrează utilizatorii blocați + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Am un cont @company@ + + + Create a @company@ account + Creați un cont @company@ + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + Pentru a trimite un SMS, trebuie să fiți logat la un cont<br>@company@ și să dispuneți de credite @company@. + + + + NotificationSettings + + Select the events for which a sound should be played. + Selectați evenimentele la care să se emită un sunet. + + + + NotificationSettingsItem + + Sound file + Fișier Audio + + + Find a sound file + Găsește un fișier audio + + + Play sound file + Redă fișierul audio + + + Play + Redă + + + + NotifyDialog + + File Transfer + Transfer de Fișiere + + + &Ok + &OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stare:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Supragradează [Upgrade]</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Acceptă + + + Status + Stare + + + 00:00:00 + 00:00:00 + + + Nickname + Poreclă + + + &Reject + &Respinge + + + Dialpad + Apelator + + + Audio Smileys + Acustițe (Emoticonițe Audio) + + + Communication is encrypted + Comunicarea este criptată + + + + PrivacySettings + + Manage blocked users + Administrează Utilizatorii Blocați + + + Privacy Rules + Reguli de Confidențialitate + + + Always sign in as "Invisible" (appear offline to all users) + Loghează-mă mereu ca "Invizibil" (apar ca neconectat) + + + Allow chats from + Acceptă taifasurile [chats] de la + + + Anyone + Oricine + + + Only people from my contact list + Doar persoanele din lista mea de contacte + + + Allow calls from + Acceptă apeluri de la + + + When I sign into @company@ + Cînd mă identific la serviciul @company@ + + + + ProfileDetails + + Cancel + Anulează + + + Save + Salvează + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a vă schimba avatarul</p></body></html> + + + General + Generale + + + Network IDs (MSN, Jabber...) + ID-uri de Rețea (MSN, Jabber...) + + + Advanced >> + Setări Avansate >> + + + Fill in all your network Id to stay connected with your contacts + Completați toate ID-urile de rețea pentru a sta conectat cu contactele dumneavoastră + + + Contact + Contact + + + Group: + Grup: + + + Last Name: + Nume: + + + First Name: + Prenume: + + + Details + Detalii + + + Web/blog: + Sit/Blog: + + + Country: + Țară: + + + State: + Stat/Județ: + + + City: + Oraș: + + + Gender: + Sex: + + + Birth Date: + Data Nașterii: + + + Email: + E-mail: + + + Notes + Note + + + Phone Numbers + Numere de Telefon + + + Home phone + Telefon Fix + + + Mobile phone + Telefon Mobil + + + dd MMMM yyyy + zz LLLL aaaa + + + Unknown + Necunoscut + + + Male + Bărbat + + + Female + Femeie + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Conturi + + + Accounts Settings + Setările Conturilor + + + + QtAddAccount + + Configure your voip account + Configurați-vă contul VOIP + + + Please tell us if your account is provided<br/>by @company@ or by another service + Spuneți-ne dacă contul dv. este oferit<br/>de @company@ sau de un alt serviciu + + + + QtAddAccountUtils + + Test + Testează + + + Audio Test Call + Testează Apel Audio + + + Video Test Call + Testează Apel Video + + + + QtAddQuteComAccount + + Login + Logare + + + Please enter an email address. + Introduceți o adresă de e-mail. + + + Please enter your email address<br/>and your password + Introduceți adresa de e-mail<br/>și parola dv. + + + @product@ - Login + @product@ - Conexiune + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Completați informațiile care vor<br/>permite softfonului dv. să se conecteze la<br/>contul SIP + + + Configure your SIP profile + Configurați-vă profilul SIP + + + + QtAdvancedIMContactManager + + Cancel + Anulează + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Sigur doriți să ștergeți acest contact de mesagerie instantanee? + + + + &Delete + Șter&ge + + + + QtAdvancedSettings + + Advanced + Avansate + + + Advanced Settings + Setări Avansate + + + + QtAppearanceSettings + + Me + Eu + + + Hello + Salut + + + How are you? + Ce mai faci? + + + Other + Altele + + + I am fine + Sînt bine + + + Have to go + Trebuie să plec + + + Bye + Pa + + + Appearance + Aspect + + + Appearance Settings + Setări de Aspect + + + + QtAudioSettings + + Advanced + Avansate + + + Audio + Audio + + + Audio Settings + Setări Audio + + + + QtCallBar + + +(country code) number or nickname + +(codul țării) număr sau poreclă + + + + QtCallForwardSettings + + Call Forward + Redirecționarea Apelurilor + + + Call Forward Settings + Setările Redirecționării Apelurilor + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + Pt. a configura setările de redirecționare trebuie să<BR> fiți logat cu un cont @company@. + + + + QtChatHistoryWidget + + Save As + Salvează Ca + + + + QtChatLogViewer + + Account + + + + Edit Contact + Editează Contactul + + + + QtChatTabWidget + + Close chat + Închide Taifasul [Chat] + + + + QtChatWidget + + %1 is connected. + %1 e conectat. + + + %1 is disconnected. + %1 e deconectat. + + + send + trimite + + + Your file can not be sent: your contact must be connected on the @company@ network. + Fișierul dv. nu poate fi trimis: contactul trebuie să fie conectat la rețeaua @company@. + + + Your contact wishes to send a file with @company@. + Contactul dorește să vă trimită un fișier prin @company@. + + + Go to %1 to install it + Mergeți la %1 pentru a-l instala + + + %1 has joined the chat + %1 s-a alăturat taifasului [chat] + + + %1 has left the chat + %1 a părăsit taifasul [chat] + + + + QtChatWindow + + Edit Contact + Editează Contactul + + + @product@ Chat + @product@ Taifas [Chat] + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Apelează SIP + + + Call land line + Apelează Tel. Fix + + + Call Mobile + Apelează Mobil + + + Call @company@ + Apelează @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Acum îl puteți informa pe primul dv. interlocutor că va lua parte la o conferință.</b><br><br>Cînd sînteți gata, faceți clic pe butonul de mai jos. Primul dv. interlocutor va fi pus în așteptare, între timp fiind apelat al doilea interlocutor.<br> + + + Hold first interlocutor and call second one + Puneți în așteptare primul interlocutor și apelați-l pe al doilea + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Acum îl puteți informa pe al doilea dv. interlocutor că va lua parte la o conferință.</b><br><br>Cînd sînteți gata, faceți clic pe butonul de mai jos pentru a porni conferința. + + + Start Conference + Pornește Conferința + + + @product@ - Proceed Conference + @product@ - Începe Conferința + + + + QtContactList + + &Yes + &Da + + + &No + &Nu + + + Merge %1 with %2? + Comasez %1 cu %2? + + + @product@ - Merge Contacts + @product@ - Comasează Contactele + + + + QtContactManager + + &Yes + &Da + + + &No + &Nu + + + Home phone + Telefon Fix + + + Mobile phone + Telefon Mobil + + + @product@ + @product@ + + + Edit Contact + Editează Contactul + + + Do you really want to delete this contact? + Sigur doriți să ștergeți acest contact? + + + Start chat + Pornește un Taifas [Chat] + + + Delete contact + Șterge Contactul + + + Call + Apelează + + + Free call + + + + Work phone + Tel. Servici + + + Send SMS + Trimite SMS + + + Edit contact + Editează Contactul + + + Block contact + Blochează Contactul + + + Invite to conference + Invită la Conferință + + + Go to website + Vizitează Situl + + + Send file + Trimite un Fișier + + + Forward to mobile phone + Redirecționează către mobil + + + + QtContactWidget + + No mobile phone number set + Nu are număr de telefon mobil + + + No landline phone number set + Nu are număr de telefon fix + + + Click here to call + Clicați aici ca să apelați + + + Click here to set a phone number + Clicați aici ca să adăugați un număr de telefon fix/mobil + + + Click here to edit the contact + Clicați aici ca să editați contactul + + + Click here to send a SMS + Clicați aici ca să trimiteți un SMS + + + Click here to start a chat + Clicați aici ca să porniți un taifas [chat] + + + Click here to start a free call + Clicați aici ca să inițiați un apel gratuit + + + Click here to send a file + Clicați aici ca să trimiteți un fișier + + + + QtCrashReport + + %1 Crash Report + Raport de Prăbușire %1 + + + + QtEventWidget + + Do you want to call your voice mail? + Doriți să apelați mesageria dv. vocală? + + + @product@ - Voice Mail + @product@ - Mesagerie Vocală + + + + QtFileTransfer + + &Yes + &Da + + + &No + &Nu + + + Choose a directory + Alegeți un dosar + + + Overwrite File? + Suprascriu fișierul? + + + A file called %1 already exists.Do you want to overwrite it? + Un fișier numit %1 există deja.Doriți să-l suprascrieți? + + + File size error + Eroare de mărime a fișierului + + + %1 exceeds the maximum authorized size. + %1 depășește mărimea maximă permisă. + + + %1 has size 0. + %1 are mărimea 0. + + + %1 is a directory. + %1 este un dosar. + + + You can not send a directory. + Nu puteți trimite un dosar. + + + %1 is a shortcut. + %1 este o scurtătură. + + + You can not send a shortcut. + Nu puteți trimite o scurtătură. + + + All Files (*.* *) + Toate Fișierele (*.* *) + + + Please upgrade<br> your @product@ + Actualizați<br> softul @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Spuneți-i contactului dv.<br> să-și actualizeze<br> softul @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Fișierul nu poate fi primit: trebuie să actualizați softul @product@ pentru a-l putea primi. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + încearcă să vă trimită un fișier, dar softul său @product@ trebuie actualizat pentru ca să-l primiți. Spuneți-i să descarce ultima versiune. + + + + QtFileTransferItem + + Cancel + Anulează + + + Remove + Înlătură + + + Pause + Pauzează + + + Starting + Pornesc + + + From: + De la: + + + To: + Către: + + + Open + Deschide + + + Resume + Reia + + + Waiting for anwser... + Aștept răspunsul... + + + Done + Gata + + + Failed + Eșuat + + + Paused + Pauzat + + + Paused by peer + Pauzat de partener + + + Cancelled + Anulat + + + Cancelled by peer + Anulat de partener + + + Downloading... + Descarc... + + + Uploading... + Încarc... + + + Waiting for peer... + Aștept după partener... + + + An error occured during the file transfer + S-a produs o eroare în timpul transferului de fișiere + + + This may be caused by : + Aceasta poate fi cauzată de: + + + Your @product@ is not up to date. Please download the latest version on + Softul dv. @product@ nu este actualizat. Descărcați ultima versiune de la + + + The @company@ network may be temporarily unavailable. Please try later. + Rețeaua @company@ nu este disponibilă pe moment. Reîncercați mai tîrziu. + + + + QtGeneralSettings + + General + Generale + + + General Settings + Setări Generale + + + + QtHistory + + Incoming call + Apel Primit + + + Outgoing call + Apel Efectuat + + + Missed call + Apel Pierdut + + + Rejected call + Apel Respins + + + Outgoing SMS + SMS Trimis + + + Do you want to call %1? + Doriți să apelați pe %1? + + + Chat session + Sesiune de Taifas [Chat] + + + @product@ - Call History + @product@ - Istoricul Apelurilor + + + Type + Tip + + + Name/ID + Nume/ID + + + Date + Dată + + + Duration + Durată + + + + QtHistoryWidget + + Erase this entry + Șterge această intrare + + + Open in SMS window + Deschide în fereastra SMS + + + Call this peer + Apelează acest partener + + + Show chat log + Arată jurnalul taifasului [log] + + + + QtIMAccountManager + + Cancel + Anulează + + + @product@ + @product@ + + + &Delete + Șter&ge + + + Are sure you want to delete this account? + + Sigur doriți să ștergeți acest cont? + + + + + QtIMAccountMonitor + + Disconnected + Neconectat + + + Error: %1 + Eroare: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Conectat + + + Invisible + Invizibil + + + Away + Absent + + + Do not disturb + Ocupat + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Introduceți un nume de utilizator + + + + QtIMAccountPresenceMenuManager + + Cancel + Anulează + + + @product@ + @product@ + + + &Delete + Șter&ge + + + Online + Conectat + + + Invisible + Invizibil + + + Away + Absent + + + Do Not Disturb + Ocupat + + + Disconnect + Deconectează + + + Delete Account + Șterge Contul + + + Are sure you want to delete the account <b>%1</b>? + Sigur doriți să ștergeți contul <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Editează Profilul Meu + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Limbă + + + Language Settings + Setări de Limbă + + + + QtLogAccount + + Invalid account + Cont invalid + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Alegeți un profil utilizat anterior<br/> sau completați informațiile pentru a vă conecta la<br/> contul @company@ + + + + QtLoginDialog + + @product@ - Login + @product@ - Conexiune + + + + QtNotificationSettings + + Incoming call (ringtone) + Apel Primit (rington) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Apel Terminat (ton de închidere) + + + Incoming chat + Taifas Primit + + + IM account connected + Cont de MI (mesagerie instantanee) conectat + + + IM account disconnected + Cont de MI (mesagerie instantanee) deconectat + + + Contact online + Contactul e conectat + + + Notifications + Notificări + + + Notifications Settings + Setările Notificărilor + + + + QtNotificationSettingsItem + + Choose a sound file + Alegeți un fișier audio + + + Sounds + Sunete + + + + QtPhoneCall + + Status + Stare + + + Incoming Call + Apel Primit + + + Resume + Reia + + + Hang-up + Întrerupe + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Eroare + + + Talking + Se vorbește + + + Dialing + Se apelează + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Sună + + + Redirected + Redirecționat + + + Initialization... + Inițializare... + + + Closed + Închis + + + Hold + Suspendă + + + Add contact + Adaugă Contact + + + Ca&ncel + A&nulează + + + Talking - Conference + Se Vorbește - Conferință + + + Add a Contact + Adaugă Contact + + + + QtPresenceMenuManager + + Online + Conectat + + + Invisible + Invizibil + + + Away + Absent + + + Do Not Disturb + Ocupat + + + Log off + Deloghează + + + + QtPrivacySettings + + Privacy + Confidențialitate + + + Privacy Settings + Setări de Confidențialitate + + + + QtProfileBar + + Click here to change your status + Clicați aici pentru a vă schimba starea + + + active + activ + + + voicemail + mesagerie vocală + + + inactive + inactiv + + + unauthorized + neautorizat + + + Set global presence to: + Setează Prezența Globală: + + + Voice mail + Mesagerie Vocală + + + + QtProfileDetails + + Advanced >> + Avansat >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + Un contact trebuie să aparțină unui grup, setați un grup. + + + << Simple + << Simplu + + + Select your avatar + Alegeți un avatar + + + @product@ - No Group Selected + @product@ - Nici Un Grup Selectat + + + @company@ Avatars + @company@ Avataruri + + + + QtQuteCom + + &Cancel + &Anulează + + + Conference + Conferință + + + Call + Apelează + + + Account + + + + Add a Contact + Adaugă Contact + + + You have unfinished call(s). + Aveți apeluri în desfășurare. + + + @product@ - Warning + @product@ - Avertisment + + + Home + Acasă + + + Are you sure you want to exit the application? + Sigur doriți să părăsiți programul? + + + &Exit + &Ieși + + + @product@ - Call Error + @product@ - Eroare de Apelare + + + Please hold all the phone calls before placing a new one + Puneți în așteptare toate apelurile telefonice înainte de a porni unul nou + + + Can't place a call, you are not connected + Nu se poate efectua apelul, nu sînteți conectat + + + You must enter a phone number + Trebuie să introduceți un număr de telefon + + + An error has occured trying to place the call + A apărut o eroare în timpul încercării de apelare + + + + QtQuteComConfigDialog + + Advanced + Avansate + + + General + Generale + + + Accounts + Conturi + + + Audio + Audio + + + Call Forward + Redirecționarea Apelurilor + + + Language + Limbă + + + Privacy + Confidențialitate + + + Video + Video + + + Voicemail + Mesagerie Vocală + + + security + securitate + + + Notifications + Notificări + + + + QtRenameGroup + + Bad group name + Nume de grup incorect + + + Group name cannot be empty + Numele grupului nu poate lipsi + + + + QtSecuritySettings + + Security + Securitate + + + Security Settings + Setări de Securitate + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Completați un număr de telefon. + + + Do you want to continue? + Doriți să continuați? + + + Your SMS has not been sent + SMS-ul dv. nu a fost trimis + + + Your SMS has been sent + SMS-ul dv. a fost trimis + + + Your message is too long. +This will send + Mesajul dv. e prea lung. +Se va trimite + + + SMS. + + SMS. + + + You can not send an empty message. + Nu puteți trimite un mesaj gol. + + + @company@ SMS service + Serviciu de SMS @company@ + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Actualizare eșuată + + + @product@ update failed to start: try to update @product@ manually + Actualizarea @product@ nu a putut porni: încercați să actualizați manual @product@ + + + + QtStatusBar + + Not connected + Neconectat + + + Register done + Înregistrare realizată + + + Unregister done + Dezînregistrare realizată + + + Connecting + Conectez + + + Output volume is muted + Volumul audio de ieșire e amuțit + + + Output volume is 0 + Volumul audio de ieșire e 0 + + + Click to adjust output volume + Clicați pentru a ajusta volumul audio de ieșire + + + Input volume is muted + Volumul audio de intrare e amuțit + + + Input volume is 0 + Volumul audio de intrare e 0 + + + Click to adjust input volume + Clicați pentru a ajusta volumul audio de intrare + + + An error occured: Server error. + A apărut o eroare: Eroare de server. + + + An error occured: Timeout. + A apărut o eroare: Expirare. + + + An error occured: Authentication error. + A apărut o eroare: Eroare de autentificare. + + + + QtSystray + + Status + Stare + + + @product@ + @product@ + + + Call SIP + Apelează SIP + + + Call land line + Apelează Tel. Fix + + + Call Mobile + Apelează Mobil + + + Call @company@ + Apelează @company@ + + + Call + Apelează + + + Send SMS + Trimite SMS + + + Online + Conectat + + + Invisible + Invizibil + + + Away + Absent + + + Do Not Disturb + Ocupat + + + Internet Connection Error + Eroare a Conexiunii la Internet + + + Offline + Neconectat + + + Connecting... + În curs de conectare... + + + Send a SMS + Trimite un SMS + + + Start a chat + Pornește un Taifas [Chat] + + + Place Call + Apelează + + + Send File + Trimite un Fișier + + + Multiple Status + Stări Multiple + + + Unknown Status + Stare Necunoscută + + + Quit @product@ + Ieși + + + + QtToolBar + + &Cancel + &Anulează + + + @product@ - Proceed Conference + @product@ - Începe Conferința + + + Edit My Profile + Editează Profilul Meu + + + Add a Contact + Adaugă Contact + + + Hide Unavailable Contacts + Ascunde Contactele Nedisponibile + + + Show Unavailable Contacts + Arată Contactele Nedisponibile + + + Hide Groups + Ascunde Grupurile + + + Show Groups + Arată Grupurile + + + You have unfinished call(s). + Aveți apeluri în desfășurare. + + + Are you sure you want to log off? + Sigur doriți să vă delogați? + + + &Log Off + De&loghează + + + Disable &Video Calls + Dezactivează Apelurile &Video + + + Enable &Video Calls + Activează Apelurile &Video + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Conferința nu poate fi pornită atîta timp cît există apeluri active.</b><br><br>Încheiați apelurile și reîncercați. + + + @product@ - Warning + @product@ - Avertisment + + + Log &Off... + Del&oghează... + + + Log &On... + L&oghează... + + + + QtTreeViewDelegate + + Contacts list + Lista de Contacte + + + + QtUserProfile + + Edit Contact + Editează Contactul + + + &Authorize + &Autorizează + + + &Block + &Blochează + + + Network error. + Eroare de rețea. + + + @product@ - Authorization Request + @product@ - Solicitare de Autorizare + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + A apărut o problemă la încărcarea profilului dv. +Ca urmare a fost încărcat ultimul profil salvgardat: +e posibil să fi pierdut ultimele modificări făcute + + + Your profile could not be loaded. +Choose another profile or create a new one. + Profilul dv. nu poate fi încărcat. +Alegeți un alt profil sau creați unul nou. + + + Wrong email/password entered + E-mail/Parola introduse sînt incorecte + + + Wrong login/password entered + Utilizator sau parolă incorecte + + + Connection error + Eroare de conectare + + + Unexpected error (code: %1 + Eroare neașteptată (cod: %1 + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normală + + + Good + Bună + + + Very good + Foarte Bună + + + Excellent + Excelentă + + + Video Settings + Setări Video + + + + QtVoicemailSettings + + Voicemail + Mesagerie Vocală + + + Voicemail Settings + Setările Mesageriei Vocale + + + + QtWebDirectory + + @product@ - Directory + @product@ - Catalog + + + + QuteComConfigDialog + + Cancel + Anulează + + + Save + Salvează + + + Title + Titlu + + + @product@ - Configuration + @product@ - Configurare + + + + QuteComWindow + + &Accept + &Acceptă + + + &Hidden + A&scuns + + + &Tools + &Unelte + + + &Help + A&jutor + + + &Actions + &Acțiuni + + + @company@ + @company@ + + + &Close + Înc&hide Fereastra + + + Dialpad + Apelator + + + @product@ + @product@ + + + Start Conference + Pornește Conferința + + + Send SMS + Trimite un SMS + + + Contacts + Contacte + + + History + Istoric + + + Clear &History + Curăță &Istoricul + + + ToolBar + Bara de Unelte + + + Show/Hide Unavailable &Contacts + Arată/Ascunde &Contactele Indisponibile + + + &Chat Sessions + Sesiuni de &Taifas + + + &All + &Tot + + + &HangUp + Între&rupe + + + &Hold/Resume + &Pauzează/Reia + + + Show/Hide &Groups + Arată/Ascunde &Grupurile + + + &Outgoing Calls + Apeluri &Efectuate + + + &Incoming Calls + Apeluri Pr&imite + + + &Missed Calls + Apeluri &Pierdute + + + Enable/Disable &Video Calls + Activează/Dezactivează Apelurile &Video + + + Short Text &Messages (SMS) + Serviciul de &Mesaje Scurte (SMS) + + + Rejected Calls + Apeluri Respinse + + + &Contacts + &Contacte + + + &About... + &Despre + + + Add &Contact... + Adaugă &Contact + + + &Configuration... + &Configurație... + + + Send SMS... + Trimite SMS... + + + View My &Profile... + Arată &Profilul Meu... + + + View My Profile + Arată Profilul Meu + + + Start &Conference... + Inițiază o &Conferință... + + + &Find Contact... + &Găsește Contactul... + + + Log &Off... + Del&oghează... + + + Log Off + Deloghează + + + Show &Chat Window + Arată Fereastra de &Taifas [Chat] + + + Show Chat Window + Arată Fereastra de Taifas [Chat] + + + Show &File Transfer + Arată Transferul de &Fișiere + + + Add Contact + Adaugă Contact + + + View My @company@ Account... + Arată Contul Meu @company@... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + &Forumul @company@... + + + @company@ &Wiki/FAQ... + &Wiki/Întrebări Frecvente @company@... + + + Learn more about @company@ Services... + Informații despre @company@... + + + Search + Caută + + + Find @company@ Contacts + Găsește Contacte @company@ + + + &Quit + &Ieși + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Text Sub Iconițe + + + &Icons Only + Doar &Iconițe + + + Add + Adaugă + + + SMS + SMS + + + Conference + Conferință + + + + RenameGroupDialog + + Cancel + Anulează + + + OK + OK + + + Enter the new group name: + Introduceți numele grupului nou: + + + @product@ - Rename Contact Group + @product@ - Renumește Grupul de Contacte + + + + SecuritySettings + + Form + Formular + + + Enable call encryption + Activează criptarea apelurilor + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ poate cripta apelurile folosind cifrul AES 128-biți și protocolul Diffie-Hellman pentru schimbul de chei. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + Notă: Contactele dv. trebuie să activeze această opțiune pentru ca apelul să fie criptat (cifrat). Pentru a ști dacă apelul este într-adevăr criptat, verificați la partea de jos a ferestrei @product@ : cînd apelul e criptat o iconiță cu un "lacăt" apare pe tot timpul duratei ei. + + + + SimpleIMContactManager + + Update your profile + Actualizați profilul + + + Yahoo! ID: + ID Yahoo!: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + ID MSN (Live): + + + SIP ID: + ID SIP: + + + ICQ ID: + ID ICQ: + + + AIM ID: + ID AIM: + + + @company@ ID: + ID @company@: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Trimite + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Clicați aici pentru a adăuga un nr. de telefon + + + 0 /160 + 0 /160 + + + Enter your signature here + Introduceți aici semnătura pe care o aveți + + + Signature: + Semnătură: + + + Phone number(s): + Numere de Telefon: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Introduceți aici numerele de telefon<br>Ele trebuie separate prin simbolurile & sau ; sau , + + + + SoftUpdateWindow + + Cancel + Anulează + + + @product@ - Downloading update + @product@ - Descarc actualizarea + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + Descarc actualizarea @product@... + +Versiune: %1 +Adresă: %2 +Mărime: %3 (MB) +Viteză: %4 (kB/s) + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formular + + + + VideoSettings + + Normal + Normală + + + Good + Bună + + + Very good + Foarte Bună + + + Excellent + Excelentă + + + Enable video + Activează transmisia video + + + Webcam Selection + Selectarea Videocamerei + + + Webcam device: + Videocameră: + + + Webcam Preview + Previzualizează Videocamera + + + Connection Type + Tipul de Conexiune + + + Video quality + Calitate Video + + + Down (kbit/s) + Descărcare (kbps) + + + Up (kbit/s) + Încărcare (kbps) + + + 0 to 512 + 0 la 512 + + + 0 to 128 + 0 la 128 + + + 512 to 2048 + 512 la 2048 + + + 128 to 256 + 128 la 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Calitatea imaginii video va depinde de lățimea de bandă disponibilă + + + Make a test video call + Faceți un apel video de test + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cînd utilizați setarea pentru prima dată e recomandat să selectați calitatea video normală, apoi puteți încerca și alte variante pentru a o găsi pe cea mai potrivită.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vizitați <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> pentru a afla lățimea de bandă a conexiunii dv. la internet.</p></body></html> + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Formular + + + Phone number of your voicemail: + Nr. de telefon al mesageriei dv. vocale: + + + Please fill in here the information about your voicemail + Completați aici informațiile despre mesageria vocală [voice mail] + + + + Wizard + + Cancel + Anulează + + + Finish + Finalizează + + + Next > + Continuă > + + + < Back + < Înapoi + + + Simple Wizard - Step %1 of %2 + Vrăjitor Simplu - Etapa %1 din %2 + + + + YahooSettings + + Login: + Utilizator: + + + Password: + Parolă: + + + Yahoo! Settings + Setări Yahoo! + + + Use Yahoo! Japan server + Folosește server Yahoo! din Japonia + + + Forgot your Yahoo! password? + V-ați uitat parola Yahoo! ? + + + Get a new Yahoo! Account + Creați un nou cont Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ru.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ru.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ru.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_ru.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4088 @@ + + + + + AIMSettings + + Login: + Имя: + + + Forgot your AIM password? + Забыли Ваш AIM пароль? + + + Get a new AIM Account + Получить новую учётную запись AIM + + + Password: + Пароль: + + + AIM Settings + Настройки AIM + + + + AboutWindow + + About + О программе + + + Copyright (C)2008 Mbdsys + + + + Authors + Разработчики + + + Close + Закрыть + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Передача файлов + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Принять + + + &Cancel + &Отмена + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Собеседник: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Имя файла: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Передаваемый файл</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Редактировать мою учётную запись + + + + AddAccount + + Configure your account: + Настроить Вашу учетную запись: + + + &Next + &Далее + + + Need help? + Требуется помощь? + + + You don't have any account ? Click here + Если у вас нет аккаунта, то нажмите сюда + + + &Back + &Назад + + + Cancel + Отмена + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Отмена + + + Contact Type (protocol): + Протокол: + + + Contact ID: + Идентификатор собеседника: + + + Account: + Учетная запись: + + + Enable + Включено + + + Login + Учётная запись + + + Add + Добавить + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Пароль: + + + Need help? + Требуется помощь? + + + &Back + &Назад + + + Cancel + Отмена + + + @product@ - Login + + + + + &Connect + &Подключиться + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Логин</span><br><br><span>e-mail<br>и пароль</span> + + + Email Address: + Адрес электронной почты: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Пароль: + + + Need help? + Требуется помощь? + + + &Back + &Назад + + + Cancel + Отмена + + + @product@ - Login + + + + + &Connect + &Подключиться + + + Activate presence and chat (SIP/SIMPLE) + Активировать присутствие и чат(SIP/SIMPLE) + + + Displayname: + Псевдоним + + + login / username: + Логин + + + Account name: + Учетное имя: + + + Proxy: + Прокси: + + + : + : + + + Server: + Сервер: + + + SIP Domain / Realm: + SIP Domain / Realm: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + Advanced + Дополнительные настройки + + + + AdvancedConfigWindow + + Close + Закрыть + + + Preference Name + Название Опции + + + Type + Шрифт + + + Value + Значения + + + Default Value + Значение по умолчанию + + + Save + Сохранить + + + Status + Состояние + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Добавить + + + Advanced Settings + Расширенные настройки + + + Advanced Configuration Window + Окно расширенных настроек + + + Automatically answer incoming calls from + Автоматически отвечеть на входящие звонки от + + + Remove + Убрать + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Внимание! Эти настройки только для опытных пользователей.<br>Любая ошибка может привести к некорректной работе программы. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Область + + + + AudioSettings + + Reset + Восстановить + + + Audio Codecs + Звуковые кодеки + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Область + + + + AvatarWidget + + Form + Область + + + + BrowserSoftUpdateWindow + + Close + Закрыть + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3-ий + + + 1st: + 1-ый + + + 2nd: + 2-ой + + + (+ country code) phone number + (+ код страны) телефонный номер + + + Forward all unanswered calls to message box + Показывать все не принятые звонки в окне сообщений + + + Disable call forwarding + Отключить перенаправление звонков + + + Forward all unanswered calls to following phone numbers: + Переадресовать все не принятые звонки на следующие телефонные номера: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Например +3314500XXXX (+33 код страны, а 14500XXXX номер телефона) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Входящий Звонок + + + Message + Текст + + + + ChatLogViewer + + Chat History + Журнал разговоров + + + &Contact + &Собеседник + + + &Tools + &Инструменты + + + &Help + Справка (&H) + + + &Actions + &Действия + + + Main Toolbar + Главная панель инструментов + + + Call Contact + Позвонить Собеседнику + + + Send a File + Послать файл + + + createChatConf + создать настройку чата + + + Show Contact Info + Показать информацию о собеседнике + + + blockContact + заблокировать собеседника + + + &Save History As... + &Сохранить Историю Разговора Как... + + + actionRestartChat + Перезапустить чат + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Собеседник + + + &Tools + &Инструменты + + + &Actions + &Действия + + + Main Toolbar + Главная панель инструментов + + + Call Contact + Позвонить Собеседнику + + + Send a File + Послать файл + + + Show Contact Info + Показать информацию о собеседнике + + + blockContact + заблокировать собеседника + + + &Save History As... + &Сохранить Историю Разговора Как... + + + @company@ + + + + + MainWindow + Главное Окно + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + Закрыть + + + Conference + Конференция + + + + ChatRoomInviteWidget + + Chat room + Комната для разговора + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Комната для разговора</span></p></body></html> + + + (Conference participants) + (Участники конференции) + + + &Remove + Удалить + + + &Start + З&апуск + + + Group Name + Имя группы + + + &Add + Д&обавить + + + + ChatToaster + + Message + Текст + + + Incoming Chat + Приглашение к текстовому общению + + + + ChatWidget + + Form + Область + + + + ConferenceCallWidget + + Cancel + Отмена + + + Start + Включить + + + Phone number 2: + Второй телефонный номер: + + + Phone number 1: + Первый телефонный номер: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + З&апуск + + + Cancel + Отмена + + + + ContactGroupPopupMenu + + Remove Contact Group + Удалить Группу Собеседников + + + Rename Contact Group + Переименовать Группу Собеседников + + + Delete group + Удалить группу + + + Do you really want to delete this group? + Вы действительно хотите удалить группу? + + + &Yes + &Да + + + &No + &Нет + + + + ContactList + + Contact List + Список контактов + + + goupname + + + + + ContactWidget + + No mobile phone number set + Номер мобильного телефона не задан + + + No landline phone number set + Номер стационарного телефона не задан + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Отмена + + + Program Failure + Сбой Программы + + + Send + Отправить + + + Optional Information + Необязательная информация + + + Your Mail: + Адрес Вашей электронной почты: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Не доступен + + + Click here to change your call forward settings + Нажмите сюда для изменения Ваших настроек по перенаправлению звонков + + + Call forward mode: + Режим перенаправления звонков: + + + Purchase call out credits + Купить кредиты для исходящих звонков + + + Call Forward Method + Способ перенаправления звонков + + + Call Voice Mail + Прослушать Голосовую Почту + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Корневой каталог + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Click on the various color changing items to send sounds to your interlocutor. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Нажмите здесь, чтобы получить Вашу голосовую почту + + + New Voice Mail: + Новое Голосовое Сообщение: + + + Click here to see missed call(s) + Нажмите здесь, чтобы увидеть пропущенные звонки + + + Missed Call(s): + Пропущенные Звонки: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Загрузить + + + Upload + Закачать + + + Click here to change your download folder + Поменять папку для закачки + + + Download folder: + Папка для записи файлов: + + + Clean all items in the list + Очистить всё + + + &Clean + &Очистить + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Отмена + + + Form + Область + + + Pause + │П│а│у│з│а + + + <i>From:</i> + <i>От:</i> + + + + GeneralSettings + + When I double-click on a contact + При двойном щелчке на собеседника + + + Call cell phone or land line if contact not online + Позвонить на мобильный или стационарный телефон, если собеседник не в сети + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Статус бездействия + + + minutes + минут(ы) + + + Show me as "Away" when I am inactive for: + Перейти в состояние "Отсутствует" при бездействии в течении: + + + When I start my computer + При запуске компьютера + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Имя: + + + Password: + Пароль: + + + GoogleTalk Settings + Настройки GoogleTalk + + + Forgot your GoogleTalk password? + Забыли Ваш GoogleTalk пароль? + + + Get a new GoogleTalk Account + Создать новую учётную запись GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Отмена + + + HTTP Proxy Address: + Адресс HTTP Прокси Сервера: + + + HTTP Proxy Port Number: + Номер порта HTTP Прокси Сервера: + + + HTTP Proxy Login: + Учётная запись HTTP Прокси Сервера: + + + HTTP Proxy Password: + Пароль HTTP Прокси Сервера: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Прокси Антентификация</span><br><br><span>Ваш локальный HTTP прокси сервер использует аутентификацию<br>Пожалуйста введите вашу учётную запись и пароль</span> + + + OK + Да + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Имя: + + + Password: + Пароль: + + + ICQ Settings + Настройки ICQ + + + Forgot your ICQ password? + Забыли пароль? + + + Get a new ICQ Account + Получить новый ICQ аккаунт + + + + IMAccountManager + + Close + Закрыть + + + Login + Учётная запись + + + Add + Добавить + + + Delete + ~Удалить + + + Modify + Изменять + + + Protocol + Протокол + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Отмена + + + Save + Сохранить + + + IM Account Settings + Настройки учётной записи IM + + + + IMContactManager + + Add + Добавить + + + Delete + ~Удалить + + + Contact Type (protocol) + Протокол + + + Click on the add button below to add a new ID + Нажмите на кнопку находящуюся ниже для добавления нового Идентификатора + + + Contact ID + Идентификатор Собеседника + + + + IMProfileWidget + + Enter your nickname here + Введите Ваше прозвище + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Добавить аккаунт(ICQ,MSN,Jabber) + + + Add an IM account + Добавить IM аккаунт + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Отмена + + + OK + Да + + + Go Up + Вверх + + + Refresh + Обновить + + + + JabberSettings + + Login: + Имя: + + + Password: + Пароль: + + + Jabber Settings + Настройки Jabber + + + Connect Server: + Соединятся с Сервером: + + + <u>Advanced Options</u> + <u>Дополнительные Свойства</u> + + + Require TLS + Требовать TLS + + + Port: + Порт: + + + Use TLS if available + Использовать TLS, если доступно + + + Allow plaintext authentication over unencrypted streams + Разрешить использование не шифрованного текста через не зашифрованный поток, для аутентификации + + + 5222 + 5222 + + + Force old (port 5223) SSL + Принудительно использовать старый (порт 5223) SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Если ваш язык отсутствует, то вы можете нам помочь в переводе + + + More information here. + Подробнее + + + + LogAccount + + Password: + Пароль: + + + Need help? + Требуется помощь? + + + Cancel + Отмена + + + Delete + ~Удалить + + + @product@ - Login + + + + + Account: + Учетная запись: + + + &Connect + &Подключиться + + + Forgot your @company@ password? + + + + + &Modify + &Изменить + + + Configure a &New Profile + Создать новый профайл + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Имя: + + + Password: + Пароль: + + + MSN Settings + Настройки MSN + + + Forgot your MSN password? + Забыли Ваш MSN пароль? + + + Get a new MSN Account + Получить новую учётную запись MSN + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Главное Окно + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Принять Звонок + + + Send Chat Message + Послать Текстовое Сообщение + + + Make Call + Позвонить + + + Hang Up + Повесить трубку + + + + ManageBlockedUsersSettings + + Close + Закрыть + + + Unblock User + Разблокировать пользователя + + + Manage blocked users + Управление заблокированными пользователями + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Выберите события, для которых должен быть звук + + + + NotificationSettingsItem + + Sound file + Звуковой файл + + + Find a sound file + Найти звуковой файл + + + Play sound file + Проиграть звуковой файл + + + Play + Воспроизвести + + + + NotifyDialog + + File Transfer + Передача файлов + + + &Ok + OK + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Статус:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Принять + + + Status + Состояние + + + 00:00:00 + 00:00:00 + + + Nickname + Ник + + + &Reject + &Отклонить + + + Dialpad + Номеронабиратель + + + Audio Smileys + Аудио Улыбки + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Управление заблокированными пользователями + + + Privacy Rules + Правила Конфиденциальности + + + Always sign in as "Invisible" (appear offline to all users) + Всегда подключаться как "Невидимый" (не в сети для всех пользователей) + + + Allow chats from + Разрешить текстовые сообщения от + + + Anyone + Всех + + + Only people from my contact list + Только людям из моего списка собеседников + + + Allow calls from + Разрешить звонки от + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Отмена + + + Save + Сохранить + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + Главное + + + Network IDs (MSN, Jabber...) + Идентификаторы сетей(MSN, Jabber...) + + + Advanced >> + Дополнительно >> + + + Fill in all your network Id to stay connected with your contacts + Находиться в соединении с Вашими собеседниками, для всех Ваших идентификаторов сетей + + + Contact + Собеседник + + + Group: + Группа: + + + Last Name: + Фамилия: + + + First Name: + Имя: + + + Details + Дополнительно + + + Web/blog: + Страничка/Блог: + + + Country: + Страна: + + + State: + Регион: + + + City: + Город: + + + Gender: + Пол: + + + Birth Date: + День Рождения: + + + Email: + E-Mail: + + + Notes + &Заметки + + + Phone Numbers + Телефонные номера + + + Home phone + Домашний телефон + + + Mobile phone + Мобильный телефон + + + dd MMMM yyyy + день месяц год + + + Unknown + не указанный + + + Male + Мужской + + + Female + Женский + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Учетные записи + + + Accounts Settings + Настройка Аккаунта + + + + QtAddAccount + + Configure your voip account + Настройте ваш voip аккаунт + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Учётная запись + + + Please enter an email address. + Введите e-mail + + + Please enter your email address<br/>and your password + Пожалуйста введите адрес Вашей электронной почты<br/> и Ваш пароль + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Пожалуйста, заполните информацию + + + Configure your SIP profile + Настройте ваш SIP профайл + + + + QtAdvancedIMContactManager + + Cancel + Отмена + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Удалить + + + + QtAdvancedSettings + + Advanced + Дополнительные настройки + + + Advanced Settings + Расширенные настройки + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Дополнительные настройки + + + Audio + Аудио + + + Audio Settings + Аудио настройки + + + + QtCallBar + + +(country code) number or nickname + +(код страны) номер или прозвище + + + + QtCallForwardSettings + + Call Forward + Перенаправление звонка + + + Call Forward Settings + Настройки переадресации звонков + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Сохранить как + + + + QtChatLogViewer + + Account + + + + Edit Contact + Редактировать контакт + + + + QtChatTabWidget + + Close chat + Закрыть текстовую беседу + + + + QtChatWidget + + %1 is connected. + %1 подсоединено. + + + %1 is disconnected. + %1 отсоединён. + + + send + отправлено + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Редактировать контакт + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Звонок на SIP + + + Call land line + Звонок на стационарный телефон + + + Call Mobile + Звонок на мобильный телефон + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + Hold first interlocutor and call second one + Позвонить второму собеседнику и поставить первого в очередь задержки + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + Start Conference + Начать конференцию + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Да + + + &No + &Нет + + + Merge %1 with %2? + Соединить %1 с %2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Да + + + &No + &Нет + + + Home phone + Домашний телефон + + + Mobile phone + Мобильный телефон + + + @product@ + + + + + Edit Contact + Редактировать контакт + + + Do you really want to delete this contact? + Вы на самом деле хотите удалить собеседника? + + + Start chat + Начать текстовое общение + + + Delete contact + Удалить собеседника + + + Call + Позвонить + + + Free call + + + + Work phone + Рабочий телефон + + + Send SMS + Отправить SMS + + + Edit contact + Редактировать запись о собеседнике + + + Block contact + Заблокировать собеседника + + + Invite to conference + Пригласить на конференцию + + + Go to website + Перейти на веб страницу + + + Send file + Послать файл + + + Forward to mobile phone + Перенапраивить на мобильный телефон + + + + QtContactWidget + + No mobile phone number set + Номер мобильного телефона не задан + + + No landline phone number set + Номер стационарного телефона не задан + + + Click here to call + Нажмите здесь, чтобы совершить звонок + + + Click here to set a phone number + Нажмите сдесь, чтобы установить номер телефона + + + Click here to edit the contact + Нажмите здесь для редактирования данных собеседника + + + Click here to send a SMS + Нажмите здесь для отправки SMS + + + Click here to start a chat + Нажмите здесь для начала текстового общения + + + Click here to start a free call + Нажмите здесь для начала бесплатного звонка + + + Click here to send a file + Нажмите здесь для отправки файла + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Хотите ли вы прослушать Вашу голосовую почту? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Да + + + &No + &Нет + + + Choose a directory + Выбор каталога + + + Overwrite File? + Перезаписать Файл? + + + A file called %1 already exists.Do you want to overwrite it? + Файл с названием %1 уже существует. Хотите ли вы перезаписать его? + + + File size error + Ошибка в размере файла + + + %1 exceeds the maximum authorized size. + %1 превышает максимально допустимый размер. + + + %1 has size 0. + %1 имеет размер 0. + + + %1 is a directory. + %1 папка. + + + You can not send a directory. + Вы не можете отослать папку. + + + %1 is a shortcut. + %1 ярлык. + + + You can not send a shortcut. + Вы не можете послать ярлык. + + + All Files (*.* *) + Все файлы + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Отмена + + + Remove + Убрать + + + Pause + │П│а│у│з│а + + + Starting + Идет запуск + + + From: + Отправитель: + + + To: + Получатель: + + + Open + &Открыть + + + Resume + Продолжить + + + Waiting for anwser... + Ожидание ответа... + + + Done + Завершено + + + Failed + Завершено неудачно + + + Paused + Воспроизведение приостановлено + + + Paused by peer + Остановлен пользователем + + + Cancelled + Отменено + + + Cancelled by peer + Отменено пользователем + + + Downloading... + Принимается... + + + Uploading... + Закачка... + + + Waiting for peer... + Ожидание + + + An error occured during the file transfer + Ошибка при передаче файлов + + + This may be caused by : + Вероятно вызвано + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Главное + + + General Settings + Общие Настройки + + + + QtHistory + + Incoming call + Входящий звонок + + + Outgoing call + Исходящий звонок + + + Missed call + Пропущенне звонки + + + Rejected call + Отказанный звонок + + + Outgoing SMS + Исходящее SMS сообщение + + + Do you want to call %1? + Вы хотите позвонить собеседнику %1? + + + Chat session + Чат + + + @product@ - Call History + + + + + Type + Шрифт + + + Name/ID + Имя/Идентификатор + + + Date + Дата: + + + Duration + Длительность + + + + QtHistoryWidget + + Erase this entry + Стереть эту запись + + + Open in SMS window + Открыть в окне SMS сообщений + + + Call this peer + Позвонить этому пользователю + + + Show chat log + Показать историю чата + + + + QtIMAccountManager + + Cancel + Отмена + + + @product@ + + + + + &Delete + &Удалить + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Отключено + + + Error: %1 + Ошибка: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Онлайн + + + Invisible + Невидимка + + + Away + Отсутствует + + + Do not disturb + Не беспокоить + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Пожалуйста введите имя учётной записи + + + + QtIMAccountPresenceMenuManager + + Cancel + Отмена + + + @product@ + + + + + &Delete + &Удалить + + + Online + Онлайн + + + Invisible + Невидимка + + + Away + Отсутствует + + + Do Not Disturb + Не беспокоить + + + Disconnect + Отсоединиться + + + Delete Account + Удалить аккаунт + + + Are sure you want to delete the account <b>%1</b>? + Вы действительно хотите удалить аккаунтt <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Редактировать мои учётные записи + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Язык + + + Language Settings + Настройка языков + + + + QtLogAccount + + Invalid account + Неверный аккаунт + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Входящий звонок(мелодия звонка) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Звонок прекращён (звук повешенной трубки) + + + Incoming chat + Входящие текстовое сообщение + + + IM account connected + Связь с учётной записью IM установлена + + + IM account disconnected + Связь с учётной записью IM прекращена + + + Contact online + Собеседник в сети + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Выберите звуковой файл + + + Sounds + Звуки + + + + QtPhoneCall + + Status + Состояние + + + Incoming Call + Входящий Звонок + + + Resume + Продолжить + + + Hang-up + Повесить трубку + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Ошибка + + + Talking + Разговор + + + Dialing + Набор номера + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Звонок + + + Redirected + Переадресован + + + Initialization... + Инициализация... + + + Closed + Закрыто + + + Hold + Приостановить + + + Add contact + Добавление собеседника + + + Ca&ncel + &Отменить + + + Talking - Conference + Разговор - Конференция + + + Add a Contact + Добавить Собеседника + + + + QtPresenceMenuManager + + Online + Онлайн + + + Invisible + Невидимка + + + Away + Отсутствует + + + Do Not Disturb + Не беспокоить + + + Log off + Выйти + + + + QtPrivacySettings + + Privacy + Параметры конфиденциальности + + + Privacy Settings + Параметры личных данных + + + + QtProfileBar + + Click here to change your status + Нажмите здесь, чтобы сменить Ваш статус + + + active + активен + + + voicemail + голосовая почта + + + inactive + неактивен(-на) + + + unauthorized + не санкционирован + + + Set global presence to: + Изменить глобальное состояние на + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Дополнительно >> + + + @product@ + + + + + A contact must have a group, please set a group. + Собеседник должен иметь группу, настройте её пожалуйста. + + + << Simple + << Простой вид + + + Select your avatar + Выберите ваш Аватар + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Отмена + + + Conference + Конференция + + + Call + Позвонить + + + Account + + + + Add a Contact + Добавить Собеседника + + + You have unfinished call(s). + У вас есть незаконченные разговоры + + + @product@ - Warning + + + + + Home + Дома + + + Are you sure you want to exit the application? + Вы уверены, что хотите выйти из приложения? + + + &Exit + &Выход + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Дополнительные настройки + + + General + Главное + + + Accounts + Учетные записи + + + Audio + Аудио + + + Call Forward + Перенаправление звонка + + + Language + Язык + + + Privacy + Параметры конфиденциальности + + + Video + Видео + + + Voicemail + Голосовая почта + + + security + Безопасность + + + Notifications + + + + + QtRenameGroup + + Bad group name + Плохое название группы + + + Group name cannot be empty + Название группы не может быть пустым + + + + QtSecuritySettings + + Security + Безопасность + + + Security Settings + Настройки безопасности + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Пожалуйста заполните поле для телефонного номера + + + Do you want to continue? + Вы хотите продолжить? + + + Your SMS has not been sent + Ваше SMS не было отослано + + + Your SMS has been sent + Ваше SMS было отослано + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + Вы не можете послать пустое сообщение + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Не подсоединён + + + Register done + Регистрация завершена + + + Unregister done + Регистрация аннулирована + + + Connecting + Идёт подключение + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Состояние + + + @product@ + + + + + Call SIP + Звонок на SIP + + + Call land line + Звонок на стационарный телефон + + + Call Mobile + Звонок на мобильный телефон + + + Call @company@ + + + + + Call + Позвонить + + + Send SMS + Отправить SMS + + + Online + Онлайн + + + Invisible + Невидимка + + + Away + Отсутствует + + + Do Not Disturb + Не беспокоить + + + Internet Connection Error + Ошибка при подключении к интернету + + + Offline + Отключён + + + Connecting... + Установка соединения... + + + Send a SMS + Послать SMS + + + Start a chat + Начать текстовое общение + + + Place Call + Произвести звонок + + + Send File + Послать файл + + + Multiple Status + Multiple Status + + + Unknown Status + Неизвестный статус + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Отмена + + + @product@ - Proceed Conference + + + + + Edit My Profile + Редактировать мои учётные записи + + + Add a Contact + Добавить Собеседника + + + Hide Unavailable Contacts + Спрятать недоступные контакты + + + Show Unavailable Contacts + Показать недоступные контакты + + + Hide Groups + Скрыть группы + + + Show Groups + Показать группы + + + You have unfinished call(s). + У вас есть незаконченные разговоры + + + Are you sure you want to log off? + Вы уверены, что хотите отсоединиться? + + + &Log Off + Отсоединиться + + + Disable &Video Calls + Выключить аудио и видео звонки + + + Enable &Video Calls + Включить аудио и видео звонки + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Конференция не может быть начата пока есть активные звонки</b><br><br>Закончите звонки и начните снова + + + @product@ - Warning + + + + + Log &Off... + Отключиться + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Список собеседников + + + + QtUserProfile + + Edit Contact + Редактировать контакт + + + &Authorize + &Аутентифицировать + + + &Block + &Блокировать + + + Network error. + Ошибка сети. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Введён неверный адрес электронной почты или неверный пароль + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Видео + + + Normal + Удовлетворительно + + + Good + Хорошо + + + Very good + Очень хорошо + + + Excellent + Отлично + + + Video Settings + Параметры видео + + + + QtVoicemailSettings + + Voicemail + Голосовая почта + + + Voicemail Settings + Настройки голосовой почты + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Отмена + + + Save + Сохранить + + + Title + Заглавие + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Принять + + + &Hidden + + + + + &Tools + &Инструменты + + + &Help + Справка (&H) + + + &Actions + &Действия + + + @company@ + + + + + &Close + Закрыть + + + Dialpad + Номеронабиратель + + + @product@ + + + + + Start Conference + Начать конференцию + + + Send SMS + Отправить SMS + + + Contacts + Контакты + + + History + Журнал + + + Clear &History + О&чистить журнал + + + ToolBar + Панель инструментов + + + Show/Hide Unavailable &Contacts + Показать/Спрятать Недоступных &Собеседников + + + &Chat Sessions + &Сессии текстового разговора + + + &All + &Все + + + &HangUp + &Повесить трубку + + + &Hold/Resume + &Приостановить/Продолжить + + + Show/Hide &Groups + Показать/Скрыть &Группы + + + &Outgoing Calls + &Исходящий звонок + + + &Incoming Calls + &Входящий звонок + + + &Missed Calls + &Пропущенный звонок + + + Enable/Disable &Video Calls + Запретить/Разрешить &Видео Звонки + + + Short Text &Messages (SMS) + Короткие &Сообщения (SMS) + + + Rejected Calls + Отказанные звонки + + + &Contacts + &Собеседники + + + &About... + &О программе... + + + Add &Contact... + Добавить контакт + + + &Configuration... + &Конфигурация... + + + Send SMS... + Оправить SMS + + + View My &Profile... + Посмотреть мой профайл + + + View My Profile + Посмотреть мой профайл + + + Start &Conference... + Начать конференцию + + + &Find Contact... + Найти контакт + + + Log &Off... + Отключиться + + + Log Off + Завершение сеанса + + + Show &Chat Window + Показать окно чата + + + Show Chat Window + Показать окно чата + + + Show &File Transfer + Показать скачки + + + Add Contact + Добавить контакт + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Добавить + + + SMS + SMS + + + Conference + Конференция + + + + RenameGroupDialog + + Cancel + Отмена + + + OK + Да + + + Enter the new group name: + Введите имя новой группы: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Область + + + Enable call encryption + Включить шифрование звонков + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Обновите Ваш список учётных записей и собеседников + + + Yahoo! ID: + Yahoo! Идентификатор: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN Идентификатор: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Отправить + + + @product@ - SMS + + + + + Click here to add a phone number + Нажмите здесь для добавления телефонного номера + + + 0 /160 + 0 /160 + + + Enter your signature here + Поставьте вашу подпись здесь + + + Signature: + Подпись: + + + Phone number(s): + Номер(а) телефона: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Введите здесь номер(а) телефона <br>Они должны быть разделены символом & или ; или , + + + + SoftUpdateWindow + + Cancel + Отмена + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Область + + + + VideoSettings + + Normal + Удовлетворительно + + + Good + Хорошо + + + Very good + Очень хорошо + + + Excellent + Отлично + + + Enable video + Включить видео + + + Webcam Selection + Выбор веб камеры + + + Webcam device: + Устройство веб камеры: + + + Webcam Preview + Предварительный просмотр изображения с веб камеры + + + Connection Type + Тип соединения + + + Video quality + Качество изображения + + + Down (kbit/s) + Входящая скорость(Кбит/с) + + + Up (kbit/s) + Исходящая скорость(Кбит/с) + + + 0 to 512 + от 0 до 512 + + + 0 to 128 + от 0 до 128 + + + 512 to 2048 + от 512 до 2048 + + + 128 to 256 + от 128 до 256 + + + 2048+ + 2048 и выше + + + 256+ + 256 и выше + + + 8192+ + 8192 и выше + + + 1024+ + 1024 и выше + + + Video quality depends on your Internet connection bandwidth + Качество видео изображения зависит от пропускной способности Вашего интернет подключения + + + Make a test video call + Произвести тестовый видео звонок + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Область + + + Phone number of your voicemail: + Телефонный номер голосового ящика + + + Please fill in here the information about your voicemail + Пожалуйста, заполните данные + + + + Wizard + + Cancel + Отмена + + + Finish + Закончить + + + Next > + Далее > + + + < Back + < Назад + + + Simple Wizard - Step %1 of %2 + Простой мастер - Шаг %1 из %2 + + + + YahooSettings + + Login: + Имя: + + + Password: + Пароль: + + + Yahoo! Settings + Yahoo! Settings + + + Use Yahoo! Japan server + Use Yahoo! Japan server + + + Forgot your Yahoo! password? + Forgot your Yahoo! password? + + + Get a new Yahoo! Account + Get a new Yahoo! Account + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sk.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sk.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sk.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sk.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4593 @@ + + + + + AIMSettings + + Login: + Meno: + + + Forgot your AIM password? + Zabudli ste svoje heslo? + + + Get a new AIM Account + Založiť nové AIM konto + + + Password: + Heslo : + + + AIM Settings + AIM/ICQ Nastavenia + + + + AboutWindow + + About + O Programe + + + Copyright (C)2008 Mbdsys + + + + Authors + Autori + + + Close + Zavrieť + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Prenos súboru + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Prijať + + + &Cancel + &Storno + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Súbor: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Prichádzajúci súbor</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Editovať profil + + + + AddAccount + + Configure your account: + Nastaviť účet + + + &Next + &Dopredu + + + Need help? + Potrebujete pomoc? + + + You don't have any account ? Click here + Nemáte žiadny účet? Kliknite sem + + + &Back + &Späť + + + Cancel + Storno + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Storno + + + Contact Type (protocol): + Typ kontaktu (protokol) + + + Contact ID: + Kontakt ID: + + + Account: + Účet: + + + Enable + Povolené + + + Login + Prihlásiť + + + Add + Pridať + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Heslo : + + + Need help? + Potrebujete pomoc? + + + &Back + &Späť + + + Cancel + Storno + + + @product@ - Login + + + + + &Connect + &Pripojiť sa + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Prihlásenie</span><br><br><span>Zadajte Vaš e-mail a<br>heslo</span> + + + Email Address: + E-mailová adresa: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Heslo : + + + Need help? + Potrebujete pomoc? + + + &Back + &Späť + + + Cancel + Storno + + + @product@ - Login + + + + + &Connect + &Pripojiť sa + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + Zobrazované meno: + + + login / username: + login / uživateľské meno + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Zavrieť + + + Preference Name + Preferované meno + + + Type + Typ + + + Value + Hodnota + + + Default Value + + + + + Save + + + + + Status + Stav: + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Pridať + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Štýl + + + + AudioSettings + + Reset + Reset + + + Audio Codecs + Audio kodeky + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Štýl + + + + AvatarWidget + + Form + Štýl + + + + BrowserSoftUpdateWindow + + Close + Zavrieť + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + Presmerovať všetky zmeškané hovory do hlasovej schránky + + + Disable call forwarding + Zrušiť presmerovanie hovorov + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + &Kontakt + + + &Tools + &Nástroje + + + &Help + &Nápoveda + + + &Actions + &Akcie + + + Main Toolbar + Hlavný panel nástrojov + + + Call Contact + Zavolať uživateľovi + + + Send a File + Poslať súbor + + + createChatConf + vytvoriťChatKonf + + + Show Contact Info + Ukázať informácie o kontakte + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Nástroje + + + &Actions + &Akcie + + + Main Toolbar + Hlavný panel nástrojov + + + Call Contact + Zavolať uživateľovi + + + Send a File + Poslať súbor + + + Show Contact Info + Ukázať informácie o kontakte + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + &Pridaj + + + + ChatToaster + + Message + + + + + Incoming Chat + Príchodzia správa + + + + ChatWidget + + Form + Štýl + + + + ConferenceCallWidget + + Cancel + Storno + + + Start + Štart + + + Phone number 2: + Telefónne číslo 2: + + + Phone number 1: + Telefónne císlo 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + Storno + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Storno + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Storno + + + Form + Štýl + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Meno: + + + Password: + Heslo : + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Storno + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Meno: + + + Password: + Heslo : + + + ICQ Settings + AIM/ICQ Nastavenia + + + Forgot your ICQ password? + Zabudli ste svoje heslo? + + + Get a new ICQ Account + Založiť nové AIM konto + + + + IMAccountManager + + Close + Zavrieť + + + Login + Prihlásiť + + + Add + Pridať + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Storno + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + Pridať + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Storno + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Meno: + + + Password: + Heslo : + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Heslo : + + + Need help? + Potrebujete pomoc? + + + Cancel + Storno + + + Delete + + + + + @product@ - Login + + + + + Account: + Účet: + + + &Connect + &Pripojiť sa + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Meno: + + + Password: + Heslo : + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Zavrieť + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Prenos súboru + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Prijať + + + Status + Stav: + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Storno + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + Nastaviť účet + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Prihlásiť + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + Nastaviť účet + + + + QtAdvancedIMContactManager + + Cancel + Storno + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Storno + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Typ + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + Storno + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Storno + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Stav: + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Storno + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Stav: + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Storno + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Storno + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Prijať + + + &Hidden + + + + + &Tools + &Nástroje + + + &Help + &Nápoveda + + + &Actions + &Akcie + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Pridať + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Storno + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Štýl + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Storno + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Štýl + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Štýl + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Storno + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Meno: + + + Password: + Heslo : + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sl.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sl.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sl.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sl.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4082 @@ + + + + + AIMSettings + + Login: + Prijava: + + + Forgot your AIM password? + Ste pozabili svoje AIM geslo? + + + Get a new AIM Account + Ustvari nov AIM račun + + + Password: + Geslo: + + + AIM Settings + Nastavitve AIM + + + + AboutWindow + + About + O Programu + + + Copyright (C)2008 Mbdsys + + + + Authors + Avtorji + + + Close + Zapri + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Prenos datotek + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Sprejmi + + + &Cancel + &Prekliči + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Stik: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Ime datoteke: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Datoteka, ki se prenaša k vam</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + Ur&ejenje profila + + + + AddAccount + + Configure your account: + Urejanje svojega računa: + + + &Next + &Naprej + + + Need help? + Potrebujete pomoč? + + + You don't have any account ? Click here + Še nimate računa? Kliknite tukaj + + + &Back + Na&zaj + + + Cancel + Prekliči + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Prekliči + + + Contact Type (protocol): + Vrsta stika (protokol) + + + Contact ID: + ID stika: + + + Account: + Račun: + + + Enable + Omogoči + + + Login + Prijava + + + Add + Dodaj + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Geslo: + + + Need help? + Potrebujete pomoč? + + + &Back + Na&zaj + + + Cancel + Prekliči + + + @product@ - Login + + + + + &Connect + &Poveži + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Prijava</span><br><br><span>Vnesite svoj naslov e-pošte in geslo</span> + + + Email Address: + Naslov e-pošte: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Geslo: + + + Need help? + Potrebujete pomoč? + + + &Back + Na&zaj + + + Cancel + Prekliči + + + @product@ - Login + + + + + &Connect + &Poveži + + + Activate presence and chat (SIP/SIMPLE) + Aktiviraj prisotnost in klepet + + + Displayname: + Prikazano ime: + + + login / username: + prijava / uporabniško ime: + + + Account name: + Ime računa: + + + Proxy: + Posrednik: + + + : + : + + + Server: + Strežnik: + + + SIP Domain / Realm: + Domena / območje SIP + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Nastavite svoj profil SIP</span><br><br><span>Vnesite podatke, ki so potrebni<br/>za povezavo z vašim računom SUP</span> + + + Advanced + Napredeno + + + + AdvancedConfigWindow + + Close + Zapri + + + Preference Name + Ime nastavitve + + + Type + Vrsta + + + Value + Vrednost + + + Default Value + Privzeta vrednost + + + Save + Shrani + + + Status + Stanje + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Dodaj + + + Advanced Settings + Napredne nastavitve + + + Advanced Configuration Window + Okno z naprednimi nastavitvami + + + Automatically answer incoming calls from + Samodejno odgovori na klice od + + + Remove + Odstrani + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + OPOZORILO! Ta del je namenjen naprednim uporabnikom.<br>Napake v tem delu lahko onemogočijo delovanje programa. + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + &Samo ikone + + + &Hidden + &Skrito + + + Chat Theme + + + + + Form + Obrazec + + + + AudioSettings + + Reset + Ponastavi + + + Audio Codecs + Zvočni kodeki + + + &Input device: + &Vhodna naprava + + + &Output device: + &Izhodna naprava + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Obrazec + + + + AvatarWidget + + Form + Obrazec + + + + BrowserSoftUpdateWindow + + Close + Zapri + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Tretji: + + + 1st: + Prvi: + + + 2nd: + Drugi: + + + (+ country code) phone number + (+ številka države) telefonska številka + + + Forward all unanswered calls to message box + Preusmeri vse neodgovorjene klice v Mapo s sporočili + + + Disable call forwarding + Onemogoči preusmerjanje klicov + + + Forward all unanswered calls to following phone numbers: + Preusmeri vse neodgovorjene klice na sledeče telefonske številke: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Na primer +3314500XXXX ( kjer je +33 številka države, v katero kličete, 14500XXXX telefonska številka prejemnika klica) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Dohodni klic + + + Message + Sporočilo + + + + ChatLogViewer + + Chat History + Zgodovina klepeta + + + &Contact + &Stik + + + &Tools + &Orodja + + + &Help + &Pomoč + + + &Actions + &Dejanja + + + Main Toolbar + Glavna orodjarna + + + Call Contact + Pokliči stik + + + Send a File + Pošlji datoteko + + + createChatConf + Ustvari klepetalno konferenco + + + Show Contact Info + Pokaži podatke o stiku + + + blockContact + Blokiraj stik + + + &Save History As... + &Shrani zgodovino kot ... + + + actionRestartChat + Ponovno začni klepet + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Stik + + + &Tools + &Orodja + + + &Actions + &Dejanja + + + Main Toolbar + Glavna orodjarna + + + Call Contact + Pokliči stik + + + Send a File + Pošlji datoteko + + + Show Contact Info + Pokaži podatke o stiku + + + blockContact + Blokiraj stik + + + &Save History As... + &Shrani zgodovino kot ... + + + @company@ + + + + + MainWindow + Glavno okno + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + &Zapri + + + Conference + Konferenca + + + + ChatRoomInviteWidget + + Chat room + Klepetalnica + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Klepetalnica</span></p></body></html> + + + (Conference participants) + (udeleženci konference) + + + &Remove + &Odstrani + + + &Start + &Začni + + + Group Name + Ime skupine + + + &Add + &Dodaj + + + + ChatToaster + + Message + Sporočilo + + + Incoming Chat + Dohodni klepet + + + + ChatWidget + + Form + Obrazec + + + + ConferenceCallWidget + + Cancel + Prekliči + + + Start + Prični + + + Phone number 2: + Telefonska št. 2: + + + Phone number 1: + Telefonska št. 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Začni + + + Cancel + Prekliči + + + + ContactGroupPopupMenu + + Remove Contact Group + Odstrani skupino stikov + + + Rename Contact Group + Preimenuj skupino stikov + + + Delete group + Zbriši skupino + + + Do you really want to delete this group? + Ali res želite izbrisati to skupino? + + + &Yes + &Da + + + &No + &Ne + + + + ContactList + + Contact List + Seznam stikov + + + goupname + + + + + ContactWidget + + No mobile phone number set + Nastavljene ni nobene številke mobilnega telefona + + + No landline phone number set + Nastavljene ni nobene številke stacionarnega telefona + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Prekliči + + + Program Failure + Napaka v programu + + + Send + Pošlji + + + Optional Information + Dodatni podatki + + + Your Mail: + Vaša e-pošta: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Ni na voljo + + + Click here to change your call forward settings + Klikni za nastavitev posredovanja klicev + + + Call forward mode: + Način posredovanja klicev + + + Purchase call out credits + Kupite kredite QuteCom za izhodne klice + + + Call Forward Method + Metoda posredovanja klicev + + + Call Voice Mail + Kliči glasovno pošto + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Korenska mapa + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Da bi poslali zvoke sogovorniku, kliknite na razne predmete, ki spreminjajo barvo. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Kliknite za klic svoje glasovne pošte + + + New Voice Mail: + Nova glasovna pošta + + + Click here to see missed call(s) + Kliknite za pregled zgrešenih klicev + + + Missed Call(s): + Zgrešeni klici + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Prejemanje + + + Upload + Pošiljanje + + + Click here to change your download folder + Kliknite tukaj za spremembo mape za prejemanje + + + Download folder: + Mapa za prejemanje: + + + Clean all items in the list + Počisti seznam prenosov + + + &Clean + &Počisti + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Prekliči + + + Form + Obrazec + + + Pause + Začasno ustavi + + + <i>From:</i> + <i>Od:</i> + + + + GeneralSettings + + When I double-click on a contact + Kadar dvakrat kliknem nek stik + + + Call cell phone or land line if contact not online + Pokliči stacionarni ali prenosni telefon, če stik ni na zvezi. + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Stanje pripravljenosti + + + minutes + minutah + + + Show me as "Away" when I am inactive for: + Označi me kot "Odsoten" po: + + + When I start my computer + Ko se prijavim v sistem + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Prijava: + + + Password: + Geslo: + + + GoogleTalk Settings + Nastavitve GoogleTalk + + + Forgot your GoogleTalk password? + Ste pozabili svoje geslo za GoogleTalk? + + + Get a new GoogleTalk Account + Ustvari nov račun GoogleTalk + + + + HttpProxyLoginWindow + + Cancel + Prekliči + + + HTTP Proxy Address: + Naslov posrednika HTTP: + + + HTTP Proxy Port Number: + Številka vrat posrednika HTTP: + + + HTTP Proxy Login: + Uporabniško ime na posredniku HTTP: + + + HTTP Proxy Password: + Geslo na posredniku HTTP: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Overjanje pri posredniku HTTP</span><br><br><span>Vaš krajevni posrednik HTTP opravlja overjanje<br>Vnesite svoje uporabniško ime in geslo</span> + + + OK + V redu + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Prijava: + + + Password: + Geslo: + + + ICQ Settings + Nastavitve ICQ + + + Forgot your ICQ password? + Ste pozabili svoje geslo za ICQ? + + + Get a new ICQ Account + Ustvari nov račun ICQ + + + + IMAccountManager + + Close + Zapri + + + Login + Prijava + + + Add + Dodaj + + + Delete + Izbriši + + + Modify + Spremeni + + + Protocol + Protokol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Prekliči + + + Save + Shrani + + + IM Account Settings + Nastavitve računa + + + + IMContactManager + + Add + Dodaj + + + Delete + Izbriši + + + Contact Type (protocol) + Vrsta stika (protokol) + + + Click on the add button below to add a new ID + Za dodajanje novega ID-ja kliknite na spodnji gumb Dodaj + + + Contact ID + ID stika + + + + IMProfileWidget + + Enter your nickname here + Vnesite svoj vzdevek + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Dodaj račun za takojšnje sporočanje + + + Add an IM account + Dodaj račun + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Prekliči + + + OK + V redu + + + Go Up + Pojdi gor + + + Refresh + Osveži + + + + JabberSettings + + Login: + Prijava: + + + Password: + Geslo: + + + Jabber Settings + Nastavitve za Jabber + + + Connect Server: + Poveži se s tem strežnikom: + + + <u>Advanced Options</u> + <u>Napredne možnosti</u> + + + Require TLS + Zahtevaj TLS + + + Port: + Vrata: + + + Use TLS if available + Uporabi TLS, če je na voljo + + + Allow plaintext authentication over unencrypted streams + Dopusti overjanje z navadnim besedilom brez šifriranja + + + 5222 + 5222 + + + Force old (port 5223) SSL + Vsili star SSL (vrata 5223) + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Vašega jezika še ni tu. Ste vedeli, da lahko na strani Launchpad sami začnete prevajati? + + + More information here. + Več podatkov tukajle. + + + + LogAccount + + Password: + Geslo: + + + Need help? + Potrebujete pomoč? + + + Cancel + Prekliči + + + Delete + Izbriši + + + @product@ - Login + + + + + Account: + Račun: + + + &Connect + &Poveži + + + Forgot your @company@ password? + + + + + &Modify + &Spremeni + + + Configure a &New Profile + Nastavi &nov profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Prijava: + + + Password: + Geslo: + + + MSN Settings + Nastavitve za MSN + + + Forgot your MSN password? + Ste pozabili svoje geslo za MSN? + + + Get a new MSN Account + Ustvarite nov račun MSN + + + Use HTTP method + Uporabi HTTP način + + + + MainWindow + + MainWindow + Glavno okno + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Sprejmi klic + + + Send Chat Message + Pošlji sporočilo klepeta + + + Make Call + Pokliči + + + Hang Up + Končaj klic + + + + ManageBlockedUsersSettings + + Close + Zapri + + + Unblock User + Odblokiraj uporabnika + + + Manage blocked users + Uredi blokirane uporabnike + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Izberite dogodke, za katere naj se predvaja zvok. + + + + NotificationSettingsItem + + Sound file + Zvočna datoteka + + + Find a sound file + Najdi zvočno datoteko + + + Play sound file + Predvajaj zvočno datoteko + + + Play + Predvajaj + + + + NotifyDialog + + File Transfer + Prenos datotek + + + &Ok + &V redu + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stanje:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Nadgradnja</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Sprejmi + + + Status + Stanje + + + 00:00:00 + 00:00:00 + + + Nickname + Vzdevek + + + &Reject + &Zavrni + + + Dialpad + Številčnica + + + Audio Smileys + Zvokovni smeškoti + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Uredi blokirane uporabnike + + + Privacy Rules + Pravila zasebnosti: + + + Always sign in as "Invisible" (appear offline to all users) + Vedno me prijavi kot "Neviden" (kot da nisem dosegljiv) + + + Allow chats from + Dopusti klepet od + + + Anyone + Kodarkoli + + + Only people from my contact list + Samo ljudi z mojega seznama stikov + + + Allow calls from + Dovoli klice od + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Prekliči + + + Save + Shrani + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + Splošno + + + Network IDs (MSN, Jabber...) + Omrežni ID (Jabber, ICQ ...) + + + Advanced >> + Napredno >> + + + Fill in all your network Id to stay connected with your contacts + Izpolnite obrazec s svojo omrežno identiteto, da bi ostali povezani s svojimi stiki + + + Contact + Stik + + + Group: + Skupina: + + + Last Name: + Priimek: + + + First Name: + Ime: + + + Details + Podrobnosti + + + Web/blog: + Splet/blog: + + + Country: + Država: + + + State: + Zv. država: + + + City: + Mesto: + + + Gender: + Spol: + + + Birth Date: + Datum rojstva: + + + Email: + E-pošta: + + + Notes + Zapiski + + + Phone Numbers + Telefonske številke + + + Home phone + Domači telefon + + + Mobile phone + Mobilni telefon + + + dd MMMM yyyy + dd MMMM llll + + + Unknown + Neznano + + + Male + Moški + + + Female + Ženska + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Računi + + + Accounts Settings + Nastavitve računov + + + + QtAddAccount + + Configure your voip account + Nastavite svoj račun VoIP + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Prijava + + + Please enter an email address. + Vnesite svoj e-poštni naslov + + + Please enter your email address<br/>and your password + Vnesite svoj e-poštni naslov in svoje geslo + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Vnesite podatke, ki bodo omogočili vašemu<br/>programskemu telefonu, da se poveže<br/>z vašim računom SIP + + + Configure your SIP profile + Nastavite svoj profil SIP + + + + QtAdvancedIMContactManager + + Cancel + Prekliči + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Izbriši + + + + QtAdvancedSettings + + Advanced + Napredeno + + + Advanced Settings + Napredne nastavitve + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Napredeno + + + Audio + Zvok + + + Audio Settings + Nastavitve zvoka + + + + QtCallBar + + +(country code) number or nickname + +(številka države) številka ali vzdevek + + + + QtCallForwardSettings + + Call Forward + Preusmeritev klica + + + Call Forward Settings + Nastavitve za preusmerjanje klicev + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Shrani kot + + + + QtChatLogViewer + + Account + + + + Edit Contact + Uredi stik + + + + QtChatTabWidget + + Close chat + Zapri klepet + + + + QtChatWidget + + %1 is connected. + %1 je povezan. + + + %1 is disconnected. + %1 ni povezan. + + + send + pošlji + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Uredi stik + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Pokliči SIP + + + Call land line + Pokliči stacionarni telefon + + + Call Mobile + Pokliči mobilni telefon + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Sedaj lahko obvestite svojega prvega sogovornika, da bo sodeloval v konferenčnem klicu.</b><br><br>Ko zaključite, kliknite na spodnji gumb. Vaš prvi sogovornik bo postavljen na čakanje, medtem pa lahko pokličete drugega sogovornika.<br> + + + Hold first interlocutor and call second one + Čakanje za prvega sogovornika in klic drugega + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Sedaj lahko obvestite drugega sogovornika, da bo sodeloval v konferenčnem klicu.</b><br><br>Ko zaključite, kliknite na spodnji gumb. Tako začnete konferenco. + + + Start Conference + Začni konferenco + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Da + + + &No + &Ne + + + Merge %1 with %2? + Združim %1 z %2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Da + + + &No + &Ne + + + Home phone + Domači telefon + + + Mobile phone + Mobilni telefon + + + @product@ + + + + + Edit Contact + Uredi stik + + + Do you really want to delete this contact? + Ali zares želite izbrisati ta stik? + + + Start chat + Začni klepet + + + Delete contact + Izbriši stik + + + Call + Kliči + + + Free call + + + + Work phone + Telefon na delovnem mestu + + + Send SMS + Pošlji SMS + + + Edit contact + Uredi stik + + + Block contact + Blokiraj stik + + + Invite to conference + Povabi na konferenco + + + Go to website + Pojdi na spletno stran + + + Send file + Pošlji datoteko + + + Forward to mobile phone + Posreduj na Mobilni telefon + + + + QtContactWidget + + No mobile phone number set + Nastavljene ni nobene številke mobilnega telefona + + + No landline phone number set + Nastavljene ni nobene številke stacionarnega telefona + + + Click here to call + Kliknite tukaj za klic + + + Click here to set a phone number + Kliknite tukaj za vpis telefonske številke + + + Click here to edit the contact + Kliknite tukaj za urejanje stika + + + Click here to send a SMS + Kliknite tukaj za pošiljanje SMSa + + + Click here to start a chat + Kliknite tukaj za pričetek klepeta + + + Click here to start a free call + Kliknite tukaj za pričetek brezplačnega klica + + + Click here to send a file + Kliknite tukaj za pošiljanje datoteke + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Želite klicati svojo glasovno pošto? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Da + + + &No + &Ne + + + Choose a directory + Izberite mapo + + + Overwrite File? + Nadomestim datoteko? + + + A file called %1 already exists.Do you want to overwrite it? + Datoteka z imenom %1 že obstaja. Ali jo želite nadomestiti? + + + File size error + Napaka glede velikosti datoteke + + + %1 exceeds the maximum authorized size. + %1 presega največjo dovoljeno velikost. + + + %1 has size 0. + %1 ima velikost 0. + + + %1 is a directory. + %1 je mapa. + + + You can not send a directory. + Ne morete poslati mape. + + + %1 is a shortcut. + %1 je bližnjica. + + + You can not send a shortcut. + Ne morete poslati bližnjice. + + + All Files (*.* *) + Vse datoteke (*.*, *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Prekliči + + + Remove + Odstrani + + + Pause + Začasno ustavi + + + Starting + Zaganjam + + + From: + Od: + + + To: + Za: + + + Open + Odpri + + + Resume + Nadaljuj + + + Waiting for anwser... + Čakajoč odgovor ... + + + Done + Opravljeno + + + Failed + Spodletelo + + + Paused + Pavza + + + Paused by peer + Ustavljeno na željo vrstnika + + + Cancelled + Preklicano + + + Cancelled by peer + Preklicano na željo vrstnika. + + + Downloading... + Sprejemanje ... + + + Uploading... + Pošiljanje ... + + + Waiting for peer... + Čakajoč odgovor vrstnika ... + + + An error occured during the file transfer + Med prenosom datotek(e) je prišlo do napake + + + This may be caused by : + Možni vzroki so: + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Splošno + + + General Settings + Splošne nastavitve + + + + QtHistory + + Incoming call + Dohodni klic + + + Outgoing call + Odhodni klic + + + Missed call + Zgrešeni klic + + + Rejected call + Zavrnjeni klic + + + Outgoing SMS + Odhodni SMS + + + Do you want to call %1? + Želite poklicati %1? + + + Chat session + Seja klepeta + + + @product@ - Call History + + + + + Type + Vrsta + + + Name/ID + Ime/ID + + + Date + Datum + + + Duration + Trajanje + + + + QtHistoryWidget + + Erase this entry + Zbriši ta vnos + + + Open in SMS window + Odpri v SMS oknu + + + Call this peer + Pokliči tega vrstnika + + + Show chat log + Prikaži dnevnik klepeta + + + + QtIMAccountManager + + Cancel + Prekliči + + + @product@ + + + + + &Delete + &Izbriši + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Brez povezave + + + Error: %1 + Napaka: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Na zvezi + + + Invisible + Neviden + + + Away + Odsoten + + + Do not disturb + Ne moti + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Vnesite uporabniško ime + + + + QtIMAccountPresenceMenuManager + + Cancel + Prekliči + + + @product@ + + + + + &Delete + &Izbriši + + + Online + Na zvezi + + + Invisible + Neviden + + + Away + Odsoten + + + Do Not Disturb + Ne moti + + + Disconnect + Prekini povezavo + + + Delete Account + Izbriši račun + + + Are sure you want to delete the account <b>%1</b>? + Ali zares želite izbrisati račun <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Uredi moj profil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Jezik + + + Language Settings + Jezikovne natavitve + + + + QtLogAccount + + Invalid account + Neveljaven račun + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Dohodni klic (zvonenje) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Zvok ob končanju klica + + + Incoming chat + Dohodni klepet + + + IM account connected + Vzpostavljena povezava z računom + + + IM account disconnected + Prekinjena povezava z računom + + + Contact online + Stik na zvezi + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Izberite zvočno datoteko + + + Sounds + Zvoki + + + + QtPhoneCall + + Status + Stanje + + + Incoming Call + Dohodni klic + + + Resume + Nadaljuj + + + Hang-up + Prekini + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Napaka + + + Talking + Pogovarjanje + + + Dialing + Klicanje + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Zvonenje + + + Redirected + Preusmerjeno + + + Initialization... + Vspostavljanje ... + + + Closed + Zaprto + + + Hold + Zadrži + + + Add contact + Dodaj stik + + + Ca&ncel + P&rekliči + + + Talking - Conference + Pogovarjanje - konferenca + + + Add a Contact + Dodaj stik + + + + QtPresenceMenuManager + + Online + Na zvezi + + + Invisible + Neviden + + + Away + Odsoten + + + Do Not Disturb + Ne moti + + + Log off + Odjava + + + + QtPrivacySettings + + Privacy + Zasebnost + + + Privacy Settings + Nastavitve zasebnosti + + + + QtProfileBar + + Click here to change your status + Kliknite tukaj za spremembo svojega stanja + + + active + dejaven + + + voicemail + glasovna pošta + + + inactive + nedejaven + + + unauthorized + neavtoriziran + + + Set global presence to: + Nastavi globalno prisotnost na: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Napredno >> + + + @product@ + + + + + A contact must have a group, please set a group. + Kontakt mora imeti skupino. Izberite jo. + + + << Simple + << Enostavno + + + Select your avatar + Izberite svojega avatarja + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Prekliči + + + Conference + Konferenca + + + Call + Kliči + + + Account + + + + Add a Contact + Dodaj stik + + + You have unfinished call(s). + Imate nedokončane klice + + + @product@ - Warning + + + + + Home + Domov + + + Are you sure you want to exit the application? + Ali zares želte končati program? + + + &Exit + &Končaj + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Napredeno + + + General + Splošno + + + Accounts + Računi + + + Audio + Zvok + + + Call Forward + Preusmeritev klica + + + Language + Jezik + + + Privacy + Zasebnost + + + Video + Video + + + Voicemail + Glasovna pošta + + + security + varnost + + + Notifications + + + + + QtRenameGroup + + Bad group name + Napačno ime skupine + + + Group name cannot be empty + Ime skupine ne more biti prazno + + + + QtSecuritySettings + + Security + Varnost + + + Security Settings + Varnostne nastavitve + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Vnesite telefonsko številko. + + + Do you want to continue? + Ali želite nadaljevati? + + + Your SMS has not been sent + Vaš SMS ni bil poslan + + + Your SMS has been sent + Vaš SMS je bil poslan + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + Ne morete poslati praznega sporočila. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Povezava ni vspostavljena + + + Register done + Prijava uspela + + + Unregister done + Odjava uspela + + + Connecting + Povezovanje + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Stanje + + + @product@ + + + + + Call SIP + Pokliči SIP + + + Call land line + Pokliči stacionarni telefon + + + Call Mobile + Pokliči mobilni telefon + + + Call @company@ + + + + + Call + Kliči + + + Send SMS + Pošlji SMS + + + Online + Na zvezi + + + Invisible + Neviden + + + Away + Odsoten + + + Do Not Disturb + Ne moti + + + Internet Connection Error + Napaka pri povezavi z Internetom + + + Offline + Brez povezave + + + Connecting... + Povezovanje ... + + + Send a SMS + Pošlji SMS + + + Start a chat + Začni klepet + + + Place Call + Pokliči + + + Send File + Pošlji datoteko + + + Multiple Status + Več stanj + + + Unknown Status + Neznano stanje + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Prekliči + + + @product@ - Proceed Conference + + + + + Edit My Profile + Uredi moj profil + + + Add a Contact + Dodaj stik + + + Hide Unavailable Contacts + Skrij nedostopne stike + + + Show Unavailable Contacts + Pokaži nedostopne stike + + + Hide Groups + Skrij skupine + + + Show Groups + Pokaži skupine + + + You have unfinished call(s). + Imate nedokončane klice + + + Are you sure you want to log off? + Ali se zares želite odjaviti? + + + &Log Off + &Odjava + + + Disable &Video Calls + Onemogoči &video-klice + + + Enable &Video Calls + Omogoči &video-klice + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Konference ni moč začeti, medtem ko potekajo navadni klici.</b><br>Zaključite vse klice in poskusite znova. + + + @product@ - Warning + + + + + Log &Off... + &Odjava + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Seznam stikov + + + + QtUserProfile + + Edit Contact + Uredi stik + + + &Authorize + &Avtoriziraj + + + &Block + &Blokiraj + + + Network error. + Napaka glede omrežja. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Napačen e-mail ali geslo + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Video + + + Normal + Navadno + + + Good + Dobro + + + Very good + Zelo Dobro + + + Excellent + Odlično + + + Video Settings + Nastavitve za video + + + + QtVoicemailSettings + + Voicemail + Glasovna pošta + + + Voicemail Settings + Nastavitve glasovne pošte + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Prekliči + + + Save + Shrani + + + Title + Naslov + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Sprejmi + + + &Hidden + &Skrito + + + &Tools + &Orodja + + + &Help + &Pomoč + + + &Actions + &Dejanja + + + @company@ + + + + + &Close + &Zapri + + + Dialpad + Številčnica + + + @product@ + + + + + Start Conference + Začni konferenco + + + Send SMS + Pošlji SMS + + + Contacts + Stiki + + + History + Zgodovina + + + Clear &History + &Počisti zgodovino + + + ToolBar + Orodjarna + + + Show/Hide Unavailable &Contacts + Pokaži/Skrij nedostopne stike + + + &Chat Sessions + S&eje klepeta + + + &All + &Vse + + + &HangUp + &Prekini + + + &Hold/Resume + &Zadrži/Nadaljuj + + + Show/Hide &Groups + Pokaži/Skrij &skupine + + + &Outgoing Calls + &Odhodni klici + + + &Incoming Calls + Dohodn&i klici + + + &Missed Calls + &Zgrešeni klici + + + Enable/Disable &Video Calls + Vključi/Izključi &video klice + + + Short Text &Messages (SMS) + Kratka &besedilna sporočila (SMS) + + + Rejected Calls + Zavrnjeni klici + + + &Contacts + &Stiki + + + &About... + &O programu ... + + + Add &Contact... + Dodaj &stik ... + + + &Configuration... + &Nastavitve ... + + + Send SMS... + Pošlji SMS ... + + + View My &Profile... + Pokaži moj &profil ... + + + View My Profile + Pokaži moj profil + + + Start &Conference... + Začni &konferenco ... + + + &Find Contact... + &Najdi stik ... + + + Log &Off... + &Odjava + + + Log Off + Odjava + + + Show &Chat Window + P&okaži okno za klepet + + + Show Chat Window + Pokaži okno za klepet + + + Show &File Transfer + Pok&aži prenašanje datotek + + + Add Contact + Dodaj stik + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Dodaj + + + SMS + SMS + + + Conference + Konferenca + + + + RenameGroupDialog + + Cancel + Prekliči + + + OK + V redu + + + Enter the new group name: + Vnesite novo ime skupine: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Obrazec + + + Enable call encryption + Omogoči šifriranje klicev + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Posoobi moj profil + + + Yahoo! ID: + Yahoo! ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ ID: + + + AIM ID: + AIM ID: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Pošlji + + + @product@ - SMS + + + + + Click here to add a phone number + Kliknite tu, da bi dodali telefonsko številko + + + 0 /160 + 0 /160 + + + Enter your signature here + Sem vnesite svoj podpis + + + Signature: + Podpis: + + + Phone number(s): + Telefonske številke: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Vnesite telefonske številke.<br>Če jih je več, jih ločite z znakom & ali ; ali pa , + + + + SoftUpdateWindow + + Cancel + Prekliči + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Obrazec + + + + VideoSettings + + Normal + Navadno + + + Good + Dobro + + + Very good + Zelo Dobro + + + Excellent + Odlično + + + Enable video + Omogoči video + + + Webcam Selection + Izbira kamere + + + Webcam device: + Kamera: + + + Webcam Preview + Predogled kamere + + + Connection Type + Vrsta povezave + + + Video quality + Kvaliteta videa + + + Down (kbit/s) + K meni (kbit/s) + + + Up (kbit/s) + Od mene (kbit/s) + + + 0 to 512 + 0 do 512 + + + 0 to 128 + 0 do 128 + + + 512 to 2048 + 512 do 2048 + + + 128 to 256 + 128 do 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Kvaliteta videa je odvisna od hitrosti vaše povezave z Internetom. + + + Make a test video call + Preizkusni video klic + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Obrazec + + + Phone number of your voicemail: + Telefonska št. vaše glasovne pošte: + + + Please fill in here the information about your voicemail + Vnesite podatke o vaši glasovni pošti + + + + Wizard + + Cancel + Prekliči + + + Finish + Dokončaj + + + Next > + Naprej > + + + < Back + < Nazaj + + + Simple Wizard - Step %1 of %2 + Čarovnik - Korak %1 od %2 + + + + YahooSettings + + Login: + Prijava: + + + Password: + Geslo: + + + Yahoo! Settings + Nastavitve Yahoo! + + + Use Yahoo! Japan server + Uporabljaj japonski strežnik Yahoo! + + + Forgot your Yahoo! password? + Ste pozabili svoje geslo za Yahoo!? + + + Get a new Yahoo! Account + Ustvari nov račun Yahoo! + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sr.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sr.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sr.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sr.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4688 @@ + + + + + AIMSettings + + Login: + Login: + + + Forgot your AIM password? + Zaboravili ste Vašu šifru za AIM? + + + Get a new AIM Account + Napravite novi AIM nalog + + + Password: + Šifra: + + + AIM Settings + AIM/ICQ Podešavanja + + + + AboutWindow + + About + O + + + Copyright (C)2008 Mbdsys + + + + Authors + Autori + + + Close + Zatvori + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Transfer fajla + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Prihvatam + + + &Cancel + &Poništi + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + + + + + Contact Type (protocol): + + + + + Contact ID: + + + + + Account: + + + + + Enable + + + + + Login + + + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Šifra: + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Šifra: + + + Need help? + + + + + &Back + + + + + Cancel + + + + + @product@ - Login + + + + + &Connect + + + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + + + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Zatvori + + + Preference Name + + + + + Type + + + + + Value + + + + + Default Value + + + + + Save + + + + + Status + + + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + + + + + Advanced Configuration Window + + + + + Automatically answer incoming calls from + + + + + Remove + + + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + + + + + + AudioSettings + + Reset + + + + + Audio Codecs + + + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + + + + + + AvatarWidget + + Form + + + + + + BrowserSoftUpdateWindow + + Close + Zatvori + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + + + + + 1st: + + + + + 2nd: + + + + + (+ country code) phone number + + + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + + + + + + ChatLogViewer + + Chat History + + + + + &Contact + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + + + + + &Tools + + + + + &Actions + + + + + Main Toolbar + + + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + + + + + blockContact + + + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + + + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + + + + + Incoming Chat + + + + + + ChatWidget + + Form + + + + + + ConferenceCallWidget + + Cancel + + + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + + + + + ... + + + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + + + + + Cancel + + + + + + ContactGroupPopupMenu + + Remove Contact Group + + + + + Rename Contact Group + + + + + Delete group + + + + + Do you really want to delete this group? + + + + + &Yes + + + + + &No + + + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + + + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + + + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + + + + + Form + + + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Login: + + + Password: + Šifra: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + + + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Login: + + + Password: + Šifra: + + + ICQ Settings + AIM/ICQ Podešavanja + + + Forgot your ICQ password? + Zaboravili ste Vašu šifru za AIM? + + + Get a new ICQ Account + Napravite novi AIM nalog + + + + IMAccountManager + + Close + Zatvori + + + Login + + + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + + + + + Save + + + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + Napravite novi AIM nalog + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + + + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Login: + + + Password: + Šifra: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Šifra: + + + Need help? + + + + + Cancel + + + + + Delete + + + + + @product@ - Login + + + + + Account: + + + + + &Connect + + + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Login: + + + Password: + Šifra: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Zatvori + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Transfer fajla + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + &Prihvatam + + + Status + + + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + + + + + Save + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + AIM/ICQ Podešavanja + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + + + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + + + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + + + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + + + + + &No + + + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + + + + + &No + + + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + + + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + + + + + &No + + + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + + + + + Remove + + + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + + + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + + + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Napravite novi AIM nalog + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + + + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + &Poništi + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Poništi + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + + + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Poništi + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + + + + + Save + + + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Prihvatam + + + &Hidden + + + + + &Tools + + + + + &Help + + + + + &Actions + + + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + O + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + Transfer fajla + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + + + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + + + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + + + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + + + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + + + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + + + + + @product@ - Video + + + + + + VoicemailSettings + + Form + + + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + + + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Login: + + + Password: + Šifra: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + Zaboravili ste Vašu šifru za AIM? + + + Get a new Yahoo! Account + Napravite novi AIM nalog + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sv.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sv.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sv.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_sv.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3955 @@ + + + + + AIMSettings + + Login: + Inloggningsnamn: + + + Forgot your AIM password? + Glömt ditt AIM-lösenord? + + + Get a new AIM Account + Skaffa ett nytt AIM-konto + + + Password: + Lösenord: + + + AIM Settings + Inställningar för AIM + + + + AboutWindow + + About + Om + + + Copyright (C)2008 Mbdsys + + + + Authors + Upphovsmän + + + Close + Stäng + + + 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. + Detta program är fri programvara. Du kan distribuera det +och/eller modifiera det under villkoren i GNU General Public +License, publicerad av Free Software Foundation, antingen +version 2 eller (om du så vill) någon senare version. + + + @product@ - About + @product@ - Om + + + @product@, a voice over Internet phone + @product@, en klient för internettelefoni + + + + AcceptDialog + + File Transfer + Filöverföring + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Acceptera + + + &Cancel + &Avbryt + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filnamn: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Inkommande fil</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + R&edigera min profil + + + + AddAccount + + Configure your account: + Konfigurera ditt konto: + + + &Next + &Nästa + + + Need help? + Behöver du hjälp? + + + You don't have any account ? Click here + Har du inte ett konto? Klicka här + + + &Back + &Tillbaka + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Inloggning + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + <span style="font-size:16pt;">Konfigurera ditt VoIP-konto</span><br><br><span>Berätta för oss om ditt konto tillhandahålls<br/>av @company@ eller av någon annan tjänst</span> + + + @company@ account + @company@-konto + + + Generic SIP account + Allmänt SIP-konto + + + + AddIMContact + + Cancel + Avbryt + + + Contact Type (protocol): + Kontakttyp (protokoll): + + + Contact ID: + Kontakt-id: + + + Account: + Konto: + + + Enable + Aktivera + + + Login + Logga in + + + Add + Lägg till + + + @product@ - Add a Contact Account + @product@ - Lägg till ett kontaktkonto + + + + AddQuteComAccount + + Password: + Lösenord: + + + Need help? + Behöver du hjälp? + + + &Back + &Tillbaka + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Inloggning + + + &Connect + &Anslut + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Logga in</span><br><br><span>Ange din e-postadress och<br>lösenord</span> + + + Email Address: + E-postadress: + + + Click here if you don't have a @company@ account + Klicka här om du inte har ett @company@-konto + + + Forgot your @company@ password? + Glömt ditt @company@-lösenord? + + + + AddSIPAccount + + Password: + Lösenord: + + + Need help? + Behöver du hjälp? + + + &Back + &Tillbaka + + + Cancel + Avbryt + + + @product@ - Login + @product@ - Inloggning + + + &Connect + &Anslut + + + Activate presence and chat (SIP/SIMPLE) + Aktivera närvaro och chatt (SIP/SIMPLE) + + + Displayname: + Visningsnamn: + + + login / username: + inloggningsnamn / användarnamn: + + + Account name: + Kontonamn: + + + Proxy: + Proxyserver: + + + : + : + + + Server: + Server: + + + SIP Domain / Realm: + SIP-domän: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">Konfigurera din SIP-profil</span><br><br><span>Fyll i information så<br/>din programtelefon kan ansluta till ditt<br/>SIP-konto</span> + + + Advanced + Avancerat + + + + AdvancedConfigWindow + + Close + Stäng + + + Preference Name + Inställningsnamn + + + Type + Typ + + + Value + Värde + + + Default Value + Standardvärde + + + Save + Spara + + + Status + Status + + + @product@ - Advanced Configuration + @product@ - Avancerad konfiguration + + + + AdvancedSettings + + Add + Lägg till + + + Advanced Settings + Avancerade inställningar + + + Advanced Configuration Window + Avancerad konfiguration + + + Automatically answer incoming calls from + Svara automatiskt på inkommande samtal från + + + Remove + Ta bort + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Varning, den här delen är endast för erfarna användare.<br>Eventuella misstag kan skada programvaran. + + + + AppearanceSettings + + Toolbar + Verktygsrad + + + &Icons && Text + &Ikoner och text + + + Icons &Only + Endast i&koner + + + &Hidden + &Dold + + + Chat Theme + Chattema + + + Form + Formulär + + + + AudioSettings + + Reset + Nollställ + + + Audio Codecs + Ljudkodekar + + + &Input device: + &Ingångsenhet: + + + &Output device: + &Utgångsenhet: + + + &Ringing device: + &Ringenhet: + + + &Make a test call + Ri&ng ett testsamtal + + + Test + Testa + + + &Advanced >> + &Avancerat >> + + + &Half Duplex + &Halv duplex + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Formulär + + + + AvatarWidget + + Form + Formulär + + + + BrowserSoftUpdateWindow + + Close + Stäng + + + @product@ - Update available + @product@ - Uppdatering finns tillgänglig + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Tredje: + + + 1st: + Första: + + + 2nd: + Andra: + + + (+ country code) phone number + (+landskod) telefonnummer + + + Forward all unanswered calls to message box + Vidarekoppla alla obesvarade samtal till röstbrevlåda + + + Disable call forwarding + Inaktivera vidarekoppling + + + Forward all unanswered calls to following phone numbers: + Vidarekoppla alla obesvarade samtal till följande telefonnummer: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Till exempel +3314500XXXX (+33 är landskoden och 14500XXXX är telefonnumret) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + Vidarekoppling av samtal är aktiv om du inte är ansluten till @company@, när din linje är upptagen eller 20 sekunder efter att du inte svarade på ett samtal. Du kan konfigurera upp till tre vidarekopplingar till fasttelefoner, mobiltelefoner eller röstmeddelande (om möjligt) + + + + CallToaster + + Incoming Call + Inkommande samtal + + + Message + Meddelande + + + + ChatLogViewer + + Chat History + Chatthistorik + + + &Contact + &Kontakt + + + &Tools + &Verktyg + + + &Help + &Hjälp + + + &Actions + &Åtgärder + + + Main Toolbar + Huvudverktygsrad + + + Call Contact + Ring kontakt + + + Send a File + Skicka en fil + + + createChatConf + skapaChattKonf + + + Show Contact Info + Visa kontaktinfo + + + blockContact + blockeraKontakt + + + &Save History As... + &Spara historik som... + + + actionRestartChat + actionRestartChat + + + @company@ + @company@ + + + + ChatMainWindow + + &Contact + &Kontakt + + + &Tools + &Verktyg + + + &Actions + &Åtgärder + + + Main Toolbar + Huvudverktygsrad + + + Call Contact + Ring kontakt + + + Send a File + Skicka en fil + + + Show Contact Info + Visa kontaktinfo + + + blockContact + blockeraKontakt + + + &Save History As... + &Spara historik som... + + + @company@ + @company@ + + + MainWindow + Huvudfönster + + + &Edit + R&edigera + + + Cu&t + Klipp &ut + + + Ctrl+X + Ctrl+X + + + &Copy + &Kopiera + + + Ctrl+C + Ctrl+C + + + &Paste + Klistra &in + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + Starta chattkonferens + + + &Close + &Stäng + + + Conference + Konferens + + + + ChatRoomInviteWidget + + Chat room + Chattrum + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chattrum</span></p></body></html> + + + (Conference participants) + (Konferensdeltagare) + + + &Remove + &Ta bort + + + &Start + &Starta + + + Group Name + Gruppnamn + + + &Add + &Lägg till + + + + ChatToaster + + Message + Meddelande + + + Incoming Chat + Inkommande chatt + + + + ChatWidget + + Form + Formulär + + + + ConferenceCallWidget + + Cancel + Avbryt + + + Start + Starta + + + Phone number 2: + Telefonnummer 2: + + + Phone number 1: + Telefonnummer 1: + + + ... + ... + + + @product@ - Create a Conference + @product@ - Skapa en konferens + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferens</span><br /><br />Ange två telefonnummer </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@-kontakt-ID för att</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">skapa en trevägskonferens.</p> + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + <span style=" font-size:18pt;">Konferens</span><br /><br />Ange två telefonnummer </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@-kontakt-ID för att</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">skapa en trevägskonferens.</p> + + + &Add >> + &Lägg till >> + + + << &Remove + << &Ta bort + + + Available Contacts + Tillgängliga kontakter + + + &Start + &Starta + + + Cancel + Avbryt + + + + ContactGroupPopupMenu + + Remove Contact Group + Ta bort kontaktgrupp + + + Rename Contact Group + Byt namn på kontaktgrupp + + + Delete group + Ta bort grupp + + + Do you really want to delete this group? + Vill du verkligen ta bort denna grupp? + + + &Yes + &Ja + + + &No + &Nej + + + + ContactList + + Contact List + Kontaktlista + + + goupname + + + + + ContactWidget + + No mobile phone number set + Inget mobiltelefonnummer har ställts in + + + No landline phone number set + Inget fasttelefonnummer har ställts in + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att redigera den här kontakten</p></body></html> + + + + CrashReport + + Cancel + Avbryt + + + Program Failure + Programfel + + + Send + Skicka + + + Optional Information + Valfri information + + + Your Mail: + Din e-postadress: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Inte tillgänglig + + + Click here to change your call forward settings + Klicka här för att ändra dina vidarekopplingsinställningar + + + Call forward mode: + Läge för vidarekoppling: + + + Purchase call out credits + Fyll på saldo för att ringa ut + + + Call Forward Method + Metod för vidarekoppling + + + Call Voice Mail + Ring upp röstbrevlåda + + + Click here to buy @company@'s credits + Klicka här för att fylla på @company@-saldot + + + + DesktopService + + Root Folder + Rotmapp + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + Klicka på de olika färgobjekten för att skicka ljud till den du pratar med. + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Klicka här för att ringa upp din röstbrevlåda + + + New Voice Mail: + Nytt röstmeddelande: + + + Click here to see missed call(s) + Klicka här för att se dina missade samtal + + + Missed Call(s): + Missade samtal: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Hämta + + + Upload + Skicka upp + + + Click here to change your download folder + Klicka här för att ändra din hämtningsmapp + + + Download folder: + Mapp för hämtningar: + + + Clean all items in the list + Töm alla objekt i listan + + + &Clean + &Töm + + + @product@ - File Transfer Manager + @product@ - Hantera filöverföringar + + + + FileTransferItem + + Cancel + Avbryt + + + Form + Formulär + + + Pause + Paus + + + <i>From:</i> + <i>Från:</i> + + + + GeneralSettings + + When I double-click on a contact + När jag dubbelklickar på en kontakt + + + Call cell phone or land line if contact not online + Ring mobiltelefon eller hemtelefon om kontakten inte är ansluten + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Inaktivitetsstatus + + + minutes + minuter + + + Show me as "Away" when I am inactive for: + Visa mig som "Frånvarande" när jag är inaktiv i: + + + When I start my computer + När jag startar min dator + + + Automatically start @product@ + Starta @product@ automatiskt + + + + GoogleTalkSettings + + Login: + Inloggningsnamn: + + + Password: + Lösenord: + + + GoogleTalk Settings + Inställningar för GoogleTalk + + + Forgot your GoogleTalk password? + Glömt ditt GoogleTalk-lösenord? + + + Get a new GoogleTalk Account + Skaffa ett nytt GoogleTalk-konto + + + + HttpProxyLoginWindow + + Cancel + Avbryt + + + HTTP Proxy Address: + Adress för HTTP-proxy: + + + HTTP Proxy Port Number: + Portnummer för HTTP-proxy: + + + HTTP Proxy Login: + Inloggningsnamn för HTTP-proxy: + + + HTTP Proxy Password: + Lösenord för HTTP-proxy: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Autentisering för HTTP-proxy</span><br><br><span>Din lokala HTTP-proxy använder autentisering<br>Ange ditt inloggningsnamn och lösenord</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + @product@ - Lokal HTTP-proxy + + + + ICQSettings + + Login: + Inloggningsnamn: + + + Password: + Lösenord: + + + ICQ Settings + Inställningar för ICQ + + + Forgot your ICQ password? + Glömt ditt ICQ-lösenord? + + + Get a new ICQ Account + Skaffa ett nytt ICQ-konto + + + + IMAccountManager + + Close + Stäng + + + Login + Logga in + + + Add + Lägg till + + + Delete + Ta bort + + + Modify + Ändra + + + Protocol + Protokoll + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + @product@ - Mina snabbmeddelandekonton (MSN, Jabber...) + + + + IMAccountTemplate + + Cancel + Avbryt + + + Save + Spara + + + IM Account Settings + Inställningar för IM-konto + + + + IMContactManager + + Add + Lägg till + + + Delete + Ta bort + + + Contact Type (protocol) + Kontakttyp (protokoll) + + + Click on the add button below to add a new ID + Klicka på Lägg till-knappen nedan för att lägga till ett nytt id + + + Contact ID + Kontakt-id + + + + IMProfileWidget + + Enter your nickname here + Ange ditt smeknamn här + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Lägg till ett snabbmeddelandekonto (MSN, AIM, GoogleTalk...) + + + Add an IM account + Lägg till ett IM-konto + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att ändra din avatar</p></body></html> + + + + ImageSelector + + Cancel + Avbryt + + + OK + OK + + + Go Up + Gå uppåt + + + Refresh + Uppdatera + + + + JabberSettings + + Login: + Inloggningsnamn: + + + Password: + Lösenord: + + + Jabber Settings + Inställningar för Jabber + + + Connect Server: + Anslutningsserver: + + + <u>Advanced Options</u> + <u>Avancerade alternativ</u> + + + Require TLS + Kräv TLS + + + Port: + Port: + + + Use TLS if available + Använd TLS om tillgängligt + + + Allow plaintext authentication over unencrypted streams + Tillåt autentisering i klartext över okrypterade strömmar + + + 5222 + 5222 + + + Force old (port 5223) SSL + Tvinga gammal (port 5223) SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Ditt språk finns inte här. Du vet att du kan göra din egna översättning på Launchpad? + + + More information here. + Mer information finns här. + + + + LogAccount + + Password: + Lösenord: + + + Need help? + Behöver du hjälp? + + + Cancel + Avbryt + + + Delete + Ta bort + + + @product@ - Login + @product@ - Inloggning + + + Account: + Konto: + + + &Connect + &Anslut + + + Forgot your @company@ password? + Glömt ditt @company@-lösenord? + + + &Modify + Ä&ndra + + + Configure a &New Profile + Konfigurera en &ny profil + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + <span style="font-size:16pt;">Logga in</span><br><br><span>Välj en tidigare använd profil<br/> eller fyll i information för att ansluta till ett<br/> @company@-konto</span> + + + + MSNSettings + + Login: + Inloggningsnamn: + + + Password: + Lösenord: + + + MSN Settings + Inställningar för MSN + + + Forgot your MSN password? + Glömt ditt MSN-lösenord? + + + Get a new MSN Account + Skaffa ett nytt MSN-konto + + + Use HTTP method + Använd HTTP-metod + + + + MainWindow + + MainWindow + Huvudfönster + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Acceptera samtal + + + Send Chat Message + Skicka chattmeddelande + + + Make Call + Ring samtal + + + Hang Up + Lägg på + + + + ManageBlockedUsersSettings + + Close + Stäng + + + Unblock User + Avblockera användare + + + Manage blocked users + Hantera blockerade användare + + + @product@ - Manage blocked users + @product@ - Hantera blockerade användare + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + @product@ - SMS + + + I have a @company@ account + Jag har ett @company@-konto + + + Create a @company@ account + Skapa ett @company@-konto + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + För att skicka SMS behöver du vara inloggad med ett<br>@company@-konto och ha pengar på ditt @company@-konto. + + + + NotificationSettings + + Select the events for which a sound should be played. + Välj de händelser för vilka ett ljud ska spelas upp. + + + + NotificationSettingsItem + + Sound file + Ljudfil + + + Find a sound file + Hitta en ljudfil + + + Play sound file + Spela upp ljudfil + + + Play + Spela upp + + + + NotifyDialog + + File Transfer + Filöverföring + + + &Ok + &Ok + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Uppgradera</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + &Acceptera + + + Status + Status + + + 00:00:00 + 00.00.00 + + + Nickname + Smeknamn + + + &Reject + &Neka + + + Dialpad + Knappsats + + + Audio Smileys + Ljudsmilisar + + + Communication is encrypted + Kommunikationen är krypterad + + + + PrivacySettings + + Manage blocked users + Hantera blockerade användare + + + Privacy Rules + Integritetsregler + + + Always sign in as "Invisible" (appear offline to all users) + Logga alltid in som "Osynlig" (ser ut att vara frånkopplad) + + + Allow chats from + Tillåt chattar från + + + Anyone + Vem som helst + + + Only people from my contact list + Endast personer i min kontaktlista + + + Allow calls from + Tillåt samtal från + + + When I sign into @company@ + När jag loggar in på @company@ + + + + ProfileDetails + + Cancel + Avbryt + + + Save + Spara + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att ändra din avatar</p></body></html> + + + General + Allmänt + + + Network IDs (MSN, Jabber...) + Nätverks-id (MSN, Jabber...) + + + Advanced >> + Avancerat >> + + + Fill in all your network Id to stay connected with your contacts + Fyll i alla dina nätverks-id för att hålla kontakten med dina kontakter + + + Contact + Kontakt + + + Group: + Grupp: + + + Last Name: + Efternamn: + + + First Name: + Förnamn: + + + Details + Detaljer + + + Web/blog: + Webb/blogg: + + + Country: + Land: + + + State: + Län/Region: + + + City: + Stad: + + + Gender: + Kön: + + + Birth Date: + Födelsedag: + + + Email: + E-post: + + + Notes + Noteringar + + + Phone Numbers + Telefonnummer + + + Home phone + Hemtelefon + + + Mobile phone + Mobiltelefon + + + dd MMMM yyyy + yyyy MMMM dd + + + Unknown + Okänd + + + Male + Man + + + Female + Kvinna + + + + QObject + + @product@ + @product@ + + + + QtAccountSettings + + Accounts + Konton + + + Accounts Settings + Kontoinställningar + + + + QtAddAccount + + Configure your voip account + Konfigurera ditt voip-konto + + + Please tell us if your account is provided<br/>by @company@ or by another service + Berätta för oss om ditt konto tillhandahålls<br/>av @company@ eller av en annan tjänst + + + + QtAddAccountUtils + + Test + Testa + + + Audio Test Call + Ljudtestsamtal + + + Video Test Call + Videotestsamtal + + + + QtAddQuteComAccount + + Login + Logga in + + + Please enter an email address. + Ange en e-postadress. + + + Please enter your email address<br/>and your password + Ange din e-postadress<br/>och ditt lösenord + + + @product@ - Login + @product@ - Login + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Fyll i information så att<br/>din programtelefon kan ansluta till<br/>ditt SIP-konto + + + Configure your SIP profile + Konfigurera din SIP-profil + + + + QtAdvancedIMContactManager + + Cancel + Avbryt + + + @product@ + @product@ + + + Are sure you want to delete this IM contact? + + Är du säker på att du vill ta bort denna IM-kontakt? + + + + &Delete + &Ta bort + + + + QtAdvancedSettings + + Advanced + Avancerat + + + Advanced Settings + Avancerade inställningar + + + + QtAppearanceSettings + + Me + Jag + + + Hello + Hej + + + How are you? + Hur mår du? + + + Other + Övrigt + + + I am fine + Jag mår bra + + + Have to go + Måste tyvärr gå + + + Bye + Hej då + + + Appearance + Utseende + + + Appearance Settings + Inställningar för utseende + + + + QtAudioSettings + + Advanced + Avancerat + + + Audio + Ljud + + + Audio Settings + Ljudinställningar + + + + QtCallBar + + +(country code) number or nickname + +(landskod) nummer eller smeknamn + + + + QtCallForwardSettings + + Call Forward + Vidarekoppling + + + Call Forward Settings + Inställningar för vidarekoppling + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Spara som + + + + QtChatLogViewer + + Account + + + + Edit Contact + Redigera kontakt + + + + QtChatTabWidget + + Close chat + Stäng chatt + + + + QtChatWidget + + %1 is connected. + %1 är ansluten. + + + %1 is disconnected. + %1 är frånkopplad. + + + send + skicka + + + Your file can not be sent: your contact must be connected on the @company@ network. + Din fil kan inte skickas: din kontakt måste vara ansluten till @company@-nätverket. + + + Your contact wishes to send a file with @company@. + Din kontakt önskar att skicka en fil med @company@. + + + Go to %1 to install it + Gå till %1 för att installera det + + + %1 has joined the chat + %1 har kommit in i chatten + + + %1 has left the chat + %1 har lämnat chatten + + + + QtChatWindow + + Edit Contact + Redigera kontakt + + + @product@ Chat + @product@ Chatt + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + Ring SIP + + + Call land line + Ring fasttelefon + + + Call Mobile + Ring mobiltelefon + + + Call @company@ + Ring till @company@ + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>Du kan nu informera din första part att han/hon kommer att bli med i ett konferenssamtal.</b><br><br>När det är gjort kan du klicka på knappen nedan. Din första part kommer att sättas på vänt under tiden din andra part kommer att ringas upp.<br> + + + Hold first interlocutor and call second one + Sätt första parten på vänt och ring upp den andra + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>Du kan nu informera din andra part att han/hon kommer att vara en part av ett konferenssamtal.</b><br><br>När det är gjort kan du klicka på knappen nedan för att påbörja konferensen. + + + Start Conference + Starta konferens + + + @product@ - Proceed Conference + @product@ - Fortsätt till konferens + + + + QtContactList + + &Yes + &Ja + + + &No + &Nej + + + Merge %1 with %2? + Sammanfoga %1 med %2? + + + @product@ - Merge Contacts + @product@ - Sammanfoga kontakter + + + + QtContactManager + + &Yes + &Ja + + + &No + &Nej + + + Home phone + Hemtelefon + + + Mobile phone + Mobiltelefon + + + @product@ + @product@ + + + Edit Contact + Redigera kontakt + + + Do you really want to delete this contact? + Vill du verkligen ta bort denna kontakt? + + + Start chat + Starta chatt + + + Delete contact + Ta bort kontakt + + + Call + Ring + + + Free call + + + + Work phone + Arbetstelefon + + + Send SMS + Skicka SMS + + + Edit contact + Redigera kontakt + + + Block contact + Blockera kontakt + + + Invite to conference + Bjud in till konferens + + + Go to website + Gå till webbplats + + + Send file + Skicka fil + + + Forward to mobile phone + Vidarekoppla till mobiltelefon + + + + QtContactWidget + + No mobile phone number set + Inget mobiltelefonnummer har ställts in + + + No landline phone number set + Inget fasttelefonnummer har ställts in + + + Click here to call + Klicka här för att ringa + + + Click here to set a phone number + Klicka här för att ställa in ett telefonnummer + + + Click here to edit the contact + Klicka här för att redigera kontakten + + + Click here to send a SMS + Klicka här för att skicka ett SMS + + + Click here to start a chat + Klicka här för att starta en chatt + + + Click here to start a free call + Klicka här för att ringa ett gratissamtal + + + Click here to send a file + Klicka här för att skicka en fil + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Vill du ringa upp din röstbrevlåda? + + + @product@ - Voice Mail + @product@ - Röstbrevlåda + + + + QtFileTransfer + + &Yes + &Ja + + + &No + &Nej + + + Choose a directory + Välj en katalog + + + Overwrite File? + Skriv över fil? + + + A file called %1 already exists.Do you want to overwrite it? + En fil med namnet %1 finns redan. Vill du skriva över den? + + + File size error + Filstorleksfel + + + %1 exceeds the maximum authorized size. + %1 överstiger maximal behörig storlek. + + + %1 has size 0. + %1 har en storlek på 0. + + + %1 is a directory. + %1 är en katalog. + + + You can not send a directory. + Du kan inte skicka en katalog. + + + %1 is a shortcut. + %1 är en genväg. + + + You can not send a shortcut. + Du kan inte skicka en genväg. + + + All Files (*.* *) + Alla filer (*.* *) + + + Please upgrade<br> your @product@ + Uppgradera<br> din @product@ + + + Tell your contact<br> to upgrade<br> his @product@ + Tala om för din kontakt<br> att uppgradera<br> sin @product@ + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + Filen kan inte tas emot: du måste uppgradera ditt @product@ för att kunna ta emot den. + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + försöker skicka dig en fil men kontaktens @product@ måste uppgraderas för att kunna ta emot den. Informera kontakten om att uppgradera till senaste versionen. + + + + QtFileTransferItem + + Cancel + Avbryt + + + Remove + Ta bort + + + Pause + Paus + + + Starting + Startar + + + From: + Från: + + + To: + Till: + + + Open + Öppna + + + Resume + Återuppta + + + Waiting for anwser... + Väntar på svar... + + + Done + Klar + + + Failed + Misslyckades + + + Paused + Pausad + + + Paused by peer + Pausad av motpart + + + Cancelled + Avbruten + + + Cancelled by peer + Avbröts av motpart + + + Downloading... + Hämtar... + + + Uploading... + Skickar upp... + + + Waiting for peer... + Väntar på part... + + + An error occured during the file transfer + Ett fel inträffade under filöverföringen + + + This may be caused by : + Det här kan ha orsakats av : + + + Your @product@ is not up to date. Please download the latest version on + Din @product@ är inte uppdaterad. Hämta den senaste versionen på + + + The @company@ network may be temporarily unavailable. Please try later. + @company@-nätverket kan vara temporärt otillgängligt. Försök igen senare. + + + + QtGeneralSettings + + General + Allmänt + + + General Settings + Allmänna inställningar + + + + QtHistory + + Incoming call + Inkommande samtal + + + Outgoing call + Utgående samtal + + + Missed call + Missade samtal + + + Rejected call + Vägrade samtal + + + Outgoing SMS + Utgående SMS + + + Do you want to call %1? + Vill du ringa till %1? + + + Chat session + Chattsession + + + @product@ - Call History + @product@ - Samtalshistorik + + + Type + Typ + + + Name/ID + Namn/ID + + + Date + Datum + + + Duration + Längd + + + + QtHistoryWidget + + Erase this entry + Radera denna post + + + Open in SMS window + Öppna i SMS-fönster + + + Call this peer + Ring den här parten + + + Show chat log + Visa chattlogg + + + + QtIMAccountManager + + Cancel + Avbryt + + + @product@ + @product@ + + + &Delete + &Ta bort + + + Are sure you want to delete this account? + + Är du säker på att du vill ta bort detta konto? + + + + + QtIMAccountMonitor + + Disconnected + Frånkopplad + + + Error: %1 + Fel: %1 + + + Online + Ansluten + + + Invisible + Osynlig + + + Away + Frånvarande + + + Do not disturb + Stör inte + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + + QtIMAccountPlugin + + @product@ + @product@ + + + Please enter a login + Ange ett inloggningsnamn + + + + QtIMAccountPresenceMenuManager + + Cancel + Avbryt + + + @product@ + @product@ + + + &Delete + &Ta bort + + + Online + Ansluten + + + Invisible + Osynlig + + + Away + Frånvarande + + + Do Not Disturb + Stör inte + + + Disconnect + Koppla från + + + Delete Account + Ta bort konto + + + Are sure you want to delete the account <b>%1</b>? + Är du säker på att du vill ta bort kontot <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + Redigera min profil + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + %1 (%2) +%3 + + + + QtLanguagesSettings + + Language + Språk + + + Language Settings + Språkinställningar + + + + QtLogAccount + + Invalid account + Ogiltigt konto + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + Välj en tidigare använd profil<br/> eller fyll i information för att ansluta till ett<br/> @company@-konto + + + + QtLoginDialog + + @product@ - Login + @product@ - Login + + + + QtNotificationSettings + + Incoming call (ringtone) + Inkommande samtal (rington) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Samtal bröts (lägg på luren-ton) + + + Incoming chat + Inkommande chatt + + + IM account connected + IM-konto ansluten + + + IM account disconnected + IM-konto kopplade från + + + Contact online + Kontakt ansluter + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Välj en ljudfil + + + Sounds + Ljud + + + + QtPhoneCall + + Status + Status + + + Incoming Call + Inkommande samtal + + + Resume + Återuppta + + + Hang-up + Lägg på + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Fel + + + Talking + Tal + + + Dialing + Ringer + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Ringer + + + Redirected + Vidarekopplad + + + Initialization... + Initierar... + + + Closed + Stängd + + + Hold + Parkera + + + Add contact + Lägg till kontakt + + + Ca&ncel + Av&bryt + + + Talking - Conference + Tal - konferens + + + Add a Contact + Lägg till en kontakt + + + + QtPresenceMenuManager + + Online + Ansluten + + + Invisible + Osynlig + + + Away + Frånvarande + + + Do Not Disturb + Stör inte + + + Log off + Logga av + + + + QtPrivacySettings + + Privacy + Konfidentialitet + + + Privacy Settings + Integritetsinställningar + + + + QtProfileBar + + Click here to change your status + Klicka här för att ändra din status + + + active + aktiv + + + voicemail + röstbrevlåda + + + inactive + inaktiv + + + unauthorized + oauktoriserad + + + Set global presence to: + Ställ in global närvaro till: + + + Voice mail + Röstbrevlåda + + + + QtProfileDetails + + Advanced >> + Avancerat >> + + + @product@ + @product@ + + + A contact must have a group, please set a group. + En kontakt måste ha en grupp, sätt upp en grupp. + + + << Simple + << Enkel + + + Select your avatar + Välj din avatar + + + @product@ - No Group Selected + @product@ - Ingen grupp har valts + + + @company@ Avatars + @company@-avatarer + + + + QtQuteCom + + &Cancel + &Avbryt + + + Conference + Konferens + + + Call + Ring + + + Account + + + + Add a Contact + Lägg till en kontakt + + + You have unfinished call(s). + Du har ofärdiga samtal. + + + @product@ - Warning + @product@ - Varning + + + Home + Hem + + + Are you sure you want to exit the application? + Är du säker på att du vill avsluta programmet? + + + &Exit + A&vsluta + + + @product@ - Call Error + @product@ - Samtalsfel + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Avancerat + + + General + Allmänt + + + Accounts + Konton + + + Audio + Ljud + + + Call Forward + Vidarekoppling + + + Language + Språk + + + Privacy + Konfidentialitet + + + Video + Video + + + Voicemail + Röstbrevlåda + + + security + säkerhet + + + Notifications + + + + + QtRenameGroup + + Bad group name + Felaktigt gruppnamn + + + Group name cannot be empty + Gruppnamnet får inte vara tomt + + + + QtSecuritySettings + + Security + Säkerhet + + + Security Settings + Säkerhetsinställningar + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Fyll i ett telefonnummer. + + + Do you want to continue? + Vill du fortsätta? + + + Your SMS has not been sent + Ditt SMS har inte skickats + + + Your SMS has been sent + Ditt SMS har skickats + + + Your message is too long. +This will send + Ditt meddelande är för långt. +Det här kommer att skicka + + + SMS. + + SMS. + + + + You can not send an empty message. + Du kan inte skicka ett tomt meddelande. + + + @company@ SMS service + @company@ SMS-tjänst + + + + QtSoftUpdate + + @product@ - Update failed + @product@ - Uppdatering misslyckades + + + @product@ update failed to start: try to update @product@ manually + Uppdatering av @product@ misslyckades att starta: prova att uppdatera @product@ manuellt + + + + QtStatusBar + + Not connected + Inte ansluten + + + Register done + Registrering färdig + + + Unregister done + Avregistrering färdig + + + Connecting + Ansluter + + + Output volume is muted + Utgångsvolymen är tystad + + + Output volume is 0 + Utgångsvolymen är 0 + + + Click to adjust output volume + Klicka för att justera utgångsvolym + + + Input volume is muted + Ingångsvolymen är tystad + + + Input volume is 0 + Ingångsvolymen är 0 + + + Click to adjust input volume + Klicka för att justera ingångsvolym + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Status + + + @product@ + @product@ + + + Call SIP + Ring SIP + + + Call land line + Ring fasttelefon + + + Call Mobile + Ring mobiltelefon + + + Call @company@ + Ring till @company@ + + + Call + Ring + + + Send SMS + Skicka SMS + + + Online + Ansluten + + + Invisible + Osynlig + + + Away + Frånvarande + + + Do Not Disturb + Stör inte + + + Internet Connection Error + Internetanslutningsfel + + + Offline + Frånkopplad + + + Connecting... + Ansluter... + + + Send a SMS + Skicka ett SMS + + + Start a chat + Starta en chatt + + + Place Call + Ring samtal + + + Send File + Skicka fil + + + Multiple Status + Fler status + + + Unknown Status + Okänd status + + + Quit @product@ + Avsluta @product@ + + + + QtToolBar + + &Cancel + &Avbryt + + + @product@ - Proceed Conference + @product@ - Fortsätt till konferens + + + Edit My Profile + Redigera min profil + + + Add a Contact + Lägg till en kontakt + + + Hide Unavailable Contacts + Dölj otillgängliga kontakter + + + Show Unavailable Contacts + Visa otillgängliga kontakter + + + Hide Groups + Dölj grupper + + + Show Groups + Visa grupper + + + You have unfinished call(s). + Du har ofärdiga samtal. + + + Are you sure you want to log off? + Är du säker på att du vill logga av? + + + &Log Off + &Logga av + + + Disable &Video Calls + Inaktivera &videosamtal + + + Enable &Video Calls + Aktivera &videosamtal + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Konferensen kan inte påbörjas när det finns aktiva samtal.</b><br><br>Avsluta alla samtal och prova igen. + + + @product@ - Warning + @product@ - Varning + + + Log &Off... + Logga a&v... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Kontaktlista + + + + QtUserProfile + + Edit Contact + Redigera kontakt + + + &Authorize + &Auktorisera + + + &Block + &Blockera + + + Network error. + Nätverksfel. + + + @product@ - Authorization Request + @product@ - Auktoriseringsbegäran + + + + QtUserProfileHandler + + @product@ + @product@ + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + Ett problem inträffade vid inläsning av din profil. +Den senaste säkerhetskopierade profilen har lästs +in: du kan ha förlorat de senast gjorda ändringarna + + + Your profile could not be loaded. +Choose another profile or create a new one. + Din profil kunde inte läsas in. +Välj en annan profil eller skapa en ny. + + + Wrong email/password entered + Felaktigt e-post/lösenord angavs + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + @product@ + + + + QtVideoSettings + + Video + Video + + + Normal + Normal + + + Good + Bra + + + Very good + Mycket bra + + + Excellent + Otroligt bra + + + Video Settings + Videoinställningar + + + + QtVoicemailSettings + + Voicemail + Röstbrevlåda + + + Voicemail Settings + Inställningar för röstbrevlåda + + + + QtWebDirectory + + @product@ - Directory + @product@ - Katalog + + + + QuteComConfigDialog + + Cancel + Avbryt + + + Save + Spara + + + Title + Titel + + + @product@ - Configuration + @product@ - Konfiguration + + + + QuteComWindow + + &Accept + &Acceptera + + + &Hidden + &Dold + + + &Tools + &Verktyg + + + &Help + &Hjälp + + + &Actions + &Åtgärder + + + @company@ + @company@ + + + &Close + &Stäng + + + Dialpad + Knappsats + + + @product@ + @product@ + + + Start Conference + Starta konferens + + + Send SMS + Skicka SMS + + + Contacts + Kontakter + + + History + Historik + + + Clear &History + Töm &historik + + + ToolBar + Verktygsrad + + + Show/Hide Unavailable &Contacts + Visa/Dölj otillgängliga &kontakter + + + &Chat Sessions + &Chattsessioner + + + &All + &Alla + + + &HangUp + &Lägg på + + + &Hold/Resume + &Parkera/Återuppta + + + Show/Hide &Groups + Visa/Dölj &grupper + + + &Outgoing Calls + &Utgående samtal + + + &Incoming Calls + &Inkommande samtal + + + &Missed Calls + &Missade samtal + + + Enable/Disable &Video Calls + Aktivera/inaktivera &videosamtal + + + Short Text &Messages (SMS) + Korta text&meddelanden (SMS) + + + Rejected Calls + Vägrade samtal + + + &Contacts + &Kontakter + + + &About... + &Om... + + + Add &Contact... + Lägg till &kontakt... + + + &Configuration... + &Konfiguration... + + + Send SMS... + Skicka SMS... + + + View My &Profile... + Visa min &profil... + + + View My Profile + Visa min profil + + + Start &Conference... + Starta &konferens... + + + &Find Contact... + &Sök kontakt... + + + Log &Off... + Logga a&v... + + + Log Off + Logga av + + + Show &Chat Window + Visa &chattfönster + + + Show Chat Window + Visa chattfönster + + + Show &File Transfer + Visa &filöverföring + + + Add Contact + Lägg till kontakt + + + View My @company@ Account... + Visa mitt @product@-konto... + + + Ctrl+W + Ctrl+W + + + @company@ &Forum... + @company@-&forum... + + + @company@ &Wiki/FAQ... + @company@ &Wiki/Frågor och svar... + + + Learn more about @company@ Services... + Lär dig mer om @company@ Services... + + + Search + Sök + + + Find @company@ Contacts + Sök efter @company@-kontakter + + + &Quit + A&vsluta + + + Ctrl+Q + Ctrl+Q + + + &Text Under Icons + &Text under ikoner + + + &Icons Only + Endast &ikoner + + + Add + Lägg till + + + SMS + SMS + + + Conference + Konferens + + + + RenameGroupDialog + + Cancel + Avbryt + + + OK + OK + + + Enter the new group name: + Ange det nya gruppnamnet: + + + @product@ - Rename Contact Group + @product@ - Byt namn på kontaktgrupp + + + + SecuritySettings + + Form + Formulär + + + Enable call encryption + Aktivera samtalskryptering + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + @product@ kan kryptera samtal med 128-bitars AES-kryptering och använda Diffie-Hellman för nyckelutbyte. + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Uppdatera din profil + + + Yahoo! ID: + Yahoo!-id: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN-id: + + + SIP ID: + SIP ID: + + + ICQ ID: + ICQ-id: + + + AIM ID: + AIM-id: + + + @company@ ID: + @company@ ID: + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Skicka + + + @product@ - SMS + @product@ - SMS + + + Click here to add a phone number + Klicka här för att lägga till ett telefonnummer + + + 0 /160 + 0 /160 + + + Enter your signature here + Ange din signatur här + + + Signature: + Signatur: + + + Phone number(s): + Telefonnummer: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Ange telefonnumren här<br>De måste separeras med &, ; eller , + + + + SoftUpdateWindow + + Cancel + Avbryt + + + @product@ - Downloading update + @product@ - Hämtar uppdatering + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Formulär + + + + VideoSettings + + Normal + Normal + + + Good + Bra + + + Very good + Mycket bra + + + Excellent + Otroligt bra + + + Enable video + Aktivera video + + + Webcam Selection + Val av webbkamera + + + Webcam device: + Webbkameraenhet: + + + Webcam Preview + Förhandsvisning webbkamera + + + Connection Type + Anslutningstyp + + + Video quality + Videokvalitet + + + Down (kbit/s) + Ner (kbit/s) + + + Up (kbit/s) + Upp (kbit/s) + + + 0 to 512 + 0 till 512 + + + 0 to 128 + 0 till 128 + + + 512 to 2048 + 512 till 2048 + + + 128 to 256 + 128 till 256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + Videokvaliteten är beroende på bandbredden för din Internetanslutning + + + Make a test video call + Gör ett testvideosamtal + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + @product@ - Video + + + + VoicemailSettings + + Form + Formulär + + + Phone number of your voicemail: + Telefonnummer till din röstbrevlåda: + + + Please fill in here the information about your voicemail + Fyll i information om din röstbrevlåda + + + + Wizard + + Cancel + Avbryt + + + Finish + Färdig + + + Next > + Nästa > + + + < Back + < Tillbaka + + + Simple Wizard - Step %1 of %2 + Enkel guide - Steg %1 av %2 + + + + YahooSettings + + Login: + Inloggningsnamn: + + + Password: + Lösenord: + + + Yahoo! Settings + Inställningar för Yahoo! + + + Use Yahoo! Japan server + Använd Yahoo! Japan-server + + + Forgot your Yahoo! password? + Glömt ditt Yahoo!-lösenord? + + + Get a new Yahoo! Account + Skaffa ett nytt Yahoo!-konto + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_tr.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_tr.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_tr.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_tr.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4074 @@ + + + + + AIMSettings + + Login: + Giriş: + + + Forgot your AIM password? + AIM parolanızı mı unuttunuz? + + + Get a new AIM Account + Yeni bir AIM hesabı aç + + + Password: + Parola: + + + AIM Settings + AIM Ayarları + + + + AboutWindow + + About + Hakkında + + + Copyright (C)2008 Mbdsys + + + + Authors + Yazarlar + + + Close + Kapat + + + 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. + Bu program özgür bir yazılımdır; yeniden dağıtabilir ve/veya +Özgür Yazılım Vakfı (FSF) tarafından yayınlanan +GNU Genel Kamu Lisansı'nın ikinci ya da daha sonraki +bir sürümü doğrultusunda değiştirebilirsiniz. + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Dosya Transferi + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + Kabul et + + + &Cancel + İptal + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bağlantı: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dosya adı: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Gelen dosya</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Kişisel bilgilerimi düzenle + + + + AddAccount + + Configure your account: + Hesabınızı yapılandırın: + + + &Next + & Sonraki + + + Need help? + Yardıma ihtiyacınız var mı? + + + You don't have any account ? Click here + Henüz bir hesabınız yok mu? Buraya tıklayın + + + &Back + Geri + + + Cancel + İptal + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + Genel SIP hesabı + + + + AddIMContact + + Cancel + İptal + + + Contact Type (protocol): + İletişim Tipi (protokol): + + + Contact ID: + Bağlantı Kimliği: + + + Account: + Hesap: + + + Enable + Etkinleştir + + + Login + Kullanıcı Adı: + + + Add + Ekle + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Parola: + + + Need help? + Yardıma ihtiyacınız var mı? + + + &Back + Geri + + + Cancel + İptal + + + @product@ - Login + + + + + &Connect + Bağlan + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Giriş</span><br><br><span>Lütfen e-posta adresi ve<br>parolanızı giriniz</span> + + + Email Address: + E-posta Adresi: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Parola: + + + Need help? + Yardıma ihtiyacınız var mı? + + + &Back + Geri + + + Cancel + İptal + + + @product@ - Login + + + + + &Connect + Bağlan + + + Activate presence and chat (SIP/SIMPLE) + Bağlantı ve sohbet durumu (SIP/SIMPLE) bildirimini etkinleştir + + + Displayname: + Ekran adı: + + + login / username: + giriş / kullanıcıadı + + + Account name: + Hesap adı: + + + Proxy: + Vekil sunucu: + + + : + : + + + Server: + Sunucu: + + + SIP Domain / Realm: + SIP Alan Adı: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">SIP profilinizi yapılandırın</span><br><br><span>Lütfen SIP hesabınıza<br/>bağlanmak için gerekli olan<br/>tüm bilgileri giriniz.</span> + + + Advanced + Gelişmiş + + + + AdvancedConfigWindow + + Close + Kapat + + + Preference Name + Ayar Adı + + + Type + Tür + + + Value + Değer + + + Default Value + Öntanımlı Değer + + + Save + Kaydet + + + Status + Durum + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Ekle + + + Advanced Settings + Gelişmiş Ayarlar + + + Advanced Configuration Window + Gelişmiş Yapılandırma Penceresi + + + Automatically answer incoming calls from + Şu kişiden gelen çağrıları otomatik cevaplandır + + + Remove + Kaldır + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Dikkat, bu bölüm deneyimli kullanıcılar içindir.<br> Yapılacak bir hata, yazılımın çalışmamasına neden olabilir. + + + + AppearanceSettings + + Toolbar + Araç Çubuğu + + + &Icons && Text + &Simgeler && Metin + + + Icons &Only + Sadece Simgeler + + + &Hidden + &Gizli + + + Chat Theme + Sohbet Teması + + + Form + Form + + + + AudioSettings + + Reset + Sıfırla + + + Audio Codecs + Ses Kodekleri + + + &Input device: + &Girdi cihazı: + + + &Output device: + &Çıktı cihazı: + + + &Ringing device: + + + + + &Make a test call + &Test çağrısı yap + + + Test + Test + + + &Advanced >> + &Gelişmiş >> + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Form + + + + AvatarWidget + + Form + Form + + + + BrowserSoftUpdateWindow + + Close + Kapat + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + Üçüncü: + + + 1st: + Birinci: + + + 2nd: + İkinci: + + + (+ country code) phone number + (+ ülke kodu) telefon numarası + + + Forward all unanswered calls to message box + Cevapsız çağrıları mesaj kutusuna yönlendir + + + Disable call forwarding + Çağrı yönlendirmeyi devre dışı bırak + + + Forward all unanswered calls to following phone numbers: + Tüm cevaplandırılmamış çağrıları şu telefon numaralarına yönlendir: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Örneğin +3314500XXXX (+33 ülke kodu, 14500XXXX ise telefon numarası) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Gelen Çağrı + + + Message + Mesaj + + + + ChatLogViewer + + Chat History + Sohbet Geçmişi + + + &Contact + Bağlantı + + + &Tools + &Araçlar + + + &Help + &Yardım + + + &Actions + &Eylemler + + + Main Toolbar + Ana Araç Çubuğu + + + Call Contact + Bağlantıya Çağrı Yap + + + Send a File + Dosya Gönder + + + createChatConf + createChatConf + + + Show Contact Info + Bağlantı Bilgilerini Göster + + + blockContact + Bağlantıyı engelle + + + &Save History As... + Geçmişi farklı kaydet... + + + actionRestartChat + actionRestartChat + + + @company@ + + + + + + ChatMainWindow + + &Contact + Bağlantı + + + &Tools + &Araçlar + + + &Actions + &Eylemler + + + Main Toolbar + Ana Araç Çubuğu + + + Call Contact + Bağlantıya Çağrı Yap + + + Send a File + Dosya Gönder + + + Show Contact Info + Bağlantı Bilgilerini Göster + + + blockContact + Bağlantıyı engelle + + + &Save History As... + Geçmişi farklı kaydet... + + + @company@ + + + + + MainWindow + Ana Pencere + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + Ctrl+C + + + &Paste + Yapıştır + + + Ctrl+V + Ctrl+V + + + Start Chat Conference + + + + + &Close + &Kapat + + + Conference + Konferans + + + + ChatRoomInviteWidget + + Chat room + Sohbet odası + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sohbet odası</span></p></body></html> + + + (Conference participants) + (Konferans katılımcıları) + + + &Remove + Kaldır + + + &Start + Başlat + + + Group Name + Grup Adı + + + &Add + Ekle + + + + ChatToaster + + Message + Mesaj + + + Incoming Chat + Gelen Sohbet + + + + ChatWidget + + Form + Form + + + + ConferenceCallWidget + + Cancel + İptal + + + Start + Başlat + + + Phone number 2: + Telefon numarası 2: + + + Phone number 1: + Telefon numarası 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + Ekle >> + + + << &Remove + << Kaldır + + + Available Contacts + Erişilebilir Bağlantılar + + + &Start + Başlat + + + Cancel + İptal + + + + ContactGroupPopupMenu + + Remove Contact Group + Bağlantı Grubunu Kaldır + + + Rename Contact Group + Bağlantı Grubunu Yeniden İsimlendir + + + Delete group + Grup Sil + + + Do you really want to delete this group? + Gerçekten bu grubu silmek istiyor musunuz? + + + &Yes + &Evet + + + &No + &Hayır + + + + ContactList + + Contact List + Bağlantı Listesi + + + goupname + + + + + ContactWidget + + No mobile phone number set + Henüz bir cep telefonu numarası girilmedi + + + No landline phone number set + Henüz bir sabit telefon numarası girilmedi + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + İptal + + + Program Failure + Program Hatası + + + Send + Gönder + + + Optional Information + Seçimlik Bilgiler + + + Your Mail: + E-posta adresiniz: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Erişilebilir Değil + + + Click here to change your call forward settings + Çağrı yönlendirme ayarlarını değiştirmek için buraya tıklayınız. + + + Call forward mode: + Çağrı yönlendirme modu: + + + Purchase call out credits + Kontör satın al + + + Call Forward Method + Çağrı Yönlendirme Yöntemi + + + Call Voice Mail + Sesli Mesaj Çağrısı yap + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + Kök Dizini + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Sesli mesaj sisteminiz için buraya tıklayın + + + New Voice Mail: + Yeni Sesli Mesaj: + + + Click here to see missed call(s) + Cevapsız çağrıları görmek için buraya tıklayın + + + Missed Call(s): + Cevapsız Arama(lar): + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + İndir + + + Upload + Gönder + + + Click here to change your download folder + Dosya indirme dizinini değiştirmek için buraya tıklayın + + + Download folder: + Dosya indirme dizini: + + + Clean all items in the list + Listedeki tüm girdileri sil + + + &Clean + Temizle + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + İptal + + + Form + Form + + + Pause + Ara ver + + + <i>From:</i> + <i>Kimden:</i> + + + + GeneralSettings + + When I double-click on a contact + Bir bağlantıya çift tıkladığımda + + + Call cell phone or land line if contact not online + Bağlantı çevrimiçi değilsecebinden ya da sabit numarasından ara + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Boşta + + + minutes + dakika + + + Show me as "Away" when I am inactive for: + Şu süreden fazla bir süre aktif olmadığımda beni "Uzakta" işaretle: + + + When I start my computer + Bilgisayarımı açtığımda + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Giriş: + + + Password: + Parola: + + + GoogleTalk Settings + GoogleTalk Ayarları + + + Forgot your GoogleTalk password? + GoogleTalk parolanızı mı unuttunuz? + + + Get a new GoogleTalk Account + Yeni bir GoogleTalk Hesabı Aç + + + + HttpProxyLoginWindow + + Cancel + İptal + + + HTTP Proxy Address: + HTTP Vekil Sunucu Adresleri: + + + HTTP Proxy Port Number: + HTTP Vekil Sunucu Portları: + + + HTTP Proxy Login: + HTTP Vekil Sunucu Girişi: + + + HTTP Proxy Password: + HTTP Vekil Sunucu Parolası: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Vekil Sunucu Yetkilendirmesi</span><br><br><span>Yerel HTTP Vekil Sunucunuz yetkilendirme kullanıyor<br>Lütfen kullanıcı adı ve parolanızı girin</span> + + + OK + Tamam + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Giriş: + + + Password: + Parola: + + + ICQ Settings + ICQ Ayarları + + + Forgot your ICQ password? + AIM parolanızı mı unuttunuz? + + + Get a new ICQ Account + Yeni bir ICQ hesabı aç + + + + IMAccountManager + + Close + Kapat + + + Login + Kullanıcı Adı: + + + Add + Ekle + + + Delete + Kaldır + + + Modify + Değiştir + + + Protocol + Protokol + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + İptal + + + Save + Kaydet + + + IM Account Settings + Hızlı Mesajlaşma Hesabı Ayarları + + + + IMContactManager + + Add + Ekle + + + Delete + Kaldır + + + Contact Type (protocol) + İletişim Türü (protokol) + + + Click on the add button below to add a new ID + Yeni kimlik eklemek için "Ekle" tuşuna basınız + + + Contact ID + Bağlantı Kimliği + + + + IMProfileWidget + + Enter your nickname here + Takma adınızı buraya girin + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + Bir hızlı mesajlaşma hesabı ekle (MSN, AIM, GoogleTalk...) + + + Add an IM account + Hızlı mesajlaşma hesabı ekle + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + İptal + + + OK + Tamam + + + Go Up + Yukarı Git + + + Refresh + Yeniden yükle + + + + JabberSettings + + Login: + Giriş: + + + Password: + Parola: + + + Jabber Settings + Jabber Ayarları + + + Connect Server: + Sunucuya Bağlan: + + + <u>Advanced Options</u> + <u>Gelişmiş Ayarlar</u> + + + Require TLS + TLS gerekiyor + + + Port: + Port: + + + Use TLS if available + Varsa TLS'i kullan + + + Allow plaintext authentication over unencrypted streams + Düz metin parola şifrelemesine izin ver + + + 5222 + 5222 + + + Force old (port 5223) SSL + Eski SSL portunu (port 5223) kullanmaya zorla + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + Diliniz şu an için desteklenmiyor; Launchpad'i kullanarak QuteCom'u dilinize çevirebileceğinizi biliyor musunuz? + + + More information here. + Daha fazla bilgi için. + + + + LogAccount + + Password: + Parola: + + + Need help? + Yardıma ihtiyacınız var mı? + + + Cancel + İptal + + + Delete + Kaldır + + + @product@ - Login + + + + + Account: + Hesap: + + + &Connect + Bağlan + + + Forgot your @company@ password? + + + + + &Modify + Düzenle + + + Configure a &New Profile + Yeni Profili Yapılandır + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Giriş: + + + Password: + Parola: + + + MSN Settings + MSN Ayarları + + + Forgot your MSN password? + MSN parolanızı mı unuttunuz? + + + Get a new MSN Account + Yeni bir MSN hesabı aç + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Ana Pencere + + + Command::terminate() + Command::terminate() + + + Command::start() + Command::start() + + + Accept Call + Çağrıyı Kabul Et + + + Send Chat Message + Sohbet İletisi Gönder + + + Make Call + Çağrı Yap + + + Hang Up + Kapat + + + + ManageBlockedUsersSettings + + Close + Kapat + + + Unblock User + Kullanıcı üzerindeki engellemeyi kaldır + + + Manage blocked users + Engellenmiş kullanıcıları yönet + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + Bir ses yürütmek istediğiniz durumlaru seçin. + + + + NotificationSettingsItem + + Sound file + Ses dosyası + + + Find a sound file + Ses dosyası bul + + + Play sound file + Ses dosyasını oynat + + + Play + Yürüt + + + + NotifyDialog + + File Transfer + Dosya Transferi + + + &Ok + Tamam + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Durum:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Sürüm yükselt</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + Kabul et + + + Status + Durum + + + 00:00:00 + 00:00:00 + + + Nickname + Takma Ad + + + &Reject + Reddet + + + Dialpad + Tuşlar + + + Audio Smileys + Sesli duygu simgeleri + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + Engellenmiş kullanıcıları yönet + + + Privacy Rules + Gizlilik Kuralları + + + Always sign in as "Invisible" (appear offline to all users) + Herzaman "Görünmez" modda bağlan (diğer kullanıcılara çevrimdışı gözük) + + + Allow chats from + Şunlarla sohbete izin ver + + + Anyone + Herkes + + + Only people from my contact list + Sadece bağlantı listemdeki kişiler + + + Allow calls from + Şu kişiden çağrılara izin ver: + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + İptal + + + Save + Kaydet + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + Genel + + + Network IDs (MSN, Jabber...) + Ağ kimlikleri (MSN, Jabber...) + + + Advanced >> + Gelişmiş>> + + + Fill in all your network Id to stay connected with your contacts + Bağlantılarınızla iletişim halinde olmak için tüm ağ kimliklerinizi doldurun + + + Contact + Bağlantı + + + Group: + Grup: + + + Last Name: + Soyadı: + + + First Name: + Adı: + + + Details + Ayrıntılar + + + Web/blog: + Web/Blog: + + + Country: + Ülke: + + + State: + İlçe: + + + City: + İl: + + + Gender: + Cinsiyet: + + + Birth Date: + Doğum Tarihi: + + + Email: + E-Posta: + + + Notes + Notlar + + + Phone Numbers + Telefon Numaraları + + + Home phone + Ev telefonu + + + Mobile phone + Cep telefonu + + + dd MMMM yyyy + gg AAAA yyyy + + + Unknown + Bilinmiyor + + + Male + Bay + + + Female + Bayan + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + Hesaplar + + + Accounts Settings + Hesap Ayarları + + + + QtAddAccount + + Configure your voip account + VoIP hesabınızı yapılandırın + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + Test + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Kullanıcı Adı: + + + Please enter an email address. + Lütfen bir e-posta adresi yazın + + + Please enter your email address<br/>and your password + Lütfen e-posta adresinizi<br/>ve parolanızı girin + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + Lütfen yazılımın <br/>SIP hesabınıza bağlanabilmesi için<br/>gerekli bilgileri giriniz + + + Configure your SIP profile + SIP profilinizi yapılandırın + + + + QtAdvancedIMContactManager + + Cancel + İptal + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + &Sil + + + + QtAdvancedSettings + + Advanced + Gelişmiş + + + Advanced Settings + Gelişmiş Ayarlar + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + Gelişmiş + + + Audio + Ses + + + Audio Settings + Ses Ayarları + + + + QtCallBar + + +(country code) number or nickname + +(ülke kodu) numara ya da takma ad + + + + QtCallForwardSettings + + Call Forward + Çağrı Yönlendirme + + + Call Forward Settings + Çağrı Yönlendirme Ayarları + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + Farklı Kaydet + + + + QtChatLogViewer + + Account + + + + Edit Contact + Bağlantıları Düzenle + + + + QtChatTabWidget + + Close chat + Sohbeti sonlandır + + + + QtChatWidget + + %1 is connected. + %1 bağlı. + + + %1 is disconnected. + %1 bağlı değil. + + + send + gönder + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + Bağlantıları Düzenle + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + SIP Adresine Çağrı Yap + + + Call land line + Sabit telefon hattını ara + + + Call Mobile + Cep telefonunu ara + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + Birinci hattı beklemeye al ve ikinciyi ara + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + Konferans görüşme başlat + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Evet + + + &No + &Hayır + + + Merge %1 with %2? + %1 ve %2 bağlantılarını birleştireyim mi? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Evet + + + &No + &Hayır + + + Home phone + Ev telefonu + + + Mobile phone + Cep telefonu + + + @product@ + + + + + Edit Contact + Bağlantıları Düzenle + + + Do you really want to delete this contact? + Bu bağlantıyı silmek istediğinize emin misiniz? + + + Start chat + Sohbet başlat + + + Delete contact + Bağlantıyı sil + + + Call + Çağrı + + + Free call + + + + Work phone + İş telefonu + + + Send SMS + SMS Gönder + + + Edit contact + Bağlantıyı düzenle + + + Block contact + Bağlantıyı engelle + + + Invite to conference + Konferansa davet et + + + Go to website + Web sayfasına git + + + Send file + Dosya gönder + + + Forward to mobile phone + Cep telefonuna yönlendir + + + + QtContactWidget + + No mobile phone number set + Henüz bir cep telefonu numarası girilmedi + + + No landline phone number set + Henüz bir sabit telefon numarası girilmedi + + + Click here to call + Çağrı başlatmak için buraya tıklayın + + + Click here to set a phone number + Bir telefon numarası atamak için buraya tıklayın + + + Click here to edit the contact + Bağlantıyı düzenlemek için buraya tıklayın + + + Click here to send a SMS + SMS göndermek için buraya tıklayın + + + Click here to start a chat + Sohbet başlatmak için buraya tıklayın + + + Click here to start a free call + Ücretsiz çağrı başlatmak için buraya tıklayın + + + Click here to send a file + Dosya göndermek için buraya tıklayın + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + Sesli mesaj sisteminize çağrı bırakmak mı istiyorsunuz? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Evet + + + &No + &Hayır + + + Choose a directory + Dizin seçin + + + Overwrite File? + Dosyanın üzerine yaz? + + + A file called %1 already exists.Do you want to overwrite it? + %1 isimli dosya zaten mevcut. Üzerine yazmak mı istiyorsunuz? + + + File size error + Dosya boyutu hatası + + + %1 exceeds the maximum authorized size. + %1 izin verilen maksimum boyutu aşıyor. + + + %1 has size 0. + %1 boyutu 0. + + + %1 is a directory. + %1 bir dizindir. + + + You can not send a directory. + Dizin gönderemezsiniz. + + + %1 is a shortcut. + %1 bir kısayoldur. + + + You can not send a shortcut. + Kısayol gönderemezsiniz. + + + All Files (*.* *) + Tüm dosyalar (*.* *) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + İptal + + + Remove + Kaldır + + + Pause + Ara ver + + + Starting + Başlıyor + + + From: + Kimden: + + + To: + Kime: + + + Open + + + + Resume + Geri Al + + + Waiting for anwser... + Cevap için bekleniyor... + + + Done + Bitti + + + Failed + Başarısız + + + Paused + Duraklatıldı + + + Paused by peer + Ağ tarafından duraklatıldı + + + Cancelled + İptal Edildi + + + Cancelled by peer + Ağ tarafından iptal edildi + + + Downloading... + İndiriyor... + + + Uploading... + Gönderiyor... + + + Waiting for peer... + Karşı tarafı bekliyor... + + + An error occured during the file transfer + Dosya iletimi sırasında bir hata gerçekleşti + + + This may be caused by : + Bunun nedeni şu olabilir: + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + Genel + + + General Settings + Genel Ayarlar + + + + QtHistory + + Incoming call + Gelen Çağrı + + + Outgoing call + Giden çağrılar + + + Missed call + Cevapsız çağrı + + + Rejected call + Reddedilen çağrı + + + Outgoing SMS + Giden SMS'ler + + + Do you want to call %1? + %1 bağlantısını aramak mı istiyorsunuz? + + + Chat session + Sohbet oturumu + + + @product@ - Call History + + + + + Type + Tür + + + Name/ID + İsim/Kimlik + + + Date + Tarih + + + Duration + Süre + + + + QtHistoryWidget + + Erase this entry + Bu girdiyi sil + + + Open in SMS window + SMS penceresinde Aç + + + Call this peer + Bu ağa bağlan + + + Show chat log + Sohbet kayıtlarını göster + + + + QtIMAccountManager + + Cancel + İptal + + + @product@ + + + + + &Delete + &Sil + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + Bağlantı Kesildi + + + Error: %1 + Hata: %1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + Çevrimiçi + + + Invisible + Görünmez + + + Away + Uzakta + + + Do not disturb + Rahatsız etmeyin + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + Lütfen kullanıcı adını girin + + + + QtIMAccountPresenceMenuManager + + Cancel + İptal + + + @product@ + + + + + &Delete + &Sil + + + Online + Çevrimiçi + + + Invisible + Görünmez + + + Away + Uzakta + + + Do Not Disturb + Rahatsız Etmeyin + + + Disconnect + Bağlantıyı Kes + + + Delete Account + Hesabı Sil + + + Are sure you want to delete the account <b>%1</b>? + <b>%1</b> hesabını silmek için emin misiniz? + + + + QtIMProfileWidget + + Edit My Profile + Profilimi Düzenle + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + Dil + + + Language Settings + Dil Ayarları + + + + QtLogAccount + + Invalid account + Geçersiz hesap + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + Gelen çağrı (zil sesi) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + Çağrı sona erdi (kapanma sinyali) + + + Incoming chat + Gelen sohbet çağrısı + + + IM account connected + Hızlı mesajlaşma hesabına bağlanıldı + + + IM account disconnected + Hızlı mesajlaşma hesabı bağlantısı kesildi + + + Contact online + Bağlantı çevrimiçi + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + Ses dosyasını seç + + + Sounds + Sesler + + + + QtPhoneCall + + Status + Durum + + + Incoming Call + Gelen Çağrı + + + Resume + Geri Al + + + Hang-up + Kapat + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + Hata + + + Talking + Konuşuyor + + + Dialing + Arıyor + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + Çalıyor + + + Redirected + Yönlendirildi + + + Initialization... + Başlatılıyor... + + + Closed + Kapalı + + + Hold + Beklet + + + Add contact + Bağlantı ekle + + + Ca&ncel + İptal Et + + + Talking - Conference + Konuşuyor - Konferans + + + Add a Contact + Bağlantı Ekle + + + + QtPresenceMenuManager + + Online + Çevrimiçi + + + Invisible + Görünmez + + + Away + Uzakta + + + Do Not Disturb + Rahatsız Etmeyin + + + Log off + Çıkış + + + + QtPrivacySettings + + Privacy + Gizlilik + + + Privacy Settings + Gizlilik Seçenekleri + + + + QtProfileBar + + Click here to change your status + Durumunuzu değiştirmek için buraya tıklayın + + + active + aktif + + + voicemail + sesli mesaj + + + inactive + aktif değil + + + unauthorized + yetkilendirilmemiş + + + Set global presence to: + Durumu ayarla: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + Gelişmiş>> + + + @product@ + + + + + A contact must have a group, please set a group. + Bağlantı bir gruba ait olmalı, lütfen bir grup atayın + + + << Simple + << Basit + + + Select your avatar + Görüntü resminizi seçin + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + İptal + + + Conference + Konferans + + + Call + Çağrı + + + Account + + + + Add a Contact + Bağlantı Ekle + + + You have unfinished call(s). + Bitmeyen çağrı(ları)nız var. + + + @product@ - Warning + + + + + Home + Ev + + + Are you sure you want to exit the application? + Uygulamadan çıkmak istediğinize emin misiniz? + + + &Exit + Çıkış + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + Gelişmiş + + + General + Genel + + + Accounts + Hesaplar + + + Audio + Ses + + + Call Forward + Çağrı Yönlendirme + + + Language + Dil + + + Privacy + Gizlilik + + + Video + Video + + + Voicemail + Telesekreter + + + security + güvenlik + + + Notifications + + + + + QtRenameGroup + + Bad group name + Geçersiz grup ismi + + + Group name cannot be empty + Grup adı boş bırakılamaz + + + + QtSecuritySettings + + Security + Güvenlik + + + Security Settings + Güvenlik Ayarları + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + Lütfen telefon numarasını girin + + + Do you want to continue? + Devam etmek istiyor musunuz? + + + Your SMS has not been sent + SMS'iniz gönderilmedi + + + Your SMS has been sent + SMS'iniz gönderildi + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + Boş mesaj gönderemezsiniz. + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + Bağlı değil + + + Register done + Kayıt işlemi tamamlandı + + + Unregister done + Kayıt silme işlemi tamamlandı + + + Connecting + Bağlanıyor + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Durum + + + @product@ + + + + + Call SIP + SIP Adresine Çağrı Yap + + + Call land line + Sabit telefon hattını ara + + + Call Mobile + Cep telefonunu ara + + + Call @company@ + + + + + Call + Çağrı + + + Send SMS + SMS Gönder + + + Online + Çevrimiçi + + + Invisible + Görünmez + + + Away + Uzakta + + + Do Not Disturb + Rahatsız Etmeyin + + + Internet Connection Error + İnternet Bağlantı Hatası + + + Offline + Çevrimdışı + + + Connecting... + Bağlanıyor... + + + Send a SMS + Bir SMS gönder + + + Start a chat + Sohbet başlat + + + Place Call + Çağrı Başlat + + + Send File + Dosya Gönder + + + Multiple Status + Çoklu Durum + + + Unknown Status + Bilinmeyen Durum + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + İptal + + + @product@ - Proceed Conference + + + + + Edit My Profile + Profilimi Düzenle + + + Add a Contact + Bağlantı Ekle + + + Hide Unavailable Contacts + Bağlı Olmayan Kişileri Gizle + + + Show Unavailable Contacts + Erişilebilir Olmayan Bağlantıları Göster + + + Hide Groups + Grupları Gizle + + + Show Groups + Grupları Göster + + + You have unfinished call(s). + Bitmeyen çağrı(ları)nız var. + + + Are you sure you want to log off? + Oturumu kapatmak istediğinizden emin misiniz? + + + &Log Off + Çevrimdışı ol + + + Disable &Video Calls + Görüntülü Çağrıları Etkinleştir/Engelle + + + Enable &Video Calls + Görüntülü Çağrıları Etkinleştir/Engelle + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>Etkin telefon çağrıları varken konferans başlatılamaz.</b><br><br>Tüm telefon çağrılarını sonlandırın ve yeniden deneyin. + + + @product@ - Warning + + + + + Log &Off... + Çevrimdışı ol... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + Bağlantı listesi + + + + QtUserProfile + + Edit Contact + Bağlantıları Düzenle + + + &Authorize + Yetkilendir + + + &Block + Engelle + + + Network error. + Ağ hatası. + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + Yanlış e-posta/parola girildi + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + Video + + + Normal + Normal + + + Good + İyi + + + Very good + Çok İyi + + + Excellent + Mükemmel + + + Video Settings + Video Ayarları + + + + QtVoicemailSettings + + Voicemail + Telesekreter + + + Voicemail Settings + Telesekreter Ayarları + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + İptal + + + Save + Kaydet + + + Title + Unvan + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + Kabul et + + + &Hidden + &Gizli + + + &Tools + &Araçlar + + + &Help + &Yardım + + + &Actions + &Eylemler + + + @company@ + + + + + &Close + &Kapat + + + Dialpad + Tuşlar + + + @product@ + + + + + Start Conference + Konferans görüşme başlat + + + Send SMS + SMS Gönder + + + Contacts + Bağlantılar + + + History + Geçmiş + + + Clear &History + Geçmişi &Temizle + + + ToolBar + Araç Çubuğu + + + Show/Hide Unavailable &Contacts + Erişilemeyen Bağlantıları Göster/Gizle + + + &Chat Sessions + Sohbet Oturumları + + + &All + &Hepsi + + + &HangUp + Kapat + + + &Hold/Resume + Ara ver/Devam et + + + Show/Hide &Groups + Grupları Göster/Gizle + + + &Outgoing Calls + Giden Çağrılar + + + &Incoming Calls + Gelen Çağrılar + + + &Missed Calls + Cevapsız Çağrılar + + + Enable/Disable &Video Calls + Görüntülü Çağrıları Etkinleştir/Engelle + + + Short Text &Messages (SMS) + Kısa Mesajları Göster + + + Rejected Calls + Reddedilen Çağrılar + + + &Contacts + &Bağlantılar + + + &About... + Hakkında... + + + Add &Contact... + Bağlantı Ekle + + + &Configuration... + &Yapılandırma... + + + Send SMS... + SMS Gönder... + + + View My &Profile... + Profilimi Görüntüle + + + View My Profile + Profilimi Görüntüle + + + Start &Conference... + Konferans Başlat + + + &Find Contact... + Bağlantı Bul + + + Log &Off... + Çevrimdışı ol... + + + Log Off + Çevrimdışı Ol + + + Show &Chat Window + Sohbet Penceresini Göster + + + Show Chat Window + Sohbet penceresini göster + + + Show &File Transfer + Dosya iletimini göster + + + Add Contact + Bağlantı Ekle + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Ekle + + + SMS + SMS + + + Conference + Konferans + + + + RenameGroupDialog + + Cancel + İptal + + + OK + Tamam + + + Enter the new group name: + Yeni grup adını girin: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Form + + + Enable call encryption + Çağrı şifrelemesini etkinleştir + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + Profilinizi güncelleyin + + + Yahoo! ID: + Yahoo! Kimliği: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN Kimliği: + + + SIP ID: + SIP Kimliği: + + + ICQ ID: + ICQ Kimliği: + + + AIM ID: + AIM Kimliği: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Gönder + + + @product@ - SMS + + + + + Click here to add a phone number + Telefon numarası eklemek için buraya tıklayın + + + 0 /160 + 0 /160 + + + Enter your signature here + İmzanızı buraya girin + + + Signature: + İmza: + + + Phone number(s): + Telefon numaraları: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + Telefon numaralarını buraya girin<br>Numaralar & sembolü, noktalı virgül ya da virgül işareti ile ayrılmalı + + + + SoftUpdateWindow + + Cancel + İptal + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Form + + + + VideoSettings + + Normal + Normal + + + Good + İyi + + + Very good + Çok İyi + + + Excellent + Mükemmel + + + Enable video + Video'yu etkinleştir + + + Webcam Selection + Web Kamerası Seçimi + + + Webcam device: + Web kamerası aygıtı: + + + Webcam Preview + Web Kamerası Ön Gösterimi + + + Connection Type + Bağlantı Türü + + + Video quality + Video kalitesi + + + Down (kbit/s) + İndirme hızı (kbit/s) + + + Up (kbit/s) + Gönderme hızı (kbit/s) + + + 0 to 512 + 0-512 arası + + + 0 to 128 + 0-128 arası + + + 512 to 2048 + 512-2048 arası + + + 128 to 256 + 128-256 arası + + + 2048+ + 2048 ve üstü + + + 256+ + 256 ve üstü + + + 8192+ + 8192 ve üstü + + + 1024+ + 1024 ve üstü + + + Video quality depends on your Internet connection bandwidth + Görüntü kalitesi internet bağlantınızın bant genişliği ile doğru orantılıdır + + + Make a test video call + Test amaçlı bir görüntülü çağrı başlat + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Form + + + Phone number of your voicemail: + Telesekreterinizin telefon numarası: + + + Please fill in here the information about your voicemail + Lütfen telesekreterinizle ilgili bilgileri buraya giriniz + + + + Wizard + + Cancel + İptal + + + Finish + Bitti + + + Next > + Sonraki > + + + < Back + < Önceki + + + Simple Wizard - Step %1 of %2 + Hızlı Sihirbaz - %1/%2 adım + + + + YahooSettings + + Login: + Giriş: + + + Password: + Parola: + + + Yahoo! Settings + Yahoo! Ayarları + + + Use Yahoo! Japan server + Yahoo! Japonya sunucusunu kullan + + + Forgot your Yahoo! password? + Yahoo! parolanızı mı unuttunuz? + + + Get a new Yahoo! Account + Yeni Yahoo! hesabı aç + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_uz.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_uz.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_uz.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_uz.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4564 @@ + + + + + AIMSettings + + Login: + Логин: + + + Forgot your AIM password? + AIM махфий сўзини унутдингизми? + + + Get a new AIM Account + Янги AIM ҳисоб олиш + + + Password: + Махфий сўз: + + + AIM Settings + AIM/ICQ мосламалари + + + + AboutWindow + + About + Ҳақида + + + Copyright (C)2008 Mbdsys + + + + Authors + Муаллифлар + + + Close + Ёпиш + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Файл узатиш + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Қабул қилиш + + + &Cancel + &Бекор қилиш + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Боғланиш: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + + + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + Бекор қилиш + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Бекор қилиш + + + Contact Type (protocol): + Алоқа тури (протокол) + + + Contact ID: + Алоқа ID: + + + Account: + Ҳисоб: + + + Enable + Ёқиш + + + Login + Кириш + + + Add + + + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Махфий сўз: + + + Need help? + + + + + &Back + + + + + Cancel + Бекор қилиш + + + @product@ - Login + + + + + &Connect + &Алоқа + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Махфий сўз: + + + Need help? + + + + + &Back + + + + + Cancel + Бекор қилиш + + + @product@ - Login + + + + + &Connect + &Алоқа + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + Ҳисоб: + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Ёпиш + + + Preference Name + + + + + Type + Тури + + + Value + Қиймати + + + Default Value + Андоза қиймат + + + Save + Сақлаш + + + Status + Ҳолати + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + + + + + Advanced Settings + Қўшимча мосламалар + + + Advanced Configuration Window + Қўшимча мосламалар ойнаси + + + Automatically answer incoming calls from + + + + + Remove + Олиб ташлаш + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Шакл + + + + AudioSettings + + Reset + + + + + Audio Codecs + Ауидо мосламалари + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Шакл + + + + AvatarWidget + + Form + Шакл + + + + BrowserSoftUpdateWindow + + Close + Ёпиш + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + учинчи: + + + 1st: + + + + + 2nd: + иккинчи: + + + (+ country code) phone number + (+ давлат коди) телефон рақами + + + Forward all unanswered calls to message box + + + + + Disable call forwarding + + + + + Forward all unanswered calls to following phone numbers: + + + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + + + + + Message + Хабар + + + + ChatLogViewer + + Chat History + + + + + &Contact + &Алоқа + + + &Tools + &Ускуналар + + + &Help + &Ёрдам + + + &Actions + &Амаллар + + + Main Toolbar + Асосий асбоблар панели + + + Call Contact + + + + + Send a File + + + + + createChatConf + + + + + Show Contact Info + Алоқа маълумотларни кўрсатиш + + + blockContact + Алоқани бан қилиш + + + &Save History As... + + + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Алоқа + + + &Tools + &Ускуналар + + + &Actions + &Амаллар + + + Main Toolbar + Асосий асбоблар панели + + + Call Contact + + + + + Send a File + + + + + Show Contact Info + Алоқа маълумотларни кўрсатиш + + + blockContact + Алоқани бан қилиш + + + &Save History As... + + + + + @company@ + + + + + MainWindow + + + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + + (Conference participants) + + + + + &Remove + + + + + &Start + &Бошлаш + + + Group Name + + + + + &Add + + + + + + ChatToaster + + Message + Хабар + + + Incoming Chat + + + + + + ChatWidget + + Form + Шакл + + + + ConferenceCallWidget + + Cancel + Бекор қилиш + + + Start + + + + + Phone number 2: + + + + + Phone number 1: + Телефон рақами 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Бошлаш + + + Cancel + Бекор қилиш + + + + ContactGroupPopupMenu + + Remove Contact Group + Алоқа гуруҳини олиб ташлаш + + + Rename Contact Group + Алоқа гуруҳини қайта номлаш + + + Delete group + Гуруъни олиб ташлаш + + + Do you really want to delete this group? + Ростдан ҳам ушбу гуруҳни олиб ташламоқчисиз? + + + &Yes + &Ҳа + + + &No + &Йўқ + + + + ContactList + + Contact List + + + + + goupname + + + + + ContactWidget + + No mobile phone number set + Тармоқда ҳеч қандай қўлтелефони рақами топилмади + + + No landline phone number set + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Бекор қилиш + + + Program Failure + + + + + Send + + + + + Optional Information + + + + + Your Mail: + Электрон почтангиз: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + + + + + Click here to change your call forward settings + + + + + Call forward mode: + + + + + Purchase call out credits + + + + + Call Forward Method + + + + + Call Voice Mail + + + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + + + + + Click here to call your voice mail + + + + + New Voice Mail: + + + + + Click here to see missed call(s) + + + + + Missed Call(s): + + + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + + + + + Upload + + + + + Click here to change your download folder + + + + + Download folder: + + + + + Clean all items in the list + + + + + &Clean + + + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Бекор қилиш + + + Form + Шакл + + + Pause + + + + + <i>From:</i> + + + + + + GeneralSettings + + When I double-click on a contact + + + + + Call cell phone or land line if contact not online + + + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + + + + + minutes + + + + + Show me as "Away" when I am inactive for: + + + + + When I start my computer + + + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Логин: + + + Password: + Махфий сўз: + + + GoogleTalk Settings + + + + + Forgot your GoogleTalk password? + + + + + Get a new GoogleTalk Account + + + + + + HttpProxyLoginWindow + + Cancel + Бекор қилиш + + + HTTP Proxy Address: + + + + + HTTP Proxy Port Number: + + + + + HTTP Proxy Login: + + + + + HTTP Proxy Password: + + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + + OK + + + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Логин: + + + Password: + Махфий сўз: + + + ICQ Settings + AIM/ICQ мосламалари + + + Forgot your ICQ password? + AIM махфий сўзини унутдингизми? + + + Get a new ICQ Account + Янги AIM ҳисоб олиш + + + + IMAccountManager + + Close + Ёпиш + + + Login + Кириш + + + Add + + + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Бекор қилиш + + + Save + Сақлаш + + + IM Account Settings + + + + + + IMContactManager + + Add + + + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + Янги AIM ҳисоб олиш + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Бекор қилиш + + + OK + + + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Логин: + + + Password: + Махфий сўз: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Махфий сўз: + + + Need help? + + + + + Cancel + Бекор қилиш + + + Delete + + + + + @product@ - Login + + + + + Account: + Ҳисоб: + + + &Connect + &Алоқа + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Логин: + + + Password: + Махфий сўз: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + + + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Ёпиш + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Файл узатиш + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Боғланиш: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + PhoneCallWidget + + &Accept + &Қабул қилиш + + + Status + Ҳолати + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Бекор қилиш + + + Save + Сақлаш + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + Ауидо мосламалари + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Кириш + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Бекор қилиш + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + Қўшимча мосламалар + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + Ауидо мосламалари + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Ҳа + + + &No + &Йўқ + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Ҳа + + + &No + &Йўқ + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + Тармоқда ҳеч қандай қўлтелефони рақами топилмади + + + No landline phone number set + + + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Ҳа + + + &No + &Йўқ + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Бекор қилиш + + + Remove + Олиб ташлаш + + + Pause + + + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Тури + + + Name/ID + + + + + Date + + + + + Duration + + + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + Алоқа маълумотларни кўрсатиш + + + + QtIMAccountManager + + Cancel + Бекор қилиш + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Бекор қилиш + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Гуруъни олиб ташлаш + + + Are sure you want to delete the account <b>%1</b>? + Ростдан ҳам ушбу гуруҳни олиб ташламоқчисиз? + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + Қўшимча мосламалар + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Ҳолати + + + Incoming Call + + + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + Бекор қилиш + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + Қўшимча мосламалар + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Бекор қилиш + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + Ауидо мосламалари + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Ҳолати + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + Ҳолати + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Бекор қилиш + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + Мавжуд бўлган алоқалар + + + Show Unavailable Contacts + Мавжуд бўлган алоқалар + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + Қўшимча мосламалар + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Бекор қилиш + + + Save + Сақлаш + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Қабул қилиш + + + &Hidden + + + + + &Tools + &Ускуналар + + + &Help + &Ёрдам + + + &Actions + &Амаллар + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + Ҳақида + + + Add &Contact... + &Алоқа + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + &Алоқа + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + Алоқа маълумотларни кўрсатиш + + + Show Chat Window + Алоқа маълумотларни кўрсатиш + + + Show &File Transfer + Файл узатиш + + + Add Contact + &Алоқа + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + + + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Бекор қилиш + + + OK + + + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Шакл + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + + + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Бекор қилиш + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Шакл + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Шакл + + + Phone number of your voicemail: + Телефон рақами 1: + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + Бекор қилиш + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Логин: + + + Password: + Махфий сўз: + + + Yahoo! Settings + Ауидо мосламалари + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + AIM махфий сўзини унутдингизми? + + + Get a new Yahoo! Account + Янги AIM ҳисоб олиш + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_vi.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_vi.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_vi.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_vi.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4473 @@ + + + + + AIMSettings + + Login: + Tên đăng nhập + + + Forgot your AIM password? + Bạn quên mật khẩu AIM? + + + Get a new AIM Account + Tạo tài khoản AIM mới + + + Password: + Mật khẩu + + + AIM Settings + Thông số AIM/ICQ + + + + AboutWindow + + About + Bản quyền + + + Copyright (C)2008 Mbdsys + + + + Authors + Tác giả + + + Close + Đóng + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + Truyền file + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + &Chấp thuận + + + &Cancel + &Huỷ bỏ + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Liên hệ: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tên file: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Tên file đang nhận</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + &Sửa hồ sơ của tôi + + + + AddAccount + + Configure your account: + + + + + &Next + + + + + Need help? + + + + + You don't have any account ? Click here + + + + + &Back + + + + + Cancel + Huỷ + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + Huỷ + + + Contact Type (protocol): + Loại địa chỉ + + + Contact ID: + Định danh địa chỉ + + + Account: + Tài khoản + + + Enable + Có hiệu lực + + + Login + Đăng nhập + + + Add + Thêm + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + Mật khẩu + + + Need help? + + + + + &Back + + + + + Cancel + Huỷ + + + @product@ - Login + + + + + &Connect + &Liên hệ + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:18pt;">Xác thực của HTTP Proxy</span><br><br><span>Proxy của bạn có sử dụng xác thực<br>Đề nghị nhập vào tên đăng nhập và mật khẩu của bạn</span> + + + Email Address: + + + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + Mật khẩu + + + Need help? + + + + + &Back + + + + + Cancel + Huỷ + + + @product@ - Login + + + + + &Connect + &Liên hệ + + + Activate presence and chat (SIP/SIMPLE) + + + + + Displayname: + + + + + login / username: + + + + + Account name: + Tài khoản + + + Proxy: + + + + + : + + + + + Server: + + + + + SIP Domain / Realm: + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + + Advanced + + + + + + AdvancedConfigWindow + + Close + Đóng + + + Preference Name + Tên qui ước + + + Type + Loại + + + Value + Giá trị + + + Default Value + Giá trị mặc định + + + Save + Lưu + + + Status + Trạng thái + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + Thêm + + + Advanced Settings + Cấu hình nâng cao + + + Advanced Configuration Window + Cấu hình nâng cao + + + Automatically answer incoming calls from + Tự động trả lời cuộc gọi từ + + + Remove + Xoá + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + Cảnh báo, phần cấu hình này chỉ dành cho người dùng chuyên nghiệp.<br> Cấu hình sai tại đây có thể khiến chương trình ngưng hoạt động + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + Mẫu + + + + AudioSettings + + Reset + + + + + Audio Codecs + Biểu tượng âm thanh + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + Mẫu + + + + AvatarWidget + + Form + Mẫu + + + + BrowserSoftUpdateWindow + + Close + Đóng + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 3: + + + 1st: + 1: + + + 2nd: + 2: + + + (+ country code) phone number + (+mã nước) số điện thoại + + + Forward all unanswered calls to message box + Chuyển hướng tất cả các cuộc gọi không được trả lời sang hộp thư thoại + + + Disable call forwarding + Huỷ bỏ chuyển hướng cuộc gọi + + + Forward all unanswered calls to following phone numbers: + Chuyển hướng tất cả các cuộc gọi không được tôi trả lời sang các số điện thoại sau: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + Ví dụ: +3314500XXXX (+33 là mã nước và 14500XXXX là số điện thoại cần gọi) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + Cuộc gọi đến + + + Message + Tin nhắn + + + + ChatLogViewer + + Chat History + + + + + &Contact + &Liên hệ + + + &Tools + &Công cụ + + + &Help + &Trợ giúp + + + &Actions + &Tác vụ + + + Main Toolbar + Thanh công cụ + + + Call Contact + Gọi điện + + + Send a File + Gửi file + + + createChatConf + Tạo phòng Chat + + + Show Contact Info + Hiển thị thông tin đối tác + + + blockContact + Khoá liên hệ + + + &Save History As... + &Lưu nội dung chat ... + + + actionRestartChat + + + + + @company@ + + + + + + ChatMainWindow + + &Contact + &Liên hệ + + + &Tools + &Công cụ + + + &Actions + &Tác vụ + + + Main Toolbar + Thanh công cụ + + + Call Contact + Gọi điện + + + Send a File + Gửi file + + + Show Contact Info + Hiển thị thông tin đối tác + + + blockContact + Khoá liên hệ + + + &Save History As... + &Lưu nội dung chat ... + + + @company@ + + + + + MainWindow + Màn hình chính + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + Phòng Chat + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Phòng Chat</span></p></body></html> + + + (Conference participants) + (Người tham dự phòng Chat) + + + &Remove + &Loại bỏ + + + &Start + &Bắt đầu + + + Group Name + Tên Nhóm + + + &Add + &Thêm + + + + ChatToaster + + Message + Tin nhắn + + + Incoming Chat + Tin nhắn mới + + + + ChatWidget + + Form + Mẫu + + + + ConferenceCallWidget + + Cancel + Huỷ + + + Start + Bắt đầu + + + Phone number 2: + Số điện thoại thứ 2: + + + Phone number 1: + Số điện thoại thứ 1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + &Bắt đầu + + + Cancel + Huỷ + + + + ContactGroupPopupMenu + + Remove Contact Group + Xóa nhóm liên lạc + + + Rename Contact Group + Đổi tên nhóm liên lạc + + + Delete group + Xóa nhóm + + + Do you really want to delete this group? + Bạn muốn xóa nhóm liên lạc này? + + + &Yes + &Có + + + &No + &Không + + + + ContactList + + Contact List + Danh sách liên lạc + + + goupname + + + + + ContactWidget + + No mobile phone number set + Không có số di động tương ứng + + + No landline phone number set + Không có số cố định tương ứng + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + Huỷ + + + Program Failure + Sự cố chương trình + + + Send + Gửi + + + Optional Information + Thông tin tùy chọn + + + Your Mail: + Địa chỉ E-mail của bạn: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + Vắng mặt + + + Click here to change your call forward settings + Bấm vào đây để thay đổi dịch vụ chuyển hướng cuộc gọi + + + Call forward mode: + Chế độ chuyển hướng cuộc gọi: + + + Purchase call out credits + Mua phút gọi ra + + + Call Forward Method + Phương thức chuyển hướng cuộc gọi + + + Call Voice Mail + Truy nhập Hộp thư thoại + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + Gọi số Hộp thư thoại + + + New Voice Mail: + Tin nhắn thoại mới: + + + Click here to see missed call(s) + Xem danh sách cuộc gọi nhỡ + + + Missed Call(s): + Các cuộc gọi nhỡ: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + Tải file + + + Upload + Nạp file + + + Click here to change your download folder + Bấm vào đây để thay đổi dịch vụ chuyển hướng cuộc gọi + + + Download folder: + Thư mục tải file về: + + + Clean all items in the list + + + + + &Clean + &Xóa + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + Huỷ + + + Form + Mẫu + + + Pause + Tạm ngừng + + + <i>From:</i> + <i>Từ:</i> + + + + GeneralSettings + + When I double-click on a contact + Khi tôi nhấp đúp vào một Liên lạc + + + Call cell phone or land line if contact not online + Gọi số di động hoặc cố định nếu đối tác không online + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + Trạng thái chờ + + + minutes + phút + + + Show me as "Away" when I am inactive for: + Tự động hiển thị "Đi vắng" nếu tôi không hoạt động trong: + + + When I start my computer + Khi máy tính khởi động + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + Tên đăng nhập + + + Password: + Mật khẩu + + + GoogleTalk Settings + Cấu hình GoogleTalk + + + Forgot your GoogleTalk password? + Quên mật khẩu GoogleTalk + + + Get a new GoogleTalk Account + Tạo một tài khoản GoogleTalk mới + + + + HttpProxyLoginWindow + + Cancel + Huỷ + + + HTTP Proxy Address: + Địa chỉ HTTP Proxy + + + HTTP Proxy Port Number: + Cổng HTTP Proxy + + + HTTP Proxy Login: + Tên đăng nhập HTTP Proxy + + + HTTP Proxy Password: + Mật khẩu HTTP Proxy + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">Xác thực của HTTP Proxy</span><br><br><span>Proxy của bạn có sử dụng xác thực<br>Đề nghị nhập vào tên đăng nhập và mật khẩu của bạn</span> + + + OK + OK + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + Tên đăng nhập + + + Password: + Mật khẩu + + + ICQ Settings + Thông số AIM/ICQ + + + Forgot your ICQ password? + Bạn quên mật khẩu AIM? + + + Get a new ICQ Account + Tạo tài khoản AIM mới + + + + IMAccountManager + + Close + Đóng + + + Login + Đăng nhập + + + Add + Thêm + + + Delete + + + + + Modify + + + + + Protocol + Giao thức + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + Huỷ + + + Save + Lưu + + + IM Account Settings + + + + + + IMContactManager + + Add + Thêm + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + QuteCom - Các tài khoản tin nhắn của bạn (Yahoo, MSN,Jabber) + + + Add an IM account + Tạo tài khoản AIM mới + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + Huỷ + + + OK + OK + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + Tên đăng nhập + + + Password: + Mật khẩu + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + Mật khẩu + + + Need help? + + + + + Cancel + Huỷ + + + Delete + + + + + @product@ - Login + + + + + Account: + Tài khoản + + + &Connect + &Liên hệ + + + Forgot your @company@ password? + + + + + &Modify + &Change + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + Tên đăng nhập + + + Password: + Mật khẩu + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + Màn hình chính + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + Đóng + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + Truyền file + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Liên hệ: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Phòng Chat</span></p></body></html> + + + + PhoneCallWidget + + &Accept + &Chấp thuận + + + Status + Trạng thái + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + Biểu tượng âm thanh + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + Huỷ + + + Save + Lưu + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + + + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + Cấu hình âm thanh + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + Đăng nhập + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + Huỷ + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + + + + + Advanced Settings + Cấu hình nâng cao + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + + + + + Audio + + + + + Audio Settings + Cấu hình âm thanh + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + Cấu hình chuyển hướng cuộc gọi + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + &Có + + + &No + &Không + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + &Có + + + &No + &Không + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + Không có số di động tương ứng + + + No landline phone number set + Không có số cố định tương ứng + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + &Có + + + &No + &Không + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + Huỷ + + + Remove + Xoá + + + Pause + Tạm ngừng + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + Cấu hình cơ bản + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + Loại + + + Name/ID + Tên/Số định danh + + + Date + Ngày + + + Duration + Thời lượng + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + Hiển thị thông tin đối tác + + + + QtIMAccountManager + + Cancel + Huỷ + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + Huỷ + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + Xóa nhóm + + + Are sure you want to delete the account <b>%1</b>? + Bạn muốn xóa nhóm liên lạc này? + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + Cấu hình nâng cao + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + Trạng thái + + + Incoming Call + Cuộc gọi đến + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + Huỷ + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + Cấu hình nâng cao + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + + + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + &Huỷ bỏ + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + + + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + Tin nhắn thoại mới: + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + Cấu hình âm thanh + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + Trạng thái + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + Trạng thái chờ + + + Unknown Status + Trạng thái + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + &Huỷ bỏ + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + Các liên lạc hiện hành + + + Show Unavailable Contacts + Các liên lạc hiện hành + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + Tin nhắn thoại mới: + + + Voicemail Settings + Cấu hình cơ bản + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + Huỷ + + + Save + Lưu + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + &Chấp thuận + + + &Hidden + + + + + &Tools + &Công cụ + + + &Help + &Trợ giúp + + + &Actions + &Tác vụ + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + Bản quyền + + + Add &Contact... + &Liên hệ + + + &Configuration... + + + + + Send SMS... + Send text message... + + + View My &Profile... + + + + + View My Profile + &Sửa hồ sơ của tôi + + + Start &Conference... + + + + + &Find Contact... + &Liên hệ + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + Hiển thị thông tin đối tác + + + Show Chat Window + Hiển thị thông tin đối tác + + + Show &File Transfer + Truyền file + + + Add Contact + &Liên hệ + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + Thêm + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + Huỷ + + + OK + OK + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + Mẫu + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + Gửi + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + Huỷ + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + Mẫu + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + Mẫu + + + Phone number of your voicemail: + Gọi số Hộp thư thoại + + + Please fill in here the information about your voicemail + Gọi số Hộp thư thoại + + + + Wizard + + Cancel + Huỷ + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + Tên đăng nhập + + + Password: + Mật khẩu + + + Yahoo! Settings + Cấu hình âm thanh + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + Bạn quên mật khẩu AIM? + + + Get a new Yahoo! Account + Tạo tài khoản AIM mới + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_CN.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_CN.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_CN.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_CN.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4088 @@ + + + + + AIMSettings + + Login: + 登录: + + + Forgot your AIM password? + 忘记了你的AIM密码? + + + Get a new AIM Account + 获得一个新的AIM帐号 + + + Password: + 密码: + + + AIM Settings + AIM 设置 + + + + AboutWindow + + About + 关于 + + + Copyright (C)2008 Mbdsys + + + + Authors + 作者 + + + Close + 关闭 + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + 文件传输 + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + 接受(&A) + + + &Cancel + 取消(&C) + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">联系人: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">文件名称: </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>要接受的文件</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + 修改我的信息(&E) + + + + AddAccount + + Configure your account: + 配置你的帐户: + + + &Next + 下一个(&N) + + + Need help? + 需要帮助? + + + You don't have any account ? Click here + 你还没有帐户?点击这里 + + + &Back + 后退(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + 取消 + + + Contact Type (protocol): + 联系人类别 + + + Contact ID: + 联系人 ID: + + + Account: + 帐号: + + + Enable + 确定 + + + Login + 登录 + + + Add + 添加 + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + 密码: + + + Need help? + 需要帮助? + + + &Back + 后退(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + &Connect + 连接(&C) + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">登录</span><br><br><span>请输入你的电子信箱和<br>密码</span> + + + Email Address: + 电子邮件地址: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + 密码: + + + Need help? + 需要帮助? + + + &Back + 后退(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + &Connect + 连接(&C) + + + Activate presence and chat (SIP/SIMPLE) + 激活存在和聊天(SIP/SIMPLE) + + + Displayname: + 显示的名字: + + + login / username: + 登录/用户名: + + + Account name: + 账户名称: + + + Proxy: + 代理: + + + : + + + + Server: + 服务器: + + + SIP Domain / Realm: + SIP 域名/领域: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">配置你的 SIP 配置</span><br><br><span>请输入信息以便<br/>你的软件电话来连接你的<br/> SIP 帐户</span> + + + Advanced + 高级 + + + + AdvancedConfigWindow + + Close + 关闭 + + + Preference Name + 偏爱的名称 + + + Type + 类別 + + + Value + 数值 + + + Default Value + 默认数值 + + + Save + 保存 + + + Status + 状态 + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + 添加 + + + Advanced Settings + 高级设置 + + + Advanced Configuration Window + 高级配置窗口 + + + Automatically answer incoming calls from + 自动接听来电,如果它来自 + + + Remove + 移除 + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + 警告,这部分只针对高级用户。<br>任何错误可以严重损坏软件 + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + 表格 + + + + AudioSettings + + Reset + 重新设定 + + + Audio Codecs + 音频编解码器 + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + 表格 + + + + AvatarWidget + + Form + 表格 + + + + BrowserSoftUpdateWindow + + Close + 关闭 + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 第三 + + + 1st: + 第一 + + + 2nd: + 第二 + + + (+ country code) phone number + (+国家码)电话号码 + + + Forward all unanswered calls to message box + 转移所有未接来电到信箱 + + + Disable call forwarding + 取消呼叫转移 + + + Forward all unanswered calls to following phone numbers: + 转移所有的未接来电到一下的电话号码: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + 例如+3314500XXXX (+33是国家码,14500XXXX是电话号码) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + 来电 + + + Message + 消息 + + + + ChatLogViewer + + Chat History + 聊天历史 + + + &Contact + 联系人(&C) + + + &Tools + 工具(&T) + + + &Help + 帮助(&H) + + + &Actions + 操作(&A) + + + Main Toolbar + 主工具栏 + + + Call Contact + 呼叫联系人 + + + Send a File + 发送文件 + + + createChatConf + 建立聊天会议 + + + Show Contact Info + 显示联系人信息 + + + blockContact + 禁止联系人 + + + &Save History As... + 保存历史记录为...(&S) + + + actionRestartChat + actionRestartChat + + + @company@ + + + + + + ChatMainWindow + + &Contact + 联系人(&C) + + + &Tools + 工具(&T) + + + &Actions + 操作(&A) + + + Main Toolbar + 主工具栏 + + + Call Contact + 呼叫联系人 + + + Send a File + 发送文件 + + + Show Contact Info + 显示联系人信息 + + + blockContact + 禁止联系人 + + + &Save History As... + 保存历史记录为...(&S) + + + @company@ + + + + + MainWindow + 主要窗口 + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + 关闭(&C) + + + Conference + 会议 + + + + ChatRoomInviteWidget + + Chat room + 聊天室 + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">聊天室</span></p></body></html> + + + (Conference participants) + (会议参加者) + + + &Remove + 移除(&R) + + + &Start + 开始(&S) + + + Group Name + 群组名称 + + + &Add + 添加(&A) + + + + ChatToaster + + Message + 消息 + + + Incoming Chat + 新消息 + + + + ChatWidget + + Form + 表格 + + + + ConferenceCallWidget + + Cancel + 取消 + + + Start + 开始: + + + Phone number 2: + 电话号码2: + + + Phone number 1: + 电话号码1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + 开始(&S) + + + Cancel + 取消 + + + + ContactGroupPopupMenu + + Remove Contact Group + 移动联系组 + + + Rename Contact Group + 重命名联系组 + + + Delete group + 删除组 + + + Do you really want to delete this group? + 你确实想删除这个组吗? + + + &Yes + 是的(&Y) + + + &No + 否(&N) + + + + ContactList + + Contact List + 联系人列表 + + + goupname + + + + + ContactWidget + + No mobile phone number set + 没有设置手机号码 + + + No landline phone number set + 没有设置座机号码 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + 取消 + + + Program Failure + 程序故障 + + + Send + 发送 + + + Optional Information + 可选信息 + + + Your Mail: + 你的邮箱: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + 不可用 + + + Click here to change your call forward settings + 点击这里修改你的呼叫转移设置 + + + Call forward mode: + 呼叫转移模式: + + + Purchase call out credits + 购买call out话费 + + + Call Forward Method + 呼叫转移方式 + + + Call Voice Mail + 呼叫语音邮箱 + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + 根文件夹 + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + 点击变换颜色的条目上来发送声音给你的谈话者。 + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + 点击这里呼叫你的语音信箱 + + + New Voice Mail: + 新的语音邮件: + + + Click here to see missed call(s) + 点击这里查看未接来电 + + + Missed Call(s): + 未接来电: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + 下载 + + + Upload + 上载 + + + Click here to change your download folder + 点击这里来改变你的下载文件夹 + + + Download folder: + 下载文件夹: + + + Clean all items in the list + 清除列表上的所有条目 + + + &Clean + 消除(&C) + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + 取消 + + + Form + 表格 + + + Pause + 暂停 + + + <i>From:</i> + <i>从:</i> + + + + GeneralSettings + + When I double-click on a contact + 当我双击一个联系人 + + + Call cell phone or land line if contact not online + 当联系人不在线,呼叫手机或座机 + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + 空闲状态 + + + minutes + 分钟 + + + Show me as "Away" when I am inactive for: + 显示为“离开”,当我处于非活动状态 + + + When I start my computer + 当我启动我的电脑 + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + 登录: + + + Password: + 密码: + + + GoogleTalk Settings + GoogleTalk设置 + + + Forgot your GoogleTalk password? + 忘记了你的GoogleTalk密码? + + + Get a new GoogleTalk Account + 获得一个新的GoogleTalk帐号 + + + + HttpProxyLoginWindow + + Cancel + 取消 + + + HTTP Proxy Address: + HTTP代理地址: + + + HTTP Proxy Port Number: + HTTP代理端口号: + + + HTTP Proxy Login: + HTTP代理用户名: + + + HTTP Proxy Password: + HTTP代理密码: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP代理鉴定</span><br><br><span>你的本地HTTP代理用户鉴定<br>请输入你的用户名和密码</span> + + + OK + 确定 + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + 登录: + + + Password: + 密码: + + + ICQ Settings + ICQ 设置 + + + Forgot your ICQ password? + 忘记你的 ICQ 密码了? + + + Get a new ICQ Account + 获取一个新的 ICQ 帐户 + + + + IMAccountManager + + Close + 关闭 + + + Login + 登录 + + + Add + 添加 + + + Delete + 删除 + + + Modify + 修改 + + + Protocol + 协议 + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + 取消 + + + Save + 保存 + + + IM Account Settings + IM帐户设置 + + + + IMContactManager + + Add + 添加 + + + Delete + 删除 + + + Contact Type (protocol) + 联系人类别(协议) + + + Click on the add button below to add a new ID + 点击添加按钮来添加一个新的帐号 + + + Contact ID + 联系人帐号 + + + + IMProfileWidget + + Enter your nickname here + 在这里输入你的昵称 + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + 添加一个即时信息帐户(MSN,AIM,Google Talk...) + + + Add an IM account + 添加一个 IM 帐户 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + 取消 + + + OK + 确定 + + + Go Up + 上一层 + + + Refresh + 更新 + + + + JabberSettings + + Login: + 登录: + + + Password: + 密码: + + + Jabber Settings + Jabber设置 + + + Connect Server: + 连接服务器: + + + <u>Advanced Options</u> + <u>高级选项</u> + + + Require TLS + 需要TLS + + + Port: + 端口: + + + Use TLS if available + 如果可以使用TLS + + + Allow plaintext authentication over unencrypted streams + 允许未加密流下的纯文本验证 + + + 5222 + 5222 + + + Force old (port 5223) SSL + 强制旧的(端口5223)SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + 你的语言不在这里,你知道你可以在 Lauchpad 上翻译自己的语言吗? + + + More information here. + 更多信息在这里。 + + + + LogAccount + + Password: + 密码: + + + Need help? + 需要帮助? + + + Cancel + 取消 + + + Delete + 删除 + + + @product@ - Login + + + + + Account: + 帐号: + + + &Connect + 连接(&C) + + + Forgot your @company@ password? + + + + + &Modify + 修改(&M) + + + Configure a &New Profile + 配置一个新的配置(&N) + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + 登录: + + + Password: + 密码: + + + MSN Settings + MSN设置 + + + Forgot your MSN password? + 忘记了你的MSN密码? + + + Get a new MSN Account + 获得一个新的MSN帐号 + + + Use HTTP method + + + + + + MainWindow + + MainWindow + 主要窗口 + + + Command::terminate() + 指令::终止() + + + Command::start() + 指令::开始() + + + Accept Call + 接电话 + + + Send Chat Message + 发送信息 + + + Make Call + 打电话 + + + Hang Up + 挂断 + + + + ManageBlockedUsersSettings + + Close + 关闭 + + + Unblock User + 取消阻止用户 + + + Manage blocked users + 管理被阻止的用户 + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + 选择声音要被播放的事件 + + + + NotificationSettingsItem + + Sound file + 声音文件 + + + Find a sound file + 寻找一个声音文件 + + + Play sound file + 播放声音文件 + + + Play + 播放 + + + + NotifyDialog + + File Transfer + 文件传输 + + + &Ok + 确定(&O) + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">状态:</span> ...</p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">升级</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + PhoneCallWidget + + &Accept + 接受(&A) + + + Status + 状态 + + + 00:00:00 + 00:00:00 + + + Nickname + 别名 + + + &Reject + 拒绝(&R) + + + Dialpad + 拨号盘 + + + Audio Smileys + 音频笑脸 + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + 管理被阻止的用户 + + + Privacy Rules + 隐私规则 + + + Always sign in as "Invisible" (appear offline to all users) + 总是显示“离线”(显示为脱机) + + + Allow chats from + 允许即时信息自 + + + Anyone + 任何人 + + + Only people from my contact list + 只有我的联系人 + + + Allow calls from + 允许呼叫自 + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + 取消 + + + Save + 保存 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + 常规 + + + Network IDs (MSN, Jabber...) + 网络名称(MSN,Jabber...) + + + Advanced >> + 高级 >> + + + Fill in all your network Id to stay connected with your contacts + 填写你所有的网络名称以和你的联系人保持联系 + + + Contact + 联系人 + + + Group: + 群组: + + + Last Name: + 姓: + + + First Name: + 名: + + + Details + 详细资料 + + + Web/blog: + Web/blog: + + + Country: + 国家/地区: + + + State: + 状态: + + + City: + 城市: + + + Gender: + 性别: + + + Birth Date: + 生日 + + + Email: + 电子邮件: + + + Notes + 注释 + + + Phone Numbers + 电话号码 + + + Home phone + 家庭电话 + + + Mobile phone + 手机 + + + dd MMMM yyyy + 日日月月年年年年 + + + Unknown + 未知 + + + Male + + + + Female + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + 帐户 + + + Accounts Settings + 帐户设置 + + + + QtAddAccount + + Configure your voip account + 配置你的 voip 帐户 + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + 登录 + + + Please enter an email address. + 请输入一个电子邮件地址。 + + + Please enter your email address<br/>and your password + 请输入你的电邮地址<br/>和你的密码 + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + 请填写下列信息来<br/>允许你的软件电话连接到你的 <br/>SIP 帐户 + + + Configure your SIP profile + 配置你的 SIP 配置 + + + + QtAdvancedIMContactManager + + Cancel + 取消 + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + 删除(&D) + + + + QtAdvancedSettings + + Advanced + 高级 + + + Advanced Settings + 高级设置 + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + 高级 + + + Audio + 音频 + + + Audio Settings + 音频设置 + + + + QtCallBar + + +(country code) number or nickname + +(国家编码)电话号码或者昵称 + + + + QtCallForwardSettings + + Call Forward + 呼叫转移 + + + Call Forward Settings + 呼叫转移设置 + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + 另存为 + + + + QtChatLogViewer + + Account + + + + Edit Contact + 编辑联系人 + + + + QtChatTabWidget + + Close chat + 关闭聊天 + + + + QtChatWidget + + %1 is connected. + %1已经连接。 + + + %1 is disconnected. + %1没有连接。 + + + send + 发送 + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + 编辑联系人 + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + 呼叫SIP + + + Call land line + 拨打座机 + + + Call Mobile + 拨打手机 + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + <b>你现在可以通知你的第一个聊天对象他准备成为会议呼叫的一部分。</b><br><br>当做完之后,点击下面的按钮。你的第一个聊天对象将会被暂停,当你的第二个聊天对象被呼叫时。<br> + + + Hold first interlocutor and call second one + 暂停第一个谈话并呼叫第二个 + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + <b>你现在可以通知你的聊天者他准备成为会议的一部分。</b><br><br>当这个完成后,点击下面的按钮来开始会议。 + + + Start Conference + 开始会议 + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + 是的(&Y) + + + &No + 否(&N) + + + Merge %1 with %2? + 合并%1和%2? + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + 是的(&Y) + + + &No + 否(&N) + + + Home phone + 家庭电话 + + + Mobile phone + 手机 + + + @product@ + + + + + Edit Contact + 编辑联系人 + + + Do you really want to delete this contact? + 你确实想删除这个联系人吗? + + + Start chat + 开始聊天 + + + Delete contact + 删除联系人 + + + Call + 呼叫 + + + Free call + + + + Work phone + 工作电话 + + + Send SMS + 发送短消息 + + + Edit contact + 修改联系人 + + + Block contact + 阻止联系人 + + + Invite to conference + 邀请到会议 + + + Go to website + 查看网页 + + + Send file + 发送文件 + + + Forward to mobile phone + 转移到移动电话 + + + + QtContactWidget + + No mobile phone number set + 没有设置手机号码 + + + No landline phone number set + 没有设置座机号码 + + + Click here to call + 点击这里拨打电话 + + + Click here to set a phone number + 点击这里以设置一个电话号码 + + + Click here to edit the contact + 点击这里以编辑联系人 + + + Click here to send a SMS + 点击这里以发送一个短信 + + + Click here to start a chat + 点击这里以开始一个聊天 + + + Click here to start a free call + 点击这里以开始一个免费通话 + + + Click here to send a file + 点击这里以发送一个文件 + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + 你想呼叫你的语音信箱吗? + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + 是的(&Y) + + + &No + 否(&N) + + + Choose a directory + 选择一个目录 + + + Overwrite File? + 覆盖文件? + + + A file called %1 already exists.Do you want to overwrite it? + 一个叫%1的文件已经存在。你想覆盖它吗? + + + File size error + 文件大小错误 + + + %1 exceeds the maximum authorized size. + %1超过最大允许大小。 + + + %1 has size 0. + %1 的大小为0 + + + %1 is a directory. + %1 是一个目录。 + + + You can not send a directory. + 你不能够发送一个目录。 + + + %1 is a shortcut. + %1 是一个链接 + + + You can not send a shortcut. + 你不能够发送一个链接 + + + All Files (*.* *) + 所有文件(*.**) + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + 取消 + + + Remove + 移除 + + + Pause + 暂停 + + + Starting + 正在开始 + + + From: + 来自: + + + To: + 到: + + + Open + 打开 + + + Resume + 继续 + + + Waiting for anwser... + 等待答复... + + + Done + 完成 + + + Failed + 失败 + + + Paused + 暂停 + + + Paused by peer + 被好友暂停 + + + Cancelled + 取消 + + + Cancelled by peer + 被好友取消 + + + Downloading... + 下载中... + + + Uploading... + 上传中... + + + Waiting for peer... + 等待对等点... + + + An error occured during the file transfer + 在文件传输时发生了一个错误 + + + This may be caused by : + 这有可能是导致的由: + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + 常规 + + + General Settings + 常规设定 + + + + QtHistory + + Incoming call + 呼进电话 + + + Outgoing call + 拨出电话 + + + Missed call + 未接来电 + + + Rejected call + 拒绝的来电 + + + Outgoing SMS + 已发短信 + + + Do you want to call %1? + 你想呼叫%1吗? + + + Chat session + 聊天会话 + + + @product@ - Call History + + + + + Type + 类別 + + + Name/ID + 名称/帐号 + + + Date + 日期 + + + Duration + 耗时 + + + + QtHistoryWidget + + Erase this entry + 去掉这个入口 + + + Open in SMS window + 以短信窗口打开 + + + Call this peer + 呼叫这个人 + + + Show chat log + 显示聊天日志 + + + + QtIMAccountManager + + Cancel + 取消 + + + @product@ + + + + + &Delete + 删除(&D) + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + 已断网 + + + Error: %1 + 错误:%1 + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + %1 (%2/%3) + + + Online + 在线 + + + Invisible + 隐身 + + + Away + 离开 + + + Do not disturb + 不要打扰 + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + 请输入一个注册名 + + + + QtIMAccountPresenceMenuManager + + Cancel + 取消 + + + @product@ + + + + + &Delete + 删除(&D) + + + Online + 在线 + + + Invisible + 隐身 + + + Away + 离开 + + + Do Not Disturb + 请勿打扰 + + + Disconnect + 断开连接 + + + Delete Account + 删除帐户 + + + Are sure you want to delete the account <b>%1</b>? + 你确认要删除帐户 <b>%1</b>? + + + + QtIMProfileWidget + + Edit My Profile + 修改我的资料 + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + 语言 + + + Language Settings + 语言设置 + + + + QtLogAccount + + Invalid account + 无效的帐户 + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + 来电(铃音) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + 结束通话(挂起音) + + + Incoming chat + 文本信息 + + + IM account connected + IM帐户已连接 + + + IM account disconnected + IM帐户未连接 + + + Contact online + 联系人在线 + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + 选择一个声音文件 + + + Sounds + 声音 + + + + QtPhoneCall + + Status + 状态 + + + Incoming Call + 来电 + + + Resume + 继续 + + + Hang-up + 挂断 + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + 错误 + + + Talking + 通话中 + + + Dialing + 拨号中 + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + 响铃中 + + + Redirected + 重新开始 + + + Initialization... + 初始化... + + + Closed + 已关闭 + + + Hold + 挂起 + + + Add contact + 添加联系人 + + + Ca&ncel + 取消(&N) + + + Talking - Conference + 谈话 - 会议 + + + Add a Contact + 添加一个联系人 + + + + QtPresenceMenuManager + + Online + 在线 + + + Invisible + 隐身 + + + Away + 离开 + + + Do Not Disturb + 请勿打扰 + + + Log off + 注销 + + + + QtPrivacySettings + + Privacy + 隐私 + + + Privacy Settings + 隐私设置 + + + + QtProfileBar + + Click here to change your status + 点击这里以改变你的状态 + + + active + 激活 + + + voicemail + 语音邮件 + + + inactive + 非活动 + + + unauthorized + 未授权 + + + Set global presence to: + 设定全局 presence 到: + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + 高级 >> + + + @product@ + + + + + A contact must have a group, please set a group. + 一个联系人需要有一个组,请设立一个组 + + + << Simple + 《简单的 + + + Select your avatar + 选择你的化身 + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + 取消(&C) + + + Conference + 会议 + + + Call + 呼叫 + + + Account + + + + Add a Contact + 添加一个联系人 + + + You have unfinished call(s). + 你有没有完成的呼叫。 + + + @product@ - Warning + + + + + Home + 主页 + + + Are you sure you want to exit the application? + 你确定要退出这个程序吗? + + + &Exit + 退出(&E) + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + 高级 + + + General + 常规 + + + Accounts + 帐户 + + + Audio + 音频 + + + Call Forward + 呼叫转移 + + + Language + 语言 + + + Privacy + 隐私 + + + Video + 视频 + + + Voicemail + 语音邮件 + + + security + 安全 + + + Notifications + + + + + QtRenameGroup + + Bad group name + 无效的组名 + + + Group name cannot be empty + 组名不能是空的 + + + + QtSecuritySettings + + Security + 安全更新 + + + Security Settings + 安全设置 + + + BETA + BETA + + + + QtSms + + Please fill in a phone number. + 请填写一个电话号码 + + + Do you want to continue? + 你希望继续吗? + + + Your SMS has not been sent + 你的短信没有发出 + + + Your SMS has been sent + 你的短信已经发出 + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + 您不能发送一个空消息。 + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + 未连接 + + + Register done + 注册完毕 + + + Unregister done + 未注册 + + + Connecting + 连接中 + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + 状态 + + + @product@ + + + + + Call SIP + 呼叫SIP + + + Call land line + 拨打座机 + + + Call Mobile + 拨打手机 + + + Call @company@ + + + + + Call + 呼叫 + + + Send SMS + 发送短消息 + + + Online + 在线 + + + Invisible + 隐身 + + + Away + 离开 + + + Do Not Disturb + 请勿打扰 + + + Internet Connection Error + 网络连接错误 + + + Offline + 离线 + + + Connecting... + 连接中... + + + Send a SMS + 发送一个短信 + + + Start a chat + 开始一个文本聊天 + + + Place Call + 拨打电话 + + + Send File + 发送文件 + + + Multiple Status + 多重状态 + + + Unknown Status + 未知状态 + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + 取消(&C) + + + @product@ - Proceed Conference + + + + + Edit My Profile + 修改我的资料 + + + Add a Contact + 添加一个联系人 + + + Hide Unavailable Contacts + 隐藏不可用的联系人 + + + Show Unavailable Contacts + 显示不可用的联系人 + + + Hide Groups + 隐藏组 + + + Show Groups + 显示组 + + + You have unfinished call(s). + 你有没有完成的呼叫。 + + + Are you sure you want to log off? + 你确认要登出吗? + + + &Log Off + 登出(&L) + + + Disable &Video Calls + 禁止视频呼叫(&V) + + + Enable &Video Calls + 启用视频呼叫(&V) + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + <b>会议不能够被开始,如果还有活动的电话呼叫的话。</b><br><br>结束所有的电话呼叫并重新开始。 + + + @product@ - Warning + + + + + Log &Off... + 注销(&O)... + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + 联系人名单 + + + + QtUserProfile + + Edit Contact + 编辑联系人 + + + &Authorize + 批准(&A) + + + &Block + 阻止(&B) + + + Network error. + 网络错误。 + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + 错误的电邮/密码 + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + 视频 + + + Normal + 正常 + + + Good + + + + Very good + 很好 + + + Excellent + 优秀 + + + Video Settings + 视频设置 + + + + QtVoicemailSettings + + Voicemail + 语音邮件 + + + Voicemail Settings + 语音邮件设置 + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + 取消 + + + Save + 保存 + + + Title + 标题 + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + 接受(&A) + + + &Hidden + + + + + &Tools + 工具(&T) + + + &Help + 帮助(&H) + + + &Actions + 操作(&A) + + + @company@ + + + + + &Close + 关闭(&C) + + + Dialpad + 拨号盘 + + + @product@ + + + + + Start Conference + 开始会议 + + + Send SMS + 发送短消息 + + + Contacts + 联系人 + + + History + 历史 + + + Clear &History + 清除历史(&H) + + + ToolBar + 工具栏 + + + Show/Hide Unavailable &Contacts + 显示/隐藏 离线联系人 + + + &Chat Sessions + 聊天会话(&C) + + + &All + 全部(&A) + + + &HangUp + 挂断(&H) + + + &Hold/Resume + 暂停/继续(&H) + + + Show/Hide &Groups + 显示/隐藏组(&G) + + + &Outgoing Calls + 呼出电话(&O) + + + &Incoming Calls + 来电(&I) + + + &Missed Calls + 未接电话(&M) + + + Enable/Disable &Video Calls + 使用/禁止视频通话(&V) + + + Short Text &Messages (SMS) + 短信(SMS) + + + Rejected Calls + 拒绝的通话 + + + &Contacts + 联系人(&C) + + + &About... + 关于(&A)... + + + Add &Contact... + 添加联系人(&C)... + + + &Configuration... + 配置(&C)... + + + Send SMS... + 发送短信... + + + View My &Profile... + 查看我的配置(&P)... + + + View My Profile + 查看我的配置 + + + Start &Conference... + 开始会议(&C)... + + + &Find Contact... + 查找联系人(&F)... + + + Log &Off... + 注销(&O)... + + + Log Off + 注销 + + + Show &Chat Window + 显示聊天窗口(&C) + + + Show Chat Window + 显示聊天窗口 + + + Show &File Transfer + 显示文件传输(_F) + + + Add Contact + 添加联系人 + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + 添加 + + + SMS + 短信 + + + Conference + 会议 + + + + RenameGroupDialog + + Cancel + 取消 + + + OK + 确定 + + + Enter the new group name: + 输入新的组名: + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + 表格 + + + Enable call encryption + 启用呼叫加密 + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + 更新你的资料 + + + Yahoo! ID: + Yahoo!名称: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN 名称: + + + SIP ID: + SIP 名称: + + + ICQ ID: + ICQ 名称: + + + AIM ID: + AIM 名称: + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + 发送 + + + @product@ - SMS + + + + + Click here to add a phone number + 点击这里已添加一个电话号码 + + + 0 /160 + 0/160 + + + Enter your signature here + 在这里输入你的签名 + + + Signature: + 签名: + + + Phone number(s): + 电话号码: + + + Enter phone number(s) here<br>They must be separated by & or ; or , + 在这里输入电话号码<br>它们必须通过 & 或者; 或,来隔开 + + + + SoftUpdateWindow + + Cancel + 取消 + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + 表格 + + + + VideoSettings + + Normal + 正常 + + + Good + + + + Very good + 很好 + + + Excellent + 优秀 + + + Enable video + 启用视频 + + + Webcam Selection + 网络摄像头选择 + + + Webcam device: + 网络视频设备 + + + Webcam Preview + 网络摄像头预览 + + + Connection Type + 连接类别 + + + Video quality + 视频质量 + + + Down (kbit/s) + 下载(kbit/s) + + + Up (kbit/s) + 上载(kbit/s) + + + 0 to 512 + 0至512 + + + 0 to 128 + 0至128 + + + 512 to 2048 + 512至2048 + + + 128 to 256 + 128至256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + 视频质量取决于你的网络带宽 + + + Make a test video call + 进行一个视频聊天测试 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + 表格 + + + Phone number of your voicemail: + 你的语音邮件的电话号码: + + + Please fill in here the information about your voicemail + 请在这里填写关于你的语音邮件的信息 + + + + Wizard + + Cancel + 取消 + + + Finish + 完成 + + + Next > + 下一个 > + + + < Back + < 返回 + + + Simple Wizard - Step %1 of %2 + 简单向导 - 步骤%1 在 %2 中 + + + + YahooSettings + + Login: + 登录: + + + Password: + 密码: + + + Yahoo! Settings + Yahoo!设置 + + + Use Yahoo! Japan server + 使用Yahoo!日本服务器 + + + Forgot your Yahoo! password? + 忘记你的Yahoo!密码? + + + Get a new Yahoo! Account + 获得一个新的Yahoo!帐号 + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_HK.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_HK.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_HK.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh_HK.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4483 @@ + + + + + AIMSettings + + Login: + 登入: + + + Forgot your AIM password? + 忘記了你的AIM密碼? + + + Get a new AIM Account + 取得一個新的AIM帳號 + + + Password: + 密碼: + + + AIM Settings + AIM 設定 + + + + AboutWindow + + About + 關於 + + + Copyright (C)2008 Mbdsys + + + + Authors + 著作群 + + + Close + 關閉 + + + 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. + + + + + @product@ - About + + + + + @product@, a voice over Internet phone + + + + + + AcceptDialog + + File Transfer + 檔案傳輸 + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + 測試.bmp + + + &Accept + 接受(&A) + + + &Cancel + 取消(&C) + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">聯絡:</span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">檔案名稱 : </span></p></body></html> + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>要接收的文件</h1></span></p></body></html> + + + + AccountSettings + + &Edit my profile + 修改我的顯示信息(&E) + + + + AddAccount + + Configure your account: + 設定你的帳戶: + + + &Next + 下一頁(&N) + + + Need help? + 需要幫助? + + + You don't have any account ? Click here + 沒有任何帳戶?請按此處 + + + &Back + 回到上一頁(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + + @company@ account + + + + + Generic SIP account + + + + + + AddIMContact + + Cancel + 取消 + + + Contact Type (protocol): + 聯絡人類別 + + + Contact ID: + 聯絡人ID: + + + Account: + 帳戶: + + + Enable + 啟用 + + + Login + 登入 + + + Add + 添加 + + + @product@ - Add a Contact Account + + + + + + AddQuteComAccount + + Password: + 密碼: + + + Need help? + 需要幫助? + + + &Back + 回到上一頁(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + &Connect + 連接(&C) + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + <span style="font-size:16pt;">Login</span><br><br><span>請輸入你的電郵地址及密碼</span> + + + Email Address: + 電郵地址: + + + Click here if you don't have a @company@ account + + + + + Forgot your @company@ password? + + + + + + AddSIPAccount + + Password: + 密碼: + + + Need help? + 需要幫助? + + + &Back + 回到上一頁(&B) + + + Cancel + 取消 + + + @product@ - Login + + + + + &Connect + 連接(&C) + + + Activate presence and chat (SIP/SIMPLE) + 啟用出席資料及聊天功能 (SIP/SIMPLE) + + + Displayname: + 顯示名稱: + + + login / username: + 登入/用戶名稱: + + + Account name: + 帳戶名稱: + + + Proxy: + 代理: + + + : + + + + Server: + 伺服器: + + + SIP Domain / Realm: + SIP 域名: + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + <span style="font-size:16pt;">SIP 設定</span><br><br><span>請填入你的資料<br/>讓 QuteCom 能夠登錄你的 SIP 帳戶</span> + + + Advanced + 進階 + + + + AdvancedConfigWindow + + Close + 關閉 + + + Preference Name + 顯示名稱 + + + Type + 類型 + + + Value + + + + Default Value + 預設值 + + + Save + 儲存 + + + Status + 狀態 + + + @product@ - Advanced Configuration + + + + + + AdvancedSettings + + Add + 添加 + + + Advanced Settings + 進階設定 + + + Advanced Configuration Window + 進階設定視窗 + + + Automatically answer incoming calls from + 自動接聽來電,如果它來自 + + + Remove + 刪除 + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + 警告,這部分只針對高級用戶。<br>任何錯誤皆可能會對軟件造成嚴重損壞。 + + + + AppearanceSettings + + Toolbar + + + + + &Icons && Text + + + + + Icons &Only + + + + + &Hidden + + + + + Chat Theme + + + + + Form + 格式 + + + + AudioSettings + + Reset + 重設 + + + Audio Codecs + 音訊編碼解碼器 + + + &Input device: + + + + + &Output device: + + + + + &Ringing device: + + + + + &Make a test call + + + + + Test + + + + + &Advanced >> + + + + + &Half Duplex + + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + 格式 + + + + AvatarWidget + + Form + 格式 + + + + BrowserSoftUpdateWindow + + Close + 關閉 + + + @product@ - Update available + + + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + + CallForwardSettings + + 3rd: + 第三: + + + 1st: + 第一: + + + 2nd: + 第二: + + + (+ country code) phone number + (+國家碼)電話號碼 + + + Forward all unanswered calls to message box + 轉移所有未接來電至信箱 + + + Disable call forwarding + 取消來電轉駁 + + + Forward all unanswered calls to following phone numbers: + 轉移所有未接來電至以下電話號碼: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + 例如+3314500XXXX (+33是國際電話區號,14500XXXX是電話號碼) + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + + CallToaster + + Incoming Call + 來電 + + + Message + 訊息 + + + + ChatLogViewer + + Chat History + 聊天紀錄 + + + &Contact + 聯絡人(&C) + + + &Tools + 工具(&T) + + + &Help + 幫助(&H) + + + &Actions + 活動(&A) + + + Main Toolbar + 主工具欄 + + + Call Contact + 致電聯絡人 + + + Send a File + 傳送檔案 + + + createChatConf + 建立聊天會議 + + + Show Contact Info + 顯示聯絡人信息 + + + blockContact + 禁止聯絡人 + + + &Save History As... + 保存記錄為... (&S) + + + actionRestartChat + actionRestartChat + + + @company@ + + + + + + ChatMainWindow + + &Contact + 聯絡人(&C) + + + &Tools + 工具(&T) + + + &Actions + 活動(&A) + + + Main Toolbar + 主工具欄 + + + Call Contact + 致電聯絡人 + + + Send a File + 傳送檔案 + + + Show Contact Info + 顯示聯絡人信息 + + + blockContact + 禁止聯絡人 + + + &Save History As... + 保存記錄為... (&S) + + + @company@ + + + + + MainWindow + 主視窗 + + + &Edit + + + + + Cu&t + + + + + Ctrl+X + + + + + &Copy + + + + + Ctrl+C + + + + + &Paste + + + + + Ctrl+V + + + + + Start Chat Conference + + + + + &Close + + + + + Conference + + + + + + ChatRoomInviteWidget + + Chat room + 聊天室 + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + (Conference participants) + (參與討論者) + + + &Remove + 移除(&R) + + + &Start + 開始(&S) + + + Group Name + 群組名稱 + + + &Add + 添加(&A) + + + + ChatToaster + + Message + 訊息 + + + Incoming Chat + 新聊天信息 + + + + ChatWidget + + Form + 格式 + + + + ConferenceCallWidget + + Cancel + 取消 + + + Start + 開始 + + + Phone number 2: + 電話號碼2: + + + Phone number 1: + 電話號碼1: + + + ... + ... + + + @product@ - Create a Conference + + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + &Add >> + + + + + << &Remove + + + + + Available Contacts + + + + + &Start + 開始(&S) + + + Cancel + 取消 + + + + ContactGroupPopupMenu + + Remove Contact Group + 移動聯絡群組 + + + Rename Contact Group + 重新命名聯絡群組 + + + Delete group + 移除聯絡群組 + + + Do you really want to delete this group? + 你確定要把這個聯絡群組刪除嗎? + + + &Yes + 是(&Y) + + + &No + 否(&N) + + + + ContactList + + Contact List + 聯絡人清單 + + + goupname + + + + + ContactWidget + + No mobile phone number set + 沒有設定手機電話號碼 + + + No landline phone number set + 沒有設定固網電話號碼 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + + CrashReport + + Cancel + 取消 + + + Program Failure + 程式故障 + + + Send + 發送 + + + Optional Information + 選擇性填上的資訊 + + + Your Mail: + 你的電郵地址: + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + 無法使用 + + + Click here to change your call forward settings + 按此修改你的來電轉駁設定 + + + Call forward mode: + 來電轉駁模式: + + + Purchase call out credits + 購買 call out 點數 + + + Call Forward Method + 來電轉駁方式 + + + Call Voice Mail + 致電留言信箱 + + + Click here to buy @company@'s credits + + + + + + DesktopService + + Root Folder + 根資料夾 + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + 傳送聲音至對話者 + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + 按此致電你的留言信箱 + + + New Voice Mail: + 新的語音: + + + Click here to see missed call(s) + 按此查看未接來電 + + + Missed Call(s): + 未接來電: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + ... + ... + + + Download + 下載 + + + Upload + 上載 + + + Click here to change your download folder + 按此轉換下載資料夾 + + + Download folder: + 下載資料夾: + + + Clean all items in the list + 清除清單上的項目 + + + &Clean + 清理(&C) + + + @product@ - File Transfer Manager + + + + + + FileTransferItem + + Cancel + 取消 + + + Form + 格式 + + + Pause + 暫停 + + + <i>From:</i> + <i>來自:</i> + + + + GeneralSettings + + When I double-click on a contact + 當我雙擊一個聯絡人 + + + Call cell phone or land line if contact not online + 當聯絡人不在線,致電手提電話或固網電話 + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + 空閒狀態 + + + minutes + 分鐘 + + + Show me as "Away" when I am inactive for: + 顯示為「離開」,當我處於非活動狀態 + + + When I start my computer + 當我啟動我的電腦 + + + Automatically start @product@ + + + + + + GoogleTalkSettings + + Login: + 登入: + + + Password: + 密碼: + + + GoogleTalk Settings + GoogleTalk 設定 + + + Forgot your GoogleTalk password? + 忘記了你的 GoogleTalk 密碼? + + + Get a new GoogleTalk Account + 獲得一個新的 GoogleTalk 帳號 + + + + HttpProxyLoginWindow + + Cancel + 取消 + + + HTTP Proxy Address: + HTTP代理地址: + + + HTTP Proxy Port Number: + HTTP代理端號碼: + + + HTTP Proxy Login: + HTTP代理用戶名稱: + + + HTTP Proxy Password: + HTTP代理密碼: + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>你的本地HTTP代理使用密碼驗証<br>請登入</span> + + + OK + 確定 + + + @product@ - Local HTTP Proxy + + + + + + ICQSettings + + Login: + 登入: + + + Password: + 密碼: + + + ICQ Settings + ICQ 設定 + + + Forgot your ICQ password? + + + + + Get a new ICQ Account + + + + + + IMAccountManager + + Close + 關閉 + + + Login + 登入 + + + Add + 添加 + + + Delete + + + + + Modify + + + + + Protocol + + + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + + IMAccountTemplate + + Cancel + 取消 + + + Save + 儲存 + + + IM Account Settings + + + + + + IMContactManager + + Add + 添加 + + + Delete + + + + + Contact Type (protocol) + + + + + Click on the add button below to add a new ID + + + + + Contact ID + + + + + + IMProfileWidget + + Enter your nickname here + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + + Add an IM account + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + + ImageSelector + + Cancel + 取消 + + + OK + 確定 + + + Go Up + + + + + Refresh + + + + + + JabberSettings + + Login: + 登入: + + + Password: + 密碼: + + + Jabber Settings + + + + + Connect Server: + + + + + <u>Advanced Options</u> + + + + + Require TLS + + + + + Port: + + + + + Use TLS if available + + + + + Allow plaintext authentication over unencrypted streams + + + + + 5222 + + + + + Force old (port 5223) SSL + + + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + + More information here. + + + + + + LogAccount + + Password: + 密碼: + + + Need help? + 需要幫助? + + + Cancel + 取消 + + + Delete + + + + + @product@ - Login + + + + + Account: + 帳戶: + + + &Connect + 連接(&C) + + + Forgot your @company@ password? + + + + + &Modify + + + + + Configure a &New Profile + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + + + MSNSettings + + Login: + 登入: + + + Password: + 密碼: + + + MSN Settings + + + + + Forgot your MSN password? + + + + + Get a new MSN Account + + + + + Use HTTP method + + + + + + MainWindow + + MainWindow + 主視窗 + + + Command::terminate() + + + + + Command::start() + + + + + Accept Call + + + + + Send Chat Message + + + + + Make Call + + + + + Hang Up + + + + + + ManageBlockedUsersSettings + + Close + 關閉 + + + Unblock User + + + + + Manage blocked users + + + + + @product@ - Manage blocked users + + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + + I have a @company@ account + + + + + Create a @company@ account + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + + NotificationSettingsItem + + Sound file + + + + + Find a sound file + + + + + Play sound file + + + + + Play + + + + + + NotifyDialog + + File Transfer + 檔案傳輸 + + + &Ok + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + + PhoneCallWidget + + &Accept + 接受(&A) + + + Status + 狀態 + + + 00:00:00 + + + + + Nickname + + + + + &Reject + + + + + Dialpad + + + + + Audio Smileys + + + + + Communication is encrypted + + + + + + PrivacySettings + + Manage blocked users + + + + + Privacy Rules + + + + + Always sign in as "Invisible" (appear offline to all users) + + + + + Allow chats from + + + + + Anyone + + + + + Only people from my contact list + + + + + Allow calls from + + + + + When I sign into @company@ + + + + + + ProfileDetails + + Cancel + 取消 + + + Save + 儲存 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + General + + + + + Network IDs (MSN, Jabber...) + + + + + Advanced >> + 進階 >> + + + Fill in all your network Id to stay connected with your contacts + + + + + Contact + + + + + Group: + + + + + Last Name: + + + + + First Name: + + + + + Details + + + + + Web/blog: + + + + + Country: + + + + + State: + + + + + City: + + + + + Gender: + + + + + Birth Date: + + + + + Email: + + + + + Notes + + + + + Phone Numbers + + + + + Home phone + + + + + Mobile phone + + + + + dd MMMM yyyy + + + + + Unknown + + + + + Male + + + + + Female + + + + + + QObject + + @product@ + + + + + + QtAccountSettings + + Accounts + + + + + Accounts Settings + + + + + + QtAddAccount + + Configure your voip account + + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + + QtAddAccountUtils + + Test + + + + + Audio Test Call + + + + + Video Test Call + + + + + + QtAddQuteComAccount + + Login + 登入 + + + Please enter an email address. + + + + + Please enter your email address<br/>and your password + + + + + @product@ - Login + + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + + Configure your SIP profile + + + + + + QtAdvancedIMContactManager + + Cancel + 取消 + + + @product@ + + + + + Are sure you want to delete this IM contact? + + + + + + &Delete + + + + + + QtAdvancedSettings + + Advanced + 進階 + + + Advanced Settings + 進階設定 + + + + QtAppearanceSettings + + Me + + + + + Hello + + + + + How are you? + + + + + Other + + + + + I am fine + + + + + Have to go + + + + + Bye + + + + + Appearance + + + + + Appearance Settings + + + + + + QtAudioSettings + + Advanced + 進階 + + + Audio + + + + + Audio Settings + + + + + + QtCallBar + + +(country code) number or nickname + + + + + + QtCallForwardSettings + + Call Forward + + + + + Call Forward Settings + + + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + + + + + + QtChatLogViewer + + Account + + + + Edit Contact + + + + + + QtChatTabWidget + + Close chat + + + + + + QtChatWidget + + %1 is connected. + + + + + %1 is disconnected. + + + + + send + + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + + Your contact wishes to send a file with @company@. + + + + + Go to %1 to install it + + + + + %1 has joined the chat + + + + + %1 has left the chat + + + + + + QtChatWindow + + Edit Contact + + + + + @product@ Chat + + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + + Hold first interlocutor and call second one + + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + + Start Conference + + + + + @product@ - Proceed Conference + + + + + + QtContactList + + &Yes + 是(&Y) + + + &No + 否(&N) + + + Merge %1 with %2? + + + + + @product@ - Merge Contacts + + + + + + QtContactManager + + &Yes + 是(&Y) + + + &No + 否(&N) + + + Home phone + + + + + Mobile phone + + + + + @product@ + + + + + Edit Contact + + + + + Do you really want to delete this contact? + + + + + Start chat + + + + + Delete contact + + + + + Call + + + + + Free call + + + + Work phone + + + + + Send SMS + + + + + Edit contact + + + + + Block contact + + + + + Invite to conference + + + + + Go to website + + + + + Send file + + + + + Forward to mobile phone + + + + + + QtContactWidget + + No mobile phone number set + 沒有設定手機電話號碼 + + + No landline phone number set + 沒有設定固網電話號碼 + + + Click here to call + + + + + Click here to set a phone number + + + + + Click here to edit the contact + + + + + Click here to send a SMS + + + + + Click here to start a chat + + + + + Click here to start a free call + + + + + Click here to send a file + + + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + + + + + @product@ - Voice Mail + + + + + + QtFileTransfer + + &Yes + 是(&Y) + + + &No + 否(&N) + + + Choose a directory + + + + + Overwrite File? + + + + + A file called %1 already exists.Do you want to overwrite it? + + + + + File size error + + + + + %1 exceeds the maximum authorized size. + + + + + %1 has size 0. + + + + + %1 is a directory. + + + + + You can not send a directory. + + + + + %1 is a shortcut. + + + + + You can not send a shortcut. + + + + + All Files (*.* *) + + + + + Please upgrade<br> your @product@ + + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + + QtFileTransferItem + + Cancel + 取消 + + + Remove + 刪除 + + + Pause + 暫停 + + + Starting + + + + + From: + + + + + To: + + + + + Open + + + + + Resume + + + + + Waiting for anwser... + + + + + Done + + + + + Failed + + + + + Paused + + + + + Paused by peer + + + + + Cancelled + + + + + Cancelled by peer + + + + + Downloading... + + + + + Uploading... + + + + + Waiting for peer... + + + + + An error occured during the file transfer + + + + + This may be caused by : + + + + + Your @product@ is not up to date. Please download the latest version on + + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + + QtGeneralSettings + + General + + + + + General Settings + + + + + + QtHistory + + Incoming call + + + + + Outgoing call + + + + + Missed call + + + + + Rejected call + + + + + Outgoing SMS + + + + + Do you want to call %1? + + + + + Chat session + + + + + @product@ - Call History + + + + + Type + 類型 + + + Name/ID + 名稱/帳戶 + + + Date + 日期 + + + Duration + 持續時間 + + + + QtHistoryWidget + + Erase this entry + + + + + Open in SMS window + + + + + Call this peer + + + + + Show chat log + + + + + + QtIMAccountManager + + Cancel + 取消 + + + @product@ + + + + + &Delete + + + + + Are sure you want to delete this account? + + + + + + + QtIMAccountMonitor + + Disconnected + + + + + Error: %1 + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do not disturb + + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + + + QtIMAccountPlugin + + @product@ + + + + + Please enter a login + + + + + + QtIMAccountPresenceMenuManager + + Cancel + 取消 + + + @product@ + + + + + &Delete + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Disconnect + + + + + Delete Account + + + + + Are sure you want to delete the account <b>%1</b>? + + + + + + QtIMProfileWidget + + Edit My Profile + + + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + + QtLanguagesSettings + + Language + + + + + Language Settings + + + + + + QtLogAccount + + Invalid account + + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + + QtLoginDialog + + @product@ - Login + + + + + + QtNotificationSettings + + Incoming call (ringtone) + + + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + + + + + Incoming chat + + + + + IM account connected + + + + + IM account disconnected + + + + + Contact online + + + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + + + + + Sounds + + + + + + QtPhoneCall + + Status + 狀態 + + + Incoming Call + 來電 + + + Resume + + + + + Hang-up + + + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + + + + + Talking + + + + + Dialing + + + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + + + + + Redirected + + + + + Initialization... + + + + + Closed + + + + + Hold + + + + + Add contact + + + + + Ca&ncel + + + + + Talking - Conference + + + + + Add a Contact + + + + + + QtPresenceMenuManager + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Log off + + + + + + QtPrivacySettings + + Privacy + + + + + Privacy Settings + + + + + + QtProfileBar + + Click here to change your status + + + + + active + + + + + voicemail + + + + + inactive + + + + + unauthorized + + + + + Set global presence to: + + + + + Voice mail + + + + + + QtProfileDetails + + Advanced >> + 進階 >> + + + @product@ + + + + + A contact must have a group, please set a group. + + + + + << Simple + + + + + Select your avatar + + + + + @product@ - No Group Selected + + + + + @company@ Avatars + + + + + + QtQuteCom + + &Cancel + 取消(&C) + + + Conference + + + + + Call + + + + + Account + + + + Add a Contact + + + + + You have unfinished call(s). + + + + + @product@ - Warning + + + + + Home + + + + + Are you sure you want to exit the application? + + + + + &Exit + + + + + @product@ - Call Error + + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Advanced + 進階 + + + General + + + + + Accounts + + + + + Audio + + + + + Call Forward + + + + + Language + + + + + Privacy + + + + + Video + + + + + Voicemail + + + + + security + + + + + Notifications + + + + + QtRenameGroup + + Bad group name + + + + + Group name cannot be empty + + + + + + QtSecuritySettings + + Security + + + + + Security Settings + + + + + BETA + + + + + + QtSms + + Please fill in a phone number. + + + + + Do you want to continue? + + + + + Your SMS has not been sent + + + + + Your SMS has been sent + + + + + Your message is too long. +This will send + + + + + SMS. + + + + + + You can not send an empty message. + + + + + @company@ SMS service + + + + + + QtSoftUpdate + + @product@ - Update failed + + + + + @product@ update failed to start: try to update @product@ manually + + + + + + QtStatusBar + + Not connected + + + + + Register done + + + + + Unregister done + + + + + Connecting + + + + + Output volume is muted + + + + + Output volume is 0 + + + + + Click to adjust output volume + + + + + Input volume is muted + + + + + Input volume is 0 + + + + + Click to adjust input volume + + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + 狀態 + + + @product@ + + + + + Call SIP + + + + + Call land line + + + + + Call Mobile + + + + + Call @company@ + + + + + Call + + + + + Send SMS + + + + + Online + + + + + Invisible + + + + + Away + + + + + Do Not Disturb + + + + + Internet Connection Error + + + + + Offline + + + + + Connecting... + + + + + Send a SMS + + + + + Start a chat + + + + + Place Call + + + + + Send File + + + + + Multiple Status + + + + + Unknown Status + + + + + Quit @product@ + + + + + + QtToolBar + + &Cancel + 取消(&C) + + + @product@ - Proceed Conference + + + + + Edit My Profile + + + + + Add a Contact + + + + + Hide Unavailable Contacts + + + + + Show Unavailable Contacts + + + + + Hide Groups + + + + + Show Groups + + + + + You have unfinished call(s). + + + + + Are you sure you want to log off? + + + + + &Log Off + + + + + Disable &Video Calls + + + + + Enable &Video Calls + + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + + @product@ - Warning + + + + + Log &Off... + + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + + + + + + QtUserProfile + + Edit Contact + + + + + &Authorize + + + + + &Block + + + + + Network error. + + + + + @product@ - Authorization Request + + + + + + QtUserProfileHandler + + @product@ + + + + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + + Wrong email/password entered + + + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + + QtVideoSettings + + Video + + + + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Video Settings + + + + + + QtVoicemailSettings + + Voicemail + + + + + Voicemail Settings + + + + + + QtWebDirectory + + @product@ - Directory + + + + + + QuteComConfigDialog + + Cancel + 取消 + + + Save + 儲存 + + + Title + + + + + @product@ - Configuration + + + + + + QuteComWindow + + &Accept + 接受(&A) + + + &Hidden + + + + + &Tools + 工具(&T) + + + &Help + 幫助(&H) + + + &Actions + 活動(&A) + + + @company@ + + + + + &Close + + + + + Dialpad + + + + + @product@ + + + + + Start Conference + + + + + Send SMS + + + + + Contacts + + + + + History + + + + + Clear &History + + + + + ToolBar + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + &HangUp + + + + + &Hold/Resume + + + + + Show/Hide &Groups + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + Rejected Calls + + + + + &Contacts + + + + + &About... + + + + + Add &Contact... + + + + + &Configuration... + + + + + Send SMS... + + + + + View My &Profile... + + + + + View My Profile + + + + + Start &Conference... + + + + + &Find Contact... + + + + + Log &Off... + + + + + Log Off + + + + + Show &Chat Window + + + + + Show Chat Window + + + + + Show &File Transfer + + + + + Add Contact + + + + + View My @company@ Account... + + + + + Ctrl+W + + + + + @company@ &Forum... + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + Search + + + + + Find @company@ Contacts + + + + + &Quit + + + + + Ctrl+Q + + + + + &Text Under Icons + + + + + &Icons Only + + + + + Add + 添加 + + + SMS + + + + + Conference + + + + + + RenameGroupDialog + + Cancel + 取消 + + + OK + 確定 + + + Enter the new group name: + + + + + @product@ - Rename Contact Group + + + + + + SecuritySettings + + Form + 格式 + + + Enable call encryption + + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + + + + + Yahoo! ID: + + + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + + + + + SIP ID: + + + + + ICQ ID: + + + + + AIM ID: + + + + + @company@ ID: + + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + 發送 + + + @product@ - SMS + + + + + Click here to add a phone number + + + + + 0 /160 + + + + + Enter your signature here + + + + + Signature: + + + + + Phone number(s): + + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + + + SoftUpdateWindow + + Cancel + 取消 + + + @product@ - Downloading update + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + 格式 + + + + VideoSettings + + Normal + + + + + Good + + + + + Very good + + + + + Excellent + + + + + Enable video + + + + + Webcam Selection + + + + + Webcam device: + + + + + Webcam Preview + + + + + Connection Type + + + + + Video quality + + + + + Down (kbit/s) + + + + + Up (kbit/s) + + + + + 0 to 512 + + + + + 0 to 128 + + + + + 512 to 2048 + + + + + 128 to 256 + + + + + 2048+ + + + + + 256+ + + + + + 8192+ + + + + + 1024+ + + + + + Video quality depends on your Internet connection bandwidth + + + + + Make a test video call + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + + VoicemailSettings + + Form + 格式 + + + Phone number of your voicemail: + + + + + Please fill in here the information about your voicemail + + + + + + Wizard + + Cancel + 取消 + + + Finish + + + + + Next > + + + + + < Back + + + + + Simple Wizard - Step %1 of %2 + + + + + + YahooSettings + + Login: + 登入: + + + Password: + 密碼: + + + Yahoo! Settings + + + + + Use Yahoo! Japan server + + + + + Forgot your Yahoo! password? + + + + + Get a new Yahoo! Account + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh.ts qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh.ts --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh.ts 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/lang/qtqutecom_zh.ts 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,3935 @@ + + + + + AIMSettings + + Password: + 密码 + + + Login: + 登录 + + + Forgot your AIM password? + 忘记了你的AIM密码? + + + Get a new AIM Account + 获得一个新的AIM帐号 + + + AIM Settings + + + + + AboutWindow + + About + 关于 + + + Copyright (C)2008 Mbdsys + + + + Authors + 作者 + + + Close + 关闭 + + + 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. + + + + @product@ - About + + + + @product@, a voice over Internet phone + + + + + AcceptDialog + + File Transfer + 文件传输 + + + toto@qutecom.fr + toto@qutecom.fr + + + test.bmp + test.bmp + + + &Accept + 接受 + + + &Cancel + 取消 + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> + + + + + AccountSettings + + &Edit my profile + &修改我的信息 + + + + AddAccount + + Configure your account: + + + + &Next + + + + Need help? + 需要帮助? + + + You don't have any account ? Click here + + + + &Back + + + + Cancel + 取消 + + + @product@ - Login + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + + @company@ account + + + + Generic SIP account + + + + + AddIMContact + + Contact Type (protocol): + 联系人类别 + + + Contact ID: + 联系人ID + + + Account: + 帐号 + + + Enable + 启用 + + + Login + 登陆 + + + Add + 添加 + + + Cancel + 取消 + + + @product@ - Add a Contact Account + + + + + AddQuteComAccount + + &Back + + + + &Connect + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + + Password: + 密码 + + + Email Address: + 电邮地址: + + + Need help? + 需要帮助? + + + Cancel + 取消 + + + @product@ - Login + + + + Click here if you don't have a @company@ account + + + + Forgot your @company@ password? + + + + + AddSIPAccount + + &Back + + + + &Connect + + + + Activate presence and chat (SIP/SIMPLE) + + + + Password: + 密码 + + + Displayname: + + + + login / username: + + + + Account name: + + + + Proxy: + + + + : + + + + Server: + + + + SIP Domain / Realm: + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + + Advanced + 高级 + + + Need help? + 需要帮助? + + + Cancel + 取消 + + + @product@ - Login + + + + + AdvancedConfigWindow + + Close + 关闭 + + + Preference Name + 偏爱的名称 + + + Status + 状态 + + + Type + 类别 + + + Value + 数值 + + + Default Value + 默认数值 + + + Save + 保存 + + + @product@ - Advanced Configuration + + + + + AdvancedSettings + + Add + 添加 + + + Advanced Settings + 高级设置 + + + Advanced Configuration Window + 高级配置窗口 + + + Automatically answer incoming calls from + 自动接听来电,如果它来自 + + + Remove + 移动 + + + Warning, this part is for advanced users.<br>Any mistake can badly damage the software. + + + + + AppearanceSettings + + Form + 表格 + + + Toolbar + + + + &Icons && Text + + + + Icons &Only + + + + &Hidden + + + + Chat Theme + + + + + AudioSettings + + Reset + + + + Audio Codecs + + + + &Input device: + + + + &Output device: + + + + &Ringing device: + + + + &Make a test call + + + + Test + + + + &Advanced >> + + + + &Half Duplex + + + + Be aware, this section is for power users only. +Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. + + + + + AvatarFrame + + Form + 表格 + + + + AvatarWidget + + Form + 表格 + + + + BrowserSoftUpdateWindow + + Close + 关闭 + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + + @product@ - Update available + + + + + CallForwardSettings + + 3rd: + 第三 + + + 1st: + 第一 + + + 2nd: + 第二 + + + (+ country code) phone number + (+国家码)电话号码 + + + Forward all unanswered calls to message box + 转移所有未接来电到信箱 + + + Disable call forwarding + 取消呼叫转移 + + + Forward all unanswered calls to following phone numbers: + 转移所有的未接来电到一下的电话号码: + + + For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) + + + + Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) + + + + + CallToaster + + Incoming Call + 来电 + + + Message + 消息 + + + + ChatLogViewer + + Chat History + + + + &Contact + &联系人 + + + &Tools + &工具 + + + &Help + &帮助 + + + &Actions + &活动 + + + Main Toolbar + 主要工具栏 + + + Call Contact + 呼叫联系人 + + + Send a File + 发送文件 + + + createChatConf + 建立聊天会议 + + + Show Contact Info + 显示联系人信息 + + + blockContact + 禁止联系人 + + + &Save History As... + &保存历史记录为... + + + actionRestartChat + + + + @company@ + + + + + ChatMainWindow + + MainWindow + 主要窗口 + + + &Contact + &联系人 + + + &Tools + &工具 + + + &Actions + &活动 + + + Main Toolbar + 主要工具栏 + + + Call Contact + 呼叫联系人 + + + Send a File + 发送文件 + + + Show Contact Info + 显示联系人信息 + + + blockContact + 禁止联系人 + + + &Save History As... + &保存历史记录为... + + + @company@ + + + + &Edit + + + + &Close + &关闭 + + + Cu&t + + + + Ctrl+X + + + + &Copy + + + + Ctrl+C + + + + &Paste + + + + Ctrl+V + + + + Start Chat Conference + + + + Conference + 会议 + + + + ChatRoomInviteWidget + + Chat room + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> + + + + (Conference participants) + + + + &Remove + + + + &Start + + + + Group Name + + + + &Add + + + + + ChatToaster + + Message + 消息 + + + Incoming Chat + 新消息 + + + + ChatWidget + + Form + 表格 + + + + ConferenceCallWidget + + Cancel + 取消 + + + Start + 开始 + + + Phone number 2: + 电话号码2: + + + Phone number 1: + 电话号码1: + + + ... + ... + + + @product@ - Create a Conference + + + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + + ConferenceInviteWidget + + <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> + + + + &Add >> + + + + << &Remove + + + + Available Contacts + + + + &Start + + + + Cancel + 取消 + + + + ContactGroupPopupMenu + + Remove Contact Group + 移动联系组 + + + Rename Contact Group + 重命名联系组 + + + Delete group + 删除组 + + + Do you really want to delete this group? + 你确实想删除这个组吗? + + + &Yes + 是的 + + + &No + + + + + ContactList + + Contact List + 联系人列表 + + + goupname + + + + + ContactWidget + + No mobile phone number set + 没有设置手机号码 + + + No landline phone number set + 没有设置座机号码 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> + + + + + CrashReport + + Program Failure + + + + Send + 发送 + + + Cancel + 取消 + + + Optional Information + + + + Your Mail: + + + + The @product@ execution failed and has generated a diagnostic file. +This file contains useful information to solve the problem you are encountering. +Thanks for your contribution. + +The @product@ Development Team. + + + + In order to help the developers you can complete this report. This step is optional. + + + + Use Case Description: + + + + + CreditWidget + + Not Available + 不可用 + + + Click here to change your call forward settings + 点击这里修改你的呼叫转移设置 + + + Call forward mode: + 呼叫转移模式: + + + Purchase call out credits + 购买call out话费 + + + Call Forward Method + 呼叫转移方式 + + + Call Voice Mail + + + + Click here to buy @company@'s credits + + + + + DesktopService + + Root Folder + + + + + DialpadWidget + + Click on the various color changing items to send sounds to your interlocutor. + + + + + EventWidget + + 0 + 0 + + + Click here to call your voice mail + 点击这里呼叫你的语音信箱 + + + New Voice Mail: + 新的语音邮件: + + + Click here to see missed call(s) + 点击这里查看未接来电 + + + Missed Call(s): + 未接来电: + + + + FacebookSettings + + Facebook Settings + + + + Email Address + + + + Password + + + + +Get a new Facebook Account + + + + + FileTransferDialog + + Download + 下载 + + + Upload + 上传 + + + Click here to change your download folder + + + + ... + ... + + + Download folder: + 下载文件夹: + + + Clean all items in the list + + + + &Clean + 清理 + + + @product@ - File Transfer Manager + + + + + FileTransferItem + + Cancel + 取消 + + + Form + 表格 + + + Pause + 暂停 + + + <i>From:</i> + + + + + GeneralSettings + + When I double-click on a contact + 当我双击一个联系人 + + + Call cell phone or land line if contact not online + 当联系人不在线,呼叫手机或座机 + + + Prefere start a free call if applicable + + + + Start in background mode + + + + Prefere start a chat + + + + Idle status + 空闲状态 + + + minutes + 分钟 + + + Show me as "Away" when I am inactive for: + 显示为“离开”,当我处于非活动状态 + + + When I start my computer + 当我启动我的电脑 + + + Automatically start @product@ + + + + + GoogleTalkSettings + + Password: + 密码 + + + Login: + 登录 + + + GoogleTalk Settings + GoogleTalk设置 + + + Forgot your GoogleTalk password? + 忘记了你的GoogleTalk密码? + + + Get a new GoogleTalk Account + 获得一个新的GoogleTalk帐号 + + + + HttpProxyLoginWindow + + Cancel + 取消 + + + HTTP Proxy Address: + HTTP代理地址: + + + HTTP Proxy Port Number: + HTTP代理端口号: + + + HTTP Proxy Login: + HTTP代理用户名: + + + HTTP Proxy Password: + HTTP代理密码: + + + OK + + + + <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> + + + + @product@ - Local HTTP Proxy + + + + + ICQSettings + + ICQ Settings + + + + Password: + 密码 + + + Login: + 登录 + + + Forgot your ICQ password? + + + + Get a new ICQ Account + + + + + IMAccountManager + + Close + 关闭 + + + Login + 登陆 + + + Add + 添加 + + + Protocol + 协议 + + + Delete + 删除 + + + Modify + 修改 + + + @product@ - My Instant Messaging Accounts (MSN, Jabber...) + + + + + IMAccountTemplate + + Cancel + 取消 + + + Save + 保存 + + + IM Account Settings + IM帐户设置 + + + + IMContactManager + + Add + 添加 + + + Delete + 删除 + + + Contact ID + 联系人帐号 + + + Contact Type (protocol) + 联系人类别(协议) + + + Click on the add button below to add a new ID + 点击添加按钮来添加一个新的帐号 + + + + IMProfileWidget + + Enter your nickname here + 在这里输入你的昵称 + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + + Add an IM account + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + ImageSelector + + OK + + + + Cancel + 取消 + + + Go Up + + + + Refresh + + + + + JabberSettings + + Password: + 密码 + + + Login: + 登录 + + + Jabber Settings + Jabber设置 + + + Connect Server: + 连接服务器: + + + <u>Advanced Options</u> + <u>高级选项</u> + + + Require TLS + 需要TLS + + + Port: + 端口: + + + Use TLS if available + 如果可以使用TLS + + + Allow plaintext authentication over unencrypted streams + 允许未加密流下的纯文本验证 + + + 5222 + 5222 + + + Force old (port 5223) SSL + 强制旧的(端口5223)SSL + + + Resource: + + + + + LanguagesSettings + + Google Translate + + + + language to convert the messages received + + + + language to convert the messages sent + + + + Your language is not here, do you know that you can do your own translation on Launchpad? + + + + More information here. + + + + + LogAccount + + &Modify + + + + &Connect + + + + Password: + 密码 + + + Account: + 帐号 + + + Delete + 删除 + + + Need help? + 需要帮助? + + + Configure a &New Profile + + + + Cancel + 取消 + + + @product@ - Login + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + + Forgot your @company@ password? + + + + + MSNSettings + + Password: + 密码 + + + Login: + 登录 + + + MSN Settings + MSN设置 + + + Forgot your MSN password? + 忘记了你的MSN密码? + + + Get a new MSN Account + 获得一个新的MSN帐号 + + + Use HTTP method + + + + + MainWindow + + MainWindow + 主要窗口 + + + Command::terminate() + + + + Command::start() + + + + Accept Call + + + + Send Chat Message + + + + Make Call + + + + Hang Up + + + + + ManageBlockedUsersSettings + + Close + 关闭 + + + Unblock User + 取消阻止用户 + + + Manage blocked users + 管理被阻止的用户 + + + @product@ - Manage blocked users + + + + + MySpaceSettings + + MySpace Settings + + + + Email Address + + + + Password + + + + + Get a new MySpace Account + + + + + NoQuteComAlert + + @product@ - SMS + + + + I have a @company@ account + + + + Create a @company@ account + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + NotificationSettings + + Select the events for which a sound should be played. + + + + + NotificationSettingsItem + + Sound file + 声音文件 + + + Find a sound file + 寻找一个声音文件 + + + Play sound file + 播放声音文件 + + + Play + + + + + NotifyDialog + + File Transfer + 文件传输 + + + &Ok + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> + + + + <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> + + + + + PhoneCallWidget + + Status + 状态 + + + 00:00:00 + 0/160 {00:00:00?} + + + Nickname + 昵称 + + + &Accept + 接受 + + + &Reject + + + + Dialpad + 拨号盘 + + + Audio Smileys + + + + Communication is encrypted + + + + + PrivacySettings + + Manage blocked users + 管理被阻止的用户 + + + Privacy Rules + 隐私规则 + + + Always sign in as "Invisible" (appear offline to all users) + 总是显示“离线”(显示为脱机) + + + Allow chats from + 允许即时信息自 + + + Anyone + 任何人 + + + Only people from my contact list + 只有我的联系人 + + + Allow calls from + 允许呼叫自 + + + When I sign into @company@ + + + + + ProfileDetails + + Cancel + 取消 + + + Save + 保存 + + + General + 常规 + + + Network IDs (MSN, Jabber...) + 网络ID(MSN,Jabber...) + + + Advanced >> + 高级>> + + + Fill in all your network Id to stay connected with your contacts + 填写你所有的网络ID以和你的联系人保持联系 + + + Phone Numbers + 电话号码 + + + Home phone + 家庭电话 + + + Mobile phone + 手机 + + + Contact + 联系人 + + + Group: + + + + Last Name: + + + + First Name: + + + + Details + 详细资料 + + + Web/blog: + Web/blog: + + + Country: + 国家 + + + State: + + + + City: + 城市: + + + Gender: + 性别: + + + Birth Date: + 生日 + + + Email: + 电邮: + + + dd MMMM yyyy + 日 月 年 + + + Unknown + 未知 + + + Male + + + + Female + + + + Notes + 注释 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + + + QObject + + @product@ + + + + + QtAccountSettings + + Accounts + 帐户 + + + Accounts Settings + + + + + QtAddAccount + + Configure your voip account + + + + Please tell us if your account is provided<br/>by @company@ or by another service + + + + + QtAddAccountUtils + + Test + + + + Audio Test Call + + + + Video Test Call + + + + + QtAddQuteComAccount + + Please enter an email address. + + + + Please enter your email address<br/>and your password + 请输入你的电邮地址<br/>和你的密码 + + + Login + 登陆 + + + @product@ - Login + + + + + QtAddSIPAccount + + Your profile name already exists! + + + + Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account + + + + Configure your SIP profile + + + + + QtAdvancedIMContactManager + + Are sure you want to delete this IM contact? + + + + + &Delete + &删除 + + + Cancel + 取消 + + + @product@ + + + + + QtAdvancedSettings + + Advanced + 高级 + + + Advanced Settings + 高级设置 + + + + QtAppearanceSettings + + Me + + + + Hello + + + + How are you? + + + + Other + + + + I am fine + + + + Have to go + + + + Bye + + + + Appearance + + + + Appearance Settings + + + + + QtAudioSettings + + Audio + 音频 + + + Audio Settings + 音频设置 + + + Advanced + 高级 + + + + QtCallBar + + +(country code) number or nickname + +(国家编码)电话号码或者昵称 + + + + QtCallForwardSettings + + Call Forward + 呼叫转移 + + + Call Forward Settings + 呼叫转移设置 + + + To configure call forward settings you need to<BR> be logged in with a @company@ account. + + + + + QtChatHistoryWidget + + Save As + 保存为 + + + + QtChatLogViewer + + Account + + + + Edit Contact + 修改联系人 + + + + QtChatTabWidget + + Close chat + 关闭聊天 + + + + QtChatWidget + + send + 发送 + + + %1 is connected. + + + + %1 is disconnected. + + + + Your file can not be sent: your contact must be connected on the @company@ network. + + + + Your contact wishes to send a file with @company@. + + + + Go to %1 to install it + + + + %1 has joined the chat + + + + %1 has left the chat + + + + + QtChatWindow + + Edit Contact + 修改联系人 + + + @product@ Chat + + + + Account + + + + %1 is typing + + + + + QtConferenceCallWidget + + Call SIP + 呼叫SIP + + + Call land line + 拨打座机 + + + Call Mobile + 拨打手机 + + + Call @company@ + + + + + QtContactCallListWidget + + <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> + + + + Hold first interlocutor and call second one + + + + <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. + + + + Start Conference + + + + @product@ - Proceed Conference + + + + + QtContactList + + &Yes + 是的 + + + &No + + + + Merge %1 with %2? + 合并%1和%2? + + + @product@ - Merge Contacts + + + + + QtContactManager + + &Yes + 是的 + + + &No + + + + Home phone + 家庭电话 + + + Mobile phone + 手机 + + + Edit Contact + 修改联系人 + + + Delete contact + 删除联系人 + + + Do you really want to delete this contact? + 你确实想删除这个联系人吗? + + + Call + 呼叫 + + + Free call + + + + Work phone + 工作电话 + + + Send SMS + 发送SMS + + + Edit contact + 修改联系人 + + + Block contact + 阻止联系人 + + + Start chat + 开始聊天 + + + Invite to conference + 邀请到会议 + + + Go to website + + + + Send file + + + + Forward to mobile phone + + + + @product@ + + + + + QtContactWidget + + Click here to call + 点击这里拨打电话 + + + Click here to set a phone number + 点击这里以设置一个电话号码 + + + Click here to edit the contact + 点击这里以编辑联系人 + + + Click here to send a SMS + 点击这里以发送一个短信 + + + Click here to start a chat + 点击这里以开始一个聊天 + + + Click here to start a free call + 点击这里以开始一个免费通话 + + + Click here to send a file + + + + No landline phone number set + 没有设置座机号码 + + + No mobile phone number set + 没有设置手机号码 + + + + QtCrashReport + + %1 Crash Report + + + + + QtEventWidget + + Do you want to call your voice mail? + 你想呼叫你的语音信箱吗? + + + @product@ - Voice Mail + + + + + QtFileTransfer + + &Yes + 是的 + + + &No + + + + Choose a directory + 选择一个目录 + + + Overwrite File? + 覆盖文件? + + + A file called %1 already exists.Do you want to overwrite it? + 一个叫%1的文件已经存在。你想覆盖它吗? + + + File size error + + + + %1 exceeds the maximum authorized size. + + + + %1 has size 0. + + + + %1 is a directory. + + + + You can not send a directory. + + + + %1 is a shortcut. + + + + You can not send a shortcut. + + + + All Files (*.* *) + + + + Please upgrade<br> your @product@ + + + + Tell your contact<br> to upgrade<br> his @product@ + + + + The file cannot be received:you must upgrade your @product@ in order to receive it. + + + + is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. + + + + + QtFileTransferItem + + Cancel + 取消 + + + Remove + 移动 + + + Pause + 暂停 + + + Starting + 开始 + + + From: + 来自: + + + To: + 到: + + + Open + 打开 + + + Resume + 继续 + + + Waiting for anwser... + 等待答复... + + + Done + 完成 + + + Failed + 失败 + + + Paused + 暂停 + + + Paused by peer + 被好友暂停 + + + Cancelled + 取消 + + + Cancelled by peer + 被好友取消 + + + Downloading... + 下载中... + + + Uploading... + 上传中... + + + Waiting for peer... + + + + An error occured during the file transfer + + + + This may be caused by : + + + + Your @product@ is not up to date. Please download the latest version on + + + + The @company@ network may be temporarily unavailable. Please try later. + + + + + QtGeneralSettings + + General + 常规 + + + General Settings + 普通设置 + + + + QtHistory + + Incoming call + 呼进电话 + + + Outgoing call + 拨出电话 + + + Missed call + 未接来电 + + + Rejected call + 拒绝的来电 + + + Outgoing SMS + 已发短信 + + + Do you want to call %1? + 你想呼叫%1吗? + + + Chat session + + + + @product@ - Call History + + + + Type + 类别 + + + Name/ID + 名称/帐号 + + + Date + 时间 + + + Duration + 持续时间 + + + + QtHistoryWidget + + Erase this entry + 去掉这个入口 + + + Open in SMS window + 以短信窗口打开 + + + Call this peer + 呼叫这个人 + + + Show chat log + + + + + QtIMAccountManager + + Cancel + 取消 + + + &Delete + &删除 + + + Are sure you want to delete this account? + + + + + @product@ + + + + + QtIMAccountMonitor + + Disconnected + + + + Error: %1 + + + + %1 (%2/%3) + %1 is message, %2 is currentStep, %3 is totalSteps + + + + Online + 在线 + + + Invisible + 隐身 + + + Away + 离开 + + + Do not disturb + + + + + QtIMAccountPlugin + + Please enter a login + 请输入一个注册名 + + + @product@ + + + + + QtIMAccountPresenceMenuManager + + Online + 在线 + + + Away + 离开 + + + Do Not Disturb + 请勿打扰 + + + Invisible + 隐身 + + + Disconnect + + + + Delete Account + + + + Are sure you want to delete the account <b>%1</b>? + + + + &Delete + &删除 + + + Cancel + 取消 + + + @product@ + + + + + QtIMProfileWidget + + Edit My Profile + 修改我的资料 + + + %1 (%2) +%3 + %1 is login, %2 is protocol, %3 is status + + + + + QtLanguagesSettings + + Language + 语言 + + + Language Settings + + + + + QtLogAccount + + Invalid account + + + + Warning + + + + Do you really want to delete this profile + + + + Yes + + + + No + + + + Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account + + + + + QtLoginDialog + + @product@ - Login + + + + + QtNotificationSettings + + Incoming call (ringtone) + 来电(铃音) + + + Outgoing call (ringtone) + + + + Call closed (hang up tone) + 结束通话(挂起音) + + + Incoming chat + 文本信息 + + + IM account connected + IM帐户已连接 + + + IM account disconnected + IM帐户未连接 + + + Contact online + 联系人在线 + + + Notifications + + + + Notifications Settings + + + + + QtNotificationSettingsItem + + Choose a sound file + 选择一个声音文件 + + + Sounds + 声音 + + + + QtPhoneCall + + Status + 状态 + + + Incoming Call + 来电 + + + Resume + 继续 + + + Hang-up + 挂断 + + + Hold + 挂起 + + + Add contact + 添加联系人 + + + Transfert call + + + + QuteCom - Information + + + + You must enter a phone number before forwarding + + + + Error + 错误 + + + Talking + 通话中 + + + Dialing + 拨号中 + + + User busy + + + + Call Rejected + + + + User/number not found + + + + User not available + + + + Ringing + 响铃中 + + + Redirected + 重新开始 + + + Initialization... + 初始化 + + + Closed + 关闭 + + + Ca&ncel + + + + Talking - Conference + + + + Add a Contact + 添加一个联系人 + + + + QtPresenceMenuManager + + Online + 在线 + + + Away + 离开 + + + Do Not Disturb + 请勿打扰 + + + Invisible + 隐身 + + + Log off + + + + + QtPrivacySettings + + Privacy + 隐私 + + + Privacy Settings + + + + + QtProfileBar + + Click here to change your status + 点击这里以改变你的状态 + + + active + 激活 + + + voicemail + 语音邮件 + + + inactive + 非活动 + + + unauthorized + 未授权 + + + Set global presence to: + + + + Voice mail + + + + + QtProfileDetails + + Advanced >> + 高级>> + + + A contact must have a group, please set a group. + 一个联系人需要有一个组,请设立一个组 + + + << Simple + 《简单的 + + + Select your avatar + + + + @product@ + + + + @product@ - No Group Selected + + + + @company@ Avatars + + + + + QtQuteCom + + Call + 呼叫 + + + Account + + + + Add a Contact + 添加一个联系人 + + + Home + 主页 + + + Conference + 会议 + + + You have unfinished call(s). + + + + Are you sure you want to exit the application? + + + + &Exit + + + + &Cancel + 取消 + + + @product@ - Call Error + + + + @product@ - Warning + + + + Please hold all the phone calls before placing a new one + + + + Can't place a call, you are not connected + + + + You must enter a phone number + + + + An error has occured trying to place the call + + + + + QtQuteComConfigDialog + + Language + 语言 + + + General + 常规 + + + Accounts + 帐户 + + + Advanced + 高级 + + + Audio + 音频 + + + Call Forward + 呼叫转移 + + + Privacy + 隐私 + + + Video + 视频 + + + Voicemail + + + + security + + + + Notifications + + + + + QtRenameGroup + + Bad group name + 无效的组名 + + + Group name cannot be empty + 组名不能是空的 + + + + QtSecuritySettings + + Security + + + + Security Settings + + + + BETA + + + + + QtSms + + Please fill in a phone number. + 请填写一个电话号码 + + + Do you want to continue? + 你希望继续吗? + + + Your SMS has not been sent + 你的短信没有发出 + + + Your SMS has been sent + 你的短信已经发出 + + + You can not send an empty message. + + + + Your message is too long. +This will send + + + + SMS. + + + + + @company@ SMS service + + + + + QtSoftUpdate + + @product@ - Update failed + + + + @product@ update failed to start: try to update @product@ manually + + + + + QtStatusBar + + Not connected + 未连接 + + + Register done + 注册完毕 + + + Unregister done + 未注册 + + + Connecting + 连接中 + + + Output volume is muted + + + + Output volume is 0 + + + + Click to adjust output volume + + + + Input volume is muted + + + + Input volume is 0 + + + + Click to adjust input volume + + + + An error occured: Server error. + + + + An error occured: Timeout. + + + + An error occured: Authentication error. + + + + + QtSystray + + Status + 状态 + + + Call SIP + 呼叫SIP + + + Call land line + 拨打座机 + + + Call Mobile + 拨打手机 + + + Call + 呼叫 + + + Send SMS + 发送SMS + + + Internet Connection Error + 网络连接错误 + + + Send a SMS + 发送一个短信 + + + Start a chat + 开始一个文本聊天 + + + Place Call + 拨打电话 + + + Away + 离开 + + + Online + 在线 + + + Offline + 离线 + + + Invisible + 隐身 + + + Do Not Disturb + 请勿打扰 + + + Connecting... + 连接中... + + + Send File + + + + Multiple Status + + + + Unknown Status + + + + @product@ + + + + Quit @product@ + + + + Call @company@ + + + + + QtToolBar + + Edit My Profile + 修改我的资料 + + + Add a Contact + 添加一个联系人 + + + Hide Unavailable Contacts + + + + Show Unavailable Contacts + + + + Hide Groups + + + + Show Groups + + + + You have unfinished call(s). + + + + Are you sure you want to log off? + + + + &Log Off + + + + &Cancel + 取消 + + + Disable &Video Calls + + + + Enable &Video Calls + + + + <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. + + + + @product@ - Proceed Conference + + + + @product@ - Warning + + + + Log &Off... + + + + Log &On... + + + + + QtTreeViewDelegate + + Contacts list + 联系人名单 + + + + QtUserProfile + + Edit Contact + 修改联系人 + + + &Authorize + &批准 + + + &Block + &阻止 + + + Network error. + + + + @product@ - Authorization Request + + + + + QtUserProfileHandler + + A problem occured while loading your profile. +The last backuped profile has been loaded: +you may have lost last changes made + + + + Your profile could not be loaded. +Choose another profile or create a new one. + + + + @product@ + + + + Wrong email/password entered + 错误的电邮/密码 + + + Wrong login/password entered + + + + Connection error + + + + Unexpected error (code: %1 + + + + + QtVideoQt + + @product@ + + + + + QtVideoSettings + + Video + 视频 + + + Normal + 正常 + + + Good + + + + Very good + 很好 + + + Excellent + 非常好 + + + Video Settings + 视频设置 + + + + QtVoicemailSettings + + Voicemail + + + + Voicemail Settings + + + + + QtWebDirectory + + @product@ - Directory + + + + + QuteComConfigDialog + + Cancel + 取消 + + + Save + 保存 + + + Title + + + + @product@ - Configuration + + + + + QuteComWindow + + &Accept + 接受 + + + &Tools + &工具 + + + &Help + &帮助 + + + &Actions + &活动 + + + Contacts + 联系人 + + + History + 历史 + + + Dialpad + 拨号盘 + + + &Contacts + &联系人 + + + Clear &History + 清理&历史 + + + ToolBar + 工具栏 + + + &Close + &关闭 + + + Show/Hide Unavailable &Contacts + 显示/隐藏 离线联系人 + + + &Chat Sessions + &聊天 + + + &All + &所有 + + + &HangUp + 挂断 + + + &Hold/Resume + 暂停/继续 + + + Show/Hide &Groups + 显示/隐藏 组 + + + &Outgoing Calls + &呼出电话 + + + &Incoming Calls + &来电 + + + &Missed Calls + &未接电话 + + + Enable/Disable &Video Calls + 使用/禁止 视频通话 + + + Short Text &Messages (SMS) + 短信(SMS) + + + Rejected Calls + 拒绝的通话 + + + &About... + + + + Add &Contact... + + + + &Configuration... + + + + Send SMS... + + + + Send SMS + 发送SMS + + + View My &Profile... + + + + View My Profile + + + + Start &Conference... + + + + Start Conference + + + + &Find Contact... + + + + Log &Off... + + + + Log Off + + + + Show &Chat Window + + + + Show Chat Window + + + + Show &File Transfer + + + + Add Contact + + + + @product@ + + + + @company@ + + + + View My @company@ Account... + + + + Ctrl+W + + + + @company@ &Forum... + + + + Add + 添加 + + + SMS + SMS + + + Conference + 会议 + + + @company@ &Wiki/FAQ... + + + + Learn more about @company@ Services... + + + + Search + + + + Find @company@ Contacts + + + + &Quit + + + + Ctrl+Q + + + + &Text Under Icons + + + + &Icons Only + + + + &Hidden + + + + + RenameGroupDialog + + Cancel + 取消 + + + OK + + + + Enter the new group name: + 输入新的组名: + + + @product@ - Rename Contact Group + + + + + SecuritySettings + + Form + 表格 + + + Enable call encryption + + + + @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. + + + + Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. + + + + + SimpleIMContactManager + + Update your profile + 更新你的资料 + + + Yahoo! ID: + Yahoo!ID: + + + GoogleTalk ID: + + + + Jabber ID: + + + + FaceBook ID: + + + + MySpace ID: + + + + Skype ID: + + + + Twitter ID: + + + + MSN ID: + MSN ID: + + + SIP ID: + + + + ICQ ID: + + + + AIM ID: + + + + @company@ ID: + + + + + SkypeSettings + + Skype Settings + + + + Skype Id + + + + + Get a new Skype Account + + + + + SmsWindow + + Send + 发送 + + + Click here to add a phone number + 点击这里已添加一个电话号码 + + + 0 /160 + 0/160 + + + Enter your signature here + 在这里输入你的签名 + + + Signature: + 签名: + + + Phone number(s): + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + + @product@ - SMS + + + + + SoftUpdateWindow + + Cancel + 取消 + + + @product@ - Downloading update + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + + + StatusBarWidget + + ... + ... + + + + TwitterSettings + + Twitter Settings + + + + Email Address + + + + Password + + + + + Get a new Twitter Account + + + + + UserFrame + + Form + 表格 + + + + VideoSettings + + Normal + 正常 + + + Good + + + + Very good + 很好 + + + Excellent + 非常好 + + + Enable video + 启用视频 + + + Webcam Selection + 网络摄像头选择 + + + Webcam device: + 网络视频设备 + + + Webcam Preview + 网络摄像头预览 + + + Connection Type + 连接类别 + + + Video quality + 视频质量 + + + Down (kbit/s) + 降低(kbit/s) + + + Up (kbit/s) + 提高(kbit/s) + + + 0 to 512 + 0至512 + + + 0 to 128 + 0至128 + + + 512 to 2048 + 512至2048 + + + 128 to 256 + 128至256 + + + 2048+ + 2048+ + + + 256+ + 256+ + + + 8192+ + 8192+ + + + 1024+ + 1024+ + + + Video quality depends on your Internet connection bandwidth + 视频质量取决于你的网络带宽 + + + Make a test video call + 进行一个视频聊天测试 + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> +<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> + + + + + VideoWindow + + ... + ... + + + @product@ - Video + + + + + VoicemailSettings + + Form + 表格 + + + Phone number of your voicemail: + + + + Please fill in here the information about your voicemail + + + + + Wizard + + Simple Wizard - Step %1 of %2 + + + + Cancel + 取消 + + + Finish + + + + Next > + + + + < Back + + + + + YahooSettings + + Yahoo! Settings + + + + Password: + 密码 + + + Login: + 登录 + + + Use Yahoo! Japan server + + + + Forgot your Yahoo! password? + + + + Get a new Yahoo! Account + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddAccount.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddAccount.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddAccount.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,680 @@ + + AddAccount + + + + 0 + 0 + 415 + 285 + + + + @product@ - Login + + + + 0 + + + 6 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 233 + 231 + 227 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 106 + 104 + 100 + + + + + + + 255 + 255 + 255 + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 100 + + + + + + + 0 + + + 6 + + + + + You don't have any account ? Click here + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + Qt::Horizontal + + + + 20 + 20 + + + + + + + + + + Qt::Horizontal + + + + + + + Configure your account: + + + + + + + @company@ account + + + true + + + + + + + Generic SIP account + + + + + + + Qt::Vertical + + + + 201 + 43 + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 6 + + + + + + + + :/pics/help.png + + + + + + + Need help? + + + + + + + Qt::Horizontal + + + + 0 + 29 + + + + + + + + &Back + + + + + + + &Next + + + true + + + + + + + Cancel + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + newQuteCom + newSIP + nextButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddQuteComAccount.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddQuteComAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddQuteComAccount.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddQuteComAccount.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,505 @@ + + + + + AddQuteComAccount + + + + 0 + 0 + 387 + 279 + + + + @product@ - Login + + + + 0 + + + 6 + + + + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 0 + 0 + 0 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 255 + 255 + 255 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> + + + 100 + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + Click here if you don't have a @company@ account + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 6 + + + + + QLineEdit::Password + + + + + + + Password: + + + + + + + + + + + 0 + 0 + 0 + 0 + + + + Forgot your @company@ password? + + + + + + + Email Address: + + + + + + + + + Qt::Vertical + + + + 251 + 44 + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 6 + + + + + + + + :/pics/help.png + + + + + + + Need help? + + + + + + + Qt::Horizontal + + + + 0 + 31 + + + + + + + + &Back + + + + + + + &Connect + + + true + + + + + + + Cancel + + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+ 0 + +
+
+ + email + password + backButton + loginButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddSIPAccount.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddSIPAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/AddSIPAccount.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/AddSIPAccount.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,799 @@ + + AddSIPAccount + + + + 0 + 0 + 397 + 463 + + + + @product@ - Login + + + + 0 + + + 6 + + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 233 + 231 + 227 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 106 + 104 + 100 + + + + + + + 255 + 255 + 255 + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 100 + + + + + + + 0 + + + 6 + + + + + : + + + + + + + Password: + + + + + + + + + + + + + + + + + + + Proxy: + + + + + + + QLineEdit::Password + + + + + + + + 7 + 0 + 2 + 0 + + + + + + + + SIP Domain / Realm: + + + + + + + + 7 + 0 + 1 + 0 + + + + 5 + + + + + + + + + + Server: + + + + + + + Account name: + + + + + + + Qt::Horizontal + + + + + + + Displayname: + + + + + + + login / username: + + + + + + + 0 + + + 6 + + + + + Advanced + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 6 + + + + + Qt::LeftToRight + + + Activate presence and chat (SIP/SIMPLE) + + + + + + + + + + Qt::Vertical + + + + 20 + 16 + + + + + + + + Qt::Horizontal + + + + + + + 0 + + + 6 + + + + + + + + :/pics/help.png + + + + + + + Need help? + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + &Back + + + + + + + &Connect + + + true + + + + + + + Cancel + + + + + + + + + + ExpandButton + QToolButton +
qtutil/ExpandButton.h
+
+ + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + accountname + login + password + realm + displayname + registerServer + proxyServer + proxyPort + activateSIMPLE + backButton + loginButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/ILogin.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/ILogin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/ILogin.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/ILogin.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,42 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "ILogin.h" + +ILogin::ILogin(QtLoginDialog * qtLoginDialog, CUserProfileHandler & cUserProfileHandler) + : _cUserProfileHandler(cUserProfileHandler) + , _backPage(QtLoginDialog::LogAccount) +{ + _loginDialog = qtLoginDialog; +} + +ILogin::~ILogin() { +} + +void ILogin::load(const SipAccount & sipAccount) { + load(sipAccount.getUserProfileName()); +} + +void ILogin::setBackPage(QtLoginDialog::LoginDialogPage backPage) { + _backPage = backPage; +} + +void ILogin::goBack() { + _loginDialog->changePage(_backPage); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/ILogin.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/ILogin.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/ILogin.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/ILogin.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,98 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ILOGIN_H +#define ILOGIN_H + +#include "QtLoginDialog.h" + +#include + +#include + +#include +#include + +#include + +/** + * Qt login window. + * + * @author Xavier Desjardins + */ +class ILogin : public QWidget { + Q_OBJECT +public: + + ILogin(QtLoginDialog * qtLoginDialog, CUserProfileHandler & cUserProfileHandler) ; + + virtual ~ILogin(); + + /** + * loads and uses a sipaccount to initialize widget value + * + * @param sipAccountName name of the SipAccount to be loaded + */ + virtual void load(std::string sipAccountName) = 0; + + /** + * loads and uses a sipaccount to initialize widget value + * + * @param sipAccount SipAccount to be loaded + */ + virtual void load(const SipAccount & sipAccount); + + /** + * Initialze the page. Called when the page is shown. + */ + virtual void initPage() = 0; + + /** + * Sets the text of infoLabel to 'message' and colorize it to normal color. + */ + virtual void setInfoMessage() = 0; + + /** + * Sets the text of infoLabel to 'message' and colorize it to red. + */ + virtual void setErrorMessage(const QString & message) = 0; + + /** + * Sets the login label. + */ + virtual void setLoginLabel(const QString & message) = 0; + + virtual void setBackPage(QtLoginDialog::LoginDialogPage); + +private Q_SLOTS: + + virtual void languageChanged() = 0; + + void goBack(); + +protected: + + QtLoginDialog * _loginDialog; + + CUserProfileHandler & _cUserProfileHandler; + + QtLoginDialog::LoginDialogPage _backPage; +}; + +#endif //ILOGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/LogAccount.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/LogAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/LogAccount.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/LogAccount.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,750 @@ + + LogAccount + + + + 0 + 0 + 420 + 336 + + + + @product@ - Login + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 0 + 0 + 0 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 234 + 229 + 220 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 255 + 255 + 255 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 212 + 208 + 200 + + + + + + + 64 + 64 + 64 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 255 + 255 + 255 + + + + + + + 233 + 231 + 227 + + + + + + + 128 + 128 + 128 + + + + + + + 141 + 139 + 133 + + + + + + + 106 + 104 + 100 + + + + + + + 255 + 255 + 255 + + + + + + + 106 + 104 + 100 + + + + + + + 212 + 208 + 200 + + + + + + + 212 + 208 + 200 + + + + + + + 0 + 0 + 0 + + + + + + + 10 + 36 + 106 + + + + + + + 255 + 255 + 255 + + + + + + + 0 + 0 + 255 + + + + + + + 255 + 0 + 255 + + + + + + + 232 + 232 + 232 + + + + + + + + <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 100 + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 86 + 20 + + + + + + + + Qt::Horizontal + + + + 85 + 20 + + + + + + + + Configure a &New Profile + + + + + + + + + Qt::Horizontal + + + + + + + Qt::Vertical + + + + 41 + 23 + + + + + + + + 6 + + + 0 + + + + + + + + :/pics/help.png + + + + + + + Need help? + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + &Connect + + + true + + + true + + + + + + + Cancel + + + + + + + + + Qt::Horizontal + + + + 20 + 31 + + + + + + + + Qt::Horizontal + + + + 20 + 31 + + + + + + + + 0 + + + 6 + + + + + false + + + + + + + Password: + + + + + + + &Modify + + + + + + + Account: + + + + + + + QLineEdit::Password + + + + + + + + 0 + 0 + + + + Forgot your @company@ password? + + + + + + + Delete + + + + + + + + + + LinkLabel + QLabel +
qtutil/LinkLabel.h
+
+
+ + createNewAccount + accountComboBox + passwordLineEdit + modifyButton + loginButton + + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,111 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAddAccount.h" +#include "QtLoginDialog.h" + +#include "ui_AddAccount.h" + +#include + +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +QtAddAccount::QtAddAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) + : ILogin(qtLoginDialog, cUserProfileHandler) { + + _ui = new Ui::AddAccount(); + _ui->setupUi(this); + + LANGUAGE_CHANGE(this); + + WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); + + SAFE_CONNECT(_ui->createNewAccountLabel, SIGNAL(linkActivated(const QString &)), + SLOT(createAccountClicked(const QString &))); + SAFE_CONNECT(_ui->nextButton, SIGNAL(clicked()), SLOT(nextClicked())); + SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); + SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); + SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); +} + +QtAddAccount::~QtAddAccount() { + OWSAFE_DELETE(_ui); +} + +void QtAddAccount::createAccountClicked(const QString & /*url*/) { + WsUrl::showQuteComAccountCreation(); +} + +void QtAddAccount::helpButtonClicked() { + WsUrl::showWikiPage(); +} + +void QtAddAccount::nextClicked() { + if (_ui->newQuteCom->isChecked()) { + _loginDialog->changePage(QtLoginDialog::AddQuteComAccount); + } else if (_ui->newSIP->isChecked()) { + _loginDialog->changePage(QtLoginDialog::AddSIPAccount); + } + _loginDialog->currentPage()->setBackPage(QtLoginDialog::AddAccount); +} + +void QtAddAccount::setInfoMessage() { + setLoginLabel(tr("Please tell us if your account is provided
by @company@ or by another service")); +} + +void QtAddAccount::setErrorMessage(const QString & message) { + setLoginLabel(QString("%1").arg(message)); +} + +void QtAddAccount::setLoginLabel(const QString & message) { + QString loginLabel = QString("" + + tr("Configure your voip account") + "
%1").arg(message); + _ui->loginLabel->setText(loginLabel); +} + +void QtAddAccount::languageChanged() { + _ui->retranslateUi(this); +} + +void QtAddAccount::load(std::string sipAccountName) { + setInfoMessage(); +} + +void QtAddAccount::initPage() { + _ui->nextButton->setDefault(true); + setInfoMessage(); +} + +void QtAddAccount::keyPressEvent(QKeyEvent *event) { + if (event->key()==Qt::Key_Return) { + nextClicked(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTADDACCOUNT_H +#define OWQTADDACCOUNT_H + +#include "ILogin.h" + +class CUserProfileHandler; +class QtLoginDialog; +class QWidget; + +namespace Ui { class AddAccount; } + +/** + * Qt login window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtAddAccount : public ILogin { + Q_OBJECT +public: + + QtAddAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); + + ~QtAddAccount(); + + virtual void load(std::string sipAccountName); + +private Q_SLOTS: + + void createAccountClicked(const QString & url); + + void helpButtonClicked(); + + void nextClicked(); + + virtual void languageChanged(); + +private: + + virtual void setInfoMessage(); + + virtual void setErrorMessage(const QString & message); + + virtual void setLoginLabel(const QString & message); + + void keyPressEvent(QKeyEvent * event); + + void initPage(); + + Ui::AddAccount * _ui; +}; + +#endif //OWQTADDACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "QtAddAccountUtils.h" + +#include +#include +#include + +#include + +namespace QtAddAccountUtils { + +static void addContact(UserProfile* userProfile, const std::string& groupId, const std::string& name, const std::string& sipAddress) { + Contact& contact = userProfile->getContactList().createContact(); + contact.setGroupId(groupId); + contact.setFirstName(name); + + IMContact imContact(EnumIMProtocol::IMProtocolSIP, sipAddress); + contact.addIMContact(imContact); +} + +void addTestContacts(UserProfile* userProfile, const std::string& audioTestCallAddress, const std::string& videoTestCallAddress) { + if (audioTestCallAddress.empty() && videoTestCallAddress.empty()) { + return; + } + + std::string groupName(QCoreApplication::translate("QtAddAccountUtils", "Test").toUtf8()); + userProfile->getContactList().addContactGroup(groupName); + std::string groupId = userProfile->getContactList().getContactGroupIdFromName(groupName); + + if (!audioTestCallAddress.empty()) { + std::string name(QCoreApplication::translate("QtAddAccountUtils", "Audio Test Call").toUtf8()); + addContact(userProfile, groupId, name, audioTestCallAddress); + } + + if (!videoTestCallAddress.empty()) { + std::string name(QCoreApplication::translate("QtAddAccountUtils", "Video Test Call").toUtf8()); + addContact(userProfile, groupId, name, videoTestCallAddress); + } +} + +} // namespace diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddAccountUtils.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,39 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTADDACCOUNTUTILS_H +#define QTADDACCOUNTUTILS_H + +#include + +class UserProfile; + +/** + * This namespace contains code used to initialize new users contact + * list. It's shared between QtAddQuteComAccount and QtAddSipAccount + */ +namespace QtAddAccountUtils { + +/** + * Add test contacts to the user contact list, if addresses are not empty + */ +void addTestContacts(UserProfile* userProfile, const std::string& audioTestCallAddress, const std::string& videoTestCallAddress); + +} + +#endif /* QTADDACCOUNTUTILS_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,182 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAddQuteComAccount.h" + +#include "QtAddAccountUtils.h" +#include "QtLoginDialog.h" + +#include "ui_AddQuteComAccount.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +QtAddQuteComAccount::QtAddQuteComAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) + :ILogin(qtLoginDialog, cUserProfileHandler){ + + _ui = new Ui::AddQuteComAccount(); + _ui->setupUi(this); + + LANGUAGE_CHANGE(this); + + WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); + + SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); + SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); + SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); + SAFE_CONNECT(_ui->createQuteComAccountLabel, SIGNAL(linkActivated(const QString &)), SLOT(createAccountButtonClicked())); + SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString &)), SLOT(forgotPasswordButtonClicked())); +} + +QtAddQuteComAccount::~QtAddQuteComAccount() { + OWSAFE_DELETE(_ui); +} + +void QtAddQuteComAccount::createAccountButtonClicked() { + WsUrl::showQuteComAccountCreation(); +} + +void QtAddQuteComAccount::helpButtonClicked() { + WsUrl::showWikiPage(); +} + +void QtAddQuteComAccount::forgotPasswordButtonClicked() { + WsUrl::showLostPasswordPage(); +} + +void QtAddQuteComAccount::loginClicked() { + std::string login(_ui->email->text().trimmed().toUtf8()); + + // check if login is an email address + if (login.find("@", 0) == login.npos) { + + QMessageBox::warning(this, tr("@product@ - Login"), + tr("Please enter an email address."), + QMessageBox::Ok, QMessageBox::NoButton); + + return; + } + //// + + std::string password( _ui->password->text().trimmed().toUtf8()); + if (!login.empty() && !password.empty()) { + QuteComAccount qutecomAccount(login, password, true/*_ui->rememberPassword->isChecked()*/); + qutecomAccount.setVisibleName(login); + + // Looking for the selected profile + if (!_cUserProfileHandler.userProfileExists(login)) { + // The selected profile does not exist. Create it. + UserProfile userProfile; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QtAddAccountUtils::addTestContacts(&userProfile, + config.getQuteComAudioTestCall(), + config.getQuteComVideoTestCall() + ); + + userProfile.setSipAccount(qutecomAccount, false /* needInitialization */); + UserProfileFileStorage userProfileStorage(userProfile); + userProfileStorage.save(login); + } + _cUserProfileHandler.setCurrentUserProfile(login, qutecomAccount); + _loginDialog->accept(); + } +} + +void QtAddQuteComAccount::setInfoMessage() { + setLoginLabel(tr("Please enter your email address
and your password")); +} + +void QtAddQuteComAccount::setErrorMessage(const QString & message) { + setLoginLabel(QString("%1").arg(message)); +} + +void QtAddQuteComAccount::setLoginLabel(const QString & message) { + QString loginLabel = QString("" + + tr("Login") + "
%1").arg(message); + _ui->loginLabel->setText(loginLabel); +} + +void QtAddQuteComAccount::languageChanged() { + _ui->retranslateUi(this); +} + +void QtAddQuteComAccount::load(const SipAccount & sipAccount) { + if (sipAccount.getType() == SipAccount::SipAccountTypeQuteCom) { + const QuteComAccount & qutecomAccount = dynamic_cast(sipAccount); + _ui->email->setText(QString::fromUtf8(qutecomAccount.getQuteComLogin().c_str())); + _ui->password->setText(QString::fromUtf8(qutecomAccount.getQuteComPassword().c_str())); + setInfoMessage(); + } else { + LOG_DEBUG("SIP getType() = SipAccount::SipAccountTypeBasic"); + //_loginDialog->changePage(QtLoginDialog::AddSIPAccount, sipAccount); + } +} + +void QtAddQuteComAccount::load(std::string sipAccountName) { + //load userprofile + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); + if (userProfile && userProfile->hasSipAccount()) { + //tests account type + if (userProfile->hasQuteComAccount()) { + //loads the qutecom acccount + QuteComAccount * qutecomAccount = userProfile->getQuteComAccount(); + _ui->email->setText(QString::fromUtf8(qutecomAccount->getQuteComLogin().c_str())); + _ui->password->setText(QString::fromUtf8(qutecomAccount->getQuteComPassword().c_str())); + setInfoMessage(); + } else { + //should be loaded as a sip account + _loginDialog->changePage(QtLoginDialog::AddSIPAccount, sipAccountName); + } + } else { + _loginDialog->changePage(QtLoginDialog::AddAccount); + } + OWSAFE_DELETE(userProfile); +} + +void QtAddQuteComAccount::initPage() { + _ui->email->setFocus(); + _ui->loginButton->setDefault(true); + setInfoMessage(); +} + +void QtAddQuteComAccount::keyPressEvent(QKeyEvent *event) { + if (event->key()==Qt::Key_Return) { + loginClicked(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddQuteComAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTADDQUTECOMACCOUNT_H +#define OWQTADDQUTECOMACCOUNT_H + +#include "ILogin.h" + +class CUserProfileHandler; +class QtLoginDialog; +class QWidget; + +namespace Ui { class AddQuteComAccount; } + +/** + * Qt login window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtAddQuteComAccount : public ILogin { + Q_OBJECT +public: + + QtAddQuteComAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); + + ~QtAddQuteComAccount(); + + virtual void load(std::string sipAccountName); + + virtual void load(const SipAccount & sipAccount); + + virtual void initPage(); + +private Q_SLOTS: + + void createAccountButtonClicked(); + + void helpButtonClicked(); + + void forgotPasswordButtonClicked(); + + void loginClicked(); + + virtual void languageChanged(); + +private: + + virtual void setInfoMessage(); + + virtual void setErrorMessage(const QString & message); + + virtual void setLoginLabel(const QString & message); + + void keyPressEvent(QKeyEvent * event); + + Ui::AddQuteComAccount * _ui; +}; + +#endif //OWQTADDQUTECOMACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,344 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAddSIPAccount.h" + +#include "QtAddAccountUtils.h" +#include "QtLoginDialog.h" + +#include "ui_AddSIPAccount.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +QtAddSIPAccount::QtAddSIPAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) + :ILogin(qtLoginDialog, cUserProfileHandler) + , _reducedHeight(0) { + + _ui = new Ui::AddSIPAccount(); + _ui->setupUi(this); + + LANGUAGE_CHANGE(this); + + WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); + + // mandatory lines + SAFE_CONNECT(_ui->login, SIGNAL(textChanged(QString)), SLOT(aMandatoryLineHasChanged())); + SAFE_CONNECT(_ui->realm, SIGNAL(textChanged(QString)), SLOT(aMandatoryLineHasChanged())); + //// + + SAFE_CONNECT(_ui->advButton, SIGNAL(toggled(bool)), SLOT(showAdvancedSettings(bool))); + SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); + SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); + SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); + SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); + + showAdvancedSettings(false); + + aMandatoryLineHasChanged(); +} + +QtAddSIPAccount::~QtAddSIPAccount() { + OWSAFE_DELETE(_ui); +} + +void QtAddSIPAccount::loginClicked() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + std::string accountname(_ui->accountname->text().toLocal8Bit()); + if (profileNameExists(accountname)) { + //checks if profile name exists + setErrorMessage(tr("Your profile name already exists!")); + return; + } + + std::string login = (const char *) _ui->login->text().trimmed().toLocal8Bit(); + std::string password = (const char *) _ui->password->text().trimmed().toLocal8Bit(); + std::string realm = (const char *) _ui->realm->text().trimmed().toLocal8Bit(); + std::string displayname = (const char *)_ui->displayname->text().toLocal8Bit(); + std::string registerServer = (const char *) _ui->registerServer->text().trimmed().toLocal8Bit(); + int registerPort = config.getSipRegisterPort(); + std::string proxyServer = (const char *) _ui->proxyServer->text().trimmed().toLocal8Bit(); + int proxyPort = _ui->proxyPort->text().toInt(); + + //fill ampty lines + if (password.empty()) { + password = login; + } + if (registerServer.empty()) { + registerServer = realm; + } + if (proxyServer.empty()) { + proxyServer = registerServer; + } + if (proxyPort==0) { + proxyPort = 5060; + } + if (accountname.empty()) { + accountname = login + "@" + registerServer; + } + if (displayname.empty()) { + displayname = accountname; + } + //// + + //create sip account + SipAccount sipAccount(login, login, password, realm, + registerServer, registerPort, proxyServer, proxyPort, + true/*_ui->rememberPassword->isChecked()*/, + _ui->activateSIMPLE->isChecked()); + sipAccount.setDisplayName(displayname); + sipAccount.setVisibleName(accountname); + //// + + if (_modify) + { + //if modifying old profile is deleted + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(_accountName); + SipAccount * tmpSipAccount = userProfile->getSipAccount(); + tmpSipAccount->setUsername(login); + tmpSipAccount->setIdentity(login); + tmpSipAccount->setRealm(realm); + tmpSipAccount->setPassword(password); + tmpSipAccount->setDisplayName(displayname); + tmpSipAccount->setVisibleName(accountname); + tmpSipAccount->setRegisterServerHostname(registerServer); + tmpSipAccount->setSIPProxyServerHostname(proxyServer); + tmpSipAccount->setSIPProxyServerPort(proxyPort); + tmpSipAccount->enablePIM(_ui->activateSIMPLE->isChecked()); + tmpSipAccount->setRememberPassword(true); + + UserProfileFileStorage userProfileStorage(*userProfile); + userProfileStorage.save(tmpSipAccount->getFullIdentity()); + + _cUserProfileHandler.setCurrentUserProfile(tmpSipAccount->getFullIdentity(), SipAccount::empty); + + _loginDialog->accept(); + return; + } + // Looking for the selected profile, if modifiyng profile automatically added + else if (!_cUserProfileHandler.userProfileExists(sipAccount.getFullIdentity())) + { + // The selected profile does not exist. Creating a new one. + UserProfile userProfile; + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QtAddAccountUtils::addTestContacts(&userProfile,config.getSipAudioTestCall(),config.getSipVideoTestCall()); + + userProfile.setSipAccount(sipAccount, false /* needInitialization */); + UserProfileFileStorage userProfileStorage(userProfile); + userProfileStorage.save(sipAccount.getFullIdentity()); + } + _cUserProfileHandler.setCurrentUserProfile(sipAccount.getFullIdentity(), sipAccount); + + _loginDialog->accept(); +} + +void QtAddSIPAccount::helpButtonClicked() { + WsUrl::showWikiPage(); +} + +void QtAddSIPAccount::setInfoMessage() { + setLoginLabel(tr("Please fill in the information which will
allow your softphone to connect to your
SIP account")); +} + +void QtAddSIPAccount::setErrorMessage(const QString & message) { + setLoginLabel(QString("%1").arg(message)); +} + +void QtAddSIPAccount::setLoginLabel(const QString & message) { + QString loginLabel = QString("" + + tr("Configure your SIP profile") + "
%1").arg(message); + _ui->loginLabel->setText(loginLabel); +} + +void QtAddSIPAccount::languageChanged() { + _ui->retranslateUi(this); +} + +void QtAddSIPAccount::load(const SipAccount & sipAccount) { + if (sipAccount.getType() == SipAccount::SipAccountTypeBasic) { + //loads the sip acccount + _ui->login->setText(QString::fromLocal8Bit(sipAccount.getIdentity().c_str())); + _ui->password->setText(QString::fromLocal8Bit(sipAccount.getPassword().c_str())); + _ui->realm->setText(QString::fromLocal8Bit(sipAccount.getRealm().c_str())); + _ui->displayname->setText(QString::fromLocal8Bit(sipAccount.getDisplayName().c_str())); + _ui->registerServer->setText(QString::fromLocal8Bit(sipAccount.getRegisterServerHostname().c_str())); + _ui->proxyServer->setText(QString::fromLocal8Bit(sipAccount.getSIPProxyServerHostname().c_str())); + //_ui->registerPort->setText(QString::number(sipAccount.getRegisterServerPort())); + _ui->proxyPort->setText(QString::number(sipAccount.getSIPProxyServerPort())); + _ui->accountname->setText(QString::fromLocal8Bit(sipAccount.getVisibleName().c_str())); + _ui->activateSIMPLE->setChecked(sipAccount.isPIMEnabled()); + _accountName = sipAccount.getFullIdentity(); + _visibleName = sipAccount.getVisibleName(); + setInfoMessage(); + //sets variable _modify to true + setModify(); + } else { + LOG_DEBUG("SIP getType() = SipAccount::SipAccountTypeQuteCom"); + //_loginDialog->changePage(QtLoginDialog::AddQuteComAccount, sipAccount); + } +} + +void QtAddSIPAccount::load(std::string sipAccountName) { + //load userprofile + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); + if (userProfile && userProfile->hasSipAccount()) { + //tests account type + if (!userProfile->hasQuteComAccount()) { + SipAccount * sipAccount = userProfile->getSipAccount(); + //loads the sip acccount + _ui->login->setText(QString::fromLocal8Bit(sipAccount->getIdentity().c_str())); + _ui->password->setText(QString::fromLocal8Bit(sipAccount->getPassword().c_str())); + _ui->realm->setText(QString::fromLocal8Bit(sipAccount->getRealm().c_str())); + _ui->displayname->setText(QString::fromLocal8Bit(sipAccount->getDisplayName().c_str())); + _ui->registerServer->setText(QString::fromLocal8Bit(sipAccount->getRegisterServerHostname().c_str())); + _ui->proxyServer->setText(QString::fromLocal8Bit(sipAccount->getSIPProxyServerHostname().c_str())); + //_ui->registerPort->setText(QString::number(sipAccount->getRegisterServerPort())); + _ui->proxyPort->setText(QString::number(sipAccount->getSIPProxyServerPort())); + _ui->accountname->setText(QString::fromLocal8Bit(sipAccount->getVisibleName().c_str())); + _ui->activateSIMPLE->setChecked(sipAccount->isPIMEnabled()); + _accountName = sipAccount->getFullIdentity(); + _visibleName = sipAccount->getVisibleName(); + setInfoMessage(); + //sets variable _modify to true + setModify(); + } else { + //should be loaded as a qutecom account + _loginDialog->changePage(QtLoginDialog::AddQuteComAccount, sipAccountName); + } + } else { + _loginDialog->changePage(QtLoginDialog::AddAccount); + } +} + +void QtAddSIPAccount::initPage() { + _ui->accountname->setFocus(); + _ui->loginButton->setDefault(true); + setInfoMessage(); + _modify = false; + _accountName = ""; + _visibleName = ""; + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _ui->realm->setText(QString::fromLocal8Bit(config.getSipRealm().c_str())); + _ui->registerServer->setText(QString::fromLocal8Bit(config.getSipRegisterServer().c_str())); + _ui->proxyServer->setText(QString::fromLocal8Bit(config.getSipProxyServer().c_str())); + _ui->proxyPort->setText(QString::number(config.getSipProxyPort())); + _ui->activateSIMPLE->setChecked(config.getSipSimpleSupport()); +} + +void QtAddSIPAccount::aMandatoryLineHasChanged() { + + std::string login = (const char *) _ui->login->text().toLocal8Bit(); + std::string realm = (const char *) _ui->realm->text().toLocal8Bit(); + + if ( !login.empty() && + !realm.empty() + ) { + _ui->loginButton->setEnabled(true); + } else { + _ui->loginButton->setEnabled(false); + } +} + + +void QtAddSIPAccount::showAdvancedSettings(bool show) { + if (show && _reducedHeight == 0) { + // First time we show the advanced settins. Store dialog height, will + // be used if the user hide the advanced settings + _reducedHeight = _loginDialog->height(); + } + + _ui->frame->setVisible(show); + _ui->label_server->setVisible(show); + _ui->label_proxy->setVisible(show); + _ui->registerServer->setVisible(show); + _ui->proxyServer->setVisible(show); + _ui->label_proxyport->setVisible(show); + _ui->proxyPort->setVisible(show); + + if (!show && _reducedHeight != 0) { + // Make sure height is reduced to the size before expanding settings + _loginDialog->setMinimumHeight(_reducedHeight); + _loginDialog->resize(_loginDialog->width(), _reducedHeight); + } + + if (show) { + // If we try to show advanced settings a second time, the height will + // remain _reducedHeight, this code makes sure we get back to the old + // size + this->layout()->invalidate(); + _loginDialog->layout()->invalidate(); + int height = _loginDialog->layout()->minimumSize().height(); + _loginDialog->resize(_loginDialog->width(), height); + } +} + +void QtAddSIPAccount::setModify(){ + _modify=true; +} + +bool QtAddSIPAccount::profileNameExists(std::string visibleName) { + + std::vector profileNames = _cUserProfileHandler.getUserProfileNames(true); + std::vector visibleNames; + + for (std::vector::const_iterator it = profileNames.begin();it != profileNames.end();++it) { + + UserProfile userProfile; + SipAccount * sipaccount = NULL; + + if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, *it)) { + sipaccount = userProfile.getSipAccount(); + if (sipaccount) { + std::string temp = sipaccount->getVisibleName(); + + //if modifying old profile name is not added to the _visibleName vector + //if adding profile all current profile names added to the _visibleName vector + if (temp.compare(_visibleName) != 0 || !_modify) + visibleNames.push_back(temp); + } + } + } + //search if there is another account name as the one adding + for (std::vector::const_iterator it = visibleNames.begin();it != visibleNames.end();++it) { + if (visibleName.compare(*it) == 0) { + return true; + } + } + + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtAddSIPAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,87 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTADDSIPACCOUNT_H +#define OWQTADDSIPACCOUNT_H + +#include "ILogin.h" + +class CUserProfileHandler; +class QtLoginDialog; +class QWidget; + +namespace Ui { class AddSIPAccount; } + +/** + * Qt login window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtAddSIPAccount : public ILogin { + Q_OBJECT +public: + + QtAddSIPAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); + + ~QtAddSIPAccount(); + + virtual void load(const SipAccount & sipAccount); + + virtual void load(std::string sipAccountName); + + virtual void initPage(); + +private Q_SLOTS: + + void loginClicked(); + + void helpButtonClicked(); + + void aMandatoryLineHasChanged(); + + virtual void languageChanged(); + + void showAdvancedSettings(bool state); + +private: + + virtual void setInfoMessage(); + + virtual void setErrorMessage(const QString & message); + + virtual void setLoginLabel(const QString & message); + + virtual void setModify(); + + virtual bool profileNameExists(std::string profileName); + + Ui::AddSIPAccount * _ui; + + int _reducedHeight; + + bool _modify; + //name of account that will be modified + std::string _accountName; + //visible name of account that will be modified + std::string _visibleName; +}; + +#endif //OWQTADDSIPACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,277 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtLogAccount.h" +#include "QtLoginDialog.h" + +#include "ui_LogAccount.h" + +#include + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +#include + +QtLogAccount::QtLogAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) + :ILogin(qtLoginDialog, cUserProfileHandler){ + + _ui = new Ui::LogAccount(); + _ui->setupUi(this); + + LANGUAGE_CHANGE(this); + + WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); + + SAFE_CONNECT(_ui->createNewAccount, SIGNAL(clicked()), SLOT(createAccountButtonClicked())); + SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); + SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); + SAFE_CONNECT(_ui->modifyButton, SIGNAL(clicked()), SLOT(modifyClicked())); + SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); + SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString &)), SLOT(forgotPasswordButtonClicked())); + SAFE_CONNECT(_ui->deleteButton, SIGNAL(clicked()), SLOT(deleteClicked())); + +#ifndef CUSTOM_ACCOUNT + _ui->forgotPasswordLabel->hide(); +#endif +} + +QtLogAccount::~QtLogAccount() { + OWSAFE_DELETE(_ui); +} + +void QtLogAccount::setValidAccount(SipAccount sipAccount) { + ILogin::load(sipAccount); + setInfoMessage(); +} + +void QtLogAccount::createAccountButtonClicked() { + _loginDialog->changePage(QtLoginDialog::AddAccount); +} + +void QtLogAccount::helpButtonClicked() { + WsUrl::showWikiPage(); +} + +void QtLogAccount::forgotPasswordButtonClicked() { + WsUrl::showLostPasswordPage(); +} + +void QtLogAccount::setAccountName(const QString & name) { + _ui->accountComboBox->setEditText(name); +} + +void QtLogAccount::setPassword(const QString & password) { + _ui->passwordLineEdit->setText(password); +} + +void QtLogAccount::setRememberPassword(bool /*remember*/) { +} + +void QtLogAccount::initPage() { + _ui->accountComboBox->clear(); + _ui->passwordLineEdit->setText(""); + std::vector profileNames = _cUserProfileHandler.getUserProfileNames(true); + + if (profileNames.size() > 0) { + + std::string lastUsed = ConfigManager::getInstance().getCurrentConfig().getProfileLastUsedName(); + std::string lastUsedIndex = ""; + + // finds all userprofiles + for (std::vector::const_iterator it = profileNames.begin(); + it != profileNames.end(); + ++it) { + + UserProfile userProfile; + std::string tmpname; + SipAccount * sipaccount = NULL; + + //gets userprofile + if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, *it)) { + + //gets sipaccount + sipaccount = userProfile.getSipAccount(); + if (sipaccount) { + + //finds and displays visible name, saves real userprofile name + tmpname = sipaccount->getVisibleName(); + profileMap[tmpname] = (*it); + _ui->accountComboBox->addItem(QString::fromLocal8Bit(tmpname.c_str())); + + //finds last used index + if ((*it)==lastUsed) { + lastUsedIndex = tmpname; + } + } + } + } + //// + + //default value + _ui->accountComboBox->setCurrentIndex(_ui->accountComboBox->findText(QString::fromLocal8Bit(lastUsedIndex.c_str()))); + currentIndexChanged(QString::fromUtf8(lastUsedIndex.c_str())); + + SAFE_CONNECT(_ui->accountComboBox, SIGNAL(currentIndexChanged(const QString &)), + SLOT(currentIndexChanged(const QString &))); + } else { + _loginDialog->changePage(QtLoginDialog::AddAccount); + return; + } + + _ui->accountComboBox->setFocus(); + _ui->loginButton->setDefault(true); + setInfoMessage(); + _ui->passwordLineEdit->setEnabled(false); +} + +void QtLogAccount::currentIndexChanged(const QString & profileName) { + UserProfile userProfile; + if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, profileMap[std::string(profileName.toLocal8Bit())])) { + SipAccount * sipaccount = userProfile.getSipAccount(); + if (sipaccount) { + if (sipaccount->isPasswordRemembered()) { + setPassword(QString::fromUtf8(sipaccount->getUserPassword().c_str())); + setRememberPassword(true); + } else { + setPassword(QString::fromUtf8("")); + setRememberPassword(false); + } + } + } +} + +void QtLogAccount::loginClicked() { + + std::string login = profileMap[std::string( _ui->accountComboBox->currentText().toLocal8Bit()) ]; + + /*** et le password !! ***/ + if (!login.empty()) { + + // Looking for the selected profile + if (!_cUserProfileHandler.userProfileExists(login)) { + // The selected profile does not exist. normally should NOT happen !! + setErrorMessage(tr("Invalid account")); + } else { + _cUserProfileHandler.setCurrentUserProfile(login, SipAccount::empty); + } + + _loginDialog->accept(); + } +} + +void QtLogAccount::modifyClicked() { + + std::string login = profileMap[std::string( _ui->accountComboBox->currentText().toLocal8Bit()) ]; + + if (!login.empty()) { + + // Looking for the selected profile + if (!_cUserProfileHandler.userProfileExists(login)) { + // The selected profile does not exist. normally should NOT happen !! + _loginDialog->changePage(QtLoginDialog::AddAccount); + } else { + + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(login); + + if (userProfile) { + if (userProfile->hasQuteComAccount()) + { + //qutecom account + _loginDialog->changePage(QtLoginDialog::AddQuteComAccount, login); + } else if (userProfile->hasSipAccount()) { + //"generic" sip account + _loginDialog->changePage(QtLoginDialog::AddSIPAccount, login); + } + _loginDialog->currentPage()->setBackPage(QtLoginDialog::LogAccount); + } + } + } +} + +void QtLogAccount::deleteClicked() { + std::string login = profileMap[ std::string(_ui->accountComboBox->currentText().toLocal8Bit()) ]; + + if (!login.empty()){ + if (_cUserProfileHandler.userProfileExists(login)){ + //profile exists + int buttonClicked = QMessageBox::question(this, + tr("Warning"), + tr("Do you really want to delete this profile"), + tr("Yes"), tr("No")); + if (buttonClicked != 0) + return; + + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(login); + UserProfileHandler &userProfileHandler = _cUserProfileHandler.getUserProfileHandler(); + userProfileHandler.deleteUserProfile(*userProfile); + + initPage(); + } + } +} + +void QtLogAccount::setInfoMessage() { + setLoginLabel(tr("Please choose a previously used profile
or fill in the informations to connect to a
@company@ account")); +} + +void QtLogAccount::setErrorMessage(const QString & message) { + setLoginLabel(QString("%1").arg(message)); +} + +void QtLogAccount::setLoginLabel(const QString & message) { + QString loginLabel = QString("Login
%1").arg(message); + _ui->loginLabel->setText(loginLabel); +} + +void QtLogAccount::languageChanged() { + _ui->retranslateUi(this); +} + +void QtLogAccount::load(std::string sipAccountName) { + + //load userprofile + UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); + if (userProfile) { + // Add and select the given SipAccount + _ui->accountComboBox->addItem(QString::fromUtf8(sipAccountName.c_str())); + _ui->accountComboBox->setCurrentIndex(_ui->accountComboBox->findText(QString::fromUtf8(sipAccountName.c_str()))); + setInfoMessage(); + + SipAccount * sipAccount = userProfile->getSipAccount(); + setPassword(QString::fromUtf8(sipAccount->getUserPassword().c_str())); + } else { + _loginDialog->changePage(QtLoginDialog::AddAccount); + } + + OWSAFE_DELETE(userProfile); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLogAccount.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,102 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTLOGACCOUNT_H +#define OWQTLOGACCOUNT_H + +#include "ILogin.h" + +#include + +class CUserProfileHandler; +class QtLoginDialog; +class QWidget; + +namespace Ui { class LogAccount; } + +/** + * Qt login window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtLogAccount : public ILogin { + Q_OBJECT +public: + + QtLogAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); + + ~QtLogAccount(); + + /** + * Add the given SipAccount to the profile list and select it as default. + */ + void setValidAccount(SipAccount sipAccount); + + virtual void load(std::string sipAccountName); + + virtual void initPage(); + +private Q_SLOTS: + + void createAccountButtonClicked(); + + void helpButtonClicked(); + + void forgotPasswordButtonClicked(); + + void currentIndexChanged(const QString & profileName); + + void loginClicked(); + + void modifyClicked(); + + void deleteClicked(); + + virtual void languageChanged(); + +private: + + void setAccountName(const QString & name); + + void setPassword(const QString & password); + + void setRememberPassword(bool remember); + + virtual void setInfoMessage(); + + virtual void setErrorMessage(const QString & message); + + virtual void setLoginLabel(const QString & message); + + /** + * Initializes the widgets. + */ + void init(); + + /** + * map of profile + */ + std::map profileMap; + + Ui::LogAccount * _ui; +}; + +#endif //OWQTLOGACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,124 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtLoginDialog.h" + +#include "QtAddAccount.h" +#include "QtAddQuteComAccount.h" +#include "QtAddSIPAccount.h" +#include "QtLogAccount.h" + +#include +#include + +#include + +#include +#include +#include + +#include + +#include + + +#include + +#include + +QtLoginDialog::QtLoginDialog(QtQuteCom * qtQuteCom, CUserProfileHandler & cUserProfileHandler) + :QDialog(qtQuteCom->getWidget()), + _qtQuteCom(qtQuteCom) { + + _centralWidget = new QStackedWidget(this); + _loginPage.push_back(new QtAddAccount(this, _centralWidget, cUserProfileHandler)); + _loginPage.push_back(new QtAddQuteComAccount(this, _centralWidget, cUserProfileHandler)); + _loginPage.push_back(new QtAddSIPAccount(this, _centralWidget, cUserProfileHandler)); + _loginPage.push_back(new QtLogAccount(this, _centralWidget, cUserProfileHandler)); + SAFE_CONNECT(this, SIGNAL(rejected()), SLOT(loginRejected())); + + _centralWidget->addWidget(_loginPage[AddAccount]); + _centralWidget->addWidget(_loginPage[AddQuteComAccount]); + _centralWidget->addWidget(_loginPage[AddSIPAccount]); + _centralWidget->addWidget(_loginPage[LogAccount]); + + setWindowTitle(tr("@product@ - Login")); + + QVBoxLayout * layout = new QVBoxLayout(this); + layout->addWidget(_centralWidget); + + changePage(LogAccount); +} + +QtLoginDialog::~QtLoginDialog() { +} + +void QtLoginDialog::changePage(int newPage, std::string sipAccountName) { + if ( (newPage >= 0) && (newPage < _centralWidget->count())) + { + int page = newPage ; + + #ifndef CUSTOM_ACCOUNT + if( page == 0) + { + page = 2; + } + #endif + + _centralWidget->setCurrentIndex(page); + _loginPage[page]->initPage(); + if (!sipAccountName.empty()) { + _loginPage[page]->load(sipAccountName); + } + } +} + +ILogin* QtLoginDialog::currentPage() const { + return _loginPage[_centralWidget->currentIndex()]; +} + +void QtLoginDialog::loginRejected() { + _qtQuteCom->getQtToolBar().enableMenuBar(); +} + +void QtLoginDialog::setInvalidAccount(const SipAccount & sipAccount) { + if (sipAccount.getType() == SipAccount::SipAccountTypeQuteCom) { + //qutecom account + changePage(AddQuteComAccount); + _loginPage[AddQuteComAccount]->load(sipAccount); + } else { + //"generic" sip account + changePage(AddSIPAccount); + _loginPage[AddSIPAccount]->load(sipAccount); + } +} + +void QtLoginDialog::setValidAccount(SipAccount sipAccount) { + changePage(LogAccount); + _loginPage[LogAccount]->load(sipAccount); + _loginPage[LogAccount]->setInfoMessage(); +} + +void QtLoginDialog::setInfoMessage() { + _loginPage[_centralWidget->currentIndex()]->setInfoMessage(); +} + +void QtLoginDialog::setErrorMessage(const QString & message) { + _loginPage[_centralWidget->currentIndex()]->setErrorMessage(message); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/login/QtLoginDialog.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTLOGINDIALOG_H +#define OWQTLOGINDIALOG_H + +#include + +#include +#include + +#include + +class CUserProfileHandler; +class QStackedWidget; +class QtQuteCom; +class ILogin; + +/** + * Qt login window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + * @author Xavier Desjardins + */ +class QtLoginDialog : public QDialog { + Q_OBJECT +public: + + enum LoginDialogPage { + AddAccount, + AddQuteComAccount, + AddSIPAccount, + LogAccount + }; + + QtLoginDialog(QtQuteCom * qtQuteCom, CUserProfileHandler & cUserProfileHandler); + + ~QtLoginDialog(); + + void changePage(int newPage, std::string sipAccountName = ""); + + void setInfoMessage(); + + void setErrorMessage(const QString & message); + + QtQuteCom * getQtQuteCom() { + return _qtQuteCom; + } + + ILogin* currentPage() const; + +public Q_SLOTS: + /** + * login cancelled -- enable toolbar menu. + */ + void loginRejected(); + + /** + * Init login entry and display a message on the login to say that the + * login/password is invalid. + */ + void setInvalidAccount(const SipAccount & sipAccount); + + /** + * Add the given SipAccount to the profile list and select it as default. + */ + void setValidAccount(SipAccount sipAccount); + +private: + + QtQuteCom * _qtQuteCom; + + QStackedWidget * _centralWidget; + + std::vector _loginPage; +}; + +#endif //OWQTLOGINDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,146 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtMacApplication.h" + +#include + +#include +#include +#include + +#include + +/** + * QtMacApplicationObjC interface. + * + * This class will receive events from Cocoa and resend them to our C++ + * equivalent (QtMacApplication). + * + * @author Philippe Bernery + */ +@interface QtMacApplicationObjC : NSObject +{ + /** QtMacApplication instance. */ + QtMacApplication * _qtMacApplication; +} + +- (id) initWithQtMacApplicationInstance:(QtMacApplication *)qtMacApplication; +- (void) appReopen:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; +- (void) getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; + +@end + + +@implementation QtMacApplicationObjC + +- (id) initWithQtMacApplicationInstance:(QtMacApplication *)qtMacApplication +{ + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + + [super init]; + + // Member intialization + _qtMacApplication = qtMacApplication; + //// + + // Register event handlers + + // Event handler for qutecom:// handling + [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self + andSelector:@selector(getUrl:withReplyEvent:) + forEventClass:kInternetEventClass + andEventID:kAEGetURL]; + + // Event handle for reopen event. Emitted when the Dock icon is clicked + // Or when the application icon has been double-clicked. + [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self + andSelector:@selector(appReopen:withReplyEvent:) + forEventClass:kCoreEventClass + andEventID:kAEReopenApplication]; + + //// + + [pool release]; + + return self; +} + +- (void) dealloc +{ + NSAutoreleasePool *pool = [NSAutoreleasePool new]; + + // Unregister event handlers + [[NSAppleEventManager sharedAppleEventManager] removeEventHandlerForEventClass:kInternetEventClass + andEventID:kAEGetURL]; + + [[NSAppleEventManager sharedAppleEventManager] removeEventHandlerForEventClass:kCoreEventClass + andEventID:kAEReopenApplication]; + //// + + [pool release]; + + [super dealloc]; +} + +- (void) getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent +{ + NSString * url = [[event descriptorAtIndex:1] stringValue]; + std::string strUrl = [url cStringUsingEncoding:NSUTF8StringEncoding]; + _qtMacApplication->openURLRequestEvent(strUrl); +} + +- (void) appReopen:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent +{ + _qtMacApplication->applicationReopenEvent(); +} + +@end + + +struct QtMacApplicationPrivate { + QtMacApplicationObjC * _qtMacApplicationObjC; +}; + + +QtMacApplication::QtMacApplication(int & argc, char ** argv) + : QApplication(argc, argv) + , d(new QtMacApplicationPrivate) { + + d->_qtMacApplicationObjC = [[QtMacApplicationObjC alloc] initWithQtMacApplicationInstance:this]; +} + +QtMacApplication::~QtMacApplication() { + [d->_qtMacApplicationObjC release]; + delete d; +} + +void QtMacApplication::applicationReopenEvent() { + applicationMustShow(); +} + +void QtMacApplication::openURLRequestEvent(const std::string & url) { + // Put the received url in QuteCom instance in case of no object is currently + // registered to the Signal. + // FIXME: Is this still necessary? + std::string call = String(url).split("/")[1]; + QuteCom::getInstance().setStartupCall(call); + + openURLRequest(QString::fromUtf8(url.c_str())); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/macosx/QtMacApplication.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTMACAPPLICATION_H +#define OWQTMACAPPLICATION_H + +#include + +class QtMacApplicationPrivate; + +/** + * QApplication subclass for MacOS X. + * + * @author Philippe Bernery + */ +class QtMacApplication : public QApplication { + Q_OBJECT +public: + + QtMacApplication(int & argc, char ** argv); + + virtual ~QtMacApplication(); + + /** + * @name Event called by QtMacApplicationObjC. + * These must not be called from outside. + * @{ + */ + + /** A reopen event has been emitted. */ + void applicationReopenEvent(); + + /** A getURL event has been emitted. */ + void openURLRequestEvent(const std::string & url); + + /** + * @} + */ + +Q_SIGNALS: + + /** kHICommandShowAll received. */ + void applicationMustShow(); + + /** Emitted when user tried to access qutecom:// */ + void openURLRequest(QString url); + +private: + QtMacApplicationPrivate* const d; +}; + +#endif //OWQTMACAPPLICATION_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/NoQuteComAlert.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/NoQuteComAlert.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/NoQuteComAlert.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/NoQuteComAlert.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,220 @@ + + + + + NoQuteComAlert + + + + 0 + 0 + 303 + 101 + + + + + MS Shell Dlg 2 + 8 + 50 + false + false + false + false + + + + @product@ - SMS + + + + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 21 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 16 + 20 + + + + + + + + + MS Shell Dlg 2 + 8 + 50 + false + false + false + false + + + + I have a @company@ account + + + + + + + Qt::Horizontal + + + + 16 + 20 + + + + + + + + Create a @company@ account + + + + + + + Qt::Horizontal + + + + 16 + 20 + + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + + 20 + 21 + + + + + + + + + + + haveBtn + clicked() + NoQuteComAlert + accept() + + + 278 + 253 + + + 96 + 254 + + + + + createBtn + clicked() + NoQuteComAlert + reject() + + + 369 + 253 + + + 179 + 282 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/PhoneCallWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/PhoneCallWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/PhoneCallWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/PhoneCallWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,765 @@ + + PhoneCallWidget + + + + 0 + 0 + 284 + 418 + + + + + + + + + + + + 0 + 128 + 0 + + + + + + + 0 + 128 + 0 + + + + + + + 0 + 128 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 221 + 255 + 221 + + + + + + + 0 + 128 + 0 + + + + + + + + + 0 + 128 + 0 + + + + + + + 0 + 128 + 0 + + + + + + + 0 + 128 + 0 + + + + + + + 255 + 255 + 255 + + + + + + + 221 + 255 + 221 + + + + + + + 0 + 128 + 0 + + + + + + + + + 127 + 127 + 127 + + + + + + + 127 + 127 + 127 + + + + + + + 106 + 104 + 100 + + + + + + + 221 + 255 + 221 + + + + + + + 221 + 255 + 221 + + + + + + + 0 + 128 + 0 + + + + + + + + true + + + QFrame::Box + + + QFrame::Plain + + + + 6 + + + 0 + + + + + + 0 + 0 + + + + Communication is encrypted + + + + + + :/pics/phonecall/encryption.png + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop + + + + + + + + + + + + 0 + 128 + 0 + + + + + + + + + 0 + 128 + 0 + + + + + + + + + 0 + 128 + 0 + + + + + + + + Communication is encrypted + + + + + + + + + + 6 + + + 0 + + + + + + 0 + 0 + + + + Status + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + 00:00:00 + + + + + + + + + 0 + + + 0 + + + + + + 0 + 0 + + + + Nickname + + + Qt::PlainText + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + true + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + 0 + 0 + + + + QFrame::NoFrame + + + 1 + + + 0 + + + + + 0 + + + 0 + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + 0 + 0 + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + + 0 + + + 0 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 50 + 0 + + + + QFrame::NoFrame + + + + + + Qt::AlignHCenter|Qt::AlignTop + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + Qt::Vertical + + + QSizePolicy::Expanding + + + + 20 + 40 + + + + + + + + + + + + + 0 + 0 + + + + 1 + + + + + 0 + 0 + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + &Accept + + + + :/pics/actions/accept-phone.png:/pics/actions/accept-phone.png + + + true + + + + + + + &Reject + + + + :/pics/actions/hangup-phone.png:/pics/actions/hangup-phone.png + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + 0 + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + + :/pics/actions/hangup-phone.png:/pics/actions/hangup-phone.png + + + + + + + + + + + :/pics/actions/hold-phone.png:/pics/actions/hold-phone.png + + + + + + + + + + + :/pics/config/call-forward.png:/pics/config/call-forward.png + + + + + + + + + + + :/pics/actions/add-contact.png:/pics/actions/add-contact.png + + + + + + + + + + + :/pics/iconbar/conference.png:/pics/iconbar/conference.png + + + + + + + Dialpad + + + + + + + :/pics/dialpad/dialpad.png:/pics/dialpad/dialpad.png + + + true + + + + + + + Audio Smileys + + + + + + + :/pics/dialpad/audiosmileys.png:/pics/dialpad/audiosmileys.png + + + true + + + + + + + Qt::Horizontal + + + + 0 + 20 + + + + + + + + + + + + + WidgetRatioEnforcer + QFrame +
qtutil/WidgetRatioEnforcer.h
+ 1 +
+
+ + rejectButton + acceptButton + hangupButton + holdButton + forwardButton + addContactButton + createConf + dialpadButton + smileysButton + + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,89 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include "QtAudioSmileysWindow.h" + +#include +#include +#include +#include +#include + +#include "../QtDialpad.h" + +QtAudioSmileysWindow::QtAudioSmileysWindow(CDtmfThemeManager& cDtmfThemeManager, QtQuteCom* qtQuteCom) +: QFrame(0, Qt::Popup) +, _button(0) { + setFrameStyle(QFrame::StyledPanel | QFrame::Plain); + + _dialpad = new QtDialpad(cDtmfThemeManager, qtQuteCom); + + QVBoxLayout* layout = new QVBoxLayout(this); + layout->setMargin(2); + _dialpad->layout()->setMargin(0); + layout->addWidget(_dialpad); +} + + +void QtAudioSmileysWindow::setButton(QAbstractButton* button) { + _button = button; +} + +void QtAudioSmileysWindow::showEvent(QShowEvent*) { + if (!_button) { + return; + } + + QRect rect = QApplication::desktop()->screenGeometry(_button); + int windowWidth = sizeHint().width(); + int windowHeight = sizeHint().height(); + + QPoint point = _button->parentWidget()->mapToGlobal(_button->pos()); + + // Make sure the dialog fit in the screen horizontally + if (point.x() + windowWidth > rect.right()) { + point.setX(point.x() + _button->width() - windowWidth); + } + + // Make sure the dialog fit in the screen vertically + if (point.y() + _button->height() + windowHeight > rect.bottom()) { + point.setY(point.y() - windowHeight); + } else { + point.setY(point.y() + _button->height()); + } + move(point); +} + +void QtAudioSmileysWindow::hideEvent(QHideEvent*) { + // This is a bit hackish: the window hide itself when one click outside it + // (because it has the Qt::Popup flag). In this case we want to uncheck its + // associated button. But we don't want to do so if the user clicked on + // the button, otherwise events will get mixed and the window will + // reappear. + QPoint cursorPos = QCursor::pos(); + cursorPos = _button->mapFromGlobal(cursorPos); + if (_button->isChecked() && !_button->rect().contains(cursorPos)) { + _button->blockSignals(true); + _button->setChecked(false); + _button->blockSignals(false); + } +} + +QtDialpad* QtAudioSmileysWindow::dialpad() const { + return _dialpad; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtAudioSmileysWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTAUDIOSMILEYSWINDOW_H +#define QTAUDIOSMILEYSWINDOW_H + +#include + +class CDtmfThemeManager; +class QtQuteCom; +class QtDialpad; + +class QShowEvent; +class QHideEvent; +class QAbstractButton; + +class QtAudioSmileysWindow : public QFrame { + Q_OBJECT +public: + QtAudioSmileysWindow(CDtmfThemeManager&, QtQuteCom*); + void setButton(QAbstractButton*); + + QtDialpad* dialpad() const; + +protected: + virtual void showEvent(QShowEvent*); + virtual void hideEvent(QHideEvent*); + +private: + QtDialpad* _dialpad; + QAbstractButton* _button; +}; + +#endif /* AUDIOSMILEYSWINDOW_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,241 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtContactCallListWidget.h" + +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include + +#include +#include + +#include + +QtContactCallListWidget::QtContactCallListWidget(CQuteCom & cQuteCom, QWidget * parent) + : QWidget(parent), + _cQuteCom(cQuteCom) { + + // Setup our sunken frame + QFrame * frame = new QFrame(this); + frame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); + + QVBoxLayout* layout = new QVBoxLayout(this); +#if defined(OS_MACOSX) + layout->setMargin(10); +#else + layout->setMargin(0); +#endif + layout->addWidget(frame); + + // Create _content + + // We need to create a separate "content" widget, because if we call + // setBackgroundRole(QPalette::Base) on "frame" the "Base" color will be + // visible in the corners of the frame. + _content = new QWidget(frame); + _content->setBackgroundRole(QPalette::Base); + _content->setAutoFillBackground(true); + + // Add _content to frame + layout = new QVBoxLayout(frame); + layout->setMargin(0); + layout->addWidget(_content); + + // Create a layout for _content. This layout will hold all the QtPhoneCall + // widgets + layout = new QVBoxLayout(_content); + layout->setMargin(0); + //// + + //Leads to a crash in conference call when + //everybody hangs up + //setAttribute(Qt::WA_DeleteOnClose, true); + + _conferenceState = CS_CallingFirst; +} + +QtContactCallListWidget::~QtContactCallListWidget() { +} + +void QtContactCallListWidget::addPhoneCall(QtPhoneCall * qtPhoneCall) { + _phoneCallList.append(qtPhoneCall); + + qtPhoneCall->getWidget()->setParent(_content); + + // Add separator if necessary + if (_content->layout()->count() > 0) { + QFrame * separator = new QFrame(_content); + separator->setFrameStyle(QFrame::HLine | QFrame::Sunken); + separator->setFixedHeight(4); + _content->layout()->addWidget(separator); + } + + _content->layout()->addWidget(qtPhoneCall->getWidget()); + SAFE_CONNECT(qtPhoneCall, SIGNAL(destroyed(QObject*)), + SLOT(slotQtPhoneCallDestroyed(QObject*))); + + if (qtPhoneCall->getCPhoneCall().getPhoneCall().getConferenceCall()) { + SAFE_CONNECT(qtPhoneCall, SIGNAL(startedTalking(QtPhoneCall*)), + SLOT(slotStartedTalking(QtPhoneCall*)) ); + } +} + +void QtContactCallListWidget::slotStartedTalking(QtPhoneCall * qtPhoneCall) { + //QMutexLocker locker(&_mutex); + + //Hack + //Fix a crash in conference mode when QtPhoneCall comes NULL while + //this function is not ended + _qtPhoneCall = qtPhoneCall; + + switch (_conferenceState) { + case CS_CallingFirst: + QMessageBox::information( + this, + tr("@product@ - Proceed Conference"), + tr("You can now inform your first interlocutor he is going to be part of a conference call.

" + "When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.
"), + tr("Hold first interlocutor and call second one") + ); + + if (_qtPhoneCall) { + _qtPhoneCall->holdOrResume(); + _conferenceState = CS_FirstOnHold; + } + return; + + case CS_FirstOnHold: + QMessageBox::information( + this, + tr("@product@ - Proceed Conference"), + tr("You can now inform your second interlocutor he is going to be part of a conference call.

" + "When it's done, click the button below to start the conference."), + tr("Start Conference") + ); + + if (_qtPhoneCall) { + _qtPhoneCall->holdOrResume(); + _conferenceState = CS_Started; + } + return; + + case CS_Started: + // Nothing to do + break; + } +} + +void QtContactCallListWidget::hangup() { + QMutexLocker locker(&_mutex); + + QtPhoneCall * phone; + + QtPhoneCallList::iterator iter; + + for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { + phone = (*iter); + + phone->rejectCall(); + } + _phoneCallList.clear(); +} + +bool QtContactCallListWidget::hasPhoneCall(PhoneCall * phoneCall) { + QMutexLocker locker(&_mutex); + + QtPhoneCallList::iterator iter; + QtPhoneCall * tmp = NULL; + for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { + tmp = (*iter); + if (tmp->getCPhoneCall().getPhoneCall().getCallId() == phoneCall->getCallId()) { + return true; + } + } + return false; +} + +QtPhoneCall * QtContactCallListWidget::takeQtPhoneCall(PhoneCall * phoneCall) { + QMutexLocker locker(&_mutex); + + QtPhoneCallList::iterator iter; + for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { + QtPhoneCall * qtphoneCall = *iter; + if (qtphoneCall->getCPhoneCall().getPhoneCall().getPeerSipAddress().getUserName() == + phoneCall->getPeerSipAddress().getUserName()) { + _content->layout()->removeWidget(qtphoneCall->getWidget()); + _phoneCallList.erase(iter); + return qtphoneCall; + } + } + return NULL; +} + +QtPhoneCall * QtContactCallListWidget::getFirstQtPhoneCall() { + if (_phoneCallList.count() == 0) { + return NULL; + } + return _phoneCallList[0]; +} + +bool QtContactCallListWidget::hasActivePhoneCall() { + QMutexLocker locker(&_mutex); + + QtPhoneCallList::iterator iter; + for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { + if ((*iter)->getCPhoneCall().getState() == EnumPhoneCallState::PhoneCallStateTalking) { + return true; + } + } + return false; +} + +void QtContactCallListWidget::slotQtPhoneCallDestroyed(QObject * qtPhoneCall) { + QMutexLocker locker(&_mutex); + + QtPhoneCallList::iterator iter; + QtPhoneCall * tmp = NULL; + for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { + tmp = (*iter); + if (tmp == qtPhoneCall) { + _phoneCallList.erase(iter); + break; + } + } + if (_phoneCallList.size() == 0) { + aboutToClose(); + close(); + QTabWidget * tabWidget = qobject_cast(parentWidget()->parentWidget()); + if (!tabWidget) { + LOG_FATAL("parent QWidget is not a QTabWidget"); + } + int index = tabWidget->indexOf(this); + tabWidget->removeTab(index); + } + _qtPhoneCall = NULL; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtContactCallListWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,82 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTCONTACTCALLLISTWIDGET_H +#define QTCONTACTCALLLISTWIDGET_H + +#include +#include + +class PhoneCall; +class ConferenceCall; +class CQuteCom; +class QtPhoneCall; + +namespace Ui { class ContactCallListWidget; } + + +class QtContactCallListWidget : public QWidget { + Q_OBJECT +public: + + QtContactCallListWidget(CQuteCom & cQuteCom, QWidget * parent); + + ~QtContactCallListWidget(); + + void addPhoneCall(QtPhoneCall * qtPhoneCall); + + bool hasPhoneCall(PhoneCall * phoneCall); + + bool hasActivePhoneCall(); + + QtPhoneCall * takeQtPhoneCall(PhoneCall * phoneCall); + + QtPhoneCall * getFirstQtPhoneCall(); + +Q_SIGNALS: + void aboutToClose(); + +public Q_SLOTS: + + void hangup(); + + void slotStartedTalking(QtPhoneCall* phoneCall); + +private Q_SLOTS: + + void slotQtPhoneCallDestroyed(QObject * qtPhoneCall); + +private: + + QWidget * _content; + + CQuteCom & _cQuteCom; + + QMutex _mutex; + + enum ConferenceState { CS_CallingFirst, CS_FirstOnHold, CS_Started }; + ConferenceState _conferenceState; + + typedef QList < QtPhoneCall * > QtPhoneCallList; + QtPhoneCallList _phoneCallList; + + QtPhoneCall * _qtPhoneCall; +}; + +#endif //QTCONTACTCALLLISTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,888 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPhoneCall.h" + +#include "ui_PhoneCallWidget.h" + +#ifdef XV_HWACCEL + #include "QtVideoXV.h" +#endif + +#include "QtVideoQt.h" +#include "QtPhoneCallEventFilter.h" +#include "../toaster/QtCallToaster.h" +#include "../QtDialpad.h" + +#include "QtAudioSmileysWindow.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +// If a PSTN number is shorter than this length, we assume it's a special sip +// account, like 333 for QuteCom +static const int PSTN_NUMBER_MIN_LENGTH = 4; + +static const int LOCAL_FRAME_WIDTH = 64; +static const int LOCAL_FRAME_HEIGHT = 64; +static const int LOCAL_FRAME_MARGIN = 7; + +// See wifo/phapi/phmedia-video.c +static const int NOWEBCAM_FILL_VALUE = 128; + +static const int NOWEBCAM_SAMPLE_COUNT = 200; + +// Minimum width of buttons shown when we are in "talking" state. Defined to avoid square buttons +// under MacOS X +static const int TALKING_BUTTON_MIN_WIDTH = 50; + +/** + * Helper function to determine if image is a real webcam or not: + * If the remote user has no webcam, then wifo will send us a yuv image filled + * with NOWEBCAM_FILL_VALUE bytes. + */ +static bool isRealWebcamVideoFrame(piximage* image) { + if (image->palette != PIX_OSI_YUV420P) { + return true; + } + + int step = (image->width * image->height * 3 / 2) / NOWEBCAM_SAMPLE_COUNT; + + for (int sample=0; sample < NOWEBCAM_SAMPLE_COUNT; ++sample) { + if (image->data[sample * step] != NOWEBCAM_FILL_VALUE) { + return true; + } + } + + return false; +} + +static void setButtonAction(QPushButton* button, QAction* action) { + button->disconnect(); + SAFE_CONNECT_RECEIVER(button, SIGNAL(clicked()), action, SLOT(trigger())); + button->setIcon(action->icon()); + button->setEnabled(action->isEnabled()); + button->setToolTip(action->toolTip()); +} + +static void flashMainWindow(QWidget* window) { + if (window->isActiveWindow()) { + return; + } + + if (!window->isVisible()) { + // Make sure the window appears on the taskbar, + // otherwise it won't flash... + window->showMinimized(); + } + + WidgetUtils::flashWindow(window); +} + +QtPhoneCall::QtPhoneCall(CPhoneCall & cPhoneCall) + : QObject(NULL), + _cPhoneCall(cPhoneCall) { + + _qtQuteCom = (QtQuteCom *) _cPhoneCall.getCQuteCom().getPresentation(); + _videoWindow = NULL; + _closed = false; + _duration = 0; + + _callToaster = NULL; + _remoteVideoFrame = NULL; + _localVideoFrame = NULL; + _hold = false; + _videoMode = VM_None; + + _mutex = new QMutex(QMutex::Recursive); + + _phoneCallWidget = new QWidget(NULL); + + _ui = new Ui::PhoneCallWidget(); + _ui->setupUi(_phoneCallWidget); + _ui->encryptionFrame->hide(); + //_ui->videoContainer->hide(); + _ui->labelStack->setCurrentWidget(_ui->avatarPage); + _ui->buttonStack->setCurrentWidget(_ui->ringingPage); + + _phoneCallWidget->setAutoFillBackground(true); + + std::string tmpDisplayName = _cPhoneCall.getPhoneCall().getPeerSipAddress().getDisplayName(); + QString userName = QString::fromUtf8(tmpDisplayName.c_str()); + + if (userName.isEmpty()) { + userName = QString::fromUtf8(_cPhoneCall.getPhoneCall().getPeerSipAddress().getUserName().c_str()); + } + QPixmap avatarPixmap = loadContactAvatar(userName); + initAvatarLabel(avatarPixmap); + + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + // On MacOSX getVideoEnable causes quite a lot of work, like listing the + // available devices. Therefore we keep the result instead of asking it + // everytime it's needed. + _videoEnabledInConfig = config.getVideoEnable(); + + //init flip + PhoneLine & phoneLine = dynamic_cast < PhoneLine & > (_cPhoneCall.getPhoneCall().getPhoneLine()); + phoneLine.flipVideoImage(config.getVideoFlipEnable()); + //// + + userName = getDisplayName(userName); + +#ifndef OS_MACOSX + //With Qt4.2, the button background is set to _phoneCallWidget background + //color on Windows and Linux, setting autoFillBackground to true prevents + //this. + //We don't want to do this on OSX, because on this platform setting + //autoFillBackground to true paints horizontal stripes behind the buttons. + Q_FOREACH(QPushButton* button, _phoneCallWidget->findChildren()) { + button->setAutoFillBackground(true); + } + //// +#endif + + Q_FOREACH(QPushButton* button, _ui->talkingPage->findChildren()) { + button->setMinimumWidth(TALKING_BUTTON_MIN_WIDTH); + } + + // Set bold ourself: if we do it from Designer it alters the font name (at + // least with Qt 4.1) + QFont font(_ui->nickNameLabel->font()); + font.setBold(true); + _ui->nickNameLabel->setFont(font); + + _ui->nickNameLabel->setText(userName); + updateNickNameToolTip(); + + _ui->statusLabel->setToolTip(tr("Status")); + + // Accept call + SAFE_CONNECT(_ui->acceptButton, SIGNAL(clicked()), SLOT(acceptCall())); + + // Reject call + SAFE_CONNECT(_ui->rejectButton, SIGNAL(clicked()), SLOT(rejectCall())); + + // Tweak ui when we are the caller + if (!isIncoming()) { + _ui->acceptButton->hide(); + _ui->rejectButton->setText(tr("Ca&ncel")); + } + + // Hang up + _actionHangupCall = new QAction(QIcon(":/pics/actions/hangup-phone.png"), tr("Hang-up"), _phoneCallWidget); + SAFE_CONNECT(_actionHangupCall, SIGNAL(triggered()), SLOT(rejectCall())); + setButtonAction(_ui->hangupButton, _actionHangupCall); + + //Hold + _actionHold = new QAction(_phoneCallWidget); + SAFE_CONNECT(_actionHold, SIGNAL(triggered()), SLOT(holdOrResume())); + +#ifndef DISABLE_MANUAL_CALL_FORWARD + //Call forward + SAFE_CONNECT(_ui->forwardButton, SIGNAL(clicked()), SLOT(callTransfer()) ); + _ui->forwardButton->setToolTip(tr("Transfert call")); +#else + _ui->forwardButton->hide(); +#endif + + //Add contact + _actionAddContact = new QAction(QIcon(":/pics/actions/add-contact.png"), tr("Add contact"), _phoneCallWidget); + SAFE_CONNECT(_actionAddContact, SIGNAL(triggered()), SLOT(addContact())); + setButtonAction(_ui->addContactButton, _actionAddContact); + //// + + SAFE_CONNECT(_ui->dialpadButton, SIGNAL(toggled(bool)), SLOT(toggleDialpad(bool)) ); + SAFE_CONNECT(_ui->smileysButton, SIGNAL(toggled(bool)), SLOT(toggleSmileys(bool)) ); + SAFE_CONNECT(_ui->createConf, SIGNAL(clicked()), SLOT(createConf()) ); + + + //Computes the call duration + _callTimer = new QTimer(_phoneCallWidget); + SAFE_CONNECT(_callTimer, SIGNAL(timeout()), SLOT(updateCallDuration())); + + QtPhoneCallEventFilter * filter = new QtPhoneCallEventFilter(_phoneCallWidget); + _phoneCallWidget->installEventFilter(filter); + + flashMainWindow(_qtQuteCom->getWidget()); + showToaster(userName, avatarPixmap); + + if (!_cPhoneCall.getPhoneCall().getConferenceCall()) { + _qtQuteCom->addPhoneCall(this); + } else { + hideConfButton(); + _qtQuteCom->addToConference(this); + } + + updateStatusLabel(); + updateHoldAction(); + + //update toolbar (menus) + if (_qtQuteCom) { + _qtQuteCom->getQtToolBar().updateMenuActions(); + } + //// + + _ui->acceptButton->setFocus(); + + _ui->smileysButton->setVisible(false); +} + +QtPhoneCall::~QtPhoneCall() { + if (_remoteVideoFrame) { + pix_free(_remoteVideoFrame); + } + if (_localVideoFrame) { + pix_free(_localVideoFrame); + } + + OWSAFE_DELETE(_ui); + OWSAFE_DELETE(_mutex); +} + +void QtPhoneCall::initAvatarLabel(const QPixmap& pixmap) { + if (pixmap.hasAlpha()) { + // Paint avatar over a background if it's transparent (doing so for + // full opaque images looks ugly) + QPixmap bg(":/pics/phonecall/avatar_background.png"); + QPainter painter(&bg); + painter.drawPixmap( + (bg.width() - pixmap.width()) / 2, + (bg.height() - pixmap.height()) / 2, + pixmap); + painter.end(); + _ui->avatarLabel->setPixmap(bg); + } else { + _ui->avatarLabel->setPixmap(pixmap); + } + + _ui->labelStack->setCurrentWidget(_ui->avatarPage); +} + +QPixmap QtPhoneCall::loadContactAvatar(const QString& userName) { + + QPixmap pixmap; + + QtContactList * qtContactList = _qtQuteCom->getQtContactList(); + if (qtContactList) { + CContactList & cContactList = qtContactList->getCContactList(); + + IMContact imContact(EnumIMProtocol::IMProtocolQuteCom, std::string(userName.toUtf8())); + std::string contactId = cContactList.findContactThatOwns(imContact); + ContactProfile contactProfile = cContactList.getContactProfile(contactId); + + std::string data = contactProfile.getIcon().getData(); + if (!data.empty()) { + pixmap.loadFromData((uchar *) data.c_str(), data.size()); + } + } + + if (pixmap.isNull()) { + // User is not in contact list, or has no avatar defined, use default + // avatar instead + std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); + pixmap.loadFromData((uchar*) data.c_str(), data.size()); + } + + return pixmap; +} + + +void QtPhoneCall::updateHoldAction() { + if (_hold) { + _actionHold->setToolTip(tr("Resume")); + _actionHold->setIcon(QIcon(":/pics/actions/resume-phone.png")); + } else { + _actionHold->setToolTip(tr("Hold")); + _actionHold->setIcon(QIcon(":/pics/actions/hold-phone.png")); + } + setButtonAction(_ui->holdButton, _actionHold); +} + + +void QtPhoneCall::updateNickNameToolTip() { + QString toolTip = QString::fromUtf8(_cPhoneCall.getPeerSipAddress().c_str()); + if (!_codecs.isEmpty()) { + toolTip += QString(" (%1)").arg(_codecs); + } + _ui->nickNameLabel->setToolTip(toolTip); +} + + +QString QtPhoneCall::getDisplayName(QString str) +{ + QString tmpUserName = str; + + CQuteCom & cQuteCom = _cPhoneCall.getCQuteCom(); + CUserProfile* cUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if(cUserProfile) + { + std::string uuid = cUserProfile->getCContactList().findContactThatOwns(std::string(str.toUtf8())); + if(!uuid.empty()) + { + ContactProfile contactProfile = cUserProfile->getCContactList().getContactProfile(uuid); + if(!contactProfile.getShortDisplayName().empty()) + tmpUserName = QString::fromUtf8(contactProfile.getShortDisplayName().c_str()); + } + } + return tmpUserName; +} + +void QtPhoneCall::stateChangedEvent(EnumPhoneCallState::PhoneCallState state) { + std::string codecs; + if (_cPhoneCall.getAudioCodecUsed() != CodecList::AudioCodecError) { + codecs += CodecList::toString(_cPhoneCall.getAudioCodecUsed()); + } + if (_cPhoneCall.getVideoCodecUsed() != CodecList::VideoCodecError) { + codecs += "/" + CodecList::toString(_cPhoneCall.getVideoCodecUsed()); + } + _codecs = QString::fromUtf8(codecs.c_str()); + updateNickNameToolTip(); + + updateStatusLabel(); + + //update toolbar (menus) + if (_qtQuteCom) { + _qtQuteCom->getQtToolBar().updateMenuActions(); + } + + switch (state) { + case EnumPhoneCallState::PhoneCallStateTalking: + _ui->buttonStack->setCurrentWidget(_ui->talkingPage); + _duration = 0; + _callTimer->start(1000); + _actionHangupCall->setEnabled(true); + + _ui->encryptionFrame->setVisible(isCallEncrypted()); + + startedTalking(this); + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + case EnumPhoneCallState::PhoneCallStateRinging: + case EnumPhoneCallState::PhoneCallStateRingingStart: + case EnumPhoneCallState::PhoneCallStateRingingStop: + case EnumPhoneCallState::PhoneCallStateIncoming: + _actionHangupCall->setEnabled(true); + break; + + case EnumPhoneCallState::PhoneCallStateHold: + _hold = true; + updateHoldAction(); + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + _hold = false; + updateHoldAction(); + break; + + case EnumPhoneCallState::PhoneCallStateUnknown: + case EnumPhoneCallState::PhoneCallStateError: + case EnumPhoneCallState::PhoneCallStateMissed: + case EnumPhoneCallState::PhoneCallStateRedirected: + case EnumPhoneCallState::PhoneCallStateBusy: + case EnumPhoneCallState::PhoneCallStateRejected: + case EnumPhoneCallState::PhoneCallStateUserNotFound: + case EnumPhoneCallState::PhoneCallStateUserNotAvailable: + break; + + case EnumPhoneCallState::PhoneCallStateClosed: + LOG_FATAL("should never reach this case since PPhoneCall::close() is done for this purpose"); + break; + + default: + LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); + } +} + +void QtPhoneCall::initVideo(piximage* remoteVideoFrame, piximage* localVideoFrame) { + _remoteVideoFrame = remoteVideoFrame; + _localVideoFrame = localVideoFrame; + + if (!isRealWebcamVideoFrame(remoteVideoFrame)) { + if (_videoEnabledInConfig) { + _videoMode = VM_LocalOnly; + } else { + _videoMode = VM_None; + } + return; + } + + // We only get there if we receive a real video from the remote user + + if (_videoEnabledInConfig) { + _videoMode = VM_Both; + } else { + _videoMode = VM_RemoteOnly; + } + // Hide avatar label to save space for the video + //_ui->avatarLabel->hide(); + +#ifdef XV_HWACCEL + if (config.getXVideoEnable()) { + _videoWindow = new QtVideoXV(_phoneCallWidget, remoteVideoFrame->width, remoteVideoFrame->height, + localVideoFrame->width, localVideoFrame->height); + if (!_videoWindow->isInitialized()) { + OWSAFE_DELETE(_videoWindow); + } + } +#endif + + // We can fallback from a failure in QtVideoXV + if (!_videoWindow) { + _videoWindow = new QtVideoQt(_ui->videoContainer); + SAFE_CONNECT(_videoWindow, SIGNAL(toggleFlipVideoImageSignal()), SLOT(toggleFlipVideoImage())); + } + + // Init videoContainer + double ratio = remoteVideoFrame->width / double(remoteVideoFrame->height); + _ui->videoContainer->setRatio(ratio); + _ui->videoContainer->setChild(_videoWindow->getWidget()); + QTimer::singleShot(0, _videoWindow->getWidget(), SLOT(show())); + //_ui->videoContainer->show(); + _ui->labelStack->setCurrentWidget(_ui->videoPage); +} + +void QtPhoneCall::videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame) { + + QMutexLocker locker(_mutex); + + //FIXME hack to prevent a crash + if (_closed) { + return; + } + + if (_videoMode == VM_None) { + initVideo(remoteVideoFrame, localVideoFrame); + } + + if (_videoMode == VM_RemoteOnly || _videoMode == VM_Both) { + _videoWindow->showImage(remoteVideoFrame, localVideoFrame); + } + + if (_videoMode == VM_LocalOnly) { + QImage image; + QSize size(_localVideoFrame->width, _localVideoFrame->height); + size.scale(LOCAL_FRAME_WIDTH, LOCAL_FRAME_HEIGHT, Qt::KeepAspectRatio); + if (size.width() & 1) { + size.setWidth(size.width() + 1); + } + if (size.height() & 1) { + size.setHeight(size.height() + 1); + } + QtVideoQt::convertPixImageToQImage(_localVideoFrame, size, &image); + QPixmap avatarPix = *_ui->avatarLabel->pixmap(); + QPainter painter(&avatarPix); + painter.drawImage( + avatarPix.width() - size.width() - LOCAL_FRAME_MARGIN, + avatarPix.height() - size.height() - LOCAL_FRAME_MARGIN, + image); + painter.end(); + _ui->avatarLabel->setPixmap(avatarPix); + } +} + +void QtPhoneCall::acceptCall() { + _ui->statusLabel->setText(tr("Initialization...")); + _cPhoneCall.accept(); + if (_callToaster) { + _callToaster->close(); + } +} + +void QtPhoneCall::rejectCall() { + LOG_DEBUG("phone call hangup"); + switch (_cPhoneCall.getState()) { + case EnumPhoneCallState::PhoneCallStateClosed: + case EnumPhoneCallState::PhoneCallStateError: + case EnumPhoneCallState::PhoneCallStateResumed: + case EnumPhoneCallState::PhoneCallStateTalking: + case EnumPhoneCallState::PhoneCallStateDialing: + case EnumPhoneCallState::PhoneCallStateRinging: + case EnumPhoneCallState::PhoneCallStateRingingStart: + case EnumPhoneCallState::PhoneCallStateRingingStop: + case EnumPhoneCallState::PhoneCallStateIncoming: + case EnumPhoneCallState::PhoneCallStateHold: + case EnumPhoneCallState::PhoneCallStateRedirected: + case EnumPhoneCallState::PhoneCallStateBusy: + case EnumPhoneCallState::PhoneCallStateRejected: + case EnumPhoneCallState::PhoneCallStateUserNotFound: + case EnumPhoneCallState::PhoneCallStateUserNotAvailable: + _cPhoneCall.hangUp(); + break; + default: + LOG_DEBUG("call rejected"); + } +} + +//--start my dirty hack +void QtPhoneCall::callTransfer() { + + std::string forwardNumber = _qtQuteCom->getQtCallBar().getPhoneComboBoxCurrentText(); + if (forwardNumber.length()>0){ + _cPhoneCall.blindTransfer(forwardNumber); + _qtQuteCom->getQtCallBar().clearPhoneComboBoxEditText(); + } + else { + QString titel = tr("QuteCom - Information"); + QString message = tr("You must enter a phone number before forwarding"); + QMessageBox::information(_qtQuteCom->getWidget(), titel, message ); + } +} +//-- end my dirty hack + +void QtPhoneCall::holdOrResume() { + if (_hold) { + _cPhoneCall.resume(); + } else { + _cPhoneCall.hold(); + } + updateHoldAction(); +} + +void QtPhoneCall::updateCallDuration() { + _duration++; + updateStatusLabel(); +} + +void QtPhoneCall::updateStatusLabel() { + QString text; + switch (_cPhoneCall.getState()) { + case EnumPhoneCallState::PhoneCallStateError: + text = tr("Error"); + break; + + case EnumPhoneCallState::PhoneCallStateResumed: + case EnumPhoneCallState::PhoneCallStateTalking: + if (_cPhoneCall.getPhoneCall().getConferenceCall()) { + text = tr("Talking - Conference"); + } else { + text = tr("Talking"); + } + break; + + case EnumPhoneCallState::PhoneCallStateDialing: + text = tr("Dialing"); + break; + + case EnumPhoneCallState::PhoneCallStateBusy: + text = tr("User busy"); + break; + + case EnumPhoneCallState::PhoneCallStateRejected: + text = tr("Call Rejected"); + break; + + case EnumPhoneCallState::PhoneCallStateUserNotFound: + text = tr("User/number not found"); + break; + + case EnumPhoneCallState::PhoneCallStateUserNotAvailable: + text = tr("User not available"); + break; + + case EnumPhoneCallState::PhoneCallStateRinging: + text = tr("Ringing"); + break; + + case EnumPhoneCallState::PhoneCallStateRingingStart: + text = tr("Ringing"); + break; + + case EnumPhoneCallState::PhoneCallStateIncoming: + text = tr("Incoming Call"); + break; + + case EnumPhoneCallState::PhoneCallStateHold: + text = tr("Hold"); + break; + + case EnumPhoneCallState::PhoneCallStateRedirected: + text = tr("Redirected"); + break; + + default: + break; + } + _ui->statusLabel->setText(text); + + QTime time; + time = time.addSecs(_duration); + _ui->durationLabel->setText(time.toString(Qt::TextDate)); +} + +bool QtPhoneCall::isIncoming() const { + return (_cPhoneCall.getState() == EnumPhoneCallState::PhoneCallStateIncoming); +} + +void QtPhoneCall::showToaster(const QString & userName, const QPixmap& pixmap) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + if (!isIncoming()) { + return; + } + + //Shows toaster for incoming chats? + if (!config.getNotificationShowToasterOnIncomingCall()) { + return; + } + + OWSAFE_DELETE(_callToaster); + _callToaster = new QtCallToaster(); + _callToaster->setMessage(userName); + _callToaster->setPixmap(pixmap); + + SAFE_CONNECT(_callToaster, SIGNAL(pickUpButtonClicked()), SLOT(acceptCall())); + SAFE_CONNECT(_callToaster, SIGNAL(hangUpButtonClicked()), SLOT(rejectCall())); + _callToaster->show(); +} + +void QtPhoneCall::close() { + //FIXME hack to prevent a crash + _closed = true; + + if (_callToaster) { + _callToaster->close(); + } + + _callTimer->disconnect(); + _callTimer->stop(); + OWSAFE_DELETE(_callTimer); + + _actionHangupCall->setEnabled(false); + _ui->statusLabel->setText(tr("Closed")); + if (_videoWindow) { + if (_videoWindow->isFullScreen()) { + _videoWindow->unFullScreen(); + } + } + + //update toolbar (menus) + if (_qtQuteCom) { + _qtQuteCom->getQtToolBar().updateMenuActions(); + } + //// + + //TODO: disconnect from flipWebcamButtonClicked + OWSAFE_DELETE(_videoWindow); + OWSAFE_DELETE(_phoneCallWidget); + deleteLater(); +} + +void QtPhoneCall::toggleFlipVideoImage() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + PhoneLine & phoneLine = dynamic_cast < PhoneLine & > (_cPhoneCall.getPhoneCall().getPhoneLine()); + bool flip = !config.getVideoFlipEnable(); + phoneLine.flipVideoImage(flip); + config.set(Config::VIDEO_ENABLE_FLIP_KEY, flip); +} + +/** + * Helper function trying to determine if a username is a PSTN number. + */ +static bool isPSTNUserName(const QString& userName) { + for (int pos=0; pos < userName.size(); ++pos) { + if (!userName[0].isDigit()) { + return false; + } + } + + return userName.size() >= PSTN_NUMBER_MIN_LENGTH; +} + +void QtPhoneCall::addContact() { + CQuteCom & cQuteCom = _cPhoneCall.getCQuteCom(); + CUserProfile* cUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (!cUserProfile) { + LOG_WARN("No user profile defined. This should not happen"); + return; + } + + ContactProfile contactProfile; + QtProfileDetails qtProfileDetails(*cUserProfile, contactProfile, _phoneCallWidget->window(), tr("Add a Contact")); + + // Fill some QtProfileDetails fields + PhoneCall& call = _cPhoneCall.getPhoneCall(); + SipAddress sipAddress = call.getPeerSipAddress(); + + QString rawSipAddress = QString::fromUtf8(sipAddress.getRawSipAddress().c_str()); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qutecomRealm = QString::fromUtf8( config.getQuteComRealm().c_str() ); + if (rawSipAddress.contains(qutecomRealm)) { + // QuteCom server + QString userName; + userName = QString::fromUtf8(sipAddress.getDisplayName().c_str()); + if (userName.isEmpty()) { + userName = QString::fromUtf8(sipAddress.getUserName().c_str()); + } + if (isPSTNUserName(userName)) { + // User name is the phone number + qtProfileDetails.setHomePhone(userName); + } else { + // User name is the name of the QuteCom account + qtProfileDetails.setQuteComName(userName); + } + } else { + // External SIP server + QString address = QString::fromUtf8(sipAddress.getSipAddress().c_str()); + if (address.startsWith("sip:")) { + address = address.mid(4); + } + qtProfileDetails.setSipAddress(address); + } + //// + + if (qtProfileDetails.show()) { + // WARNING: if the user hang up while the dialog is shown, 'this' won't + // be valid anymore. Therefore we must not use any field of 'this' + // here. + cUserProfile->getCContactList().addContact(contactProfile); + } +} + +bool QtPhoneCall::isCallEncrypted() { + return _cPhoneCall.isCallEncrypted(); +} + + +/** + * Hide the other audio smileys window if it's open and uncheck its button + */ +static void hideOtherPopupWindow(QPushButton* button, QtAudioSmileysWindow* window) { + button->blockSignals(true); + button->setChecked(false); + button->blockSignals(false); + if (window) { + window->hide(); + } +} + +/** + * Show an audio smileys window + */ +static void togglePopupWindow(QtAudioSmileysWindow* window, bool on) { + if (on) { + window->show(); + } else { + if (window) { + window->hide(); + } + } +} + +void QtPhoneCall::toggleDialpad(bool on) { + if (_ui->smileysButton->isChecked()) { + hideOtherPopupWindow(_ui->smileysButton, _smileysWindow.get()); + } + if (on) { + if (!_dialpadWindow.get()) { + CDtmfThemeManager& manager = _qtQuteCom->getCQuteCom().getCDtmfThemeManager(); + _dialpadWindow.reset( new QtAudioSmileysWindow(manager, _qtQuteCom) ); + _dialpadWindow->dialpad()->setThemeMode(QtDialpad::ThemeModeDefaultOnly); + _dialpadWindow->setButton(_ui->dialpadButton); + } + } + + togglePopupWindow(_dialpadWindow.get(), on); +} + +void QtPhoneCall::toggleSmileys(bool on) { + if (_ui->dialpadButton->isChecked()) { + hideOtherPopupWindow(_ui->dialpadButton, _dialpadWindow.get()); + } + if (on) { + if (!_smileysWindow.get()) { + CDtmfThemeManager& manager = _qtQuteCom->getCQuteCom().getCDtmfThemeManager(); + _smileysWindow.reset( new QtAudioSmileysWindow(manager, _qtQuteCom) ); + _smileysWindow->dialpad()->setThemeMode(QtDialpad::ThemeModeAudioSmileysOnly); + _smileysWindow->setButton(_ui->smileysButton); + } + } + + togglePopupWindow(_smileysWindow.get(), on); +} + +void QtPhoneCall::createConf() +{ + QString address = QString::fromUtf8(_cPhoneCall.getPeerSipAddress().c_str()); + + if(address.contains("@")) + address = address.section("@",0,0); + + if (address.startsWith("sip:")) { + address = address.mid(4); + } + + // + + QtConferenceCallWidget conferenceDialog(_qtQuteCom->getWidget(), _qtQuteCom->getCQuteCom(), &_cPhoneCall.getPhoneCall().getPhoneLine(),false); + conferenceDialog.setFirstPeer(std::string(address.toUtf8())); + if(conferenceDialog.exec()) + { + if(address != conferenceDialog.getSecondPeer()) + { + _ui->createConf->hide(); + _qtQuteCom->addToConference(conferenceDialog.getSecondPeer(),&_cPhoneCall.getPhoneCall()); + } + } +} + +void QtPhoneCall::hideConfButton() +{ + _ui->createConf->hide(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,47 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPhoneCallEventFilter.h" + +#include +#include + +QtPhoneCallEventFilter::QtPhoneCallEventFilter(QObject * parent) : QObject(parent) { +} + +bool QtPhoneCallEventFilter::eventFilter(QObject * obj, QEvent * event) { + switch (event->type()) { + case QEvent::MouseButtonPress: + // paintEvent(dynamic_cast(event)); + + mouseEvent(dynamic_cast < QMouseEvent * > (event)); + + return true; + break; + default: + return QObject::eventFilter(obj, event); + } +} + +void QtPhoneCallEventFilter::mouseEvent(QMouseEvent * e) { + if (e->button() == Qt::RightButton) { + QPoint p = QPoint(e->globalPos()); + openPopup(p.x(), p.y()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,45 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTPHONECALLEVENTFILTER_H +#define QTPHONECALLEVENTFILTER_H + +#include + +class QMouseEvent; +class QEvent; + +class QtPhoneCallEventFilter : public QObject { + Q_OBJECT +public: + + QtPhoneCallEventFilter(QObject * parent = 0); + +Q_SIGNALS: + + void openPopup(int x, int y); + +protected: + + bool eventFilter(QObject * obj, QEvent * event); + + void mouseEvent(QMouseEvent * e); +}; + +#endif //QTPHONECALLEVENTFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtPhoneCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,180 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTPHONECALL_H +#define OWQTPHONECALL_H + +#include + +#include + +#include + +#include + +class PhoneCall; +class CPhoneCall; +class QtVideo; +class QtQuteCom; +class QtCallToaster; +class QtAudioSmileysWindow; + +class QMenu; +class QAction; +class QTimer; +class QWidget; +class QMutex; +class QPixmap; +namespace Ui { class PhoneCallWidget; } + +/** + * Qt Presentation component for PhoneCall. + * + * @author Tanguy Krotoff + * @author Jerome Wagner + * @author Mathieu Stute + * @author Philippe Bernery + */ +class QtPhoneCall : public QObject, public PPhoneCall { + Q_OBJECT +public: + enum VideoMode { VM_None, VM_LocalOnly, VM_RemoteOnly, VM_Both }; + + QtPhoneCall(CPhoneCall & cPhoneCall); + + virtual ~QtPhoneCall(); + + void updatePresentation() { } + + QWidget * getWidget() const { + return _phoneCallWidget; + } + + CPhoneCall & getCPhoneCall() const { + return _cPhoneCall; + } + + bool isIncoming() const; + + void stateChangedEvent(EnumPhoneCallState::PhoneCallState state); + + void videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame); + + void close(); + + void hideConfButton(); + /** + * @see PhoneCall::isCallEncrypted + */ + bool isCallEncrypted(); + +Q_SIGNALS: + void startedTalking(QtPhoneCall*); + +public Q_SLOTS: + + void holdOrResume(); + + void acceptCall(); + + void rejectCall(); + + void callTransfer(); + + void toggleFlipVideoImage(); + +private Q_SLOTS: + + void updateCallDuration(); + void updateStatusLabel(); + + void addContact(); + + void toggleSmileys(bool); + + void toggleDialpad(bool); + + void createConf(); + +private: + void initVideo(piximage* remoteVideoFrame, piximage* localVideoFrame); + + void showToaster(const QString & userName, const QPixmap& avatarPixmap); + + /*static*/ QString getDisplayName(QString str); + + QMenu * createMenu() const; + + QMenu * createInviteMenu() const; + + void updateHoldAction(); + + void updateNickNameToolTip(); + + QPixmap loadContactAvatar(const QString& userName); + + void initAvatarLabel(const QPixmap& pixmap); + + Ui::PhoneCallWidget * _ui; + + QWidget * _phoneCallWidget; + + CPhoneCall & _cPhoneCall; + + QtQuteCom * _qtQuteCom; + + QtVideo * _videoWindow; + + QAction * _actionHangupCall; + + QAction * _actionHold; + + QAction * _actionAddContact; + + /** Computes the call duration. */ + QTimer * _callTimer; + + int _duration; + + bool _hold; + + VideoMode _videoMode; + + QString _codecs; + + //buffers to free in desctructor + piximage * _remoteVideoFrame; + piximage * _localVideoFrame; + + //FIXME hack in order to prevent a crash + bool _closed; + + bool _videoEnabledInConfig; + + /** protect videoFrameReceivedEvent */ + QMutex * _mutex; + + QtCallToaster * _callToaster; + + std::auto_ptr _dialpadWindow; + + std::auto_ptr _smileysWindow; +}; + +#endif //OWQTPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,44 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtVideo.h" + +#include "ui_VideoWindow.h" + +#include + +QtVideo::QtVideo(QWidget * parent) { + _videoWindow = new QWidget(parent); + + _ui = new Ui::VideoWindow(); + _ui->setupUi(_videoWindow); +}; + +QtVideo::~QtVideo() { + delete _ui; +}; + +void QtVideo::toggleFullScreen() { + if (isFullScreen()) { + unFullScreen(); + } else { + fullScreen(); + } +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideo.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,71 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTVIDEO_H +#define OWQTVIDEO_H + +#include + +#include + +#include + +class QSize; +class QWidget; +namespace Ui { class VideoWindow; } + +/** + * Plugin interface for different video backends (Qt, XV, DirectX, OpenGL...) + * + * @author Mathieu Stute + * @author Tanguy Krotoff + */ +class QtVideo : public QObject, Interface { +public: + + QtVideo(QWidget * parent); + + virtual ~QtVideo(); + + virtual void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) = 0; + + QWidget * getWidget() const { + return _videoWindow; + } + + virtual QSize getFrameSize() const = 0; + + virtual bool isInitialized() const = 0; + + virtual bool isFullScreen() const = 0; + + virtual void unFullScreen() = 0; + + virtual void fullScreen() = 0; + + void toggleFullScreen(); + +protected: + + Ui::VideoWindow * _ui; + + QWidget * _videoWindow; +}; + +#endif //OWQTVIDEO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,360 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtVideoQt.h" + +#include "ui_VideoWindow.h" + +#include +#include + +#include + +#include + +#include +#include + +#include + +#include + +#if defined OS_WINDOWS && defined CC_MSVC + #include +#endif + +static const int MAX_WIDTH = 640; +static const int MAX_HEIGHT = 480; +static double IGNORE_RATIO_DELTA = 0.2; + + +static void setFullScreenDesktopResolution(int width, int height) { +#if defined OS_WINDOWS && defined CC_MSVC + //TODO put inside LibUtil + + int nModeExist; + int nModeSwitch; + DEVMODE devMode; + memset(&devMode, 0, sizeof(DEVMODE)); + + //Tries to switch to desktop resolution 640x480 + //Uses less processor time if the desktop resolution is lower + devMode.dmSize = sizeof(DEVMODE); + EnumDisplaySettings(NULL, 0, &devMode); + for (int i = 1; ;i++) { + nModeExist = EnumDisplaySettings(NULL, i, &devMode); + if (nModeExist == 0) { + //End of modes, bail out. + break; + } + if ((devMode.dmBitsPerPel == 32) && (devMode.dmPelsWidth == width) && (devMode.dmPelsHeight == height)) { + nModeSwitch = ChangeDisplaySettings(&devMode, CDS_FULLSCREEN); + break; + } + } +#endif +} + + +static void restoreDesktopResolution() { +#if defined OS_WINDOWS && defined CC_MSVC + //Restores previous resolution + ChangeDisplaySettings(NULL, 0); +#endif +} + + +static QSize desktopResolution() { + return QApplication::desktop()->screenGeometry().size(); +} + + +void QtVideoQt::convertPixImageToQImage(piximage* pixImage, const QSize& size, QImage* image) { + Q_ASSERT(image); + // No need to realloc the image buffer if it's already of the right size + if (image->size() != size || image->format() != QImage::Format_RGB32) { + *image = QImage(size, QImage::Format_RGB32); + } + + // This is a bit ugly. We do not create the piximage with pix_alloc but + // initialize the piximage fields ourself. This make it possible to point + // the data field to the QImage buffer, saving an alloc and a memcpy. + piximage resizedPixImage; + resizedPixImage.palette = PIX_OSI_RGB32; + resizedPixImage.width = image->width(); + resizedPixImage.height = image->height(); + resizedPixImage.data = image->bits(); + + pix_convert(PIX_NO_FLAG, &resizedPixImage, pixImage); +} + +QtVideoQt::QtVideoQt(QWidget * parent) + : QtVideo(parent) + , _fullScreen(false) + , _detached(false) + { + _videoWindow->setMaximumSize(MAX_WIDTH, MAX_HEIGHT); + + _ui->frame->installEventFilter(this); + + // Set a black background + QPalette palette = _ui->frame->palette(); + palette.setColor(_ui->frame->backgroundRole(), Qt::black); + + // Set QPalette::Window too, because it will be used when the video window + // will be detached, see documentation of QWidget::setAutoFillBackground() + palette.setColor(QPalette::Window, Qt::black); + + _ui->frame->setAutoFillBackground(true); + _ui->frame->setPalette(palette); + //// + + PaintEventFilter * paintFilter = new PaintEventFilter(this, SLOT(paintEvent())); + _ui->frame->installEventFilter(paintFilter); + + connect(_ui->flipButton, SIGNAL(clicked()), SLOT(flipWebcamButtonClicked())); + connect(_ui->fullScreenButton, SIGNAL(clicked()), SLOT(fullScreenButtonClicked())); + connect(_ui->attachDetachButton, SIGNAL(clicked()), SLOT(toggleAttachDetach())); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + _showLocalVideo = config.getVideoEnable(); +} + +QtVideoQt::~QtVideoQt() { + if (_detached) { + // If _ui->frame is detached, it won't be automatically deleted by Qt + OWSAFE_DELETE(_ui->frame); + } +} + +QSize QtVideoQt::getFrameSize() const { + return _ui->frame->frameRect().size(); +} + +QSize QtVideoQt::compensateForFullScreenRatio(QSize imageSize) { + if (_normalDesktopResolution == _fullScreenDesktopResolution) { + // Don't do anything if resolution is the same, since we already have + // a big black border + return imageSize; + } + + double imageRatio = imageSize.width() / double(imageSize.height()); + double normalRatio = _normalDesktopResolution.width() / double(_normalDesktopResolution.height()); + double fullScreenRatio = _fullScreenDesktopResolution.width() / double(_fullScreenDesktopResolution.height()); + + if (qAbs(imageRatio - normalRatio) < IGNORE_RATIO_DELTA) { + // If the image and normal ratios are close enough, just stretch + // the image, to avoid thin black stripes + return _fullScreenDesktopResolution; + } else { + // Keep image ratio, but compensate the difference between normal and + // fullscreen ratios. + imageSize.setHeight(int(imageSize.height() * normalRatio / fullScreenRatio)); + imageSize.scale(_fullScreenDesktopResolution, Qt::KeepAspectRatio); + return imageSize; + } +} + +void QtVideoQt::showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) { + QSize size(remoteVideoFrame->width, remoteVideoFrame->height); + + QSize maxSize = _ui->frame->size(); + if (maxSize.width() > MAX_WIDTH && maxSize.height() > MAX_HEIGHT) { + maxSize = QSize(MAX_WIDTH, MAX_HEIGHT); + } + size.scale(maxSize, Qt::KeepAspectRatio); + + if (_fullScreen) { + size = compensateForFullScreenRatio(size); + } + + // Make sure dimensions are even, otherwise we get green lines + size = QSize(size.width() & ~1, size.height() & ~1); + + convertPixImageToQImage(remoteVideoFrame, size, &_image); + + //If we want to embed the local webcam picture, we do it here + if (_showLocalVideo) { + const unsigned offset_x = 10; + const unsigned offset_y = 10; + const unsigned ratio = 5; + const unsigned border_size = 1; + const QBrush border_color = Qt::black; + + //Force the ratio of the remote frame on the webcam frame (ignoring the webcam's aspect ratio) + unsigned width = (size.width() / ratio) & ~1; + unsigned height = (size.height() / ratio) & ~1; + unsigned posx = size.width() - width - offset_x; + unsigned posy = size.height() - height - offset_y; + + QImage localImage; + QSize localSize(width, height); + convertPixImageToQImage(localVideoFrame, localSize, &localImage); + + QPainter painter; + painter.begin(&_image); + //Draw a 1-pixel border around the local embedded frame + painter.fillRect(posx - border_size, posy - border_size, width + 2 * border_size, + height + 2 * border_size, border_color); + //Embed the image + painter.drawImage(posx, posy, localImage); + painter.end(); + } + + _ui->frame->update(); +} + +void QtVideoQt::paintEvent() { + if (!_image.isNull()) { + QPainter painter(_ui->frame); + + if (_fullScreen) { + painter.fillRect(_ui->frame->rect(), Qt::black); + } + + int xpos = (_ui->frame->width() - _image.width()) / 2; + int ypos = (_ui->frame->height() - _image.height()) / 2; + + painter.drawImage(xpos, ypos, _image); + + if (!_fullScreen && !_detached) { + // Depending on the frame size, the video may leave one row or + // column of pixel empty. This looks bad under the Osd buttons. + // To avoid this bad appearance, we draw a thin black border + // around the video. + painter.setPen(Qt::black); + painter.drawRect(0, 0, _ui->frame->width() - 1, _ui->frame->height() - 1); + } + } +} + +void QtVideoQt::fullScreenButtonClicked() { + _ui->frame->setFocus(); + + if (!_fullScreen) { + this->fullScreen(); + } else { + this->unFullScreen(); + } +} + +void QtVideoQt::flipWebcamButtonClicked() { + toggleFlipVideoImageSignal(); +} + +void QtVideoQt::fullScreen() { + _ui->fullScreenButton->setIcon(QIcon(":/pics/video_unfullscreen.png")); + + QLayout * layout = _videoWindow->layout(); + layout->removeWidget(_ui->frame); + + _ui->frame->setParent(NULL); + + _normalDesktopResolution = desktopResolution(); + setFullScreenDesktopResolution(MAX_WIDTH, MAX_HEIGHT); + _fullScreenDesktopResolution = desktopResolution(); + + _fullScreen = true; + _ui->attachDetachButton->hide(); + _ui->frame->showFullScreen(); +} + +void QtVideoQt::unFullScreen() { + _ui->fullScreenButton->setIcon(QIcon(":/pics/video_fullscreen.png")); + + // Call showNormal instead of show because otherwise, next time you detach + // the frame, it won't have any window decoration (at least on Mac OSX). + // + // We also need to do this before reparenting the frame otherwise it won't + // work. + _ui->frame->showNormal(); + _fullScreen = false; + _ui->attachDetachButton->show(); + + restoreDesktopResolution(); + + if (!_detached) { + _ui->frame->setParent(_videoWindow); + QLayout * layout = _videoWindow->layout(); + layout->addWidget(_ui->frame); + } +} + +void QtVideoQt::toggleAttachDetach() { + QString iconName; + if (_detached) { + // Attach + _ui->frame->setParent(_videoWindow); + _videoWindow->layout()->addWidget(_ui->frame); + iconName = ":/pics/video_detach.png"; + } else { + // Detach + _videoWindow->layout()->removeWidget(_ui->frame); + _ui->frame->setParent(0); + + QSize size = _image.size(); + size.scale(MAX_WIDTH, MAX_HEIGHT, Qt::KeepAspectRatio); + _ui->frame->resize(size); + + QRect desktopRect = QApplication::desktop()->availableGeometry(_videoWindow->window()); + int posX = desktopRect.x() + (desktopRect.width() - size.width()) / 2; + int posY = desktopRect.y() + (desktopRect.height() - size.height()) / 2; + _ui->frame->move(posX, posY); + + _ui->frame->show(); + iconName = ":/pics/video_attach.png"; + _ui->frame->window()->setWindowTitle(tr("@product@")); + } + _detached = ! _detached; + _ui->attachDetachButton->setIcon(QIcon(iconName)); +} + + +bool QtVideoQt::eventFilter(QObject * object, QEvent * event) { + if (event->type() == QEvent::KeyPress) { + QKeyEvent * keyEvent = static_cast(event); + + if (keyEvent->key() == Qt::Key_Escape) { + unFullScreen(); + return true; + } else if ((keyEvent->key() == Qt::Key_F) && (keyEvent->modifiers() == Qt::ControlModifier)) { + toggleFullScreen(); + return true; + } + + } else if (event->type() == QEvent::MouseButtonDblClick) { + toggleFullScreen(); + return true; + } else if (event->type() == QEvent::Close) { + if (_detached) { + // If the user closes the detached video window, we want the video + // to get attached back + toggleAttachDetach(); + event->ignore(); + return true; + } else if (_fullScreen) { + // Same for fullscreen, if the user presses Alt+F4 + unFullScreen(); + event->ignore(); + return true; + } + } + + return false; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoQt.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTVIDEOQT_H +#define OWQTVIDEOQT_H + +#include "QtVideo.h" + +#include + +class QtVideoQtEventManager; + +class QSize; +class QImage; + +class QtVideoQt : public QtVideo { + Q_OBJECT +public: + + QtVideoQt(QWidget * parent); + + ~QtVideoQt(); + + void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame); + + QSize getFrameSize() const; + + bool isInitialized() const { + return true; + } + + bool isFullScreen() const { + return _fullScreen; + } + + void fullScreen(); + + void unFullScreen(); + + static void convertPixImageToQImage(piximage* pixImage, const QSize& size, QImage* image); + +Q_SIGNALS: + + void toggleFlipVideoImageSignal(); + +protected: + virtual bool eventFilter(QObject*, QEvent*); + +private Q_SLOTS: + void toggleAttachDetach(); + + void paintEvent(); + + void fullScreenButtonClicked(); + + void flipWebcamButtonClicked(); + +private: + /** Current frame to show inside the video window. */ + QImage _image; + + bool _fullScreen; + + bool _detached; + + bool _showLocalVideo; + + /** Store desktop resolution before switching to fullscreen */ + QSize _normalDesktopResolution; + QSize _fullScreenDesktopResolution; + + /** + * Recompute size to compensate for the ratio differences between normal + * and fullscreen resolutions + */ + QSize compensateForFullScreenRatio(QSize); +}; + + +#endif //OWQTVIDEOQT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,128 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtVideoXV.h" + +#include "ui_VideoWindow.h" + +#include + +#include + +#include + +QtVideoXV::QtVideoXV(QWidget * parent, + int remoteVideoFrameWidth, int remoteVideoFrameHeight, + int localVideoFrameWidth, int localVideoFrameHeight) + : QtVideo(parent) { + + //flipButton + connect(_ui->flipButton, SIGNAL(clicked()), SLOT(flipWebcamButtonClicked())); + + //fullScreenButton + connect(_ui->fullScreenButton, SIGNAL(clicked()), SLOT(fullScreenButtonClicked())); + + _remoteWindow = new XVWindow(); + _remoteDisplay=XOpenDisplay(NULL); + if (_remoteWindow->init(_remoteDisplay, DefaultRootWindow(_remoteDisplay), + 0, 0, remoteVideoFrameWidth * 2, remoteVideoFrameHeight * 2, remoteVideoFrameWidth, remoteVideoFrameHeight)) { + _localWindow = new XVWindow(); + LOG_DEBUG("remote window initialization: success"); + + _localDisplay=XOpenDisplay(NULL); + if (_localWindow->init(_localDisplay, _remoteWindow->getWindow(), 0, 0, localVideoFrameWidth, localVideoFrameHeight, localVideoFrameWidth, localVideoFrameHeight)) { + + _remoteWindow->registerSlave(_localWindow); + _localWindow->registerMaster(_remoteWindow); + LOG_DEBUG("local window initialization: success"); + + } else { + delete _localWindow; + XCloseDisplay(_localDisplay); + _localWindow = NULL; + + //TODO in this case to have the local video image + //we must compute the final image + + LOG_DEBUG("local window initialization: failed"); + } + + } else { + delete _remoteWindow; + XCloseDisplay(_remoteDisplay); + _remoteWindow = NULL; + _localWindow = NULL; + LOG_DEBUG("remote window initialization: failed"); + } +} + +QtVideoXV::~QtVideoXV() { + if (_remoteWindow) { + _remoteWindow->registerSlave(NULL); + if (_localWindow) { + _localWindow->registerMaster(NULL); + delete _localWindow; + XCloseDisplay(_localDisplay); + } + delete _remoteWindow; + XCloseDisplay(_remoteDisplay); + } +} + +bool QtVideoXV::isFullScreen() const { + return _remoteWindow->isFullScreen(); +} + +QSize QtVideoXV::getFrameSize() const { + return _ui->frame->frameRect().size(); +} + +void QtVideoXV::showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) { + if (_remoteWindow) { + _remoteWindow->putFrame(remoteVideoFrame->data, remoteVideoFrame->width, remoteVideoFrame->height); + if (_localWindow) { + _localWindow->putFrame(localVideoFrame->data, localVideoFrame->width, localVideoFrame->height); + } + } +} + +void QtVideoXV::flipWebcamButtonClicked() { + static bool flip = true; + + IWebcamDriver * driver = WebcamDriver::getInstance(); + driver->flipHorizontally(flip); + + flip = !flip; +} + +void QtVideoXV::fullScreenButtonClicked() { + _remoteWindow->toggleFullscreen(); +} + +void QtVideoXV::unFullScreen() { + if (isFullScreen()) { + _remoteWindow->toggleFullscreen(); + } +} + +void QtVideoXV::fullScreen() { + if (!isFullScreen()) { + _remoteWindow->toggleFullscreen(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/QtVideoXV.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTVIDEOXV_H +#define OWQTVIDEOXV_H + +#include "QtVideo.h" +#include "XVWindow.h" + +class QFrame; +class XVWindow; + +class QtVideoXV : public QtVideo { + Q_OBJECT +public: + + QtVideoXV(QWidget * parent, int remoteVideoFrameWidth, int remoteVideoFrameHeight, int localVideoFrameWidth, int localVideoFrameHeight); + + ~QtVideoXV(); + + void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame); + + QSize getFrameSize() const; + + bool isInitialized() const { + return (_remoteWindow != NULL); + } + + bool isFullScreen() const; + + void unFullScreen(); + + void fullScreen(); + +private Q_SLOTS: + + void flipWebcamButtonClicked(); + + void fullScreenButtonClicked(); + +private: + + XVWindow * _localWindow; + + Display* _localDisplay; + + XVWindow * _remoteWindow; + + Display* _remoteDisplay; +}; + +#endif //OWQTVIDEOXV_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/VideoWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/VideoWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/VideoWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/VideoWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,119 @@ + + VideoWindow + + + + 0 + 0 + 401 + 343 + + + + @product@ - Video + + + + 0 + + + 0 + + + + + + 0 + + + 2 + + + + + Qt::Horizontal + + + + 281 + 34 + + + + + + + + Qt::Vertical + + + + 34 + 221 + + + + + + + + :/pics/video_fullscreen.png + + + + 26 + 26 + + + + + + + + ... + + + :/pics/video_detach.png + + + + 26 + 26 + + + + + + + + :/pics/video_flip.png + + + + 26 + 26 + + + + + + + + + + + + OsdButton + QToolButton +
qtutil/OsdButton.h
+
+
+ + flipButton + fullScreenButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,586 @@ +/* + * XVWindow.cpp - XVWindow + * High-level class offering X-Video hardware acceleration + * + * Matthias Schneider + * 22-June-2006: minor bugfix on aspect ratio calculating, varios cosmetic changes + * 07-May-2006: initial version + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, v2, as + * published by the Free Software Foundation + * + * 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. + * + * Copyright (C) 2006 Matthias Schneider + */ + +#include "XVWindow.h" + +#include + +#define GUID_I420_PLANAR 0x30323449 + +#define wm_LAYER 1 +#define wm_FULLSCREEN 2 +#define wm_STAYS_ON_TOP 4 +#define wm_ABOVE 8 +#define wm_BELOW 16 +#define wm_NETWM (wm_FULLSCREEN | wm_STAYS_ON_TOP | wm_ABOVE | wm_BELOW) + +#define WIN_LAYER_ONBOTTOM 2 +#define WIN_LAYER_NORMAL 4 +#define WIN_LAYER_ONTOP 6 +#define WIN_LAYER_ABOVE_DOCK 10 + +#define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ +#define _NET_WM_STATE_ADD 1 /* add/set property */ +#define _NET_WM_STATE_TOGGLE 2 /* toggle property */ + +#define MWM_HINTS_FUNCTIONS (1L << 0) +#define MWM_HINTS_DECORATIONS (1L << 1) +#define MWM_FUNC_RESIZE (1L << 1) +#define MWM_FUNC_MOVE (1L << 2) +#define MWM_FUNC_MINIMIZE (1L << 3) +#define MWM_FUNC_MAXIMIZE (1L << 4) +#define MWM_FUNC_CLOSE (1L << 5) +#define MWM_DECOR_ALL (1L << 0) +#define MWM_DECOR_MENU (1L << 4) + +#define DEFAULT_SLAVE_RATIO 5 +#define DEFAULT_X 1 +#define DEFAULT_Y 1 + +typedef struct { + int flags; + long functions; + long decorations; + long input_mode; + long state; +} MotifWmHints; + +extern XvImage * XvShmCreateImage(Display *, XvPortID, int, char *, int, int, XShmSegmentInfo *); + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +XVWindow::XVWindow() { + // initialize class variables + _master = NULL; + _slave = NULL; + _XVPort = 0; + _state.fullscreen = false; + _state.ontop = false; + _state.decoration = true; + _display = NULL; + _XVWindow = 0; + _XShmInfo.shmaddr = NULL; + _gc = NULL; + _isInitialized = false; + _XVImage = NULL; +} + +int XVWindow::init(Display* dp, Window rootWindow, int x, int y, int windowWidth, int windowHeight, int imageWidth, int imageHeight) { + + // local variables needed for creation of window and initialization of XV extension + unsigned int i; + unsigned int ver, rel, req, ev, err, adapt; + XSetWindowAttributes xswattributes; + XWindowAttributes xwattributes; + XVisualInfo xvinfo; + XvAdaptorInfo *xvainfo; + unsigned int candidateXVPort=0; + unsigned int busyPorts=0; + + _display=dp; + _rootWindow=rootWindow; + _state.origLayer=0; + + // initialize atoms + WM_DELETE_WINDOW = XInternAtom(_display, "WM_DELETE_WINDOW", False); + XA_WIN_PROTOCOLS = XInternAtom(_display, "_WIN_PROTOCOLS", False); + XA_NET_SUPPORTED = XInternAtom(_display, "_NET_SUPPORTED", False); + XA_NET_WM_STATE = XInternAtom(_display, "_NET_WM_STATE", False); + XA_NET_WM_STATE_FULLSCREEN = XInternAtom(_display, "_NET_WM_STATE_FULLSCREEN", False); + XA_NET_WM_STATE_ABOVE = XInternAtom(_display, "_NET_WM_STATE_ABOVE", False); + XA_NET_WM_STATE_STAYS_ON_TOP = XInternAtom(_display, "_NET_WM_STATE_STAYS_ON_TOP", False); + XA_NET_WM_STATE_BELOW = XInternAtom(_display, "_NET_WM_STATE_BELOW", False); + + XGetWindowAttributes(_display, _rootWindow, &xwattributes); + XMatchVisualInfo(_display, DefaultScreen(_display), xwattributes.depth, TrueColor, &xvinfo); + + // define window properties and create the window + xswattributes.colormap = XCreateColormap(_display, _rootWindow, xvinfo.visual, AllocNone); + xswattributes.event_mask = StructureNotifyMask | ExposureMask; + xswattributes.background_pixel = 0; + xswattributes.border_pixel = 0; + _XVWindow = XCreateWindow(_display, _rootWindow, x, y, windowWidth, windowHeight, 0, xvinfo.depth, + InputOutput, xvinfo.visual, CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &xswattributes); + + // define inputs events + XSelectInput(_display, _XVWindow, StructureNotifyMask | KeyPressMask | ButtonPressMask); + + setSizeHints(DEFAULT_X,DEFAULT_Y, imageWidth, imageHeight, windowWidth, windowHeight); + + // map the window + XMapWindow(_display, _XVWindow); + + XSetWMProtocols(_display, _XVWindow, &WM_DELETE_WINDOW,1); + + // check if SHM XV window is possible + if (Success != XvQueryExtension(_display, &ver, &rel, &req, &ev, &err)) { + LOG_DEBUG("[x11] XQueryExtension failed"); + return 0; + } + if (!XShmQueryExtension(_display)) { + LOG_DEBUG("[x11] XQueryShmExtension failed"); + return 0; + } + if (Success != XvQueryAdaptors(_display, _rootWindow, &adapt, &xvainfo)) { + LOG_DEBUG("[x11] XQueryAdaptor failed"); XFree(xvainfo); + return 0; + } + + // look for a usable XV port + for (i = 0; i < adapt && _XVPort == 0; i++) { + if ((xvainfo[i].type & XvInputMask) && (xvainfo[i].type & XvImageMask)) { + for (candidateXVPort = xvainfo[i].base_id; candidateXVPort < xvainfo[i].base_id + xvainfo[i].num_ports; ++candidateXVPort) + if (!XvGrabPort(_display, candidateXVPort, CurrentTime)) { + _XVPort = candidateXVPort; + break; + } else { + LOG_DEBUG("[x11] Could not grab port: " + String::fromNumber(candidateXVPort)); + ++busyPorts; + } + } + } + XvFreeAdaptorInfo(xvainfo); + + if (!_XVPort) { + if (busyPorts) { + LOG_WARN("[x11] Could not find free Xvideo port - maybe another process is already using it."); + } else { + LOG_WARN("[x11] It seems there is no Xvideo support for your video card available."); + } + return 0; + } else { + LOG_WARN("[x11] Use XVideo port: " + String::fromNumber(_XVPort)); + } + + _gc = XCreateGC(_display, _XVWindow, 0, 0); + + // create the shared memory portion + _XVImage = XvShmCreateImage(_display, _XVPort, GUID_I420_PLANAR, 0, imageWidth, imageHeight, &_XShmInfo); + + _XShmInfo.shmid = shmget(IPC_PRIVATE, _XVImage->data_size, IPC_CREAT | 0777); + _XShmInfo.shmaddr = (char *) shmat(_XShmInfo.shmid, 0, 0); + _XVImage->data = _XShmInfo.shmaddr; + _XShmInfo.readOnly = False; + if (!XShmAttach(_display, &_XShmInfo)) { + LOG_WARN("[x11] XShmAttach failed"); + return 0; + } else { + _isInitialized = true; + } + + // detect the window manager type + _wmType=getWMType(); + + return 1; +} + +XVWindow::~XVWindow() { + if (_isInitialized && _XShmInfo.shmaddr) { + XShmDetach(_display, &_XShmInfo); + shmdt(_XShmInfo.shmaddr); + } + if (_XVImage) { + XFree(_XVImage); + } + if (_gc) { + XFree(_gc); + } + if (_XVWindow) { + XUnmapWindow(_display, _XVWindow); + XDestroyWindow(_display, _XVWindow); + } +} + +void XVWindow::putFrame(uint8_t* frame, uint16_t width, uint16_t height) { + XEvent event; + + if ((width!= _XVImage->width) || (height!=_XVImage->height)) { + printf ("[x11] dynamic switching of resolution not supported\n"); + return; + } + + // event handling + while (XPending(_display)) { + XNextEvent(_display, &event); + if (event.type == ClientMessage) { +// if "closeWindow" is clicked do nothing right now (window is closed from the Qt Gui +// if (event.xclient.format == 32 && event.xclient.data.l[0] == (signed) WM_DELETE_WINDOW) exit(0); + } + // the window size has changed + if (event.type == ConfigureNotify) { + XConfigureEvent* xce = (XConfigureEvent*) &event; + // if a slave window exists it has to be resized as well + if (_slave) { _slave->resize( + xce->width - (int)(xce->width / DEFAULT_SLAVE_RATIO), + xce->height - (int)(_slave->getYUVHeight() * xce->width / DEFAULT_SLAVE_RATIO / _slave->getYUVWidth()), + (int)(xce->width / DEFAULT_SLAVE_RATIO), + (int)(_slave->getYUVHeight() * xce->width / DEFAULT_SLAVE_RATIO / _slave->getYUVWidth())); + } + + // if we are a slave window the master window takes care of aspect ration + if (_master) { + _state.curX=0; + _state.curY=0; + _state.curWidth=xce->width; + _state.curHeight=xce->height; + // if we are a master window we have to recalculate the window size (important for non 4:3 screens) + } else { + if ((xce->width*_XVImage->height/_XVImage->width)>xce->height) { + _state.curX=(int)((xce->width-(xce->height*_XVImage->width/_XVImage->height))/2); + _state.curY=0; + _state.curWidth=(int)(xce->height*_XVImage->width/_XVImage->height); + _state.curHeight=xce->height; + } else if ((xce->height*_XVImage->width/_XVImage->height)>xce->width) { + _state.curX=0; + _state.curY=(int)((xce->height-(xce->width*_XVImage->height/_XVImage->width))/2); + _state.curWidth=xce->width; + _state.curHeight=(int)(xce->width*_XVImage->height/_XVImage->width); + } else { + _state.curX=0; + _state.curY=0; + _state.curWidth=xce->width; + _state.curHeight=xce->height; + } + } + } + + // a key is pressed + if (event.type == KeyPress) { + XKeyEvent* xke = (XKeyEvent*) &event; + switch (xke->keycode) { + case 41: toggleFullscreen(); // "f" + break; + case 40: setDecoration(!_state.decoration); // "d" + break; + case 32: toggleOntop(); // "o" + break; + case 9: if (_state.fullscreen) { toggleFullscreen(); } // esc + break; + } + } + + // a mouse button is clicked + if (event.type == ButtonPress) { + if (_master) { + _master->toggleFullscreen(); + } else { + toggleFullscreen(); + } + } + } + + // copy image to shared memory + memcpy(_XVImage->data, frame, (int) (_XVImage->width * _XVImage->height * 3 /2)); + + XvShmPutImage(_display, _XVPort, _XVWindow, _gc, _XVImage, 0, 0, _XVImage->width, _XVImage->height, + _state.curX, _state.curY, _state.curWidth, _state.curHeight, True); + + XFlush(_display); +} + +void XVWindow::toggleFullscreen() { + int newX, newY, newWidth, newHeight; + Window childWindow; + XWindowAttributes xwattributes; + + if (_state.fullscreen) { + // not needed with EWMH fs + if ( ! (_wmType & wm_FULLSCREEN) ) { + newX = _state.oldx; + newY = _state.oldy; + newWidth = _state.oldWidth; + newHeight = _state.oldHeight; + setDecoration(true); + } + + // removes fullscreen state if wm supports EWMH + setEWMHFullscreen(_NET_WM_STATE_REMOVE); + } else { + // sets fullscreen state if wm supports EWMH + setEWMHFullscreen(_NET_WM_STATE_ADD); + + // not needed with EWMH fs - save window coordinates/size and discover fullscreen window size + if ( ! (_wmType & wm_FULLSCREEN) ) { + newX = 0; + newY = 0; + newWidth = DisplayWidth(_display, DefaultScreen(_display)); + newHeight = DisplayHeight(_display, DefaultScreen(_display)); + + setDecoration(false); + XFlush(_display); + XTranslateCoordinates(_display, _XVWindow, RootWindow(_display, DefaultScreen(_display)), + 0,0,&_state.oldx,&_state.oldy, &childWindow); + XGetWindowAttributes(_display, _XVWindow, &xwattributes); + _state.oldWidth = xwattributes.width; + _state.oldHeight = xwattributes.height; + } + } + // not needed with EWMH fs - create a screen-filling window on top and turn of decorations + if (!(_wmType & wm_FULLSCREEN) ) { + setSizeHints(newX, newY, _XVImage->width, _XVImage->height, newWidth, newHeight); + setLayer((!_state.fullscreen) ? 0 : 1); + XMoveResizeWindow(_display, _XVWindow, newX, newY, newWidth, newHeight); + } + + /* some WMs lose ontop after fullscreeen */ + if ((_state.fullscreen) & _state.ontop) { + setLayer(1); + } + + XMapRaised(_display, _XVWindow); + XRaiseWindow(_display, _XVWindow); + XFlush(_display); + _state.fullscreen=!_state.fullscreen; +} + +void XVWindow::setEWMHFullscreen(int action) { + if (_wmType & wm_FULLSCREEN) { + + // create an event event to toggle fullscreen mode + XEvent xev; + xev.xclient.type = ClientMessage; + xev.xclient.serial = 0; + xev.xclient.send_event = True; + xev.xclient.message_type = XInternAtom(_display, "_NET_WM_STATE", False); + xev.xclient.window = _XVWindow; + xev.xclient.format = 32; + xev.xclient.data.l[0] = action; + xev.xclient.data.l[1] = XInternAtom(_display, "_NET_WM_STATE_FULLSCREEN", False); + xev.xclient.data.l[2] = 0; + xev.xclient.data.l[3] = 0; + xev.xclient.data.l[4] = 0; + + // send the event to the window + if (!XSendEvent(_display, _rootWindow, False, SubstructureRedirectMask | SubstructureNotifyMask, &xev)) { + LOG_DEBUG("[x11] setEWMHFullscreen failed"); + } + } +} + +void XVWindow::toggleOntop() { + setLayer((_state.ontop) ? 0 : 1); + _state.ontop=!_state.ontop; +} + +void XVWindow::setLayer(int layer) { + Window mRootWin = RootWindow(_display, DefaultScreen(_display)); + XClientMessageEvent xev; + memset(&xev, 0, sizeof(xev)); + char *state; + + if (_wmType & wm_LAYER) { + + if (!_state.origLayer) { + _state.origLayer = getGnomeLayer(); + } + xev.type = ClientMessage; + xev.display = _display; + xev.window = _XVWindow; + xev.message_type = XA_WIN_LAYER; + xev.format = 32; + xev.data.l[0] = layer ? WIN_LAYER_ABOVE_DOCK : _state.origLayer; + xev.data.l[1] = CurrentTime; + LOG_DEBUG("[x11] Layered style stay on top (layer " + String::fromNumber(xev.data.l[0]) + ")."); + XSendEvent(_display, mRootWin, False, SubstructureNotifyMask, (XEvent *) & xev); + + } else if (_wmType & wm_NETWM) { + + xev.type = ClientMessage; + xev.message_type = XA_NET_WM_STATE; + xev.display = _display; + xev.window = _XVWindow; + xev.format = 32; + xev.data.l[0] = layer; + + if (_wmType & wm_STAYS_ON_TOP) xev.data.l[1] = XA_NET_WM_STATE_STAYS_ON_TOP; + else if (_wmType & wm_ABOVE) xev.data.l[1] = XA_NET_WM_STATE_ABOVE; + else if (_wmType & wm_FULLSCREEN) xev.data.l[1] = XA_NET_WM_STATE_FULLSCREEN; + else if (_wmType & wm_BELOW) xev.data.l[1] = XA_NET_WM_STATE_BELOW; + + XSendEvent(_display, mRootWin, False, SubstructureRedirectMask, (XEvent *) & xev); + state = XGetAtomName(_display, xev.data.l[1]); + LOG_DEBUG("[x11] NET style stay on top (layer" + String::fromNumber(layer) + "). Using state" + state); + XFree(state); + } +} + +int XVWindow::getWMType() { + unsigned int i; + int wmType = 0; + int metacityHack=0; + unsigned long nitems; + Atom *args = NULL; + + // check if WM supports layers + if (getWindowProperty(XA_WIN_PROTOCOLS, &args, &nitems)) { + LOG_DEBUG("[x11] Detected wm supports layers."); + for (i = 0; i < nitems; i++) { + if (args[i] == XA_WIN_LAYER) { + wmType |= wm_LAYER; + metacityHack |= 1; + } else { + metacityHack |= 2; + } + } + XFree(args); + + // metacity WM reports that it supports layers, but it is not really truth :-) + if (wmType && (metacityHack == 1)) { + wmType ^= wm_LAYER; + LOG_DEBUG("[x11] Using workaround for Metacity bugs."); + } + } + + // NETWM + if (getWindowProperty(XA_NET_SUPPORTED, &args, &nitems)) { + LOG_DEBUG("[x11] Detected wm supports NetWM."); + for (i = 0; i < nitems; i++) { + wmType |= getSupportedState(args[i]); + } + XFree(args); + } + + // unknown WM + if (wmType == 0) { + LOG_DEBUG("[x11] Unknown wm type..."); + } + return wmType; +} + +void XVWindow::getWindowSize(unsigned int* windowWidth, unsigned int* windowHeight) { + unsigned int ud; Window _dw; int temp; + XGetGeometry(_display, _XVWindow, &_dw, &temp, &temp, windowWidth, windowHeight, &ud, &ud); +} + +void XVWindow::resize (int x, int y, int windowWidth, int windowHeight) { + XMoveResizeWindow(_display, _XVWindow, x, y, windowWidth, windowHeight); +} + +int XVWindow::getWindowProperty(Atom type, Atom ** args, unsigned long *nitems) { + int format; + unsigned long bytesafter; + return (Success == XGetWindowProperty(_display, _rootWindow, type, 0, 16384, False, + AnyPropertyType, &type, &format, nitems, &bytesafter, (unsigned char **) args) && *nitems > 0); +} + +int XVWindow::getSupportedState(Atom atom) { + if (atom==XA_NET_WM_STATE_FULLSCREEN) { return wm_FULLSCREEN; }; + if (atom==XA_NET_WM_STATE_ABOVE) { return wm_ABOVE; }; + if (atom==XA_NET_WM_STATE_STAYS_ON_TOP) { return wm_STAYS_ON_TOP; }; + if (atom==XA_NET_WM_STATE_BELOW) { return wm_BELOW; }; + return 0; +} + +void XVWindow::setSizeHints(int x, int y, int imageWidth, int imageHeight, int windowWidth, int windowHeight) { + XSizeHints xshints; + + xshints.flags = PPosition | PSize | PAspect | PMinSize; + + xshints.min_aspect.x = imageWidth; + xshints.min_aspect.y = imageHeight; + xshints.max_aspect.x = imageWidth; + xshints.max_aspect.y = imageHeight; + + xshints.x = x; + xshints.y = y; + xshints.width = windowWidth; + xshints.height = windowHeight; + xshints.min_width = 25; + xshints.min_height = 25; + + XSetStandardProperties(_display, _XVWindow, "Video", "Video", None, NULL, 0, &xshints); +} + +void XVWindow::setDecoration(bool d) { + + static unsigned int oldDecor = MWM_DECOR_ALL; + static unsigned int oldFuncs = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | + MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE; + Atom motifHints; + MotifWmHints setHints; + MotifWmHints* getHints = NULL; + + Atom mType; + int mFormat; + unsigned long mn, mb; + + motifHints = XInternAtom(_display, "_MOTIF_WM_HINTS", 0); + if (motifHints != None) { + memset(&setHints, 0, sizeof(setHints)); + + if (!d) { + XGetWindowProperty(_display, _XVWindow, motifHints, 0, 20, False, motifHints, &mType, + &mFormat, &mn, &mb, (unsigned char **) &getHints); + if (getHints) { + if (getHints->flags & MWM_HINTS_DECORATIONS) oldDecor = getHints->decorations; + if (getHints->flags & MWM_HINTS_FUNCTIONS) oldFuncs = getHints->functions; + XFree(getHints); + } + + setHints.decorations = 0; + } else { + setHints.functions = oldFuncs; + setHints.decorations = oldDecor; + } + + setHints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; + + XChangeProperty(_display, _XVWindow, motifHints, motifHints, 32, + PropModeReplace, (unsigned char *) &setHints, 5); + _state.decoration=!_state.decoration; + } +} + +int XVWindow::getGnomeLayer() { + Atom type; + int format; + unsigned long nitems; + unsigned long bytesafter; + unsigned short *args = NULL; + + if (XGetWindowProperty(_display, _XVWindow, XA_WIN_LAYER, 0, 16384, False, AnyPropertyType, &type, &format, &nitems, + &bytesafter, (unsigned char **) &args) == Success && nitems > 0 && args) { + LOG_DEBUG("[x11] original window layer is" + String::fromNumber(*args)); + return *args; + } + return WIN_LAYER_NORMAL; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phonecall/XVWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,165 @@ +/* + * XVWindow.h - XVWindow + * High-level class offering X-Video hardware acceleration + * + * Matthias Schneider + * 31-August-2006: fixed some memory leaks + * 22-June-2006: varios cosmetic changes + * 07-May-2006: initial version + * + * This program is free software; you can redistribute it and/or modify + * it under the terms of the GNU General Public License, v2, as + * published by the Free Software Foundation + * + * 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. + * + * Copyright (C) 2006 Matthias Schneider + */ + +#ifndef OWXVWINDOW_H +#define OWXVWINDOW_H + +#include + +#include +#include +#include +#include +#include +#include + +/** + * String: wrapper/helper. + * + * This class provides XVideo support under Linux if it is supported by the graphics hardware and driver. + * XVideo makes use of hardware capabilities in order to do + * - colorspace transformation + * - scaling + * - anti-aliasing + * + * This class features a fullscreen mode, an always-on-top mode and allows to enable and disable the window + * manager decorations. A picture-in-picture functionality is provided by registering a second XVWindow class + * window as a slave window. This class should work with most if not all window managers. It has to initialized + * with the display and window where it shall appear and the original image and intial window size + * After having been initialized successfully a frame is passed via putFrame which takes care of the presentation. + * + * @author Matthias Schneider + */ +class XVWindow { +public: + + XVWindow(); + ~XVWindow(); + int init(Display * dp, Window rootWindow, int x, int y, int windowWidth, int windowHeight, int imageWidth, int imageHeight); + void putFrame(uint8_t * frame, uint16_t width, uint16_t height); + void toggleFullscreen(); + void toggleOntop(); + + void resize(int x, int y, int windowWidth, int windowHeight); + void getWindowSize(unsigned int* windowWidth, unsigned int* windowHeight); + + bool isFullScreen() const { + return (_state.fullscreen); + }; + + Window getWindow() const { + return (_XVWindow); + }; + + int getYUVWidth() const { + return (_XVImage->width); + }; + + int getYUVHeight() const { + return (_XVImage->height); + }; + + void registerMaster(XVWindow * master) { + _master = master; + }; + + void registerSlave(XVWindow * slave) { + _slave = slave; + }; + +private: + + Display *_display; + Window _rootWindow; + Window _XVWindow; + unsigned int _XVPort; + GC _gc; + XvImage * _XVImage; + XShmSegmentInfo _XShmInfo; + int _wmType; + + typedef struct { + bool fullscreen; + bool ontop; + bool decoration; + int oldx; + int oldy; + int oldWidth; + int oldHeight; + int curX; + int curY; + int curWidth; + int curHeight; + int origLayer; + } State; + + State _state; + XVWindow * _master; + XVWindow * _slave; + + Atom XA_NET_SUPPORTED; + Atom XA_WIN_PROTOCOLS; + Atom XA_WIN_LAYER; + Atom XA_NET_WM_STATE; + Atom XA_NET_WM_STATE_FULLSCREEN; + Atom XA_NET_WM_STATE_ABOVE; + Atom XA_NET_WM_STATE_STAYS_ON_TOP; + Atom XA_NET_WM_STATE_BELOW; + Atom WM_DELETE_WINDOW; + + /** + * Sets the layer for the window. + */ + void setLayer(int layer); + + /** + * Fullscreen for ewmh WMs. + */ + void setEWMHFullscreen(int action); + + void setDecoration(bool d); + void setSizeHints(int x, int y, int imageWidth, int imageHeight, int windowWidth, int windowHeight); + + /** + * Detects window manager type. + */ + int getWMType(); + + int getGnomeLayer(); + + /** + * Tests an atom. + */ + int getSupportedState(Atom atom); + + /** + * Returns the root window's. + */ + int getWindowProperty(Atom type, Atom ** args, unsigned long * nitems); + + bool _isInitialized; +}; + +#endif //OWXVWINDOW_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,122 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPhoneLine.h" + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#if defined(OS_MACOSX) + #include +#endif + +QtPhoneLine::QtPhoneLine(CPhoneLine & cPhoneLine) + : QObjectThreadSafe(NULL), + _cPhoneLine(cPhoneLine) { + + _activeCPhoneCall = NULL; + _qtQuteCom = static_cast(_cPhoneLine.getCQuteCom().getPresentation()); + + stateChangedEvent += boost::bind(&QtPhoneLine::stateChangedEventHandler, this, _1); + phoneCallCreatedEvent += boost::bind(&QtPhoneLine::phoneCallCreatedEventHandler, this, _1); + phoneCallClosedEvent += boost::bind(&QtPhoneLine::phoneCallClosedEventHandler, this, _1); + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::initThreadSafe, this)); + postEvent(event); +} + +QtPhoneLine::~QtPhoneLine() { +} + +void QtPhoneLine::initThreadSafe() { + //callButton + SAFE_CONNECT(&_qtQuteCom->getQtCallBar(), SIGNAL(callButtonClicked()), SLOT(callButtonClicked())); + +#ifdef OS_MACOSX + // openURLRequest + QtMacApplication * macApp = dynamic_cast(QApplication::instance()); + SAFE_CONNECT_TYPE(macApp, SIGNAL(openURLRequest(QString)), SLOT(openURLRequest(QString)), Qt::QueuedConnection); +#endif +} + +void QtPhoneLine::stateChangedEventHandler(EnumPhoneLineState::PhoneLineState state) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::stateChangedEventHandlerThreadSafe, this, _1), state); + postEvent(event); +} + +void QtPhoneLine::stateChangedEventHandlerThreadSafe(EnumPhoneLineState::PhoneLineState state) { + _qtQuteCom->getQtStatusBar().updatePhoneLineState(state); + _qtQuteCom->getQtSystray().phoneLineStateChanged(state); + _qtQuteCom->updatePresentation(); +} + +void QtPhoneLine::phoneCallCreatedEventHandler(CPhoneCall & cPhoneCall) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::phoneCallCreatedEventHandlerThreadSafe, this, _1), cPhoneCall); + postEvent(event); +} + +void QtPhoneLine::phoneCallCreatedEventHandlerThreadSafe(CPhoneCall & cPhoneCall) { + _activeCPhoneCall = &cPhoneCall; +} + +void QtPhoneLine::phoneCallClosedEventHandler(CPhoneCall & cPhoneCall) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::phoneCallClosedEventHandlerThreadSafe, this, _1), cPhoneCall); + postEvent(event); +} + +void QtPhoneLine::phoneCallClosedEventHandlerThreadSafe(CPhoneCall & cPhoneCall) { + if (_activeCPhoneCall == &cPhoneCall) { + _activeCPhoneCall = NULL; + } +} + +void QtPhoneLine::callButtonClicked() { + if (_activeCPhoneCall) { + _activeCPhoneCall->accept(); + _qtQuteCom->getQtCallBar().setEnabledCallButton(false); + } +} + +void QtPhoneLine::openURLRequest(QString url) { + // Resetting in case of synchronization problem + // FIXME: Is this still necessary? + QuteCom::getInstance().setStartupCall(std::string()); + //// + + _cPhoneLine.makeCall(std::string((url.split("//")[1]).toUtf8())); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/phoneline/QtPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,83 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTPHONELINE_H +#define OWQTPHONELINE_H + +#include + +#include + +#include + +class CPhoneLine; +class CQuteCom; +class CPhoneCall; +class QtPhoneCall; +class QtQuteCom; + +class QtPhoneLine : public QObjectThreadSafe, public PPhoneLine, public Trackable { + Q_OBJECT +public: + + QtPhoneLine(CPhoneLine & cPhoneLine); + + virtual ~QtPhoneLine(); + + virtual void updatePresentation() {} + +private Q_SLOTS: + + void callButtonClicked(); + + /** @see QtMacApplication::openURLRequestEvent */ + void openURLRequest(QString url); + +private: + + virtual void initThreadSafe(); + + /** + * Handles state of the associated PhoneLine and dispatch it to + * the systray and the status bar. + * @param state the new state of the PhoneLine. + */ + void stateChangedEventHandler(EnumPhoneLineState::PhoneLineState state); + + /** + * @see QtPhoneLine::stateChangedEventHandler + */ + void stateChangedEventHandlerThreadSafe(EnumPhoneLineState::PhoneLineState state); + + void phoneCallCreatedEventHandler(CPhoneCall & cPhoneCall); + + void phoneCallCreatedEventHandlerThreadSafe(CPhoneCall & cPhoneCall); + + void phoneCallClosedEventHandler(CPhoneCall & cPhoneCall); + + void phoneCallClosedEventHandlerThreadSafe(CPhoneCall & cPhoneCall); + + CPhoneLine & _cPhoneLine; + + QtQuteCom * _qtQuteCom; + + CPhoneCall * _activeCPhoneCall; +}; + +#endif //OWQTPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/ProfileDetails.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/ProfileDetails.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/ProfileDetails.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/ProfileDetails.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,536 @@ + + ProfileDetails + + + + 0 + 0 + 427 + 494 + + + + + 6 + + + 6 + + + + + 0 + + + + General + + + + 9 + + + 6 + + + + + Network IDs (MSN, Jabber...) + + + + 6 + + + 6 + + + + + + 5 + 7 + 0 + 0 + + + + + + + + Advanced >> + + + :/pics/config/advanced.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + false + + + Fill in all your network Id to stay connected with your contacts + + + false + + + Qt::AlignJustify|Qt::AlignVCenter + + + true + + + + + + + + + + Phone Numbers + + + + 6 + + + 6 + + + + + + 0 + 5 + 0 + 0 + + + + Home phone + + + :/pics/contact/landline.png + + + + + + + 255 + + + + + + + 255 + + + + + + + + 0 + 5 + 0 + 0 + + + + Mobile phone + + + :/pics/contact/mobile.png + + + + + + + + + + Qt::LeftToRight + + + Contact + + + + 6 + + + 6 + + + + + 0 + + + 6 + + + + + Group: + + + + + + + 255 + + + + + + + 255 + + + + + + + Last Name: + + + + + + + First Name: + + + + + + + + 7 + 0 + 0 + 0 + + + + true + + + 25 + + + + + + + + + + 90 + 90 + + + + + 90 + 90 + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + :/pics/avatar_background.png + + + + 90 + 90 + + + + true + + + + + + + + + + + Details + + + + 9 + + + 6 + + + + + 13 + + + Web/blog: + + + :/pics/contact/home.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Qt::Horizontal + + + + + + + Country: + + + + + + + State: + + + + + + + City: + + + + + + + Qt::Horizontal + + + + + + + Gender: + + + + + + + Birth Date: + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 13 + + + Email: + + + :/pics/edit.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + + + + 255 + + + + + + + 255 + + + + + + + 255 + + + + + + + dd MMMM yyyy + + + + + + + + Unknown + + + + + Male + + + + + Female + + + + + + + + true + + + + + + + + Notes + + + + 9 + + + 6 + + + + + + + + + + + + 0 + + + 6 + + + + + Cancel + + + + + + + Save + + + true + + + true + + + + + + + Qt::Horizontal + + + + 91 + 32 + + + + + + + + + + tabWidget + groupComboBox + avatarPixmapButton + firstNameLineEdit + lastNameLineEdit + mobilePhoneLineEdit + homePhoneLineEdit + advancedButton + saveButton + cancelButton + emailLineEdit + webLineEdit + countryComboBox + stateLineEdit + cityLineEdit + genderComboBox + birthDate + notesEdit + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,429 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtProfileDetails.h" + +#include "ui_ProfileDetails.h" + +#include + +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#ifdef OS_WINDOWS + #include +#endif + +static const char * PNG_FORMAT = "PNG"; + +QtProfileDetails::QtProfileDetails(CUserProfile & cUserProfile, + ContactProfile & contactProfile, QWidget * parent, const QString & windowTitle) + : QObject(parent), + _cUserProfile(cUserProfile), + _profile(contactProfile) { + + init(parent); + _profileDetailsWindow->setWindowTitle(tr("@product@") + " - " + windowTitle); + + //FIXME we should keep in memory the UUID of the group + std::vector< std::pair > tmp = _cUserProfile.getCContactList().getContactGroups(); + for (std::vector< std::pair >::const_iterator it = tmp.begin(); + it != tmp.end(); ++it) { + + _ui->groupComboBox->addItem(QString::fromUtf8((*it).second.c_str()), QString::fromUtf8((*it).first.c_str())); + std::string str1 = (*it).first; + std::string str2 = contactProfile.getGroupId(); + if (str1 == str2) { + _ui->groupComboBox->setCurrentIndex(_ui->groupComboBox->findText(QString::fromUtf8((*it).second.c_str()))); + } + } + + //QtSimpleIMContactManager + _qtIMContactManager = new QtSimpleIMContactManager(contactProfile, _cUserProfile, _profileDetailsWindow); + int index = _ui->imStackedWidget->addWidget(_qtIMContactManager->getWidget()); + _ui->imStackedWidget->setCurrentIndex(index); + + SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); + SAFE_CONNECT(_ui->mobilePhoneLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateSaveButtonState())); + SAFE_CONNECT(_ui->homePhoneLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateSaveButtonState())); + + //saveButton + updateSaveButtonState(); + SAFE_CONNECT(_ui->saveButton, SIGNAL(clicked()), SLOT(saveContact())); + + //avatarPixmapButton + _ui->avatarPixmapButton->setToolTip(""); + //_ui->avatarPixmapButton->setEnabled(false); + SAFE_CONNECT(_ui->avatarPixmapButton, SIGNAL(clicked()), SLOT(changeUserProfileAvatar())); + _ui->myProfileLabel->hide(); +} + +QtProfileDetails::QtProfileDetails(CUserProfile & cUserProfile, + UserProfile & userProfile, QWidget * parent, const QString & windowTitle) + : QObject(parent), + _cUserProfile(cUserProfile), + _profile(userProfile) { + + init(parent); + _profileDetailsWindow->setWindowTitle(tr("@product@") + " - " + windowTitle); + + //Not needed for UserProfile + _ui->groupLabel->hide(); + _ui->groupComboBox->hide(); + + //QtIMAccountManager + QtIMAccountManager * qtIMAccountManager = + new QtIMAccountManager((UserProfile &) _profile, false, _profileDetailsWindow); + int index = _ui->imStackedWidget->addWidget(qtIMAccountManager->getWidget()); + _ui->imStackedWidget->setCurrentIndex(index); + _ui->advancedButton->hide(); + /// no more simple mode + + //saveButton + SAFE_CONNECT(_ui->saveButton, SIGNAL(clicked()), SLOT(saveUserProfile())); + + //avatarPixmapButton + SAFE_CONNECT(_ui->avatarPixmapButton, SIGNAL(clicked()), SLOT(changeUserProfileAvatar())); +} + +void QtProfileDetails::init(QWidget * parent) { + _profileDetailsWindow = new QDialog(parent); + + _ui = new Ui::ProfileDetails(); + _ui->setupUi(_profileDetailsWindow); + + populateCountryList(); + + SAFE_CONNECT(_ui->cancelButton, SIGNAL(clicked()), SLOT(cancelButtonClicked())); + SAFE_CONNECT(_ui->advancedButton, SIGNAL(clicked()), SLOT(advancedButtonClicked())); + SAFE_CONNECT(_ui->websiteButton, SIGNAL(clicked()), SLOT(websiteButtonClicked())); + SAFE_CONNECT(_ui->emailButton, SIGNAL(clicked()), SLOT(emailButtonClicked())); + + _qtIMContactManager = NULL; + + readProfile(); +} + +void QtProfileDetails::populateCountryList() { + _ui->countryComboBox->addItems(StringListConvert::toQStringList(CountryList::getCountryList())); +} + +int QtProfileDetails::show() { + return _profileDetailsWindow->exec(); +} + +void QtProfileDetails::readProfile() { + _ui->firstNameLineEdit->setText(QString::fromUtf8(_profile.getFirstName().c_str())); + _ui->lastNameLineEdit->setText(QString::fromUtf8(_profile.getLastName().c_str())); + _ui->genderComboBox->setCurrentIndex((int) _profile.getSex()); + + Date date = _profile.getBirthdate(); + _ui->birthDate->setDate(QDate(date.getYear(), date.getMonth(), date.getDay())); + + StreetAddress address = _profile.getStreetAddress(); + _ui->countryComboBox->setCurrentIndex(_ui->countryComboBox->findText(QString::fromUtf8(address.getCountry().c_str()))); + _ui->cityLineEdit->setText(QString::fromUtf8(address.getCity().c_str())); + _ui->stateLineEdit->setText(QString::fromUtf8(address.getStateProvince().c_str())); + + _ui->mobilePhoneLineEdit->setText(QString::fromUtf8(_profile.getMobilePhone().c_str())); + _ui->homePhoneLineEdit->setText(QString::fromUtf8(_profile.getHomePhone().c_str())); + + _ui->emailLineEdit->setText(QString::fromUtf8(_profile.getPersonalEmail().c_str())); + _ui->webLineEdit->setText(QString::fromUtf8(_profile.getWebsite().c_str())); + + _ui->notesEdit->setPlainText(QString::fromUtf8(_profile.getNotes().c_str())); + + updateAvatarButton(); +} + +void QtProfileDetails::updateAvatarButton() { + std::string backgroundPixmapFilename = ":/pics/avatar_background.png"; + std::string foregroundPixmapData = _profile.getIcon().getData(); + + _ui->avatarPixmapButton->setIcon(PixmapMerging::merge(foregroundPixmapData, backgroundPixmapFilename)); +} + +void QtProfileDetails::saveProfile() { + _profile.setFirstName(_ui->firstNameLineEdit->text().toUtf8().data()); + + _profile.setLastName(_ui->lastNameLineEdit->text().toUtf8().data()); + + QDate date = _ui->birthDate->date(); + _profile.setBirthdate(Date(date.day(), date.month(), date.year())); + + _profile.setSex((EnumSex::Sex) _ui->genderComboBox->currentIndex()); + + StreetAddress address; + address.setCountry(_ui->countryComboBox->currentText().toUtf8().data()); + address.setStateProvince(_ui->stateLineEdit->text().toUtf8().data()); + address.setCity(_ui->cityLineEdit->text().toUtf8().data()); + + _profile.setStreetAddress(address); + + _profile.setMobilePhone(std::string(_ui->mobilePhoneLineEdit->text().remove(" ").toUtf8())); + _profile.setHomePhone(std::string(_ui->homePhoneLineEdit->text().remove(" ").toUtf8())); + + _profile.setPersonalEmail(std::string(_ui->emailLineEdit->text().toUtf8())); + _profile.setWebsite(std::string(_ui->webLineEdit->text().toUtf8())); + + _profile.setNotes(_ui->notesEdit->toPlainText().toUtf8().constData()); +} + +ContactProfile & QtProfileDetails::fillAndGetContactProfile() { + + if (_qtIMContactManager) { + _qtIMContactManager->saveIMContacts(); + } + + saveProfile(); + + return (ContactProfile &) _profile; +} + +void QtProfileDetails::saveContact() { + + if (_ui->groupComboBox->currentText().isEmpty()) { + QMessageBox::warning(_profileDetailsWindow, + tr("@product@ - No Group Selected"), + tr("A contact must have a group, please set a group."), + QMessageBox::NoButton, + QMessageBox::NoButton, + QMessageBox::Ok); + + return; + } + + ContactProfile & contactProfile = fillAndGetContactProfile(); + + int index = _ui->groupComboBox->findText(_ui->groupComboBox->currentText()); + QVariant groupId; + groupId = _ui->groupComboBox->itemData(index); + //If the group does not exist + if (groupId.isNull()) { + std::string groupName = std::string(_ui->groupComboBox->currentText().toUtf8().data()); + _cUserProfile.getCContactList().addContactGroup(groupName); + groupId = QString::fromUtf8(_cUserProfile.getCContactList().getContactGroupIdFromName(groupName).c_str()); + } + + contactProfile.setGroupId(std::string(groupId.toString().toUtf8())); + + _profileDetailsWindow->accept(); +} + +void QtProfileDetails::saveUserProfile() { + saveProfile(); + + _profileDetailsWindow->accept(); +} + +void QtProfileDetails::cancelButtonClicked() { + _profileDetailsWindow->reject(); +} + +void QtProfileDetails::changeUserProfileAvatar() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString startDir = QString::fromUtf8(config.getResourcesDir().c_str()) + "pics/avatars"; + + ImageSelector avatarSelector(_profileDetailsWindow); + avatarSelector.setWindowTitle(tr("Select your avatar")); + avatarSelector.setCurrentDir(startDir); + + // Add QuteCom avatar dir + int iconSize = ImageSelector::START_DIR_ICON_SIZE; + QPixmap qutecomPixmap = QPixmap(startDir + "/default-avatar.png"); + qutecomPixmap = qutecomPixmap.scaled(iconSize, iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); + avatarSelector.addStartDirItem(startDir, tr("@company@ Avatars"), qutecomPixmap); + + // Add desktop dirs + DesktopService* service = DesktopService::getInstance(); + QStringList startDirList = service->startFolderList(); + Q_FOREACH(QString startDir, startDirList) { + QString name = service->userFriendlyNameForPath(startDir); + QPixmap pix = service->pixmapForPath(startDir, iconSize); + avatarSelector.addStartDirItem(startDir, name, pix); + } + //// + + if (!avatarSelector.exec()) { + return; + } + + setAvatarImage(avatarSelector.path()); + updateAvatarButton(); + +#ifdef OS_WINDOWS + BringWindowToTop(_profileDetailsWindow->winId()); +#endif +} + +void QtProfileDetails::setAvatarImage(const QString& path) { + //Size of QuteCom avatars + QSize size(96, 96); + //Image is scaled to not save a big picture in userprofile.xml + QImage image(path); + image = image.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation); + + QBuffer buffer; + buffer.open(QIODevice::ReadWrite); + image.save(&buffer, PNG_FORMAT); + buffer.close(); + + QByteArray byteArray = buffer.data(); + std::string data(byteArray.data(), byteArray.size()); + + OWPicture picture = OWPicture::pictureFromData(data); + QFileInfo fileInfo(path); + picture.setFilename(std::string(fileInfo.fileName().toUtf8())); + + _profile.setIcon(picture); +} + +void QtProfileDetails::advancedButtonClicked() { + + // save modifications before changing of mode + fillAndGetContactProfile(); + //// + + if (_qtIMContactManager->getContactManagerMode() == QtIMContactManagerInterface::contactManagerModeSimple) { + //Simple mode -> advanced mode + _ui->advancedButton->setText(tr("<< Simple")); + + //QtAdvancedIMContactManager + QtAdvancedIMContactManager * qtIMContactManager = + new QtAdvancedIMContactManager((ContactProfile &) _profile, _cUserProfile, _profileDetailsWindow); + + _ui->imStackedWidget->removeWidget(_qtIMContactManager->getWidget()); + OWSAFE_DELETE(_qtIMContactManager); + + int index = _ui->imStackedWidget->addWidget(qtIMContactManager->getWidget()); + _ui->imStackedWidget->setCurrentIndex(index); + _qtIMContactManager = qtIMContactManager; + SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); + + } else /*if (_qtIMContactManager->getContactManagerMode() == QtIMContactManagerInterface::contactManagerModeAdvanced)*/ { + //Advanced mode -> simple mode + _ui->advancedButton->setText(tr("Advanced >>")); + + //QtSimpleIMContactManager + QtSimpleIMContactManager * qtIMContactManager = + new QtSimpleIMContactManager((ContactProfile &) _profile, _cUserProfile, _profileDetailsWindow); + + _ui->imStackedWidget->removeWidget(_qtIMContactManager->getWidget()); + OWSAFE_DELETE(_qtIMContactManager); + + int index = _ui->imStackedWidget->addWidget(qtIMContactManager->getWidget()); + _ui->imStackedWidget->setCurrentIndex(index); + _qtIMContactManager = qtIMContactManager; + SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); + } +} + +void QtProfileDetails::websiteButtonClicked() { + String website(_ui->webLineEdit->text().toUtf8()); + if (!website.empty()) { + if (!website.contains("http://")) { + website = "http://" + website; + } + WebBrowser::openUrl(website); + } +} + +void QtProfileDetails::emailButtonClicked() { + std::string email(_ui->emailLineEdit->text().toUtf8()); + if (!email.empty()) { + WebBrowser::openUrl("mailto:" + email); + } +} + +void QtProfileDetails::setGroup(const QString & group) { + _ui->groupComboBox->setEditText(group); +} + +void QtProfileDetails::setFirstName(const QString & firstName) { + _ui->firstNameLineEdit->setText(firstName); +} + +void QtProfileDetails::setLastName(const QString & lastName) { + _ui->lastNameLineEdit->setText(lastName); +} + +void QtProfileDetails::setCountry(const QString & country) { + _ui->countryComboBox->setEditText(country); +} + +void QtProfileDetails::setCity(const QString & city) { + _ui->cityLineEdit->setText(city); +} + +void QtProfileDetails::setState(const QString & state) { + _ui->stateLineEdit->setText(state); +} + +void QtProfileDetails::setWebsite(const QString & website) { + _ui->webLineEdit->setText(website); +} + +void QtProfileDetails::setHomePhone(const QString & homePhone) { + _ui->homePhoneLineEdit->setText(homePhone); +} + +void QtProfileDetails::setQuteComName(const QString & qutecomName) { + + _qtIMContactManager->setQuteComName(qutecomName); +} + +void QtProfileDetails::setSipAddress(const QString & sipAddress) { + _qtIMContactManager->setSipAddress(sipAddress); +} + +void QtProfileDetails::updateSaveButtonState() { + + if ((!_ui->mobilePhoneLineEdit->text().isEmpty()) || + (!_ui->homePhoneLineEdit->text().isEmpty()) || + _qtIMContactManager->couldBeSaved() + ) { + _ui->saveButton->setEnabled(true); + } else { + _ui->saveButton->setEnabled(false); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtProfileDetails.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,145 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTPROFILEDETAILS_H +#define OWQTPROFILEDETAILS_H + +#include + +#include + +class UserProfile; +class ContactProfile; +class CUserProfile; +class Profile; +class QtIMContactManagerInterface; + +class QImage; +class QWidget; +class QDialog; +namespace Ui { class ProfileDetails; } + +/** + * Profile/Contact/UserProfile details window. + * + * @see Profile + * @see UserProfile + * @see Contact + * @author Tanguy Krotoff + */ +class QtProfileDetails : public QObject, NonCopyable { + Q_OBJECT +public: + + QtProfileDetails(CUserProfile & cUserProfile, ContactProfile & contactProfile, QWidget * parent, const QString & windowTitle); + + QtProfileDetails(CUserProfile & cUserProfile, UserProfile & userProfile, QWidget * parent, const QString & windowTitle); + + int show(); + + QDialog * getWidget() const { + return _profileDetailsWindow; + } + + void setQuteComName(const QString & qutecomName); + + void setGroup(const QString & group); + + void setFirstName(const QString & firstName); + + void setLastName(const QString & lastName); + + void setCountry(const QString & country); + + void setCity(const QString & city); + + void setState(const QString & state); + + void setWebsite(const QString & website); + + void setHomePhone(const QString & homePhone); + + void setSipAddress(const QString & sipAddress); + +public Q_SLOTS: + + void changeUserProfileAvatar(); + +private Q_SLOTS: + + void updateSaveButtonState(); + + void saveContact(); + + void saveUserProfile(); + + void cancelButtonClicked(); + + /** + * Switch from simple mode to advanced mode. + * + * The button advanced from QtSimpleIMContactManager has been clicked. + * Changes _ui->imStackedWidget widget. + */ + void advancedButtonClicked(); + + /** + * Shows the contact web page. + */ + void websiteButtonClicked(); + + /** + * Shows the contact email. + */ + void emailButtonClicked(); + +private: + + ContactProfile & fillAndGetContactProfile(); + + void init(QWidget * parent); + + /** Populates the country list widget. */ + void populateCountryList(); + + void readProfile(); + + void updateAvatarButton(); + + void saveProfile(); + + void setAvatarImage(const QString& path); + + Ui::ProfileDetails * _ui; + + QDialog * _profileDetailsWindow; + + CUserProfile & _cUserProfile; + + Profile & _profile; + + QtIMContactManagerInterface * _qtIMContactManager; + + /** + * QtProfileDetails shows a Contact rather than a UserProfile if true. + */ + bool _showContact; +}; + +#endif //QTPROFILEDETAILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,233 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtUserProfile.h" + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include + +#include + +#include + +QtUserProfile::QtUserProfile(CUserProfile & cUserProfile, QtQuteCom & qtQuteCom) + : QObjectThreadSafe(NULL), + _qtQuteCom(qtQuteCom), + _cUserProfile(cUserProfile) { + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtUserProfile::initThreadSafe, this)); + postEvent(event); +} + +void QtUserProfile::initThreadSafe() { + qRegisterMetaType("IMContact"); + + SAFE_CONNECT_TYPE(this, SIGNAL(loginStateChangedEventHandlerSignal(SipAccount *, int)), + SLOT(loginStateChangedEventHandlerSlot(SipAccount *, int)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(networkDiscoveryStateChangedEventHandlerSignal(SipAccount *, int)), + SLOT(networkDiscoveryStateChangedEventHandlerSlot(SipAccount *, int)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(authorizationRequestEventHandlerSignal(PresenceHandler *, IMContact, QString)), + SLOT(authorizationRequestEventHandlerSlot(PresenceHandler *, IMContact, QString)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(incomingSubscribeEventHandlerSignal(PresenceHandler *,const QString&,int,const QString&, const QString&)), + SLOT(incomingSubscribeEventHandlerSlot(PresenceHandler *,const QString&,int,const QString&,const QString&)), Qt::QueuedConnection); + + QtBrowserWidget* browserWidget = _qtQuteCom.getQtBrowserWidget(); + if (browserWidget) { + browserWidget->loadDefaultURL(); + } +} + +QtUserProfile::~QtUserProfile() { + LOG_DEBUG("QtUserProfile"); +} + +void QtUserProfile::updatePresentation() { +} + +void QtUserProfile::updatePresentationThreadSafe() { +} + +void QtUserProfile::loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state) { + loginStateChangedEventHandlerSignal(&sender, (int) state); +} + +void QtUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state) { + networkDiscoveryStateChangedEventHandlerSignal(&sender, (int) state); +} + +void QtUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message) { + authorizationRequestEventHandlerSignal(&sender, imContact, QString::fromUtf8(message.c_str())); +} + +void QtUserProfile::incomingSubscribeEventHandler(PresenceHandler & sender,const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType) +{ + incomingSubscribeEventHandlerSignal(&sender, QString::fromUtf8(imaccountId.c_str()), sid,QString::fromUtf8(from.c_str()), QString::fromUtf8(evtType.c_str())); +} + +void QtUserProfile::loginStateChangedEventHandlerSlot(SipAccount * sender, int iState) { + EnumSipLoginState::SipLoginState state = (EnumSipLoginState::SipLoginState) iState; + + switch (state) { + case EnumSipLoginState::SipLoginStateReady: + _qtQuteCom.getQtBrowserWidget()->loadDefaultURL(); + break; + + case EnumSipLoginState::SipLoginStateConnected: + _qtQuteCom.getQtBrowserWidget()->loadDefaultURL(); + break; + + case EnumSipLoginState::SipLoginStateDisconnected: + _qtQuteCom.getQtBrowserWidget()->loadDefaultURL(); + break; + + case EnumSipLoginState::SipLoginStatePasswordError: + LOG_DEBUG("SipLoginStatePasswordError"); + break; + + case EnumSipLoginState::SipLoginStateNetworkError: + { + CUserProfileHandler & handler = _qtQuteCom.getCQuteCom().getCUserProfileHandler(); + QtLoginDialog dlg(&_qtQuteCom, handler); + dlg.setValidAccount((QuteComAccount &) *sender); + dlg.setErrorMessage(tr("Network error.")); + dlg.exec(); + } + break; + case EnumSipLoginState::SipLoginStateProgress: + _qtQuteCom.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); + _qtQuteCom.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); + break; + + default: + LOG_FATAL("unknown state=" + String::fromNumber(state)); + } + + _qtQuteCom.updatePresentation(); +} + +void QtUserProfile::networkDiscoveryStateChangedEventHandlerSlot(SipAccount * /*sender*/, int /*iState*/) { + + //SipAccount::NetworkDiscoveryState state = (SipAccount::NetworkDiscoveryState) iState; +} + +void QtUserProfile::incomingSubscribeEventHandlerSlot(PresenceHandler * sender,const QString & imaccountId,int sid,const QString & from, const QString& evtType) +{ + QString request = QString("%1 wants to see the presence state.\n") + .arg(from); + + + int buttonClicked = QMessageBox::question(_qtQuteCom.getWidget(), + tr("@product@ - Authorization Request"), request, + tr("&Authorize"), tr("&Block")); + + if (buttonClicked == 0) { + //TODO: give a personal message + + IMAccount * imAccount = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(std::string(imaccountId.toUtf8())); + if(imAccount) + { + IMContact imContact(*imAccount,std::string(from.toUtf8())); + if (_cUserProfile.getCContactList().findContactThatOwns(imContact).empty()) + { + + ContactProfile contactProfile; + contactProfile.addIMContact(imContact); + QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _qtQuteCom.getWidget(), tr("Edit Contact")); + if (qtProfileDetails.show()) { + _cUserProfile.getCContactList().addContact(contactProfile); + } + } + } + //sender->authorizeContact(imContact, true, String::null); + //_cUserProfile.getUserProfile() + sender->acceptSubscription(sid,std::string(imaccountId.toUtf8())); + + } else { + sender->rejectSubscription(sid,std::string(imaccountId.toUtf8())); + //TODO: give a personal message + //TODO: avoid direct access to model (as we are in the GUI thread) + //sender->authorizeContact(imContact, false, String::null); + } +} + +void QtUserProfile::authorizationRequestEventHandlerSlot(PresenceHandler * sender, + IMContact imContact, QString message) { + + IMAccount * imAccount = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(imContact.getIMAccountId()); + if (imAccount) { + QString request = QString("%1 (from %2) wants to see the presence state of %3.\n") + .arg(QString::fromUtf8(imContact.getContactId().c_str())) + .arg(QString::fromUtf8(EnumIMProtocol::toString(imContact.getProtocol()).c_str())) + .arg(QString::fromUtf8(imAccount->getLogin().c_str())); + + if (!message.isEmpty()) { + request += QString("%1\n").arg(message); + } + + int buttonClicked = QMessageBox::question(_qtQuteCom.getWidget(), + tr("@product@ - Authorization Request"), request, + tr("&Authorize"), tr("&Block")); + + if (buttonClicked == 0) { + //TODO: give a personal message + + if (_cUserProfile.getCContactList().findContactThatOwns(imContact).empty()) { + //If the contact is not in our ContactList + ContactProfile contactProfile; + contactProfile.addIMContact(imContact); + QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _qtQuteCom.getWidget(), tr("Edit Contact")); + if (qtProfileDetails.show()) { + _cUserProfile.getCContactList().addContact(contactProfile); + } + } + sender->authorizeContact(imContact, true, String::null); + + } else { + //TODO: give a personal message + //TODO: avoid direct access to model (as we are in the GUI thread) + sender->authorizeContact(imContact, false, String::null); + } + OWSAFE_DELETE(imAccount); + } else { + LOG_ERROR("IMAccount not found!"); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,101 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTUSERPROFILE_H +#define OWQTUSERPROFILE_H + +#include + +#include + +#include + +#include + +class CUserProfile; +class QtQuteCom; + +/** + * Qt implementation of UserProfile Presentation layer. + * + * @author Philippe Bernery + */ +class QtUserProfile : public QObjectThreadSafe, public PUserProfile { + Q_OBJECT +public: + + /** + * @param parenWidget Parent widget. Used for Dialog created during events. + */ + QtUserProfile(CUserProfile & cUserProfile, QtQuteCom & qtQuteCom); + + virtual ~QtUserProfile(); + + void loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state); + + void networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state); + + void authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message); + + void incomingSubscribeEventHandler(PresenceHandler & sender, + const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType); + +Q_SIGNALS: + + //FIXME: here we should be very careful with pointer as + // we are changing the Thread and pointer may not be valid when used. + void loginStateChangedEventHandlerSignal(SipAccount * sender, int iState); + + void networkDiscoveryStateChangedEventHandlerSignal(SipAccount * sender, int iState); + + void authorizationRequestEventHandlerSignal(PresenceHandler * sender, + IMContact imContact, QString message); + + void incomingSubscribeEventHandlerSignal(PresenceHandler * sender, + const QString& imaccountId,int sid,const QString& from, const QString& evtType); + +private Q_SLOTS: + + void loginStateChangedEventHandlerSlot(SipAccount * sender, int iState); + + void networkDiscoveryStateChangedEventHandlerSlot(SipAccount * sender, int iState); + + void authorizationRequestEventHandlerSlot(PresenceHandler * sender, + IMContact imContact, QString message); + + void incomingSubscribeEventHandlerSlot(PresenceHandler * sender, + const QString& imaccountId,int sid,const QString& from, const QString& evtType); + +private: + + void initThreadSafe(); + + void updatePresentation(); + + void updatePresentationThreadSafe(); + + QtQuteCom & _qtQuteCom; + + CUserProfile & _cUserProfile; +}; + +#endif //OWQTUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,227 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtUserProfileHandler.h" + +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +#include +#include + +QtUserProfileHandler::QtUserProfileHandler(CUserProfileHandler & cUserProfileHandler, + QtQuteCom & qtQuteCom) + : QObject(&qtQuteCom), + _cUserProfileHandler(cUserProfileHandler), + _qtQuteCom(qtQuteCom),_qtLoginDialog(0) { + + //Connection for UserProfile change + SAFE_CONNECT_TYPE(this, SIGNAL(setCurrentUserProfileEventHandlerSignal()), + SLOT(setCurrentUserProfileEventHandlerSlot()), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(noCurrentUserProfileSetEventHandlerSignal()), + SLOT(noCurrentUserProfileSetEventHandlerSlot()), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(currentUserProfileWillDieEventHandlerSignal()), + SLOT(currentUserProfileWillDieEventHandlerSlot()), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(userProfileInitializedEventHandlerSignal()), + SLOT(userProfileInitializedEventHandlerSlot()), Qt::QueuedConnection); + qRegisterMetaType("SipAccount"); + qRegisterMetaType("QuteComAccount"); + qRegisterMetaType("EnumSipLoginState::SipLoginState"); + SAFE_CONNECT_TYPE(this, SIGNAL(sipAccountConnectionFailedEventHandlerSignal(SipAccount*, EnumSipLoginState::SipLoginState)), + SLOT(sipAccountConnectionFailedEventHandlerSlot(SipAccount*, EnumSipLoginState::SipLoginState)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(profileLoadedFromBackupsEventHandlerSignal(QString)), + SLOT(profileLoadedFromBackupsEventHandlerSlot(QString)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(profileCannotBeLoadedEventHandlerSignal(QString)), + SLOT(profileCannotBeLoadedEventHandlerSlot(QString)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(sipNetworkErrorEventHandlerSignal(SipAccount*)), + SLOT(sipNetworkErrorEventHandlerSlot(SipAccount*)), Qt::QueuedConnection); +} + +void QtUserProfileHandler::updatePresentation() { +} + +void QtUserProfileHandler::noCurrentUserProfileSetEventHandler() { + noCurrentUserProfileSetEventHandlerSignal(); +} + +void QtUserProfileHandler::currentUserProfileWillDieEventHandler() { + currentUserProfileWillDieEventHandlerSignal(); +} + +void QtUserProfileHandler::userProfileInitializedEventHandler() { + userProfileInitializedEventHandlerSignal(); +} + +void QtUserProfileHandler::sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState state) { + // We need to clone the SipAccount because we don't want to pass a + // reference of the original, and doing a simple copy would produce a + // SipAccount instance, even if the reference is in fact a QuteComAccount. + sipAccountConnectionFailedEventHandlerSignal(sipAccount.clone(), state); +} + +void QtUserProfileHandler::profileLoadedFromBackupsEventHandler(std::string profileName) { + profileLoadedFromBackupsEventHandlerSignal(QString::fromUtf8(profileName.c_str())); +} + +void QtUserProfileHandler::profileCannotBeLoadedEventHandler(std::string profileName) { + profileCannotBeLoadedEventHandlerSignal(QString::fromUtf8(profileName.c_str())); +} + +void QtUserProfileHandler::networkErrorEventHandler(const SipAccount & sipAccount) { + sipNetworkErrorEventHandlerSignal(sipAccount.clone()); +} + +void QtUserProfileHandler::noCurrentUserProfileSetEventHandlerSlot() { + showLoginWindow(); +} + +void QtUserProfileHandler::setCurrentUserProfileEventHandler() { + setCurrentUserProfileEventHandlerSignal(); +} + +void QtUserProfileHandler::setCurrentUserProfileEventHandlerSlot() { + _qtQuteCom.setCurrentUserProfileEventHandlerSlot(); +} + +void QtUserProfileHandler::currentUserProfileWillDieEventHandlerSlot() { + if(!_qtLoginDialog) + { + _qtQuteCom.currentUserProfileWillDieEventHandlerSlot(); + _cUserProfileHandler.currentUserProfileReleased(); + + // For some reason, if we call showLoginWindow directly, the CPU is at 100% + // on MacOS X. Delaying showLoginWindow with a timer solves it. + QTimer::singleShot(0, this, SLOT(showLoginWindow())); + } +} + +void QtUserProfileHandler::userProfileInitializedEventHandlerSlot() { + _qtQuteCom.userProfileInitializedEventHandlerSlot(); +} + +void QtUserProfileHandler::profileLoadedFromBackupsEventHandlerSlot(QString profileName) { + QMessageBox::warning(_qtQuteCom.getWidget(), tr("@product@"), + tr("A problem occured while loading your profile.\n" + "The last backuped profile has been loaded: \n" + "you may have lost last changes made"), + QMessageBox::Ok, QMessageBox::NoButton); +} + +void QtUserProfileHandler::profileCannotBeLoadedEventHandlerSlot(QString profileName) { + QMessageBox::warning(_qtQuteCom.getWidget(), tr("@product@"), + tr("Your profile could not be loaded.\n" + "Choose another profile or create a new one."), + QMessageBox::Ok, QMessageBox::NoButton); +} + +void QtUserProfileHandler::showLoginWindow() { + + _qtQuteCom.uninstallQtBrowserWidget(); + if(!_qtLoginDialog) + { + if(!_qtLoginDialog) + _qtLoginDialog = new QtLoginDialog(&_qtQuteCom, _cUserProfileHandler); + if (_qtLoginDialog->exec() == QDialog::Accepted) { + //_qtQuteCom.installQtBrowserWidget(); + _qtQuteCom.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); + _qtQuteCom.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); + } + delete _qtLoginDialog; + _qtLoginDialog = 0; + } +} + +void QtUserProfileHandler::showLoginWindowWithQuteComAccount(const QuteComAccount & qutecomAccount) { + + if(!_qtLoginDialog ) + { + _qtLoginDialog = new QtLoginDialog(&_qtQuteCom, _cUserProfileHandler); + + _qtLoginDialog->setValidAccount(qutecomAccount); + if (_qtLoginDialog->exec() == QDialog::Accepted) { + _qtQuteCom.installQtBrowserWidget(); + _qtQuteCom.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); + _qtQuteCom.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); + } + delete _qtLoginDialog; + _qtLoginDialog = 0; + } +} + +void QtUserProfileHandler::sipNetworkErrorEventHandlerSlot(SipAccount* sipAccount) { + /*_qtQuteCom.uninstallQtBrowserWidget(); + + QtLoginDialog dlg(&_qtQuteCom, _cUserProfileHandler); + dlg.setInvalidAccount(*sipAccount); + dlg.setErrorMessage(tr("Network error.")); + if (dlg.exec() == QDialog::Accepted) { + _qtQuteCom.installQtBrowserWidget(); + } + delete sipAccount;*/ +} + +void QtUserProfileHandler::sipAccountConnectionFailedEventHandlerSlot(SipAccount* sipAccount, EnumSipLoginState::SipLoginState state) { + LOG_DEBUG("error: %d", state); + // FIXME: Why do we do different things depending on the account type? + if (sipAccount->getType() == SipAccount::SipAccountTypeQuteCom) { + _qtQuteCom.uninstallQtBrowserWidget(); + } else { + _qtQuteCom.currentUserProfileWillDieEventHandlerSlot(); + _cUserProfileHandler.currentUserProfileReleased(); + } + + if(!_qtLoginDialog) + { + _qtLoginDialog =new QtLoginDialog(&_qtQuteCom, _cUserProfileHandler); + _qtLoginDialog->setInvalidAccount(*sipAccount); + QString message; + if (state == EnumSipLoginState::SipLoginStatePasswordError) { + if (sipAccount->getType() == SipAccount::SipAccountTypeQuteCom) { + message = tr("Wrong email/password entered"); + } else { + message = tr("Wrong login/password entered"); + } + } else if (state == EnumSipLoginState::SipLoginStateNetworkError) { + message = tr("Connection error"); + } else { + message = tr("Unexpected error (code: %1").arg(int(state)); + } + _qtLoginDialog->setErrorMessage(message); + + delete sipAccount; + + if (_qtLoginDialog->exec() == QDialog::Accepted) { + _qtQuteCom.installQtBrowserWidget(); + _qtQuteCom.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); + _qtQuteCom.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); + } + delete _qtLoginDialog; + _qtLoginDialog = 0; + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profile/QtUserProfileHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,164 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTUSERPROFILEHANDLER_H +#define OWQTUSERPROFILEHANDLER_H + +#include + +#include + +#include + +class CUserProfileHandler; +class QtLoginDialog; +class QtQuteCom; + +/** + * Qt implementation of UserProfileHandler Presentation layer. + * + * @author Philippe Bernery + */ +class QtUserProfileHandler : public QObject, public PUserProfileHandler { + Q_OBJECT +public: + + QtUserProfileHandler(CUserProfileHandler & cUserProfileHandler, QtQuteCom & qtQuteCom); + + virtual void setCurrentUserProfileEventHandler(); + + virtual void noCurrentUserProfileSetEventHandler(); + + virtual void currentUserProfileWillDieEventHandler(); + + virtual void userProfileInitializedEventHandler(); + + virtual void sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState); + + virtual void profileLoadedFromBackupsEventHandler(std::string profileName); + + virtual void profileCannotBeLoadedEventHandler(std::string profileName); + + virtual void networkErrorEventHandler(const SipAccount & sipAccount); + + virtual void updatePresentation(); + +Q_SIGNALS: + + /** + * @see noCurrentUserProfileSetEventHandler + */ + void noCurrentUserProfileSetEventHandlerSignal(); + + /** + * @see currentUserProfileWillDieEventHandler + */ + void currentUserProfileWillDieEventHandlerSignal(); + + /** + * @see userProfileInitializedEventHandler + */ + void userProfileInitializedEventHandlerSignal(); + + /** + * @see sipAccountConnectionFailedEventHandler + */ + void sipAccountConnectionFailedEventHandlerSignal(SipAccount* sipAccount, EnumSipLoginState::SipLoginState); + + /** + * @see profileLoadedFromBackupsEventHandler + */ + void profileLoadedFromBackupsEventHandlerSignal(QString profileName); + + /** + * @see profileCannotBeLoadedEventHandler + */ + void profileCannotBeLoadedEventHandlerSignal(QString profileName); + + /** + * @see networkErrorEventHandler + */ + void sipNetworkErrorEventHandlerSignal(SipAccount* sipAccount); + + void setCurrentUserProfileEventHandlerSignal(); + +public Q_SLOTS: + + /** + * Show the Profile chooser window. + */ + void showLoginWindow(); + + /** + * Show the Profile chooser window with the given QuteComAccount. + * + */ + void showLoginWindowWithQuteComAccount(const QuteComAccount & qutecomAccount); + +private Q_SLOTS: + + /** + * @see noCurrentUserProfileSetEventHandler + */ + void noCurrentUserProfileSetEventHandlerSlot(); + + /** + * @see currentUserProfileWillDieEventHandler + */ + void currentUserProfileWillDieEventHandlerSlot(); + + /** + * @see userProfileInitializedEventHandler + */ + void userProfileInitializedEventHandlerSlot(); + + /** + * @see sipAccountConnectionFailedEventHandler + */ + void sipAccountConnectionFailedEventHandlerSlot(SipAccount* sipAccount, EnumSipLoginState::SipLoginState); + + /** + * @see profileLoadedFromBackupsEventHandler + */ + void profileLoadedFromBackupsEventHandlerSlot(QString profileName); + + /** + * @see profileCannotBeLoadedEventHandler + */ + void profileCannotBeLoadedEventHandlerSlot(QString profileName); + + /** + * @see networkErrorEventHandler + */ + void sipNetworkErrorEventHandlerSlot(SipAccount* sipAccount); + + void setCurrentUserProfileEventHandlerSlot(); + +private: + + /** Link to control layer. */ + CUserProfileHandler & _cUserProfileHandler; + + /** Link to QtQuteCom to create needed objects. */ + QtQuteCom & _qtQuteCom; + + QtLoginDialog * _qtLoginDialog; +}; + +#endif //OWQTUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/CreditWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/CreditWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/CreditWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/CreditWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,100 @@ + + + + + CreditWidget + + + + 0 + 0 + 243 + 78 + + + + + 0 + + + 0 + + + + + Call Forward Method + + + Not Available + + + + + + + Click here to change your call forward settings + + + Call forward mode: + + + :/pics/profilebar/credit/call_forward.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + 13 + + + Click here to buy @company@'s credits + + + Purchase call out credits + + + :/pics/profilebar/credit/qutecoms.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + Call Voice Mail + + + :/pics/profilebar/event/voicemessage_new.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + + callForwardButton + buyCreditsButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/EventWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/EventWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/EventWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/EventWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,118 @@ + + + + + EventWidget + + + + 0 + 0 + 291 + 27 + + + + + 0 + + + 0 + + + + + 0 + + + 6 + + + + + 0 + + + + + + + Click here to call your voice mail + + + New Voice Mail: + + + :/pics/profilebar/event/voicemessage_new.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + + + 0 + + + 6 + + + + + Click here to see missed call(s) + + + Missed Call(s): + + + :/pics/profilebar/event/call_missed.png + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + 0 + + + + + + + + + Qt::Horizontal + + + + 47 + 24 + + + + + + + + + missedCallButton + voiceMailButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/IMProfileWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/IMProfileWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/IMProfileWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/IMProfileWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,135 @@ + + + + + IMProfileWidget + + + + 0 + 0 + 311 + 78 + + + + + 0 + + + 0 + + + + + 0 + + + 0 + + + + + + 13 + 0 + 0 + 0 + + + + QFrame::NoFrame + + + QFrame::Raised + + + + + + + Add an instant messaging account (MSN, AIM, GoogleTalk...) + + + Add an IM account + + + :/pics/add.png + + + + 22 + 22 + + + + Qt::ToolButtonTextBesideIcon + + + true + + + + + + + + + Enter your nickname here + + + Enter your nickname here + + + + + + + <html><head><meta name="qrichtext" content="1" /><style type="text/css"> +p, li { white-space: pre-wrap; } +</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> +<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> + + + :/pics/avatar_background.png + + + + 70 + 70 + + + + true + + + + + + + + + ToolTipLineEdit + QLineEdit +
ToolTipLineEditProxy.h
+ 0 + +
+ + ScrollFrame + QFrame +
qtutil/ScrollFrame.h
+ 0 + +
+
+ + avatarButton + aliasLineEdit + addIMAccountButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,114 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtCreditWidget.h" + +#include "ui_CreditWidget.h" + +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include + + + +#include +#include + +#include + +#include + +QtCreditWidget::QtCreditWidget(QWidget * parent) + : QObject(parent) + , _cQuteCom(0) + , _userProfile(0) { + + _creditWidget = new QWidget(parent); + + _ui = new Ui::CreditWidget(); + _ui->setupUi(_creditWidget); + + SAFE_CONNECT(_ui->callForwardButton, SIGNAL(clicked()), SLOT(callForwardModeClicked())); + SAFE_CONNECT(_ui->buyCreditsButton, SIGNAL(clicked()), SLOT(buyCreditsClicked())); + + //voiceMailButton + SAFE_CONNECT(_ui->voiceMailButton, SIGNAL(clicked()), SLOT(voiceMailClicked())); + + LANGUAGE_CHANGE(_creditWidget); +} + +QtCreditWidget::~QtCreditWidget() { + OWSAFE_DELETE(_ui); +} + +void QtCreditWidget::init(CQuteCom* cQuteCom, UserProfile* userProfile) { + _cQuteCom = cQuteCom; + _userProfile = userProfile; + bool isQuteCom = _userProfile->hasQuteComAccount(); + _ui->callForwardLabel->setVisible(isQuteCom); + _ui->callForwardButton->setVisible(isQuteCom); + _ui->buyCreditsButton->setVisible(isQuteCom); +} + +QWidget * QtCreditWidget::getWidget() const { + return _creditWidget; +} + +void QtCreditWidget::updatePresentation() { + if (!_callForwardMode.isEmpty()) { + _ui->callForwardLabel->setText(_callForwardMode); + } +} + +void QtCreditWidget::setCallForwardMode(const QString & callForwardMode) { + _callForwardMode = callForwardMode; + updatePresentation(); +} + +void QtCreditWidget::buyCreditsClicked() { + Q_ASSERT(_userProfile->hasQuteComAccount()); + WsUrl::showQuteComBuyQuteComs(); +} + +void QtCreditWidget::callForwardModeClicked() { + Q_ASSERT(_userProfile->hasQuteComAccount()); + QtQuteComConfigDialog* dialog = QtQuteComConfigDialog::showInstance(*_cQuteCom); + dialog->showCallForwardPage(); +} + +void QtCreditWidget::languageChanged() { + _ui->retranslateUi(_creditWidget); + updatePresentation(); +} + +void QtCreditWidget::voiceMailClicked() { + IPhoneLine * phoneLine = _userProfile->getActivePhoneLine(); + if (phoneLine) { + phoneLine->makeCall(_userProfile->getSipAccount()->getVoicemailNumber()); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtCreditWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCREDITWIDGET_H +#define OWQTCREDITWIDGET_H + +#include +#include + +class CQuteCom; +class UserProfile; + +class QWidget; +namespace Ui { class CreditWidget; } + +/** + * Credit widget of the profile bar + * + * Shows the QuteCom's credit available for the user + call forward status. + * + * @author Mathieu Stute + */ +class QtCreditWidget : public QObject { + Q_OBJECT +public: + + QtCreditWidget(QWidget * parent); + + void init(CQuteCom*, UserProfile *); + + virtual ~QtCreditWidget(); + + void setCallForwardMode(const QString & callForwardMode); + + QWidget * getWidget() const; + + void updatePresentation(); + +private Q_SLOTS: + + void buyCreditsClicked(); + + void callForwardModeClicked(); + + void voiceMailClicked(); + + void languageChanged(); + +private: + + bool isQuteComConnexion(); + + CQuteCom * _cQuteCom; + + UserProfile * _userProfile; + + QWidget * _creditWidget; + + QString _callForwardMode; + + Ui::CreditWidget * _ui; +}; + +#endif //OWQTCREDITWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,126 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEventWidget.h" + +#include "ui_EventWidget.h" + +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +#include + +static const char * VOICE_MAIL_CALL = "123"; + +QtEventWidget::QtEventWidget(CQuteCom & cQuteCom, CUserProfile & cUserProfile, QWidget * parent) + : QObjectThreadSafe(NULL), + _cUserProfile(cUserProfile), + _cQuteCom(cQuteCom) { + + _voiceMailCount = 0; + _missedCallCount = 0; + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtEventWidget::initThreadSafe, this)); + postEvent(event); +} + +QtEventWidget::~QtEventWidget() { + OWSAFE_DELETE(_ui); +} + +void QtEventWidget::initThreadSafe() { + _eventWidget = new QWidget(); + + _ui = new Ui::EventWidget(); + _ui->setupUi(_eventWidget); + + //missedCallButton + SAFE_CONNECT(_ui->missedCallButton, SIGNAL(clicked()), SLOT(missedCallClicked())); + + //voiceMailButton + SAFE_CONNECT(_ui->voiceMailButton, SIGNAL(clicked()), SLOT(voiceMailClicked())); + + LANGUAGE_CHANGE(_eventWidget); + + updatePresentation(); +} + +QWidget * QtEventWidget::getWidget() const { + return _eventWidget; +} + +void QtEventWidget::updatePresentation() { + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtEventWidget::updatePresentationThreadSafe, this)); + postEvent(event); +} + +void QtEventWidget::updatePresentationThreadSafe() { + _ui->voiceMailCountLabel->setText(QString("%1").arg(_voiceMailCount)); + _ui->missedCallCountLabel->setText(QString("%1").arg(_missedCallCount)); +} + +void QtEventWidget::setVoiceMail(int count) { + _voiceMailCount = count; + updatePresentation(); +} + +void QtEventWidget::setMissedCall(int count) { + _missedCallCount = count; + updatePresentation(); +} + +void QtEventWidget::voiceMailClicked() { + + QMessageBox mb(tr("@product@ - Voice Mail"), + tr("Do you want to call your voice mail?"), + QMessageBox::Question, + QMessageBox::Yes | QMessageBox::Default, + QMessageBox::No | QMessageBox::Escape, + QMessageBox::NoButton, _eventWidget); + + if (mb.exec() == QMessageBox::Yes) { + IPhoneLine * phoneLine = _cUserProfile.getUserProfile().getActivePhoneLine(); + if (phoneLine) { + phoneLine->makeCall(VOICE_MAIL_CALL); + } + } +} + +void QtEventWidget::missedCallClicked() { + //Shows the history tab + PQuteCom * pQuteCom = (PQuteCom *) _cQuteCom.getPresentation(); + pQuteCom->showHistory(); +} + +void QtEventWidget::languageChanged() { + _ui->retranslateUi(_eventWidget); + updatePresentationThreadSafe(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtEventWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,81 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTEVENTWIDGET_H +#define OWQTEVENTWIDGET_H + +#include + +class CUserProfile; +class CQuteCom; + +class QWidget; +namespace Ui { class EventWidget; } + +/** + * Event widget of the profile bar. + * + * Shows missed calls and voice mail messages. + * + * @author Mathieu Stute + */ +class QtEventWidget : public QObjectThreadSafe { + Q_OBJECT +public: + + QtEventWidget(CQuteCom & cQuteCom, CUserProfile & cUserProfile, QWidget * parent); + + ~QtEventWidget(); + + void setVoiceMail(int count); + + void setMissedCall(int count); + + void updatePresentation(); + + QWidget * getWidget() const; + +private Q_SLOTS: + + void voiceMailClicked(); + + void missedCallClicked(); + + void languageChanged(); + +private: + + void initThreadSafe(); + + void updatePresentationThreadSafe(); + + CUserProfile & _cUserProfile; + + CQuteCom & _cQuteCom; + + QWidget * _eventWidget; + + Ui::EventWidget * _ui; + + int _voiceMailCount; + + int _missedCallCount; +}; + +#endif //OWQTEVENTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,110 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountPresenceMenuManager.h" + +#include + +#include +#include + +#include + +#include + +#include +#include +#include +#include + +QtIMAccountPresenceMenuManager::QtIMAccountPresenceMenuManager(QObject* parent, CUserProfile& cUserProfile, std::string imAccountId) + : QObject(parent) + , _cUserProfile(cUserProfile) + , _imAccountId(imAccountId) +{ + _disconnectAction = new QAction(this); + _disconnectAction->setText(tr("Disconnect")); + SAFE_CONNECT(_disconnectAction, SIGNAL(triggered(bool)), SLOT(disconnect()) ); +} + +void QtIMAccountPresenceMenuManager::addPresenceActions(QMenu* menu) { + addPresenceAction( + menu, EnumPresenceState::PresenceStateOnline, + QPixmap(":/pics/status/online.png"), tr("Online")); + + addPresenceAction( + menu, EnumPresenceState::PresenceStateAway, + QPixmap(":/pics/status/away.png"), tr("Away")); + + addPresenceAction( + menu, EnumPresenceState::PresenceStateDoNotDisturb, + QPixmap(":/pics/status/donotdisturb.png"), tr("Do Not Disturb")); + + addPresenceAction( + menu, EnumPresenceState::PresenceStateInvisible, + QPixmap(":/pics/status/invisible.png"), tr("Invisible")); + + menu->addAction(_disconnectAction); + + // We don't want the user to delete his QuteCom or SIP account, so add "delete + // account entry" for all protocols, except QuteCom or SIP + std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); + EnumIMProtocol::IMProtocol protocol = imAccount->getProtocol(); + if (protocol != EnumIMProtocol::IMProtocolQuteCom && protocol != EnumIMProtocol::IMProtocolSIP) { + menu->addSeparator(); + menu->addAction(tr("Delete Account"), this, SLOT(deleteAccount()) ); + } + + SAFE_CONNECT(menu, SIGNAL(aboutToShow()), SLOT(updateActions()) ); +} + +void QtIMAccountPresenceMenuManager::updateActions() { + std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); + _disconnectAction->setEnabled(imAccount->isConnected()); +} + +void QtIMAccountPresenceMenuManager::addPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text) { + QAction* action = menu->addAction(pix, text, this, SLOT(slotPresenceActionTriggered()) ); + _actionToState[action] = state; +} + +void QtIMAccountPresenceMenuManager::slotPresenceActionTriggered() { + EnumPresenceState::PresenceState state = _actionToState[sender()]; + _cUserProfile.getUserProfile().setPresenceState(state, _imAccountId); +} + +void QtIMAccountPresenceMenuManager::disconnect() { + _cUserProfile.getUserProfile().getConnectHandler().disconnect(_imAccountId); +} + +void QtIMAccountPresenceMenuManager::deleteAccount() { + std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); + QString login = QString::fromUtf8(imAccount->getLogin().c_str()); + QString message = + tr("Are sure you want to delete the account %1?") + .arg(login); + + int result = QMessageBox::question(QApplication::activeWindow(), + tr("@product@"), message, + tr("&Delete"), tr("Cancel")); + + if (result == 0) { + _cUserProfile.getUserProfile().removeIMAccount(*imAccount); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTIMACCOUNTPRESENCEMENUMANAGER_H +#define QTIMACCOUNTPRESENCEMENUMANAGER_H + +#include +#include + +#include +#include + +class CUserProfile; +class QAction; +class QIcon; +class QMenu; +class QPixmap; +class QString; + + +/** + * This class manages the menu actions for an IM account + * + * @author Aurelien Gateau + */ +class QtIMAccountPresenceMenuManager : public QObject { + Q_OBJECT +public: + QtIMAccountPresenceMenuManager(QObject* parent, CUserProfile&, std::string imAccountId); + + /** + * Fills menu with actions to modify the IM account presence + */ + void addPresenceActions(QMenu* menu); + +private Q_SLOTS: + void slotPresenceActionTriggered(); + void disconnect(); + void deleteAccount(); + void updateActions(); + +private: + void addPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text); + + QMap _actionToState; + CUserProfile& _cUserProfile; + std::string _imAccountId; + QAction* _disconnectAction; +}; + +#endif // QTIMACCOUNTPRESENCEMENUMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,485 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMProfileWidget.h" + +#include "ui_IMProfileWidget.h" + +#include "QtIMAccountPresenceMenuManager.h" + +#include +#include +#include +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include + +#include +#include +#include + +#include +#include +#include + +#include "imaccount/QtIMAccountSettings.h" + +const int ACCOUNT_ICON_WIDTH = 28; +const int ACCOUNT_ICON_HEIGHT = 22; + +static QPixmap createAccountButtonPixmap(EnumIMProtocol::IMProtocol imProtocol, QtIMAccountMonitor::ConnectionState connectionState, EnumPresenceState::PresenceState presenceState) { + QString name = ":pics/protocols/"; + + // Append protocol name + switch (imProtocol) { + case EnumIMProtocol::IMProtocolMSN: + name += "msn"; + break; + + case EnumIMProtocol::IMProtocolYahoo: + name += "yahoo"; + break; + + case EnumIMProtocol::IMProtocolAIM: + name += "aim"; + break; + + case EnumIMProtocol::IMProtocolICQ: + name += "icq"; + break; + + case EnumIMProtocol::IMProtocolJabber: + name += "jabber"; + break; + + case EnumIMProtocol::IMProtocolGoogleTalk: + name += "google-talk"; + break; + + case EnumIMProtocol::IMProtocolQuteCom: + name += "qutecom"; + break; + + case EnumIMProtocol::IMProtocolFaceBook: + name += "facebook"; + break; + + case EnumIMProtocol::IMProtocolMySpace: + name += "myspace"; + break; + + case EnumIMProtocol::IMProtocolSkype: + name += "skype"; + break; + + case EnumIMProtocol::IMProtocolTwitter: + name += "twitter"; + break; + + case EnumIMProtocol::IMProtocolSIPSIMPLE: + case EnumIMProtocol::IMProtocolSIP: + name += "sip"; + break; + + case EnumIMProtocol::IMProtocolUnknown: + case EnumIMProtocol::IMProtocolAll: + LOG_FATAL("Protocol should not be " + EnumIMProtocol::toString(imProtocol)); + } + + // Special cases: Disconnected or failure + if (connectionState == QtIMAccountMonitor::StateDisconnected + || connectionState == QtIMAccountMonitor::StateFailure) { + name += "_off"; + } + + // Load pix + name += ".png"; + QPixmap protocolPix; + if (!protocolPix.load(name)) { + LOG_WARN(QString("Could not load icon " + name).toUtf8()); + return QPixmap(); + } + + // Load overlay + QPixmap overlay; + // Append connection state + switch (connectionState) { + case QtIMAccountMonitor::StateConnected: + { + QString presenceString = QString::fromUtf8(EnumPresenceState::toString(presenceState).c_str()); + overlay.load( + QString(":pics/protocols/overlay_presence_%1.png").arg(presenceString) + ); + } + break; + + case QtIMAccountMonitor::StateConnecting: + overlay.load(":pics/protocols/overlay_progress.png"); + break; + + case QtIMAccountMonitor::StateFailure: + overlay.load(":pics/protocols/overlay_error.png"); + break; + + case QtIMAccountMonitor::StateDisconnected: + break; + } + + // Paint overlay + QPixmap pix(ACCOUNT_ICON_WIDTH, ACCOUNT_ICON_HEIGHT); + pix.fill(QColor(0,0,0,0)); + QPainter painter(&pix); + painter.drawPixmap(pix.width() - protocolPix.width(), 0, protocolPix); + if (!overlay.isNull()) { + painter.drawPixmap(0, pix.height() - overlay.height(), overlay); + } + painter.end(); + + return pix; +} + + +QtIMProfileWidget::QtIMProfileWidget(QWidget * parent) + : QObject(parent) + , _cUserProfile(0) + , _qtImAccountMonitor(0) { + + _imProfileWidget = new QWidget(parent); + + _ui = new Ui::IMProfileWidget(); + _ui->setupUi(_imProfileWidget); + + // Init addIMAccountButton + // FIXME: This is copied from QtIMAccountManager ctor and should be + // factorized +#ifdef MULTIIMWRAPPER + QMenu * addIMAccountMenu = new QMenu(_ui->addIMAccountButton); + SAFE_CONNECT(addIMAccountMenu, SIGNAL(triggered(QAction *)), SLOT(addIMAccount(QAction *))); + + addIMAccountMenu->addAction(QIcon(":pics/protocols/msn.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMSN)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/aim.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolAIM)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/icq.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolICQ)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/yahoo.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolYahoo)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/jabber.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolJabber)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/google-talk.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolGoogleTalk)); + + addIMAccountMenu->addAction(QIcon(":pics/protocols/facebook.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolFaceBook)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/myspace.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMySpace)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/skype.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolSkype)); + addIMAccountMenu->addAction(QIcon(":pics/protocols/twitter.png"), + QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolTwitter)); + + _ui->addIMAccountButton->setPopupMode(QToolButton::InstantPopup); + _ui->addIMAccountButton->setMenu(addIMAccountMenu); +#else + _ui->addIMAccountButton->hide(); +#endif + //// + + LANGUAGE_CHANGE(_imProfileWidget); + + //Widget connections + SAFE_CONNECT(_ui->aliasLineEdit, SIGNAL(returnPressed()), SLOT(aliasTextChanged())); + SAFE_CONNECT(_ui->avatarButton, SIGNAL(clicked()), SLOT(changeAvatarClicked())); + + //Init _accountFrame + _accountFrame = new QFrame(); + _accountFrameLayout = new QHBoxLayout(_accountFrame); + _accountFrameLayout->setMargin(0); + _accountFrameLayout->setSpacing(0); + + // Change size constraint to make sure the frame get resized when we add + // buttons to it + _accountFrameLayout->setSizeConstraint(QLayout::SetFixedSize); + _ui->accountScrollFrame->setChild(_accountFrame); + _ui->accountScrollFrame->setScrollStep(ACCOUNT_ICON_WIDTH / 2); + _imProfileWidget->setEnabled(false); +} + +QtIMProfileWidget::~QtIMProfileWidget() { + OWSAFE_DELETE(_ui); +} + +void QtIMProfileWidget::init(CUserProfile* cUserProfile, QtIMAccountMonitor* qtImAccountMonitor) { + _cUserProfile = cUserProfile; + _qtImAccountMonitor = qtImAccountMonitor; + + //UserProfile changed event connection + _cUserProfile->getUserProfile().profileChangedEvent += + boost::bind(&QtIMProfileWidget::profileChangedEventHandler, this); + + // IMAccountMonitor connections + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountAdded(QString)), + SLOT(addAccountButton(QString)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountRemoved(QString)), + SLOT(removeAccountButton(QString)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountUpdated(QString)), + SLOT(updateAccountButton(QString)), Qt::QueuedConnection); + + _imProfileWidget->setEnabled(true); + updateWidgets(); +} + +QWidget * QtIMProfileWidget::getWidget() const { + return _imProfileWidget; +} + +void QtIMProfileWidget::addAccountButton(QString imAccountId) { + // Check the button does not already exists + AccountIdToButton::const_iterator it = _accountIdToButton.find(imAccountId); + if (it != _accountIdToButton.end()) { + LOG_WARN("there is already a button for account " + imAccountId.toUtf8()); + return; + } + + // Look for the account + IMAccount * imAccount = + _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(std::string(imAccountId.toUtf8())); + + if (!imAccount) { + LOG_WARN("Account does not exist"); + return; + } + + // Recreate all buttons. This is a bit brutal, but adding an account is not + // done very often, so it's not that bad. + // If it becomes necessary to just add the button, the + // addAccountButton(const IMAccount*) should be modified to insert the + // button at the correct position + createAccountButtons(); +} + +void QtIMProfileWidget::addAccountButton(const IMAccount* account) { + // Create button + + QString id = QString::fromUtf8(account->getUUID().c_str()); + AccountIdToButton::const_iterator it = _accountIdToButton.find(id); + if (it != _accountIdToButton.end()) { + LOG_WARN("there is already a button for account " + id.toUtf8()); + return; + } + + QToolButton* button = new QToolButton(_accountFrame); + button->setAutoRaise(true); + button->setIconSize(QSize(ACCOUNT_ICON_WIDTH, ACCOUNT_ICON_HEIGHT)); + button->setPopupMode(QToolButton::InstantPopup); + + // Add menu + QMenu* menu = new QMenu(button); + QAction* action = menu->addAction(QString::fromUtf8(account->getLogin().c_str())); + action->setEnabled(false); + menu->addAction(action); + menu->addSeparator(); + + QtIMAccountPresenceMenuManager* manager = new QtIMAccountPresenceMenuManager(menu, *_cUserProfile, account->getUUID()); + manager->addPresenceActions(menu); + button->setMenu(menu); + + // Integrate button + _accountFrameLayout->addWidget(button); + + _accountIdToButton[id] = button; + updateAccountButton(id); +} + +void QtIMProfileWidget::removeAccountButton(QString imAccountId) { + AccountIdToButton::iterator it = _accountIdToButton.find(imAccountId); + if (it == _accountIdToButton.end()) { + LOG_WARN("No button exists for account with id " + imAccountId.toUtf8()); + return; + } + OWSAFE_DELETE(it->second); + _accountIdToButton.erase(it); + updateAddIMAccountButton(); +} + +void QtIMProfileWidget::updateAccountButton(QString imAccountId) { + // Look for the corresponding button + AccountIdToButton::const_iterator it = _accountIdToButton.find(imAccountId); + if (it == _accountIdToButton.end()) { + // Button does not exist + LOG_WARN("There is no button for account " + imAccountId.toUtf8()); + return; + } + QToolButton* button = it->second; + + // Look for the account + IMAccount * imAccount = + _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(std::string(imAccountId.toUtf8())); + + if (!imAccount) { + // Account does not exist, this probably means the account has been + // removed + LOG_DEBUG("Account " + imAccountId.toUtf8() + " does not exist"); + return; + } + + // Get account info + EnumIMProtocol::IMProtocol imProtocol = imAccount->getProtocol(); + QString protocolString = QString::fromUtf8(EnumIMProtocol::toString(imProtocol).c_str()); + QString login = QString::fromUtf8(imAccount->getLogin().c_str()); + EnumPresenceState::PresenceState presenceState = imAccount->getPresenceState(); + + OWSAFE_DELETE(imAccount); + + QtIMAccountMonitor::IMAccountInfoAutoPtr info = _qtImAccountMonitor->getIMAccountInfo(imAccountId); + QtIMAccountMonitor::ConnectionState connectionState = info->connectionState(); + QString message = info->message(); + // Init button + QPixmap protocolPix = createAccountButtonPixmap(imProtocol, connectionState, presenceState); + button->setIcon(protocolPix); + + QString toolTip = tr("%1 (%2)\n%3", "%1 is login, %2 is protocol, %3 is status") + .arg(login) + .arg(protocolString) + .arg(message); + button->setToolTip(toolTip); +} + +void QtIMProfileWidget::changeAvatarClicked() { + QtProfileDetails qtProfileDetails(*_cUserProfile, _cUserProfile->getUserProfile(), _imProfileWidget, tr("Edit My Profile")); + //TODO UserProfile must be updated if QtProfileDetails was accepted + qtProfileDetails.changeUserProfileAvatar(); + updateAvatar(); +} + +void QtIMProfileWidget::updateWidgets() { + if (!_cUserProfile) { + return; + } + + if (!_cUserProfile->getUserProfile().getAlias().empty()) { + _ui->aliasLineEdit->setText(QString::fromUtf8(_cUserProfile->getUserProfile().getAlias().c_str())); + } + + //aliasTextChanged(); + + updateAvatar(); + + createAccountButtons(); +} + +void QtIMProfileWidget::createAccountButtons() { + // Remove existing buttons + resetAccountButton(); + + // Sort accounts, using the same order as the meta presence + IMAccountList imAccountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); + QtIMAccountHelper::QtIMAccountPtrVector imAccountPtrVector; + QtIMAccountHelper::copyListToPtrVector(imAccountList, &imAccountPtrVector); + std::sort(imAccountPtrVector.begin(), imAccountPtrVector.end(), QtIMAccountHelper::compareIMAccountPtrs); + + // Updates IMAccounts icons status + QtIMAccountHelper::QtIMAccountPtrVector::const_iterator + it = imAccountPtrVector.begin(), + end = imAccountPtrVector.end(); + + for (; it!=end; ++it) { + addAccountButton(*it); + } + + updateAddIMAccountButton(); +} + +// FIXME: This is copied from QtIMAccountManager ctor and should be +// factorized +void QtIMProfileWidget::addIMAccount(QAction * action) { + QString protocolName = action->text(); + QtEnumIMProtocol::IMProtocol imProtocol = QtEnumIMProtocol::toIMProtocol(protocolName); + QtIMAccountSettings(_cUserProfile->getUserProfile(), imProtocol, _imProfileWidget); +} + +void QtIMProfileWidget::updateAvatar() { + std::string backgroundPixmapFilename = ":/pics/avatar_background.png"; + std::string foregroundPixmapData = _cUserProfile->getUserProfile().getIcon().getData(); + + _ui->avatarButton->setIcon(PixmapMerging::merge(foregroundPixmapData, backgroundPixmapFilename)); +} + +void QtIMProfileWidget::updateAddIMAccountButton() { + IMAccountList imAccountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); + if (imAccountList.size() >= 2) { + _ui->addIMAccountButton->setToolButtonStyle(Qt::ToolButtonIconOnly); + } else { + _ui->addIMAccountButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); + } + +} + +void QtIMProfileWidget::showImAccountManager() { + QtIMAccountManager imAccountManager(_cUserProfile->getUserProfile(), + true, _imProfileWidget); +} + +void QtIMProfileWidget::aliasTextChanged() { + //Update alias text + std::string alias(_ui->aliasLineEdit->text().toUtf8().constData()); + _cUserProfile->getUserProfile().setAlias(alias, NULL); + + _ui->aliasLineEdit->update(); +} + +void QtIMProfileWidget::profileChangedEventHandler() { + typedef ThreadEvent0 MyThreadEvent; + MyThreadEvent * event = new MyThreadEvent(boost::bind(&QtIMProfileWidget::updateWidgets, this)); + PFactory::postEvent(event); +} + +void QtIMProfileWidget::languageChanged() { + _ui->retranslateUi(_imProfileWidget); + updateWidgets(); + _ui->aliasLineEdit->setLayoutDirection(QApplication::layoutDirection()); +} + +void QtIMProfileWidget::resetAccountButton() +{ + AccountIdToButton::iterator + buttonIt = _accountIdToButton.begin(), + buttonEnd = _accountIdToButton.end(); + for (; buttonIt!=buttonEnd; ++buttonIt) { + delete buttonIt->second; + } + _accountIdToButton.clear(); +} + +void QtIMProfileWidget::reset() +{ + resetAccountButton(); + + _cUserProfile = 0; + _qtImAccountMonitor = 0; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtIMProfileWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,122 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTIMPROFILEWIDGET_H +#define OWQTIMPROFILEWIDGET_H + +#include +#include + +#include + +#include + +class CQuteCom; +class CUserProfile; +class QtIMAccountMonitor; + +class QAction; +class QFrame; +class QHBoxLayout; +class QToolButton; +class QWidget; + +namespace Ui { class IMProfileWidget; } + +/** + * Shows a summary of the user profile + its IM accounts. + * + * Inside the profile bar at the top of the main window. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class QtIMProfileWidget : public QObject, public Trackable { + Q_OBJECT +public: + QtIMProfileWidget(QWidget * parent); + + ~QtIMProfileWidget(); + + QWidget * getWidget() const; + + void init(CUserProfile*, QtIMAccountMonitor*); + + void resetAccountButton(); + +public Q_SLOTS: + void addAccountButton(QString imAccountId); + + void removeAccountButton(QString imAccountId); + + void updateAccountButton(QString imAccountId); + + void reset(); + + +private Q_SLOTS: + + void changeAvatarClicked(); + + void aliasTextChanged(); + + void languageChanged(); + + void addIMAccount(QAction * action); + +private: + void addAccountButton(const IMAccount* imAccount); + + /** + * @see UserProfile::profileChangedEvent + */ + void profileChangedEventHandler(); + + void updateAvatar(); + + void createAccountButtons(); + + /** + * Internal code factorization. + */ + void showImAccountManager(); + + void updateWidgets(); + + /** + * Show/hide text on the IM account button depending on the number of IM + * accounts + */ + void updateAddIMAccountButton(); + + Ui::IMProfileWidget * _ui; + QFrame * _accountFrame; + QHBoxLayout * _accountFrameLayout; + + typedef std::map AccountIdToButton; + AccountIdToButton _accountIdToButton; + + QWidget * _imProfileWidget; + + CUserProfile * _cUserProfile; + + QtIMAccountMonitor* _qtImAccountMonitor; +}; + +#endif //OWQTIMPROFILEWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,514 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtProfileBar.h" + +#include "QtIMProfileWidget.h" +#include "QtEventWidget.h" +#include "QtCreditWidget.h" + +#include +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include + +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include + +static const char* STATUS_LABEL_OFF_TEMPLATE = ":/pics/profilebar/bar_start_status_%1.png"; +static const char* STATUS_LABEL_ON_TEMPLATE = ":/pics/profilebar/bar_on_start_status_%1.png"; + +// These constants are used to find the position of the state "ball" in the +// profilebar pixmap +static const int STATUS_LABEL_CENTERX = 26; +static const int STATUS_LABEL_CENTERY = 32; +static const int STATUS_LABEL_RADIUS = 10; + +// Defines position of the expand indicator in the picture. used in +// createPixmapWithExpandIndicator +static const int EXPAND_INDICATOR_OFFSET = 4; + + +/** + * This helper functions blit an expand indicator (or contract if @expand is + * false) over the pixmap whose name is @name + */ +static QPixmap createPixmapWithExpandIndicator(const QString& name, bool expand) { + QPixmap bg(":/pics/profilebar/" + name); + + QString indicatorName; + if (expand) { + indicatorName = "indicator_expand.png"; + } else { + indicatorName = "indicator_contract.png"; + } + QPixmap indicator(":/pics/profilebar/" + indicatorName); + + QPainter painter(&bg); + + int top = (bg.height() - indicator.height()) / 2; + painter.drawPixmap(EXPAND_INDICATOR_OFFSET, top, indicator); + + return bg; +} + + +QtProfileBar::QtProfileBar(QWidget * parent) + : QFrame(parent), + _cUserProfile(0), + _cQuteCom(0), + _qtImAccountMonitor(0) { + + setLayoutDirection(Qt::LeftToRight); + setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); + QVBoxLayout* mainLayout = new QVBoxLayout(this); + mainLayout->setMargin(0); + mainLayout->setSpacing(0); + + //The layout containing our three "labels" (status, nickname and credit) + QHBoxLayout* labelLayout = new QHBoxLayout(); + labelLayout->setMargin(0); + labelLayout->setSpacing(0); + + mainLayout->addLayout(labelLayout); + + //The status widget + _statusLabel = new QuteComStyleLabel(this); + _statusLabel->setToolTip(tr("Click here to change your status")); + _statusLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); + + //Nickname label + _nicknameLabel = new QuteComStyleLabel(this, QuteComStyleLabel::Normal); +#ifdef DISABLE_VOICE_MAIL + _nicknameLabel->setPixmaps( + QPixmap(), //no start + createPixmapWithExpandIndicator("bar_end.png", true), //end + //createPixmapWithExpandIndicator("bar_separator.png", true), //end + QPixmap(":/pics/profilebar/bar_fill.png"), //fill + QPixmap(), //no start + //createPixmapWithExpandIndicator("bar_on_separator_left.png", false), //end + createPixmapWithExpandIndicator("bar_end.png", false), //end + QPixmap(":/pics/profilebar/bar_fill.png") //fill + ); +#else + _nicknameLabel->setPixmaps( + QPixmap(), //no start + createPixmapWithExpandIndicator("bar_separator.png", true), //end + QPixmap(":/pics/profilebar/bar_fill.png"), //fill + QPixmap(), //no start + createPixmapWithExpandIndicator("bar_on_separator_left.png", false), //end + QPixmap(":/pics/profilebar/bar_fill.png") //fill + ); +#endif + _nicknameLabel->setTextColor(Qt::white); + + //The credit label + _creditLabel = new QuteComStyleLabel(this); + _creditLabel->setPixmaps(QPixmap(), //no start + createPixmapWithExpandIndicator("bar_end.png", true), + QPixmap(":/pics/profilebar/bar_fill.png"), + QPixmap(), //no start + createPixmapWithExpandIndicator("bar_on_end.png", false), + QPixmap(":/pics/profilebar/bar_fill.png") + ); + _creditLabel->setTextColor(Qt::white); + + //Add the labels + labelLayout->addWidget(_statusLabel); + labelLayout->addWidget(_nicknameLabel); + labelLayout->addWidget(_creditLabel); + + //create internal widgets + _qtImProfileWidget = new QtIMProfileWidget(this); + _qtImProfileWidget->getWidget()->setVisible(false); + _qtImProfileWidget->getWidget()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + mainLayout->addWidget(_qtImProfileWidget->getWidget()); + + _creditWidget = new QtCreditWidget(this); + _creditWidget->getWidget()->setVisible(false); + _creditWidget->getWidget()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); + mainLayout->addWidget(_creditWidget->getWidget()); + + //init label tracking vars + _currentLabel = 0; + _labelWidget[_nicknameLabel] = _qtImProfileWidget->getWidget(); + _labelWidget[_creditLabel] = _creditWidget->getWidget(); + //// + + //Objects connection + SAFE_CONNECT(_statusLabel, SIGNAL(clicked()), SLOT(statusClicked())); + SAFE_CONNECT(_nicknameLabel, SIGNAL(clicked()), SLOT(nicknameClicked())); + SAFE_CONNECT(_creditLabel, SIGNAL(clicked()), SLOT(creditClicked())); + + qRegisterMetaType("IMAccount"); + + SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoQuteComsEvent(const QString &, float)), + SLOT(wsInfoQuteComsEventSlot(const QString &, float)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoVoiceMailEvent(int)), + SLOT(wsInfoVoiceMailEventSlot(int)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoLandlineNumberEvent(const QString &)), + SLOT(wsInfoLandlineNumberEventSlot(const QString &)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(wsCallForwardInfoEvent(const QString &)), + SLOT(wsCallForwardInfoEventSlot(const QString &)), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(this, SIGNAL(phoneLineCreatedEvent()), + SLOT(phoneLineCreatedEventSlot()), Qt::QueuedConnection); + +#ifdef DISABLE_VOICE_MAIL + _creditLabel->hide(); +#endif + + reset(); +} + +QtProfileBar::~QtProfileBar() { +} + +void QtProfileBar::init(CQuteCom* cQuteCom, CUserProfile* cUserProfile, QtIMAccountMonitor* qtImAccountMonitor) { + _cQuteCom = cQuteCom; + _cUserProfile = cUserProfile; + _qtImAccountMonitor = qtImAccountMonitor; + + // Init creditLabel + if (_cUserProfile->getUserProfile().hasQuteComAccount()) { + _creditLabel->setText(/*QChar(currency) +*/ QString(" 0.00")); + } else { + _creditLabel->setText(tr("Voice mail")); + } + + // Init widgets + _qtImProfileWidget->init(_cUserProfile, _qtImAccountMonitor); + _creditWidget->init(cQuteCom, &_cUserProfile->getUserProfile()); + + // Connect _cUserProfile + _cUserProfile->getUserProfile().wsInfoCreatedEvent += + boost::bind(&QtProfileBar::wsInfoCreatedEventHandler, this, _1, _2); + + _cUserProfile->getUserProfile().phoneLineCreatedEvent += + boost::bind(&QtProfileBar::phoneLineCreatedEventHandler, this, _1, _2); + + // Connect qtImAccountMonitor + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountAdded(QString)), + SLOT(updateStatusLabel()), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountRemoved(QString)), + SLOT(updateStatusLabel()), Qt::QueuedConnection); + SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountUpdated(QString)), + SLOT(updateStatusLabel()), Qt::QueuedConnection); + + //Check if events already occured + //FIXME: must not use model class + if (_cUserProfile->getUserProfile().getActivePhoneLine()) { + phoneLineCreatedEventHandler(_cUserProfile->getUserProfile(), *_cUserProfile->getUserProfile().getActivePhoneLine()); + } + + if (_cUserProfile->getUserProfile().getWsInfo()) { + wsInfoCreatedEventHandler(_cUserProfile->getUserProfile(), *_cUserProfile->getUserProfile().getWsInfo()); + } + //// + + updateStatusLabel(); + setEnabled(true); +} + +void QtProfileBar::reset() { + setEnabled(false); + _cUserProfile = 0; + _qtImAccountMonitor = 0; + + _statusLabel->setPixmaps( + QPixmap(":/pics/profilebar/bar_start_status_offline.png"), + QPixmap(), + QPixmap(), + QPixmap(":/pics/profilebar/bar_on_start_status_offline.png"), + QPixmap(), + QPixmap() + ); + + _nicknameLabel->setText(""); + _creditLabel->setText(""); + + _qtImProfileWidget->reset(); +} + +void QtProfileBar::updateStatusLabel() { + if(_cUserProfile) + { + // Create pixmap + IMAccountList accountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); + QtPresencePixmapHelper helper(accountList); + QPixmap off = helper.createPixmap(STATUS_LABEL_OFF_TEMPLATE, + STATUS_LABEL_CENTERX, + STATUS_LABEL_CENTERY, + STATUS_LABEL_RADIUS); + QPixmap on = helper.createPixmap(STATUS_LABEL_ON_TEMPLATE, + STATUS_LABEL_CENTERX, + STATUS_LABEL_CENTERY, + STATUS_LABEL_RADIUS); + + _statusLabel->setPixmaps(off, + QPixmap(), //no end + QPixmap(), //no fill + on, + QPixmap(), //no end + QPixmap() + ); //no fill + _statusLabel->update(); + + // Sort account using the same order as in the status pixmap + QtIMAccountHelper::QtIMAccountPtrVector vector; + QtIMAccountHelper::copyListToPtrVector(accountList, &vector); + std::sort(vector.begin(), vector.end(), QtIMAccountHelper::compareIMAccountPtrs); + //// + + // Create tooltip + QStringList tooltipLines; + QtIMAccountHelper::QtIMAccountPtrVector::const_iterator + it = vector.begin(), + end = vector.end(); + + QList list; + + for (;it!=end; ++it) + { + const IMAccount* imAccount = *it; + if(!list.contains(imAccount->getUUID())) + { + QString login = QString::fromUtf8(imAccount->getLogin().c_str()); + QString protocol = QString::fromUtf8( EnumIMProtocol::toString(imAccount->getProtocol()).c_str() ); + QString id = QString::fromUtf8(imAccount->getUUID().c_str()); + QtIMAccountMonitor::IMAccountInfoAutoPtr info = _qtImAccountMonitor->getIMAccountInfo(id); + + if(info.get()) + { + QString line = QString("%1 (%2): %3").arg(login).arg(protocol).arg(info->message()); + tooltipLines.append(line); + } + list.append(imAccount->getUUID()); + } + } + _statusLabel->setToolTip(tooltipLines.join("
\n")); + } +} + +void QtProfileBar::statusClicked() { + + // no presence when user got a SIPAccount without presence and no IMAccount + if (_cUserProfile) { + + UserProfile & userProfile = _cUserProfile->getUserProfile(); + SipAccount * sipAccount = userProfile.getSipAccount(); + + if (userProfile.getIMAccountManager().getIMAccountListCopy().size() <= 1) { + if (!sipAccount /*|| !sipAccount->isPIMEnabled()*/) { + return; + } + } + } + //// + + // by default we crete the menu + createStatusMenu(); +} + +void QtProfileBar::nicknameClicked() { + toggleLabel(_nicknameLabel); +} + +void QtProfileBar::creditClicked() { + toggleLabel(_creditLabel); +} + +void QtProfileBar::toggleLabel(QuteComStyleLabel* label) { + setUpdatesEnabled(false); + Q_ASSERT(_cUserProfile); + Q_ASSERT(label); + if (_currentLabel) { + // Hide current + _currentLabel->setSelected(false); + _labelWidget[_currentLabel]->hide(); + } + + if (label == _currentLabel) { + // Clicked on current, no more _currentLabel + _currentLabel = 0; + } else { + // Clicked on another label, there is a new _currentLabel + label->setSelected(true); + Q_ASSERT(_labelWidget.contains(label)); + + // Make sure all internal widgets are at the same height + // Only do so for qutecom accounts because in the case of a SIP account, + // the credit widget is quite empty + if (_cUserProfile->getUserProfile().hasQuteComAccount()) { + int imProfileHeight = _qtImProfileWidget->getWidget()->minimumSizeHint().height(); + int creditHeight = _creditWidget->getWidget()->minimumSizeHint().height(); + int height = qMax(imProfileHeight, creditHeight); + _qtImProfileWidget->getWidget()->setFixedHeight(height); + _creditWidget->getWidget()->setFixedHeight(height); + } + + _labelWidget[label]->show(); + _currentLabel = label; + } + + setUpdatesEnabled(true); +} + +void QtProfileBar::createStatusMenu() { + QMenu* menu = new QMenu(this); + QtPresenceMenuManager* manager = new QtPresenceMenuManager(menu, + &_cQuteCom->getCUserProfileHandler(), + dynamic_cast(_cQuteCom->getPresentation()) + ); + + QAction* action = menu->addAction(tr("Set global presence to:")); + action->setEnabled(false); + manager->addPresenceActions(menu); + + QPoint p = _statusLabel->pos(); + p.setY(p.y() + _statusLabel->rect().bottom() - 18); + menu->popup(mapToGlobal(p)); +} + +void QtProfileBar::wsInfoCreatedEventHandler(UserProfile & sender, WsInfo & wsInfo) { + wsInfo.wsInfoQuteComsEvent += boost::bind(&QtProfileBar::wsInfoQuteComsEventHandler, this, _1, _2, _3, _4, _5); + wsInfo.wsInfoVoiceMailEvent += boost::bind(&QtProfileBar::wsInfoVoiceMailEventHandler, this, _1, _2, _3, _4); + wsInfo.wsInfoLandlineNumberEvent += boost::bind(&QtProfileBar::wsInfoLandlineNumberEventHandler, this, _1, _2, _3, _4); + wsInfo.wsCallForwardInfoEvent += boost::bind(&QtProfileBar::wsCallForwardInfoEventHandler, this, _1, _2, _3, _4, _5, _6, _7, _8); + + wsInfo.getQuteComsCount(true); + wsInfo.getQuteComsCurrency(true); + wsInfo.getUnreadVoiceMail(true); + wsInfo.getCallForwardInfo(true); + wsInfo.getLandlineNumber(true); + wsInfo.execute(); +} + +void QtProfileBar::wsInfoQuteComsEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string currency, float qutecoms) { + if (status == WsInfo::WsInfoStatusOk) { + wsInfoQuteComsEvent(QString::fromUtf8(currency.c_str()), qutecoms); + } +} + +void QtProfileBar::wsInfoVoiceMailEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, int voicemail) { + if (status == WsInfo::WsInfoStatusOk) { + wsInfoVoiceMailEvent(voicemail); + } +} + +void QtProfileBar::wsInfoLandlineNumberEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string number) { + if (status == WsInfo::WsInfoStatusOk) { + wsInfoLandlineNumberEvent(QString::fromUtf8(number.c_str())); + } +} + +void QtProfileBar::wsCallForwardInfoEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, + WsInfo::WsInfoCallForwardMode mode, bool voicemail, std::string dest1, std::string dest2, std::string dest3) { + + if (status == WsInfo::WsInfoStatusOk) { + + switch(mode) { + case WsInfo::WsInfoCallForwardModeVoicemail: + wsCallForwardInfoEvent(tr("active") + " (" + tr("voicemail") + ")"); + break; + case WsInfo::WsInfoCallForwardModeNumber: + wsCallForwardInfoEvent(tr("active") + " (" + QString::fromUtf8(dest1.c_str()) + ")"); + break; + case WsInfo::WsInfoCallForwardModeDisabled: + wsCallForwardInfoEvent(tr("inactive")); + break; + case WsInfo::WsInfoCallForwardModeUnauthorized: + wsCallForwardInfoEvent(tr("unauthorized")); + break; + } + } +} + +void QtProfileBar::phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine) { + phoneLineCreatedEvent(); +} + +void QtProfileBar::phoneLineCreatedEventSlot() { + if(_cUserProfile) + { + _nicknameLabel->setText(" " + QString::fromLocal8Bit(_cUserProfile->getUserProfile().getSipAccount()->getDisplayName().c_str())); + } +} + +void QtProfileBar::paintEvent(QPaintEvent * event) { + if (_currentLabel) { + QRect r = rect(); + + QLinearGradient lg(QPointF(1, r.top()), QPointF(1, r.bottom())); + + lg.setColorAt(0, palette().color(QPalette::Window)); + QColor dest = palette().color(QPalette::Window); + + float red = ((float) dest.red()) / 1.3f; + float blue = ((float) dest.blue()) / 1.3f; + float green = ((float) dest.green()) / 1.3f; + + dest = QColor((int) red, (int) green, (int) blue); + lg.setColorAt(1, dest); + + QPainter painter(this); + painter.fillRect(r, QBrush(lg)); + painter.end(); + } else { + QFrame::paintEvent(event); + } +} + +void QtProfileBar::wsInfoQuteComsEventSlot(const QString & currency, float qutecoms) { + _creditLabel->setText(currency + QString(" %1").arg(qutecoms)); +} + +void QtProfileBar::wsInfoVoiceMailEventSlot(int count) { + // FIXME: Show VoiceMail info somewhere +} + +void QtProfileBar::wsInfoLandlineNumberEventSlot(const QString & number) { + // FIXME: Show landline number somewhere +} + +void QtProfileBar::wsCallForwardInfoEventSlot(const QString & mode) { + _creditWidget->setCallForwardMode(mode); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/profilebar/QtProfileBar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,144 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTPROFILEBAR_H +#define QTPROFILEBAR_H + +#include + +#include +#include + +#include + +#include +#include +#include + +class QGridLayout; + +class QtIMAccountMonitor; +class QtIMProfileWidget; +class QtEventWidget; +class QtCreditWidget; + +class CHistory; +class CUserProfile; +class CQuteCom; +class ConnectHandler; +class IPhoneLine; +class PresenceHandler; +class UserProfile; +class QuteComStyleLabel; + +/** + * Profile bar: shows the user profile at the top of the main window. + * + * TODO refactor, class too big, no .ui file ect... + * + * @author Mathieu Stute + * @author Tanguy Krotoff + */ +class QtProfileBar : public QFrame, public Trackable { + Q_OBJECT +public: + + QtProfileBar(QWidget * parent); + + void init(CQuteCom*, CUserProfile*, QtIMAccountMonitor*); + + void reset(); + + ~QtProfileBar(); + +public Q_SLOTS: + + void statusClicked(); + + void nicknameClicked(); + + void creditClicked(); + +Q_SIGNALS: + void wsInfoQuteComsEvent(const QString &, float qutecoms); + void wsInfoVoiceMailEvent(int count); + void wsInfoLandlineNumberEvent(const QString & number); + void wsCallForwardInfoEvent(const QString & mode); + void phoneLineCreatedEvent(); + +private Q_SLOTS: + + void wsInfoQuteComsEventSlot(const QString &, float qutecoms); + void wsInfoVoiceMailEventSlot(int count); + void wsInfoLandlineNumberEventSlot(const QString & number); + void wsCallForwardInfoEventSlot(const QString & mode); + void phoneLineCreatedEventSlot(); + + void updateStatusLabel(); + +private: + + /** + * Initializes widgets content. + */ + void init(); + + void wsInfoCreatedEventHandler(UserProfile & sender, WsInfo & wsInfo); + + void wsInfoQuteComsEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string currency, float qutecoms); + + void wsInfoVoiceMailEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, int voicemail); + + void wsInfoLandlineNumberEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string number); + + void wsCallForwardInfoEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, + WsInfo::WsInfoCallForwardMode mode, bool voicemail, std::string dest1, std::string dest2, std::string dest3); + + void phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine); + + void createStatusMenu(); + + void paintEvent(QPaintEvent * event); + + void toggleLabel(QuteComStyleLabel*); + + QuteComStyleLabel * _statusLabel; + + QuteComStyleLabel * _nicknameLabel; + + QuteComStyleLabel * _creditLabel; + + QuteComStyleLabel * _currentLabel; + + QMap _labelWidget; + + QtIMProfileWidget * _qtImProfileWidget; + + QtCreditWidget * _creditWidget; + + QPixmap _statusPixmap; + + CUserProfile * _cUserProfile; + + CQuteCom * _cQuteCom; + + QtIMAccountMonitor* _qtImAccountMonitor; +}; + +#endif //QTPROFILEBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtAbout.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtAbout.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtAbout.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtAbout.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,70 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtAbout.h" + +#include "ui_AboutWindow.h" + +#include + +#include +#include +#include + +#include + +QtAbout::QtAbout(QWidget * parent) { + _aboutDialog = new QDialog(parent); + + _ui = new Ui::AboutWindow(); + _ui->setupUi(_aboutDialog); + + /* Set a formatted text to the build id label. */ + _ui->qutecomPhoneBuildIdStringLabel->setText("" + + QString(QObject::tr("@product@")) + " " + + QString(QuteComBuildId::getVersion()) + " rev" + + QString(QuteComBuildId::getSvnRevision()) + "-" + + QString::number(QuteComBuildId::getBuildId()) + ""); + + QFile file(":/AUTHORS"); + if (file.open(QFile::ReadOnly)) { + QString authors = QString::fromUtf8(file.readAll()); + file.close(); + _ui->authorsTextEdit->setPlainText(authors); + } else { + LOG_ERROR("couldn't locate file=" + file.fileName().toUtf8()); + } + + /* Set a formatted text to dependencies version label. */ + _ui->versionLabel->setText("Qt: " + QString(qVersion()) + "
" + + "Boost: " + QString(QuteComBuildId::getBoostVersion()) + "
" + + "LibPurple: " + QString(QuteComBuildId::getPurpleVersion()) + "
" + + "GLib: " + QString(QuteComBuildId::getGLibVersion()) + "
" + + "cURL: " + QString(QuteComBuildId::getCurlVersion()) + "
" + + "TinyXML: " + QString(QuteComBuildId::getTinyXmlVersion()) + "
" + + "FFmpeg's libavcodec: " + QString(QuteComBuildId::getAvcodecVersion()) +#ifndef OS_MACOSX + + "
" + "PortAudio: " + QString(QuteComBuildId::getPortaudioVersion()) +#endif + ); +} + +QtAbout::~QtAbout() { + OWSAFE_DELETE(_ui); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtAbout.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtAbout.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtAbout.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtAbout.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,52 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTABOUT_H +#define OWQTABOUT_H + +#include + +class QWidget; +class QDialog; +namespace Ui { class AboutWindow; } + +/** + * About dialog window: shows copyright, license, authors... + * + * @author Tanguy Krotoff + */ +class QtAbout : NonCopyable { +public: + + QtAbout(QWidget * parent); + + ~QtAbout(); + + QDialog * getWidget() const { + return _aboutDialog; + } + +private: + + Ui::AboutWindow * _ui; + + QDialog * _aboutDialog; +}; + +#endif //OWQTABOUT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,170 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtBrowserWidget.h" +#include "QtQuteCom.h" + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include + +#include +#include +#include + +const QString ANCHOR_DIALPAD = "qutecom_dial"; +const QString ANCHOR_CONTACTLIST = "qutecom_phonebook"; +const QString ANCHOR_ADDCONTACT = "qutecom_addcontact"; +const QString ANCHOR_SECRET_PERMANENT = "qutecom_secret_permanent"; +const QString ANCHOR_SFR_FR = "qutecom_sfr_fr"; +const QString ANCHOR_MON_COMPTE = "qutecom_mon_compte"; +const QString ANCHOR_REPONDEUR = "qutecom_repondeur"; + +QtBrowserWidget::QtBrowserWidget(QtQuteCom & qtQuteCom) + : _qtQuteCom(qtQuteCom) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + base_path = QString::fromUtf8(config.getResourcesDir().c_str()); +#if defined (OS_WINDOWS) + base_path = base_path.replace("\\","/"); +#endif + + _qtBrowser = new QWebView(_qtQuteCom.getWidget()); + _qtBrowser->setContextMenuPolicy(Qt::NoContextMenu); + _qtBrowser ->page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); + _qtBrowser ->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); + + //SAFE_CONNECT(&_qtQuteCom, SIGNAL(userProfileDeleted()), SLOT(slotUserProfileDeleted())); + + _qtBrowser ->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); + connect(_qtBrowser,SIGNAL(linkClicked(const QUrl &)),this,SLOT(linkClicked_slot(const QUrl &))); +} + +QtBrowserWidget::~QtBrowserWidget() +{ + OWSAFE_DELETE(_qtBrowser); +} + +QWidget * QtBrowserWidget::getWidget() const +{ + return _qtBrowser; +} + +void QtBrowserWidget::slotUserProfileDeleted() +{ + _qtBrowser->load(QUrl(base_path + "/webpages/windows/sip.html")); +} + +void QtBrowserWidget::loadProgressURL() +{ + _qtBrowser->load(QUrl(base_path + "/webpages/windows/loading.html")); +} + +void QtBrowserWidget::loadDefaultURL() +{ + _qtBrowser->load(QUrl(base_path + "/webpages/windows/sip.html")); +} + +void QtBrowserWidget::linkClicked_slot(const QUrl & url) +{ + QString surl = url.toString(); + + if(surl.contains(ANCHOR_CONTACTLIST)) + { + //QStringList list = surl.split(ANCHOR_CONTACTLIST); + //if(list.count() == 2) + //{ + openqutecom_phonebook_signal(); + //} + } + /*else if(surl.contains(ANCHOR_HISTORY)) + { + QStringList list = surl.split(ANCHOR_CONTACTLIST); + if(list.count() == 2) + { + openqutecom_log_signal(); + } + } + else if(surl.contains(ANCHOR_CONFIGURATION)) + { + QStringList list = surl.split(ANCHOR_CONTACTLIST); + if(list.count() == 2) + { + openqutecom_configuration_signal(); + } + }*/ + else if(surl.contains(ANCHOR_DIALPAD)) + { + //QStringList list = surl.split(ANCHOR_CONTACTLIST); + //if(list.count() == 2) + //{ + openqutecom_dial_signal(); + //} + } + + else if(surl.contains(ANCHOR_ADDCONTACT)) + { + //QStringList list = surl.split(ANCHOR_CONTACTLIST); + //if(list.count() == 2) + //{ + openqutecom_addcontact_signal(); + //} + } + /*else if(surl.contains(ANCHOR_SELFCARE)) + { + QStringList list = surl.split(ANCHOR_CONTACTLIST); + if(list.count() == 2) + { + openqutecom_selfcare_signal(); + } + } + else if(surl.contains(ANCHOR_FORUM)) + { + QStringList list = surl.split(ANCHOR_CONTACTLIST); + if(list.count() == 2) + { + openqutecom_forum_signal(); + } + } + else if(surl.contains(ANCHOR_SHOWSMARTDIRECTORY)) + { + //QStringList list = surl.split(ANCHOR_CONTACTLIST); + //if(list.count() == 2) + //{ + openqutecom_smartdirectory_signal(); + //} + }*/ + else + { + WebBrowser::openUrl(std::string(url.toString().toUtf8())); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtBrowserWidget.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,105 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTBROWSERWIDGET_H +#define OWQTBROWSERWIDGET_H + +#include + +#include + +#include + +#include +#include +#include + +class QtQuteCom; + +/** + * Embedded HTML browser widget inside the main window. + * + * Works only under Windows for the moment using a ActiveX control. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ + +class QtWebPage :public QWebPage +{ +protected: + bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type) + { + //if(type == QWebPage::NavigationTypeOther) + // QDesktopServices::openUrl(request.url()); + + return QWebPage::acceptNavigationRequest(frame,request,type); + } +}; + +class QtBrowserWidget : public QObject, NonCopyable { + Q_OBJECT +public: + + QtBrowserWidget(QtQuteCom & qtQuteCom); + + ~QtBrowserWidget(); + + QWidget * getWidget() const; + + /** + * Loads the default URL, loaded at startup. + */ + void loadDefaultURL(); + + /** + * Loads the URL when the user is connecting. + */ + void loadProgressURL(); + +private Q_SLOTS: + + /** + * delete the browser. + */ + void slotUserProfileDeleted(); + + void linkClicked_slot(const QUrl & url); + +private: + + QtQuteCom & _qtQuteCom; + + QWebView * _qtBrowser; + + QString base_path; + +Q_SIGNALS: + void openqutecom_phonebook_signal(); + void openqutecom_log_signal(); + void openqutecom_configuration_signal(); + void openqutecom_dial_signal(); + void openqutecom_addcontact_signal(); + void openqutecom_selfcare_signal(); + void openqutecom_forum_signal(); + void openqutecom_smartdirectory_signal(); + void openqutecom_secret_permanent_signal(); +}; + +#endif //OWQTBROWSERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtDialpad.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtDialpad.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtDialpad.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtDialpad.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,308 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtDialpad.h" + +#include "ui_DialpadWidget.h" + +#include "QtSVGDialpad.h" +#include "QtQuteCom.h" + +#include +#include +#include + +#include + +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include + +const char* DEFAULT_THEME = "default"; +const char* JUNGLE_THEME = "Jungle"; + +QtDialpad::QtDialpad(CDtmfThemeManager & cDtmfThemeManager, QtQuteCom * qtQuteCom) + : QWidget(NULL), + _cDtmfThemeManager(cDtmfThemeManager) + { + + _qtQuteCom = qtQuteCom; + + _ui = new Ui::DialpadWidget(); + _ui->setupUi(this); + + SAFE_CONNECT(_ui->zeroButton, SIGNAL(clicked()), SLOT(zeroButtonClicked())); + SAFE_CONNECT(_ui->oneButton, SIGNAL(clicked()), SLOT(oneButtonClicked())); + SAFE_CONNECT(_ui->twoButton, SIGNAL(clicked()), SLOT(twoButtonClicked())); + SAFE_CONNECT(_ui->threeButton, SIGNAL(clicked()), SLOT(threeButtonClicked())); + SAFE_CONNECT(_ui->fourButton, SIGNAL(clicked()), SLOT(fourButtonClicked())); + SAFE_CONNECT(_ui->fiveButton, SIGNAL(clicked()), SLOT(fiveButtonClicked())); + SAFE_CONNECT(_ui->sixButton, SIGNAL(clicked()), SLOT(sixButtonClicked())); + SAFE_CONNECT(_ui->sevenButton, SIGNAL(clicked()), SLOT(sevenButtonClicked())); + SAFE_CONNECT(_ui->eightButton, SIGNAL(clicked()), SLOT(eightButtonClicked())); + SAFE_CONNECT(_ui->nineButton, SIGNAL(clicked()), SLOT(nineButtonClicked())); + SAFE_CONNECT(_ui->starButton, SIGNAL(clicked()), SLOT(starButtonClicked())); + SAFE_CONNECT(_ui->poundButton, SIGNAL(clicked()), SLOT(poundButtonClicked())); + + //add UpComboBox + SAFE_CONNECT(_ui->audioSmileysComboBox, SIGNAL(activated(const QString &)), + SLOT(setCurrentTheme(const QString &))); + SAFE_CONNECT(_ui->audioSmileysComboBox, SIGNAL(popupDisplayed()), + SLOT(refreshComboBox())); + + //add svg viewer + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyZeroSelected()), SLOT(zeroButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyOneSelected()), SLOT(oneButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyTwoSelected()), SLOT(twoButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyThreeSelected()), SLOT(threeButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyFourSelected()), SLOT(fourButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyFiveSelected()), SLOT(fiveButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keySixSelected()), SLOT(sixButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keySevenSelected()), SLOT(sevenButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyEightSelected()), SLOT(eightButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyNineSelected()), SLOT(nineButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyStarSelected()), SLOT(starButtonClicked())); + SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyPoundSelected()), SLOT(poundButtonClicked())); + + setThemeMode(ThemeModeAll); + setFocusPolicy(Qt::StrongFocus); + + _ui->audioSmileysComboBox->hide(); +} + +QtDialpad::~QtDialpad() { + OWSAFE_DELETE(_ui); +} + +void QtDialpad::fillComboBox() { + _ui->audioSmileysComboBox->clear(); + + //comboBox Construction + std::list themeList = _cDtmfThemeManager.getThemeList(); + + // Move DEFAULT_THEME to the beginning of the list + std::list::iterator it = std::find(themeList.begin(), themeList.end(), DEFAULT_THEME); + if (it != themeList.end()) { + themeList.erase(it); + themeList.push_front(DEFAULT_THEME); + } else { + LOG_WARN("Could find default theme '" + std::string(DEFAULT_THEME) + "'"); + } + //// + + for (std::list::const_iterator it = themeList.begin(); it != themeList.end(); ++it) { + std::string theme = *it; + + if (theme == DEFAULT_THEME && _themeMode == ThemeModeAudioSmileysOnly) { + // Skip default theme + continue; + } + + + + std::string icon = _cDtmfThemeManager.getDtmfTheme(theme)->getRepertory() + + _cDtmfThemeManager.getDtmfTheme(theme)->getImageFile(); + + _ui->audioSmileysComboBox->addItem(QIcon(QString::fromUtf8(icon.c_str())), QString::fromUtf8(theme.c_str()), QVariant()); + + // Ugly workaround to insert a separator after the "default dialpad" entry + if (theme == DEFAULT_THEME) { + _ui->audioSmileysComboBox->addItem(""); + + QAbstractItemView* view = _ui->audioSmileysComboBox->view(); + QModelIndex index = view->model()->index(view->model()->rowCount() - 1, 0); + QFrame* separator = new QFrame(view); + separator->setFrameStyle(QFrame::HLine | QFrame::Sunken); + view->setIndexWidget(index, separator); + } + } +} + +void QtDialpad::refreshComboBox(){ + if (_cDtmfThemeManager.refreshDtmfThemes()) { + + //save current text + QString selectOne = _ui->audioSmileysComboBox->currentText(); + + //refill the combobox + fillComboBox(); + + //load current text with is new position (if possible) + int pos = _ui->audioSmileysComboBox->findText(selectOne); + if (pos != -1) { + _ui->audioSmileysComboBox->setCurrentIndex(pos); + } + } +} + +void QtDialpad::playTone(const std::string & tone) { + + _cDtmfThemeManager.playTone( + std::string(_ui->audioSmileysComboBox->currentText().toUtf8()), + tone + ); + _qtQuteCom->dialpad(tone); +} + +void QtDialpad::oneButtonClicked() { + playTone("1"); +} + +void QtDialpad::twoButtonClicked() { + playTone("2"); +} + +void QtDialpad::threeButtonClicked() { + playTone("3"); +} + +void QtDialpad::fourButtonClicked() { + playTone("4"); +} + +void QtDialpad::fiveButtonClicked() { + playTone("5"); +} + +void QtDialpad::sixButtonClicked() { + playTone("6"); +} + +void QtDialpad::sevenButtonClicked() { + playTone("7"); +} + +void QtDialpad::eightButtonClicked() { + playTone("8"); +} + +void QtDialpad::nineButtonClicked() { + playTone("9"); +} + +void QtDialpad::zeroButtonClicked() { + playTone("0"); +} + +void QtDialpad::starButtonClicked() { + playTone("*"); +} + +void QtDialpad::poundButtonClicked() { + playTone("#"); +} + +void QtDialpad::setCurrentTheme(const QString & newThemeName) { + // We don't want the user to select the separator + if (newThemeName.isEmpty()) { + _ui->audioSmileysComboBox->setCurrentIndex(_ui->audioSmileysComboBox->findText(DEFAULT_THEME)); + return; + } + + LOG_DEBUG(newThemeName.toUtf8()); + + const DtmfTheme * newTheme = _cDtmfThemeManager.getDtmfTheme(std::string(newThemeName.toUtf8())); + + if (newTheme->getDialpadMode() == DtmfTheme::svg) { + + //change theme + _ui->qtSVGDialpad->setNewTheme(newTheme->getRepertory()); + + //active QtSVGDialpad + _ui->stackedWidget->setCurrentWidget(_ui->svgDialpadPage); + + //force repaint + _ui->qtSVGDialpad->update(); + + } else { + _ui->stackedWidget->setCurrentWidget(_ui->classicDialpadPage); + } +} + +void QtDialpad::setThemeMode(ThemeMode themeMode) { + _themeMode = themeMode; + if (_themeMode == ThemeModeDefaultOnly) { + _ui->topFrame->hide(); + } else { + _ui->topFrame->show(); + fillComboBox(); + } + setCurrentTheme(_ui->audioSmileysComboBox->itemText(0)); +} + +void QtDialpad::keyPressEvent(QKeyEvent * event) +{ + switch( event->key() ) + { + case Qt::Key_0: + playTone("0"); + break; + case Qt::Key_1: + playTone("1"); + break; + case Qt::Key_2: + playTone("2"); + break; + case Qt::Key_3: + playTone("3"); + break; + case Qt::Key_4: + playTone("4"); + break; + case Qt::Key_5: + playTone("5"); + break; + case Qt::Key_6: + playTone("6"); + break; + case Qt::Key_7: + playTone("7"); + break; + case Qt::Key_8: + playTone("8"); + break; + case Qt::Key_9: + playTone("9"); + break; + case Qt::Key_Asterisk: + playTone("*"); + break; + case Qt::Key_NumberSign: + playTone("#"); + break; + case Qt::Key_Backspace: + _qtQuteCom->dialpadBackspace(); + break; + case Qt::Key_Enter: + case Qt::Key_Return: + _qtQuteCom->dialpadEnter(); + default: + QWidget::keyPressEvent(event); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtDialpad.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtDialpad.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtDialpad.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtDialpad.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,105 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTDIALPAD_H +#define OWQTDIALPAD_H + +#include + +#include + +#include + +class QtQuteCom; +class CDtmfThemeManager; +class QtSVGDialpad; +class QStringList; +class UpQComboBox; + +namespace Ui { class DialpadWidget; } + +/** + * Dialpad widget: where the user clicks for DTMF. + * + * @author Tanguy Krotoff + */ +class QtDialpad : public QWidget, NonCopyable { + Q_OBJECT +public: + enum ThemeMode { ThemeModeAll, ThemeModeDefaultOnly, ThemeModeAudioSmileysOnly }; + + QtDialpad(CDtmfThemeManager & cDtmfThemeManager, QtQuteCom * qtQuteCom); + + ~QtDialpad(); + + void setThemeMode(ThemeMode); + +private Q_SLOTS: + + void oneButtonClicked(); + + void twoButtonClicked(); + + void threeButtonClicked(); + + void fourButtonClicked(); + + void fiveButtonClicked(); + + void sixButtonClicked(); + + void sevenButtonClicked(); + + void eightButtonClicked(); + + void nineButtonClicked(); + + void zeroButtonClicked(); + + void starButtonClicked(); + + void poundButtonClicked(); + + void setCurrentTheme(const QString & newThemeName); + + void refreshComboBox(); + +private: + + void fillComboBox(); + + void playTone(const std::string & tone); + + Ui::DialpadWidget * _ui; + + QtQuteCom * _qtQuteCom; + + CDtmfThemeManager & _cDtmfThemeManager; + + QtSVGDialpad * _qtSVGDialpad; + + UpQComboBox * _audioSmileysComboBox; + + ThemeMode _themeMode; + +protected: + void keyPressEvent(QKeyEvent * event); +}; + +#endif //OWQTDIALPAD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,173 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtEnumIMProtocol.h" + +#include +#include + +#include + +typedef std::map ProtocolMap; +static ProtocolMap _protocolMap; + +static void init() { + if (!_protocolMap.empty()) { + return; + } + _protocolMap[QtEnumIMProtocol::IMProtocolMSN] = "MSN"; + _protocolMap[QtEnumIMProtocol::IMProtocolYahoo] = "Yahoo"; + _protocolMap[QtEnumIMProtocol::IMProtocolAIM] = "AIM"; + _protocolMap[QtEnumIMProtocol::IMProtocolICQ] = "ICQ"; + _protocolMap[QtEnumIMProtocol::IMProtocolJabber] = "Jabber"; + _protocolMap[QtEnumIMProtocol::IMProtocolGoogleTalk] = "GoogleTalk"; + _protocolMap[QtEnumIMProtocol::IMProtocolSIPSIMPLE] = "SIP/SIMPLE"; + _protocolMap[QtEnumIMProtocol::IMProtocolQuteCom] = "QuteCom"; + + _protocolMap[QtEnumIMProtocol::IMProtocolFaceBook] = "FaceBook"; + _protocolMap[QtEnumIMProtocol::IMProtocolMySpace] = "MySpace"; + _protocolMap[QtEnumIMProtocol::IMProtocolSkype] = "Skype"; + _protocolMap[QtEnumIMProtocol::IMProtocolTwitter] = "Twitter"; +} + +QString QtEnumIMProtocol::toString(IMProtocol protocol) { + init(); + QString tmp = _protocolMap[protocol]; + if (tmp.isEmpty()) { + LOG_FATAL("unknown IMProtocol=" + String::fromNumber(protocol)); + } + return tmp; +} + +QtEnumIMProtocol::IMProtocol QtEnumIMProtocol::toIMProtocol(const QString & protocol) { + init(); + for (ProtocolMap::const_iterator it = _protocolMap.begin(); + it != _protocolMap.end(); ++it) { + + if ((*it).second == protocol) { + return (*it).first; + } + } + + LOG_FATAL("unknown protocol=" + protocol.toUtf8()); + return IMProtocolUnknown; +} + +QtEnumIMProtocol::IMProtocol QtEnumIMProtocol::toIMProtocol(EnumIMProtocol::IMProtocol protocol) { + IMProtocol imProtocol = IMProtocolUnknown; + + switch (protocol) { + case EnumIMProtocol::IMProtocolMSN: + imProtocol = IMProtocolMSN; + break; + + case EnumIMProtocol::IMProtocolYahoo: + imProtocol = IMProtocolYahoo; + break; + + case EnumIMProtocol::IMProtocolAIM: + imProtocol = IMProtocolAIM; + break; + + case EnumIMProtocol::IMProtocolICQ: + imProtocol = IMProtocolICQ; + break; + + case EnumIMProtocol::IMProtocolJabber: + imProtocol = IMProtocolJabber; + break; + + case EnumIMProtocol::IMProtocolGoogleTalk: + imProtocol = IMProtocolGoogleTalk; + break; + + case EnumIMProtocol::IMProtocolSIPSIMPLE: + imProtocol = IMProtocolSIPSIMPLE; + break; + + case EnumIMProtocol::IMProtocolQuteCom: + imProtocol = IMProtocolQuteCom; + break; + + case EnumIMProtocol::IMProtocolFaceBook: + imProtocol = IMProtocolFaceBook; + break; + + case EnumIMProtocol::IMProtocolMySpace: + imProtocol = IMProtocolMySpace; + break; + + case EnumIMProtocol::IMProtocolSkype: + imProtocol = IMProtocolSkype; + break; + + case EnumIMProtocol::IMProtocolTwitter: + imProtocol = IMProtocolTwitter; + break; + + default: + LOG_FATAL("unknown IM protocol=" + String::fromNumber(protocol)); + } + + return imProtocol; +} + +EnumIMProtocol::IMProtocol QtEnumIMProtocol::toModelIMProtocol(IMProtocol protocol) { + switch (protocol) { + case IMProtocolUnknown: + return EnumIMProtocol::IMProtocolUnknown; + + case IMProtocolMSN: + return EnumIMProtocol::IMProtocolMSN; + + case IMProtocolYahoo: + return EnumIMProtocol::IMProtocolYahoo; + + case IMProtocolAIM: + return EnumIMProtocol::IMProtocolAIM; + + case IMProtocolICQ: + return EnumIMProtocol::IMProtocolICQ; + + case IMProtocolJabber: + case IMProtocolGoogleTalk: + return EnumIMProtocol::IMProtocolJabber; + + case IMProtocolSIPSIMPLE: + return EnumIMProtocol::IMProtocolSIPSIMPLE; + + case IMProtocolQuteCom: + return EnumIMProtocol::IMProtocolQuteCom; + + case IMProtocolFaceBook: + return EnumIMProtocol::IMProtocolFaceBook; + + case IMProtocolMySpace: + return EnumIMProtocol::IMProtocolMySpace; + + case IMProtocolSkype: + return EnumIMProtocol::IMProtocolSkype; + + case IMProtocolTwitter: + return EnumIMProtocol::IMProtocolTwitter; + } + + LOG_FATAL("unknown IM protocol=" + String::fromNumber(protocol)); + return EnumIMProtocol::IMProtocolUnknown; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtEnumIMProtocol.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,93 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTENUMIMPROTOCOL_H +#define OWQTENUMIMPROTOCOL_H + +#include + +#include + +#include + +/** + * Instant Messaging protocols. + * + * This class duplicates EnumIMProtocol because + * protocols at network level are not always the one that we want to show + * to the user. + * + * For example at network level there is no GoogleTalk protocol but just Jabber protocol; + * at graphical level there is a GoogleTalk protocol for the user because it's easier. + * + * @see EnumIMProtocol + * @author Philippe Bernery + * @author Tanguy Krotoff + */ +class QtEnumIMProtocol : NonCopyable { +public: + + enum IMProtocol { + IMProtocolUnknown, + IMProtocolMSN, + IMProtocolYahoo, + IMProtocolAIM, + IMProtocolICQ, + IMProtocolJabber, + IMProtocolGoogleTalk, + IMProtocolSIPSIMPLE, + IMProtocolQuteCom, + IMProtocolFaceBook, + IMProtocolMySpace, + IMProtocolSkype, + IMProtocolTwitter + }; + + /** + * Converts a protocol into a string. + * + * @return the string + */ + static QString toString(IMProtocol protocol); + + /** + * Converts a string into a protocol. + * + * @return the protocol + */ + static IMProtocol toIMProtocol(const QString & protocol); + + //static QPixmap getPixmap(IMProtocol protocol); + + /** + * Converts an EnumIMProtocol into a QtEnumIMProtocol. + * + * @return the protocol + */ + static IMProtocol toIMProtocol(EnumIMProtocol::IMProtocol protocol); + + /** + * Converts a QtEnumIMProtocol to an EnumIMProtocol. + * + * @return the protocol + */ + static EnumIMProtocol::IMProtocol toModelIMProtocol(IMProtocol protocol); +}; + +#endif //OWQTENUMIMPROTOCOL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtFactory.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtFactory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtFactory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,230 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtFactory.h" + +#include "QtQuteCom.h" +#include "QtQuteComStyle.h" +#include "chat/QtChatHandler.h" +#include "contactlist/QtContactList.h" +#include "history/QtHistory.h" +#include "phoneline/QtPhoneLine.h" +#include "phonecall/QtPhoneCall.h" +#include "profile/QtUserProfile.h" +#include "profile/QtUserProfileHandler.h" +#include "webservices/sms/QtSms.h" +#include "webservices/softupdate/QtSoftUpdate.h" +#include "QtDialpad.h" + +#include +#include +#include +#include +#include + +#include + +#include +#include + +#include +#include + +#ifndef OS_WINDOWS + #include +#else + #include "WinApp.h" +#endif + +#if defined(OS_LINUX) +#include +#endif + +#if defined(OS_MACOSX) + #include "macosx/QtMacApplication.h" +#endif + +PFactory * PFactory::_factory = NULL; + +QtFactory::QtFactory(int & argc, char * argv[]) { +#if defined(OS_LINUX) + // FIXME: Disable Qt Glib event loop, because it conflicts with Gaim +// setenv("QT_NO_GLIB", "1", 1); +#endif + +#if defined(OS_MACOSX) + _app = new QtMacApplication(argc, argv); + + std::string qtPlugins = Path::getApplicationPrivateFrameworksDirPath() + + File::convertPathSeparators("plugins/"); + QCoreApplication::addLibraryPath(QString::fromUtf8(qtPlugins.c_str())); +#else + +#ifndef OS_WINDOWS + _app = new QApplication(argc, argv); +#else + _app = new WinApp(argc, argv); +#endif + + QCoreApplication::addLibraryPath("."); +#endif + + Q_INIT_RESOURCE(qtutil); + + //QtQuteComStyle + QtQuteComStyle * qtQuteComStyle = new QtQuteComStyle(); + _app->setStyle(qtQuteComStyle); + + //Filter for post event (=thread event) + ThreadEventFilter * threadEventFilter = new ThreadEventFilter(); + _app->installEventFilter(threadEventFilter); + + reset(); + _qtQuteCom = NULL; + _qtUserProfileHandler = NULL; + + // Integrate QDesktopServices with WebBrowser, this way we can use the + // QLabel::openExternalLinks property. + QDesktopServices::setUrlHandler("http", this, "openUrl" ); + QDesktopServices::setUrlHandler("https", this, "openUrl" ); +} + +void QtFactory::processEvents() { + _app->processEvents(); +} + +int QtFactory::exec() { + return _app->exec(); +} + +void QtFactory::reset() { + //Objects are deleted by the class who constructs them. + //So we can set the pointer to NULL safely. + _qtContactList = NULL; + _qtChatHandler = NULL; + _qtSms = NULL; + _qtSoftUpdate = NULL; + _qtHistory = NULL; + _qtDialpad = NULL; +} + +PQuteCom * QtFactory::createPresentationQuteCom(CQuteCom & cQuteCom, bool runInBackground) { + _cQuteCom = &cQuteCom; +#ifdef OS_WINDOWS + _app->setCQuteCom(_cQuteCom); +#endif + if (!_qtQuteCom) { + _qtQuteCom = new QtQuteCom(cQuteCom); + } + + if (!runInBackground) { + _qtQuteCom->getWidget()->show(); + } + + return _qtQuteCom; +} + +PUserProfile * QtFactory::createPresentationUserProfile(CUserProfile & cUserProfile) { + //FIXME: QtQuteCom must be instanciated before any QtUserProfile + return new QtUserProfile(cUserProfile, *_qtQuteCom); +} + +PUserProfileHandler * QtFactory::createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) { + if (!_qtUserProfileHandler) { + //FIXME: QtQuteCom must be instanciated before _qtUserProfileHandler + _qtUserProfileHandler = new QtUserProfileHandler(cUserProfileHandler, *_qtQuteCom); + } + + return _qtUserProfileHandler; +} + +PPhoneLine * QtFactory::createPresentationPhoneLine(CPhoneLine & cPhoneLine) { + //FIXME: memory leak? + QtPhoneLine * qtPhoneLine = new QtPhoneLine(cPhoneLine); + return qtPhoneLine; +} + +PPhoneCall * QtFactory::createPresentationPhoneCall(CPhoneCall & cPhoneCall) { + //FIXME: memory leak? + QtPhoneCall * qtPhoneCall = new QtPhoneCall(cPhoneCall); + return qtPhoneCall; +} + +PContactList * QtFactory::createPresentationContactList(CContactList & cContactList) { + if (!_qtContactList) { + if (!_cQuteCom) { + LOG_FATAL("PQuteCom must be created before PContactList"); + } + _qtContactList = new QtContactList(cContactList, *_cQuteCom); + } + return _qtContactList; +} + +PChatHandler * QtFactory::createPresentationChatHandler(CChatHandler & cChatHandler) { + if (!_qtChatHandler) { + if (!_qtQuteCom) { + LOG_FATAL("PQuteCom must be created before PContactList"); + } else { + _qtChatHandler = new QtChatHandler(cChatHandler, *_qtQuteCom); + } + } + return _qtChatHandler; +} + +PSms * QtFactory::createPresentationSms(CSms & cSms) { + if (!_qtSms) { + _qtSms = new QtSms(cSms); + } + return _qtSms; +} + +PSoftUpdate * QtFactory::createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) { + if (!_qtSoftUpdate) { + _qtSoftUpdate = new QtSoftUpdate(cSoftUpdate); + } + return _qtSoftUpdate; +} + +PHistory * QtFactory::createPresentationHistory(CHistory & cHistory) { + if (!_qtHistory) { + _qtHistory = new QtHistory(cHistory); + } + return _qtHistory; +} + +PConferenceCall * QtFactory::createPresentationConferenceCall(CConferenceCall & cConferenceCall) { + return NULL; +} + +void QtFactory::postEventImpl(IThreadEvent * event) { + QCoreApplication::postEvent(this, new QtThreadEvent(event)); +} + +//DtmfThemeManager +void QtFactory::createPresentationDtmfThemeManager(CDtmfThemeManager & _cDtmfThemeManager) { + if (!_qtDialpad) { + _qtDialpad = new QtDialpad(_cDtmfThemeManager, _qtQuteCom); + _qtQuteCom->setQtDialpad(_qtDialpad); + } +} + +void QtFactory::openUrl(const QUrl& url) { + std::string urlString(url.toString().toUtf8()); + WebBrowser::openUrl(urlString); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtFactory.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtFactory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,144 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTFACTORY_H +#define OWQTFACTORY_H + +#include + +#include + +#include + +class PQuteCom; +class CQuteCom; +class PUserProfile; +class CUserProfile; +class PUserProfileHandler; +class CUserProfileHandler; +class PPhoneLine; +class CPhoneLine; +class PPhoneCall; +class CPhoneCall; +class PContactList; +class CContactList; +class PChatHandler; +class CChatHandler; +class PSms; +class CSms; +class PSoftUpdate; +class CSoftUpdate; +class PHistory; +class CHistory; +class PConferenceCall; +class CConferenceCall; +class CDtmfThemeManager; + +class QtContactList; +class QtChatHandler; +class QtSms; +class QtSoftUpdate; +class QtHistory; +class CQuteCom; +class QtQuteCom; +class QtUserProfileHandler; +class QtDialpad; + +class QUrl; + +#ifndef OS_WINDOWS + class QApplication; +#else + class WinApp; +#endif + +class QtFactory : public QObject, public PFactory { + Q_OBJECT +public: + + QtFactory(int & argc, char * argv[]); + + void processEvents(); + + int exec(); + + void reset(); + + PQuteCom * createPresentationQuteCom(CQuteCom & cQuteCom, bool runInBackground); + + PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile); + + PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler); + + PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine); + + PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall); + + PContactList * createPresentationContactList(CContactList & cContactList); + + PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler); + + PSms * createPresentationSms(CSms & cSms); + + PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate); + + PHistory * createPresentationHistory(CHistory & cHistory); + + PConferenceCall * createPresentationConferenceCall(CConferenceCall & cConferenceCall); + + //DtmfThemeManager + void createPresentationDtmfThemeManager(CDtmfThemeManager & _cDtmfThemeManager); + +public Q_SLOTS: + /** + * Slot to integrate WebBrowser with QDesktopServices + */ + void openUrl(const QUrl& url); + +private: + + void postEventImpl(IThreadEvent * event); + +#ifndef OS_WINDOWS + QApplication * _app; +#else + WinApp *_app; +#endif + + QtContactList * _qtContactList; + + QtChatHandler * _qtChatHandler; + + QtSms * _qtSms; + + QtSoftUpdate * _qtSoftUpdate; + + QtHistory * _qtHistory; + + CQuteCom * _cQuteCom; + + QtQuteCom * _qtQuteCom; + + QtUserProfileHandler * _qtUserProfileHandler; + + //DtmfThemeManager + QtDialpad * _qtDialpad; +}; + +#endif //OWQTFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtHttpProxyLogin.h" + +#include "ui_HttpProxyLoginWindow.h" + +#include + +#include + +QtHttpProxyLogin::QtHttpProxyLogin(QWidget * parent, const std::string & proxyAddress, unsigned proxyPort) + : QObject(parent) { + + _httpProxyLoginWindow = new QDialog(parent); + + _ui = new Ui::HttpProxyLoginWindow(); + _ui->setupUi(_httpProxyLoginWindow); + + WidgetBackgroundImage::setBackgroundImage(_ui->httpProxyLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustSize); + + //addressLineEdit + _ui->addressLineEdit->setText(QString::fromUtf8(proxyAddress.c_str())); + + //portLineEdit + _ui->portLineEdit->setText(QString::number(proxyPort)); +} + +std::string QtHttpProxyLogin::getLogin() const { + return std::string(_ui->loginLineEdit->text().toUtf8()); +} + +std::string QtHttpProxyLogin::getPassword() const { + return std::string(_ui->passwordLineEdit->text().toUtf8()); +} + +std::string QtHttpProxyLogin::getProxyAddress() const { + return std::string(_ui->addressLineEdit->text().toUtf8()); +} + +unsigned QtHttpProxyLogin::getProxyPort() const { + return _ui->portLineEdit->text().toUInt(); +} + +int QtHttpProxyLogin::show() { + return _httpProxyLoginWindow->exec(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtHttpProxyLogin.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTHTTPPROXYLOGIN_H +#define QTHTTPPROXYLOGIN_H + +#include + +#include + +#include + +class QWidget; +class QDialog; +namespace Ui { class HttpProxyLoginWindow; } + +/** + * Window asking for the local HTTP proxy login/password. + * + * @author Tanguy Krotoff + */ +class QtHttpProxyLogin : public QObject, NonCopyable { + Q_OBJECT +public: + + QtHttpProxyLogin(QWidget * parent, const std::string & proxyAddress, unsigned proxyPort); + + QDialog * getWidget() const { + return _httpProxyLoginWindow; + } + + std::string getLogin() const; + + std::string getPassword() const; + + std::string getProxyAddress() const; + + unsigned getProxyPort() const; + +public Q_SLOTS: + + int show(); + +private: + + Ui::HttpProxyLoginWindow * _ui; + + QDialog * _httpProxyLoginWindow; +}; + +#endif //QTHTTPPROXYLOGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIdle.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIdle.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIdle.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIdle.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIdle.h" + +#include +#include +#include + +#define LOGGER_COMPONENT "QtIdle" +#include +#include + +#include + +#include + +QtIdle::QtIdle(UserProfile & userProfile, QObject * parent) + : QObjectThreadSafe(parent), + _userProfile(userProfile) { + + _idle = NULL; + _autoAway = false; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.valueChangedEvent += boost::bind(&QtIdle::configChangedEventHandler, this, _1); + + //Init the idle class + configChangedEventHandler(Config::GENERAL_AWAY_TIMER_KEY); +} + +QtIdle::~QtIdle() { +} + +void QtIdle::setOnlineIMAccountsAway() { + _onlineIMAccountIdList.clear(); + IMAccountManager& imAccountManager = _userProfile.getIMAccountManager(); + IMAccountList imAccountList = imAccountManager.getIMAccountListCopy(); + + IMAccountList::const_iterator + it = imAccountList.begin(), + end = imAccountList.end(); + for (; it!=end; ++it) { + if (it->getPresenceState() == EnumPresenceState::PresenceStateOnline) { + std::string id = it->getUUID(); + _onlineIMAccountIdList.append(id); + + _userProfile.setPresenceState(EnumPresenceState::PresenceStateAway, id); + } + } +} + +void QtIdle::restoreOnlineIMAccounts() { + Q_FOREACH(std::string id, _onlineIMAccountIdList) { + _userProfile.setPresenceState(EnumPresenceState::PresenceStateOnline, id); + } +} + +void QtIdle::slotSecondsIdle(int seconds) { + LOG_DEBUG("seconds=%d", seconds); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + int autoAwaySeconds = config.getGeneralAwayTimer() * 60; + + if (_autoAway) { + if (seconds < autoAwaySeconds) { + LOG_DEBUG("No longer away"); + restoreOnlineIMAccounts(); + _autoAway = false; + } + } else { + if (seconds > autoAwaySeconds) { + LOG_DEBUG("Auto away"); + setOnlineIMAccountsAway(); + _autoAway = true; + } + } +} + +void QtIdle::configChangedEventHandler(const std::string & key) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtIdle::configChangedEventHandlerThreadSafe, this, _1), key); + postEvent(event); +} + +void QtIdle::configChangedEventHandlerThreadSafe(std::string key) { + if (key != Config::GENERAL_AWAY_TIMER_KEY) { + return; + } + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + int interval = config.getGeneralAwayTimer(); + if (interval != Config::NO_AWAY_TIMER) { + if (!_idle) { + _idle = new Idle(this); + SAFE_CONNECT(_idle, SIGNAL(secondsIdle(int)), SLOT(slotSecondsIdle(int)) ); + } + _idle->start(); + } else { + OWSAFE_DELETE(_idle); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIdle.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIdle.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIdle.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIdle.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTIDLE_H +#define OWQTIDLE_H + +#include + +#include + +#include + +class Settings; +class UserProfile; +class Idle; + +/** + * Detects idle status for IM presence. + * + * @see Idle + * @author Tanguy Krotoff + */ +class QtIdle : public QObjectThreadSafe, public Trackable { + Q_OBJECT +public: + + QtIdle(UserProfile & userProfile, QObject * parent); + + virtual ~QtIdle(); + +private Q_SLOTS: + void slotSecondsIdle(int); + +private: + + void initThreadSafe() { } + + void configChangedEventHandler(const std::string & key); + + void configChangedEventHandlerThreadSafe(std::string key); + + /** + * Set presence of all online IMAccounts to away + */ + void setOnlineIMAccountsAway(); + + /** + * Restore IMAccounts which were changed from away to online by + * setOnlineIMAccountsAway + */ + void restoreOnlineIMAccounts(); + + UserProfile & _userProfile; + + QList _onlineIMAccountIdList; + + Idle * _idle; + + bool _autoAway; +}; + +#endif //OWQTIDLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountHelper.h" + +#include + +namespace QtIMAccountHelper { + +void copyListToPtrVector(const IMAccountList& list, QtIMAccountPtrVector* vector) { + IMAccountList::const_iterator + it = list.begin(), + end = list.end(); + + for (; it!=end; ++it) { + vector->push_back(& (*it) ); + } +} + +static int protocolOrder(EnumIMProtocol::IMProtocol protocol) { + switch (protocol) { + case EnumIMProtocol::IMProtocolQuteCom: + return 0; + + case EnumIMProtocol::IMProtocolSIPSIMPLE: + case EnumIMProtocol::IMProtocolSIP: + return 10; + + case EnumIMProtocol::IMProtocolYahoo: + return 20; + + case EnumIMProtocol::IMProtocolMSN: + return 30; + + case EnumIMProtocol::IMProtocolAIM: + return 40; + + case EnumIMProtocol::IMProtocolICQ: + return 50; + + case EnumIMProtocol::IMProtocolJabber: + return 60; + + case EnumIMProtocol::IMProtocolGoogleTalk: + return 70; + + case EnumIMProtocol::IMProtocolFaceBook: + return 80; + + case EnumIMProtocol::IMProtocolMySpace: + return 90; + + case EnumIMProtocol::IMProtocolSkype: + return 100; + + case EnumIMProtocol::IMProtocolTwitter: + return 100; + + case EnumIMProtocol::IMProtocolUnknown: + case EnumIMProtocol::IMProtocolAll: + LOG_FATAL("Protocol should not be " + EnumIMProtocol::toString(protocol)); + return -1; + } + + LOG_FATAL("Unhandled protocol: " + EnumIMProtocol::toString(protocol)); + return -1; +} + +bool compareIMAccountPtrs(const IMAccount* account1, const IMAccount* account2) { + int protocol1Order = protocolOrder(account1->getProtocol()); + int protocol2Order = protocolOrder(account2->getProtocol()); + + if (protocol1Order != protocol2Order) { + return protocol1Order < protocol2Order; + } + + return account1->getLogin() < account2->getLogin(); +} + +} // namespace diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountHelper.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTIMACCOUNTHELPER_H +#define QTIMACCOUNTHELPER_H + +#include +#include + +/** + * This namespace contains code to sort an IMAccountList. + * @see QtIMProfileWidget + * @see QtMultiPresenceStatusHelper + * + * @author Aurelien Gateau + */ +namespace QtIMAccountHelper { + +/** + * The vector which will contains the sorted list. We must use a vector because + * one can't run std::sort on a list. + */ +typedef std::vector QtIMAccountPtrVector; + +/** + * Copy the account list to the provided vector + * @param list the list to copy + * @param vector a pointer to a QtIMAccountPtrVector + */ +void copyListToPtrVector(const IMAccountList& list, QtIMAccountPtrVector* vector); + +/** + * Returns true if account1 is "less than" account2 + */ +bool compareIMAccountPtrs(const IMAccount* account1, const IMAccount* account2); + +} // namespace + + +#endif /* QTIMACCOUNTHELPER_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,228 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtIMAccountMonitor.h" + +#include + +#include +#include +#include + +#include +#include + +#include + +#include + + +QtIMAccountMonitor::QtIMAccountMonitor(QObject* parent, CUserProfile* cUserProfile) +: QObject(parent) +, _cUserProfile(cUserProfile) { + + UserProfile& userProfile = _cUserProfile->getUserProfile(); + + // imAccountManager + IMAccountManager& imAccountManager = userProfile.getIMAccountManager(); + + imAccountManager.imAccountAddedEvent += + boost::bind(&QtIMAccountMonitor::imAccountAddedEventHandler, this, _2); + + imAccountManager.imAccountRemovedEvent += + boost::bind(&QtIMAccountMonitor::imAccountRemovedEventHandler, this, _2); + + // connectHandler + ConnectHandler& connectHandler = userProfile.getConnectHandler(); + + connectHandler.connectedEvent += + boost::bind(&QtIMAccountMonitor::connectedEventHandler, this, _2); + + connectHandler.disconnectedEvent += + boost::bind(&QtIMAccountMonitor::disconnectedEventHandler, this, _2, _3, _4); + + connectHandler.connectionProgressEvent += + boost::bind(&QtIMAccountMonitor::connectionProgressEventHandler, this, _2, _3, _4, _5); + + // presenceHandler + PresenceHandler & presenceHandler = userProfile.getPresenceHandler(); + presenceHandler.myPresenceStatusEvent += + boost::bind(&QtIMAccountMonitor::myPresenceStatusEventHandler, this, _2, _3); + + // Initialize the map with existing accounts + { + QMutexLocker lock(&_imAccountInfoMapMutex); + IMAccountList imAccountList = userProfile.getIMAccountManager().getIMAccountListCopy(); + IMAccountList::const_iterator + it = imAccountList.begin(), + end = imAccountList.end(); + + for (; it!=end; ++it) { + IMAccountInfo info; + if (it->isConnected()) { + info._state = StateConnected; + info._message = connectedMessageForIMAccount(*it); + } else { + info._state = StateDisconnected; + info._message = tr("Disconnected"); + } + + QString id = QString::fromUtf8(it->getUUID().c_str()); + _imAccountInfoMap[id] = info; + } + } +} + +void QtIMAccountMonitor::imAccountAddedEventHandler(std::string imAccountId) { + QString id = QString::fromUtf8(imAccountId.c_str()); + + std::auto_ptr imAccount (_cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId)); + if (!imAccount.get()) { + LOG_FATAL("No such id " + imAccountId); + } + + IMAccountInfo info; + if (imAccount->isConnected()) { + info._state = StateConnected; + info._message = connectedMessageForIMAccount(*imAccount); + } else { + info._state = StateDisconnected; + info._message = tr("Disconnected"); + } + + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap[id] = info; + } + + imAccountAdded(id); +} + +void QtIMAccountMonitor::imAccountRemovedEventHandler(std::string imAccountId) { + QString id = QString::fromUtf8(imAccountId.c_str()); + + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap.remove(id); + } + imAccountRemoved(id); +} + +void QtIMAccountMonitor::connectedEventHandler(std::string imAccountId) { + QString id = QString::fromUtf8(imAccountId.c_str()); + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap[id]._state = StateConnected; + _imAccountInfoMap[id]._message = connectedMessageForIMAccountId(imAccountId); + } + imAccountUpdated(id); +} + +void QtIMAccountMonitor::disconnectedEventHandler(std::string imAccountId, bool connectionError, std::string reason) { + QString id = QString::fromUtf8(imAccountId.c_str()); + ConnectionState state; + + QString message; + if (connectionError) { + state = StateFailure; + message = tr("Error: %1").arg(QString::fromUtf8(reason.c_str())); + } else { + state = StateDisconnected; + message = tr("Disconnected"); + } + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap[id]._state = state; + _imAccountInfoMap[id]._message = message; + } + imAccountUpdated(id); +} + +void QtIMAccountMonitor::connectionProgressEventHandler(std::string imAccountId, int currentStep, int totalSteps, std::string infoMessage) { + QString id = QString::fromUtf8(imAccountId.c_str()); + + QString message = tr("%1 (%2/%3)", "%1 is message, %2 is currentStep, %3 is totalSteps") + .arg(QString::fromUtf8(infoMessage.c_str())) + .arg(currentStep + 1) + .arg(totalSteps); + + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap[id]._state = StateConnecting; + _imAccountInfoMap[id]._message = message; + } + imAccountUpdated(id); +} + +void QtIMAccountMonitor::myPresenceStatusEventHandler(std::string imAccountId, EnumPresenceState::MyPresenceStatus status) { + + if (status == EnumPresenceState::MyPresenceStatusOk) { + QString id = QString::fromUtf8(imAccountId.c_str()); + { + QMutexLocker lock(&_imAccountInfoMapMutex); + _imAccountInfoMap[id]._state = StateConnected; + _imAccountInfoMap[id]._message = connectedMessageForIMAccountId(imAccountId); + } + imAccountUpdated(id); + } +} +QtIMAccountMonitor::IMAccountInfoAutoPtr QtIMAccountMonitor::getIMAccountInfo(const QString& imAccountId) const { + QMutexLocker lock(&_imAccountInfoMapMutex); + if (!_imAccountInfoMap.contains(imAccountId)) { + LOG_WARN("no account found with id " + imAccountId.toUtf8()); + return IMAccountInfoAutoPtr(); + } + return IMAccountInfoAutoPtr( new IMAccountInfo(_imAccountInfoMap[imAccountId]) ); +} + +QString QtIMAccountMonitor::connectedMessageForIMAccountId(std::string imAccountId) { + std::auto_ptr imAccount( _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId) ); + if (!imAccount.get()) { + LOG_FATAL("no account found with id " + imAccountId); + } + QString message = connectedMessageForIMAccount(*imAccount); + return message; +} + +QString QtIMAccountMonitor::connectedMessageForIMAccount(const IMAccount& imAccount) { + EnumPresenceState::PresenceState state = imAccount.getPresenceState(); + switch (state) { + case EnumPresenceState::PresenceStateOnline: + return tr("Online"); + + case EnumPresenceState::PresenceStateInvisible: + return tr("Invisible"); + + case EnumPresenceState::PresenceStateAway: + return tr("Away"); + + case EnumPresenceState::PresenceStateDoNotDisturb: + return tr("Do not disturb"); + + case EnumPresenceState::PresenceStateOffline: + case EnumPresenceState::PresenceStateUserDefined: + case EnumPresenceState::PresenceStateUnknown: + case EnumPresenceState::PresenceStateMulti: + case EnumPresenceState::PresenceStateUnavailable: + LOG_ERROR("Should not get called with a presence of " + EnumPresenceState::toString(state)); + return QString::null; + } + LOG_FATAL("Unhandled presence value " + EnumPresenceState::toString(state)); + return QString::null; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtIMAccountMonitor.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,130 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTIMACCOUNTMONITOR_H +#define QTIMACCOUNTMONITOR_H + +#include + +#include +#include + +#include +#include +#include +#include + +class CUserProfile; +class IMAccount; + + +/** + * This class monitors the changes in the IM accounts of the user. + * It knows about the connection state and details as well as the IM presence. + * It stores transient info not stored in the model, like the fact that the IM + * account is connecting (neither disconnected nor connected yet) or the info + * message of an account which is connecting. + * + * It will emits Qt signals when IM acccounts are added/removed/updated (@see + * imAccountAdded, @see imAccountRemoved, @see imAccountUpdated). + * + * These signals are emitted from the model thread. + * + * @author Aurelien Gateau + */ +class QtIMAccountMonitor : public QObject, public Trackable, private NonCopyable { +Q_OBJECT +public: + enum ConnectionState { + StateDisconnected, /** IM account is disconnected */ + StateConnecting, /** IM account is trying to connect. Use getIMAccountInfo().message() to know more. */ + StateConnected, /** IM account is connected */ + StateFailure /** IM account failed to connect. Use getIMAccountInfo().message() to know more. */ + }; + + /** + * This class gathers the IMAccount information. + */ + class IMAccountInfo { + public: + ConnectionState connectionState() const { + return _state; + } + + QString message() const { + return _message; + } + + private: + ConnectionState _state; + QString _message; + + friend class QtIMAccountMonitor; + }; + + typedef std::auto_ptr IMAccountInfoAutoPtr; + + QtIMAccountMonitor(QObject* parent, CUserProfile*); + + /** + * Returns an auto_ptr to the IMAccountInfo for account imAccountid. If + * there is no such account, the auto_ptr will point to 0. + */ + IMAccountInfoAutoPtr getIMAccountInfo(const QString& imAccountId) const; + +Q_SIGNALS: + /** + * Emitted when an IM account has been added. + * This signal is emitted in the model thread. + */ + void imAccountAdded(QString imAccountId); + + /** + * Emitted when an IM account has been added. + * This signal is emitted in the model thread. + */ + void imAccountRemoved(QString imAccountId); + + /** + * Emitted when an IM account has been added. + * This signal is emitted in the model thread. + */ + void imAccountUpdated(QString imAccountId); + +private: + typedef QMap IMAccountInfoMap; + + void imAccountAddedEventHandler(std::string imAccountId); + void imAccountRemovedEventHandler(std::string imAccountId); + + void connectedEventHandler(std::string imAccountId); + void disconnectedEventHandler(std::string imAccountId, bool connectionError, std::string reason); + void connectionProgressEventHandler(std::string imAccountId, int currentStep, int totalSteps, std::string infoMessage); + + void myPresenceStatusEventHandler(std::string imAccountId, EnumPresenceState::MyPresenceStatus status); + + QString connectedMessageForIMAccountId(std::string imAccountId); + QString connectedMessageForIMAccount(const IMAccount& imAccount); + + CUserProfile* _cUserProfile; + + IMAccountInfoMap _imAccountInfoMap; + mutable QMutex _imAccountInfoMapMutex; +}; + +#endif /* QTIMACCOUNTMONITOR_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtLanguage.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtLanguage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtLanguage.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtLanguage.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,198 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtLanguage.h" + +#include +#include +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +static const char * LANGUAGE_FILE_EXTENSION = "qm"; +static const char * LANG_DIR = "lang"; + +static const char * BRANDING_FILENAME = "config/branding.xml"; + +static KeywordTranslator::KeywordHash readKeywordHash(const std::string& fileName) { + FileReader reader(fileName); + KeywordTranslator::KeywordHash hash; + if (!reader.open()) { + LOG_ERROR("Couldn't open file " + fileName); + return hash; + } + + std::string data = reader.read(); + + Settings settings; + SettingsXMLSerializer serializer(settings); + serializer.unserialize(data); + + StringList list = settings.getAllKeys(); + StringList::const_iterator + it = list.begin(), + end = list.end(); + for (; it!=end; ++it) { + std::string keyword = *it; + std::string value = settings.getStringKeyValue(keyword); + hash[QString::fromUtf8(keyword.c_str())] = QString::fromUtf8(value.c_str()); + } + + return hash; +} + +QtLanguage::QtLanguage(QObject * parent) + : QObjectThreadSafe(parent) { + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.valueChangedEvent += boost::bind(&QtLanguage::configChangedEventHandler, this, _1); + + _qtTranslator = new QTranslator(QCoreApplication::instance()); + + KeywordTranslator::KeywordHash hash = readKeywordHash(config.getResourcesDir() + "/" + BRANDING_FILENAME); + + _appTranslator = new KeywordTranslator(QCoreApplication::instance()); + _appTranslator->setKeywordHash(hash); + _appTranslator->setFallbackTranslator(_qtTranslator); + QCoreApplication::installTranslator(_appTranslator); + + loadLanguageFromConfig(); +} + +QtLanguage::~QtLanguage() { +} + +void QtLanguage::configChangedEventHandler(const std::string & key) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtLanguage::configChangedEventHandlerThreadSafe, this, _1), key); + postEvent(event); +} + +void QtLanguage::configChangedEventHandlerThreadSafe(const std::string & key) { + if (key == Config::LANGUAGE_KEY) { + loadLanguageFromConfig(); + } +} + +QString QtLanguage::getLocaleFileName() { + QString localeName; + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (config.getLanguage() == Config::LANGUAGE_AUTODETECT_KEYVALUE) { + localeName = QLocale::system().name(); + if (localeName == "C") { + // No locale defined, just get out + return QString::null; + } + } else { + localeName = QString::fromUtf8(config.getLanguage().c_str()); + } + return localeName; +} + +QString QtLanguage::getQtLocaleFileName() { + QString localeName = QtLanguage::getLocaleFileName(); + if (!localeName.isEmpty()) { + return "qt_" + localeName; + } else { + return QString::null; + } +} + +QString QtLanguage::getQuteComLocaleFileName() { + QString localeName = QtLanguage::getLocaleFileName(); + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString langDir = QString::fromUtf8(config.getResourcesDir().c_str()) + LANG_DIR; + if (!localeName.isEmpty()) { + return langDir + QDir::separator() + "qtqutecom_" + localeName; + } else { + return QString::null; + } +} + +void QtLanguage::loadLanguageFromConfig() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString qtTranslationName = getQtLocaleFileName(); + + QString langDir = QString::fromUtf8(config.getResourcesDir().c_str()) + LANG_DIR; + bool qtTranslationLoaded = _qtTranslator->load(qtTranslationName, langDir); + +#ifdef QT_TRANSLATION_DIR + if (!qtTranslationLoaded) { + qtTranslationLoaded = _qtTranslator->load(qtTranslationName, QT_TRANSLATION_DIR); + } +#endif + if (!qtTranslationLoaded) { + LOG_INFO("no Qt translation available for locale '" + getLocaleFileName().toUtf8() + "'"); + } + + LOG_DEBUG(getQuteComLocaleFileName().toUtf8()); + if (!_appTranslator->load(getQuteComLocaleFileName())) { + LOG_INFO("no application translation available for locale '" + getLocaleFileName().toUtf8() + "'"); + } +} + +static QString getIso639CodeFromFileName(const QString & fileName) { + // qtqutecom_en.qm -> en + QRegExp rx("qtqutecom_([^.]+)"); + rx.indexIn(fileName); + QStringList list = rx.capturedTexts(); + if (list.size() != 2) { + return QString(); + } + QString code = list[1]; + //code.replace("_", "-"); + return code/*.toLower()*/; +} + +QStringList QtLanguage::getAvailableLanguages() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + QStringList languageList; + QDir dir(QString::fromUtf8(config.getResourcesDir().c_str()) + LANG_DIR); + + Q_FOREACH(QFileInfo fileInfo, dir.entryInfoList()) { + + if (fileInfo.isFile() && + fileInfo.size() && + (fileInfo.completeSuffix().toUtf8() == LANGUAGE_FILE_EXTENSION)) { + + QString iso639Code = getIso639CodeFromFileName(fileInfo.fileName()); + if (iso639Code.isEmpty()) { + // This can happen if the translation dir contains other files + // (like Qt translations) + continue; + } + std::string language = LanguageList::getLanguageName(std::string(iso639Code.toUtf8())); + languageList += QString::fromUtf8(language.c_str()); + } + } + + return languageList; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtLanguage.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtLanguage.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtLanguage.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtLanguage.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,73 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTLANGUAGE_H +#define OWQTLANGUAGE_H + +#include + +#include + +class Settings; + +class QString; +class QStringList; +class QTranslator; + +class KeywordTranslator; + +/** + * Changes the language of the application. + * + * TODO QtLanguage should be renamed to QtLocale + * + * @see QTranslator + * @author Tanguy Krotoff + */ +class QtLanguage : public QObjectThreadSafe, public Trackable { + Q_OBJECT +public: + + QtLanguage(QObject * parent); + + ~QtLanguage(); + + static QStringList getAvailableLanguages(); + + static QString getQuteComLocaleFileName(); + +private: + + void initThreadSafe() { } + + void loadLanguageFromConfig(); + + void configChangedEventHandler(const std::string & key); + + void configChangedEventHandlerThreadSafe(const std::string & key); + + static QString getLocaleFileName(); + + static QString getQtLocaleFileName(); + + QTranslator * _qtTranslator; + KeywordTranslator * _appTranslator; +}; + +#endif //OWQTLANGUAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtNoQuteComAlert.h" + +#include "ui_NoQuteComAlert.h" + +#include + +//#include +//#include + +#include +#include + +#include + +#include +#include + +#include + +QtNoQuteComAlert::QtNoQuteComAlert(QWidget * parent, QtQuteCom & qtQuteCom) + : _qtQuteCom(qtQuteCom){ + + _NoQuteComAlert = new QDialog(parent); + + _ui = new Ui::NoQuteComAlert(); + _ui->setupUi(_NoQuteComAlert); + + SAFE_CONNECT(_ui->haveBtn, SIGNAL(clicked()), SLOT(haveButtonClicked())); + SAFE_CONNECT(_ui->createBtn, SIGNAL(clicked()), SLOT(createButtonClicked())); +} + +QtNoQuteComAlert::QtNoQuteComAlert(QWidget * parent, QtQuteCom & qtQuteCom, QString title, QString maintext) + : _qtQuteCom(qtQuteCom){ + + _NoQuteComAlert = new QDialog(parent); + + _ui = new Ui::NoQuteComAlert(); + _ui->setupUi(_NoQuteComAlert); + + _NoQuteComAlert->setWindowTitle(title); + _ui->mainText->setText(maintext); + + SAFE_CONNECT(_ui->haveBtn, SIGNAL(clicked()), SLOT(haveButtonClicked())); + SAFE_CONNECT(_ui->createBtn, SIGNAL(clicked()), SLOT(createButtonClicked())); +} + +QtNoQuteComAlert::~QtNoQuteComAlert() { + OWSAFE_DELETE(_ui); +} + +void QtNoQuteComAlert::haveButtonClicked() { + //dear user enjoy a disconnection.... + _qtQuteCom.getQtToolBar().logOff(); +} + +void QtNoQuteComAlert::createButtonClicked() { + WsUrl::showQuteComAccountCreation(); +} + +void QtNoQuteComAlert::setDialogText(QString newtext) { + _ui->mainText->setText(newtext); +} + +void QtNoQuteComAlert::setTitle(QString newtitle) { + _NoQuteComAlert->setWindowTitle(newtitle); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtNoQuteComAlert.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTNOQUTECOMALERT_H +#define OWQTNOQUTECOMALERT_H + +#include + +class QWidget; +class QDialog; +class QtQuteCom; + +namespace Ui { class NoQuteComAlert; } + +/** + * Pop up Alert when user does not have a qutecom account + * + * @author Xavier Desjardins + */ +class QtNoQuteComAlert : public QObject { + Q_OBJECT +public: + + QtNoQuteComAlert(QWidget * parent, QtQuteCom & qtQuteCom); + + QtNoQuteComAlert(QWidget * parent, QtQuteCom & qtQuteCom, QString title, QString maintext); + + ~QtNoQuteComAlert(); + + QDialog * getQDialog() const { + return _NoQuteComAlert; + } + + void setDialogText(QString newtext); + + void setTitle(QString newtitle); + +private Q_SLOTS: + + void haveButtonClicked(); + + void createButtonClicked(); + +private: + + Ui::NoQuteComAlert * _ui; + + QDialog * _NoQuteComAlert; + + QtQuteCom & _qtQuteCom; +}; + +#endif //OWQTNOQUTECOMALERT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,77 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPresenceMenuManager.h" + +#include + +#include +#include + +#include +#include + +#include + +#include + + +QtPresenceMenuManager::QtPresenceMenuManager(QObject* parent, CUserProfileHandler* cUserProfileHandler, QtQuteCom * qtQuteCom) + : QObject(parent), + _cUserProfileHandler(cUserProfileHandler), + _qtQuteCom(qtQuteCom) { +} + +void QtPresenceMenuManager::addPresenceActions(QMenu* menu) { + addGlobalPresenceAction( + menu, EnumPresenceState::PresenceStateOnline, + QPixmap(":/pics/status/online.png"), tr("Online")); + + addGlobalPresenceAction( + menu, EnumPresenceState::PresenceStateAway, + QPixmap(":/pics/status/away.png"), tr("Away")); + + addGlobalPresenceAction( + menu, EnumPresenceState::PresenceStateDoNotDisturb, + QPixmap(":/pics/status/donotdisturb.png"), tr("Do Not Disturb")); + + addGlobalPresenceAction( + menu, EnumPresenceState::PresenceStateInvisible, + QPixmap(":/pics/status/invisible.png"), tr("Invisible")); + + menu->addSeparator(); + QAction* logOffAction = menu->addAction(tr("Log off"), this, SLOT(logOff()) ); + + bool connected = _cUserProfileHandler->getCUserProfile()->getUserProfile().isConnected(); + logOffAction->setEnabled(connected); +} + +void QtPresenceMenuManager::addGlobalPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text) { + QAction* action = menu->addAction(pix, text, this, SLOT(slotGlobalPresenceActionTriggered()) ); + _actionToState[action] = state; +} + +void QtPresenceMenuManager::slotGlobalPresenceActionTriggered() { + EnumPresenceState::PresenceState state = _actionToState[sender()]; + _cUserProfileHandler->getCUserProfile()->getUserProfile().setAllPresenceState(state); +} + +void QtPresenceMenuManager::logOff() { + _qtQuteCom->getQtToolBar().logOff(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresenceMenuManager.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QTPRESENCEMENUMANAGER_H +#define QTPRESENCEMENUMANAGER_H + +#include +#include + +#include + +class CUserProfileHandler; +class QAction; +class QMenu; +class QPixmap; +class QString; +class QtQuteCom; + + +/** + * This class manages the menu actions for the global presence + * + * @author Aurelien Gateau + */ +class QtPresenceMenuManager : public QObject { + Q_OBJECT +public: + QtPresenceMenuManager(QObject * parent, CUserProfileHandler * cUserProfileHandler, + QtQuteCom * qtQuteCom); + + /** + * Fills menu with actions to modify the global presence + */ + void addPresenceActions(QMenu* menu); + +private Q_SLOTS: + void slotGlobalPresenceActionTriggered(); + void logOff(); + +private: + void addGlobalPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text); + + QMap _actionToState; + CUserProfileHandler* _cUserProfileHandler; + + QtQuteCom * _qtQuteCom; +}; + +#endif // QTPRESENCEMENUMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,124 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtPresencePixmapHelper.h" + +#include +#include +#include + +#include +#include + +#include + +#include "QtIMAccountHelper.h" + + +static QPainterPath createArcPath(int centerX, int centerY, int radius, int startAngle, int stopAngle) { + QPainterPath path; + path.moveTo(centerX, centerY); + path.arcTo(centerX - radius, centerY - radius, 2*radius, 2*radius, startAngle, stopAngle - startAngle + 1); + return path; +} + + +QPixmap QtPresencePixmapHelper::compose(QPixmap pix1, QPixmap pix2, int startAngle, int stopAngle) { + QPixmap out(pix1); + QPainter painter(&out); + QPainterPath path = createArcPath(_centerX, _centerY, _radius, startAngle, stopAngle); + painter.setClipPath(path); + painter.drawPixmap(0, 0, pix2); + painter.end(); + return out; +} + + +QtPresencePixmapHelper::QtPresencePixmapHelper(const IMAccountList& imAccountList) { + // Create a sorted vector of accounts + QtIMAccountHelper::QtIMAccountPtrVector imAccountPtrVector; + QtIMAccountHelper::copyListToPtrVector(imAccountList, &imAccountPtrVector); + std::sort(imAccountPtrVector.begin(), imAccountPtrVector.end(), QtIMAccountHelper::compareIMAccountPtrs); + //// + + QtIMAccountHelper::QtIMAccountPtrVector::const_iterator + it = imAccountPtrVector.begin(), + end = imAccountPtrVector.end(); + + QList list; + + for (; it!=end; ++it) + { + if(!list.contains((*it)->getUUID())) + { + EnumPresenceState::PresenceState state; + if ((*it)->isConnected()) { + state = (*it)->getPresenceState(); + } else { + state = EnumPresenceState::PresenceStateOffline; + } + _summary.push_back(state); + list.append((*it)->getUUID()); + } + } +} + + +QPixmap QtPresencePixmapHelper::createPixmap(const QString& tmpl, int centerX, int centerY, int radius) { + QtPresencePixmapHelper::PresenceSummary::const_reverse_iterator + it = _summary.rbegin(), + end = _summary.rend(); + + _centerX = centerX; + _centerY = centerY; + _radius = radius; + + int total = _summary.size(); + + int angle = 90 + 360 / total; + int newAngle; + + QString presenceString = QString::fromUtf8( EnumPresenceState::toString(*it).c_str() ); + QString name = tmpl.arg(presenceString); + QPixmap out(name); + if (out.isNull()) { + LOG_WARN("Image " + name.toUtf8() + " does not exist"); + return QPixmap(); + } + + ++it; + for (; it!=end; ++it) { + presenceString = QString::fromUtf8( EnumPresenceState::toString(*it).c_str() ); + QString name = tmpl.arg(presenceString); + QPixmap pix(name); + if (pix.isNull()) { + LOG_WARN("Image " + name.toUtf8() + " does not exist"); + continue; + } + + newAngle = angle + 360 / total; + + out = compose(out, pix, angle, newAngle); + + angle = newAngle; + } + + return out; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtPresencePixmapHelper.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,65 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef QTPRESENCEPIXMAPHELPER_H +#define QTPRESENCEPIXMAPHELPER_H + +#include + +#include + +class IMAccountList; +class QPixmap; +class QString; + +/** + * This is a small helper class to generate status pixmaps for QtProfileBar and + * QtSystray + * + * @author Aurelien Gateau + */ +class QtPresencePixmapHelper { +public: + QtPresencePixmapHelper(const IMAccountList& accountList); + + /** + * Create a status pixmap according to the presence of the various accounts + * If the accounts are not all using the same presence, it will return a + * pixmap containing pies of the corresponding presence images. + * + * @param name: template for presence image names. %1 will be replaced + * by the string representation of the presence. + * @param centerX: X coordinate of the center + * @param centerY: Y coordinate of the center + * @param radius: radius of the circle + */ + QPixmap createPixmap(const QString& name, int centerX, int centerY, int radius); + +private: + typedef std::list PresenceSummary; + PresenceSummary _summary; + + int _centerX; + int _centerY; + int _radius; + + QPixmap compose(QPixmap pix1, QPixmap pix2, int startAngle, int stopAngle); +}; + + +#endif /* QTPRESENCEPIXMAPHELPER_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteCom.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteCom.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteCom.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteCom.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,917 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtQuteCom.h" + +#include "ui_QuteComWindow.h" + +#include +#include + +#include + +#include "QtSystray.h" +#include "QtHttpProxyLogin.h" +#include "QtDialpad.h" +#include "QtIdle.h" +#include "QtLanguage.h" +#include "QtToolBar.h" +#include "QtBrowserWidget.h" +#include "QtIMAccountMonitor.h" +#include "callbar/QtCallBar.h" +#include "callbar/QtPhoneComboBox.h" +#include "contactlist/QtContactList.h" +#include "filetransfer/QtFileTransfer.h" +#include "history/QtHistoryWidget.h" +#include "imaccount/QtIMAccountManager.h" +#include "phonecall/QtContactCallListWidget.h" +#include "phonecall/QtPhoneCall.h" +#include "profile/QtProfileDetails.h" +#include "profilebar/QtProfileBar.h" +#include "statusbar/QtStatusBar.h" +#include "webservices/sms/QtSms.h" + +#include "webdirectory/QtWebDirectory.h" + +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include + +#include +#include +#include +#include +#include + +#include + +#if defined(OS_MACOSX) + #include +#endif + +static const char * CSS_DIR = "css"; + +using namespace std; + +QtQuteCom::QtQuteCom(CQuteCom & cQuteCom) + : QObjectThreadSafe(NULL), + _cQuteCom(cQuteCom) { + + _qutecomPhoneWindow = NULL; + _qtSystray = NULL; + _qtSms = NULL; + _qtContactList = NULL; + _qtHistoryWidget = NULL; + _qtContactCallListWidget = NULL; + _qtIdle = NULL; + _qtLanguage = NULL; + _qtStatusBar = NULL; + _qtFileTransfer = NULL; + _qtBrowserWidget = NULL; + _chatWindow = NULL; + _activeTabBeforeCall = NULL; + _qtWebDirectory = NULL; + _want_to_exit = false; + + NetworkProxyDiscovery::getInstance().proxyNeedsAuthenticationEvent += + boost::bind(&QtQuteCom::proxyNeedsAuthenticationEventHandler, this, _1, _2); + NetworkProxyDiscovery::getInstance().wrongProxyAuthenticationEvent += + boost::bind(&QtQuteCom::wrongProxyAuthenticationEventHandler, this, _1, _2); + + //Check if the event has not already been sent + if (NetworkProxyDiscovery::getInstance().getState() == + NetworkProxyDiscovery::NetworkProxyDiscoveryStateNeedsAuthentication) { + proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery::getInstance(), + NetworkProxyDiscovery::getInstance().getNetworkProxy()); + } + + qRegisterMetaType("QVariant"); + + //Initialize libwebcam for the Qt thread. + WebcamDriver::apiInitialize(); + //// + + initUi(); + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtQuteCom::initThreadSafe, this)); + postEvent(event); +} + +QtQuteCom::~QtQuteCom() { + //TODO delete created objects +} + +void QtQuteCom::terminatedEventHandler() { + if(_want_to_exit) + QCoreApplication::exit(EXIT_SUCCESS); +} + +void QtQuteCom::initUi() { + +#if defined(MULTIIMWRAPPER) + IMWrapperFactory::getFactory().terminatedEvent += boost::bind(&QtQuteCom::terminatedEventHandler,this); +#endif + // Init parts of the UI which do not rely on Control layer + QApplication::setQuitOnLastWindowClosed(false); + + loadStyleSheets(); + + //Translation + _qtLanguage = new QtLanguage(this); + + _qutecomPhoneWindow = new QMainWindow(NULL); + + _ui = new Ui::QuteComWindow(); + _ui->setupUi(_qutecomPhoneWindow); + _ui->tabWidget->setDocumentMode(true); + +#ifndef CUSTOM_ACCOUNT + _ui->actionShowQuteComAccount->setVisible(false); +#endif + +#ifdef DISABLE_FILETRANSFER + _ui->actionShowFileTransfer->setVisible(false); +#endif + +#ifdef OS_MACOSX + _ui->actionShowAbout->setMenuRole(QAction::AboutRole); + _ui->actionShowConfig->setMenuRole(QAction::PreferencesRole); + _ui->actionQuit->setMenuRole(QAction::QuitRole); + //fixMacOSXMenus(); +#endif + + LANGUAGE_CHANGE(_qutecomPhoneWindow); + +#ifdef OS_LINUX + const std::string &applicationIconPath = ConfigManager::getInstance().getCurrentConfig().getApplicationIconPath(); + _qutecomPhoneWindow->setWindowIcon(QIcon(QString::fromUtf8(applicationIconPath.c_str()))); +#endif + + //Install the close event filter + CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(closeWindow())); + _qutecomPhoneWindow->installEventFilter(closeEventFilter); + + //QtCallBar + _ui->callBar->getQtPhoneComboBox()->setQtQuteCom(this); + + //QtToolBar + _qtToolBar = new QtToolBar(*this, _ui, _qutecomPhoneWindow); + + //phoneComboBox + SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxClicked()), SLOT(phoneComboBoxClicked())); + + //Buttons initialization + initCallButtons(); + + //QtStatusBar + _qtStatusBar = new QtStatusBar(this, _ui->statusBar); + +#if defined(CUSTOM_ACCOUNT) + _qtWebDirectory = new QtWebDirectory(0); +#endif + + installQtBrowserWidget(); + +#if defined(OS_MACOSX) + _qutecomPhoneWindow->setUnifiedTitleAndToolBarOnMac(true); +#endif + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + mainWindowGeometry(config); +} + +void QtQuteCom::initThreadSafe() { + // The code in this method relies on the Control layer + _qtSystray = new QtSystray(this); + + updatePresentation(); +} + +void QtQuteCom::loadStyleSheets() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QDir dir(QString::fromUtf8(config.getResourcesDir().c_str()) + CSS_DIR); + + QStringList filters; + filters << "*.css"; + QStringList cssList; + Q_FOREACH(QFileInfo fileInfo, dir.entryInfoList(filters)) { + QString path = fileInfo.absoluteFilePath(); + QFile file(path); + if (!file.open(QIODevice::ReadOnly)) { + LOG_WARN("Can't open " + path.toUtf8()); + continue; + } + QByteArray content = file.readAll(); + cssList << QString::fromUtf8(content); + } + QString styleSheet = cssList.join("\n"); + qApp->setStyleSheet(styleSheet); +} + +void QtQuteCom::mainWindowGeometry(Config & config) { + //default position and size given by Qt + QPoint defaultPos = _qutecomPhoneWindow->pos(); + QSize defaultSize = _qutecomPhoneWindow->size(); + + int profileWidth = config.getProfileWidth(); + if (profileWidth == 0) { + // Make sure the toolbar is fully visible + profileWidth = qMax( + _ui->toolBar->sizeHint().width(), + _qutecomPhoneWindow->sizeHint().width() + ); + } + + int profileHeight = config.getProfileHeight(); + + //Main window size and position saved + _qutecomPhoneWindow->resize(profileWidth, profileHeight); + _qutecomPhoneWindow->move(QPoint(config.getProfilePosX(), config.getProfilePoxY())); + + //tests if the QuteCom is visible, if not sends it back to its default position and size + QDesktopWidget* desktop = QApplication::desktop(); + if (desktop->screenNumber(_qutecomPhoneWindow) == -1) { + LOG_DEBUG("Main window is NOT visible !!"); + _qutecomPhoneWindow->resize(defaultSize); + _qutecomPhoneWindow->move(defaultPos); + } +} + +QWidget * QtQuteCom::getWidget() const { + return _qutecomPhoneWindow; +} + +QtProfileBar * QtQuteCom::getQtProfileBar() const { + return _ui->profileBar; +} + +QtBrowserWidget * QtQuteCom::getQtBrowserWidget() const { + return _qtBrowserWidget; +} + +CQuteCom & QtQuteCom::getCQuteCom() const { + return _cQuteCom; +} + +void QtQuteCom::setQtSms(QtSms * qtSms) { + _qtSms = qtSms; +} + +QtSms * QtQuteCom::getQtSms() const { + return _qtSms; +} + +QtWebDirectory * QtQuteCom::getQtWebDirectory() const { + return _qtWebDirectory; +} + +QtToolBar & QtQuteCom::getQtToolBar() const { + return *_qtToolBar; +} + +QtStatusBar & QtQuteCom::getQtStatusBar() const { + return *_qtStatusBar; +} + +QtSystray & QtQuteCom::getQtSystray() const { + return *_qtSystray; +} + +QtCallBar & QtQuteCom::getQtCallBar() const { + return *_ui->callBar; +} + +void QtQuteCom::setChatWindow(QWidget * chatWindow) { + if (!chatWindow) { + _chatWindow = NULL; + _ui->actionOpenChatWindow->setEnabled(false); + } + else { + _chatWindow = chatWindow; + _ui->actionOpenChatWindow->setEnabled(true); + } +} + +QWidget * QtQuteCom::getChatWindow() const { + return _chatWindow; +} + +void QtQuteCom::closeChatWindow() { + if (_chatWindow) + { + ((QtChatWindow *)_chatWindow)->closeAllTabs (); + } +} + +void QtQuteCom::setQtContactList(QtContactList * qtContactList) { + _qtContactList = qtContactList; + + if (!_ui->tabContactList->layout()) { + Widget::createLayout(_ui->tabContactList); + } + + _ui->tabContactList->layout()->addWidget(_qtContactList->getWidget()); + + LOG_DEBUG("QtContactList added"); +} + +QtContactList * QtQuteCom::getQtContactList() const { + return _qtContactList; +} + +void QtQuteCom::setQtHistoryWidget(QtHistoryWidget * qtHistoryWidget) { + _qtHistoryWidget = qtHistoryWidget; + _qtHistoryWidget->setQtToolBar(_qtToolBar); + _qtHistoryWidget->setQtCallBar(_ui->callBar); + + if (!_ui->tabHistory->layout()) { + Widget::createLayout(_ui->tabHistory); + } + + _qtHistoryWidget->getWidget()->setParent(_ui->tabHistory); + _ui->tabHistory->layout()->addWidget(_qtHistoryWidget->getWidget()); + + LOG_DEBUG("QtHistoryWidget added"); +} + +void QtQuteCom::setQtDialpad(QtDialpad * qtDialpad) { + Widget::createLayout(_ui->tabDialpad)->addWidget(qtDialpad); + LOG_DEBUG("QtDialpad added"); +} + +void QtQuteCom::initCallButtons() { + //callButton + SAFE_CONNECT(_ui->callBar, SIGNAL(callButtonClicked()), SLOT(callButtonClicked())); + enableCallButton(); + + //hangUpButton + SAFE_CONNECT(_ui->callBar, SIGNAL(hangUpButtonClicked()), SLOT(hangUpButtonClicked())); + _ui->callBar->setEnabledHangUpButton(false); + + //phoneComboBox + SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxReturnPressed()), SLOT(callButtonClicked())); + SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxEditTextChanged(const QString &)), SLOT(enableCallButton())); +} + +void QtQuteCom::enableCallButton() { + std::string phoneNumber = _ui->callBar->getPhoneComboBoxCurrentText(); + _ui->callBar->setEnabledCallButton(!phoneNumber.empty()); +} + +void QtQuteCom::hangUpButtonClicked() { + QtContactCallListWidget * widget = + dynamic_cast(_ui->tabWidget->currentWidget()); + if (widget) { + widget->hangup(); + } +} + +void QtQuteCom::callButtonClicked() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + std::string phoneNumber = _ui->callBar->getPhoneComboBoxCurrentText(); + if (!phoneNumber.empty()) { + CUserProfile * cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + cUserProfile->makeCallErrorEvent += boost::bind(&QtQuteCom::makeCallErrorEventHandler, this, _2); + cUserProfile->makeCall(phoneNumber); + } + _ui->callBar->clearPhoneComboBoxEditText(); + } +} + +void QtQuteCom::setActiveTabBeforeCallCurrent() { + _ui->tabWidget->setCurrentWidget(_activeTabBeforeCall); +} + +void QtQuteCom::makeCallErrorEventHandler(EnumMakeCallError::MakeCallError error) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtQuteCom::makeCallErrorEventHandlerThreadSafe, this, _1), error); + postEvent(event); +} + +void QtQuteCom::makeCallErrorEventHandlerThreadSafe(EnumMakeCallError::MakeCallError error) { + QString message; + switch (error) { + case EnumMakeCallError::CallNotHeld: + message = tr("Please hold all the phone calls before placing a new one"); + break; + case EnumMakeCallError::NotConnected: + message = tr("Can't place a call, you are not connected"); + break; + case EnumMakeCallError::EmptyPhoneNumber: + message = tr("You must enter a phone number"); + break; + case EnumMakeCallError::SipError: + message = tr("An error has occured trying to place the call"); + break; + case EnumMakeCallError::NoError: + LOG_FATAL("Should not happen"); + break; + } + QMessageBox::warning(_qutecomPhoneWindow, tr("@product@ - Call Error"), + message, QMessageBox::Ok); +} + +void QtQuteCom::addPhoneCall(QtPhoneCall * qtPhoneCall) { + _activeTabBeforeCall = _ui->tabWidget->currentWidget(); + + QtContactCallListWidget * qtContactCallListWidget = new QtContactCallListWidget(_cQuteCom, NULL); + SAFE_CONNECT(qtContactCallListWidget, SIGNAL(aboutToClose()), SLOT(setActiveTabBeforeCallCurrent()) ); + _ui->tabWidget->addTab(qtContactCallListWidget, tr("Call")); + _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); + qtContactCallListWidget->addPhoneCall(qtPhoneCall); + + _ui->callBar->setEnabledHangUpButton(true); + + if (qtPhoneCall->isIncoming()) { + _ui->callBar->setEnabledCallButton(true); + } +} + +void QtQuteCom::addToConference(QString phoneNumber, PhoneCall * targetCall) { + //FIXME conference has to be 100% rewritten... + /*bool conferenceAlreadyStarted = false; + + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + int nbtab = _ui->tabWidget->count(); + + for (int i = 0; i < nbtab; i++) { + if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) { + return; + } + + for (int j = 0; j < _ui->tabWidget->count(); j++) { + QtContactCallListWidget * qtContactCallListWidget = dynamic_cast(_ui->tabWidget->widget(j)); + if (qtContactCallListWidget) { + if (qtContactCallListWidget->hasPhoneCall(targetCall)) { + _ui->tabWidget->setTabText(j, tr("Conference")); + IPhoneLine * phoneLine = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine(); + + if (phoneLine != NULL) { + if (!conferenceAlreadyStarted) { + conferenceAlreadyStarted = true; + ConferenceCall * confCall = new ConferenceCall(*phoneLine); + confCall->addPhoneCall(*targetCall); + confCall->addPhoneNumber(phoneNumber.toUtf8()); + } + } else { + LOG_DEBUG("phoneLine is NULL"); + } + } + } + } + } + }*/ + + if (!_cQuteCom.getCUserProfileHandler().getCUserProfile()) + return; + + IPhoneLine * phoneLine = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine(); + if(!phoneLine) + return; + + for (int i = 0; i < _ui->tabWidget->count(); i++) + { + if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) + return; + } + + ConferenceCall * confCall = new ConferenceCall(*phoneLine); + targetCall->setConferenceCall(confCall); + + PhoneCall * phoneCall2 = confCall->getPhoneCall(std::string(phoneNumber.toUtf8())); + + QtContactCallListWidget * qtContactCallListWidgetTarget = 0; + QtPhoneCall * qtPhoneTarget = 0; + QtPhoneCall * qtPhoneCall2 = 0; + int index2 = -1; + + for (int j = 0; j < _ui->tabWidget->count(); j++) + { + QtContactCallListWidget * qtContactCallListWidget = dynamic_cast(_ui->tabWidget->widget(j)); + if (qtContactCallListWidget) + { + if (!qtContactCallListWidgetTarget && qtContactCallListWidget->hasPhoneCall(targetCall)) + { + _ui->tabWidget->setTabText(j, tr("Conference")); + + qtContactCallListWidgetTarget = qtContactCallListWidget; + qtPhoneTarget = qtContactCallListWidgetTarget->takeQtPhoneCall(targetCall); + } + else if(!qtPhoneCall2 && qtContactCallListWidget->hasPhoneCall(phoneCall2)) + { + qtPhoneCall2 = qtContactCallListWidget->takeQtPhoneCall(phoneCall2); + index2 = j; + + } + } + } + + if( qtContactCallListWidgetTarget) + { + if(qtPhoneCall2) + { + qtPhoneCall2->hideConfButton(); + qtContactCallListWidgetTarget->addPhoneCall(qtPhoneCall2); + _ui->tabWidget->removeTab(index2); + } + if(qtPhoneTarget) + { + qtPhoneTarget->hideConfButton(); + qtContactCallListWidgetTarget->addPhoneCall(qtPhoneTarget); + } + } + + QString address = QString::fromUtf8(targetCall->getPeerSipAddress().getSipAddress().c_str()); + + if(address.contains("@")) + address = address.section("@",0,0); + + if (address.startsWith("sip:")) { + address = address.mid(4); + } + + confCall->addPhoneNumber(std::string(address.toUtf8())); + confCall->addPhoneNumber(std::string(phoneNumber.toUtf8())); + + if(phoneCall2) + phoneCall2->setConferenceCall(confCall); + + if(qtContactCallListWidgetTarget) + qtContactCallListWidgetTarget->slotStartedTalking(qtPhoneTarget); +} + +void QtQuteCom::addToConference(QtPhoneCall * qtPhoneCall) { + + QtContactCallListWidget * qtContactCallListWidget; + + int nbtab = _ui->tabWidget->count(); + + for (int i = 0; i < nbtab; i++) { + if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) { + //i is the index of the conference tab + qtContactCallListWidget = (QtContactCallListWidget *) _ui->tabWidget->widget(i); + qtContactCallListWidget->addPhoneCall(qtPhoneCall); + _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); + return; + } + } + + _activeTabBeforeCall = _ui->tabWidget->currentWidget(); + + //conference tab not found, create a new one + qtContactCallListWidget = new QtContactCallListWidget(_cQuteCom,_qutecomPhoneWindow); + SAFE_CONNECT(qtContactCallListWidget, SIGNAL(aboutToClose()), SLOT(setActiveTabBeforeCallCurrent()) ); + _ui->tabWidget->addTab(qtContactCallListWidget, tr("Conference")); + _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); + qtContactCallListWidget->addPhoneCall(qtPhoneCall); + _ui->callBar->setEnabledHangUpButton(true); +} + +QtFileTransfer * QtQuteCom::getFileTransfer() const { + return _qtFileTransfer; +} + +void QtQuteCom::updatePresentation() { + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtQuteCom::updatePresentationThreadSafe, this)); + postEvent(event); +} + +void QtQuteCom::updatePresentationThreadSafe() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + //disabled some actions if no SIP Account is used + bool hasSipAccount = _cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile().hasSipAccount(); + + _ui->actionShowQuteComAccount->setEnabled(_cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile().hasQuteComAccount()); + _ui->actionSendSms->setEnabled(hasSipAccount); + _ui->actionCreateConferenceCall->setEnabled(hasSipAccount); + _ui->actionSearchQuteComContact->setEnabled(hasSipAccount); + } +} + +void QtQuteCom::dialpad(const std::string & tone) { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + _ui->callBar->setPhoneComboBoxEditText(_ui->callBar->getPhoneComboBoxCurrentText() + tone); + } +} + +void QtQuteCom::dialpadBackspace() { + int s; + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + s = _ui->callBar->getPhoneComboBoxCurrentText().size(); + if(s>0) + { + std::string str = _ui->callBar->getPhoneComboBoxCurrentText(); + str.resize(s-1); + _ui->callBar->setPhoneComboBoxEditText(str); + } + } +} + +void QtQuteCom::dialpadEnter() { + callButtonClicked(); +} + +void QtQuteCom::prepareToExitApplication() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + // check for pending calls + CUserProfile *cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cUserProfile) { + CPhoneLine *cPhoneLine = cUserProfile->getCPhoneLine(); + if (cPhoneLine) { + if (cPhoneLine->hasPendingCalls()) { + + if (QMessageBox::question( + getWidget(), + tr("@product@ - Warning"), + tr("You have unfinished call(s).") + "\n" + + tr("Are you sure you want to exit the application?"), + tr("&Exit"), + tr("&Cancel") + ) == 1) { + return; + } + } + } + } + //// + + + _qtSystray->hide(); + + //Save the window size + QSize winsize = _qutecomPhoneWindow->size(); + config.set(Config::PROFILE_WIDTH_KEY, winsize.width()); + config.set(Config::PROFILE_HEIGHT_KEY, winsize.height()); + + //Save the window position + QPoint winpos = _qutecomPhoneWindow->pos(); + config.set(Config::PROFILE_POSX_KEY, winpos.x()); + config.set(Config::PROFILE_POSY_KEY, winpos.y()); + + QApplication::closeAllWindows(); + QCoreApplication::processEvents(); + + //destroyed chatWindow so that chats are saved + OWSAFE_DELETE(_chatWindow); + //// + + _cQuteCom.terminate(); + + _want_to_exit = true; +} + +void QtQuteCom::phoneComboBoxClicked() { + + _ui->callBar->clearPhoneComboBox(); + _ui->callBar->clearPhoneComboBoxEditText(); +} + +void QtQuteCom::exitEvent() { +#ifndef MULTIIMWRAPPER + QCoreApplication::exit(EXIT_SUCCESS); +#endif +} + +void QtQuteCom::showHistory() { + _ui->tabWidget->setCurrentWidget(_ui->tabHistory); +} + +void QtQuteCom::currentUserProfileWillDieEventHandlerSlot() { + //Signal for re-initializing graphical components + //when there is no user profile anymore + userProfileDeleted(); + + // Reset _qtIMAccountMonitor so that it does not emit signals anymore + _qtIMAccountMonitor.reset(0); + + OWSAFE_DELETE(_qtFileTransfer); + OWSAFE_DELETE(_qtIdle); + _ui->profileBar->reset(); + + if (_qtContactList) { + _ui->tabContactList->layout()->removeWidget(_qtContactList->getWidget()); + OWSAFE_DELETE(_qtContactList); + } + + if (_qtHistoryWidget) { + _ui->tabHistory->layout()->removeWidget(_qtHistoryWidget->getWidget()); + OWSAFE_DELETE(_qtHistoryWidget); + } + + uninstallQtBrowserWidget(); +} + +void QtQuteCom::userProfileInitializedEventHandlerSlot() { + CUserProfile * cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + + //Idle detection + //FIXME: QtIdle must not use UserProfile but CUserProfile + _qtIdle = new QtIdle(cUserProfile->getUserProfile(), _qutecomPhoneWindow); + + // Create account monitor + _qtIMAccountMonitor.reset( new QtIMAccountMonitor(0, cUserProfile) ); + + //Create the profilebar + _ui->profileBar->init(&_cQuteCom, cUserProfile, _qtIMAccountMonitor.get()); + + // Systray + SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountAdded(QString)), + _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); + SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountUpdated(QString)), + _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); + SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountRemoved(QString)), + _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); + + _qtSystray->setTrayMenu(); + _qtSystray->updateSystrayIcon(); + + _qtFileTransfer = new QtFileTransfer(this, _cQuteCom.getQuteCom().getCoIpManager()); + + //menu + _qtToolBar->userProfileIsInitialized(); +} + +void QtQuteCom::proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = + new MyPostEvent(boost::bind(&QtQuteCom::proxyNeedsAuthenticationEventHandlerThreadSafe, this, _1), networkProxy); + postEvent(event); +} + +void QtQuteCom::wrongProxyAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = + new MyPostEvent(boost::bind(&QtQuteCom::proxyNeedsAuthenticationEventHandlerThreadSafe, this, _1), networkProxy); + postEvent(event); +} + +void QtQuteCom::proxyNeedsAuthenticationEventHandlerThreadSafe(NetworkProxy networkProxy) { + static QtHttpProxyLogin * httpProxy = + new QtHttpProxyLogin(getWidget(), + networkProxy.getServer(), networkProxy.getServerPort()); + + int ret = httpProxy->show(); + + if (ret == QDialog::Accepted) { + NetworkProxy myNetworkProxy; + myNetworkProxy.setServer(httpProxy->getProxyAddress()); + myNetworkProxy.setServerPort(httpProxy->getProxyPort()); + myNetworkProxy.setLogin(httpProxy->getLogin()); + myNetworkProxy.setPassword(httpProxy->getPassword()); + + NetworkProxyDiscovery::getInstance().setProxySettings(myNetworkProxy); + } +} + +void QtQuteCom::closeWindow() { + _qutecomPhoneWindow->hide(); +} + +//#if defined(OS_MACOSX) +//void QtQuteCom::fixMacOSXMenus() { + // Avoids translation of these menus on Mac OS X. Thus Qt + // will put these under the Application menu + //_ui->actionShowConfig->setText("Preferences"); + //_ui->actionShowAbout->setText("About"); + //_ui->actionShowAbout->setText("Close"); +//} +//#endif + +void QtQuteCom::languageChanged() { +//#if defined(OS_MACOSX) + //fixMacOSXMenus(); +//#endif + LOG_DEBUG("retranslate main window ui"); + _ui->retranslateUi(_qutecomPhoneWindow); + _qtToolBar->retranslateUi(); + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + if (_qtBrowserWidget) { + _ui->tabWidget->setTabText(_qtBrowserWidgetTabIndex, tr("Home")); + } + + if (_qtHistoryWidget) { + _qtHistoryWidget->retranslateUi(); + } + + _ui->menuQuteCom->setTitle(tr("Account")); +} + +void QtQuteCom::showAddContact(ContactInfo contactInfo) { + + ensureVisible(); + + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + + //FIXME this method should not be called if no UserProfile has been set + ContactProfile contactProfile; + QtProfileDetails qtProfileDetails(*_cQuteCom.getCUserProfileHandler().getCUserProfile(), + contactProfile, _qutecomPhoneWindow, tr("Add a Contact")); + + //FIXME to remove when wdeal will be able to handle SIP presence + if (contactInfo.group == "WDeal") { + qtProfileDetails.setHomePhone(QUrl::fromPercentEncoding(QByteArray(contactInfo.sip.c_str()))); + } else { + qtProfileDetails.setQuteComName(QUrl::fromPercentEncoding(QByteArray(contactInfo.qutecomName.c_str()))); + } + /// + + if (contactInfo.group == "WDeal") { + qtProfileDetails.setFirstName(QUrl::fromPercentEncoding(QByteArray(contactInfo.wdealServiceTitle.c_str()))); + } else { + qtProfileDetails.setFirstName(QUrl::fromPercentEncoding(QByteArray(contactInfo.firstname.c_str()))); + } + + qtProfileDetails.setLastName(QUrl::fromPercentEncoding(QByteArray(contactInfo.lastname.c_str()))); + qtProfileDetails.setCountry(QUrl::fromPercentEncoding(QByteArray(contactInfo.country.c_str()))); + qtProfileDetails.setCity(QUrl::fromPercentEncoding(QByteArray(contactInfo.city.c_str()))); + qtProfileDetails.setState(QUrl::fromPercentEncoding(QByteArray(contactInfo.state.c_str()))); + qtProfileDetails.setGroup(QUrl::fromPercentEncoding(QByteArray(contactInfo.group.c_str()))); + qtProfileDetails.setWebsite(QUrl::fromPercentEncoding(QByteArray(contactInfo.website.c_str()))); + + if (qtProfileDetails.show()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().addContact(contactProfile); + } + } +} + +void QtQuteCom::bringMainWindowToFront() { + ensureVisible(); +} + +void QtQuteCom::ensureVisible() { + _qutecomPhoneWindow->activateWindow(); + _qutecomPhoneWindow->showNormal(); + _qutecomPhoneWindow->raise(); +} + +void QtQuteCom::installQtBrowserWidget() +{ + if(!_qtBrowserWidget) + { + _qtBrowserWidget = new QtBrowserWidget(*this); + _qtBrowserWidgetTabIndex = _ui->tabWidget->insertTab(0,_qtBrowserWidget->getWidget(), tr("Home")); + _ui->tabWidget->setCurrentIndex(0); + } + _qtBrowserWidget->loadProgressURL(); +} + +void QtQuteCom::uninstallQtBrowserWidget() +{ + //if (_qtBrowserWidget) { + // _ui->tabWidget->widget(_qtBrowserWidgetTabIndex)->layout()->removeWidget(_qtBrowserWidget->getWidget()); + // _ui->tabWidget->removeTab(_qtBrowserWidgetTabIndex); + // OWSAFE_DELETE(_qtBrowserWidget); + //} + _qtBrowserWidget->loadDefaultURL(); +} + +void QtQuteCom::setCurrentUserProfileEventHandlerSlot() +{ + _qtBrowserWidget->loadProgressURL(); + _qtToolBar->tryingToConnect(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteCom.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,273 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTQUTECOM_H +#define OWQTQUTECOM_H + +#include + +#include +#include + +#include + +#include + +#include +#include + +#include +#include +#include + +#include +#include + +class CQuteCom; +class Config; +class ContactInfo; +class IMContact; +class PPhoneLine; +class PhoneCall; +class PresenceHandler; +class QtCallBar; +class QtContactCallListWidget; +class QtContactList; +class QtFileTransfer; +class QtHistoryWidget; +class QtIdle; +class QtLanguage; +class QtPhoneCall; +class QtProfileBar; +class QtSms; +class QtStatusBar; +class QtToolBar; +class QtSystray; +class QtToaster; +class QtBrowserWidget; +class QtDialpad; +class UserProfile; +class QtPhoneComboBox; +class QtIMAccountMonitor; + +class QtWebDirectory; + +class QWidget; +class QMenu; +namespace Ui { class QuteComWindow; } + +/** + * Qt Presentation component for QuteCom. + * + * @author Tanguy Krotoff + */ +class QtQuteCom : public QObjectThreadSafe, public PQuteCom, public Trackable { + Q_OBJECT +public: + + QtQuteCom(CQuteCom & cQuteCom); + + ~QtQuteCom(); + + void addPhoneCall(QtPhoneCall * qtPhoneCall); + + void addToConference(QtPhoneCall * qtPhoneCall); + + void updatePresentation(); + + void dialpad(const std::string & tone); + + void dialpadBackspace(); + + void dialpadEnter(); + + void connectionStatusEventHandler(int totalSteps, int currentStep, const std::string & infoMsg); + + void terminatedEventHandler(); + + QWidget * getWidget() const; + + void setQtDialpad(QtDialpad * qtDialpad); + + void setQtContactList(QtContactList * qtContactList); + QtContactList * getQtContactList() const; + + void setQtHistoryWidget(QtHistoryWidget * qtHistoryWidget); + + void setQtSms(QtSms * qtSms); + QtSms * getQtSms() const; + + QtStatusBar & getQtStatusBar() const; + + QtFileTransfer * getFileTransfer() const; + + QtToolBar & getQtToolBar() const; + + QtCallBar & getQtCallBar() const; + + QtSystray & getQtSystray() const; + + QtLanguage & getQtLanguage() const; + + QtProfileBar * getQtProfileBar() const; + + CQuteCom & getCQuteCom() const; + + QtWebDirectory * getQtWebDirectory() const; + + void setChatWindow(QWidget * chatWindow); + QWidget * getChatWindow() const; + void closeChatWindow (); + + void showHistory(); + + void ensureVisible(); + + void showAddContact(ContactInfo contactInfo); + + virtual void bringMainWindowToFront(); + + void installQtBrowserWidget(); + + void uninstallQtBrowserWidget(); + + QtBrowserWidget * getQtBrowserWidget() const; + +public Q_SLOTS: + + void currentUserProfileWillDieEventHandlerSlot(); + + void userProfileInitializedEventHandlerSlot(); + + void hangUpButtonClicked(); + + void prepareToExitApplication(); + + void addToConference(QString phoneNumber, PhoneCall * targetCall); + + void setCurrentUserProfileEventHandlerSlot(); + +private Q_SLOTS: + + void callButtonClicked(); + + void enableCallButton(); + + void phoneComboBoxClicked(); + + void closeWindow(); + + void languageChanged(); + + void setActiveTabBeforeCallCurrent(); + +Q_SIGNALS: + + /** + * Current user profile has been deleted. + * + * Graphical components should be re-initialized: + * QtContactList, QtHistoryWidget, QtProfileBar are removed. + * QtSystray, QtBrowserWidget have to be re-initialized. + */ + void userProfileDeleted(); + +private: + void initUi(); + + void initThreadSafe(); + + /** + * Set the geometry of the mainwindow (position and size). + * + * Load last size and position. If the mainwindow is not visible use default values. + */ + void mainWindowGeometry(Config & config); + + /** + * Initializes pickup and hangup buttons inside the main window. + * + * This is called by QtPhoneCall to re-initialize the buttons + * since QtPhoneCall modifies the behaviour of this buttons. + */ + void initCallButtons(); + + void updatePresentationThreadSafe(); + + void proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy); + + void proxyNeedsAuthenticationEventHandlerThreadSafe(NetworkProxy networkProxy); + + void wrongProxyAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy); + + void makeCallErrorEventHandler(EnumMakeCallError::MakeCallError); + + void makeCallErrorEventHandlerThreadSafe(EnumMakeCallError::MakeCallError); + + void exitEvent(); + +//#ifdef OS_MACOSX +// void fixMacOSXMenus(); +//#endif + + void loadStyleSheets(); + + /** Direct link to the control. */ + CQuteCom & _cQuteCom; + + Ui::QuteComWindow * _ui; + + QMainWindow * _qutecomPhoneWindow; + + QtSystray * _qtSystray; + + QtSms * _qtSms; + + QtContactList * _qtContactList; + + QtHistoryWidget * _qtHistoryWidget; + + QtContactCallListWidget * _qtContactCallListWidget; + + QtIdle * _qtIdle; + + QtLanguage * _qtLanguage; + + QtToolBar * _qtToolBar; + + QtStatusBar * _qtStatusBar; + + QtFileTransfer * _qtFileTransfer; + + QtBrowserWidget * _qtBrowserWidget; + + int _qtBrowserWidgetTabIndex; + + QWidget * _chatWindow; + + QWidget * _activeTabBeforeCall; + + std::auto_ptr _qtIMAccountMonitor; + + QtWebDirectory * _qtWebDirectory; + + bool _want_to_exit; +}; + +#endif //OWQTQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,95 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtQuteComStyle.h" + +#include + +#include +#include + +QtQuteComStyle::QtQuteComStyle() { + QString styleName = QApplication::style()->objectName(); + _systemStyle = QStyleFactory::create(styleName); + _plastiqueStyle = new QPlastiqueStyle(); +} + +QtQuteComStyle::~QtQuteComStyle() { + OWSAFE_DELETE(_systemStyle); + OWSAFE_DELETE(_plastiqueStyle); +} + +void QtQuteComStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, + QPainter * painter, const QWidget * widget) const { + +#if defined(OS_MACOSX) + //QToolButton + //Changes QToolButton style under MacOSX + if (control == CC_ToolButton) { + _plastiqueStyle->drawComplexControl(control, option, painter, widget); + return; + } +#endif + +#if defined(OS_WINDOWS) + //QToolButton + //Changes QToolButton style under Windows if it's not using the application + //palette. We do so because Windows theme does not allow custom background + //colors for tool buttons. + if (control == CC_ToolButton && !option->palette.isCopyOf(QApplication::palette())) { + _plastiqueStyle->drawComplexControl(control, option, painter, widget); + return; + } +#endif + + _systemStyle->drawComplexControl(control, option, painter, widget); +} + +void QtQuteComStyle::drawControl(ControlElement element, const QStyleOption * option, + QPainter * painter, const QWidget * widget) const { + + //QToolbar + //Removes the ugly toolbar bottom line + if (element == CE_ToolBar) { + return; + } + + _systemStyle->drawControl(element, option, painter, widget); +} + +void QtQuteComStyle::drawPrimitive(PrimitiveElement element, const QStyleOption * option, + QPainter * painter, const QWidget * widget) const { + + //QStatusBar + //Removes the ugly frame/marging around the status bar icons under Windows + if (element == PE_FrameStatusBar) { + return; + } + + _systemStyle->drawPrimitive(element, option, painter, widget); +} + +int QtQuteComStyle::styleHint(StyleHint hint, const QStyleOption * option, const QWidget * widget, QStyleHintReturn * returnData) const { + // Make sure rows of list views are fully selected, instead of only items. + if (hint == SH_ItemView_ShowDecorationSelected) { + return true; + } + + return _systemStyle->styleHint(hint, option, widget, returnData); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtQuteComStyle.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,150 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTQUTECOMSTYLE_H +#define OWQTQUTECOMSTYLE_H + +#include + +#ifdef OS_MACOSX + #include + typedef QMacStyle BaseStyle; +#else + #include + typedef QCommonStyle BaseStyle; +#endif + +/** + * General Qt style for correcting some bugs or ugly style. + * + * - Removes the ugly toolbar bottom line + * - Changes QToolButton style under MacOSX + * - Removes the ugly frame/marging around the status bar icons under Windows + * + * @author Tanguy Krotoff + */ +class QtQuteComStyle : public BaseStyle { +public: + + QtQuteComStyle(); + + ~QtQuteComStyle(); + + void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, + QPainter * painter, const QWidget * widget = 0) const; + + void drawControl(ControlElement element, const QStyleOption * option, + QPainter * painter, const QWidget * widget = 0) const; + + void drawPrimitive(PrimitiveElement element, const QStyleOption * option, + QPainter * painter, const QWidget * widget = 0) const; + + /** + * Overloaded to make sure rows of list views are fully selected, instead + * of only items. + */ + int styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const; + +#ifndef OS_MACOSX + void drawItemPixmap(QPainter * painter, const QRect & rectangle, int alignment, const QPixmap & pixmap) const { + _systemStyle->drawItemPixmap(painter, rectangle, alignment, pixmap); + } + + void drawItemText(QPainter * painter, const QRect & rectangle, int alignment, const QPalette & palette, + bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole) const { + _systemStyle->drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole); + } + + QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap & pixmap, const QStyleOption * option) const { + return _systemStyle->generatedIconPixmap(iconMode, pixmap, option); + } + + SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex * option, const QPoint & position, const QWidget * widget = 0) const { + return _systemStyle->hitTestComplexControl(control, option, position, widget); + } + + QRect itemPixmapRect(const QRect & rectangle, int alignment, const QPixmap & pixmap) const { + return _systemStyle->itemPixmapRect(rectangle, alignment, pixmap); + } + + QRect itemTextRect(const QFontMetrics & metrics, const QRect & rectangle, int alignment, bool enabled, const QString & text) const { + return _systemStyle->itemTextRect(metrics, rectangle, alignment, enabled, text); + } + + int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const { + return _systemStyle->pixelMetric(metric, option, widget); + } + + void polish(QWidget * widget) { + _systemStyle->polish(widget); + } + + void polish(QApplication * application) { + _systemStyle->polish(application); + } + + void polish(QPalette & palette) { + _systemStyle->polish(palette); + } + + QSize sizeFromContents(ContentsType type, const QStyleOption * option, const QSize & contentsSize, const QWidget * widget = 0) const { + return _systemStyle->sizeFromContents(type, option, contentsSize, widget); + } + + QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const { + return _systemStyle->standardIcon(standardIcon, option, widget); + } + + QPalette standardPalette() const { + return _systemStyle->standardPalette(); + } + + /* + QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption * option = 0, const QWidget * widget = 0) const { + return _systemStyle->standardPixmap(standardPixmap, option, widget); + }*/ + + QRect subControlRect(ComplexControl control, const QStyleOptionComplex * option, SubControl subControl, const QWidget * widget = 0) const { + return _systemStyle->subControlRect(control, option, subControl, widget); + } + + QRect subElementRect(SubElement element, const QStyleOption * option, const QWidget * widget = 0) const { + return _systemStyle->subElementRect(element, option, widget); + } + + void unpolish(QWidget * widget) { + _systemStyle->unpolish(widget); + } + + void unpolish(QApplication * application) { + _systemStyle->unpolish(application); + } + +#endif + +private: + + QStyle * _systemStyle; + + /** Used on MacOS X for QToolButton appearance. */ + QStyle * _plastiqueStyle; + +}; + +#endif //OWQTQUTECOMSTYLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,195 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSVGDialpad.h" + +#include +#include + +#include +#include +#include +#include + +#include + +#include +#include + +//QRgb -> #AARRGGBB +static const unsigned COLOR_0 = 0xFF000000; +static const unsigned COLOR_1 = 0xFFFF0000; +static const unsigned COLOR_2 = 0xFF00FF00; +static const unsigned COLOR_3 = 0xFFFFFF00; +static const unsigned COLOR_4 = 0xFF0000FF; +static const unsigned COLOR_5 = 0xFFFF00FF; +static const unsigned COLOR_6 = 0xFF00FFFF; +static const unsigned COLOR_7 = 0xFF990000; +static const unsigned COLOR_8 = 0xFF99FF00; +static const unsigned COLOR_9 = 0xFF9900FF; +static const unsigned COLOR_POUND = 0xFF99FFFF; +static const unsigned COLOR_STAR = 0xFF999999; + +QtSVGDialpad::QtSVGDialpad(QWidget* parent) + : QFrame(parent) { + + _svgMask = new QSvgRenderer(); + _mask = new QImage(); + + _svgimage = new QSvgRenderer(); + + _svgLayer = new QSvgRenderer(); + SAFE_CONNECT(_svgimage, SIGNAL(repaintNeeded()), SLOT(update())); + + setMouseTracking(true); +} + +void QtSVGDialpad::setNewTheme(const std::string & themeRepertory) { + + //destroy old theme + OWSAFE_DELETE(_svgMask); + OWSAFE_DELETE(_svgimage); + OWSAFE_DELETE(_svgLayer); + OWSAFE_DELETE(_mask); + + //new repertory + _repertory = themeRepertory; + + //new mask + _svgMask = new QSvgRenderer(QString::fromUtf8(std::string(_repertory + "dialpad_mask.svg").c_str()), this); + _mask = new QImage(); + + //new image + _svgimage = new QSvgRenderer(QString::fromUtf8(std::string(_repertory + "dialpad_image.svg").c_str()), this); + + //reinitialize layer + _svgLayer = new QSvgRenderer(); +} + +QtSVGDialpad::~QtSVGDialpad() { + OWSAFE_DELETE(_svgMask); + OWSAFE_DELETE(_svgimage); + OWSAFE_DELETE(_svgLayer); + OWSAFE_DELETE(_mask); +} + +void QtSVGDialpad::changeLayerFile(const std::string & newLayerFile) { + + QFile layerFile(QString::fromUtf8(std::string(_repertory + newLayerFile).c_str())); + + if ( (newLayerFile != _layerFile) && (layerFile.exists()) ) { + + //delete old layer + OWSAFE_DELETE(_svgLayer); + + if(newLayerFile.empty()) { + //construct new empty layer + _svgLayer = new QSvgRenderer(this); + } else { + //construct new layer + _svgLayer = new QSvgRenderer(layerFile.fileName(), this); + SAFE_CONNECT(_svgLayer, SIGNAL(repaintNeeded()), SLOT(update())); + } + + //save _layerFile + _layerFile = newLayerFile; + + update(); + } +} + +void QtSVGDialpad::mouseMoveEvent(QMouseEvent *event) { + + //get mouse pos + QPoint pos = event->pos(); + + //get pixel color + if (_mask->valid(pos.x(), pos.y())) { + switch(_mask->pixel(pos.x(), pos.y())) { + case COLOR_0: changeLayerFile("layer_0.svg"); break; + case COLOR_1: changeLayerFile("layer_1.svg"); break; + case COLOR_2: changeLayerFile("layer_2.svg"); break; + case COLOR_3: changeLayerFile("layer_3.svg"); break; + case COLOR_4: changeLayerFile("layer_4.svg"); break; + case COLOR_5: changeLayerFile("layer_5.svg"); break; + case COLOR_6: changeLayerFile("layer_6.svg"); break; + case COLOR_7: changeLayerFile("layer_7.svg"); break; + case COLOR_8: changeLayerFile("layer_8.svg"); break; + case COLOR_9: changeLayerFile("layer_9.svg"); break; + case COLOR_POUND: changeLayerFile("layer_pound.svg"); break; + case COLOR_STAR: changeLayerFile("layer_star.svg"); break; + default: changeLayerFile(""); + } + } else { + changeLayerFile(""); + } +} + +void QtSVGDialpad::mouseReleaseEvent(QMouseEvent * event) { + + if (event->button() == Qt::LeftButton) { + + //get mouse pos + QPoint pos = event->pos(); + + //get pixel color + switch(_mask->pixel(pos.x(), pos.y())) { + case COLOR_0: keyZeroSelected(); break; + case COLOR_1: keyOneSelected(); break; + case COLOR_2: keyTwoSelected(); break; + case COLOR_3: keyThreeSelected(); break; + case COLOR_4: keyFourSelected(); break; + case COLOR_5: keyFiveSelected(); break; + case COLOR_6: keySixSelected(); break; + case COLOR_7: keySevenSelected(); break; + case COLOR_8: keyEightSelected(); break; + case COLOR_9: keyNineSelected(); break; + case COLOR_POUND: keyPoundSelected(); break; + case COLOR_STAR: keyStarSelected(); break; + } + } +} + +void QtSVGDialpad::paintEvent(QPaintEvent *) { + + //mask + if (_svgMask->isValid()) { + if (_mask->size() != size()) { + OWSAFE_DELETE(_mask); + _mask = new QImage(size(), QImage::Format_ARGB32_Premultiplied); + QPainter pm(_mask); + pm.setViewport(0, 0, width(), height()); + pm.eraseRect(0, 0, width(), height()); + _svgMask->render(&pm); + } + } + + QPainter pi(this); + pi.setViewport(0, 0, width(), height()); + + //image + if (_svgimage->isValid()) { + _svgimage->render(&pi); + } + + //layer + if (_svgLayer->isValid()) { + _svgLayer->render(&pi); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSVGDialpad.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSVGDIALPAD_H +#define OWQTSVGDIALPAD_H + +#include + +#include + +#include + +class QSvgRenderer; +class QImage; + +/** + * SVG Dialpad widget + * + * @author Xavier Desjardins + */ +class QtSVGDialpad : public QFrame, NonCopyable { + Q_OBJECT +public: + + QtSVGDialpad(QWidget* parent=0); + + ~QtSVGDialpad(); + + void setNewTheme(const std::string & themeRepertory); + +Q_SIGNALS: + + void keyZeroSelected(); + + void keyOneSelected(); + + void keyTwoSelected(); + + void keyThreeSelected(); + + void keyFourSelected(); + + void keyFiveSelected(); + + void keySixSelected(); + + void keySevenSelected(); + + void keyEightSelected(); + + void keyNineSelected(); + + void keyStarSelected(); + + void keyPoundSelected(); + +private: + + inline void changeLayerFile(const std::string & newLayerFile); + + void paintEvent(QPaintEvent * event); + + void mouseReleaseEvent(QMouseEvent * event); + + void mouseMoveEvent(QMouseEvent * event); + + QImage * _mask; + + QSvgRenderer * _svgMask; + + QSvgRenderer * _svgLayer; + + QSvgRenderer * _svgimage; + + std::string _repertory; + + std::string _layerFile; +}; + +#endif //OWQTSVGDIALPAD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSystray.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSystray.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSystray.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSystray.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,421 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSystray.h" + +#include "QtQuteCom.h" +#include "QtPresenceMenuManager.h" +#include "QtPresencePixmapHelper.h" +#include "QtIMAccountMonitor.h" +#include "QtNoQuteComAlert.h" + +#include "contactlist/QtContactListManager.h" +#include "contactlist/QtContactMenu.h" +#include "webservices/sms/QtSms.h" + +#include +#include +#include + +#include +#include + +#include +#include + +#include +#include + +#include + +#if defined(OS_MACOSX) + #include "macosx/QtMacApplication.h" +#endif + +#ifdef OS_WINDOWS + #include +#endif + +static const char* SYSTRAY_ICON_TEMPLATE=":/pics/systray/%1.png"; +static const int SYSTRAY_ICON_CENTERX=8; +static const int SYSTRAY_ICON_CENTERY=9; +static const int SYSTRAY_ICON_RADIUS=16; + +#if defined(OS_MACOSX) +void qt_mac_set_dock_menu(QMenu *menu); +#endif + +QtSystray::QtSystray(QObject * parent) + : QObjectThreadSafe(NULL) { + + _qtQuteCom = (QtQuteCom *) parent; + + _callMenu = NULL; + + //Check Internet connection status + NetworkObserver::getInstance().connectionIsDownEvent += + boost::bind(&QtSystray::connectionIsDownEventHandler, this); + + NetworkObserver::getInstance().connectionIsUpEvent += + boost::bind(&QtSystray::connectionIsUpEventHandler, this); + + //trayMenu + _trayMenu = new QMenu(_qtQuteCom->getWidget()); + SAFE_CONNECT(_trayMenu, SIGNAL(aboutToShow()), SLOT(setTrayMenu())); + + //trayIcon + _trayIcon = new QSystemTrayIcon(QPixmap(":pics/status/online.png"),_qtQuteCom->getWidget()); + _trayIcon->setContextMenu(_trayMenu); + _trayIcon->setToolTip(tr("@product@")); + + SAFE_CONNECT(_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(activated(QSystemTrayIcon::ActivationReason))); + phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); + +#if !defined(OS_MACOSX) + _trayIcon->show(); +#endif + //systray re-initialization + SAFE_CONNECT(_qtQuteCom, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); + + setTrayMenu(); + + LANGUAGE_CHANGE(_trayIcon); +} + +QtSystray::~QtSystray() { +} + +void QtSystray::setTrayMenu() { + _trayMenu->clear(); + + //openAction +#if defined(OS_MACOSX) + // On Mac OS X, clicking the Dock icon should show the application thus the + // 'Open QuteCom' entry is not necessary. We get the Dock Icon click event + // from our QtMacApplication class. + QtMacApplication * qMacApp = dynamic_cast(QApplication::instance()); + SAFE_CONNECT_RECEIVER(qMacApp, SIGNAL(applicationMustShow()), _qtQuteCom->getWidget(), SLOT(show())); +#endif + + //Start a call session + _callMenu = new QMenu(tr("Call")); + _callMenu->setIcon(QIcon(":/pics/contact/call.png")); + updateMenu(); + _trayMenu->addMenu(_callMenu); + + //Change status menu + if (_qtQuteCom->getCQuteCom().getCUserProfileHandler().getCUserProfile()) { + _trayMenu->addMenu(createStatusMenu()); + } + +#if !defined(OS_MACOSX) + // There is already a Quit on Mac OS X + QAction * quitAction = _trayMenu->addAction(QIcon(":/pics/exit.png"), tr("Quit @product@")); + SAFE_CONNECT_RECEIVER(quitAction, SIGNAL(triggered()), _qtQuteCom, SLOT(prepareToExitApplication())); + + _trayIcon->setContextMenu(_trayMenu); +#else + qt_mac_set_dock_menu(_trayMenu); +#endif + + +} + +QMenu * QtSystray::createStatusMenu() { + CQuteCom & cQuteCom = _qtQuteCom->getCQuteCom(); + + CUserProfileHandler& cUserProfileHandler = cQuteCom.getCUserProfileHandler(); + QMenu * menu = new QMenu(_qtQuteCom->getWidget()); + menu->setTitle(tr("Status")); + QtPresenceMenuManager * manager = new QtPresenceMenuManager(menu, + &cUserProfileHandler,_qtQuteCom); + manager->addPresenceActions(menu); + + return menu; +} + +void QtSystray::updateMenu() { + CQuteCom & cQuteCom = _qtQuteCom->getCQuteCom(); + +#ifndef DISABLE_SMS + //sendSmsMenu + QMenu * sendSmsMenu = new QMenu(_qtQuteCom->getWidget()); + sendSmsMenu->setTitle(tr("Send a SMS")); + sendSmsMenu->setIcon(QIcon(":/pics/contact/sms.png")); + SAFE_CONNECT(sendSmsMenu, SIGNAL(triggered(QAction *)), SLOT(sendSms(QAction *))); + sendSmsMenu->clear(); + + QAction * sendSmsBlankAction = sendSmsMenu->addAction(QIcon(":/pics/contact/sms.png"), tr("Send SMS")); + sendSmsBlankAction->setData(String::null); + _trayMenu->addMenu(sendSmsMenu); + QtContactMenu::populateMobilePhoneMenu(sendSmsMenu, cQuteCom); + /// +#endif + //startChatMenu + QMenu * startChatMenu = new QMenu(_qtQuteCom->getWidget()); + startChatMenu->setIcon(QIcon(":/pics/contact/chat.png")); + SAFE_CONNECT(startChatMenu, SIGNAL(triggered(QAction *)), SLOT(startChat(QAction *))); + startChatMenu->clear(); + startChatMenu->setTitle(tr("Start a chat")); + _trayMenu->addMenu(startChatMenu); + QtContactMenu::populateChatMenu(startChatMenu, cQuteCom); + /// + + //call menu + QAction * placeCallBlankAction = _callMenu->addAction(QIcon(":/pics/contact/call.png"), tr("Place Call")); + placeCallBlankAction->setData(String::null); + + //callQuteComMenu + QMenu * callQuteComMenu = new QMenu(_qtQuteCom->getWidget()); + callQuteComMenu->setTitle(tr("Call @company@")); + SAFE_CONNECT(callQuteComMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); + callQuteComMenu->clear(); + _callMenu->addMenu(callQuteComMenu); + QtContactMenu::populateQuteComCallMenu(callQuteComMenu, cQuteCom); + /// + + //callMobileMenu + QMenu * callMobileMenu = new QMenu(_qtQuteCom->getWidget()); + callMobileMenu->setTitle(tr("Call Mobile")); + SAFE_CONNECT(callMobileMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); + callMobileMenu->clear(); + _callMenu->addMenu(callMobileMenu); + QtContactMenu::populateMobilePhoneMenu(callMobileMenu, cQuteCom); + /// + + //callLandlineMenu + QMenu * callLandlineMenu = new QMenu(_qtQuteCom->getWidget()); + callLandlineMenu->setTitle(tr("Call land line")); + SAFE_CONNECT(callLandlineMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); + callLandlineMenu->clear(); + _callMenu->addMenu(callLandlineMenu); + QtContactMenu::populateHomePhoneMenu(callLandlineMenu, cQuteCom); + /// + + //callSIPMenu + QMenu * callSIPMenu = new QMenu(_qtQuteCom->getWidget()); + callSIPMenu->setTitle(tr("Call SIP")); + SAFE_CONNECT(callSIPMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); + callSIPMenu->clear(); + _callMenu->addMenu(callSIPMenu); + QtContactMenu::populateSipCallMenu(callSIPMenu, cQuteCom); + /// + +#ifndef DISABLE_FILETRANSFER + //sendFileMenu + QMenu * sendFileMenu = new QMenu(_qtQuteCom->getWidget()); + sendFileMenu->setTitle(tr("Send File")); + sendFileMenu->setIcon(QIcon(":/pics/actions/send_file.png")); + SAFE_CONNECT(sendFileMenu, SIGNAL(triggered(QAction *)), SLOT(sendFile(QAction *))); + sendFileMenu->clear(); + _trayMenu->addMenu(sendFileMenu); + //TODO: call a new method populateFreeCallMenu with contactId + QtContactMenu::populateQuteComUsersContactId(sendFileMenu, cQuteCom); + /// +#endif +} + +void QtSystray::updateSystrayIcon() { + CQuteCom & cQuteCom = _qtQuteCom->getCQuteCom(); + CUserProfile * cUserProfile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + + if(cUserProfile) + { + IMAccountList accountList = cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); + QtPresencePixmapHelper helper(accountList); + QPixmap icon = helper.createPixmap(SYSTRAY_ICON_TEMPLATE, + SYSTRAY_ICON_CENTERX, + SYSTRAY_ICON_CENTERY, + SYSTRAY_ICON_RADIUS); + _trayIcon->setIcon(icon); + + EnumPresenceState::PresenceState presenceState = cUserProfile->getUserProfile().getPresenceState(); + + switch (presenceState) { + case EnumPresenceState::PresenceStateAway: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Away")); + break; + case EnumPresenceState::PresenceStateOnline: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Online")); + break; + case EnumPresenceState::PresenceStateOffline: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Offline")); + break; + case EnumPresenceState::PresenceStateInvisible: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Invisible")); + break; + case EnumPresenceState::PresenceStateDoNotDisturb: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Do Not Disturb")); + break; + case EnumPresenceState::PresenceStateMulti: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Multiple Status")); + break; + case EnumPresenceState::PresenceStateUnknown: + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Unknown Status")); + break; + default: + LOG_FATAL("unknown presenceState=" + String::fromNumber(presenceState)); + break; + } + } +} + +void QtSystray::userProfileDeleted() { + connectionStateEventHandlerThreadSafe(false); +} + +void QtSystray::phoneLineStateChanged(EnumPhoneLineState::PhoneLineState state) { + bool connected = false; + + switch (state) { + case EnumPhoneLineState::PhoneLineStateUnknown: + break; + case EnumPhoneLineState::PhoneLineStateServerError: + break; + case EnumPhoneLineState::PhoneLineStateTimeout: + break; + case EnumPhoneLineState::PhoneLineStateOk: + connected = true; + break; + case EnumPhoneLineState::PhoneLineStateClosed: + break; + case EnumPhoneLineState::PhoneLineStateProgress: + _trayIcon->setIcon(QPixmap(":/pics/systray/connecting.png")); + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Connecting...")); + return; + default: + LOG_FATAL("unknown state=" + EnumPhoneLineState::toString(state)); + }; + + //connectionStateEventHandlerThreadSafe(connected); +} + +void QtSystray::connectionIsDownEventHandler() { + //typedef PostEvent1 MyPostEvent; + //MyPostEvent * event = new MyPostEvent(boost::bind(&QtSystray::connectionStateEventHandlerThreadSafe, this, _1), false); + //FIXME Replaced by phoneLineStateChanged() + //postEvent(event); +} + +void QtSystray::connectionIsUpEventHandler() { + //typedef PostEvent1 MyPostEvent; + //MyPostEvent * event = new MyPostEvent(boost::bind(&QtSystray::connectionStateEventHandlerThreadSafe, this, _1), true); + //FIXME Replaced by phoneLineStateChanged() + //postEvent(event); +} + +void QtSystray::connectionStateEventHandlerThreadSafe(bool connected) { + if (connected) + { + //_trayIcon->setIcon(QPixmap(":/pics/systray/connecting.png")); + //_trayIcon->setToolTip(tr("@product@") + " - " + tr("Connecting...")); + //updateSystrayIcon(); + } + else { + _trayIcon->setIcon(QPixmap(":/pics/systray/disconnected.png")); + _trayIcon->setToolTip(tr("@product@") + " - " + tr("Internet Connection Error")); + } +} + +void QtSystray::toggleMainWindow() { + // If the qutecom is hidden or minimized, show & raise it, otherwise hide it + if (_qtQuteCom->getWidget()->isHidden() || _qtQuteCom->getWidget()->isMinimized() ) { + _qtQuteCom->getWidget()->showNormal(); + _qtQuteCom->getWidget()->raise(); + } else { + _qtQuteCom->getWidget()->hide(); + } +} + +void QtSystray::hide() { + _trayIcon->hide(); +} + +void QtSystray::makeCall(QAction * action) { + CQuteCom & cQuteCom = _qtQuteCom->getCQuteCom(); + if (action) { + LOG_DEBUG("call=" + action->data().toString().toUtf8()); + cQuteCom.getCUserProfileHandler().getCUserProfile()->makeCall(std::string(action->data().toString().toUtf8())); + } else { + LOG_FATAL("QAction cannot be NULL"); + } +} + +void QtSystray::startChat(QAction * action) { + if (action) { + QtContactListManager * contactListManager = QtContactListManager::getInstance(); + if (contactListManager) { + LOG_DEBUG("chat=" + action->data().toString().toUtf8()); + contactListManager->startChat(action->data().toString()); + } else { + LOG_FATAL("QtContactListManager cannot be NULL"); + } + } else { + LOG_FATAL("QAction cannot be NULL"); + } +} + +void QtSystray::sendSms(QAction * action) { + CQuteCom & cQuteCom = _qtQuteCom->getCQuteCom(); + if (action) { + CUserProfile * cuserprofile = cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cuserprofile) { + if (_qtQuteCom->getQtSms() && + cuserprofile->getUserProfile().hasQuteComAccount() && + cuserprofile->getUserProfile().getQuteComAccount()->isConnected()) { + + _qtQuteCom->getQtSms()->getWidget()->show(); + _qtQuteCom->getWidget()->show(); + _qtQuteCom->getWidget()->setWindowState(_qtQuteCom->getWidget()->windowState() & ~Qt::WindowMinimized | Qt::WindowActive); + _qtQuteCom->getQtSms()->setPhoneNumber(action->data().toString()); + } else { + QtNoQuteComAlert noQuteComAlert(NULL, *_qtQuteCom); + noQuteComAlert.getQDialog()->exec(); + } + } + } else { + LOG_FATAL("QAction cannot be NULL"); + } +} + +void QtSystray::sendFile(QAction * action) { + if (action) { + QtContactListManager * contactListManager = QtContactListManager::getInstance(); + if (contactListManager) { + LOG_DEBUG("sendfile=" + action->data().toString().toUtf8()); + contactListManager->sendFile(action->data().toString()); + } + } else { + LOG_FATAL("QAction cannot be NULL"); + } +} + +void QtSystray::languageChanged() { + updateMenu(); +} + +void QtSystray::activated ( QSystemTrayIcon::ActivationReason reason) { +#if defined(OS_LINUX) + if( reason == QSystemTrayIcon::Trigger) + toggleMainWindow(); +#else + if( reason == QSystemTrayIcon::DoubleClick) + toggleMainWindow(); +#endif +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSystray.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSystray.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtSystray.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtSystray.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,106 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSYSTRAY_H +#define OWQTSYSTRAY_H + +#include + +#include + +#include + +#include +#include + +class QtQuteCom; + +class QMenu; +class QAction; +class QPoint; + +/** + * Systray class. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class QtSystray : public QObjectThreadSafe, public Trackable { + Q_OBJECT +public: + + QtSystray(QObject * parent); + + ~QtSystray(); + + void phoneLineStateChanged(EnumPhoneLineState::PhoneLineState state); + +public Q_SLOTS: + + void updateSystrayIcon(); + + void setTrayMenu(); + + void hide(); + +private Q_SLOTS: + + void toggleMainWindow(); + + void makeCall(QAction * action); + + void startChat(QAction * action); + + void sendSms(QAction * action); + + void sendFile(QAction * action); + + /** + * Re-initializes the systray. + */ + void userProfileDeleted(); + + void languageChanged(); + + void activated ( QSystemTrayIcon::ActivationReason ); + +private: + + void connectionIsUpEventHandler(); + + void connectionIsDownEventHandler(); + + void connectionStateEventHandlerThreadSafe(bool connected); + + QMenu * createStatusMenu(); + + void updateMenu(); + + void initThreadSafe() { } + + QtQuteCom * _qtQuteCom; + + QMenu * _trayMenu; + + QMenu * _callMenu; + + QSystemTrayIcon * _trayIcon; +}; + +#endif //OWQTSYSTRAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtToolBar.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtToolBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtToolBar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtToolBar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,701 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtToolBar.h" + +#include "ui_QuteComWindow.h" + +#include + +#include "QtQuteCom.h" +#include "QtAbout.h" +#include "QtNoQuteComAlert.h" +#include "profile/QtProfileDetails.h" +#include "profile/QtUserProfileHandler.h" +#include "config/QtQuteComConfigDialog.h" +#include "webservices/sms/QtSms.h" +#include "phonecall/QtContactCallListWidget.h" +#include "phonecall/QtPhoneCall.h" +#include "contactlist/QtContactList.h" +#include "filetransfer/QtFileTransfer.h" +#include "filetransfer/QtFileTransferWidget.h" +#include "conference/QtConferenceCallWidget.h" + +#include "webdirectory/QtWebDirectory.h" + +#include +#include +#include +#include +#include +#include + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +#include +#include + +#include +//#include + +static const int TOOLBAR_BUTTON_MINIMUM_WIDTH = 60; + +void QtToolBar::connectOrHide(bool condition, QAction* action, QObject* receiver, const char* slot) { + if (condition) { + SAFE_CONNECT_RECEIVER(action, SIGNAL(triggered()), receiver, slot); + } else { +#if QT_VERSION >= 0x040200 + Q_FOREACH(QWidget* widget, action->associatedWidgets()) { + widget->removeAction(action); + } +#else + Q_FOREACH(QMenu* menu, _ui->menuBar->findChildren()) { + menu->removeAction(action); + } + _ui->toolBar->removeAction(action); +#endif + } +} + + +void QtToolBar::connectOrHide(WsUrl::Page page, QAction* action, QObject* receiver, const char* slot) { + connectOrHide(WsUrl::hasPage(page), action, receiver, slot); +} + + +QtToolBar::QtToolBar(QtQuteCom & qtQuteCom, Ui::QuteComWindow * qtQuteComUi, QWidget * parent) + : QObject(parent), + _qtQuteCom(qtQuteCom), + _cQuteCom(_qtQuteCom.getCQuteCom()) { + + _ui = qtQuteComUi; + + Config & config = ConfigManager::getInstance().getCurrentConfig(); + bool canSendSms = config.getSmsFeatureEnabled(); + bool canDoConference = config.getAudioConferenceFeatureEnabled(); + + SAFE_CONNECT(&_qtQuteCom, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); + + // actions initialization + _userIsLogged = false; + updateActionsAccordingToUserStatus(); + //// + + //menuQuteCom + connectOrHide(WsUrl::Account, _ui->actionShowQuteComAccount, this, SLOT(showQuteComAccount()) ); + SAFE_CONNECT(_ui->actionEditMyProfile, SIGNAL(triggered()), SLOT(editMyProfile())); + SAFE_CONNECT(_ui->actionLogOff, SIGNAL(triggered()), SLOT(logOff())); + connectOrHide(WsUrl::CallOut, _ui->actionQuteComServices, this, SLOT(showQuteComServices()) ); + SAFE_CONNECT_RECEIVER(_ui->actionClose, SIGNAL(triggered()), &_qtQuteCom, SLOT(closeWindow())); + SAFE_CONNECT_RECEIVER(_ui->actionQuit, SIGNAL(triggered()), &_qtQuteCom, SLOT(prepareToExitApplication())); + + //menuContacts + SAFE_CONNECT(_ui->actionAddContact, SIGNAL(triggered()), SLOT(addContact())); + connectOrHide(WsUrl::Directory, _ui->actionSearchQuteComContact, this, SLOT(searchQuteComContact()) ); + SAFE_CONNECT(_ui->actionShowHideOfflineContacts, SIGNAL(triggered()), SLOT(showHideOfflineContacts())); + SAFE_CONNECT(_ui->actionShowHideContactGroups, SIGNAL(triggered()), SLOT(showHideContactGroups())); + + //menuActions + connectOrHide(canDoConference, _ui->actionCreateConferenceCall, this, SLOT(createConferenceCall())); + connectOrHide(canSendSms, _ui->actionSendSms, this, SLOT(sendSms())); + SAFE_CONNECT(_ui->actionAcceptCall, SIGNAL(triggered()), SLOT(acceptCall())); + SAFE_CONNECT(_ui->actionHangUpCall, SIGNAL(triggered()), SLOT(hangUpCall())); + SAFE_CONNECT(_ui->actionHoldResumeCall, SIGNAL(triggered()), SLOT(holdResumeCall())); + + //menuHelp + connectOrHide(WsUrl::Forum, _ui->actionShowQuteComForum, this, SLOT(showQuteComForum())); + connectOrHide(WsUrl::FAQ, _ui->actionQuteComFAQ, this, SLOT(showQuteComFAQ())); + SAFE_CONNECT(_ui->actionShowAbout, SIGNAL(triggered()), SLOT(showAbout())); + + //menuTools + SAFE_CONNECT(_ui->actionShowConfig, SIGNAL(triggered()), SLOT(showConfig())); + SAFE_CONNECT(_ui->actionShowFileTransfer, SIGNAL(triggered()), SLOT(showFileTransferWindow())); + SAFE_CONNECT(_ui->actionToggleVideo, SIGNAL(triggered()), SLOT(toggleVideo())); + + //menuClearHistory + SAFE_CONNECT(_ui->actionClearOutgoingCalls, SIGNAL(triggered()), SLOT(clearHistoryOutgoingCalls())); + SAFE_CONNECT(_ui->actionClearIncomingCalls, SIGNAL(triggered()), SLOT(clearHistoryIncomingCalls())); + SAFE_CONNECT(_ui->actionClearMissedCalls, SIGNAL(triggered()), SLOT(clearHistoryMissedCalls())); + SAFE_CONNECT(_ui->actionClearRejectedCalls, SIGNAL(triggered()), SLOT(clearHistoryRejectedCalls())); + SAFE_CONNECT(_ui->actionClearChatSessions, SIGNAL(triggered()), SLOT(clearHistoryChatSessions())); + connectOrHide(canSendSms, _ui->actionClearSms, this, SLOT(clearHistorySms())); + SAFE_CONNECT(_ui->actionClearAll, SIGNAL(triggered()), SLOT(clearHistoryAll())); + + //Open chat window button + _ui->actionOpenChatWindow->setEnabled(false); + SAFE_CONNECT(_ui->actionOpenChatWindow, SIGNAL(triggered()), SLOT(showChatWindow())); + + //Get notified of config changes + config.valueChangedEvent += boost::bind(&QtToolBar::configChangedEventHandler, this, _1); + SAFE_CONNECT(this, SIGNAL(configChanged(QString)), SLOT(slotConfigChanged(QString)) ); + + // Update toolbar mode + updateToolBar(); + + //a menu is about to be displayed + SAFE_CONNECT(_ui->menuActions, SIGNAL(aboutToShow()), SLOT(updateMenuActions())); + +#ifndef CUSTOM_ACCOUNT + _ui->actionSearchQuteComContact->setVisible(false); +#endif + +#ifdef DISABLE_SMS + _ui->actionClearSms->setVisible(false); + _ui->actionSendSms->setVisible(false); +#endif + +#ifdef DISABLE_FILETRANSFER + _ui->actionShowFileTransfer->setVisible(false); +#endif + +} + +QtToolBar::~QtToolBar() { +} + +QWidget * QtToolBar::getWidget() const { + return _qtQuteCom.getWidget(); +} + +void QtToolBar::showQuteComAccount() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + //WARNING should not be called when no UserProfile set + WsUrl::showQuteComAccount(); + } +} + +void QtToolBar::editMyProfile() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + QWidget * parent = qobject_cast(sender()->parent()); + + //FIXME this method should not be called if no UserProfile has been set + QtProfileDetails qtProfileDetails(*_cQuteCom.getCUserProfileHandler().getCUserProfile(), + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getUserProfile(), + parent, tr("Edit My Profile")); + + //TODO UserProfile must be updated if QtProfileDetails was accepted + qtProfileDetails.show(); + } +} + +void QtToolBar::addContact() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile()) { + QWidget * parent = qobject_cast(sender()->parent()); + + //FIXME this method should not be called if no UserProfile has been set + ContactProfile contactProfile; + QtProfileDetails qtProfileDetails(*_cQuteCom.getCUserProfileHandler().getCUserProfile(), + contactProfile, parent, tr("Add a Contact")); + if (qtProfileDetails.show()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCContactList().addContact(contactProfile); + } + } +} + +void QtToolBar::showConfig() { + QtQuteComConfigDialog::showInstance(_cQuteCom); +} + +void QtToolBar::updateShowHideOfflineContactsAction() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString text; + if (config.getShowOfflineContacts()) { + text = tr("Hide Unavailable Contacts"); + } else { + text = tr("Show Unavailable Contacts"); + } + + _ui->actionShowHideOfflineContacts->setText(text); +} + +void QtToolBar::updateShowHideContactGroupsAction() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString text; + if (config.getShowGroups()) { + text = tr("Hide Groups"); + } else { + text = tr("Show Groups"); + } + + _ui->actionShowHideContactGroups->setText(text); +} + +void QtToolBar::updateToggleVideoAction() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + + bool videoEnabled = config.getVideoEnable(); + QString text; + if (videoEnabled) { + text = tr("Disable &Video Calls"); + } else { + text = tr("Enable &Video Calls"); + } + + _ui->actionToggleVideo->setText(text); + _ui->actionToggleVideo->setEnabled(!config.getVideoWebcamDevice().empty()); +} + +void QtToolBar::showQuteComForum() { + WsUrl::showQuteComForum(); +} + +void QtToolBar::showQuteComServices() { + WsUrl::showQuteComCallOut(); +} + +void QtToolBar::searchQuteComContact() { + + QtWebDirectory * qtWebDirectory = _qtQuteCom.getQtWebDirectory(); + if (qtWebDirectory) { + qtWebDirectory->raise(); + } +} + +void QtToolBar::showAbout() { + QWidget * parent = qobject_cast(sender()->parent()); + static QtAbout * qtAbout = new QtAbout(parent); + qtAbout->getWidget()->show(); +} + +void QtToolBar::sendSms() { + + CUserProfile * cuserprofile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cuserprofile) { + if (cuserprofile->getUserProfile().hasQuteComAccount()) { + QtSms * qtSms = _qtQuteCom.getQtSms(); + if (qtSms) { + QWidget * parent = qobject_cast(sender()->parent()); + qtSms->getWidget()->setParent(parent, Qt::Dialog); + qtSms->getWidget()->show(); + } + return; + } else { + QtNoQuteComAlert noQuteComAlert(NULL, _qtQuteCom); + noQuteComAlert.getQDialog()->exec(); + } + } +} + +void QtToolBar::createConferenceCall() { + + CUserProfile * cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cUserProfile) { + + IPhoneLine * phoneLine = cUserProfile->getUserProfile().getActivePhoneLine(); + if (phoneLine) { + if (phoneLine->getActivePhoneCall()) { + QMessageBox::information( + _qtQuteCom.getWidget(), + tr("@product@ - Proceed Conference"), + tr("Conference can't be started while there are active phone calls.

" + "Finish all phone calls and try again.") + ); + } else { + QtConferenceCallWidget conferenceDialog(_qtQuteCom.getWidget(), _cQuteCom, phoneLine); + conferenceDialog.exec(); + } + } + } +} + +void QtToolBar::showQuteComFAQ() { + WsUrl::showQuteComFAQ(); +} + +void QtToolBar::showHideOfflineContacts() { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + if (qtContactList) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY, !config.getShowOfflineContacts()); + qtContactList->updatePresentation(); + + updateShowHideOfflineContactsAction(); + } +} + +void QtToolBar::showHideContactGroups() { + QtContactList * qtContactList = _qtQuteCom.getQtContactList(); + if (qtContactList) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::GENERAL_SHOW_GROUPS_KEY, !config.getShowGroups()); + qtContactList->updatePresentation(); + + updateShowHideContactGroupsAction(); + } +} + +void QtToolBar::toggleVideo() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.set(Config::VIDEO_ENABLE_KEY, !config.getVideoEnable()); +} + +void QtToolBar::clearHistoryOutgoingCalls() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::OutgoingCall); + } +} + +void QtToolBar::clearHistoryIncomingCalls() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::IncomingCall); + } +} + +void QtToolBar::clearHistoryMissedCalls() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::MissedCall); + } +} + +void QtToolBar::clearHistoryRejectedCalls() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::RejectedCall); + } +} + +void QtToolBar::clearHistoryChatSessions() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::ChatSession); + } +} + +void QtToolBar::clearHistorySms() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::OutgoingSmsOk); + } +} + +void QtToolBar::clearHistoryAll() { + if (_cQuteCom.getCUserProfileHandler().getCUserProfile() && + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()) { + _cQuteCom.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::Any); + } +} + +void QtToolBar::logOff() { + if (_userIsLogged) { + // check for pending calls + CUserProfile *cUserProfile = _cQuteCom.getCUserProfileHandler().getCUserProfile(); + if (cUserProfile) { + CPhoneLine *cPhoneLine = cUserProfile->getCPhoneLine(); + if (cPhoneLine) { + if (cPhoneLine->hasPendingCalls()) { + + if (QMessageBox::question( + _qtQuteCom.getWidget(), + tr("@product@ - Warning"), + tr("You have unfinished call(s).") + "\n" + + tr("Are you sure you want to log off?"), + tr("&Log Off"), + tr("&Cancel") + ) == 1) { + return; + } + } + } + } + //// + // Close Chat + _qtQuteCom.closeChatWindow (); + + // disable menubar and toolbar to avoid crashes + //_ui->menuBar->setEnabled(false); + _ui->actionLogOff->setEnabled(false); + _ui->toolBar->setEnabled(false); + //// + } + + // Calling this when the user has already been logged off is harmless and + // will bring the login dialog. + _cQuteCom.getCUserProfileHandler().logOff(); +} + +int QtToolBar::findFirstCallTab() { + QtContactCallListWidget * widget; + for (int i = 0; i < _ui->tabWidget->count(); i++) { + widget = dynamic_cast(_ui->tabWidget->widget(i)); + if (widget) { + return i; + } + } + return -1; +} + +void QtToolBar::acceptCall() { + int callIndex = findFirstCallTab(); + if (callIndex == -1) { + return; + } + QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); + if (!widget) { + return; + } + + QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); + if (qtPhoneCall) { + qtPhoneCall->acceptCall(); + } +} + +void QtToolBar::holdResumeCall() { + int callIndex = findFirstCallTab(); + if (callIndex == -1) { + return; + } + QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); + if (!widget) { + return; + } + + QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); + if (qtPhoneCall) { + qtPhoneCall->holdOrResume(); + } +} + +void QtToolBar::hangUpCall() { + int callIndex = findFirstCallTab(); + if (callIndex == -1) { + return; + } + QtContactCallListWidget * widget; + + widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); + if (!widget) { + return; + } + widget->hangup(); +} + +void QtToolBar::updateMenuActions() { + + bool accept = false, holdResume = false, hangUp = false; + + int callIndex = findFirstCallTab(); + if (callIndex > 0) { + + QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); + if (widget) { + + QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); + + if (qtPhoneCall) { + + switch (qtPhoneCall->getCPhoneCall().getState()) { + + case EnumPhoneCallState::PhoneCallStateResumed: + case EnumPhoneCallState::PhoneCallStateTalking: { + holdResume = true; + hangUp = true; + break; + } + + case EnumPhoneCallState::PhoneCallStateDialing: + case EnumPhoneCallState::PhoneCallStateRinging: { + hangUp = true; + break; + } + + case EnumPhoneCallState::PhoneCallStateIncoming: { + accept = true; + hangUp = true; + break; + } + + case EnumPhoneCallState::PhoneCallStateHold: { + holdResume= true; + hangUp = true; + break; + } + + case EnumPhoneCallState::PhoneCallStateError: { + hangUp = true; + break; + } + + // other cases -> set all to false + case EnumPhoneCallState::PhoneCallStateMissed : + case EnumPhoneCallState::PhoneCallStateRedirected: + case EnumPhoneCallState::PhoneCallStateClosed: + case EnumPhoneCallState::PhoneCallStateUnknown: + default: { + //accept = holdResume = hangUp = false; + } + } + } + } + } + + _ui->actionAcceptCall->setEnabled(accept); + _ui->actionHangUpCall->setEnabled(hangUp); + _ui->actionHoldResumeCall->setEnabled(holdResume); +} + +void QtToolBar::showChatWindow() { + QWidget * chatWindow = _qtQuteCom.getChatWindow(); + if (chatWindow) { + chatWindow->showNormal(); + chatWindow->activateWindow(); + } +} + +void QtToolBar::showFileTransferWindow() { + + QtFileTransfer * fileTransfer = _qtQuteCom.getFileTransfer(); + if (fileTransfer) { + fileTransfer->getFileTransferWidget()->show(); + } +} + +void QtToolBar::retranslateUi() { + updateShowHideContactGroupsAction(); + updateShowHideOfflineContactsAction(); + updateToggleVideoAction(); + updateActionsAccordingToUserStatus(); +} + +void QtToolBar::configChangedEventHandler(const std::string & key) { + configChanged(QString::fromUtf8(key.c_str())); +} + +void QtToolBar::slotConfigChanged(QString qkey) { + std::string key(qkey.toUtf8()); + if (key == Config::VIDEO_ENABLE_KEY || key == Config::VIDEO_WEBCAM_DEVICE_KEY) { + updateToggleVideoAction(); + } + + if (key == Config::GENERAL_TOOLBARMODE_KEY) { + updateToolBar(); + } +} + +void QtToolBar::updateToolBar() { + +#if defined(OS_MACOSX) + EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::ToolBarModeIconsOnly; +#else + Config & config = ConfigManager::getInstance().getCurrentConfig(); + std::string text = config.getToolBarMode(); + EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::toToolBarMode(text); +#endif + + if (toolBarMode == EnumToolBarMode::ToolBarModeHidden) { + _ui->toolBar->hide(); + + } else if (toolBarMode == EnumToolBarMode::ToolBarModeIconsOnly) { + _ui->toolBar->show(); + _ui->toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); + + // Restore icon width in case it was set by TextUnderIcon mode + QSize size = _ui->toolBar->iconSize(); + size.setWidth(size.height()); + _ui->toolBar->setIconSize(size); + + } else if (toolBarMode == EnumToolBarMode::ToolBarModeTextUnderIcons) { + _ui->toolBar->show(); + _ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); + QSize size = _ui->toolBar->iconSize(); + size.setWidth(TOOLBAR_BUTTON_MINIMUM_WIDTH); + _ui->toolBar->setIconSize(size); + + } else { + LOG_WARN("Unknown toolbar mode: " + toolBarMode); + } +} + +void QtToolBar::userProfileDeleted() { + _userIsLogged = false; + updateActionsAccordingToUserStatus(); +} + +void QtToolBar::userProfileIsInitialized() { + _userIsLogged = true; + updateActionsAccordingToUserStatus(); +} + +void QtToolBar::enableMenuBar() { + _ui->menuBar->setEnabled(true); +} + +void QtToolBar::updateActionsAccordingToUserStatus() { + // We need to use a boolean to keep trace of the user status because when + // userProfileDeleted is called, the user profile is still alive, even if + // it's not for a long time. + if (_userIsLogged) { + _ui->actionLogOff->setText(tr("Log &Off...")); + } else { + _ui->actionLogOff->setText(tr("Log &On...")); + } + //_ui->menuBar->setEnabled(_userIsLogged); + _ui->toolBar->setEnabled(_userIsLogged); + + // This list contains all actions which needs a logged user to work + QList loggedInActions; + loggedInActions + << _ui->actionShowQuteComAccount + << _ui->actionAddContact + << _ui->actionSendSms + << _ui->actionEditMyProfile + << _ui->actionCreateConferenceCall + << _ui->actionShowHideOfflineContacts + << _ui->actionClearChatSessions + << _ui->actionClearAll + << _ui->actionSearchQuteComContact + << _ui->actionAcceptCall + << _ui->actionHangUpCall + << _ui->actionHoldResumeCall + << _ui->actionShowHideContactGroups + << _ui->actionOpenChatWindow + << _ui->actionClearOutgoingCalls + << _ui->actionClearIncomingCalls + << _ui->actionClearMissedCalls + << _ui->actionToggleVideo + << _ui->actionClearSms + << _ui->actionShowFileTransfer + << _ui->actionClearRejectedCalls + ; + Q_FOREACH(QAction* action, loggedInActions) { + action->setEnabled(_userIsLogged); + } + +} + +void QtToolBar::tryingToConnect() +{ + _ui->actionLogOff->setText(tr("Log &Off...")); + _ui->actionLogOff->setEnabled(true); +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtToolBar.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtToolBar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QtToolBar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QtToolBar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,179 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTTOOLBAR_H +#define OWQTTOOLBAR_H + +#include + +#include + +#include + +class QtQuteCom; +class CQuteCom; + +class QAction; +class QMenu; +class QWidget; + +namespace Ui { class QuteComWindow; } + +/** + * Tool bar and menu actions from the main window. + * + * @author Tanguy Krotoff + */ +class QtToolBar : public QObject, NonCopyable { + Q_OBJECT +public: + + QtToolBar(QtQuteCom & qtQuteCom, Ui::QuteComWindow * qtQuteComUi, QWidget * parent); + + ~QtToolBar(); + + QWidget * getWidget() const; + + + /** + * Makes sure the toggle actions (like show/hide hidden contacts and + * show/hide groups) are correctly translated + */ + void retranslateUi(); + + /** + * Configure toolbar according to the settings from the config file + */ + void updateToolBar(); + +Q_SIGNALS: + void configChanged(QString key); + +public Q_SLOTS: + + void showQuteComAccount(); + + void editMyProfile(); + + void addContact(); + + void showConfig(); + + void showQuteComForum(); + + void showAbout(); + + void sendSms(); + + void showQuteComFAQ(); + + void showQuteComServices(); + + void showHideContactGroups(); + + void showHideOfflineContacts(); + + void createConferenceCall(); + + void clearHistoryOutgoingCalls(); + + void clearHistoryIncomingCalls(); + + void clearHistoryMissedCalls(); + + void clearHistoryRejectedCalls(); + + void clearHistoryChatSessions(); + + void clearHistorySms(); + + void clearHistoryAll(); + + void searchQuteComContact(); + + void logOff(); + + void acceptCall(); + + void holdResumeCall(); + + void hangUpCall(); + + void showChatWindow(); + + void showFileTransferWindow(); + + void toggleVideo(); + + void slotConfigChanged(QString key); + + void userProfileIsInitialized(); + + void enableMenuBar(); + + void updateMenuActions(); + + void tryingToConnect(); + +private Q_SLOTS: + + /** + * the userProfile has been deleted + */ + void userProfileDeleted(); + +private: + void updateActionsAccordingToUserStatus(); + + /** + * Ugly code to remove. + */ + int findFirstCallTab(); + + void updateShowHideContactGroupsAction(); + + void updateShowHideOfflineContactsAction(); + + void updateToggleVideoAction(); + + void configChangedEventHandler(const std::string & key); + + /** + * If page exists, connect action to receiver::slot, otherwise, remove + * action from any widget it's connected to (menu, toolbar...) + */ + void connectOrHide(WsUrl::Page page, QAction* action, QObject* receiver, const char* slot); + + + /** + * If condition is true, connect action to receiver::slot, otherwise, + * remove action from any widget it's connected to (menu, toolbar...) + */ + void connectOrHide(bool condition, QAction* action, QObject* receiver, const char* slot); + + QtQuteCom & _qtQuteCom; + + CQuteCom & _cQuteCom; + + Ui::QuteComWindow * _ui; + + bool _userIsLogged; +}; + +#endif //OWQTTOOLBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QuteComStyleLabelProxy.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QuteComStyleLabelProxy.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QuteComStyleLabelProxy.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QuteComStyleLabelProxy.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,20 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QuteComWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QuteComWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/QuteComWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/QuteComWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,527 @@ + + QuteComWindow + + + + 0 + 0 + 350 + 511 + + + + + 333 + 510 + + + + @product@ + + + + true + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + + + + QFrame::NoFrame + + + QFrame::Raised + + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + 0 + + + + + false + + + 0 + + + + Contacts + + + + + History + + + + + Dialpad + + + + + + + + + + + + 0 + 0 + + + + 1 + + + + + + + + + 0 + 0 + 350 + 19 + + + + + &Help + + + + + + + + + &Actions + + + + + + + + + + + &Contacts + + + + + + + + + + &Tools + + + + Clear &History + + + + + + + + + + + + + + + + + + + + + + + + @company@ + + + + + + + + + + + + + + + + + + + + Qt::CustomContextMenu + + + ToolBar + + + false + + + Qt::Horizontal + + + + 32 + 32 + + + + Qt::ToolButtonTextUnderIcon + + + TopToolBarArea + + + false + + + + + + + + + false + + + View My @company@ Account... + + + + + + + + &Close + + + Ctrl+W + + + + + @company@ &Forum... + + + + + &About... + + + + + :/pics/iconbar/add_contact.png + + + Add &Contact... + + + Add + + + Add Contact + + + + + &Configuration... + + + + + :/pics/iconbar/sms.png + + + Send SMS... + + + SMS + + + Send SMS + + + + + :/pics/config/imaccounts.png + + + View My &Profile... + + + View My Profile + + + View My Profile + + + + + :/pics/iconbar/conference.png + + + Start &Conference... + + + Conference + + + Start Conference + + + + + @company@ &Wiki/FAQ... + + + + + Learn more about @company@ Services... + + + + + + + + Show/Hide Unavailable &Contacts + + + + + &Chat Sessions + + + + + &All + + + + + :/pics/iconbar/search_contact.png + + + &Find Contact... + + + Search + + + Find @company@ Contacts + + + + + + + + &Accept + + + + + + + + &HangUp + + + + + + + + &Hold/Resume + + + + + + + + Show/Hide &Groups + + + + + Log &Off... + + + Log Off + + + Log Off + + + + + :/pics/iconbar/chat.png + + + Show &Chat Window + + + Show Chat Window + + + Show Chat Window + + + + + &Outgoing Calls + + + + + &Incoming Calls + + + + + &Missed Calls + + + + + + + + Enable/Disable &Video Calls + + + + + Short Text &Messages (SMS) + + + + + false + + + + + + Show &File Transfer + + + + + + + + Rejected Calls + + + + + &Quit + + + Ctrl+Q + + + Qt::ApplicationShortcut + + + + + true + + + &Text Under Icons + + + + + true + + + &Icons Only + + + + + true + + + &Hidden + + + + + + QtProfileBar + QFrame +
profilebar/QtProfileBar.h
+ 1 +
+ + QtCallBar + QFrame +
callbar/QtCallBar.h
+ 1 +
+
+ + tabWidget + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,304 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtStatusBar.h" + +#include "ui_StatusBarWidget.h" + +#include +#include +#include + +#include +#include +#include +#include +#include + +#include +#include + +#include +#include +#include +#include +#include +#include +#include + +static const char * MNG_FORMAT = "MNG"; + +QtStatusBar::QtStatusBar(QtQuteCom* qtQuteCom, QStatusBar * statusBar) + : QWidget(statusBar) + { + + _ui = new Ui::StatusBarWidget(); + _ui->setupUi(this); + _statusBar = statusBar; + _statusBar->addPermanentWidget(this, 1); + + _audioOutputWindow = 0; + _outputVolumeSlider = 0; + + _audioInputWindow = 0; + _inputVolumeSlider = 0; + + SAFE_CONNECT(this, SIGNAL(audioOutputConfigChanged()), SLOT(updateAudioOutputUi())); + SAFE_CONNECT(this, SIGNAL(audioInputConfigChanged()), SLOT(updateAudioInputUi())); + LANGUAGE_CHANGE(this); + + createAudioOutputWindow(); + createAudioInputWindow(); + + //sip label + _sipConnectionMovie = new QMovie(":/pics/statusbar/network_status_connecting.mng", MNG_FORMAT, this); + _sipConnectionMovie->start(); + _ui->sipLabel->setMovie(_sipConnectionMovie); + //// + + //sound buttons + Config & config = ConfigManager::getInstance().getCurrentConfig(); + config.valueChangedEvent += boost::bind(&QtStatusBar::checkSoundConfig, this, _1); + //// + + //status bar re-initialization + SAFE_CONNECT(qtQuteCom, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); + + init(); +} + +QtStatusBar::~QtStatusBar() { + OWSAFE_DELETE(_ui); +} + +void QtStatusBar::showMessage(const QString & message, int timeout) { + _statusBar->showMessage(message, timeout); +} + +void QtStatusBar::checkSoundConfig(const std::string & key) { + if (key == Config::AUDIO_OUTPUT_DEVICEID_KEY) { + updateAudioOutputUi(); + } else if (key == Config::AUDIO_INPUT_DEVICEID_KEY) { + updateAudioInputUi(); + } +} + +void QtStatusBar::updateAudioOutputUi() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + VolumeControl outputVolumeControl(config.getAudioOutputDeviceId()); + QString message; + bool error = false; + + if (outputVolumeControl.isMuted()) { + error = true; + message = tr("Output volume is muted"); + } else if (outputVolumeControl.getLevel() == 0) { + error = true; + message = tr("Output volume is 0"); + } + if (error) { + _ui->audioOutputButton->setIcon(QPixmap(":/pics/statusbar/output_volume_error.png")); + _ui->audioOutputButton->setToolTip(message); + } else { + _ui->audioOutputButton->setIcon(QPixmap(":/pics/statusbar/output_volume_ok.png")); + _ui->audioOutputButton->setToolTip(tr("Click to adjust output volume")); + } + + if (_outputVolumeSlider) { + initVolumeSlider(_outputVolumeSlider); + } +} + +void QtStatusBar::updateAudioInputUi() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + VolumeControl inputVolumeControl(config.getAudioInputDeviceId()); + QString message; + bool error = false; + + if (inputVolumeControl.isMuted()) { + error = true; + message = tr("Input volume is muted"); + } else if (inputVolumeControl.getLevel() == 0) { + error = true; + message = tr("Input volume is 0"); + } + if (error) { + _ui->audioInputButton->setIcon(QPixmap(":/pics/statusbar/input_volume_error.png")); + _ui->audioInputButton->setToolTip(message); + } else { + _ui->audioInputButton->setIcon(QPixmap(":/pics/statusbar/input_volume_ok.png")); + _ui->audioInputButton->setToolTip(tr("Click to adjust input volume")); + } + + if (_inputVolumeSlider) { + initVolumeSlider(_inputVolumeSlider); + } +} + +void QtStatusBar::userProfileDeleted() { + QPixmap pixmap(":/pics/statusbar/network_status_error.png"); + _ui->sipLabel->setPixmap(pixmap); + _ui->sipLabel->setToolTip(tr("Not connected")); +} + +void QtStatusBar::updatePhoneLineState(EnumPhoneLineState::PhoneLineState state) { + + QString tooltip; + QString pixmap; + + //Stops animated pixmap + OWSAFE_DELETE(_sipConnectionMovie); + switch (state) { + case EnumPhoneLineState::PhoneLineStateUnknown: + tooltip = tr("Not connected"); + pixmap = ":/pics/statusbar/network_status_error.png"; + break; + + case EnumPhoneLineState::PhoneLineStateServerError: + tooltip = tr("An error occured: Server error."); + pixmap = ":/pics/statusbar/network_status_error.png"; + break; + + case EnumPhoneLineState::PhoneLineStateTimeout: + tooltip = tr("An error occured: Timeout."); + pixmap = ":/pics/statusbar/network_status_error.png"; + break; + + case EnumPhoneLineState::PhoneLineStateAuthenticationError: + tooltip = tr("An error occured: Authentication error."); + pixmap = ":/pics/statusbar/network_status_error.png"; + break; + + case EnumPhoneLineState::PhoneLineStateOk: + tooltip = tr("Register done"); + pixmap = ":/pics/statusbar/network_status_ok.png"; + break; + + case EnumPhoneLineState::PhoneLineStateClosed: + tooltip = tr("Unregister done"); + pixmap = ":/pics/statusbar/network_status_error.png"; + break; + + case EnumPhoneLineState::PhoneLineStateProgress: + _sipConnectionMovie = new QMovie(":/pics/statusbar/network_status_connecting.mng", MNG_FORMAT, this); + _sipConnectionMovie->start(); + _ui->sipLabel->setMovie(_sipConnectionMovie); + _ui->sipLabel->setToolTip(tr("Connecting")); + return; + + default: + LOG_FATAL("unknown state=" + EnumPhoneLineState::toString(state)); + }; + + _ui->sipLabel->setPixmap(pixmap); + _ui->sipLabel->setToolTip(tooltip); +} + +void QtStatusBar::init() { + updateAudioOutputUi(); + updateAudioInputUi(); +} + +void QtStatusBar::languageChanged() { + _ui->retranslateUi(this); + init(); +} + +static DropDownWindow* createDropDownWindow(QAbstractButton* button) { + DropDownWindow* window = new DropDownWindow(button); + + window->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); + int width = button->minimumSize().width(); + window->setFixedWidth(width); + + return window; +} + +static QSlider* createSlider(DropDownWindow* window) { + QSlider* slider = new QSlider(window); + + // Set to range documented in VolumeControl class + slider->setMinimum(0); + slider->setMaximum(100); + slider->setFixedHeight(100); + + QHBoxLayout* layout = new QHBoxLayout(window); + layout->setMargin(2); + layout->addWidget(slider); + + // A bit bigger than the slider so that it has some space above and below it + window->setFixedHeight(110); + + return slider; +} + +void QtStatusBar::createAudioOutputWindow() { + _audioOutputWindow = createDropDownWindow(_ui->audioOutputButton); + _outputVolumeSlider = createSlider(_audioOutputWindow); + initVolumeSlider(_outputVolumeSlider); + + SAFE_CONNECT(_outputVolumeSlider, SIGNAL(valueChanged(int)), + SLOT(setVolume(int)) ); +} + +void QtStatusBar::createAudioInputWindow() { + _audioInputWindow = createDropDownWindow(_ui->audioInputButton); + _inputVolumeSlider = createSlider(_audioInputWindow); + initVolumeSlider(_inputVolumeSlider); + + SAFE_CONNECT(_inputVolumeSlider, SIGNAL(valueChanged(int)), + SLOT(setVolume(int)) ); +} + +void QtStatusBar::initVolumeSlider(QSlider* slider) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + StringList deviceId; + if (slider == _outputVolumeSlider) { + deviceId = config.getAudioOutputDeviceId(); + } else { + deviceId = config.getAudioInputDeviceId(); + } + AudioDevice audioDevice(deviceId); + VolumeControl volumeControl(audioDevice); + + slider->blockSignals(true); + slider->setValue(volumeControl.getLevel()); + slider->blockSignals(false); +} + +void QtStatusBar::setVolume(int value) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + StringList deviceId; + if (sender() == _outputVolumeSlider) { + deviceId = config.getAudioOutputDeviceId(); + } else { + deviceId = config.getAudioInputDeviceId(); + } + AudioDevice audioDevice(deviceId); + VolumeControl volumeControl(audioDevice); + volumeControl.setLevel(value); + + // FIXME: Remove this once/if the AudioDevice gets capable of notifying us + // of volume changes (from us and from the outside world). + if (sender() == _outputVolumeSlider) { + updateAudioOutputUi(); + } else { + updateAudioInputUi(); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/QtStatusBar.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,116 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSTATUSBAR_H +#define OWQTSTATUSBAR_H + +#include +#include + +#include + +class DropDownWindow; +class Settings; +class QSlider; +class QStatusBar; +class QMovie; +class QWidget; + +class QtQuteCom; + +namespace Ui { class StatusBarWidget; } + +/** + * Main window status bar. + * + * Contains status icons for Internet connection, sound status, SIP (network) status... + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class QtStatusBar : public QWidget, public Trackable { + Q_OBJECT +public: + + QtStatusBar(QtQuteCom* qtQuteCom, QStatusBar * statusBar); + + ~QtStatusBar(); + + /** + * @see QStatusBar::showMessage() + */ + void showMessage(const QString & message, int timeout = 0); + + /** + * Update sip connection icon. + * @param state the new state of the PhoneLine + */ + void updatePhoneLineState(EnumPhoneLineState::PhoneLineState state); + +Q_SIGNALS: + void audioOutputConfigChanged(); + + void audioInputConfigChanged(); + +private Q_SLOTS: + + /** + * Re-initializes the status bar. + */ + void userProfileDeleted(); + + void languageChanged(); + + void updateAudioOutputUi(); + + void updateAudioInputUi(); + + void setVolume(int); + +private: + + /** + * Initializes widgets content. + */ + void init(); + + void initVolumeSlider(QSlider*); + + /** + * @see QtStatusBar::updateSoundIcon + */ + void checkSoundConfig(const std::string & key); + + void createAudioOutputWindow(); + + void createAudioInputWindow(); + + QStatusBar * _statusBar; + + Ui::StatusBarWidget * _ui; + + QMovie * _sipConnectionMovie; + + DropDownWindow * _audioOutputWindow; + QSlider * _outputVolumeSlider; + DropDownWindow * _audioInputWindow; + QSlider * _inputVolumeSlider; +}; + +#endif //OWQTSTATUSBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/StatusBarWidget.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/StatusBarWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/statusbar/StatusBarWidget.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/statusbar/StatusBarWidget.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,134 @@ + + StatusBarWidget + + + + 0 + 0 + 96 + 22 + + + + + 0 + 0 + 0 + 0 + + + + + 0 + + + 0 + + + + + + 0 + 1 + 0 + 0 + + + + + 32 + 0 + + + + + 32 + 16777215 + + + + + + + :/pics/statusbar/network_status_error.png + + + Qt::AlignCenter + + + + + + + + 32 + 22 + + + + + 32 + 22 + + + + ... + + + :/pics/statusbar/output_volume_ok.png + + + + 22 + 22 + + + + true + + + true + + + + + + + + 32 + 22 + + + + + 32 + 22 + + + + ... + + + :/pics/statusbar/input_volume_ok.png + + + + 22 + 22 + + + + true + + + true + + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/IQtToaster.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/IQtToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/IQtToaster.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/IQtToaster.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWIQTTOASTER_H +#define OWIQTTOASTER_H + +#include + +class QString; +class QPixmap; + +/** + * Shows a toaster when a phone call or a chat is incoming. + * + * A toaster is a small window in the lower right of the desktop. + * + * @author Tanguy Krotoff + */ +class IQtToaster : Interface { +public: + + /** + * Sets the toaster window message. + * + * @param message toaster message + */ + virtual void setMessage(const QString & message) = 0; + + /** + * Sets the toaster window picture. + * + * @param pixmap toaster picture + */ + virtual void setPixmap(const QPixmap & pixmap) = 0; + + /** + * Shows the toaster window. + */ + virtual void show() = 0; + + /** + * Closes the toaster window. + */ + virtual void close() = 0; +}; + +#endif //OWIQTTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,96 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtCallToaster.h" + +#include "QtToaster.h" + +#include "ui_QtCallToaster.h" + +#include + +#include + +#include + +QtCallToaster::QtCallToaster() + : QObject(NULL) { + + _callToasterWidget = new QWidget(NULL); + + _ui = new Ui::CallToaster(); + _ui->setupUi(_callToasterWidget); + + _ui->hangUpButton->setPixmaps(QPixmap(":/pics/toaster/hangup.png"), + QPixmap(), + QPixmap(), + QPixmap(":/pics/toaster/hangup.png"), + QPixmap(), + QPixmap()); + + _ui->pickUpButton->setPixmaps(QPixmap(":/pics/toaster/pickup.png"), + QPixmap(), + QPixmap(), + QPixmap(":/pics/toaster/pickup.png"), + QPixmap(), + QPixmap()); + + _ui->pickUpButton->setMinimumSize(QSize(48, 56)); + _ui->pickUpButton->setMaximumSize(QSize(48, 56)); + SAFE_CONNECT(_ui->pickUpButton, SIGNAL(clicked()), SLOT(pickUpButtonSlot())); + + _ui->hangUpButton->setMinimumSize(QSize(28, 56)); + _ui->hangUpButton->setMaximumSize(QSize(28, 56)); + SAFE_CONNECT(_ui->hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonSlot())); + + SAFE_CONNECT(_ui->closeButton, SIGNAL(clicked()), SLOT(close())); + + _toaster = new QtToaster(_callToasterWidget, _ui->windowFrame); + _toaster->setTimeOnTop(10000); +} + +QtCallToaster::~QtCallToaster() { + OWSAFE_DELETE(_ui); +} + +void QtCallToaster::setMessage(const QString & message) { + _ui->messageLabel->setText(message); +} + +void QtCallToaster::setPixmap(const QPixmap & pixmap) { + _ui->pixmapLabel->setPixmap(pixmap); +} + +void QtCallToaster::show() { + _toaster->show(); +} + +void QtCallToaster::close() { + _toaster->close(); +} + +void QtCallToaster::hangUpButtonSlot() { + hangUpButtonClicked(); + close(); +} + +void QtCallToaster::pickUpButtonSlot() { + pickUpButtonClicked(); + close(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCALLTOASTER_H +#define OWQTCALLTOASTER_H + +#include "IQtToaster.h" + +#include + +class QtToaster; + +class QWidget; +class QString; +class QPixmap; +namespace Ui { class CallToaster; } + +/** + * Shows a toaster when a phone call is incoming. + * + * @author Tanguy Krotoff + */ +class QtCallToaster : public QObject, public IQtToaster { + Q_OBJECT +public: + + QtCallToaster(); + + ~QtCallToaster(); + + void setMessage(const QString & message); + + void setPixmap(const QPixmap & pixmap); + + void show(); + +public Q_SLOTS: + + void close(); + +Q_SIGNALS: + + void hangUpButtonClicked(); + + void pickUpButtonClicked(); + +private Q_SLOTS: + + void hangUpButtonSlot(); + + void pickUpButtonSlot(); + +private: + + Ui::CallToaster * _ui; + + QWidget * _callToasterWidget; + + QtToaster * _toaster; +}; + +#endif //OWQTCALLTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtCallToaster.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,504 @@ + + + + + CallToaster + + + + 0 + 0 + 400 + 300 + + + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + + + 6 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + QFrame::NoFrame + + + :/pics/toaster/pickup.png + + + + + + + QFrame::NoFrame + + + :/pics/toaster/hangup.png + + + + + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 0 + + + + + + Sans Serif + 9 + 75 + false + true + false + false + + + + Incoming Call + + + 10 + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + 0 + 0 + 0 + 0 + + + + + 22 + 22 + + + + + 22 + 22 + + + + :/pics/close_normal.png + + + true + + + + + + + + + 0 + + + 0 + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + Message + + + Qt::AlignCenter + + + + + + + + + + + + + + QuteComStyleLabel + QLabel +
QuteComStyleLabelProxy.h
+ 0 + +
+
+ + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,78 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtChatToaster.h" + +#include "ui_QtChatToaster.h" + +#include "QtToaster.h" + +#include + +#include + +#include + +QtChatToaster::QtChatToaster() + : QObject(NULL) { + + _chatToasterWidget = new QWidget(NULL); + + _ui = new Ui::ChatToaster(); + _ui->setupUi(_chatToasterWidget); + + _ui->chatButton->setPixmaps(QPixmap(":/pics/toaster/chat.png"), + QPixmap(), + QPixmap(), + QPixmap(":/pics/toaster/chat.png"), + QPixmap(), + QPixmap()); + + SAFE_CONNECT(_ui->chatButton, SIGNAL(clicked()), SLOT(chatButtonSlot())); + + SAFE_CONNECT(_ui->closeButton, SIGNAL(clicked()), SLOT(close())); + + _toaster = new QtToaster(_chatToasterWidget, _ui->windowFrame); + _toaster->setTimeOnTop(5000); +} + +QtChatToaster::~QtChatToaster() { + OWSAFE_DELETE(_ui); +} + +void QtChatToaster::setMessage(const QString & message) { + _ui->messageLabel->setText(message); +} + +void QtChatToaster::setPixmap(const QPixmap & pixmap) { + _ui->pixmapLabel->setPixmap(pixmap); +} + +void QtChatToaster::show() { + _toaster->show(); +} + +void QtChatToaster::close() { + _toaster->close(); +} + +void QtChatToaster::chatButtonSlot() { + chatButtonClicked(); + close(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTCHATTOASTER_H +#define OWQTCHATTOASTER_H + +#include "IQtToaster.h" + +#include + +class QtToaster; + +class QWidget; +class QString; +class QPixmap; +namespace Ui { class ChatToaster; } + +/** + * Shows a toaster when a chat is incoming. + * + * @author Tanguy Krotoff + */ +class QtChatToaster : public QObject, public IQtToaster { + Q_OBJECT +public: + + QtChatToaster(); + + ~QtChatToaster(); + + void setMessage(const QString & message); + + void setPixmap(const QPixmap & pixmap); + + void show(); + +public Q_SLOTS: + + void close(); + +Q_SIGNALS: + + void chatButtonClicked(); + +private Q_SLOTS: + + void chatButtonSlot(); + +private: + + Ui::ChatToaster * _ui; + + QWidget * _chatToasterWidget; + + QtToaster * _toaster; +}; + +#endif //OWQTCHATTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtChatToaster.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,495 @@ + + + + + ChatToaster + + + + 0 + 0 + 400 + 300 + + + + + 0 + + + 0 + + + + + QFrame::StyledPanel + + + QFrame::Raised + + + + 0 + + + 0 + + + + + 6 + + + 0 + + + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + :/pics/toaster/chat.png + + + + + + + + + 0 + + + 0 + + + + + + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 234 + 229 + 220 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 0 + 0 + 0 + + + 255 + 255 + 255 + + + 212 + 208 + 200 + + + 64 + 64 + 64 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 255 + 255 + 255 + + + 233 + 231 + 227 + + + 128 + 128 + 128 + + + 141 + 139 + 133 + + + 106 + 104 + 100 + + + 255 + 255 + 255 + + + 106 + 104 + 100 + + + 212 + 208 + 200 + + + 212 + 208 + 200 + + + 0 + 0 + 0 + + + 10 + 36 + 106 + + + 255 + 255 + 255 + + + 0 + 0 + 255 + + + 255 + 0 + 255 + + + 232 + 232 + 232 + + + + + + Message + + + Qt::AlignCenter + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + Qt::Horizontal + + + + 40 + 20 + + + + + + + + + + 0 + + + 0 + + + + + + 0 + 0 + 0 + 0 + + + + + 22 + 22 + + + + + 22 + 22 + + + + :/pics/close_normal.png + + + true + + + + + + + Qt::Horizontal + + + + 225 + 22 + + + + + + + + + Sans Serif + 9 + 75 + false + true + false + false + + + + Incoming Chat + + + 10 + + + + + + + + + + + + + + QuteComStyleLabel + QLabel +
QuteComStyleLabelProxy.h
+ 0 + +
+
+ + chatButton + closeButton + + + + + +
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtToaster.h" + +#include +#include + +#include +#include + +#include + +#ifdef OS_MACOSX +#include +#endif + +static const unsigned TIME_TO_SHOW = 20; + +QtToaster::QtToaster(QWidget * toaster, QFrame * toasterWindowFrame) + : QObject(toaster) { + + _timer = NULL; + _show = true; + + _toaster = toaster; + _toaster->setParent(_toaster->parentWidget(), Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); + +#ifdef OS_MACOSX + // Make sure the other windows of the application are not raised when the + // toaster appears + WId wid = _toaster->winId(); + SetWindowGroup((WindowRef)wid, NULL); +#else + _toaster->setWindowFlags(_toaster->windowFlags() | Qt::ToolTip); +#endif + + WidgetBackgroundImage::setBackgroundImage(toasterWindowFrame, ":pics/toaster/toaster-background.png", WidgetBackgroundImage::AdjustSize); + + _toaster->resize(184, 128); +} + +void QtToaster::setTimeOnTop(unsigned time) { + _timeOnTop = time; +} + +void QtToaster::close() { + if (_timer) { + _timer->stop(); + } + _toaster->close(); +} + +void QtToaster::show() { + //10 pixels of margin +#if !defined(OS_WINDOWS) + static const int MARGIN_X = 30; +#else + static const int MARGIN_X = 10; +#endif + + QDesktopWidget * desktop = QApplication::desktop(); + QRect screenGeometry = desktop->screenGeometry(desktop->primaryScreen()); + + _toaster->move(screenGeometry.right() - _toaster->size().width() - MARGIN_X, screenGeometry.bottom()); + + _toaster->show(); + + _timer = new QTimer(this); + SAFE_CONNECT(_timer, SIGNAL(timeout()), SLOT(changeToasterPosition())); + _timer->start(TIME_TO_SHOW); +} + +void QtToaster::changeToasterPosition() { + QDesktopWidget * desktop = QApplication::desktop(); + QPoint p = _toaster->pos(); + + //Toaster is showing slowly + if (_show) { + _toaster->move(p.x(), p.y() - 3); + + QRect desktopGeometry = desktop->availableGeometry(desktop->primaryScreen()); + + if (p.y() < (desktopGeometry.bottom() - _toaster->size().height() - 5)) { + //Toaster should be hidden now + _show = false; + _timer->stop(); + //Waits 5 seconds with the toaster on top + _timer->start(_timeOnTop); + } + } + + //Toaster is hiding slowly + else { + _toaster->move(p.x(), p.y() + 3); + + QRect screenGeometry = desktop->screenGeometry(desktop->primaryScreen()); + + _timer->stop(); + _timer->start(TIME_TO_SHOW); + + if (p.y() > (screenGeometry.bottom())) { + //Closes the toaster -> hide it completely + close(); + } + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/QtToaster.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,68 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTTOASTER_H +#define OWQTTOASTER_H + +#include + +class QWidget; +class QTimer; +class QFrame; + +/** + * This class codes the algorithm that show/hide the toaster. + * + * This class helps factorizing the code between QtCallToaster and QtChatToaster. + * + * @author Tanguy Krotoff + */ +class QtToaster : public QObject { + Q_OBJECT +public: + + QtToaster(QWidget * toaster, QFrame * toasterWindowFrame); + + /** + * Sets the time with the toaster on top. + * + * @param time time toaster on top in milliseconds + */ + void setTimeOnTop(unsigned time); + + void show(); + + void close(); + +private Q_SLOTS: + + void changeToasterPosition(); + +private: + + QWidget * _toaster; + + QTimer * _timer; + + bool _show; + + unsigned _timeOnTop; +}; + +#endif //OWQTTOASTER_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/toaster/toaster.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/presentation/qt/toaster/toaster.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/ToolTipLineEditProxy.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/ToolTipLineEditProxy.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/ToolTipLineEditProxy.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/ToolTipLineEditProxy.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,20 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtWebDirectory.h" + +#include + +#include +#include + +#include + +QtWebDirectory::QtWebDirectory(QWidget * parent) + : QWebView(parent) { + CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(CloseEventFilterSlot())); + installEventFilter(closeEventFilter); + + setContextMenuPolicy(Qt::NoContextMenu); + + resize(715, 569); + LANGUAGE_CHANGE(this); + init(); +} + +QtWebDirectory::~QtWebDirectory() { +} + +void QtWebDirectory::raise() { + show(); + QWidget::raise(); +} + +void QtWebDirectory::init() { + load(QUrl(QString::fromUtf8(WsUrl::getQuteComDirectoryUrl().c_str()))); + setWindowTitle(tr("@product@ - Directory")); +} + +void QtWebDirectory::languageChanged() { + init(); +} + +void QtWebDirectory::CloseEventFilterSlot() { + load(QUrl(QString::fromUtf8(WsUrl::getQuteComDirectoryUrl().c_str()))); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webdirectory/QtWebDirectory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,53 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTWEBDIRECTORY_H +#define OWQTWEBDIRECTORY_H + +#include + +#include + +/** + * Embedded HTML browser widget for the web directory. + * + * @author Mathieu Stute + */ +class QtWebDirectory : public QWebView { + Q_OBJECT +public: + + QtWebDirectory(QWidget * parent); + + ~QtWebDirectory(); + + void raise(); + +private Q_SLOTS: + + void CloseEventFilterSlot(); + + void languageChanged(); + +private: + + void init(); +}; + +#endif //OWQTBROWSERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,334 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSms.h" + +#include "ui_SmsWindow.h" + +#include +#include + +#include +#include +#include + +#include + +#include +#include +#include +#include +#include + +#include + +QtSms::QtSms(CSms & cSms) + : QObjectThreadSafe(NULL), + _cSms(cSms) { + + _cSms.smsStatusEvent += boost::bind(&QtSms::smsStatusEventHandler, this, _1, _2, _3); + _qtQuteCom = (QtQuteCom *) _cSms.getCQuteCom().getPresentation(); + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSms::initThreadSafe, this)); + postEvent(event); +} + +QtSms::~QtSms() { + _qtQuteCom->setQtSms(NULL); + OWSAFE_DELETE(_ui); +} + +void QtSms::initThreadSafe() { + + _smsWindow = new QDialog(_qtQuteCom->getWidget()); + _ui = new Ui::SmsWindow(); + _ui->setupUi(_smsWindow); + + _mobilePhoneMenu = new QMenu(_smsWindow); + + SAFE_CONNECT(_ui->sendButton, SIGNAL(clicked()), SLOT(sendButtonClicked())); + SAFE_CONNECT(_ui->smsText, SIGNAL(textChanged()), SLOT(updateCounter())); + SAFE_CONNECT(_ui->signatureLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateCounter())); + + SAFE_CONNECT( _ui->addContactToolButton, SIGNAL(clicked()), SLOT(addContactToolButtonClicked())); + SAFE_CONNECT(_mobilePhoneMenu, SIGNAL(triggered(QAction *)), SLOT(updatePhoneNumberLineEdit(QAction *))); + + CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(CloseEventFilterSlot())); + _smsWindow->installEventFilter(closeEventFilter); + + loadSignature(); + _qtQuteCom->setQtSms(this); +} + +void QtSms::clear() { + + setText(QString()); +} + +void QtSms::setPhoneNumber(const QString & phoneNumber) { + + _ui->phoneComboBox->clear(); + if (!phoneNumber.isEmpty()) { + _ui->phoneComboBox->lineEdit()->setText(phoneNumber); + } +} + +void QtSms::addPhoneNumber(const QString & phoneNumber) { + + if (!phoneNumber.isEmpty()) { + if (_ui->phoneComboBox->lineEdit()->text().isEmpty()) { + _ui->phoneComboBox->lineEdit()->setText(phoneNumber); + } else { + _ui->phoneComboBox->lineEdit()->setText(_ui->phoneComboBox->lineEdit()->text() + "; " + phoneNumber); + } + } +} + +void QtSms::setSignature(const QString & signature) { + + _ui->signatureLineEdit->setText(signature); +} + +void QtSms::setText(const QString & text) { + + int pos = text.lastIndexOf(SIGNATURE_SEPARATOR); + QString mess = text; + if (pos != -1) { + //extract the signature + setSignature(text.right(text.length() - pos - SIGNATURE_LENGTH)); + mess = text.left(pos); + } + + _ui->smsText->clear(); + + QString fontSize = "9"; +#if defined(OS_MACOSX) + fontSize = "13"; +#endif + + _ui->smsText->setHtml("" + "" + "

" + + mess + + "

"); + updateCounter(); +} + +void QtSms::updateCounter() { + + int textLength = _ui->smsText->toPlainText().length(); + int signatureLength = _ui->signatureLineEdit->text().length(); + + QString counterText = QString::number(textLength + signatureLength) + "/"; + if (signatureLength) { + counterText += QString::number(MAX_LENGTH - SIGNATURE_LENGTH); + } else { + counterText += QString::number(MAX_LENGTH); + } + _ui->counterLabel->setText(counterText); + + // update counterLabel color + QPalette palette = _ui->counterLabel->palette(); + if (!isSmsLengthOk()) { + palette.setColor(QPalette::WindowText, Qt::red); + } else { + palette.setColor(QPalette::WindowText, Qt::black); + } + _ui->counterLabel->setPalette(palette); +} + +void QtSms::sendButtonClicked() { + + //check phoneNumber. + if (_ui->phoneComboBox->currentText().isEmpty()) { + + QMessageBox::warning(_smsWindow, + tr("@company@ SMS service"), + tr("Please fill in a phone number.") + ); + return; + } + + //check smsText. + if (_ui->smsText->toPlainText().isEmpty()) { + + QMessageBox::warning(_smsWindow, + tr("@company@ SMS service"), + tr("You can not send an empty message.") + ); + return; + } + + //Validate SMS length before sending + if (!isSmsLengthOk()) { + + int neededMessages = getNeededMessages(); + + int ret = QMessageBox::question(_smsWindow, + tr("@company@ SMS service"), + tr("Your message is too long.\n" + "This will send ") + QString::number(neededMessages) + tr(" SMS.\n") + tr("Do you want to continue?"), + QMessageBox::Yes, + QMessageBox::No + ); + + if (ret == QMessageBox::No) { + return; + } + } + + _ui->sendButton->setEnabled(false); + memorizeSignature(); + sendSms(); +} + +void QtSms::smsStatusEventHandler(WsSms & sender, int smsId, EnumSmsState::SmsState state) { + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSms::smsStatusEventHandlerThreadSafe, this, state)); + postEvent(event); +} + +void QtSms::smsStatusEventHandlerThreadSafe(EnumSmsState::SmsState state) { + + QString smsStatus = String::null; + switch (state) { + case EnumSmsState::SmsStateError: + smsStatus = tr("Your SMS has not been sent"); + break; + case EnumSmsState::SmsStateOk: + smsStatus = tr("Your SMS has been sent"); + break; + default: + LOG_FATAL("unknown SmsStatus=" + String::fromNumber(state)); + } + + _ui->sendButton->setEnabled(true); + QMessageBox::information(_smsWindow, tr("@company@ SMS service"), smsStatus); +} + +QString QtSms::getCompleteMessage() const { + + QString completeMessage = _ui->smsText->toPlainText(); + QString signature = _ui->signatureLineEdit->text(); + if (!signature.isEmpty()) { + completeMessage += SIGNATURE_SEPARATOR; + completeMessage += _ui->signatureLineEdit->text(); + } + + return completeMessage; +} + +int QtSms::getMessageLength() const { + + return getCompleteMessage().length(); +} + +void QtSms::sendSms() { + + // format Converts to UTF-8 + std::string numbers; + QString temp = _ui->phoneComboBox->currentText(); + QStringList phoneNumbers = temp.split(QRegExp(",|;|&")); + for (int i = 0; i < phoneNumbers.size(); i++) { + QString number = phoneNumbers[i].remove(" "); + if (i == 0) { + numbers += std::string(number.toUtf8().constData()); + } else { + numbers += ";" + std::string(number.toUtf8().constData()); + } + } + + QStringList messages = splitMessage(); + for (int i = 0; i < messages.size(); i++) { + + if (!messages[i].isEmpty()) { + std::string sms(messages[i].toUtf8().constData()); + _cSms.sendSMS(numbers, sms); + } + } +} + +QStringList QtSms::splitMessage() const { + + QStringList toReturn; + QString message = getCompleteMessage(); + int i; + + for (i = 0; i < getNeededMessages(); i++) { + QString temp = message.mid(i * MAX_LENGTH, MAX_LENGTH); + toReturn += temp; + } + + return toReturn; +} + +int QtSms::getNeededMessages() const { + + return ((getMessageLength() / MAX_LENGTH) + 1); +} + +void QtSms::memorizeSignature() { + + CUserProfile * cUserProfile = _qtQuteCom->getCQuteCom().getCUserProfileHandler().getCUserProfile(); + QString signature = _ui->signatureLineEdit->text(); + + if (cUserProfile && (!signature.isEmpty())) { + + UserProfile & userProfile = cUserProfile->getUserProfile(); + userProfile.setSmsSignature(std::string(signature.toUtf8())); + } +} + +void QtSms::loadSignature() { + + CUserProfile * cUserProfile = _qtQuteCom->getCQuteCom().getCUserProfileHandler().getCUserProfile(); + QString signature = _ui->signatureLineEdit->text(); + + if (cUserProfile) { + + UserProfile & userProfile = cUserProfile->getUserProfile(); + std::string signature = userProfile.getSmsSignature(); + + if (!signature.empty()) { + + _ui->signatureLineEdit->setText(QString::fromUtf8(signature.c_str())); + } + } +} + +void QtSms::addContactToolButtonClicked() { + _mobilePhoneMenu->clear(); + QtContactMenu::populateMobilePhoneMenu(_mobilePhoneMenu, _qtQuteCom->getCQuteCom()); + QPoint point = _ui->addContactToolButton->pos(); + point.setX(point.x() + _ui->addContactToolButton->rect().width()); + _mobilePhoneMenu->popup(_smsWindow->mapToGlobal(point)); +} + +void QtSms::updatePhoneNumberLineEdit(QAction * action) { + + if (action) { + QString data = action->data().toString(); + addPhoneNumber(data); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/QtSms.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,224 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSMS_H +#define OWQTSMS_H + +#include + +#include + +#include + +#include + +#include + +class QtQuteCom; + +class QWidget; +class QPushButton; +class QTextEdit; +class QDialog; +class QMenu; +class QAction; +namespace Ui { class SmsWindow; } + +static const QString SIGNATURE_SEPARATOR = " -- "; +static const int SIGNATURE_LENGTH = 4; +static const int MAX_LENGTH = 160; + +/** + * Qt Presentation component for SMS. + * + * @author Tanguy Krotoff + * @author Mathieu Stute + */ +class QtSms : public QObjectThreadSafe, public PSms, public Trackable { + Q_OBJECT +public: + + /** + * Constructor. + */ + QtSms(CSms & cSms); + + /** + * Destructor. + */ + virtual ~QtSms(); + + /** + * Return a pointer to the widget. + * + * @return the sms widget. + */ + QWidget * getWidget() const { return (QWidget*)_smsWindow; } + + /** + * @see Presentation::updatePresentation. + */ + void updatePresentation() {} + + /** + * Set the phone number(s). + * + * @param phoneNumber the phone number. + */ + void setPhoneNumber(const QString & phoneNumber); + + /** + * Add a phone number. + * + * @param phoneNumber the phone number to add. + */ + void addPhoneNumber(const QString & phoneNumber); + + /** + * Set the message text. + * + * @param text the text. + */ + void setText(const QString & text); + + /** + * Set the signature. + * + * @param signature the signature. + */ + void setSignature(const QString & signature); + + /** + * Clear signature, phone box and textedit. + */ + void clear(); + +private Q_SLOTS: + + /** + * Update the counter label. + */ + void updateCounter(); + + /** + * The user has clicked the send button. + */ + void sendButtonClicked(); + + /** + * The user has clicked the add contact button. + */ + void addContactToolButtonClicked(); + + /** + * The user has clicked on a menu entry. + */ + void updatePhoneNumberLineEdit(QAction * action); + + /** + * Call when the dialog is closed. + */ + void CloseEventFilterSlot() { clear(); } + +private: + + /** + * Send sms(s) via control layer. + */ + void sendSms(); + + /** + * Split the sms into several sms if needed. + * TODO: put this in the model layer + * + * @return the sms list. + */ + QStringList splitMessage() const; + + /** + * Return the number of sms(s) needed to send the message. + * TODO: put this in the model layer + * + * @return the number of sms(s) needed. + */ + int getNeededMessages() const; + + /** + * Return the length of the sms. + * + * @return the length of the sms. + */ + int getMessageLength() const; + + /** + * Gets the complete sms: text + signature. + * + * @return the complete message. + */ + QString getCompleteMessage() const; + + /** + * Check if the message could be send via one sms. + * + * @return the complete message. + */ + bool isSmsLengthOk() const { return (getCompleteMessage().length() <= MAX_LENGTH); } + + /** + * Init thread safe. + */ + void initThreadSafe(); + + /** + * UpdatePresentation thread safe. + */ + void updatePresentationThreadSafe() {} + + /** + * Sms status event handler. + */ + void smsStatusEventHandler(WsSms & sender, int smsId, EnumSmsState::SmsState state); + + /** + * Sms status event handler thread safe. + */ + void smsStatusEventHandlerThreadSafe(EnumSmsState::SmsState state); + + /** + * Memorize in the current UserProfile. + */ + void memorizeSignature(); + + /** + * Load the signature from the current UserProfile. + */ + void loadSignature(); + + CSms & _cSms; + + QtQuteCom * _qtQuteCom; + + QMenu * _mobilePhoneMenu; + + Ui::SmsWindow * _ui; + + QDialog * _smsWindow; +}; + +#endif //OWQTSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/SmsWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/SmsWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/sms/SmsWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/sms/SmsWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,158 @@ + + + + + SmsWindow + + + + 0 + 0 + 386 + 279 + + + + @product@ - SMS + + + true + + + + 9 + + + 6 + + + + + + 28 + 28 + + + + Click here to add a phone number + + + + + + :/pics/iconbar/add_contact.png + + + + 22 + 22 + + + + true + + + + + + + false + + + 0 /160 + + + Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter + + + + + + + Send + + + :/pics/contact/sms.png + + + + + + + + 7 + 0 + 0 + 0 + + + + Enter your signature here + + + 16 + + + + + + + Signature: + + + + + + + false + + + + + + + + 1 + 5 + 0 + 0 + + + + Phone number(s): + + + + + + + + 7 + 0 + 0 + 0 + + + + Enter phone number(s) here<br>They must be separated by & or ; or , + + + true + + + + + + + + phoneComboBox + addContactToolButton + smsText + signatureLineEdit + sendButton + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,131 @@ + + + + + BrowserSoftUpdateWindow + + + + 0 + 0 + 387 + 129 + + + + @product@ - Update available + + + + 9 + + + 6 + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Close + + + + + + + + + 0 + + + 6 + + + + + + 0 + 0 + 0 + 0 + + + + :/pics/update.png + + + + + + + 13 + + + <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 10 + + + + + + + + + + + + closeButton + clicked() + BrowserSoftUpdateWindow + reject() + + + 263 + 159 + + + 179 + 197 + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtBrowserSoftUpdate.h" + +#include "ui_BrowserSoftUpdateWindow.h" + +#include + +#include +#include + +#include +#include + +#include + +#include + +QtBrowserSoftUpdate::QtBrowserSoftUpdate(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize, QWidget * parent) + : QObject(parent) { + + _downloadUrl = downloadUrl; + _softUpdateWindow = new QDialog(parent); + + _ui = new Ui::BrowserSoftUpdateWindow(); + _ui->setupUi(_softUpdateWindow); + + QString originalLabelText = _ui->updateTextLabel->text() + .arg(QString::fromUtf8(version.c_str())) + .arg(fileSize); + _ui->updateTextLabel->setText(originalLabelText); + + MousePressEventFilter * mouseFilter = new MousePressEventFilter(this, SLOT(showQuteComDownloadWebPage())); + _ui->updateTextLabel->installEventFilter(mouseFilter); + + _softUpdateWindow->exec(); +} + +QtBrowserSoftUpdate::~QtBrowserSoftUpdate() { + OWSAFE_DELETE(_ui); +} + +void QtBrowserSoftUpdate::showQuteComDownloadWebPage() { + //WsUrl::showQuteComDownload(); + WebBrowser::openUrl(_downloadUrl); + _softUpdateWindow->accept(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,61 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTBROWSERSOFTUPDATE_H +#define OWQTBROWSERSOFTUPDATE_H + +#include + +#include + +#include + +class QDialog; +namespace Ui { class BrowserSoftUpdateWindow; } + +/** + * Shows a window with the a clickable link to the QuteCom download page. + * + * @author Tanguy Krotoff + */ +class QtBrowserSoftUpdate : public QObject, NonCopyable { + Q_OBJECT +public: + + QtBrowserSoftUpdate(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize, QWidget * parent); + + ~QtBrowserSoftUpdate(); + +private Q_SLOTS: + + void showQuteComDownloadWebPage(); + +private: + + Ui::BrowserSoftUpdateWindow * _ui; + + QDialog * _softUpdateWindow; + + std::string _downloadUrl; +}; + +#endif //OWQTBROWSERSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,175 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QtSoftUpdate.h" + +#include "ui_SoftUpdateWindow.h" + +#include "QtBrowserSoftUpdate.h" + +#include + +#include +#include + +#include +#include + +#include + +#include +#include +#include +#include + +#include + +#include + +static const char * UPDATE_PROGRAM = "update.exe"; + +QtSoftUpdate::QtSoftUpdate(CSoftUpdate & cSoftUpdate) + : QObjectThreadSafe(NULL), + _cSoftUpdate(cSoftUpdate) { + + _softUpdater = NULL; + _ui = NULL; + + _qtQuteCom = (QtQuteCom *) _cSoftUpdate.getCQuteCom().getPresentation(); + + updateQuteComEvent += boost::bind(&QtSoftUpdate::updateQuteComEventHandler, this, _1, _2, _3, _4); + + typedef PostEvent0 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::initThreadSafe, this)); + postEvent(event); +} + +void QtSoftUpdate::initThreadSafe() { +} + +QtSoftUpdate::~QtSoftUpdate() { + OWSAFE_DELETE(_softUpdater); + OWSAFE_DELETE(_ui); +} + +void QtSoftUpdate::updateQuteComEventHandler(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize) { + + typedef PostEvent4 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::updateQuteComEventHandlerThreadSafe, + this, _1, _2, _3, _4), downloadUrl, buildId, version, fileSize); + postEvent(event); +} + +void QtSoftUpdate::updateQuteComEventHandlerThreadSafe(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize) { + +#ifdef OS_WINDOWS + _softUpdateWindow = new QDialog(_qtQuteCom->getWidget()); + + _ui = new Ui::SoftUpdateWindow(); + _ui->setupUi(_softUpdateWindow); + + SAFE_CONNECT(_softUpdateWindow, SIGNAL(rejected()), SLOT(abortDownload())); + + //updateTextLabel + _originalLabelText = _ui->updateTextLabel->text() + .arg(QString::fromUtf8(version.c_str())) + .arg(QString::fromUtf8(downloadUrl.c_str())) + .arg(fileSize); + _ui->updateTextLabel->setText(_originalLabelText); + + //Deletes previous update program + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString update_path = QString::fromUtf8(config.getConfigDir().c_str())+ UPDATE_PROGRAM; + QFile file(update_path); + file.remove(); + file.close(); + + _softUpdater = new SoftUpdater(downloadUrl, std::string(update_path.toUtf8())); + _softUpdater->dataReadProgressEvent += boost::bind(&QtSoftUpdate::dataReadProgressEventHandler, this, _1, _2, _3); + _softUpdater->downloadFinishedEvent += boost::bind(&QtSoftUpdate::downloadFinishedEventHandler, this, _1); + _softUpdater->start(); + + _softUpdateWindow->exec(); +#else + QtBrowserSoftUpdate(downloadUrl, buildId, version, fileSize, _qtQuteCom->getWidget()); +#endif +} + +void QtSoftUpdate::dataReadProgressEventHandler(double bytesDone, double bytesTotal, unsigned downloadSpeed) { + typedef PostEvent3 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::dataReadProgressEventHandlerThreadSafe, this, _1, _2, _3), bytesDone, bytesTotal, downloadSpeed); + postEvent(event); +} + +void QtSoftUpdate::dataReadProgressEventHandlerThreadSafe(double bytesDone, double bytesTotal, unsigned downloadSpeed) { + LOG_DEBUG("progress=" + String::fromDouble(bytesDone)); + + //progressBar + _ui->progressBar->setRange(0, (int)bytesTotal); + _ui->progressBar->setValue((int)bytesDone); + + _ui->updateTextLabel->setText(_originalLabelText.arg(downloadSpeed)); + + QApplication::processEvents(); +} + +void QtSoftUpdate::downloadFinishedEventHandler(HttpRequest::Error error) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::downloadFinishedEventHandlerThreadSafe, this, _1), error); + postEvent(event); +} + +void QtSoftUpdate::downloadFinishedEventHandlerThreadSafe(HttpRequest::Error error) { + LOG_DEBUG("download finished"); + + if (error == HttpRequest::NoError) { + //Terminates the thread from the model + _cSoftUpdate.getCQuteCom().terminate(); + + launchUpdateProcess(); + } else { + disconnect(_softUpdateWindow, SIGNAL(rejected()), this, SLOT(abortDownload())); + _softUpdateWindow->reject(); + } +} + +void QtSoftUpdate::abortDownload() { + _softUpdater->abort(); +} + +void QtSoftUpdate::launchUpdateProcess() { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + QString update_path = "\""+QString::fromUtf8(config.getConfigDir().c_str())+ UPDATE_PROGRAM+"\""; + QProcess * updateProcess = new QProcess(); + SAFE_CONNECT(updateProcess, SIGNAL(error(QProcess::ProcessError)), SLOT(updateProcessError(QProcess::ProcessError))); + updateProcess->start(update_path); +} + +void QtSoftUpdate::updateProcessError(QProcess::ProcessError error) { + QMessageBox::critical(_qtQuteCom->getWidget(), + tr("@product@ - Update failed"), + tr("@product@ update failed to start: try to update @product@ manually")); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,123 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQTSOFTUPDATE_H +#define OWQTSOFTUPDATE_H + +#include + +#include + +#include + +#include + +#include +#include + +class CQuteCom; +class SoftUpdater; +class CSoftUpdate; +class QtQuteCom; + +class QDialog; +namespace Ui { class SoftUpdateWindow; } + +/** + * Shows a Qt progress dialog when downloading a QuteCom update. + * + * Starts the update.exe process (the NSIS installer under Windows). + * + * @author Tanguy Krotoff + */ +class QtSoftUpdate : public QObjectThreadSafe, public PSoftUpdate, public Trackable { + Q_OBJECT +public: + + QtSoftUpdate(CSoftUpdate & cSoftUpdate); + + virtual ~QtSoftUpdate(); + + void updatePresentation() { } + +private Q_SLOTS: + + void abortDownload(); + + /** + * An error occured while starting the update process. + * + * @param error update process launching error + */ + void updateProcessError(QProcess::ProcessError error); + +private: + + void initThreadSafe(); + + void updatePresentationThreadSafe() { } + + void updateQuteComEventHandler(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize); + + void updateQuteComEventHandlerThreadSafe(const std::string & downloadUrl, + unsigned long long buildId, + const std::string & version, + unsigned fileSize); + + /** + * @see SoftUpdater::dataReadProgressEvent + */ + void dataReadProgressEventHandler(double bytesDone, double bytesTotal, unsigned downloadSpeed); + + void dataReadProgressEventHandlerThreadSafe(double bytesDone, double bytesTotal, unsigned downloadSpeed); + + /** + * @see SoftUpdater::downloadFinishedEvent + */ + void downloadFinishedEventHandler(HttpRequest::Error error); + + void downloadFinishedEventHandlerThreadSafe(HttpRequest::Error error); + + /** + * Launches the update process (the NSIS installer under Windows). + */ + void launchUpdateProcess(); + + QtQuteCom * _qtQuteCom; + + CSoftUpdate & _cSoftUpdate; + + /** SoftUpdater. */ + SoftUpdater * _softUpdater; + + /** Original progress dialog label text. */ + QString _originalLabelText; + + Ui::SoftUpdateWindow * _ui; + + /** + * Progress dialog. + */ + QDialog * _softUpdateWindow; +}; + +#endif //OWQTSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,145 @@ + + + + + SoftUpdateWindow + + + + 0 + 0 + 290 + 177 + + + + @product@ - Downloading update + + + + 9 + + + 6 + + + + + 0 + + + 6 + + + + + Downloading @product@ update... + +Version: %1 +URL: %2 +File Size: %3 (MB) +Speed: %4 (kB/s) + + + Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter + + + 10 + + + + + + + + 0 + 0 + 0 + 0 + + + + :/pics/update.png + + + + + + + false + + + Qt::Horizontal + + + + + + + + + 0 + + + 6 + + + + + Qt::Horizontal + + + + 131 + 31 + + + + + + + + Cancel + + + + + + + + + Qt::Vertical + + + + 20 + 40 + + + + + + + + + + + + + cancelButton + clicked() + SoftUpdateWindow + reject() + + + 363 + 226 + + + 179 + 239 + + + + + Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/win32/application.ico and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/qutecom/src/presentation/qt/win32/application.ico differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/win32/application.rc qutecom-2.2+dfsg1/qutecom/src/presentation/qt/win32/application.rc --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/win32/application.rc 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/win32/application.rc 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,43 @@ +//Icon with lowest ID value placed first to ensure application icon +//remains consistent on all systems. +IDI_ICON1 ICON "${CMAKE_CURRENT_SOURCE_DIR}/win32/application.ico" + +#ifndef Q_CC_BOR + #if defined(UNDER_CE) && UNDER_CE >= 400 + #include + #else + #include + #endif +#endif + +VS_VERSION_INFO VERSIONINFO + FILEVERSION ${APPLICATION_VERSION_1},${APPLICATION_VERSION_2},${APPLICATION_VERSION_3},${APPLICATION_VERSION_4} + PRODUCTVERSION ${APPLICATION_VERSION_1},${APPLICATION_VERSION_2},${APPLICATION_VERSION_3},${APPLICATION_VERSION_4} + FILEFLAGSMASK 0x3fL +#ifdef DEBUG + FILEFLAGS VS_FF_DEBUG +#else + FILEFLAGS 0x0L +#endif + FILEOS VOS__WINDOWS32 + FILETYPE VFT_APP + FILESUBTYPE 0x0L + BEGIN + BLOCK "StringFileInfo" + BEGIN + BLOCK "040904B0" + BEGIN + VALUE "ProductName", "${APPLICATION_NAME}\0" + VALUE "ProductVersion", "${APPLICATION_VERSION}\0" + VALUE "Comments", "${APPLICATION_NAME}, a voice over Internet phone\0" + VALUE "CompanyName", "QuteCom\0" + VALUE "LegalCopyright", "Copyright (C) 2004-2010 Mbdsys\0" + VALUE "LegalTrademarks", "QuteCom\0" + VALUE "FileDescription", "${APPLICATION_NAME}\0" + VALUE "FileVersion", "${APPLICATION_VERSION}\0" + VALUE "InternalName", "${APPLICATION_NAME}\0" + VALUE "OriginalFilename", "${BINARY_NAME}.exe\0" + END + END + END +/* End of Version info */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/WinApp.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/qt/WinApp.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/WinApp.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/WinApp.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,58 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "WinApp.h" + +#include + +#include + +#include + +#define MY_WM_TERM WM_USER + 684 +#define MY_WM_EXIT WM_USER + 685 + +WinApp::WinApp(int & argc, char ** argv) : QApplication(argc, argv) { +} + +bool WinApp::winEventFilter(MSG * msg, long * result) { + + if (msg->message == (MY_WM_TERM)) { + if (_cQuteCom) { + LOG_INFO("Disable serialization"); + _cQuteCom->enableSerialization(false); + } + return true; + + } else if (msg->message == (MY_WM_EXIT)) { + if (_cQuteCom) { + LOG_INFO("Terminating"); + _cQuteCom->enableSerialization(false); + // "wait" for pending serialization to be finished + Sleep(1000); + exit(1); + } + } + + return false; +} + +void WinApp::setCQuteCom(CQuteCom *cQuteCom) { + _cQuteCom = cQuteCom; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/WinApp.h qutecom-2.2+dfsg1/qutecom/src/presentation/qt/WinApp.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/qt/WinApp.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/qt/WinApp.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +/** + * @author Mathieu Stute + */ + +#ifndef OWWINAPP_H +#define OWWINAPP_H + +#include + +class CQuteCom; + +class WinApp : public QApplication { + Q_OBJECT +public: + + WinApp(int & argc, char ** argv); + + void setCQuteCom(CQuteCom *cQuteCom); + + bool winEventFilter(MSG * msg, long * result); + +private: + + CQuteCom *_cQuteCom; +}; + +#endif //OWWINAPP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/Doxyfile qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/Doxyfile --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/Doxyfile 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/Doxyfile 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,265 @@ +# Doxyfile 1.4.4 + +#--------------------------------------------------------------------------- +# Project related configuration options +#--------------------------------------------------------------------------- +PROJECT_NAME = QuteCom library to use via XPCOM +PROJECT_NUMBER = +OUTPUT_DIRECTORY = doc +CREATE_SUBDIRS = NO +OUTPUT_LANGUAGE = English +USE_WINDOWS_ENCODING = YES +BRIEF_MEMBER_DESC = YES +REPEAT_BRIEF = YES +ABBREVIATE_BRIEF = "The $name class" \ + "The $name widget" \ + "The $name file" \ + is \ + provides \ + specifies \ + contains \ + represents \ + a \ + an \ + the +ALWAYS_DETAILED_SEC = NO +INLINE_INHERITED_MEMB = NO +FULL_PATH_NAMES = NO +STRIP_FROM_PATH = +STRIP_FROM_INC_PATH = +SHORT_NAMES = NO +JAVADOC_AUTOBRIEF = YES +MULTILINE_CPP_IS_BRIEF = NO +DETAILS_AT_TOP = NO +INHERIT_DOCS = YES +DISTRIBUTE_GROUP_DOC = NO +SEPARATE_MEMBER_PAGES = NO +TAB_SIZE = 8 +ALIASES = +OPTIMIZE_OUTPUT_FOR_C = NO +OPTIMIZE_OUTPUT_JAVA = NO +SUBGROUPING = YES +#--------------------------------------------------------------------------- +# Build related configuration options +#--------------------------------------------------------------------------- +EXTRACT_ALL = YES +EXTRACT_PRIVATE = YES +EXTRACT_STATIC = YES +EXTRACT_LOCAL_CLASSES = NO +EXTRACT_LOCAL_METHODS = NO +HIDE_UNDOC_MEMBERS = NO +HIDE_UNDOC_CLASSES = NO +HIDE_FRIEND_COMPOUNDS = NO +HIDE_IN_BODY_DOCS = NO +INTERNAL_DOCS = NO +CASE_SENSE_NAMES = NO +HIDE_SCOPE_NAMES = NO +SHOW_INCLUDE_FILES = YES +INLINE_INFO = YES +SORT_MEMBER_DOCS = YES +SORT_BRIEF_DOCS = NO +SORT_BY_SCOPE_NAME = NO +GENERATE_TODOLIST = YES +GENERATE_TESTLIST = YES +GENERATE_BUGLIST = YES +GENERATE_DEPRECATEDLIST= YES +ENABLED_SECTIONS = +MAX_INITIALIZER_LINES = 30 +SHOW_USED_FILES = YES +SHOW_DIRECTORIES = YES +FILE_VERSION_FILTER = +#--------------------------------------------------------------------------- +# configuration options related to warning and progress messages +#--------------------------------------------------------------------------- +QUIET = NO +WARNINGS = YES +WARN_IF_UNDOCUMENTED = YES +WARN_IF_DOC_ERROR = YES +WARN_NO_PARAMDOC = NO +WARN_FORMAT = "$file:$line: $text" +WARN_LOGFILE = +#--------------------------------------------------------------------------- +# configuration options related to the input files +#--------------------------------------------------------------------------- +INPUT = src \ + README \ + INSTALL \ + TODO \ + AUTHORS \ + mainpage.doxygen \ + QuteComCodeConventions.txt \ + COPYING \ + ChangeLog +FILE_PATTERNS = *.c \ + *.cc \ + *.cxx \ + *.cpp \ + *.c++ \ + *.d \ + *.java \ + *.ii \ + *.ixx \ + *.ipp \ + *.i++ \ + *.inl \ + *.h \ + *.hh \ + *.hxx \ + *.hpp \ + *.h++ \ + *.idl \ + *.odl \ + *.cs \ + *.php \ + *.php3 \ + *.inc \ + *.m \ + *.mm \ + *.dox +RECURSIVE = YES +EXCLUDE = +EXCLUDE_SYMLINKS = NO +EXCLUDE_PATTERNS = +EXAMPLE_PATH = . +EXAMPLE_PATTERNS = * +EXAMPLE_RECURSIVE = NO +IMAGE_PATH = +INPUT_FILTER = +FILTER_PATTERNS = +FILTER_SOURCE_FILES = NO +#--------------------------------------------------------------------------- +# configuration options related to source browsing +#--------------------------------------------------------------------------- +SOURCE_BROWSER = NO +INLINE_SOURCES = NO +STRIP_CODE_COMMENTS = YES +REFERENCED_BY_RELATION = NO +REFERENCES_RELATION = NO +USE_HTAGS = NO +VERBATIM_HEADERS = YES +#--------------------------------------------------------------------------- +# configuration options related to the alphabetical class index +#--------------------------------------------------------------------------- +ALPHABETICAL_INDEX = NO +COLS_IN_ALPHA_INDEX = 5 +IGNORE_PREFIX = +#--------------------------------------------------------------------------- +# configuration options related to the HTML output +#--------------------------------------------------------------------------- +GENERATE_HTML = YES +HTML_OUTPUT = html +HTML_FILE_EXTENSION = .html +HTML_HEADER = +HTML_FOOTER = +HTML_STYLESHEET = +HTML_ALIGN_MEMBERS = YES +GENERATE_HTMLHELP = NO +CHM_FILE = +HHC_LOCATION = +GENERATE_CHI = NO +BINARY_TOC = NO +TOC_EXPAND = NO +DISABLE_INDEX = NO +ENUM_VALUES_PER_LINE = 4 +GENERATE_TREEVIEW = NO +TREEVIEW_WIDTH = 250 +#--------------------------------------------------------------------------- +# configuration options related to the LaTeX output +#--------------------------------------------------------------------------- +GENERATE_LATEX = NO +LATEX_OUTPUT = latex +LATEX_CMD_NAME = latex +MAKEINDEX_CMD_NAME = makeindex +COMPACT_LATEX = NO +PAPER_TYPE = a4wide +EXTRA_PACKAGES = +LATEX_HEADER = +PDF_HYPERLINKS = NO +USE_PDFLATEX = NO +LATEX_BATCHMODE = NO +LATEX_HIDE_INDICES = NO +#--------------------------------------------------------------------------- +# configuration options related to the RTF output +#--------------------------------------------------------------------------- +GENERATE_RTF = NO +RTF_OUTPUT = rtf +COMPACT_RTF = NO +RTF_HYPERLINKS = NO +RTF_STYLESHEET_FILE = +RTF_EXTENSIONS_FILE = +#--------------------------------------------------------------------------- +# configuration options related to the man page output +#--------------------------------------------------------------------------- +GENERATE_MAN = NO +MAN_OUTPUT = man +MAN_EXTENSION = .3 +MAN_LINKS = NO +#--------------------------------------------------------------------------- +# configuration options related to the XML output +#--------------------------------------------------------------------------- +GENERATE_XML = NO +XML_OUTPUT = xml +XML_SCHEMA = +XML_DTD = +XML_PROGRAMLISTING = YES +#--------------------------------------------------------------------------- +# configuration options for the AutoGen Definitions output +#--------------------------------------------------------------------------- +GENERATE_AUTOGEN_DEF = NO +#--------------------------------------------------------------------------- +# configuration options related to the Perl module output +#--------------------------------------------------------------------------- +GENERATE_PERLMOD = NO +PERLMOD_LATEX = NO +PERLMOD_PRETTY = YES +PERLMOD_MAKEVAR_PREFIX = +#--------------------------------------------------------------------------- +# Configuration options related to the preprocessor +#--------------------------------------------------------------------------- +ENABLE_PREPROCESSING = YES +MACRO_EXPANSION = NO +EXPAND_ONLY_PREDEF = NO +SEARCH_INCLUDES = YES +INCLUDE_PATH = +INCLUDE_FILE_PATTERNS = +PREDEFINED = +EXPAND_AS_DEFINED = +SKIP_FUNCTION_MACROS = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to external references +#--------------------------------------------------------------------------- +TAGFILES = +GENERATE_TAGFILE = +ALLEXTERNALS = NO +EXTERNAL_GROUPS = YES +PERL_PATH = /usr/bin/perl +#--------------------------------------------------------------------------- +# Configuration options related to the dot tool +#--------------------------------------------------------------------------- +CLASS_DIAGRAMS = YES +HIDE_UNDOC_RELATIONS = YES +HAVE_DOT = NO +CLASS_GRAPH = YES +COLLABORATION_GRAPH = YES +GROUP_GRAPHS = YES +UML_LOOK = NO +TEMPLATE_RELATIONS = NO +INCLUDE_GRAPH = YES +INCLUDED_BY_GRAPH = YES +CALL_GRAPH = NO +GRAPHICAL_HIERARCHY = YES +DIRECTORY_GRAPH = YES +DOT_IMAGE_FORMAT = png +DOT_PATH = +DOTFILE_DIRS = +MAX_DOT_GRAPH_WIDTH = 1024 +MAX_DOT_GRAPH_HEIGHT = 1024 +MAX_DOT_GRAPH_DEPTH = 1000 +DOT_TRANSPARENT = NO +DOT_MULTI_TARGETS = NO +GENERATE_LEGEND = YES +DOT_CLEANUP = YES +#--------------------------------------------------------------------------- +# Configuration::additions related to the search engine +#--------------------------------------------------------------------------- +SEARCHENGINE = NO diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/include/Command.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/include/Command.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/include/Command.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/include/Command.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,295 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWCOMMAND_H +#define OWCOMMAND_H + +#include "Listener.h" + +#include + +#include + +class QuteCom; +class CQuteCom; + +#ifdef XPCOM_DLL + #ifdef BUILD_XPCOM_DLL + #define API DLLEXPORT + #else + #define API DLLIMPORT + #endif +#else + #define API +#endif + +/** + * Commands to send to QuteCom. + * + * @author Tanguy Krotoff + */ +class API Command { +public: + + /** + * Command constructor. + * + * @param applicationPath where the application lies + * (ex: C:/Program Files/QuteCom/) + * @param configPath where the application configuration files lies + * (ex: C:/Documents and Settings/QuteCom/) + */ + Command(const std::string & configFilesPath, const std::string & configPath); + + ~Command(); + + /** + * Starts the model thread + the SIP stack. + * + * To do before everything else. + */ + void start(); + + /** + * HTTP proxy settings to use for all the HTTP requests. + * + * @param hostname HTTP proxy hostname + * @param port HTTP proxy port number + * @param login HTTP proxy login (can be empty) + * @param password HTTP proxy password (can be empty) + */ + void setHttpProxySettings(const std::string & hostname, unsigned port, + const std::string & login, const std::string & password); + + /** + * Terminates the model thread + the SIP stack. + */ + void terminate(); + + /** + * Adds a QuteCom account. + * + * @param login QuteCom account login + * @param password QuteCom account password + * @param autoLogin if true login the user automatically (save it to the file) + */ + void addQuteComAccount(const std::string & login, const std::string & password, bool autoLogin); + + /** + * @name Listener Methods + * @{ + */ + + /** + * @see Listener + */ + void addListener(Listener * listener); + + /** + * @see Listener + */ + bool removeListener(Listener * listener); + + /** + * @see Listener + */ + void removeAllListeners(); + + /** @} */ + + /** + * @name Call Methods + * @{ + */ + + /** An error occured while creating a phone call. */ + static const int CallIdError = -1; + + /** + * Makes a call given a phone number. + * + * Creates a new phone call with a new call id (increased each time). + * + * Warning! + * Be sure to receive PhoneLineState::LineOk before to call this method. + * + * @param phoneNumber phone number to call + * @param lineId phone line id + * @return the phone call id (callId) or CallIdError if an error occured + */ + int makeCall(const std::string & phoneNumber, int lineId); + + /** + * Hang up (raccrocher). + * + * Can correspond to reject or close call depending on PhoneCallState. + * + * @param callId phone call id + */ + void hangUp(int callId); + + /** + * Used to determine if hang up is possible. + * + * @param callId phone call id + * @returns true if it is possible to hang up the phone, false instead. + */ + bool canHangUp(int callId) const; + + /** + * Pick up (decrocher). + * + * Corresponds to accept call. + * + * @param callId phone call id + */ + void pickUp(int callId); + + /** + * Used to determine if it is possible to pick up the phone. + * + * @param callId phone call id + * @returns true if it is possible to pick up the phone, false instead. + */ + bool canPickUp(int callId) const; + + /** @} */ + + /** + * @name Presence Methods + * @{ + */ + + /** + * Subscribes for the presence state of somebody. + * + * Warning! + * Be sure to receive PhoneLineState::LineOk before to call this method. + * + * @param contactId person I want to see + */ + void subscribeToPresenceOf(const std::string & contactId); + + /** + * Sets my presence status. + * + * Warning! + * Be sure to receive PhoneLineState::LineOk before to call this method. + * + * @param note personnalized status string ("I'm under the shower"), used only with PresenceUserDefined + */ + void publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note); + + /** @} */ + + /** + * @name Chat Methods + * @{ + */ + + /** + * Sends a chat message. + * + * Warning! + * Be sure to receive PhoneLineState::LineOk before to call this method. + * + * @param contactId message receiver + * @param message message to send + * @return message id + */ + int sendChatMessage(const std::string & contactId, const std::string & message); + + /** @} */ + + /** + * @name Sound Mixer Configuration + * @{ + */ + + /** + * Sets the microphone volume. + * + * @param volume new input volume (0 to 100) + */ + void setInputVolume(int volume); + + /** + * Gets the input (microphone) volume. + * + * @return the input volume (0 to 100), -1 if an error occured + */ + int getInputVolume() const; + + /** + * Sets the master or wave out volume. + * + * @param volume new output volume (0 to 100) + */ + void setOutputVolume(int volume); + + /** + * Gets the output (master or wave out) volume. + * + * @return the output volume (0 to 100), -1 if an error occured + */ + int getOutputVolume() const; + + /** @} */ + + /** + * @name SMS Methods + * @{ + */ + + /** + * Sends a SMS to a given phone number. + * + * Warning! + * phoneNumber and message should be UTF-8 encoded. + * Using Qt4, sendSMS() should be called as followed: + *
+	 * sendSMS(phoneComboBox->currentText().toUtf8().constData(),
+	 *         smsText->toPlainText().toUtf8().constData());
+	 * 
+ * For Qt4, check QString::toUtf8() and QByteArray::constData() + * + * @param phoneNumber phone number that will receive the SMS + * @param message SMS message + * @return SMS id + */ + int sendSMS(const std::string & phoneNumber, const std::string & message); + + /** @} */ + + /** + * Sends a DTMF to a given phone call. + * + * @param callId phone call id to send a DTMF + * @param tone DTMF tone to send + */ + void playTone(int callId, EnumTone::Tone tone); + +private: + + QuteCom * _qutecomPhone; + + CQuteCom * _cQuteCom; +}; + +#endif //OWCOMMAND_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/include/Listener.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/include/Listener.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/include/Listener.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/include/Listener.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,117 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWLISTENER_H +#define OWLISTENER_H + +#include + +#include +#include +#include + +#include +#include + +#include + +/** + * Events notification from QuteCom. + * + * @author Tanguy Krotoff + */ +class Listener : Interface { +public: + + /** + * Login procedure is done, event with the procedure result. + * + * @param state login procedure result + * @param login QuteCom login used + * @param password QuteCom password used + */ + virtual void qutecomLoginStateChangedEvent(EnumSipLoginState::SipLoginState state, const std::string & login, const std::string & password) = 0; + + /** + * The state of the phone line has changed. + * + * @param state new phone line state + * @param lineId phone line id + * @param param for future use + */ + virtual void phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state, int lineId, void * param) = 0; + + /** + * The state of the phone call has changed. + * + * @param state new phone call state + * @param lineId phone line id associated with this phone call + * @param callId phone call id + * @param sipAddress caller/callee SIP address (can be empty) + * @param userName caller/callee username (can be empty) + * @param displayName caller/callee display name (can be empty) + * @param param for future use + */ + virtual void phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state, int lineId, int callId, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) = 0; + + /** + * Presence status of a buddy has changed. + * + * @param state new buddy presence status + * @param note user presence defined (state = PresenceUserDefined) + * @param sipAddress buddy SIP address (can be empty) + * @param userName buddy username (can be empty) + * @param displayName buddy display name (can be empty) + * @param param for future use + */ + virtual void presenceStateChangedEvent(EnumPresenceState::PresenceState state, const std::string & note, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) = 0; + + /** + * Chat message received callback. + * + * @see presenceStateChangedEvent + * @param message message received + */ + virtual void chatMessageReceivedEvent(const std::string & message, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) = 0; + + /** + * Callback to check if the SMS was received or not. + * + * @param smsId SMS id + * @param state SMS state (ok or error) + */ + virtual void smsStatusEvent(int smsId, EnumSmsState::SmsState state) = 0; + + /** + * A login/password is needed for the HTTP proxy. + * + * @param hostname HTTP proxy server hostname detected + * @param port HTTP proxy server port detected + * @see Command::setHttpProxySettings() + */ + //virtual void httpProxySettingsNeededEvent(const std::string & hostname, unsigned port)/* = 0*/ { } +}; + +#endif //OWLISTENER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/Command.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/Command.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/Command.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/Command.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,253 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include + +#include "XPCOMQuteCom.h" +#include "XPCOMPhoneLine.h" +#include "XPCOMPhoneCall.h" +#include "XPCOMFactory.h" +#include "XPCOMIMHandler.h" +#include "XPCOMSms.h" +#include "ListenerList.h" + +#include + +#include +#include +#include + +#include +#include +#include + +#include + +#if defined(CC_MSVC) + #include +#endif + +#ifdef PHAPIWRAPPER + #include +#elif defined(SIPXWRAPPER) + #include + #include +#elif defined (MULTIIMWRAPPER) + #include + #include + #include +#else + #include + #include +#endif + +Command::Command(const std::string & configFilesPath, const std::string & configPath) { + +#ifdef CC_MSVC + new MemoryDump("QuteCom", String::fromUnsignedLongLong(QuteComBuildId::getSvnRevision().c_str())); +#endif + + //Graphical interface implementation + PFactory::setFactory(new XPCOMFactory()); + + //SIP implementation + SipWrapperFactory * sipFactory = NULL; + + //IM implementation + IMWrapperFactory * imFactory = NULL; + +#ifdef SIPXWRAPPER + sipFactory = new SipXFactory(); + imFactory = new NullIMFactory(); +#elif defined(PHAPIWRAPPER) + PhApiFactory * phApiFactory = new PhApiFactory(); + sipFactory = phApiFactory; + imFactory = phApiFactory; +#elif defined(MULTIIMWRAPPER) + PhApiFactory * phApiFactory = new PhApiFactory(); + GaimIMFactory * gaimIMFactory = new GaimIMFactory(); + sipFactory = phApiFactory; + imFactory = new MultiIMFactory(*phApiFactory, *gaimIMFactory); +#else + sipFactory = new NullSipFactory(); + imFactory = new NullIMFactory(); +#endif + SipWrapperFactory::setFactory(sipFactory); + IMWrapperFactory::setFactory(imFactory); + + /*QuteCom::CONFIG_FILES_PATH = configFilesPath; + + //Codec plugin path (phspeexplugin and phamrplugin) + ConfigManager::getInstance().getCurrentConfig().set(Config::CODEC_PLUGIN_PATH, + QuteCom::getConfigFilesPath() + "../extensions/{debaffee-a972-4d8a-b426-8029170f2a89}/libraries/");*/ + + _qutecomPhone = new QuteCom(); + _cQuteCom = new CQuteCom(*_qutecomPhone); +} + +Command::~Command() { + delete _qutecomPhone; + delete _cQuteCom; +} + +void Command::start() { + //Starts the model component thread + _cQuteCom->start(); +} + +void Command::setHttpProxySettings(const std::string & hostname, unsigned port, + const std::string & login, const std::string & password) { + + /*QuteCom::HTTP_PROXY_HOSTNAME = hostname; + QuteCom::HTTP_PROXY_PORT = port;*/ +} + +void Command::terminate() { + _cQuteCom->terminate(); +} + +void Command::addQuteComAccount(const std::string & login, const std::string & password, bool autoLogin) { + //_cQuteCom->addQuteComAccount(login, password, autoLogin); +} + +void Command::addListener(Listener * listener) { + ListenerList & listenerList = ListenerList::getInstance(); + listenerList += listener; +} + +bool Command::removeListener(Listener * listener) { + ListenerList & listenerList = ListenerList::getInstance(); + return listenerList -= listener; +} + +void Command::removeAllListeners() { + ListenerList & listenerList = ListenerList::getInstance(); + listenerList.clear(); +} + +int Command::makeCall(const std::string & phoneNumber, int lineId) { + PhoneLineList & phoneLineList = PhoneLineList::getInstance(); + for (unsigned i = 0; i < phoneLineList.size(); i++) { + if (i == (lineId - 1)) { + XPCOMPhoneLine * phoneLine = phoneLineList[i]; + return phoneLine->makeCall(phoneNumber); + } + } + + return CallIdError; +} + +void Command::hangUp(int callId) { + PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; + if (phoneCall) { + phoneCall->hangUp(); + } +} + +bool Command::canHangUp(int callId) const { + PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; + if (phoneCall) { + return phoneCall->canHangUp(); + } + + return false; +} + +void Command::pickUp(int callId) { + PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; + if (phoneCall) { + phoneCall->pickUp(); + } +} + +bool Command::canPickUp(int callId) const { + PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; + if (phoneCall) { + return phoneCall->canPickUp(); + } + + return false; +} + +void Command::subscribeToPresenceOf(const std::string & contactId) { + XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); + imHandler.subscribeToPresenceOf(contactId); +} + +void Command::publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { + XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); + imHandler.publishMyPresence(state, note); +} + +int Command::sendChatMessage(const std::string & sipAddress, const std::string & message) { + XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); + return imHandler.sendChatMessage(sipAddress, message); +} + +void Command::setInputVolume(int volume) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + VolumeControl volumeControl(config.getAudioInputDeviceName(), VolumeControl::DeviceTypeInput); + volumeControl.setLevel(volume); +} + +void Command::setOutputVolume(int volume) { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + VolumeControl volumeControl(config.getAudioOutputDeviceName(), VolumeControl::DeviceTypeOutput); + volumeControl.setLevel(volume); +} + +int Command::getInputVolume() const { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + try { + VolumeControl volumeControl(config.getAudioInputDeviceName(), VolumeControl::DeviceTypeInput); + return volumeControl.getLevel(); + } catch (Exception & e) { + return -1; + } +} + +int Command::getOutputVolume() const { + Config & config = ConfigManager::getInstance().getCurrentConfig(); + try { + VolumeControl volumeControl(config.getAudioOutputDeviceName(), VolumeControl::DeviceTypeOutput); + return volumeControl.getLevel(); + } catch (Exception & e) { + return -1; + } +} + +int Command::sendSMS(const std::string & phoneNumber, const std::string & message) { + if (XPCOMSms::sms) { + return XPCOMSms::sms->sendSMS(phoneNumber, message); + } + return -1; +} + +void Command::playTone(int callId, EnumTone::Tone tone) { + PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; + if (phoneCall) { + phoneCall->playTone(tone); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/ListenerList.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/ListenerList.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/ListenerList.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/ListenerList.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWLISTENERLIST_H +#define OWLISTENERLIST_H + +#include + +#include +#include + +/** + * @author Tanguy Krotoff + */ +class ListenerList : NonCopyable, public List { +public: + + /** Singleton. */ + static ListenerList & getInstance() { + static ListenerList listenerList; + + return listenerList; + } + +private: + + ListenerList() { } +}; + +#endif //OWLISTENERLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMFactory.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMFactory.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMFactory.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,113 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMFACTORY_H +#define OWXPCOMFACTORY_H + +#include "XPCOMQuteCom.h" +#include "XPCOMUserProfile.h" +#include "XPCOMPhoneLine.h" +#include "XPCOMPhoneCall.h" +#include "XPCOMSms.h" + +#include +#include +#include +#include + +PFactory * PFactory::_factory = 0; + +class XPCOMFactory : public PFactory { +public: + + XPCOMFactory() { + } + + ~XPCOMFactory() { + } + + PQuteCom * createPresentationQuteCom(CQuteCom & cQuteCom) { + static XPCOMQuteCom xpcomQuteCom(&cQuteCom); + return &xpcomQuteCom; + } + + PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile) { + XPCOMUserProfile * xpcomUserProfile = new XPCOMUserProfile(cUserProfile); + return xpcomUserProfile; + } + + PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) { + return NULL; + } + + PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine) { + XPCOMPhoneLine * xpcomPhoneLine = new XPCOMPhoneLine(cPhoneLine); + return xpcomPhoneLine; + } + + PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall) { + XPCOMPhoneCall * xpcomPhoneCall = new XPCOMPhoneCall(cPhoneCall); + return xpcomPhoneCall; + } + + PContactList * createPresentationContactList(CContactList & cContactList) { + return NULL; + } + + PWenboxPlugin * createPresentationWenboxPlugin(CWenboxPlugin & cWenboxPlugin) { + return NULL; + } + + PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler) { + return NULL; + } + + PSms * createPresentationSms(CSms & cSms) { + XPCOMSms * xpcomSms = new XPCOMSms(cSms); + return xpcomSms; + } + + PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) { + return NULL; + } + + PHistory * createPresentationHistory(CHistory & cHistory) { + return NULL; + } + + PSubscribe * createPresentationSubscribe(CSubscribe & cSubscribe) { + return NULL; + } + + PWsDirectory * createPresentationWsDirectory(CWsDirectory & cWsDirectory) { + return NULL; + } + + int exec() { + return true; + } + + void processEvents() { } + + void reset() { } + +private: +}; + +#endif //OWXPCOMFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,120 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMIMHandler.h" + +#include "ListenerList.h" + +#include +#include +#include +#include +#include +#include +#include +#include + +#include + +#include + +void XPCOMIMHandler::connected() { + if (!_account) { + _account = new IMAccount(_qutecomLogin, _qutecomPassword, EnumIMProtocol::IMProtocolSIPSIMPLE); + } + + if (!_connect) { + _connect = IMWrapperFactory::getFactory().createIMConnect(*_account); + } + + if (!_chat) { + _chat = IMWrapperFactory::getFactory().createIMChat(*_account); + _chatSession = new IMChatSession(*_chat); + _chatSession->messageReceivedEvent += + boost::bind(&XPCOMIMHandler::messageReceivedEventHandler, this, _1, _2, _3); + } + + if (!_presence) { + _presence = IMWrapperFactory::getFactory().createIMPresence(*_account); + _presence->presenceStateChangedEvent += + boost::bind(&XPCOMIMHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); + } +} + +void XPCOMIMHandler::messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message) { + SipAddress sipUri(from.getContactId()); + std::string sipAddress = sipUri.getSipAddress(); + std::string userName = sipUri.getUserName(); + std::string displayName = sipUri.getDisplayName(); + + ListenerList & listenerList = ListenerList::getInstance(); + + for (unsigned i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + listener->chatMessageReceivedEvent(message, sipAddress, userName, displayName, NULL); + } +} + +void XPCOMIMHandler::presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, + const std::string & note, const std::string & from) { + + SipAddress sipUri(from); + std::string sipAddress = sipUri.getSipAddress(); + std::string userName = sipUri.getUserName(); + std::string displayName = sipUri.getDisplayName(); + + ListenerList & listenerList = ListenerList::getInstance(); + + for (unsigned i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + listener->presenceStateChangedEvent(state, note, sipAddress, userName, displayName, NULL); + } +} + +void XPCOMIMHandler::subscribeToPresenceOf(const std::string & sipAddress) { + if (!_presence) { + LOG_DEBUG("cannot call subscribeToPresenceOf(): _presence is NULL"); + return; + } + + _presence->subscribeToPresenceOf(sipAddress); +} + +void XPCOMIMHandler::publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { + if (!_presence) { + LOG_DEBUG("cannot call publishMyPresence(): _presence is NULL"); + return; + } + + _presence->changeMyPresence(state); +} + +int XPCOMIMHandler::sendChatMessage(const std::string & sipAddress, const std::string & message) { + if (!_chatSession) { + LOG_DEBUG("cannot call sendMessage(): _chatSession is NULL"); + return 0; + } + + _chatSession->removeAllIMContact(); + _chatSession->addIMContact(IMContact(*_account, sipAddress)); + _chatSession->sendMessage(message); + + return 1; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMIMHandler.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,85 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMIMHANDLER_H +#define OWXPCOMIMHANDLER_H + +#include + +#include + +#include + +#include + +class IMAccount; +class IMContact; +class IMConnect; +class IMChat; +class IMChatSession; +class IMPresence; + +class XPCOMIMHandler : NonCopyable { +public: + + /** Singleton. */ + static XPCOMIMHandler & getInstance() { + static XPCOMIMHandler imHandler; + + return imHandler; + } + + XPCOMIMHandler() { + _account = NULL; + _connect = NULL; + _chat = NULL; + _presence = NULL; + } + + void setQuteComLoginPassword(const std::string & qutecomLogin, const std::string & qutecomPassword) { + _qutecomLogin = qutecomLogin; + _qutecomPassword = qutecomPassword; + } + + void connected(); + + void subscribeToPresenceOf(const std::string & sipAddress); + + void publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note); + + int sendChatMessage(const std::string & sipAddress, const std::string & message); + +private: + + void messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message); + + void presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, + const std::string & note, const std::string & from); + + std::string _qutecomLogin; + std::string _qutecomPassword; + + IMAccount * _account; + IMConnect * _connect; + IMChat * _chat; + IMChatSession * _chatSession; + IMPresence * _presence; +}; + +#endif //OWXPCOMIMHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,64 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMPhoneCall.h" + +#include +#include "ListenerList.h" + +#include + +#include + +XPCOMPhoneCall::XPCOMPhoneCall(CPhoneCall & cPhoneCall) + : _cPhoneCall(cPhoneCall) { +} + +void XPCOMPhoneCall::phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state) { + + /*PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); + phoneCallMap[callId] = this; + + ListenerList & listenerList = ListenerList::getInstance(); + for (unsigned i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + listener->phoneCallStateChangedEvent(state, lineId, callId, sipAddress, userName, displayName, NULL); + }*/ +} + +void XPCOMPhoneCall::hangUp() { + _cPhoneCall.hangUp(); +} + +bool XPCOMPhoneCall::canHangUp() const { + return _cPhoneCall.canHangUp(); +} + +void XPCOMPhoneCall::pickUp() { + _cPhoneCall.pickUp(); +} + +bool XPCOMPhoneCall::canPickUp() const { + return _cPhoneCall.canPickUp(); +} + +void XPCOMPhoneCall::playTone(EnumTone::Tone tone) { + _cPhoneCall.playTone(tone); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneCall.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,80 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMPHONECALL_H +#define OWXPCOMPHONECALL_H + +#include + +#include + +#include + +#include + +#include + +class CPhoneCall; + +class XPCOMPhoneCall : public PPhoneCall { +public: + + XPCOMPhoneCall(CPhoneCall & cPhoneCall); + + void updatePresentation() { } + + void hangUp(); + + bool canHangUp() const; + + void pickUp(); + + bool canPickUp() const; + + void playTone(EnumTone::Tone tone); + +private: + + void phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state); + + void videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame) { } + + void updatePresentationThreadSafe() { } + + void initThreadSafe() { } + + CPhoneCall & _cPhoneCall; +}; + +class PhoneCallMap : NonCopyable, public std::map { +public: + + /** Singleton. */ + static PhoneCallMap & getInstance() { + static PhoneCallMap phoneCallMap; + + return phoneCallMap; + } + +private: + + PhoneCallMap() { } +}; + +#endif //OWXPCOMPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,46 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMPhoneLine.h" + +#include +#include "ListenerList.h" +#include "XPCOMIMHandler.h" + +#include + +#include + +XPCOMPhoneLine::XPCOMPhoneLine(CPhoneLine & cPhoneLine) + : _cPhoneLine(cPhoneLine) { + PhoneLineList::getInstance().add(this); +} + +int XPCOMPhoneLine::makeCall(const std::string & phoneNumber) { + return _cPhoneLine.makeCall(phoneNumber); +} + +void XPCOMPhoneLine::phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state) { + /*ListenerList & listenerList = ListenerList::getInstance(); + for (unsigned i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + listener->phoneLineStateChangedEvent(state, lineId, NULL); + }*/ +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMPhoneLine.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,69 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMPHONELINE_H +#define OWXPCOMPHONELINE_H + +#include + +#include +#include + +#include + +class CPhoneLine; + +class XPCOMPhoneLine : public PPhoneLine { +public: + + XPCOMPhoneLine(CPhoneLine & cPhoneLine); + + void phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state); + + void updatePresentation() { } + + int makeCall(const std::string & phoneNumber); + +private: + + void updatePresentationThreadSafe() { } + + void initThreadSafe() { } + + void phoneLineStateChangedEventThreadSafe(EnumPhoneLineState::PhoneLineState state) { } + + CPhoneLine & _cPhoneLine; +}; + +class PhoneLineList : public List, NonCopyable { +public: + + /** Singleton. */ + static PhoneLineList & getInstance() { + static PhoneLineList phoneLineList; + + return phoneLineList; + } + +private: + + PhoneLineList() { } +}; + +#endif //OWXPCOMPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,72 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMQuteCom.h" + +#include +#include "ListenerList.h" +#include "XPCOMIMHandler.h" + +#include + +#include + +CQuteCom * XPCOMQuteCom::_cQuteCom = NULL; + +XPCOMQuteCom::XPCOMQuteCom(CQuteCom * cQuteCom) { + _cQuteCom = cQuteCom; +} + +CQuteCom & XPCOMQuteCom::getCQuteCom() { + if (!_cQuteCom) { + LOG_FATAL("XPCOMQuteCom::XPCOMQuteCom() must be call first"); + } + return *_cQuteCom; +} + +/* +void XPCOMQuteCom::qutecomLoginStateChangedEvent(QuteCom::LoginState state, const std::string & login, const std::string & password) { + ListenerList & listenerList = ListenerList::getInstance(); + for (int i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + switch (state) { + case QuteCom::LoginOk: + XPCOMIMHandler::getInstance().setQuteComLoginPassword(login, password); + listener->qutecomLoginStateChangedEvent(Listener::LoginOk, login, password); + break; + + case QuteCom::LoginPasswordError: + listener->qutecomLoginStateChangedEvent(Listener::LoginPasswordError, login, password); + break; + + case QuteCom::LoginNetworkError: + listener->qutecomLoginStateChangedEvent(Listener::LoginNetworkError, login, password); + break; + + case QuteCom::LoginNoAccount: + listener->qutecomLoginStateChangedEvent(Listener::LoginNoAccount, login, password); + break; + + default: + LOG_FATAL("unknown state=" + String::fromNumber(state)); + }; + } +} +*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMQuteCom.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,48 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMQUTECOM_H +#define OWXPCOMQUTECOM_H + +#include + +class CQuteCom; +class Listener; + +class XPCOMQuteCom : public PQuteCom { +public: + + XPCOMQuteCom(CQuteCom * cQuteCom); + + static CQuteCom & getCQuteCom(); + + void showHistory() { } + + void updatePresentation() { } + +private: + + void updatePresentationThreadSafe() { } + + void initThreadSafe() { } + + static CQuteCom * _cQuteCom; +}; + +#endif //OWXPCOMQUTECOM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,49 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMSms.h" + +#include +#include "ListenerList.h" + +#include +#include +#include + +XPCOMSms * XPCOMSms::sms = NULL; + +XPCOMSms::XPCOMSms(CSms & cSms) + : _cSms(cSms) { + + sms = this; + _cSms.smsStatusEvent += boost::bind(&XPCOMSms::smsStatusEventHandler, this, _1, _2, _3); +} + +int XPCOMSms::sendSMS(const std::string & phoneNumber, const std::string & message) { + return _cSms.sendSMS(phoneNumber, message); +} + +void XPCOMSms::smsStatusEventHandler(Sms & sender, int smsId, EnumSmsState::SmsState state) { + ListenerList & listenerList = ListenerList::getInstance(); + for (unsigned i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + listener->smsStatusEvent(smsId, state); + } +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMSms.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,51 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMSMS_H +#define OWXPCOMSMS_H + +#include + +#include + +#include + +class XPCOMSms : public PSms { +public: + + static XPCOMSms * sms; + + XPCOMSms(CSms & cSms); + + int sendSMS(const std::string & phoneNumber, const std::string & message); + + void updatePresentation() { } + +private: + + void updatePresentationThreadSafe() { } + + void initThreadSafe() { } + + void smsStatusEventHandler(Sms & sender, int smsId, EnumSmsState::SmsState state); + + CSms & _cSms; +}; + +#endif //OWXPCOMSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,108 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "XPCOMUserProfile.h" + +#include +#include "ListenerList.h" +#include "XPCOMIMHandler.h" + +#include + +#include + +CUserProfile * XPCOMUserProfile::_cQuteCom = NULL; + +XPCOMUserProfile::XPCOMUserProfile(CUserProfile * cQuteCom) { + _cQuteCom = cQuteCom; +} + +CUserProfile & XPCOMUserProfile::getCUserProfile() { + if (!_cQuteCom) { + LOG_FATAL("XPCOMQuteCom::XPCOMQuteCom() must be call first"); + } + return *_cQuteCom; +} + +void XPCOMUserProfile::loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state) { + ListenerList & listenerList = ListenerList::getInstance(); + for (int i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + switch (state) { + case QuteCom::LoginOk: + XPCOMIMHandler::getInstance().setQuteComLoginPassword(login, password); + listener->qutecomLoginStateChangedEvent(Listener::LoginOk, login, password); + break; + + case QuteCom::LoginPasswordError: + listener->qutecomLoginStateChangedEvent(Listener::LoginPasswordError, login, password); + break; + + case QuteCom::LoginNetworkError: + listener->qutecomLoginStateChangedEvent(Listener::LoginNetworkError, login, password); + break; + + case QuteCom::LoginNoAccount: + listener->qutecomLoginStateChangedEvent(Listener::LoginNoAccount, login, password); + break; + + default: + LOG_FATAL("unknown state=" + String::fromNumber(state)); + }; + + } +} + +void XPCOMUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state) { +} + +void XPCOMUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, const IMContact & imContact, const std::string & message) { +} + +/* +void XPCOMQuteCom::qutecomLoginStateChangedEvent(QuteCom::LoginState state, const std::string & login, const std::string & password) { + ListenerList & listenerList = ListenerList::getInstance(); + for (int i = 0; i < listenerList.size(); i++) { + Listener * listener = listenerList[i]; + + switch (state) { + case QuteCom::LoginOk: + XPCOMIMHandler::getInstance().setQuteComLoginPassword(login, password); + listener->qutecomLoginStateChangedEvent(Listener::LoginOk, login, password); + break; + + case QuteCom::LoginPasswordError: + listener->qutecomLoginStateChangedEvent(Listener::LoginPasswordError, login, password); + break; + + case QuteCom::LoginNetworkError: + listener->qutecomLoginStateChangedEvent(Listener::LoginNetworkError, login, password); + break; + + case QuteCom::LoginNoAccount: + listener->qutecomLoginStateChangedEvent(Listener::LoginNoAccount, login, password); + break; + + default: + LOG_FATAL("unknown state=" + String::fromNumber(state)); + }; + } +} +*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/src/XPCOMUserProfile.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,55 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWXPCOMUSERPROFILE_H +#define OWXPCOMUSERPROFILE_H + +#include + +class CUserProfile; +class Listener; + +class XPCOMUserProfile : public PUserProfile { +public: + + XPCOMUserProfile(CUserProfile * cUserProfile); + + static CQuteCom & getCUserProfile(); + + void loginStateChangedEventHandler(SipAccount & sender, + EnumSipLoginState::SipLoginState state) { } + + void networkDiscoveryStateChangedEventHandler(SipAccount & sender, + SipAccount::NetworkDiscoveryState state) { } + + void authorizationRequestEventHandler(PresenceHandler & sender, + const IMContact & imContact, const std::string & message) { } + + void updatePresentation() { } + +private: + + void updatePresentationThreadSafe() { } + + void initThreadSafe() { } + + static CUserProfile * _cUserProfile; +}; + +#endif //OWXPCOMUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/main.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,37 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MainWindow.h" + +#include + +#include + +int main(int argc, char * argv[]) { + QApplication * app = new QApplication(argc, argv); + + QMainWindow mainWindow; + + MainWindow * window = new MainWindow(); + mainWindow.setCentralWidget(window->getWidget()); + + mainWindow.show(); + + return app->exec(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.cpp qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,306 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "MainWindow.h" + +#include +#include + +#include +#include + +#include +#include + +#include + +#include +using namespace std; + +class QtListener : public Listener { +public: + + QtListener(MainWindow & mainWindow); + + void qutecomLoginStateChangedEvent(LoginState state, const std::string & login, const std::string & password); + + void phoneLineStateChangedEvent(PhoneLineState state, int lineId, void * param); + + void phoneCallStateChangedEvent(PhoneCallState state, int lineId, int callId, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param); + + void presenceStateChangedEvent(PresenceState state, const std::string & note, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param); + + void chatMessageReceivedEvent(const std::string & message, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param); + + void loggerMessageAddedEvent(const std::string & message); + +private: + + MainWindow & _mainWindow; +}; + + +QtListener::QtListener(MainWindow & mainWindow) + : _mainWindow(mainWindow) { +} + +void QtListener::qutecomLoginStateChangedEvent(LoginState state, const std::string & login, const std::string & password) { + switch (state) { + case LoginNetworkError: + _mainWindow.addLogMessage("LoginNetworkError"); + break; + + case LoginPasswordError: + _mainWindow.addLogMessage("LoginPasswordError"); + break; + + case LoginOk: + _mainWindow.addLogMessage("LoginOk"); + break; + + case LoginNoAccount: + _mainWindow.addLogMessage("LoginNoAccount"); + break; + + default: + LOG_FATAL("unknown login state"); + } +} + +void QtListener::phoneLineStateChangedEvent(PhoneLineState state, int lineId, void * param) { + _mainWindow._currentLineId = lineId; + + switch (state) { + case LineProxyError: + _mainWindow.addLogMessage("LineProxyError"); + break; + + case LineServerError: + _mainWindow.addLogMessage("LineServerError"); + break; + + case LineTimeout: + _mainWindow.addLogMessage("LineTimeout"); + break; + + case LineOk: + _mainWindow.addLogMessage("LineOk"); + + //Presence + _mainWindow._command->subscribeToPresenceOf("annefleur"); + _mainWindow._command->subscribeToPresenceOf("dbitton_office"); + _mainWindow._command->subscribeToPresenceOf("guirec_office"); + _mainWindow._command->subscribeToPresenceOf("dbitton_office"); + _mainWindow._command->subscribeToPresenceOf("antesoft"); + _mainWindow._command->subscribeToPresenceOf("tanguy-krotoff"); + break; + + case LineClosed: + _mainWindow.addLogMessage("LineClosed"); + delete _mainWindow._command; + _mainWindow._command = NULL; + break; + + default: + LOG_FATAL("unknown phone line state"); + } +} + +void QtListener::phoneCallStateChangedEvent(PhoneCallState state, int lineId, int callId, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) { + + _mainWindow._currentLineId = lineId; + _mainWindow._currentCallId = callId; + + switch (state) { + case CallIncoming: + _mainWindow.addLogMessage("CallIncoming: " + userName + " " + displayName); + break; + + case CallOk: + _mainWindow.addLogMessage("CallOk"); + break; + + case CallError: + _mainWindow.addLogMessage("CallError"); + break; + + case CallResumeOk: + _mainWindow.addLogMessage("CallResumeOk"); + break; + + case CallDialing: + _mainWindow.addLogMessage("CallDialing"); + break; + + case CallRinging: + _mainWindow.addLogMessage("CallRinging"); + break; + + case CallClosed: + _mainWindow.addLogMessage("CallClosed"); + break; + + case CallHoldOk: + _mainWindow.addLogMessage("CallHoldOk"); + break; + + default: + LOG_FATAL("unknown phone call state"); + } +} + +void QtListener::presenceStateChangedEvent(PresenceState state, const std::string & note, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) { + + switch(state) { + case PresenceOnline: + _mainWindow.addLogMessage("PresenceOnline: " + userName); + break; + + case PresenceOffline: + _mainWindow.addLogMessage("PresenceOffline: " + userName); + break; + + case PresenceAway: + _mainWindow.addLogMessage("PresenceAway: " + userName); + break; + + case PresenceDoNotDisturb: + _mainWindow.addLogMessage("PresenceDoNotDisturb: " + userName); + break; + + case PresenceUserDefined: + _mainWindow.addLogMessage("PresenceUserDefined: " + userName); + break; + + case PresenceUnknown: + _mainWindow.addLogMessage("PresenceUnknown: " + userName); + break; + + default: + LOG_FATAL("unknown presence state"); + } +} + +void QtListener::chatMessageReceivedEvent(const std::string & message, + const std::string & sipAddress, const std::string & userName, const std::string & displayName, + void * param) { + + _mainWindow.addLogMessage(message + " " + sipAddress); +} + +void QtListener::loggerMessageAddedEvent(const std::string & message) { +} + + +MainWindow::MainWindow() { + _mainWindow = WidgetFactory::create("MainWindow.ui", NULL); + + _makeCallButton = Object::findChild(_mainWindow, "makeCallButton"); + connect(_makeCallButton, SIGNAL(clicked()), SLOT(makeCallButtonClicked())); + + _hangUpButton = Object::findChild(_mainWindow, "hangUpButton"); + connect(_hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonClicked())); + + _acceptCallButton = Object::findChild(_mainWindow, "acceptCallButton"); + connect(_acceptCallButton, SIGNAL(clicked()), SLOT(acceptCallButtonClicked())); + + _phoneNumber = Object::findChild(_mainWindow, "phoneNumber"); + connect(_phoneNumber, SIGNAL(returnPressed()), SLOT(makeCallButtonClicked())); + + _sendChatMessageButton = Object::findChild(_mainWindow, "sendChatMessageButton"); + connect(_sendChatMessageButton, SIGNAL(clicked()), SLOT(sendChatMessageButtonClicked())); + + _chatMessage = Object::findChild(_mainWindow, "chatMessage"); + connect(_chatMessage, SIGNAL(returnPressed()), SLOT(sendChatMessageButtonClicked())); + + _commandStartButton = Object::findChild(_mainWindow, "commandStartButton"); + connect(_commandStartButton, SIGNAL(clicked()), SLOT(commandStartButtonClicked())); + + _commandTerminateButton = Object::findChild(_mainWindow, "commandTerminateButton"); + connect(_commandTerminateButton, SIGNAL(clicked()), SLOT(commandTerminateButtonClicked())); + + _command = NULL; + commandStartButtonClicked(); +} + +void MainWindow::addLogMessage(const std::string & message) { + typedef PostEvent1 MyPostEvent; + MyPostEvent * event = new MyPostEvent(boost::bind(&MainWindow::addLogMessageThreadSafe, this, _1), message); + postEvent(event); +} + +void MainWindow::addLogMessageThreadSafe(std::string message) { + static QListWidget * listWidget = Object::findChild(_mainWindow, "listWidget"); + + listWidget->addItem(message.c_str()); + listWidget->scrollToItem(listWidget->item(listWidget->count() - 1)); +} + +void MainWindow::makeCallButtonClicked() { + string number = _phoneNumber->text().toUtf8(); + if (!number.empty()) { + _command->makeCall(number, _currentLineId); + } +} + +void MainWindow::hangUpButtonClicked() { + _command->hangUp(_currentCallId); +} + +void MainWindow::acceptCallButtonClicked() { + _command->pickUp(_currentCallId); +} + +void MainWindow::sendChatMessageButtonClicked() { + string message = _chatMessage->text().toUtf8(); + string number = _phoneNumber->text().toUtf8(); + if (!number.empty()) { + _command->sendChatMessage(number, message); + } +} + +void MainWindow::commandStartButtonClicked() { + static QtListener * listener = new QtListener(*this); + + //QString configDir = QDir::homePath() + QDir::separator() + QString("Jrme") + QDir::separator(); + QString configDir; + + _command = new Command(configDir.toUtf8()); + _command->start(); + _command->addListener(listener); + addLogMessage("Command::start()"); +} + +void MainWindow::commandTerminateButtonClicked() { + if (_command) { + _command->terminate(); + } + + addLogMessage("Command::terminate()"); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.h qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWMAINWINDOW_H +#define OWMAINWINDOW_H + +#include + +#include + +class QWidget; +class QPushButton; +class QLineEdit; +class Command; +class QtListener; + +class MainWindow : public QObjectThreadSafe { + Q_OBJECT + + friend class QtListener; +public: + + MainWindow(); + + QWidget * getWidget() const { + return _mainWindow; + } + + void addLogMessage(const std::string & message); + +private Q_SLOTS: + + void makeCallButtonClicked(); + + void hangUpButtonClicked(); + + void acceptCallButtonClicked(); + + void sendChatMessageButtonClicked(); + + void commandStartButtonClicked(); + + void commandTerminateButtonClicked(); + +private: + + void initThreadSafe() { } + + void addLogMessageThreadSafe(std::string message); + + QWidget * _mainWindow; + + QPushButton * _makeCallButton; + + QPushButton * _hangUpButton; + + QPushButton * _acceptCallButton; + + QPushButton * _rejectCallButton; + + QLineEdit * _phoneNumber; + + QPushButton * _sendChatMessageButton; + + QLineEdit * _chatMessage; + + QPushButton * _commandStartButton; + + QPushButton * _commandTerminateButton; + + Command * _command; + + int _currentCallId; + + int _currentLineId; +}; + +#endif //OWMAINWINDOW_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.ui qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.ui 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/presentation/xpcom/tests/MainWindow.ui 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,91 @@ + + + + + MainWindow + + + + 0 + 0 + 301 + 365 + + + + MainWindow + + + + 9 + + + 6 + + + + + Command::terminate() + + + + + + + Command::start() + + + + + + + + + + Accept Call + + + + + + + 0 + + + 6 + + + + + + + + Send Chat Message + + + + + + + + + + + + Make Call + + + + + + + Hang Up + + + + + + + + + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/QuteComBuildId.cpp qutecom-2.2+dfsg1/qutecom/src/QuteComBuildId.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/QuteComBuildId.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/QuteComBuildId.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,101 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComBuildId.h" + +#include +#include + +#include +#if !defined(OS_MACOSX) && defined(OWSOUND_PORTAUDIO_SUPPORT) + #include +#endif +#include +#include +extern "C" { +#include +#if defined (IMWRAPPER_BACKEND_MULTI) + #include + #include +#endif +} + +#define stringize2(x) #x +#define stringize(x) stringize2(x) + +const unsigned long long QuteComBuildId::getBuildId() { + return DD_BUILDID; +} + +const char * QuteComBuildId::getVersion() { + return stringize(DD_VERSION); +} + +const char * QuteComBuildId::getSvnRevision() { + return stringize(DD_REVISION); +} + +const char * QuteComBuildId::getSoftphoneName() { + return stringize(DD_SOFTPHONE_NAME); +} + +const char * QuteComBuildId::getBoostVersion() { + static std::string version(BOOST_LIB_VERSION); + return version.c_str(); +} + +const char * QuteComBuildId::getPurpleVersion() { +#if defined (IMWRAPPER_BACKEND_MULTI) + return purple_core_get_version(); +#endif + return ""; +} + +const char * QuteComBuildId::getGLibVersion() { +#if defined (IMWRAPPER_BACKEND_MULTI) + static std::string version(String::fromNumber(GLIB_MAJOR_VERSION) + "." + + String::fromNumber(GLIB_MINOR_VERSION) + "." + + String::fromNumber(GLIB_MICRO_VERSION)); + return version.c_str(); +#endif + return ""; +} + +const char * QuteComBuildId::getCurlVersion() { + return curl_version(); +} + +const char * QuteComBuildId::getPortaudioVersion() { +#if !defined(OS_MACOSX) && defined(OWSOUND_PORTAUDIO_SUPPORT) + return Pa_GetVersionText(); +#endif + return ""; +} + +const char * QuteComBuildId::getAvcodecVersion() { + static std::string version(String::fromNumber(avcodec_version())); + return version.c_str(); +} + +const char * QuteComBuildId::getTinyXmlVersion() { + static std::string version(String::fromNumber(TIXML_MAJOR_VERSION) + "." + + String::fromNumber(TIXML_MINOR_VERSION) + "." + + String::fromNumber(TIXML_PATCH_VERSION)); + return version.c_str(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/QuteComBuildId.h qutecom-2.2+dfsg1/qutecom/src/QuteComBuildId.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/src/QuteComBuildId.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/src/QuteComBuildId.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,112 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef OWQUTECOMBUILDID_H +#define OWQUTECOMBUILDID_H + +/** + * Identifies uniquely a revision of QuteCom. + * + * @author Tanguy Krotoff + */ +class QuteComBuildId { +public: + + /** + * Build id is the QuteCom compilation date/time (e.g 2005/12/07 - 18:18:09) + * + * This is a unique id for each release. + * It permits QuteCom to check if a more recent version of itself exist. + * Format: year/month/day hour:minutes:seconds + * + * Do not modify this to a string, keep it as a number! + */ + static const unsigned long long getBuildId(); + + /** + * Version name (e.g "1.2.1") + * Human readable representation of the build id. + * + * This is a unique string for each release. + */ + static const char * getVersion(); + + /** + * Revision number (subversion revision). + * + * Check console command 'svnversion -n': + * + *
+	 * The version number will be a single number if the working
+	 * copy is single revision, unmodified, not switched and with
+	 * an URL that matches the TRAIL_URL argument.  If the working
+	 * copy is unusual the version number will be more complex:
+	 *
+	 * 4123:4168     mixed revision working copy
+	 * 4168M         modified working copy
+	 * 4123S         switched working copy
+	 * 4123:4168MS   mixed revision, modified, switched working copy
+	 *
+	 * If invoked on a directory that is not a working copy, an
+	 * exported directory say, the program will output 'exported'.
+	 * 
+ */ + static const char * getSvnRevision(); + + /** + * Softphone name when connecting on the QuteCom platform. + * WL_TAG + */ + static const char * getSoftphoneName(); + + /** + * Boost version number. + * + * Cannot be named BOOST_VERSION because of a define inside Boost. + */ + static const char * getBoostVersion(); + + /** LibPurple version number. */ + static const char * getPurpleVersion(); + + /** GLib version number. */ + static const char * getGLibVersion(); + + /** cURL version number. */ + static const char * getCurlVersion(); + + /** PortAudio version number. */ + static const char * getPortaudioVersion(); + + /** FFmpeg' libavcodec version number. */ + static const char * getAvcodecVersion(); + + /** TinyXML version number. */ + static const char * getTinyXmlVersion(); + +private: + + /** Avoid copying of this object. */ + + QuteComBuildId() { } + QuteComBuildId(const QuteComBuildId &); + QuteComBuildId& operator=(const QuteComBuildId &); +}; + +#endif //OWQUTECOMBUILDID_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/ContactListTest.h qutecom-2.2+dfsg1/qutecom/tests/ContactListTest.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/ContactListTest.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/ContactListTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,94 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#ifndef CONTACTLISTTEST_H +#define CONTACTLISTTEST_H + +#include +#include +#include + +#include +using namespace std; + +#include +using boost::unit_test_framework::test_suite; +using boost::unit_test_framework::test_case; + +class ContactListTest { +public: + + ContactListTest() { + } + + void testContactGroup() { + const string groupName = "test group"; + ContactGroup group(groupName); + + BOOST_CHECK(group.toString() == groupName); + } + + void testContactList() { + const string groupName1 = "test group 1"; + const string groupName2 = "test group 2"; + ContactGroup group1(groupName1); + ContactGroup group2(groupName2); + ContactList list; + + list.addContactGroup(&group1); + BOOST_CHECK(list.size() == 1); + BOOST_CHECK(list[0] == group1); + + list.addContactGroup(&group2); + BOOST_CHECK(list.size() == 2); + BOOST_CHECK(list[0] == group1); + BOOST_CHECK(list[1] == group2); + + BOOST_CHECK(*list[groupName1] == group1); + BOOST_CHECK(*list[groupName2] == group2); + + list.removeContactGroup(&group1); + BOOST_CHECK(list.size() == 1); + BOOST_CHECK(list[0] == group2); + + list.removeContactGroup(&group1); + BOOST_CHECK(list.size() == 1); + + list.removeContactGroup(&group2); + BOOST_CHECK(list.size() == 0); + } + +private: +}; + + +class ContactListTestSuite : public test_suite { +public: + + ContactListTestSuite() : test_suite("ContactListTestSuite") { + boost::shared_ptr instance(new ContactListTest()); + + test_case * testContactGroup = BOOST_CLASS_TEST_CASE(&ContactListTest::testContactGroup, instance); + test_case * testContactList = BOOST_CLASS_TEST_CASE(&ContactListTest::testContactList, instance); + + add(testContactGroup); + add(testContactList); + } +}; + +#endif //CONTACTLISTTEST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/main.cpp qutecom-2.2+dfsg1/qutecom/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,30 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ +#include + +#include "ContactListTest.h" + +test_suite * init_unit_test_suite(int argc, char * argv[]) { + test_suite * test = BOOST_TEST_SUITE("libqutecom test suite"); + + test->add(new ContactListTestSuite()); + + return test; +} + diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp qutecom-2.2+dfsg1/qutecom/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,146 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include +#include +#include +#include +#include +#include + +#include + +#if defined(CC_MSVC) + #include +#endif + +#include +#include +using namespace std; + +QuteCom * qutecomPhone = NULL; + +void loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state) { + switch (state) { + case SipAccount::LoginStateConnected: + LOG_DEBUG(sender.getUsername() + " is connected"); + break; + case SipAccount::LoginStateDisconnected: + LOG_DEBUG(sender.getUsername() + " has been disconnected"); + break; + case SipAccount::LoginStateNetworkError: + LOG_DEBUG("a network error occured while attempting to connect " + sender.getUsername()); + break; + case SipAccount::LoginStatePasswordError: + LOG_DEBUG("wrong login/password for " + sender.getUsername()); + break; + case SipAccount::LoginStateReady: + LOG_DEBUG(sender.getUsername() + " is ready to connect"); + break; + default: + LOG_FATAL("this state is unknown"); + } +} + +void noAccountAvailableEventHandler(UserProfile & sender) { + sender.addSipAccount("jerome.leleu@qutecom.fr", "b1234b", true); +} + +void proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort) { + string url = proxyUrl; + int port = proxyPort; + string login; + string password; + string input; + + cout << "Proxy settings needed for " << proxyUrl << ":" << proxyPort << endl; + cout << "Is proxy URL and proxy port valid? (y, n)" << endl; + cin >> input; + if ((input == "n") || (input == "N")) { + cout << "Please enter proxy url: "; + cin >> url; + cout << "Please enter proxy port: "; + cin >> port; + } + cout << "Please enter proxy login: "; + cin >> login; + cout << "Please enter proxy password: "; + cin >> password; + + sender.setProxySettings(url, port, login, password); +} + +void wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, + const std::string & proxyLogin, const std::string proxyPassword) { + string url = proxyUrl; + int port = proxyPort; + string login; + string password; + string input; + + cout << "Wrong proxy login/password. Please enter again parameter for " << proxyUrl << ":" << proxyPort << endl; + cout << "Is proxy URL and proxy port valid? (y, n)" << endl; + cin >> input; + if ((input == "n") || (input == "N")) { + cout << "Please enter proxy url: "; + cin >> url; + cout << "Please enter proxy port: "; + cin >> port; + } + cout << "Please enter proxy login: "; + cin >> login; + cout << "Please enter proxy password: "; + cin >> password; + + sender.setProxySettings(url, port, login, password); +} + +int main(int argc, char * argv[]) { + +#if defined(CC_MSVC) + new MemoryDump("QuteCom"); +#endif + + //IM implementation + IMWrapperFactory * imFactory = NULL; + + //SIP implementation + SipWrapperFactory * sipFactory = NULL; + + PhApiFactory * phApiFactory = new PhApiFactory(); + sipFactory = phApiFactory; + imFactory = phApiFactory; + + SipWrapperFactory::setFactory(sipFactory); + IMWrapperFactory::setFactory(imFactory); + + qutecomPhone = new QuteCom(); + + UserProfile & mProfile = qutecomPhone->getCurrentUserProfile(); + mProfile.loginStateChangedEvent += &loginStateChangedEventHandler; + mProfile.noAccountAvailableEvent += &noAccountAvailableEventHandler; + mProfile.proxyNeedsAuthenticationEvent += &proxyNeedsAuthenticationEventHandler; + mProfile.wrongProxyAuthenticationEvent += &wrongProxyAuthenticationEventHandler; + + qutecomPhone->start(); + + qutecomPhone->join(); + + return EXIT_SUCCESS; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/AddIMAccountCommand.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/AddIMAccountCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/AddIMAccountCommand.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/AddIMAccountCommand.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,86 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ADDIMACCOUNTCOMMAND_H +#define ADDIMACCOUNTCOMMAND_H + +#include "Command.h" + +#include + +#include + +using namespace std; + +class AddIMAccountCommand : public Command { +public: + + AddIMAccountCommand(QuteCom & qutecomPhone) + : Command(qutecomPhone) {} + + virtual ~AddIMAccountCommand() {} + + void execute() { + unsigned protocol; + string login; + string password; + + cout << "Adding an IMAccount: " << endl; + cout << "Please enter the number of the desired protocol: " << endl; + cout << "\t1: msn" << endl; + cout << "\t2: yahoo!" << endl; + cout << "\t3: jabber" << endl; + cout << endl; + cin >> protocol; + cout << "Enter your login: "; + cin >> login; + cout << "Enter your password: "; + cin >> password; + + switch (protocol) { + case 1: + _qutecomPhone.addIMAccount(IMAccount(login, password, + EnumIMProtocol::IMProtocolMSN)); + break; + case 2: + _qutecomPhone.addIMAccount(IMAccount(login, password, + EnumIMProtocol::IMProtocolYahoo)); + break; + case 3: + _qutecomPhone.addIMAccount(IMAccount(login, password, + EnumIMProtocol::IMProtocolJabber)); + break; + + default: + cout << "Unknown protocol" << endl; + } + } + + const string & name() const { + static string commandName = "addim"; + return commandName; + } + + const string & desc() const { + static string commandDesc = "Add an IMAccount"; + return commandDesc; + } +}; + +#endif /*ADDIMACCOUNTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/AddQuteComAccountCommand.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/AddQuteComAccountCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/AddQuteComAccountCommand.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/AddQuteComAccountCommand.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,67 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef ADDQUTECOMACCOUNTCOMMAND_H +#define ADDQUTECOMACCOUNTCOMMAND_H + +#include "Command.h" + +#include + +#include + +using namespace std; + +class AddQuteComAccountCommand : public Command { +public: + + AddQuteComAccountCommand(QuteCom & qutecomPhone) + : Command(qutecomPhone) {} + + virtual ~AddQuteComAccountCommand() {} + + void execute() { + string login; + string password; + + cout << "Adding a QuteCom account: " << endl; + cout << "Please enter the QuteCom login: "; + cin >> login; + cout << "Enter the QuteCom password: "; + cin >> password; + + _qutecomPhone.addSipAccount(login, password, true); + } + + /** + * @return the Command name. + */ + const string & name() const { + static string commandName = "addsip"; + return commandName; + } + + const string & desc() const { + static string commandDesc = "Add a QuteCom account"; + return commandDesc; + } + +}; + +#endif /*ADDQUTECOMACCOUNTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/Command.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/Command.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/Command.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/Command.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,63 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef COMMAND_H +#define COMMAND_H + +#include + +class QuteCom; + +class Command { +public: + + Command(QuteCom & qutecomPhone) + : _qutecomPhone(qutecomPhone) {} + + virtual ~Command() {} + + /** + * @return true if this Command class can handle the command. + */ + virtual bool canHandle(const std::string & command) const { + return (command == name()); + } + + /** + * Execute the command. + */ + virtual void execute() = 0; + + /** + * @return the Command name. + */ + virtual const std::string & name() const = 0; + + /** + * @return a description. + */ + virtual const std::string & desc() const = 0; + +protected: + + QuteCom & _qutecomPhone; + +}; + +#endif /*COMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/main.cpp qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/main.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,26 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComIMWrapperTest.h" + +int main(int argc, char **argv) { + QuteComIMWrapperTest imWrapperTest; + + return imWrapperTest.run(); +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuitCommand.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuitCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuitCommand.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuitCommand.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,60 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QUITCOMMAND_H +#define QUITCOMMAND_H + +#include "Command.h" + +#include + +#include + +using namespace std; + +class QuitCommand : public Command { +public: + + QuitCommand(QuteCom & qutecomPhone, QuteComIMWrapperTest & qutecomPhoneIMWrapperTest) + : Command(qutecomPhone), _qutecomPhoneIMWrapperTest(qutecomPhoneIMWrapperTest) {} + + virtual ~QuitCommand() {} + + void execute() { + _qutecomPhone.terminate(); + _qutecomPhoneIMWrapperTest.quit(); + } + + const string & name() const { + static string commandName = "quit"; + return commandName; + } + + const string & desc() const { + static string commandDesc = "Quit the application"; + return commandDesc; + } + +private: + + QuteComIMWrapperTest & _qutecomPhoneIMWrapperTest; + +}; + +#endif /*QUITCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.cpp qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.cpp 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,202 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#include "QuteComIMWrapperTest.h" + +#include "AddQuteComAccountCommand.h" +#include "AddIMAccountCommand.h" +#include "TalkToIMContactCommand.h" +#include "QuitCommand.h" + +#include +#include +#include +#include +#include +#include +#include + +#include + +#include +#include +using namespace std; + +QuteComIMWrapperTest::QuteComIMWrapperTest() { + _running = true; +} + +QuteComIMWrapperTest::~QuteComIMWrapperTest() { + for (CommandList::const_iterator it = _commands.begin() ; it != _commands.end() ; it++) { + delete (*it); + } +} + +void QuteComIMWrapperTest::loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state) { + switch (state) { + case SipAccount::LoginStateConnected: + LOG_DEBUG(sender.getUsername() + " is connected"); + break; + case SipAccount::LoginStateDisconnected: + LOG_DEBUG(sender.getUsername() + " has been disconnected"); + break; + case SipAccount::LoginStateNetworkError: + LOG_DEBUG("a network error occured while attempting to connect " + sender.getUsername()); + break; + case SipAccount::LoginStatePasswordError: + LOG_DEBUG("wrong login/password for " + sender.getUsername()); + break; + case SipAccount::LoginStateReady: + LOG_DEBUG(sender.getUsername() + " is ready to connect"); + break; + default: + LOG_FATAL("this state is unknown"); + } +} + +void QuteComIMWrapperTest::noAccountAvailableEventHandler(QuteCom & sender) { +} + +void QuteComIMWrapperTest::proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort) { + string url = proxyUrl; + int port = proxyPort; + string login; + string password; + string input; + + cout << "Proxy settings needed for " << proxyUrl << ":" << proxyPort << endl; + cout << "Is proxy URL and proxy port valid? (y, n)" << endl; + cin >> input; + if ((input == "n") || (input == "N")) { + cout << "Please enter proxy url: "; + cin >> url; + cout << "Please enter proxy port: "; + cin >> port; + } + cout << "Please enter proxy login: "; + cin >> login; + cout << "Please enter proxy password: "; + cin >> password; + + sender.setProxySettings(url, port, login, password); +} + +void QuteComIMWrapperTest::wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, + const std::string & proxyLogin, const std::string proxyPassword) { + string url = proxyUrl; + int port = proxyPort; + string login; + string password; + string input; + + cout << "Wrong proxy login/password. Please enter again parameter for " << proxyUrl << ":" << proxyPort << endl; + cout << "Is proxy URL and proxy port valid? (y, n)" << endl; + cin >> input; + if ((input == "n") || (input == "N")) { + cout << "Please enter proxy url: "; + cin >> url; + cout << "Please enter proxy port: "; + cin >> port; + } + cout << "Please enter proxy login: "; + cin >> login; + cout << "Please enter proxy password: "; + cin >> password; + + sender.setProxySettings(url, port, login, password); +} + +void QuteComIMWrapperTest::newIMAccountAddedEventHandler(QuteCom & sender, IMAccount & imAccount) { + sender.getConnectHandler().connect(imAccount); +} + +void QuteComIMWrapperTest::initWrappers() { + //IM implementation + IMWrapperFactory * imFactory = NULL; + + //SIP implementation + SipWrapperFactory * sipFactory = NULL; + + + PhApiFactory * phApiFactory = new PhApiFactory(); + sipFactory = phApiFactory; + //imFactory = phApiFactory; + imFactory = new GaimIMFactory(); + + SipWrapperFactory::setFactory(sipFactory); + IMWrapperFactory::setFactory(imFactory); +} + +void QuteComIMWrapperTest::initCommands(QuteCom & qutecomPhone) { + _commands.push_back(new AddQuteComAccountCommand(qutecomPhone)); + _commands.push_back(new AddIMAccountCommand(qutecomPhone)); + _commands.push_back(new TalkToIMContactCommand(qutecomPhone)); + _commands.push_back(new QuitCommand(qutecomPhone, *this)); +} + +int QuteComIMWrapperTest::run() { + string command; + + initWrappers(); + + QuteCom * qutecomPhone = new QuteCom(); + + initCommands(*qutecomPhone); + + qutecomPhone->loginStateChangedEvent += + boost::bind(&QuteComIMWrapperTest::loginStateChangedEventHandler, this, _1, _2); + qutecomPhone->noAccountAvailableEvent += + boost::bind(&QuteComIMWrapperTest::noAccountAvailableEventHandler, this, _1); + qutecomPhone->proxyNeedsAuthenticationEvent += + boost::bind(&QuteComIMWrapperTest::proxyNeedsAuthenticationEventHandler, this, _1, _2, _3); + qutecomPhone->wrongProxyAuthenticationEvent += + boost::bind(&QuteComIMWrapperTest::wrongProxyAuthenticationEventHandler, this, _1, _2, _3, _4, _5); + qutecomPhone->newIMAccountAddedEvent += + boost::bind(&QuteComIMWrapperTest::newIMAccountAddedEventHandler, this, _1, _2); + + qutecomPhone->start(); + + while (_running) { + displayMenu(); + cout << "Enter the desired command: "; + cin >> command; + + CommandList::const_iterator it = _commands.begin(); + + while ((it != _commands.end()) && !(*it)->canHandle(command)) { + it++; + } + + if (it != _commands.end()) { + (*it)->execute(); + } else { + cout << "Command not recognized" << endl; + } + } + + return EXIT_SUCCESS; +} + +void QuteComIMWrapperTest::displayMenu() const { + cout << endl << endl << endl << endl << endl; + for (CommandList::const_iterator it = _commands.begin() ; it != _commands.end() ; it++) { + cout << "- " << (*it)->name() << ": " << (*it)->desc() << endl; + } + cout << endl; +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/QuteComIMWrapperTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,74 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef QUTECOMIMWRAPPERTEST_H +#define QUTECOMIMWRAPPERTEST_H + +#include + +#include +#include + +class QuteCom; +class Command; +class IMAccount; + +class QuteComIMWrapperTest { +public: + + QuteComIMWrapperTest(); + + ~QuteComIMWrapperTest(); + + /** + * Entry point of this class. + */ + int run(); + + void quit() { + _running = false; + } + +private: + + void loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state); + + void noAccountAvailableEventHandler(QuteCom & sender); + + void proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort); + + void wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, + const std::string & proxyLogin, const std::string proxyPassword); + + void newIMAccountAddedEventHandler(QuteCom & sender, IMAccount & imAccount); + + void initWrappers(); + + void initCommands(QuteCom & qutecomPhone); + + void displayMenu() const; + + bool _running; + + typedef std::vector< Command * > CommandList; + CommandList _commands; + +}; + +#endif /*QUTECOMIMWRAPPERTEST_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/TalkToIMContactCommand.h qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/TalkToIMContactCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/qutecom/tests/qutecomimwrapper-test/TalkToIMContactCommand.h 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom/tests/qutecomimwrapper-test/TalkToIMContactCommand.h 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,160 @@ +/* + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys + * + * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA + */ + +#ifndef TALKTOIMCONTACTCOMMAND_H +#define TALKTOIMCONTACTCOMMAND_H + +#include "Command.h" + +#include +#include +#include +#include +#include + +#include + +using namespace std; + +class TalkToIMContactCommand : public Command { +public: + + TalkToIMContactCommand(QuteCom & qutecomPhone) + : Command(qutecomPhone) {} + + virtual ~TalkToIMContactCommand() {} + + void execute() { + IMAccountHandler & imAccountHandler = _qutecomPhone.getIMAccountHandler(); + unsigned account, i; + IMAccountHandler::const_iterator it; + string contactId; + + cout << "Choose the IMAccount to use: " << endl; + for (it = imAccountHandler.begin(), i = 0 ; it != imAccountHandler.end() ; it++, i++) { + cout << i << " - " << (*it).getLogin() << endl; + } + cin >> account; + + if (account > imAccountHandler.size()) { + cout << "Wrong number" << endl; + return; + } + + it = imAccountHandler.begin(); + for (unsigned j = 0 ; j < account ; j++) { + it++; + } + + _imAccount = new IMAccount(*it); + + IMContactSet imContactSet; + string command; + char buffer[512]; + cout << "Add contacts to the chat. Type 'start' to start the chat: " << endl; + while (command != "start") { + + cout << "contact id: "; + cin.getline(buffer, sizeof(buffer)); + command = string(buffer); + + if (!command.empty() && command != "start") + { + imContactSet.insert(IMContact(*_imAccount, command)); + } + } + + _chatFinished = false; + _qutecomPhone.getChatHandler().newIMChatSessionCreatedEvent += + boost::bind(&TalkToIMContactCommand::newIMChatSessionCreatedEventHandler, this, _1, _2); + _qutecomPhone.getChatHandler().createSession(*_imAccount, imContactSet); + + while (!_chatFinished) { + Thread::msleep(100); + } + } + + const string & name() const { + static string commandName = "talk"; + return commandName; + } + + const string & desc() const { + static string commandDesc = "Talk to an IMContact"; + return commandDesc; + } + + void newIMChatSessionCreatedEventHandler(ChatHandler & chatHandler, IMChatSession & imChatSession) { + string contactId; + string command; + char buffer[512]; + + imChatSession.messageReceivedEvent += + boost::bind(&TalkToIMContactCommand::messageReceivedEventHandler, this, _1, _2, _3); + imChatSession.statusMessageReceivedEvent += + boost::bind(&TalkToIMContactCommand::statusMessageReceivedEventHandler, this, _1, _2, _3); + + cout << "Commands are: quit, add" << endl; + + //while (command != "quit") { + // cout << "> "; + // cin.getline(buffer, sizeof(buffer)); + // command = string(buffer); + + // if (command == "add") { + // cout << "Please enter the contact id to talk to: "; + // cin >> contactId; + // + // imChatSession.addIMContact(IMContact(*_imAccount, contactId)); + + // continue; + // } + + // if (command != "quit") { + // imChatSession.sendMessage(command); + // } + //} + //_chatFinished = true; + } + + void messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message) { + cout << "Message received from " << from.getContactId() << ": " << message << endl; + } + + void statusMessageReceivedEventHandler(IMChatSession & sender, IMChat::StatusMessage status, const std::string & message) { + cout << "** Status message: " << (int)status << " " << message << endl; + } + + void contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact) { + cout << "** Contact added to IMChatSession: " << imContact.getContactId() << endl; + } + + void contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact) { + cout << "** Contact removed from IMChatSession: " << imContact.getContactId() << endl; + } + +private: + + IMAccount * _imAccount; + + bool _chatFinished; + +}; + +#endif /*TALKTOIMCONTACTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/qutecom_lang.bat qutecom-2.2+dfsg1/qutecom_lang.bat --- qutecom-2.2~rc3.hg643~dfsg1/qutecom_lang.bat 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/qutecom_lang.bat 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,4 @@ +qmake -project -o lang.pro +lupdate lang.pro +lrelease qutecom\src\presentation\qt\lang\qtqutecom_en.ts +lrelease qutecom\src\presentation\qt\lang\qtqutecom_fr.ts diff -Nru qutecom-2.2~rc3.hg643~dfsg1/README qutecom-2.2+dfsg1/README --- qutecom-2.2~rc3.hg643~dfsg1/README 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/README 2010-10-18 12:50:12.000000000 +0000 @@ -36,7 +36,7 @@ Sponsors and Contributors -------------------------- -Wengo [http://www.wengo.com/] +QuteCom [http://www.qutecom.com/] Initial developper of the software Arcor [http://www.arcor.de/] diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/binary_utilities.py qutecom-2.2+dfsg1/scripts/binary_utilities.py --- qutecom-2.2~rc3.hg643~dfsg1/scripts/binary_utilities.py 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/binary_utilities.py 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# WengoPhone, a voice over Internet phone -# Copyright (C) 2004-2007 Wengo +# QuteCom, a voice over Internet phone +# Copyright (C) 2010 Mbdsys # # 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 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# @author Philippe Bernery +# @author Philippe Bernery # # Functions used by several scripts for SDK installation. # These functions works on Mac OS X and Linux only. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/copy_missing_libraries.py qutecom-2.2+dfsg1/scripts/copy_missing_libraries.py --- qutecom-2.2~rc3.hg643~dfsg1/scripts/copy_missing_libraries.py 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/copy_missing_libraries.py 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# WengoPhone, a voice over Internet phone -# Copyright (C) 2004-2007 Wengo +# QuteCom, a voice over Internet phone +# Copyright (C) 2010 Mbdsys # # 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 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# @author Philippe Bernery +# @author Philippe Bernery # # This script copy libraries linked libraries found in 1st argument and # not installed by default on the system and not found in 1st argument. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/ow_src_pkg.sh qutecom-2.2+dfsg1/scripts/ow_src_pkg.sh --- qutecom-2.2~rc3.hg643~dfsg1/scripts/ow_src_pkg.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/ow_src_pkg.sh 2010-10-18 12:50:12.000000000 +0000 @@ -4,7 +4,7 @@ # It Can be used to create nightly svn snapshots. # -output_dir="wengophone-2.1" +output_dir="qutecom-2.1" #remove the last archive rm -f $output_dir.tar.bz2 @@ -12,14 +12,14 @@ # Download sources from svn echo -n "Downloading sources... " -svn export -q --password guest --username guest http://dev.openwengo.org/svn/openwengo/wengophone-ng/branches/wengophone-2.1/ $output_dir +svn export -q --password guest --username guest http://dev.openqutecom.org/svn/openqutecom/qutecom-ng/branches/qutecom-2.1/ $output_dir echo "done" #TODO remove more useless stuff rm -rf $output_dir/libs/3rdparty/ffmpeg/binary-lib/ -rm -rf $output_dir/wengophone/nsis/dll/ +rm -rf $output_dir/qutecom/nsis/dll/ rm -rf $output_dir/libs/3rdparty/openssl/binary-lib -rm -rf $output_dir/wengophone/together/ +rm -rf $output_dir/qutecom/together/ # Make the sources archive echo -n "Writing archive... " diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/qutecom.sh qutecom-2.2+dfsg1/scripts/qutecom.sh --- qutecom-2.2~rc3.hg643~dfsg1/scripts/qutecom.sh 1970-01-01 00:00:00.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/qutecom.sh 2010-10-18 12:50:12.000000000 +0000 @@ -0,0 +1,23 @@ +#!/bin/sh + +SCRIPT="$0" +COUNT=0 +while [ -L "${SCRIPT}" ] +do + SCRIPT=$(readlink ${SCRIPT}) + COUNT=$(expr ${COUNT} + 1) + if [ ${COUNT} -gt 100 ] + then + echo "Too many symbolic links" + exit 1 + fi +done +APPDIR=$(dirname ${SCRIPT}) + +export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${APPDIR}" + +cd ${APPDIR} + +# Hardcode the Plastique style for now, because the audio sliders looks wrong +# with other styles. +exec ./@BINARY_NAME@ -style plastique "$@" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/update_links.py qutecom-2.2+dfsg1/scripts/update_links.py --- qutecom-2.2~rc3.hg643~dfsg1/scripts/update_links.py 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/update_links.py 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ #!/usr/bin/env python # -*- coding: utf-8 -*- # -# WengoPhone, a voice over Internet phone -# Copyright (C) 2004-2007 Wengo +# QuteCom, a voice over Internet phone +# Copyright (C) 2010 Mbdsys # # 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 @@ -18,7 +18,7 @@ # along with this program; if not, write to the Free Software # Foundation, Inc., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA # -# @author Philippe Bernery +# @author Philippe Bernery # # This script updates library links of Mach-O files in a directory # (1st parameter) and its sub-directories. If a prefix is given, it is added diff -Nru qutecom-2.2~rc3.hg643~dfsg1/scripts/wengophone.sh qutecom-2.2+dfsg1/scripts/wengophone.sh --- qutecom-2.2~rc3.hg643~dfsg1/scripts/wengophone.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/scripts/wengophone.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -#!/bin/sh - -SCRIPT="$0" -COUNT=0 -while [ -L "${SCRIPT}" ] -do - SCRIPT=$(readlink ${SCRIPT}) - COUNT=$(expr ${COUNT} + 1) - if [ ${COUNT} -gt 100 ] - then - echo "Too many symbolic links" - exit 1 - fi -done -APPDIR=$(dirname ${SCRIPT}) - -export LD_LIBRARY_PATH="${LD_LIBRARY_PATH}:${APPDIR}" - -cd ${APPDIR} - -# Hardcode the Plastique style for now, because the audio sliders looks wrong -# with other styles. -exec ./@BINARY_NAME@ -style plastique "$@" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/AUTHORS qutecom-2.2+dfsg1/wengophone/AUTHORS --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/AUTHORS 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/AUTHORS 1970-01-01 00:00:00.000000000 +0000 @@ -1,121 +0,0 @@ - -Active committers: - Marek Cervenka - Vadim Lebedev - Leonard Norrgard - Laurent Tarrisse - -Original Developers: - Philippe Bernery - Julien Bossart - Xavier Desjardins - David Ferlier - Aurélien Gateau - Julien Gilli - Tanguy Krotoff - Vadim Lebedev - Minh Phan Quang - Mathieu Stute - Jérôme Wagner - -Contributors: - Maxime Alexandre - Laurent Almeras - Dudi Avramov's - Yann Biancheri - Ludovico Cavedon - Guirec Courbon - Alain Delhaye - Julien De Luca - Luca DiMarco - Paolo Durante - Angius Fabrizio - Jean-François Gaud - Daniele Gobbetti - Thomas Hervé - Philippe Kajmar - Alec Leams - Séven LeMesle - Jarosław Lewandowski - Anne-Fleur L'Hostis - Arnaud Ligot - Thomas Monjalon - Dave Neary - Régis Nebor - Fabien Penso - Christophe Perez - Andreas Schneider - Matthias Schneider - Laurent Schweizer - Assane Sylla - Livio Torrero - Seb Tricaud - Sherry Yang - - -Emoticons from Nuno Pinheiro, http://pinheiro-kde.blogspot.com/ -Flags icons from Mark James, http://www.famfamfam.com/ - -**Based on the following softwares** -- phApi -Copyright (C) Vadim Lebedev -published under GNU GPL - -- eXosip -Copyright (C) Aymeric Moizard -published under GNU GPL - -- oSIP -Copyright (C) Aymeric Moizard -published under GNU LGPL - -- oRTP -Copyright (C) Simon Morlat -published under GNU LGPL - -- trayicon -Copyright (C) Justin Karneges -published under GNU LGPL - -- Boost -published under Boost Software License - -- cURL -Copyright (C) Daniel Stenberg -published under MIT/X-style license - -- FFmpeg -published under GNU LGPL - -- TinyXML -Copyright (C) Lee Thomason -published under zlib license - -- Qt Toolkit -Copyright (C) Trolltech AS -published under GNU GPL - -- sipX -Copyright (C) Pingtel Corp -published under GNU LGPL - -- PortAudio -Copyright (C) Ross Bencina and Phil Burk -published under BSD-style license - -- OpenSSL -published under Apache-style license - -- Speex -Copyright (C) Xiph.org Foundation -published under BSD-style license - -- Libpurple -published under GNU GPL - -- GLib -published under GNU LGPL - -- NSIS -Copyright (C) Nullsoft, Inc. -published under zlib-style license diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -# TODO : test dir - -subdirs( - src/buildid - src - resources - #test -) - -if (COPY_DATA_FILES_ON_CONFIGURE) - ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/COPYING ${BUILD_DIR}) - # Copy AUTHORS to DATA_COPY_DIR because it's used by QtAbout - ow_copy_file(${CMAKE_CURRENT_SOURCE_DIR}/AUTHORS ${DATA_COPY_DIR}/.) -endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/COPYING qutecom-2.2+dfsg1/wengophone/COPYING --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/COPYING 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/COPYING 1970-01-01 00:00:00.000000000 +0000 @@ -1,340 +0,0 @@ - GNU GENERAL PUBLIC LICENSE - Version 2, June 1991 - - Copyright (C) 1989, 1991 Free Software Foundation, Inc. - 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - Everyone is permitted to copy and distribute verbatim copies - of this license document, but changing it is not allowed. - - Preamble - - The licenses for most software are designed to take away your -freedom to share and change it. By contrast, the GNU General Public -License is intended to guarantee your freedom to share and change free -software--to make sure the software is free for all its users. This -General Public License applies to most of the Free Software -Foundation's software and to any other program whose authors commit to -using it. (Some other Free Software Foundation software is covered by -the GNU Library General Public License instead.) You can apply it to -your programs, too. - - When we speak of free software, we are referring to freedom, not -price. Our General Public Licenses are designed to make sure that you -have the freedom to distribute copies of free software (and charge for -this service if you wish), that you receive source code or can get it -if you want it, that you can change the software or use pieces of it -in new free programs; and that you know you can do these things. - - To protect your rights, we need to make restrictions that forbid -anyone to deny you these rights or to ask you to surrender the rights. -These restrictions translate to certain responsibilities for you if you -distribute copies of the software, or if you modify it. - - For example, if you distribute copies of such a program, whether -gratis or for a fee, you must give the recipients all the rights that -you have. You must make sure that they, too, receive or can get the -source code. And you must show them these terms so they know their -rights. - - We protect your rights with two steps: (1) copyright the software, and -(2) offer you this license which gives you legal permission to copy, -distribute and/or modify the software. - - Also, for each author's protection and ours, we want to make certain -that everyone understands that there is no warranty for this free -software. If the software is modified by someone else and passed on, we -want its recipients to know that what they have is not the original, so -that any problems introduced by others will not reflect on the original -authors' reputations. - - Finally, any free program is threatened constantly by software -patents. We wish to avoid the danger that redistributors of a free -program will individually obtain patent licenses, in effect making the -program proprietary. To prevent this, we have made it clear that any -patent must be licensed for everyone's free use or not licensed at all. - - The precise terms and conditions for copying, distribution and -modification follow. - - GNU GENERAL PUBLIC LICENSE - TERMS AND CONDITIONS FOR COPYING, DISTRIBUTION AND MODIFICATION - - 0. This License applies to any program or other work which contains -a notice placed by the copyright holder saying it may be distributed -under the terms of this General Public License. The "Program", below, -refers to any such program or work, and a "work based on the Program" -means either the Program or any derivative work under copyright law: -that is to say, a work containing the Program or a portion of it, -either verbatim or with modifications and/or translated into another -language. (Hereinafter, translation is included without limitation in -the term "modification".) Each licensee is addressed as "you". - -Activities other than copying, distribution and modification are not -covered by this License; they are outside its scope. The act of -running the Program is not restricted, and the output from the Program -is covered only if its contents constitute a work based on the -Program (independent of having been made by running the Program). -Whether that is true depends on what the Program does. - - 1. You may copy and distribute verbatim copies of the Program's -source code as you receive it, in any medium, provided that you -conspicuously and appropriately publish on each copy an appropriate -copyright notice and disclaimer of warranty; keep intact all the -notices that refer to this License and to the absence of any warranty; -and give any other recipients of the Program a copy of this License -along with the Program. - -You may charge a fee for the physical act of transferring a copy, and -you may at your option offer warranty protection in exchange for a fee. - - 2. You may modify your copy or copies of the Program or any portion -of it, thus forming a work based on the Program, and copy and -distribute such modifications or work under the terms of Section 1 -above, provided that you also meet all of these conditions: - - a) You must cause the modified files to carry prominent notices - stating that you changed the files and the date of any change. - - b) You must cause any work that you distribute or publish, that in - whole or in part contains or is derived from the Program or any - part thereof, to be licensed as a whole at no charge to all third - parties under the terms of this License. - - c) If the modified program normally reads commands interactively - when run, you must cause it, when started running for such - interactive use in the most ordinary way, to print or display an - announcement including an appropriate copyright notice and a - notice that there is no warranty (or else, saying that you provide - a warranty) and that users may redistribute the program under - these conditions, and telling the user how to view a copy of this - License. (Exception: if the Program itself is interactive but - does not normally print such an announcement, your work based on - the Program is not required to print an announcement.) - -These requirements apply to the modified work as a whole. If -identifiable sections of that work are not derived from the Program, -and can be reasonably considered independent and separate works in -themselves, then this License, and its terms, do not apply to those -sections when you distribute them as separate works. But when you -distribute the same sections as part of a whole which is a work based -on the Program, the distribution of the whole must be on the terms of -this License, whose permissions for other licensees extend to the -entire whole, and thus to each and every part regardless of who wrote it. - -Thus, it is not the intent of this section to claim rights or contest -your rights to work written entirely by you; rather, the intent is to -exercise the right to control the distribution of derivative or -collective works based on the Program. - -In addition, mere aggregation of another work not based on the Program -with the Program (or with a work based on the Program) on a volume of -a storage or distribution medium does not bring the other work under -the scope of this License. - - 3. You may copy and distribute the Program (or a work based on it, -under Section 2) in object code or executable form under the terms of -Sections 1 and 2 above provided that you also do one of the following: - - a) Accompany it with the complete corresponding machine-readable - source code, which must be distributed under the terms of Sections - 1 and 2 above on a medium customarily used for software interchange; or, - - b) Accompany it with a written offer, valid for at least three - years, to give any third party, for a charge no more than your - cost of physically performing source distribution, a complete - machine-readable copy of the corresponding source code, to be - distributed under the terms of Sections 1 and 2 above on a medium - customarily used for software interchange; or, - - c) Accompany it with the information you received as to the offer - to distribute corresponding source code. (This alternative is - allowed only for noncommercial distribution and only if you - received the program in object code or executable form with such - an offer, in accord with Subsection b above.) - -The source code for a work means the preferred form of the work for -making modifications to it. For an executable work, complete source -code means all the source code for all modules it contains, plus any -associated interface definition files, plus the scripts used to -control compilation and installation of the executable. However, as a -special exception, the source code distributed need not include -anything that is normally distributed (in either source or binary -form) with the major components (compiler, kernel, and so on) of the -operating system on which the executable runs, unless that component -itself accompanies the executable. - -If distribution of executable or object code is made by offering -access to copy from a designated place, then offering equivalent -access to copy the source code from the same place counts as -distribution of the source code, even though third parties are not -compelled to copy the source along with the object code. - - 4. You may not copy, modify, sublicense, or distribute the Program -except as expressly provided under this License. Any attempt -otherwise to copy, modify, sublicense or distribute the Program is -void, and will automatically terminate your rights under this License. -However, parties who have received copies, or rights, from you under -this License will not have their licenses terminated so long as such -parties remain in full compliance. - - 5. You are not required to accept this License, since you have not -signed it. However, nothing else grants you permission to modify or -distribute the Program or its derivative works. These actions are -prohibited by law if you do not accept this License. Therefore, by -modifying or distributing the Program (or any work based on the -Program), you indicate your acceptance of this License to do so, and -all its terms and conditions for copying, distributing or modifying -the Program or works based on it. - - 6. Each time you redistribute the Program (or any work based on the -Program), the recipient automatically receives a license from the -original licensor to copy, distribute or modify the Program subject to -these terms and conditions. You may not impose any further -restrictions on the recipients' exercise of the rights granted herein. -You are not responsible for enforcing compliance by third parties to -this License. - - 7. If, as a consequence of a court judgment or allegation of patent -infringement or for any other reason (not limited to patent issues), -conditions are imposed on you (whether by court order, agreement or -otherwise) that contradict the conditions of this License, they do not -excuse you from the conditions of this License. If you cannot -distribute so as to satisfy simultaneously your obligations under this -License and any other pertinent obligations, then as a consequence you -may not distribute the Program at all. For example, if a patent -license would not permit royalty-free redistribution of the Program by -all those who receive copies directly or indirectly through you, then -the only way you could satisfy both it and this License would be to -refrain entirely from distribution of the Program. - -If any portion of this section is held invalid or unenforceable under -any particular circumstance, the balance of the section is intended to -apply and the section as a whole is intended to apply in other -circumstances. - -It is not the purpose of this section to induce you to infringe any -patents or other property right claims or to contest validity of any -such claims; this section has the sole purpose of protecting the -integrity of the free software distribution system, which is -implemented by public license practices. Many people have made -generous contributions to the wide range of software distributed -through that system in reliance on consistent application of that -system; it is up to the author/donor to decide if he or she is willing -to distribute software through any other system and a licensee cannot -impose that choice. - -This section is intended to make thoroughly clear what is believed to -be a consequence of the rest of this License. - - 8. If the distribution and/or use of the Program is restricted in -certain countries either by patents or by copyrighted interfaces, the -original copyright holder who places the Program under this License -may add an explicit geographical distribution limitation excluding -those countries, so that distribution is permitted only in or among -countries not thus excluded. In such case, this License incorporates -the limitation as if written in the body of this License. - - 9. The Free Software Foundation may publish revised and/or new versions -of the General Public License from time to time. Such new versions will -be similar in spirit to the present version, but may differ in detail to -address new problems or concerns. - -Each version is given a distinguishing version number. If the Program -specifies a version number of this License which applies to it and "any -later version", you have the option of following the terms and conditions -either of that version or of any later version published by the Free -Software Foundation. If the Program does not specify a version number of -this License, you may choose any version ever published by the Free Software -Foundation. - - 10. If you wish to incorporate parts of the Program into other free -programs whose distribution conditions are different, write to the author -to ask for permission. For software which is copyrighted by the Free -Software Foundation, write to the Free Software Foundation; we sometimes -make exceptions for this. Our decision will be guided by the two goals -of preserving the free status of all derivatives of our free software and -of promoting the sharing and reuse of software generally. - - NO WARRANTY - - 11. BECAUSE THE PROGRAM IS LICENSED FREE OF CHARGE, THERE IS NO WARRANTY -FOR THE PROGRAM, TO THE EXTENT PERMITTED BY APPLICABLE LAW. EXCEPT WHEN -OTHERWISE STATED IN WRITING THE COPYRIGHT HOLDERS AND/OR OTHER PARTIES -PROVIDE THE PROGRAM "AS IS" WITHOUT WARRANTY OF ANY KIND, EITHER EXPRESSED -OR IMPLIED, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF -MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS -TO THE QUALITY AND PERFORMANCE OF THE PROGRAM IS WITH YOU. SHOULD THE -PROGRAM PROVE DEFECTIVE, YOU ASSUME THE COST OF ALL NECESSARY SERVICING, -REPAIR OR CORRECTION. - - 12. IN NO EVENT UNLESS REQUIRED BY APPLICABLE LAW OR AGREED TO IN WRITING -WILL ANY COPYRIGHT HOLDER, OR ANY OTHER PARTY WHO MAY MODIFY AND/OR -REDISTRIBUTE THE PROGRAM AS PERMITTED ABOVE, BE LIABLE TO YOU FOR DAMAGES, -INCLUDING ANY GENERAL, SPECIAL, INCIDENTAL OR CONSEQUENTIAL DAMAGES ARISING -OUT OF THE USE OR INABILITY TO USE THE PROGRAM (INCLUDING BUT NOT LIMITED -TO LOSS OF DATA OR DATA BEING RENDERED INACCURATE OR LOSSES SUSTAINED BY -YOU OR THIRD PARTIES OR A FAILURE OF THE PROGRAM TO OPERATE WITH ANY OTHER -PROGRAMS), EVEN IF SUCH HOLDER OR OTHER PARTY HAS BEEN ADVISED OF THE -POSSIBILITY OF SUCH DAMAGES. - - END OF TERMS AND CONDITIONS - - How to Apply These Terms to Your New Programs - - If you develop a new program, and you want it to be of the greatest -possible use to the public, the best way to achieve this is to make it -free software which everyone can redistribute and change under these terms. - - To do so, attach the following notices to the program. It is safest -to attach them to the start of each source file to most effectively -convey the exclusion of warranty; and each file should have at least -the "copyright" line and a pointer to where the full notice is found. - - - Copyright (C) - - 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., 51 Franklin St, Fifth Floor, Boston, MA 02110-1301 USA - - -Also add information on how to contact you by electronic and paper mail. - -If the program is interactive, make it output a short notice like this -when it starts in an interactive mode: - - Gnomovision version 69, Copyright (C) year name of author - Gnomovision comes with ABSOLUTELY NO WARRANTY; for details type `show w'. - This is free software, and you are welcome to redistribute it - under certain conditions; type `show c' for details. - -The hypothetical commands `show w' and `show c' should show the appropriate -parts of the General Public License. Of course, the commands you use may -be called something other than `show w' and `show c'; they could even be -mouse-clicks or menu items--whatever suits your program. - -You should also get your employer (if you work as a programmer) or your -school, if any, to sign a "copyright disclaimer" for the program, if -necessary. Here is a sample; alter the names: - - Yoyodyne, Inc., hereby disclaims all copyright interest in the program - `Gnomovision' (which makes passes at compilers) written by James Hacker. - - , 1 April 1989 - Ty Coon, President of Vice - -This General Public License does not permit incorporating your program into -proprietary programs. If your program is a subroutine library, you may -consider it more useful to permit linking proprietary applications with the -library. If this is what you want to do, use the GNU Library General -Public License instead of this License. diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/CppTemplate.cpp qutecom-2.2+dfsg1/wengophone/doc/CppTemplate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/CppTemplate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/doc/CppTemplate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "HeaderTemplate.h" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/HeaderTemplate.h qutecom-2.2+dfsg1/wengophone/doc/HeaderTemplate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/HeaderTemplate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/doc/HeaderTemplate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWHEADERTEMPLATE_H -#define OWHEADERTEMPLATE_H - -/** - * Header template with copyright and GNU GPL license. - * - * End of line character should be LF (UNIX) rather than CR LF (Windows). - * Code documentation should be inside header files using the javadoc standard. - * - * @see doc/WengoPhoneCodeConventions.odt - * @see http://dev.openwengo.com/trac/openwengo/trac.cgi/wiki/WengoPhoneCodeConventions - * @author Tanguy Krotoff - */ -class HeaderTemplate { -}; - -#endif //OWHEADERTEMPLATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/WengoPhone_NG_overview.svg qutecom-2.2+dfsg1/wengophone/doc/WengoPhone_NG_overview.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/doc/WengoPhone_NG_overview.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/doc/WengoPhone_NG_overview.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,4421 +0,0 @@ - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - image/svg+xml - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - Qt frontend - - - - - - - - - - - - - - - - GTK+ Frontend - - - - - - - - - - - - - - - - Cocoa frontend - - XPCOMComponent - - - - NG's Core - - - - ContactList - History - PhoneLine&PhoneCall - libGAIM - PhApi - - - - SIPWrapper - - - Sound - - Webcam - Homebrew Libraries - - SimpleAPI - wengophone/src/presentation/xpcom - - - - - ffmpeg - oSIP - eXosip - oRTP - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MSN - Yahoo! - - Jabber - wengophone/src/presentation/qt - wengophone/src/presentation/gtk - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - : Use relationship. - - - - - - - - - - - - : Work in -progress. - - - - - - - - - - - - - - - - - - - - - - - - - - - : Potential enhancement. - - netlib - - Tinyxml - - - shlibloader - global - - util - - qtutil - - Presence &IM - timer - - skinstyle - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/Doxyfile qutecom-2.2+dfsg1/wengophone/Doxyfile --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/Doxyfile 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/Doxyfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -# Doxyfile 1.4.4 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = WengoPhone -PROJECT_NUMBER = -OUTPUT_DIRECTORY = doc -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = src \ - mainpage.doxygen \ - WengoPhoneCodeConventions.txt \ - COPYING -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = . -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/install-wengophone.sh qutecom-2.2+dfsg1/wengophone/install-wengophone.sh --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/install-wengophone.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/install-wengophone.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -#!/bin/sh -# -# This script installs WengoPhone 2.0 - -# Download WengoPhone -echo " " -echo "Password required to install in /opt directory... " -echo " " -cd /opt -sudo wget http://download.wengo.com/wengophone/rc/2006-10-03/WengoPhone-2.0-linux-bin-x86.tar.bz2 - -# Install WengoPhone 2.0 -echo " " -echo "Installing WengoPhone 2.0" - -# Extract the build -sudo tar -xjvf WengoPhone-2.0-linux-bin-x86.tar.bz2 - -# Renaming the folder -sudo mv wengophone-ng-binary-latest/ wengophone - -# Make sure root owns the Swiftfox directory -sudo chown -hR root:root wengophone -#Applying permissions -sudo chmod 555 /opt/wengophone/* - -# Add link to /usr/bin -sudo ln -s /opt/wengophone/wengophone.sh /usr/bin/qtwengophone - -# Add WengoPhone menu Entry -cd /usr/share/applications -sudo wget http://download.wengo.com/wengophone/wengophone.desktop - -# Copy wengophone icon -cp /opt/wengophone/pics/wengophone.png /usr/share/pixmaps/wengophone.png - -# Download .protocol file -cd /usr/share/services -wget http://download.wengo.com/wengophone/wengophone.protocol - -# Remove the downloaded tarball -sudo rm /opt/WengoPhone-2.0-linux-bin-x86.tar.bz2 - -echo " " -echo "WengoPhone 2.0 is now installed, enjoy your freedom to talk :) !" -echo " " -exit diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/mainpage.doxygen qutecom-2.2+dfsg1/wengophone/mainpage.doxygen --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/mainpage.doxygen 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/mainpage.doxygen 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/** - * @mainpage - -

Code Conventions

- -Please read the file WengoPhoneCodeConventions.odt or go to the wiki page -WengoPhoneCodeConventions. - -This document only explain specific conventions for WengoPhoneNG. - -

Model component

-All classes are named after WengoPhoneCodeConventions.sxw. - -All thread safe methods are named @a *ThreadSafe(). - -Events are always postfixed with Event and event callbacks with EventHandler. - -Besides this there is no specific conventions for this component. - -

Control component

-This component has some special conventions: - -All classes start with a big letter 'C' (meaning Control) e.g CWengoPhone. - -

Presentation component

-All classes start with a big letter 'P' (meaning Presentation) e.g PWengoPhone. - -All Qt classes start with 'Qt' e.g QtWengoPhone. - -All GTK+ classes start with 'Gtk' e.g GtkWengoPhone. - -Qt classes have to be thread safe. All the calls from the model/control part -should be threaded via QObjectThreadSafe (LibQtUtil). - -If a method @a addMessage(const std::string & message) is implemented inside a Qt class, -this method should call another one named @a addMessageThreadSafe() that uses -QObjectThreadSafe. -Same for the constructor that calls a method named @a initThreadSafe(). -So all thread safe methods are named @a *ThreadSafe(). - -For UML pictures the resolution should be 1280x960 (~100KB) -Name convention: $MODULE_framework1.jpg, $MODULE_framework2.jpg ... - -

License

-WengoPhone is licensed under the GNU GPLv2 license. - */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/70QuteCom qutecom-2.2+dfsg1/wengophone/res/70QuteCom --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/70QuteCom 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/res/70QuteCom 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -#!/bin/bash - -. /usr/lib/pm-utils/functions - -suspend_qc() { - # Tell QuteCom that the system shuts down - #dbus-send --system \ - # --print-reply --reply-timeout=200 \ - # --dest=org.qutecom \ - # / \ - # org.qutecom.Wakeup.wakeup - true -} - -resume_qc() { - # Wake up QuteCom and make it do a new connection - dbus-send --system \ - / \ - org.qutecom.Wakeup.wakeup -} - -case "$1" in - hibernate|suspend) - suspend_qc - ;; - thaw|resume) - resume_qc - ;; - *) - ;; -esac - -exit $? Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom_16x16.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/qutecom_16x16.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom_32x32.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/qutecom_32x32.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom_48x48.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/qutecom_48x48.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom_64x64.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/qutecom_64x64.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom.desktop qutecom-2.2+dfsg1/wengophone/res/qutecom.desktop --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom.desktop 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/res/qutecom.desktop 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -[Desktop Entry] -Name=QuteCom -Comment=Talk to people over the Internet and send instant messages over multiple protocols -Comment[fr]=Discuter avec des personnes sur Internet e envoie des messages instantanés en utilisant divers protocoles -Comment[it]=Comunicare con le persone via Internet e inviare messaggi istantanei multiprotocollo -GenericName=VoIP softphone and IM client -GenericName[fr]=Téléphone VoIP e client IM -GenericName[it]=Programma VoIP e client IM -Exec=qutecom -Icon=qutecom -StartupNotify=true -Terminal=false -Type=Application -Categories=Qt;Network;Telephony;VideoConference; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom-resume.sh qutecom-2.2+dfsg1/wengophone/res/qutecom-resume.sh --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/qutecom-resume.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/res/qutecom-resume.sh 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -dbus-send --system / org.qutecom.Wakeup.wakeup \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengophone_16x16.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/wengophone_16x16.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengophone_32x32.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/wengophone_32x32.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengophone_48x48.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/wengophone_48x48.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengophone_64x64.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/res/wengophone_64x64.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengo.protocol qutecom-2.2+dfsg1/wengophone/res/wengo.protocol --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/res/wengo.protocol 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/res/wengo.protocol 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -[Protocol] -exec=qtwengophone "%u" -protocol=wengo -input=none -output=none -helper=true -listing=false -reading=false -writing=false -makedir=false -deleting=false -Class=:internet diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/base.html qutecom-2.2+dfsg1/wengophone/resources/chat/base.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/base.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/base.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - 1.0 - CFBundleIdentifier - camflan.boxes.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Boxes - CFBundlePackageType - AdIM - DefaultBackgroundColor - ffffff - DefaultFontFamily - Helvetica Neue - DefaultFontSize - 12 - MessageViewVersion - 2 - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/AdiumMessageStylemockupmain.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ - - - - -Message Style Mockup (tutorial) - - - - - - -
- icon -
-
Camron Flanders
-
12:22
-
- could you reply...I just need to test something - thanks - thanksa;sldkfjasl;dkfjasl;kdfjals;kdjfalksjdflaksdhfajkshdgklajshdgkasjdhgas;dlkgas;dlghasdl;ghasldkghals;kdhgalskdjgfalskjhfgals;kdhgasl;kdhglkh - -
-
-
- -
- icon -
-
Ashlyn Buck
-
- yup -
-
-
- -
- icon -
-
Camron Flanders
-
- thanks -
-
-
-
12.05p
- -
- icon -
-
Ashlyn Buck
-
- no prob -
-
-
- - -
10.08p
-
Ashlyn Buck has gone offline.
- -
10.08p
- -
- user icon -
-
Camron Flanders
-
- . -
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(106,181,241,1); - background: rgba(106,181,241,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(235,235,235,1); - background: rgba(235,235,235,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(170,181,192,1); - background: rgba(170,181,192,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(179,233,100,1); - background: rgba(179,233,100,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(245,166,34,1); - background: rgba(245,166,34,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(249,136,188,1); - background: rgba(249,136,188,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(209,168,231,1); - background: rgba(209,168,231,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/i/yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.incoming .capsule { - border-color: rgba(247,224,0,1); - background: rgba(247,224,0,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(106,181,241,1); - background: rgba(106,181,241,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(235,235,235,1); - background: rgba(235,235,235,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(170,181,192,1); - background: rgba(170,181,192,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(179,233,100,1); - background: rgba(179,233,100,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(245,166,34,1); - background: rgba(245,166,34,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(249,136,188,1); - background: rgba(249,136,188,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(209,168,231,1); - background: rgba(209,168,231,1); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Colors/o/yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -.outgoing .capsule { - border-color: rgba(247,224,0,1); - background: rgba(247,224,0,1); -} - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -
- user icon -
-
%sender%
-
%time%
-
- %message% -
-
-
-
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -%message% -
Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -.message, .nextmessage { - position: relative; - display: block; - text-align: left; - word-wrap: break-word; -} - -div.message { - margin: 0px 0px 5px 0px; -} - -.nextmessage { - margin-top: 3px; - padding-top: 4px; - border-top-width: 1px; - border-top-style:groove; - border-top-color:rgba(0,0,0,.1); -} - -.buddyicon[background="Incoming/buddy_icon.png"], -.buddyicon[background="Outgoing/buddy_icon.png"] { - display: none; -} - -.buddyicon[background="Incoming/buddy_icon.png"] ~ .capsule, -.buddyicon[background="Outgoing/buddy_icon.png"] ~ .capsule { - margin-left: 3px; -} - -.buddyicon { - position: absolute; - width: 32px; - height: 32px; - top: 5px; - left: -2px; -} - -.capsule { - margin: 0px 4px 0px 36px; - border-width: 1px; - border-style: solid; - -webkit-border-radius:8px; - -webkit-box-shadow:0px 1px 2px rgba(129,129,129,.8); -} - -.context, .content { - padding: 5px 6px; -} - -.sender { - font-size: 90%; - padding: 1px 6px; - font-weight: bold; - line-height: 16px; - background: rgba(255, 255, 255, .8); - -webkit-border-top-left-radius:6px; - -webkit-border-top-right-radius:6px; -} - -.time, .status { - display: block; - position: relative; - color: #888; - font-size: 90%; - text-align: center; -} - -.time { - margin-top: 6px; - margin-bottom: 5px; -} - -.capsule_timestamp { - position: absolute; - right: 10px; - font-size: 90%; - top: 4px; - visibility: hidden; -} - -.message:hover .capsule_timestamp { - display:visible; - visibility: visible; -} - -.status { - margin-top: 11px; - margin-bottom: 11px; -} - -/* set defaults, otherwise it will be blank when "Normal" is chosen */ - -.incoming .capsule { - border-color: rgba(106,181,241,1); - background: rgba(106,181,241,1); -} - -.outgoing .capsule { - border-color: rgba(245,166,34,1); - background: rgba(245,166,34,1); -} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -
- user icon -
-
%sender%
-
%time%
-
- %message% -
-
-
-
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -%message% -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -
%time%
-
%message%
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/subtractSenderName.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/subtractSenderName.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/subtractSenderName.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/subtractSenderName.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.sender { - display:none; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/template.html qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/template.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/template.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/template.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,229 +0,0 @@ - - - - - - - - - - - - - -%@ -
-
-%@ - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Blue vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/blue.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Clear vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/clear.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Graphite vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/graphite.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Lime vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/lime.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Orange vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/orange.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Pink vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/pink.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Purple vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/purple.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/blue.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Blue (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/blue.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/clear.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Clear (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/clear.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/graphite.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Graphite (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/graphite.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/lime.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Lime (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/lime.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/orange.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Orange (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/orange.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/pink.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Pink (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/pink.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/purple.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Purple (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/purple.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/yellow.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Boxes/Contents/Resources/Variants/Yellow vs Yellow (no names).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url('../main.css'); -@import url('../Colors/i/yellow.css'); -@import url('../Colors/o/yellow.css'); -@import url('../subtractSenderName.css'); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - - - - - AllowTextColors - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Eclipse Adium Message Style - CFBundleIdentifier - com.adiumx.eclipse.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Eclipse - CFBundlePackageType - AdIM - DefaultBackgroundColor - ffffff - DefaultFontFamily - Lucida Grande - DefaultFontSize - 11 - DisplayNameForNoVariant - Camo Brown - MessageViewVersion - 2 - ShowsUserIcons - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbl25.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbl25.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/cbr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl25.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl25.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctl50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/000/ctr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/camo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/camo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/dots.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/dots.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/cbl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/cbl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/cbr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/cbr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctl33.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctl33.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctl50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctl50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctr50.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/fff/ctr50.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/flower.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/flower.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/foam.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/foam.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/hot2.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/hot2.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/hot.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/hot.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/paper.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/paper.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/wood.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/images/wood.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -
-
- -
-
-
%sender%
-
- -
-
-
-
-
-
-
-
-
-%time% -%message% -
-
-
-
-
-
-
-
-
-
-
- -
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -
-
- -
-
-
%sender%
-
- -
-
-
-
-
-
-
-
-
-%time% -%message% -
-
-
-
-
-
-
-
-
-
-
- -
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-%time% -%message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-%time% -%message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(styles/000.css); body { background: url(images/camo.png); } .container.message.me { background: rgba(204,102,0,.5); } .container.message.me .text a { color: #cc9900; } .container.message.you { background: rgba(102,204,0,.5); } .container.message.you .text a { color: #99cc00; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #b2b24d; } .container.status { background: rgba(153,153,0,.5); } .container.status .text a { color: #b2b200; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Null.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Null.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Null.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Null.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/common.css); \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -
-
- -
-
-
%sender%
-
- -
-
-
-
-
-
-
-
-
-%time% -%message% -
-
-
-
-
-
-
-
-
-
-
- -
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -
-
- -
-
-
%sender%
-
- -
-
-
-
-
-
-
-
-
-%time% -%message% -
-
-
-
-
-
-
-
-
-
-
- -
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-%time% -%message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-%time% -%message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -
-
- -
-
-
-
-
-
-
-
-
-%time% -%message% -
-
-
-
-
-
-
-
-
-
- -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/000.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/000.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/000.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/000.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(common.css); /****** Container ******/ .container { text-shadow: #000 0 1px 1px; } .container .msgs .bot { background: url(../images/000/cbl33.png) no-repeat; } .container .msgs .bot .left { background: rgba(0, 0, 0, .33); } .container .msgs .bot .right > div { background: rgba(0, 0, 0, .5); } .container .msgs .bot .right { background: url(../images/000/cbr50.png) no-repeat right; } .container .msgs .post .text a { color: #ccc; /* dummy */ } .container .msgs .post .text a:active, .container .msgs .post .text a:before, .container .msgs .post .text a:after { color: #fff; } /****** Message ******/ .container.message .head .top { background: url(../images/000/ctl50.png) no-repeat; } .container.message .head .top > div { background: url(../images/000/ctr50.png) no-repeat right; } .container.message .head .top > div > div { background: rgba(0, 0, 0, .5); } .container.message .head .from { background: rgba(0, 0, 0, .5); color: #fff; text-shadow: rgba(0, 0, 0, 1) 0 0 3px; } .container.message .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.message .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.message .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.message .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.message .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.message .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.message .msgs .post .time { color: rgba(255, 255, 255, .75); } .container.message .msgs .post .text { color: rgba(255, 255, 255, 1); } .container.message .msgs .post + .post { border-color: rgba(255, 255, 255, .5); } /****** Context ******/ .container.context .head .top { background: url(../images/000/ctl50.png) no-repeat; } .container.context .head .top > div { background: url(../images/000/ctr50.png) no-repeat right; } .container.context .head .top > div > div { background: rgba(0, 0, 0, .5); } .container.context .head .from { background: rgba(0, 0, 0, .5); color: rgba(255, 255, 255, .75); text-shadow: rgba(0, 0, 0, .75) 0 0 3px; } .container.context .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.context .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.context .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.context .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.context .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.context .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.context .msgs .post .time { color: rgba(255, 255, 255, .5); } .container.context .msgs .post .text { color: rgba(255, 255, 255, .65); } .container.context .msgs .post + .post { border-color: rgba(255, 255, 255, .5); } /****** Status ******/ .container.status .msgs .top { background: url(../images/000/ctl33.png) no-repeat; } .container.status .msgs .top .left { background: rgba(0, 0, 0, .333); } .container.status .msgs .top .right > div { background: rgba(0, 0, 0, .5); } .container.status .msgs .top .right { background: url(../images/000/ctr50.png) no-repeat right; } .container.status .msgs .mid .left { background: rgba(0, 0, 0, .33); } .container.status .msgs .mid .right { background: rgba(0, 0, 0, .25); } .container.status .msgs .post .time { color: rgba(255, 255, 255, .75); } .container.status .msgs .post .text { color: rgba(255, 255, 255, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/common.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/common.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/common.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/common.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -body { margin: 0; font-family: "Lucida Grande"; } .container > div { border-top: 1px solid rgba(255, 255, 255, .333); border-bottom: 1px solid rgba(0, 0, 0, .333); padding: 4px 6px; } .container.status .post .text { font-weight: bold; } .head { float: left; margin-left: 70px; } .head .top { padding-left: 8px; } .head .top > div { padding-right: 8px; } .head .top > div > div { height: 8px; } .head .from { padding-top: 1px; } .head .from > div { position: relative; z-index: 5; margin: -7px 7px 0; font-size: 12px; font-weight: bold; overflow: hidden; } .msgs { clear: both; } .msgs .top { padding-left: 8px; } .msgs .top .left { float: left; width: 62px; height: 8px; } .msgs .top .right { margin-left: 62px; padding-right: 8px; } .msgs .top .right > div { height: 8px; } .msgs .bot { padding-left: 8px; } .msgs .bot .left { float: left; width: 62px; height: 8px; } .msgs .bot .right { margin-left: 62px; padding-right: 8px; } .msgs .bot .right > div { height: 8px; } .msgs .mid .left { padding-left: 70px; } .msgs .mid .right { padding: 1px; } .msgs .mid .right > div { margin: -6px 2px; position: relative; z-index: 10; } .msgs .post .time { display: block; float: left; width: 65px; margin-left: -70px; font-size: 10px; text-align: center; overflow: hidden; } .msgs .post .text { display: block; font-size: 10px; overflow: hidden; } .msgs .post .text img { vertical-align: middle; } .msgs .post { clear: both; } .msgs .post + .post { margin-top: 2px; border-top-width: 1px; border-top-style: dotted; padding-top: 2px; } .msgs .post .text a:before { content: "<"; } .msgs .post .text a:after { content: ">"; } .msgs .post .text a { white-space: pre; text-decoration: none; } /* fix empty message fuckup */ .spacefuckup { display: block; clear: both; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/fff.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/fff.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/fff.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/styles/fff.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(common.css); /****** Container ******/ .container { text-shadow: #fff 0 1px 1px; } .container .msgs .bot { background: url(../images/fff/cbl33.png) no-repeat; } .container .msgs .bot .left { background: rgba(255, 255, 255, .33); } .container .msgs .bot .right > div { background: rgba(255, 255, 255, .5); } .container .msgs .bot .right { background: url(../images/fff/cbr50.png) no-repeat right; } .container .msgs .post .text a { color: #666; /* dummy */ } .container .msgs .post .text a:active, .container .msgs .post .text a:before, .container .msgs .post .text a:after { color: #000; } /****** Message ******/ .container.message .head .top { background: url(../images/fff/ctl50.png) no-repeat; } .container.message .head .top > div { background: url(../images/fff/ctr50.png) no-repeat right; } .container.message .head .top > div > div { background: rgba(255, 255, 255, .5); } .container.message .head .from { background: rgba(255, 255, 255, .5); color: #000; text-shadow: rgba(255, 255, 255, 1) 0 0 3px; } .container.message .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.message .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.message .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.message .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.message .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.message .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.message .msgs .post .time { color: rgba(0, 0, 0, .75); } .container.message .msgs .post .text { color: rgba(0, 0, 0, 1); } .container.message .msgs .post + .post { border-color: rgba(0, 0, 0, .5); } /****** Context ******/ .container.context .head .top { background: url(../images/fff/ctl50.png) no-repeat; } .container.context .head .top > div { background: url(../images/fff/ctr50.png) no-repeat right; } .container.context .head .top > div > div { background: rgba(255, 255, 255, .5); } .container.context .head .from { background: rgba(255, 255, 255, .5); color: rgba(0, 0, 0, .75); text-shadow: rgba(255, 255, 255, .75) 0 0 3px; } .container.context .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.context .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.context .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.context .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.context .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.context .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.context .msgs .post .time { color: rgba(0, 0, 0, .5); } .container.context .msgs .post .text { color: rgba(0, 0, 0, .75); } .container.context .msgs .post + .post { border-color: rgba(0, 0, 0, .5); } /****** Status ******/ .container.status .msgs .top { background: url(../images/fff/ctl33.png) no-repeat; } .container.status .msgs .top .left { background: rgba(255, 255, 255, .333); } .container.status .msgs .top .right > div { background: rgba(255, 255, 255, .5); } .container.status .msgs .top .right { background: url(../images/fff/ctr50.png) no-repeat right; } .container.status .msgs .mid .left { background: rgba(255, 255, 255, .33); } .container.status .msgs .mid .right { background: rgba(255, 255, 255, .25); } .container.status .msgs .post .time { color: rgba(0, 0, 0, .75); } .container.status .msgs .post .text { color: rgba(0, 0, 0, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Camo Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/000.css); body { background: url(../images/camo.png); } .container.message.you { background: rgba(204,102,0,.5); } .container.message.you .text a { color: #cc9900; } .container.message.me { background: rgba(102,204,0,.5); } .container.message.me .text a { color: #99cc00; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #b2b24d; } .container.status { background: rgba(153,153,0,.5); } .container.status .text a { color: #b2b200; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/dots.png); } .container.message.me { background: rgba(102, 102, 204, .5); } .container.message.me .text a { color: rgba(36, 48, 72, 1); } .container.message.you { background: rgba(102, 204, 102, .5); } .container.message.you .text a { color: rgba(36, 72, 48, 1); } .container.context { background: rgba(102, 102, 102, .5); } .container.context .text a { color: rgba(35, 61, 61, 1); } .container.status { background: rgba(102, 153, 153, .5); } .container.status .text a { color: rgba(35, 48, 48, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Dots Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/dots.png); } .container.message.you { background: rgba(102, 102, 204, .5); } .container.message.you .text a { color: rgba(36, 48, 72, 1); } .container.message.me { background: rgba(102, 204, 102, .5); } .container.message.me .text a { color: rgba(36, 72, 48, 1); } .container.context { background: rgba(102, 102, 102, .5); } .container.context .text a { color: rgba(35, 61, 61, 1); } .container.status { background: rgba(102, 153, 153, .5); } .container.status .text a { color: rgba(35, 48, 48, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/flower.png); } .container.message.me { background: rgba(255,255,153,.5); } .container.message.me .text a { color: rgba(128, 115, 77, 1); } .container.message.you { background: rgba(255,153,153,.5); } .container.message.you .text a { color: rgba(128, 88, 77, 1); } .container.context { background: rgba(255,255,255,.5); } .container.context .text a { color: rgba(128, 115, 102, 1); } .container.status { background: rgba(255,204,153,.5); } .container.status .text a { color: rgba(128, 102, 77, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Flowers Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/flower.png); } .container.message.you { background: rgba(255,255,153,.5); } .container.message.you .text a { color: rgba(128, 115, 77, 1); } .container.message.me { background: rgba(255,153,153,.5); } .container.message.me .text a { color: rgba(128, 88, 77, 1); } .container.context { background: rgba(255,255,255,.5); } .container.context .text a { color: rgba(128, 115, 102, 1); } .container.status { background: rgba(255,204,153,.5); } .container.status .text a { color: rgba(128, 102, 77, 1); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/000.css); body { background: url(../images/foam.png); } .container.message.me { background: rgba(68,102,204,.5); } .container.message.me .text a { color: #5577dd; } .container.message.you { background: rgba(34,34,34,.5); } .container.message.you .text a { color: #445588; } .container.context { background: rgba(128,128,128,.5); } .container.context .text a { color: #7384b7; } .container.status { background: rgba(51,68,119,.5); } .container.status .text a { color: #4c66b2; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Foam Gray.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/000.css); body { background: url(../images/foam.png); } .container.message.you { background: rgba(68,102,204,.5); } .container.message.you .text a { color: #5577dd; } .container.message.me { background: rgba(34,34,34,.5); } .container.message.me .text a { color: #445588; } .container.context { background: rgba(128,128,128,.5); } .container.context .text a { color: #7384b7; } .container.status { background: rgba(51,68,119,.5); } .container.status .text a { color: #4c66b2; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper Gray.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/paper.png); } .container.message.me { background: rgba(153,153,153,.5); } .container.message.you { background: rgba(255,255,255,.5); } .container.context { background: rgba(204,204,204,.5); } .container.status { background: rgba(204,204,204,.5); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Paper White.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/fff.css); body { background: url(../images/paper.png); } .container.message.you { background: rgba(153,153,153,.5); } .container.message.me { background: rgba(255,255,255,.5); } .container.context { background: rgba(204,204,204,.5); } .container.status { background: rgba(204,204,204,.5); } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Cherry.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/000.css); body { background: url(../images/wood.png); } .container.message.me { background: rgba(119,17,17,.5); } .container.message.me .text a { color: #bb5d2a; } .container.message.you { background: rgba(187,153,68,.5); } .container.message.you .text a { color: #dda144; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #cca16f; } .container.status { background: rgba(136,85,34,.5); } .container.status .text a { color: #c37f33; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Eclipse/Contents/Resources/Variants/Wood Pine.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -@import url(../styles/000.css); body { background: url(../images/wood.png); } .container.message.you { background: rgba(119,17,17,.5); } .container.message.you .text a { color: #bb5d2a; } .container.message.me { background: rgba(187,153,68,.5); } .container.message.me .text a { color: #dda144; } .container.context { background: rgba(153,153,153,.5); } .container.context .text a { color: #cca16f; } .container.status { background: rgba(136,85,34,.5); } .container.status .text a { color: #c37f33; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - GoneDark Message Style - CFBundleIdentifier - com.adiumx.gonedark.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Gone Dark - CFBundlePackageType - AdIM - DefaultFontFamily - Arial - DefaultFontSize - 11 - DefaultVariant - Cosmic - DisplayNameForNoVariant - Standard - MessageViewVersion - 4 - ShowsUserIcons - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,8 +0,0 @@ - - \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundBarBlue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundBarBlue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundBarGreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundBarGreen.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundCosmic.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundCosmic.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundCrimson.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundCrimson.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundDelaware.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundDelaware.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundHeader.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundHeader.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/background.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/background.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundLava.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundLava.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundMutation.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundMutation.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundSteel.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundSteel.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUndersea.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUndersea.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCosmic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCosmic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCrimson.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageCrimson.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageDelaware.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageDelaware.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageLava.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageLava.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageMutation.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageMutation.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImage.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImage.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageSteel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageSteel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageUndersea.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/backgroundUserImageUndersea.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/divider.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/divider.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/gloss.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/gloss.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/messageShadow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/messageShadow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/transGrey.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/images/transGrey.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ - -
-
%service%
-
%sender%
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ - -
-
%service%
-
%sender%
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
- -
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -body { - margin: 0; - padding: 0; - background: url(images/background.jpg) repeat-y center top #000 fixed; -} - -#header { - display: block; - height: 50px; - position: fixed; - top: 0; - width: 100%; - background: url(images/backgroundHeader.png) repeat-x top; - z-index: 100; -} - -#headerImage { - background: url(images/backgroundUserImage.png) no-repeat; - width: 32px; - height: 32px; - margin-left: 20px; - margin-top: 4px; - padding: 3px; - float: left; -} - -#headerChatStarted { - color: #ccc; - font: 10px "Trebuchet MS", TrebuchetMS; - float: left; - margin-left: 10px; - margin-top: 6px; -} - -#headerChatStarted h2 { - color: #86ce4c; - font-size: 19px; - font-weight: bold; - margin: 0; - padding: 0; -} - -#headerSpace { - height: 50px; -} - -.userName { - font: bold 15px "Trebuchet MS", TrebuchetMS; - margin-left: 20px; - margin-right: 20px; - margin-bottom: -3px; - /*text-shadow: 1px 0px 0px #000*/ - text-shadow: 0px -1px 5px #000; -} - -.service { - float: right; - font-size: 9px; - margin-right: 20px; - line-height: 15px; - color: #fff; - opacity: .4; - font-family: "Trebuchet MS", TrebuchetMS; -} - -.message1 .userName, .message1 .date { - color: #86ce4c; - -} - -.content { - border-top: 3px solid #86ce4c; - border-bottom: 1px solid #86ce4c; - color: #fff; - font-size: 11px; - line-height: 1.3em; - font-family: Arial, Helvetica, sans-serif; - background: url(images/transGrey.png); - word-wrap: break-word; -} - -.message1 a { - color: #b4fe2b; - text-decoration: underline; -} - -.message1 a:hover { - color: #f2fd0d; -} - -.gloss { - background: url(images/gloss.png) no-repeat center 4px; -} - -.contentText { - padding-top: 5px; - padding-bottom: 5px; - margin-right: 60px; - margin-left: 20px; - font-size: 11px; -} - -.divider { - background: url(images/divider.png) repeat-x center; - height: 2px; -} - -.shadow { - background: url(images/messageShadow.png) repeat-x top; - height: 9px; -} - -.date { - float: right; - font-size: 10px; - margin-right: 20px; - padding-top: 5px; - text-shadow: #000 1px 1px 0px; -} - -.message2 .userName, .message2 .date { - color: #42b6ff; -} - -.message2 a { - color: #42b6ff; - text-decoration: underline; -} - -.message2 a:hover { - color: #73ddfe; -} - -.message2 .content { - border-top: 3px solid #42b6ff; - border-bottom: 1px solid #42b6ff; -} - -.status { - color: #fff; - text-align: center; - margin-bottom: .3em; - opacity: .7; - font: bold 10px "Trebuchet MS", TrebuchetMS; -} - -#Chat { - overflow: hidden; - padding-top: 50px; - padding-bottom: 6px; - margin-bottom: 0px; -} - -.context { - opacity: .6; -} - -img.scaledToFitImage{ width:auto; } Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ - -
-
%service%
-
%sender%
-
-
-
%time%
-
%message%
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ - -
-
%service%
-
%sender%
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -
%message% (%time%)
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Cosmic.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundCosmic.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date { - color: #ff57ab; -} - -.message2 .userName, .message2 .date { - color: #ccc; -} - -.content { - border-top: 3px solid #ff57ab; - border-bottom: 1px solid #ff57ab; -} - -.message2 .content { - border-top: 3px solid #ccc; - border-bottom: 1px solid #ccc; -} - - -#headerChatStarted h2 { - color: #ff57ab; -} - -#headerImage { - background: url(../images/backgroundUserImageCosmic.png) no-repeat; -} - -.message1 a { - color: #ff1387; -} - -.message1 a:hover { - color: #ff67d3; -} - -.message2 a { - color: #d5d5d5; -} - -.message2 a:hover { - color: #f0f0f0; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Crimson.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundCrimson.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date, #headerChatStarted h2 { - color: #e1000b; -} - -.message2 .userName, .message2 .date { - color: #b50000; -} - -.content { - border-top: 3px solid #e1000b; - border-bottom: 1px solid #e1000b; -} - -.message2 .content { - border-top: 3px solid #b50000; - border-bottom: 1px solid #b50000; -} - -#headerImage { - background: url(../images/backgroundUserImageCrimson.png) no-repeat; -} - -.message1 a { - color: #d3000a; -} - -.message1 a:hover { - color: #f4222c; -} - -.message2 a { - color: #d0000a; -} - -.message2 a:hover { - color: #f0151f; -} - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Delaware Punch.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundDelaware.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date { - color: #b24573; -} - -.message2 .userName, .message2 .date { - color: #d2c599; -} - -.content { - border-top: 3px solid #b24573; - border-bottom: 1px solid #b24573; -} - -.message2 .content { - border-top: 3px solid #d2c599; - border-bottom: 1px solid #d2c599; -} - - -#headerChatStarted h2 { - color: #b24573; -} - -#headerImage { - background: url(../images/backgroundUserImageDelaware.png) no-repeat; -} - -.message1 a { - color: #e24d8a; -} - -.message1 a:hover { - color: #f27dac; -} - -.message2 a { - color: #ffedb3; -} - -.message2 a:hover { - color: #fff0c0; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Lava Flow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundLava.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date { - color: #edb200; -} - -.message2 .userName, .message2 .date { - color: #da2c0b; -} - -.content { - border-top: 3px solid #edb200; - border-bottom: 1px solid #edb200; -} - -.message2 .content { - border-top: 3px solid #da2c0b; - border-bottom: 1px solid #da2c0b; -} - - -#headerChatStarted h2 { - color: #edb200; -} - -#headerImage { - background: url(../images/backgroundUserImageLava.png) no-repeat; -} - -.message1 a { - color: #ffc10f; -} - -.message1 a:hover { - color: #ffd665; -} - -.message2 a { - color: #ff3f1e; -} - -.message2 a:hover { - color: #ff5b31; -} - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Mutation.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundMutation.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date { - color: #b4df00; -} - -.message2 .userName, .message2 .date { - color: #e79d10; -} - -.content { - border-top: 3px solid #b4df00; - border-bottom: 1px solid #b4df00; -} - -.message2 .content { - border-top: 3px solid #e79d10; - border-bottom: 1px solid #e79d10; -} - - -#headerChatStarted h2 { - color: #b4df00; -} - -#headerImage { - background: url(../images/backgroundUserImageMutation.png) no-repeat; -} - -.message1 a { - color: #d9ff35; -} - -.message1 a:hover { - color: #eaff87; -} - -.message2 a { - color: #ffb022; -} - -.message2 a:hover { - color: #ffc863; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Cosmic.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Cosmic.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Crimson.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Crimson.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Delaware Punch.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Delaware Punch.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Lava Flow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Lava Flow.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Mutation.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Mutation.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Standard.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('../main.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Steel.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/no gloss - Undersea.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url('Undersea.css'); - -.gloss { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundSteel.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date, #headerChatStarted h2 { - color: #568aa8; -} - -.message2 .userName, .message2 .date { - color: #aac0cd; -} - -.content { - border-top: 3px solid #568aa8; - border-bottom: 1px solid #568aa8; -} - -.message2 .content { - border-top: 3px solid #aac0cd; - border-bottom: 1px solid #aac0cd; -} - -#headerImage { - background: url(../images/backgroundUserImageSteel.png) no-repeat; -} - -.message1 a { - color: #4d85a9; -} - -.message1 a:hover { - color: #7cadcc; -} - -.message2 a { - color: #b7cad6; -} - -.message2 a:hover { - color: #c5d6e1; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/GoneDark/Contents/Resources/Variants/Undersea.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -@import url('../main.css'); - -body { - background: url(../images/backgroundUndersea.jpg) repeat-y center top #000 fixed; -} - -.message1 .userName, .message1 .date { - color: #00a1ff; -} - -.message2 .userName, .message2 .date { - color: #7fadcd; -} - -.content { - border-top: 3px solid #00a1ff; - border-bottom: 1px solid #00a1ff; -} - -.message2 .content { - border-top: 3px solid #7fadcd; - border-bottom: 1px solid #7fadcd; -} - - -#headerChatStarted h2 { - color: #00a1ff; -} - -#headerImage { - background: url(../images/backgroundUserImageUndersea.png) no-repeat; -} - -.message1 a { - color: #2fb5ff; -} - -.message1 a:hover { - color: #66e7ff; -} - -.message2 a { - color: #a3d5f7; -} - -.message2 a:hover { - color: #cfecff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - AllowTextColors - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Juice Adium Message Style - CFBundleIdentifier - com.adiumx.Juice.style - CFBundleInfoDictionaryVersion - 1.1 - CFBundleName - Juice - CFBundlePackageType - AdIM - DefaultFontFamily - Lucida Grande - DefaultFontSize - 10 - DisplayNameForNoVariant - Blueberry Oxygen - Positive - MessageViewVersion - 1 - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/defaults.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/defaults.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/defaults.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/defaults.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,13 +0,0 @@ -#top_left {display: none;} -#top_right {display: none;} -#bottom_right {display: none;} -#bottom_left {display: none;} - -#topIMG {display: none;} -#rightIMG {display: none;} -#bottomIMG {display: none;} -#leftIMG {display: none;} - -#menu2 {display: none;} - -.service {display: none;} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - - - -X - -
 
- - \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/back.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/back.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/trans.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/images/trans.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%time{%I:%M %p}%
%sender% says:

%message%

-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%time{%I:%M %p}%
%sender% said:

%message%

-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -

%message%

-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -

%message%

-
Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -@import url(defaults.css); - -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/back.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%time{%I:%M %p}%
%sender% says:

%message%

-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%time{%I:%M %p}%
%sender% said:

%message%

-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -

%message%

-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -

%message%

-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/sample.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/sample.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ - - - - - - - -
 
- - -X - - -
- -
-
Chris Egeberg :
5:36 PM

here's a long message that is just gonna go on for a while and crap like that.... WWWOOOOOOOOOOOOOOOOOOOOOOOO.

-
- -
-
Courtney Wilkinson :
5:36 PM

In my next message I will type a link...

-
-
- -
-
Chris Egeberg :
5:36 PM

Line 1

-

Line 2

-

Line 3

-

Line 4

-
- -
-
Courtney Wilkinson :
5:36 PM

This is a message history message from your buddy.

-
- -
-
Chris Egeberg :
5:36 PM

This is a message history message sent to your buddy.

-

and another old message

-
- -
-
11:37 AM :

Buddy disconnected

-
- -
-
Chris Egeberg :
5:36 PM

This is your first message after the history has been displayed.

-

You typed another message.

-
- -
-
Courtney Wilkinson :
5:36 PM

Here is a message from your buddy

-
- -
-
Chris Egeberg :
5:36 PM

here's a long message that is just gonna go on for a while and crap like that.... WWWOOOOOOOOOOOOOOOOOOOOOOOO.

-
- -
-
Courtney Wilkinson :
5:36 PM

In my next message I will type a link...

-
-
- -
-
Chris Egeberg :
5:36 PM

Line 1

-

Line 2

-

Line 3

-

Line 4

-
- -
-
11:42 PM :

Buddy disconnected

-
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/showhide.js qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/showhide.js --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/showhide.js 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/showhide.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -function handleParent(parentId) -{ - myParent = document.getElementById("menu" + parentId) - - if (myParent.style.display=="none") { - myParent.style.display="block" - } else { - myParent.style.display="none" - } -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
-
%time% :

%message%

-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Template.html qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Template.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ - - - - - - - - - - - - - -%@ -
-
-%@ - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Oxygen - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Oxygen.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backblue.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #009999; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #009999; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Blueberry Union - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Blueberry%20Union.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backblue.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Gravity - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Gravity.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgrape.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #660099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #660099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Grape Mission - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Grape%20Mission.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgrape.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #333333; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #333333; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Graphite Motion - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/backg.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgrey.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backblue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backblue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backg.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backg.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgrape.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgrape.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgrey.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgrey.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblack.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblack.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblacksoft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundblacksoft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundsoft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backgroundsoft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backlime.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backlime.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backstrawberry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backstrawberry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backtangerine.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/backtangerine.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Oxygen.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Oxygen.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Union.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Blueberry Union.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Grape Gravity.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Grape Gravity.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Grape Mission.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Grape Mission.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Lime Horizon.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Lime Horizon.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Baby.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Baby.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Parabola.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Strawberry Parabola.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Fusion.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Fusion.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Melt.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/Tangerine Melt.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/trans.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/images/trans.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #00CC00; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #00CC00; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Lime Horizon - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Lime%20Horizon.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backlime.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Baby - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Baby.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backstrawberry.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #CC0099; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #CC0099; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Strawberry Parabola - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Strawberry%20Parabola.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backstrawberry.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Fusion - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Fusion.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backtangerine.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblack.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Negative Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundblacksoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/background.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Positive Mild.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backgroundsoft.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: #FF6600; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: #FF6600; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Juice/Contents/Resources/Variants/Tangerine Melt - Themed.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -body { font-size: 10px; font-family: "Lucida Grande", sans-serif; font-style: normal; font-weight: normal; background-color: #deecff; margin: 0; background: url(images/Tangerine%20Melt.jpg) fixed no-repeat;} - -#Chat { padding-top: 50px; overflow: hidden } - -#menu1 { background: url("images/backtangerine.png") repeat-x right top; position: fixed; z-index: 100; top: 0; right: 0; left: 0; height: 135px; border-bottom: 0 none } - -.buddyIcon { margin: 4px 4px 4px 8px; width: 64px; height: 64px; float: right} - -.buddyName { color: white; font-size: 18px; text-shadow:2px 2px 4px #333; text-align: right; margin: 8px 0 2px } - -.time { color: white; font-size: 10px; text-shadow:2px 2px 4px #333; text-align: right } - -.hide { visibility: visible; padding: 5px; position: fixed; z-index: 200; top: 0; left: 0 } - -a.hide:link { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:visited { color: #C0C0C0; text-decoration: none; text-align: center; width: 18px } -a.hide:hover { color: #000000; text-decoration: none; background-color: #FFFFFF; text-align: center; width: 18px } - -.container { margin-bottom: 15px } - -.messageTime { color: #000000; font-size: 9px; font-weight: normal; text-align: right; position: relative; z-index: 60; top: 3px; right: 12%; float: right } - -p { padding: 0; margin: 0px 0px 2px 3px; overflow: hidden } - -.Message { font-style: normal; font-weight: normal; margin-bottom: - 0px; padding: 4px 6px 3px 5px; position: relative; left: 5%; width: 87%; background: url("images/trans.png") repeat-x;} - -.pastMessage { color: #999; font-style: normal; font-weight: normal; overflow: hidden } - -.statusTime { color: #666; font-size: 10px; font-weight: bold; text-align: right; margin-right: 5px; position: relative; top: 1px; left: -40px; width: 100px; float: left } - -.statusMessage { color: #333; font-size: 11px; font-weight: bold; position: relative; left: -40px } - -.statusContainer { background-color: #eef4ff; margin-bottom: 15px; padding: 3px 10px; position: relative; background: url("images/trans.png") repeat-x;} - -.buddy { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.user { font-size: 10px; font-weight: bold; text-align: left; display: block; position: relative; top: -2px; left: 6% } - -.nextMessageBuddy { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.nextMessageUser { font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden; background: url("images/trans.png") repeat-x; } - -.pastBuddy { color: #7ab382; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastUser { color: #7b95b4; font-size: 11px; font-weight: bold; text-align: left; display: block; position: relative; top: 0px; left: 6% } - -.pastNextMessageBuddy { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } - -.pastNextMessageUser { color: #999; font-style: normal; font-weight: normal; background-color: white; display: block; margin-bottom: 0px; padding: 4px 6px 3px 5px; position: relative; z-index: 10; top: 0px; left: 5%; width: 87%; overflow: hidden } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Minimal 2.0 - CFBundleIdentifier - com.adiumx.minimal_mod.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - minimal_mod - CFBundlePackageType - AdIM - DefaultFontFamily - Lucida Grande - DefaultFontSize - 10 - DefaultVariant - Black vs Red - MessageViewVersion - 4 - ShowsUserIcons - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ - \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/images/back_l+.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/images/back_l+.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -
- - %time% - - - - -
- - %sender% - - -
%message% -
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -
- - %time% - - - - -
- - %sender% - - -
%message% -
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
- - - -
- - - - - %message% - -
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
- - - -
- - - - -

%message%

-
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,223 +0,0 @@ -/* ---------------------------------------------------------------------------- - PROJECT: Adium Message Style - -FILE NAME: minimal_mod.AdiumMessageStyle - - NAME: minimal_mod - [http://caenim.com/public/minimal_mod.AdiumMessageStyle.zip] - - DESIGNER: John Muhl [http://caenim.com/] - - CREATED: 2005.04.25 [first local version] - -REVISIONS: 1.0.2005.05.03 [first public version] - new image background image [back_l.png] - changed default font to Lucida Grande - removed all existing color variants - created 67 new color variants (lots contributed by amy b.) - removed consecutive message timestamp - changed sender name to ALL CAPS - changed all colors to "web safe" - increased user icons to 36x36 px - adjusted line height in messages - adjusted line height between sender and initial message - minor adjustments to text padding in messages - - 1.1.2005.09.18 - very (VERY!) minor changes to the line height & hyperlink decoration - corrected a few errors in the variants (fixes contributed by amy b.) - - 1.2.2005.10.04 - corrected zany user icon placement throughout: - fixed problem where user icons appeared diagonally - fixed vertical alignment problems with user icons - decreased user icon size to 24x24 px - removed forceable capitalization of user names - fixed vertical alignment problem in the status message - - 1.3.2005.11.18 - added service indicator to initial time stamp - lightened the dotted line between messages - removed all reference to specific typefaces; improves compatibility with Adium and user selected fonts - more minor changes to hyperlink decoration - updated: Black vs ... color variants - updated: Blue vs ... color variants - updated: Green vs ... color variants - updated: Grey vs ... color variants - updated: Orange vs ... color variants - updated: Pink vs ... color variants - updated: Purple vs ... color variants - updated: Red vs ... color variants - updated: White vs ... color variants - updated: Yellow vs ... color variants - added a "Conversation started at ... " header - - 1.4.2006.06.06 - fixed problem with six digit time stamps - removed a bunch of cruft; thanks to Catfish_Man for the catch - - TODO: wait for new issues to arise via users or personal use. - update for user with XtrasManager [currently does not work with message styles]. - hyperlink decoration tweaks [?]. - - BASED ON: Minimal Adium Message Style [default package 0.8 b12 version] - check http://www.adiumxtras.com/index.php?a=xtras&xtra_id=1576 for full credits ----------------------------------------------------------------------------*/ -body -{ - color: #333333; - background-color: #ffffff; - background-image: url("images/back_l.png"); - margin: 0; - background-repeat: repeat-y; - line-height: 1.4em; -} - -p -{ - margin: 0; - padding: 0; -} - -a { - border-bottom: 1px dashed; - text-decoration: none; } -a:hover{ - border-bottom: 1px solid; -} - -.convo_container -{ - width: 100%; - padding-bottom: 6px; -} - -.container -{ - padding-top: 4px; - border-top: 1px dotted #ccc; -} - -.container_next { padding-top: 2px; } - -.container, .container_next -{ - padding-left: 16px; - padding-right: 8px; - padding-bottom: 0px; - margin-left: 0px; - padding-bottom: 5px; -} - -.fromstatus -{ - float: left; - padding-right: 7px; - position: relative; - top: 2px; -} - -.next_label -{ - font-size: 16px; - font-family: Helvetica; - font-weight: normal; - position: relative; - top: 0px; - left: -12px; - text-align: right; - width: 10px; - float: left; - margin-right: -10px; -} - -.sender { text-align: left; } - -.sender, .fromstatus -{ - font-size: 11px; - font-family: Helvetica; - font-weight: bold; -} - -.sender, .next_label { overflow: hidden; } - -.time_initial -{ - color: #9F9F9F; - float: right; - text-align: right; - padding-left: 6px; - font-size: 9px; - font-family: Helvetica; -} - -.message { - overflow: auto; -} -.context_message { color: #999; } - -.message, .context_message -{ - width: auto; - text-align: left; -} - -.indent { text-indent: 12px; } -.clear { clear: both; } - -.buddyicon img -{ - float: left; - margin-top: 2px; - margin-right: 6px; - width: 24px; - height: 24px; - border-color: #CCCCCC; - border-width: 1px; -} - -.buddyicon img[src="Incoming/buddy_icon.png"], .buddyicon img[src="Outgoing/buddy_icon.png"] { display: none; } - -.placeholder { - margin-left: 30px; -} - -.placeholder[visible="Incoming/buddy_icon.png"], .placeholder[visible="Outgoing/buddy_icon.png"] { - margin-left: 0; -} - -.placeholder_next { - margin-left: 30px; -} - -.placeholder_next[visible="Incoming/buddy_icon.png"], .placeholder_next[visible="Outgoing/buddy_icon.png"] { - margin-left: 0; -} - -img -{ - vertical-align: middle; - top: -3px; -} - -#Chat { overflow: hidden; } - -img.scaledToFitImage{ width:auto; } - -#header{ - position: fixed; - top: 0px; - left: 0px; - right: 0px; - margin: 0; - padding: 5px; - overflow: auto; - color: white; - font-family: sans-serif; - text-align: center; - font-size: 10px; - background: rgba(0,0,0,.85); - z-index: 999; -} \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -
- - %time% - - - - -
- - %sender% - - -
%message% -
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,18 +0,0 @@ -
- - %time% - - - - -
- - %sender% - - -
%message% -
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
- - - -
- - - - - %message% - -
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
- - - -
- - - - -

%message%

-
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -
- - %time% - - - %message% - - -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #0090ff; } -.outgoing { color: #333333; } -.status { color: #0090ff; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #0090ff; } -.outgoing_link a { color: #000000; } -.status_link a { color: #0090ff; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #333333; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #000000; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #333333; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #000000; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff7800; } -.outgoing { color: #333333; } -.status { color: #ff7800; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff7800; } -.outgoing_link a { color: #000000; } -.status_link a { color: #ff7800; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #ff3280; } .outgoing { color: #333333; } .status { color: #ff3280; } .greyed { color: #CCCCCC; } .incoming_link a { color: #ff3280; } .outgoing_link a { color: #000000; } .status_link a { color: #ff3280; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Black vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #333333; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #000000; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #0090ff; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #0090ff; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #0090ff; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #0090ff; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff7800; } -.outgoing { color: #0090ff; } -.status { color: #ff7800; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff7800; } -.outgoing_link a { color: #0090ff; } -.status_link a { color: #ff7800; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Blue vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #0090ff; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #0090ff; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #6abb00; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #6abb00; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff7800; } -.outgoing { color: #6abb00; } -.status { color: #ff7800; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff7800; } -.outgoing_link a { color: #6abb00; } -.status_link a { color: #ff7800; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Green vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #6abb00; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #6abb00; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #707070; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #707070; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff7800; } -.outgoing { color: #707070; } -.status { color: #ff7800; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff7800; } -.outgoing_link a { color: #707070; } -.status_link a { color: #ff7800; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Grey vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #707070; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #707070; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #ff7800; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff7800; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #ff7800; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #ff7800; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Orange vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #ff7800; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #ff7800; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #0090ff; } -.outgoing { color: #ff3280; } -.status { color: #0090ff; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #0090ff; } -.outgoing_link a { color: #ff3280; } -.status_link a { color: #0090ff; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #ff3280; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff3280; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #ff3280; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #ff3280; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #ff7800; } .outgoing { color: #ff3280; } .status { color: #ff7800; } .greyed { color: #CCCCCC; } .incoming_link a { color: #ff7800; } .outgoing_link a { color: #ff3280; } .status_link a { color: #ff7800; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Pink vs Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff0c00; } -.outgoing { color: #ff3280; } -.status { color: #ff0c00; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff0c00; } -.outgoing_link a { color: #ff3280; } -.status_link a { color: #ff0c00; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -.incoming { color: #6abb00; } .outgoing { color: #ff0c00; } .status { color: #6abb00; } .greyed { color: #CCCCCC; } .incoming_link a { color: #6abb00; } .outgoing_link a { color: #ff0c00; } .status_link a { color: #6abb00; } .greyed_link a { color: #999999; } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #707070; } -.outgoing { color: #ff0c00; } -.status { color: #707070; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #707070; } -.outgoing_link a { color: #ff0c00; } -.status_link a { color: #707070; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/minimal/Contents/Resources/Variants/Red vs Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.incoming { color: #ff7800; } -.outgoing { color: #ff0c00; } -.status { color: #ff7800; } -.greyed { color: #CCCCCC; } - -.incoming_link a { color: #ff7800; } -.outgoing_link a { color: #ff0c00; } -.status_link a { color: #ff7800; } -.greyed_link a { color: #999999; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Mockie Adium Message Style - CFBundleIdentifier - com.adiumx.mockie.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Mockie - CFBundlePackageType - AdIM - MessageViewVersion - 4 - DefaultFontFamily - Lucida Grande - DefaultFontSize - 11 - DefaultVariant - Brown - Icon Left - ShowsUserIcons:Brown - Icon Hidden - - ShowsUserIcons:Indigo - Icon Hidden - - ShowsUserIcons:Orange - Icon Hidden - - ShowsUserIcons:Red - Icon Hidden - - DefaultBackgroundColor - eef3eb - DefaultBackgroundColor:Brown - Icon Alternate - eef3eb - DefaultBackgroundColor:Brown - Icon Hidden - eef3eb - DefaultBackgroundColor:Brown - Icon Right - eef3eb - DefaultBackgroundColor:Indigo - Icon Alternate - f8f0f0 - DefaultBackgroundColor:Indigo - Icon Hidden - f8f0f0 - DefaultBackgroundColor:Indigo - Icon Left - f8f0f0 - DefaultBackgroundColor:Indigo - Icon Right - f8f0f0 - DefaultBackgroundColor:Orange - Icon Alternate - f2fbee - DefaultBackgroundColor:Orange - Icon Hidden - f2fbee - DefaultBackgroundColor:Orange - Icon Left - f2fbee - DefaultBackgroundColor:Orange - Icon Right - f2fbee - DefaultBackgroundColor:Red - Icon Alternate - fff4f4 - DefaultBackgroundColor:Red - Icon Hidden - fff4f4 - DefaultBackgroundColor:Red - Icon Left - fff4f4 - DefaultBackgroundColor:Red - Icon Right - fff4f4 - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/blue/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/blue/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/blue/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/blue/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/brown/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/brown/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/brown/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/brown/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/context/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/context/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/context/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/context/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/green/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/green/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/green/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/green/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/indigo/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/indigo/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/indigo/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/indigo/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/maroon/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/maroon/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/maroon/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/maroon/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/olive/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/olive/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/olive/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/olive/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/orange/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/orange/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/orange/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/orange/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/red/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/red/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/red/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/images/red/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- -
-
-
- %sender% -
-
%service%
-
-
%time%
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -
-
- -
-
-
-
- %sender% -
-
%service%
-
-
%time%
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(styles/layout.css); -@import url(styles/basestyle.css); Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- -
-
-
- %sender% -
-
%service%
-
-
%time%
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ -
-
- -
-
-
-
- %sender% -
-
%service%
-
-
%time%
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
-
%message%
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/sample.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/sample.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ - - - - - - - - - - - - - -
-
-
- -
-
-
-
- Colin the Great -
-
AIM
-
-
10:24:14

Testing context messages!

-
10:24:14

Not much

-
-
-
-
-
- -
-
-
-
- Jorge Salvador Caffarena (eevyl@mac.com) testing very long wassup -
-
AIM
-
-
10:24:14

more test

-
-
-
-
- -
-
-
- Colin the Great -
-
AIM
-
-
10:24:14

Ahoy!

-
-
-
-
- Pepito has gone offline - - 10:23 - -
-
-
-
- Colin has returned from idle - - 10:23 - -
-
-
-
- -
-
-
- Jorge Salvador Caffarena (eevyl@mac.com) testing very long wassup -
-
AIM
-
-
10:23:22

That is what happens when a long url is inserted, magic scroller

-
10:23:22

Not much http://www.apple.com/long/url/as/it/can/be/whatever/longer/than/anything/

-
-
-
-
-
- -
-
-
- Colin the Great -
-
AIM
-
-
10:23:22

Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Aenean quam lectus, tristique sit amet, luctus ut, euismod ut, velit. Quisque vulputate tortor nec justo. Suspendisse pede. Curabitur ac enim ac nunc porta bibendum. Ut vel dolor id orci tempus semper. Sed pretium enim eget nulla. Vestibulum mollis, tortor at accumsan luctus, dolor nulla aliquam elit, nec vehicula augue erat sit amet leo. Sed ornare est. Maecenas facilisis, erat quis varius vehicula, nibh lorem tempor quam, vel egestas massa wisi viverra orci. Etiam rutrum erat nec est. Donec facilisis, ligula nec venenatis interdum, mi wisi dapibus nulla, eu consectetuer libero justo id lectus. Sed vitae ipsum vitae lectus tincidunt malesuada. Nulla congue erat. Mauris auctor, neque ut pellentesque placerat, metus augue aliquam risus, vitae elementum diam ante a lectus. Etiam dignissim scelerisque lectus. Vivamus libero metus, ullamcorper sit amet, bibendum a, pretium quis, leo. Vivamus vel elit.

-
10:23:22

Not much

-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- %message% - %time% -
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/basestyle.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/basestyle.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/basestyle.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/basestyle.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -body { - top: -10px; -} - -.incoming { - color: black; -} - -.outgoing { - color: black; -} - -.sender { - color: white; - font-weight: bold; - font-size: 11px; -} - -.mask { - background-color: rgba(128,128,128,0.2); -} - -.protocol { - color: rgba(255,255,255,0.5); - font-weight: bold; - font-size: 11px; -} - -.time { - font-weight: normal; -} - -.status_container { - color: black; -} - -.bottomdivider { - border-bottom: 1px solid #BEBEBE; -} - -a, a:link { - text-decoration: none; -} - -.context .message { - background: rgba(255,255,255,0.6); - color: rgba(0,0,0,0.6); -} - -.context .time_consecutive, .context .time_initial { - color: rgba(0,0,0,0.6); -} - -.context .time_consecutive + div { - border-top: 1px solid rgba(0,0,0,0.2); -} - -.context .buddyicon { - background: rgba(0,0,0,0.2); -} - -.context .topleft { - background: no-repeat url(../images/context/topleft.png); -} - -.context .sender { - background: rgba(0,0,0,0.2); -} - -.context .protocol -{ - background: no-repeat url(../images/context/topright.png) right; -} - -.context + .actual { - border-top: 4px solid rgba(0,0,0,0.2); - padding-top: 5px; -} - -img.scaledToFitImage{ width:auto; } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_brown_olive.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -body { - background-color: #eef3eb; -} - -.incoming .buddyicon { - background: rgba(178,125,75,0.2); -} - -.incoming .topleft { - background: url(../images/brown/topleft.png) no-repeat; -} - -.incoming .sender { - background: #b27d4b; -} - -.incoming .protocol -{ - background: no-repeat url(../images/brown/topright.png) right; -} - -.incoming .time_consecutive, .incoming .time_initial { - color: #b27d4b; -} - -.incoming .message -{ - background: rgba(226,219,203,0.9); -} - -.incoming .time_consecutive + div { - border-top: 1px solid rgba(178,125,75,0.4); -} - -.incoming a:hover -{ - background: #b27d4b; - color: white; -} - -.outgoing .buddyicon { - background: rgba(116,157,95,0.2); -} - -.outgoing .topleft { - background: no-repeat url(../images/olive/topleft.png); -} - -.outgoing .sender { - background: #749d5f; -} - -.outgoing .protocol -{ - background: no-repeat url(../images/olive/topright.png) right; -} - -.outgoing .time_consecutive, .outgoing .time_initial { - color: #749d5f; -} - -.outgoing .message { - background: rgba(213,225,207,0.9); -} - -.outgoing .time_consecutive + div { - border-top: 1px solid rgba(116,157,95,0.4); -} - -.outgoing a:hover { - background: #749d5f; - color: white; -} - -.status_container { - background-color: rgba(238,245,235,0.8); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_indigo_maroon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -body { - background-color: #f8f0f0; -} - -#curtain { - background-color: rgba(255,255,255,0.8); -} - -.incoming .buddyicon { - background: rgba(75,93,178,0.2); -} - -.incoming .topleft { - background: no-repeat url(../images/indigo/topleft.png); -} - -.incoming .sender { - background: #4b5db2; -} - -.incoming .protocol -{ - background: no-repeat url(../images/indigo/topright.png) right; -} - -.incoming .time_consecutive, .incoming .time_initial { - color: #4b5db2; -} - -.incoming .message -{ - background: rgba(213,211,228,0.9); -} - -.incoming .time_consecutive + div { - border-top: 1px solid rgba(75,93,178,0.4); -} - -.incoming a:hover -{ - background: #4b5db2; - color: white; -} - -.outgoing .buddyicon { - background: rgba(177,74,75,0.2); -} - -.outgoing .topleft { - background: no-repeat url(../images/maroon/topleft.png); -} - -.outgoing .sender { - background: #b14a4b; -} - -.outgoing .protocol -{ - background: no-repeat url(../images/maroon/topright.png) right; -} - -.outgoing .time_consecutive, .outgoing .time_initial { - color: #b14a4b; -} - -.outgoing .message { - background: rgba(233,207,207,0.9); -} - -.outgoing .time_consecutive + div { - border-top: 1px solid rgba(177,74,75,0.4); -} - -.outgoing a:hover { - background: #b14a4b; - color: white; -} - -.status_container { - background: rgba(248,240,240,0.8); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_orange_green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -body { - background-color: #f2fbee; -} - -#curtain { - background-color: rgba(255,255,255,0.8); -} - -.incoming .buddyicon { - background: rgba(255,124,0,0.2); -} - -.incoming .topleft { - background: no-repeat url(../images/orange/topleft.png); -} - -.incoming .sender { - background: #FF7C00; -} - -.incoming .protocol -{ - background: no-repeat url(../images/orange/topright.png) right; -} - -.incoming .time_consecutive, .incoming .time_initial { - color: #FF7C00; -} - -.incoming .message { - background: rgba(244,225,190,0.9); -} - -.incoming .time_consecutive + div { - border-top: 1px solid rgba(255,124,0,0.4); -} - -.incoming a:hover { - background: #FF7C00; - color: white; -} - -.outgoing .buddyicon { - background: rgba(102,204,50,0.2); -} - -.outgoing .topleft { - background: no-repeat url(../images/green/topleft.png); -} - -.outgoing .sender { - background: #66CC32; -} - -.outgoing .protocol -{ - background: no-repeat url(../images/green/topright.png) right; -} - -.outgoing .time_consecutive, .outgoing .time_initial { - color: #66CC32; -} - -.outgoing .message -{ - background: rgba(213,241,200,0.9); -} - -.outgoing .time_consecutive + div { - border-top: 1px solid rgba(102,204,50,0.4); -} - -.outgoing a:hover -{ - background: #66CC32; - color: white; -} - -.status_container { - background-color: rgba(242,251,238,0.8); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/colors_red_blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -body { - background-color: #fff4f4; -} - -#curtain { - background-color: rgba(255,255,255,0.8); -} - -.incoming .buddyicon { - background: rgba(0,45,255,0.2); -} - -.incoming .topleft { - background: no-repeat url(../images/blue/topleft.png); -} - -.incoming .sender { - background: #002CFF; -} - -.incoming .protocol -{ - background: no-repeat url(../images/blue/topright.png) right; -} - -.incoming .time_consecutive, .incoming .time_initial { - color: #002cff; -} - -.incoming .message -{ - background: rgba(204,204,246,0.9); -} - -.incoming .time_consecutive + div { - border-top: 1px solid rgba(0,45,255,0.4); -} - -.incoming a:hover -{ - background: #002CFF; - color: white; -} - -.outgoing .buddyicon { - background: rgba(255,0,1,0.2); -} - -.outgoing .topleft { - background: no-repeat url(../images/red/topleft.png); -} - -.outgoing .sender { - background: #FF0001; -} - -.outgoing .protocol -{ - background: no-repeat url(../images/red/topright.png) right; -} - -.outgoing .time_consecutive, .outgoing .time_initial { - color: #FF0001; -} - -.outgoing .message { - background: rgba(255,195,195,0.9); -} - -.outgoing .time_consecutive + div { - border-top: 1px solid rgba(255,0,1,0.4); -} - -.outgoing a:hover { - background: #FF0001; - color: white; -} - -.status_container { - background: rgba(255,244,244,0.8); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_alternate.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -.incoming .buddyicon { - float: right; - margin: 0px 0px 5px 5px; -} - -.outgoing .buddyicon { - float: left; - margin: 0px 5px 5px 0px; -} - -.incoming .mask { - float: right; - margin-right: -37px; -} - -.outgoing .mask { - float: left; - margin-left: -37px; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -.buddyicon { - display: none; -} - -.mask { - display: none; -} - -p { - padding-right: 1px; -} - -.sender { - padding-right: 41px; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.buddyicon { - float: left; - margin: 0px 5px 5px 0px; -} - -.mask { - float: left; - margin-left: -37px; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/icon_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -.buddyicon { - float: right; - margin: 0px 0px 5px 5px; -} - -.mask { - float: right; - margin-right: -37px; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/layout.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/layout.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/layout.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/styles/layout.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -body { - margin: 0px 0px 0px 0px; -} - -#Chat { - overflow: hidden; - padding: 0px 10px 0px 10px; -} - -.incoming { - margin-top: 5px; - margin-bottom: 5px; - clear: both; -} - -.outgoing { - margin-top: 5px; - margin-bottom: 5px; - clear: both; -} - -.topleft { - height: 14px; - float: left; - width: 4px; -} - -.sender { - height: 14px; - margin-right: 4px; - overflow: hidden; - padding-right: 30px; -} - -.buddyicon { - display: block; - width: 32px; - height: 32px; - padding: 0px; - text-align: center; -} - -.mask { - width: 32px; - height: 32px; - padding: 0px; -} - -.protocol { - float: right; - position: relative; - height: 14px; - top: -14px; - padding-right: 4px; - right: 0px; - margin-bottom: -14px; - word-wrap: normal; -} - -.time_initial, .time_consecutive { - float: right; - padding-top: 2px; - padding-bottom: 2px; - padding-right: 4px; -} - -.message { - overflow: auto; - margin: 0; - padding: 0; -} -.message-next{ -} - -.text { - padding: 2px 4px; -} - -.status_container { - padding-left: 5px; - padding-right: 5px; - clear: both; - margin-bottom: 5px; -} - -.status_container + .status_container { - margin-top: -5px; - padding-top: 5px; -} - -.status_time { - float: right; - margin: 2px 2px 0 2px; -} - -.bottomdivider { - width: 100%; - position: fixed; - bottom: 0px; - margin: 0px; - padding: 0px; - left: 0px; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_brown_olive.css); -@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_brown_olive.css); -@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_brown_olive.css); -@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Brown - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_brown_olive.css); -@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_indigo_maroon.css); -@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_indigo_maroon.css); -@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_indigo_maroon.css); -@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Indigo - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_indigo_maroon.css); -@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_orange_green.css); -@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_orange_green.css); -@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_orange_green.css); -@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Orange - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_orange_green.css); -@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Alternate.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_red_blue.css); -@import url(../styles/icon_alternate.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_red_blue.css); -@import url(../styles/icon_hidden.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_red_blue.css); -@import url(../styles/icon_left.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Mockie/Contents/Resources/Variants/Red - Icon Right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url(../styles/colors_red_blue.css); -@import url(../styles/icon_right.css); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Modern Bubbling Adium Message Style - CFBundleIdentifier - com.adiumx.modern.bubbling.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Modern Bubbling - CFBundlePackageType - AdIM - DefaultBackgroundColor - FFFFFF - DefaultFontFamily - Helvetica - DefaultFontSize - 11 - DefaultVariant - Glass (Glass) - DisableCustomBackground - - MessageViewVersion - 3 - ShowsUserIcons - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ - - \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/bg.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/bg.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/bg-white.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/bg-white.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-aqua/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-blue/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-cyan/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-graphite/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-green/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-grey/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-lime/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-orange/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-pink/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-purple/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-red/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/glass-yellow/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/glass.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/glass.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/tiger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/tiger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-hide.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/_headers/toggle-show.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/modern/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright-arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright-arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/middle.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/middle.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/topleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/topleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/topright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/images/white/topright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/javascripts/reflection.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -/** - * reflection.js v1.6 - * - * Contributors: Cow http://cow.neondragon.net - * Gfx http://www.jroller.com/page/gfx/ - * Sitharus http://www.sitharus.com - * Andreas Linde http://www.andreaslinde.de - * Tralala, coder @ http://www.vbulletin.org - * - * Freely distributable under MIT-style license. - */ - -/* From prototype.js */ -document.getElementsByClassName = function(className) { - var children = document.getElementsByTagName('*') || document.all; - var elements = new Array(); - - for (var i = 0; i < children.length; i++) { - var child = children[i]; - var classNames = child.className.split(' '); - for (var j = 0; j < classNames.length; j++) { - if (classNames[j] == className) { - elements.push(child); - break; - } - } - } - return elements; -} - -var Reflection = { - defaultHeight : 0.45, - defaultOpacity: 0.4, - - add: function(image, options) { - Reflection.remove(image); - - doptions = { "height" : Reflection.defaultHeight, "opacity" : Reflection.defaultOpacity } - if (options) { - for (var i in doptions) { - if (!options[i]) { - options[i] = doptions[i]; - } - } - } else { - options = doptions; - } - - try { - var d = document.createElement('div'); - var p = image; - - var classes = p.className.split(' '); - var newClasses = ''; - for (j=0;j= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); -} - -var intervall_scroll; - -function scrollToBottom() -{ - //document.body.scrollTop = (document.body.scrollHeight-window.innerHeight); - //return; - if ( intervall_scroll ) clearInterval( intervall_scroll ); - intervall_scroll = setInterval( function() { - var target_scroll = (document.body.scrollHeight-window.innerHeight); - var scrolldiff = target_scroll - document.body.scrollTop; - if ( document.body.scrollTop != target_scroll ) { - var saved_scroll = document.body.scrollTop; - document.body.scrollTop += scrolldiff / 5 + ( scrolldiff >= 0 ? (scrolldiff != 0 ) : -1 ); - } else { - saved_scroll = -1; - clearInterval( intervall_scroll ); - } - } , 10 ); - return; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ - -/* - - Modern Bubbling v0.9.2 beta - an Adium Message Style - - Created by Jim Myhrberg (jim@zhuoqe.org). - http://zhuoqe.org/blog/category/modern-bubbling/ - -*/ - - -/* import default header style sheet */ -@import url("styles/_headers/_default.css"); - - -BODY { - background: #fff url("images/bg.jpg") bottom repeat-x; - color: #303030; - /*font-family: helvetica;*/ - /*font-size: 11px;*/ - margin-left: 10px; - margin-right: 10px; -} - -#Chat { - overflow: hidden; - padding-top: 5px; - padding-bottom: 12px; -} -.emoticon { - border-style: none; - position: relative; - margin: -3px 0px -5px 0px; -} - - -.history { - color: #b3b3b3; -} - -.status { - color: #c7c7c7; - font-family: helvetica, sans-serif; - font-size: 10px; - margin: 4px 0px 0px 0px; - text-align: center; - cursor: default; -} -.status .stime { - font-size: 9px; - /*visibility: hidden;*/ -} -/* -.status:hover .stime { - visibility: visible; -} -*/ - -/* @group message */ - -.message { - position: relative; - min-height: 42px; -} -.message .body { - padding: 9px 20px 22px 20px; - /*word-wrap: break-word;*/ - /*text-shadow: #ccc 0px 1px 1px;*/ - overflow: auto; -} -.message .time { - font-size: 9px; - position: absolute; - bottom: -2px; - text-align: center; - width: 100%; - color: #c7c7c7; - visibility: hidden; -} -.message:hover .time { - visibility: visible; -} - -.message .topleft { - background: url("images/modern/topleft.png") top left no-repeat; - width: 24px; - height: 14px; - position: absolute; - top: 0px; - left: 0px; - z-index: -1; -} -.message .top { - background: url("images/modern/top.png") top right repeat-x; - height: 14px; - position: absolute; - top: 0px; - right: 24px; - left: 24px; - z-index: -1; -} -.message .topright { - background: url("images/modern/topright.png") top right no-repeat; - width: 24px; - height: 16px; - position: absolute; - top: 0px; - right: 0px; - z-index: -1; -} -.message .left { - background: url("images/modern/left.png") top left repeat-y; - width: 24px; - position: absolute; - left: 0px; - top: 14px; - bottom: 29px; - z-index: -1; -} -.message .middle { - background: url("images/modern/middle.png") top left repeat; - position: absolute; - left: 24px; - right: 24px; - top: 14px; - bottom: 29px; - z-index: -1; -} -.message .right { - background: url("images/modern/right.png") top right repeat-y; - width: 24px; - position: absolute; - right: 0px; - top: 14px; - bottom: 29px; - z-index: -1; -} -.message .bottomleft { - background: url("images/modern/bottomleft.png") bottom left no-repeat; - width: 24px; - height: 29px; - position: absolute; - bottom: 0px; - left: 0px; - z-index: -1; -} -.message .bottom { - background: url("images/modern/bottom.png") bottom right repeat-x; - height: 29px; - position: absolute; - bottom: 0px; - right: 24px; - left: 24px; - z-index: -1; -} -.message .bottomright { - background: url("images/modern/bottomright.png") bottom right no-repeat; - width: 24px; - height: 29px; - position: absolute; - bottom: 0px; - right: 0px; - z-index: -1; -} - -.compact { - padding: 9px 20px 22px 20px; -} -.compact .cbody, .compact .cnbody { - position: relative; - word-wrap: break-word; -} -.compact .cnbody { - border-top: 1px dotted #ededed; - padding-top: 3px; - margin-top: 3px; -} -.compact .ctime { - font-size: 9px; - position: absolute; - width: 40px; - top: 3px; - color: #c7c7c7; - white-space: nowrap; - visibility: hidden; -} -.compact .cnbody .ctime { - top: 5px; -} -.compact .cbody:hover .ctime, .compact .cnbody:hover .ctime { - visibility: visible; -} - -/* @end */ - - - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ - -
-
-
%sender%
-
%service%
-
-
-
-
-
-
%time%
-
%message%
-
-
-
-
-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%message%
-
%time%
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_default.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ - - -/* @group outgoing */ - -.outgoing { - float: right; - margin: 8px 0px 0px 38px; - position: relative; -} - -.outgoing .sender { - position: absolute; - right: 0px; - bottom: 11px; - width: 32px; - height: 32px; -} -.outgoing .icon { - -} -.outgoing .name { - font-size: 9px; - position: absolute; - right: 0px; - bottom: -14px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #6e6e6e; -} -.outgoing .sender:hover .name { - visibility: visible; -} -.outgoing .service { - font-size: 9px; - position: absolute; - right: 0px; - bottom: 34px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #c7c7c7; -} -.outgoing .sender:hover .service { - visibility: visible; -} -.outgoing .message { - margin-right: 38px; -} -.outgoing .message .bottomright { - background-image: url("../../images/modern/bottomright-arrow.png"); -} -.outgoing .compact .ctime { - left: -58px; - text-align: right; -} - -/* @end */ - - - -/* @group incoming */ - -.incoming { - float: left; - margin: 8px 38px 0px 0px; - position: relative; -} - -.incoming .sender { - position: absolute; - left: 0px; - bottom: 11px; - width: 32px; - height: 32px; -} -.incoming .icon { - -} -.incoming .name { - font-size: 9px; - position: absolute; - left: 0px; - bottom: -14px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #6e6e6e; -} -.incoming .sender:hover .name { - visibility: visible; -} -.incoming .service { - font-size: 9px; - position: absolute; - left: 0px; - bottom: 34px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #c7c7c7; -} -.incoming .sender:hover .service { - visibility: visible; -} -.incoming .message { - margin-left: 38px; -} -.incoming .message .bottomleft { - background-image: url("../../images/modern/bottomleft-arrow.png"); -} -.incoming .compact .ctime { - right: -58px; - text-align: left; -} - -/* @end */ - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/* import the glass header */ -@import url("../_headers/glass.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-aqua.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #586bb1; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-aqua/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #9ca0c0; -} -.incoming .message .topleft { - background: url("../../images/glass-aqua/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-aqua/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-aqua/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-aqua/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-aqua/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-aqua/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #586bb1; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-blue/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #9ca0c0; -} -.incoming .message .topleft { - background: url("../../images/glass-blue/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-blue/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-blue/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-blue/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-blue/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-blue/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-cyan.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #92c9c9; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #5beffc; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-cyan/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #a1e2e7; -} -.incoming .message .topleft { - background: url("../../images/glass-cyan/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-cyan/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-cyan/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-cyan/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-cyan/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-cyan/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group incoming */ - -.incoming .compact .cnbody { - border-top: 1px dotted #e5e5e5; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .topleft { - background: url("../../images/glass/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #757b8e; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-graphite/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c9cbd6; -} -.incoming .message .topleft { - background: url("../../images/glass-graphite/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-graphite/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-graphite/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-graphite/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-graphite/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-graphite/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #5db158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-green/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #89c582; -} -.incoming .message .topleft { - background: url("../../images/glass-green/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-green/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-green/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-green/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-green/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-green/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-green/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group incoming */ - -.incoming .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-grey/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .topleft { - background: url("../../images/glass-grey/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-grey/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-grey/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-grey/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-grey/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-grey/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #68c662; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-lime/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #aed18d; -} -.incoming .message .topleft { - background: url("../../images/glass-lime/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-lime/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-lime/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-lime/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-lime/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-lime/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b19158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #edc276; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-orange/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c6af7f; -} -.incoming .message .topleft { - background: url("../../images/glass-orange/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-orange/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-orange/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-orange/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-orange/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-orange/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b1799d; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #efa3d4; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-pink/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #dcc3dc; -} -.incoming .message .topleft { - background: url("../../images/glass-pink/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-pink/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-pink/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-pink/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-pink/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-pink/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #92569f; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #df83f2; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-purple/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c0a4c6; -} -.incoming .message .topleft { - background: url("../../images/glass-purple/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-purple/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-purple/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-purple/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-purple/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-purple/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #9f5657; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #f28385; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-red/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c5a3a4; -} -.incoming .message .topleft { - background: url("../../images/glass-red/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-red/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-red/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-red/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-red/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-red/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-red/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-in-yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b19158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #ffef00; -} - -.incoming .message .bottomleft { - background-image: url("../../images/glass-yellow/bottomleft-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c6af7f; -} -.incoming .message .topleft { - background: url("../../images/glass-yellow/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-yellow/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-yellow/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-yellow/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-yellow/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-yellow/right.png") top right repeat-y; -} -/*.incoming .message .bottomleft { - background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; -}*/ -.incoming .message .bottom { - background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; -} -.incoming .message .bottomright { - background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-aqua.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #586bb1; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-aqua/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #9ca0c0; -} -.outgoing .message .topleft { - background: url("../../images/glass-aqua/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-aqua/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-aqua/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-aqua/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-aqua/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-aqua/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #586bb1; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-blue/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #9ca0c0; -} -.outgoing .message .topleft { - background: url("../../images/glass-blue/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-blue/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-blue/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-blue/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-blue/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-blue/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-cyan.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #92c9c9; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #5beffc; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-cyan/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #a1e2e7; -} -.outgoing .message .topleft { - background: url("../../images/glass-cyan/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-cyan/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-cyan/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-cyan/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-cyan/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-cyan/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group outgoing */ - -.outgoing .compact .cnbody { - border-top: 1px dotted #e5e5e5; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .topleft { - background: url("../../images/glass/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #757b8e; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-graphite/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c9cbd6; -} -.outgoing .message .topleft { - background: url("../../images/glass-graphite/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-graphite/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-graphite/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-graphite/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-graphite/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-graphite/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #5db158; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-green/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #89c582; -} -.outgoing .message .topleft { - background: url("../../images/glass-green/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-green/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-green/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-green/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-green/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-green/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-green/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group outgoing */ - -.outgoing .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-grey/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .topleft { - background: url("../../images/glass-grey/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-grey/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-grey/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-grey/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-grey/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-grey/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #68c662; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-lime/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #aed18d; -} -.outgoing .message .topleft { - background: url("../../images/glass-lime/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-lime/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-lime/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-lime/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-lime/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-lime/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b19158; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #edc276; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-orange/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c6af7f; -} -.outgoing .message .topleft { - background: url("../../images/glass-orange/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-orange/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-orange/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-orange/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-orange/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-orange/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b1799d; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #efa3d4; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-pink/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #dcc3dc; -} -.outgoing .message .topleft { - background: url("../../images/glass-pink/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-pink/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-pink/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-pink/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-pink/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-pink/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #92569f; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #df83f2; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-purple/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c0a4c6; -} -.outgoing .message .topleft { - background: url("../../images/glass-purple/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-purple/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-purple/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-purple/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-purple/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-purple/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #9f5657; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #f28385; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-red/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c5a3a4; -} -.outgoing .message .topleft { - background: url("../../images/glass-red/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-red/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-red/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-red/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-red/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-red/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-red/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/glass-out-yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b19158; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #ffef00; -} - -.outgoing .message .bottomright { - background-image: url("../../images/glass-yellow/bottomright-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c6af7f; -} -.outgoing .message .topleft { - background: url("../../images/glass-yellow/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-yellow/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-yellow/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-yellow/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-yellow/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-yellow/right.png") top right repeat-y; -} -.outgoing .message .bottomleft { - background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; -} -.outgoing .message .bottom { - background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; -} -/*.outgoing .message .bottomright { - background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white-bubbling.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - -BODY { - background: #fff url("../../images/bg-white.jpg") top center repeat-y; -} - - -.message .topleft { - background: url("../../images/white/topleft.png") top left no-repeat; -} -.message .top { - background: url("../../images/white/top.png") top right repeat-x; -} -.message .topright { - background: url("../../images/white/topright.png") top right no-repeat; -} -.message .left { - background: url("../../images/white/left.png") top left repeat-y; -} -.message .middle { - background: url("../../images/white/middle.png") top left repeat; -} -.message .right { - background: url("../../images/white/right.png") top right repeat-y; -} -.message .bottomleft { - background: url("../../images/white/bottomleft.png") top left no-repeat; - height: 17px; - bottom: 12px; -} -.message .bottom { - background: url("../../images/white/bottom.png") top right repeat-x; - height: 17px; - bottom: 12px; -} -.message .bottomright { - background: url("../../images/white/bottomright.png") top right no-repeat; - height: 17px; - bottom: 12px; -} - - -.incoming .message .bottomleft { - background-image: url("../../images/white/bottomleft-arrow.png"); -} - -.outgoing .message .bottomright { - background-image: url("../../images/white/bottomright-arrow.png"); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/alternative/_white.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ - -.message .topleft { - background: url("../../images/white/topleft.png") top left no-repeat; -} -.message .top { - background: url("../../images/white/top.png") top right repeat-x; -} -.message .topright { - background: url("../../images/white/topright.png") top right no-repeat; -} -.message .left { - background: url("../../images/white/left.png") top left repeat-y; -} -.message .middle { - background: url("../../images/white/middle.png") top left repeat; -} -.message .right { - background: url("../../images/white/right.png") top right repeat-y; -} -.message .bottomleft { - background: url("../../images/white/bottomleft.png") bottom left no-repeat; -} -.message .bottom { - background: url("../../images/white/bottom.png") bottom right repeat-x; -} -.message .bottomright { - background: url("../../images/white/bottomright.png") bottom right no-repeat; -} - - -.incoming .message .bottomleft { - background-image: url("../../images/white/bottomleft-arrow.png"); -} - -.outgoing .message .bottomright { - background-image: url("../../images/white/bottomright-arrow.png"); -} - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/_default.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* @group header */ - -#header { - color: #FFF; - cursor: default; - font-family: helvetica, sans-serif; - overflow: hidden; - position: fixed; - top: 0px; - left: 0px; - z-index: 5; - width: 100%; - height: 49px; - text-shadow: #1f4971 0px 1px 2px; -} -#header_bar { - background: url("../../images/_headers/tiger.png") repeat-x top center; - width: 100%; - height: 49px; -} - -#header_bar .left { - font-size: 21px; - /*letter-spacing: 1px;*/ - position: fixed; - top: 8px; - left: 11px; -} -#header_bar .right { - font-size: 16px; - letter-spacing: 0px; - position: fixed; - top: 11px; - right: 10px; -} - - -/* @group toggle */ - -#toggle_hide { - cursor: pointer; - background: url("../../images/_headers/toggle-hide.png") no-repeat top left; - position: fixed; - top: 3px; - left: 3px; - width: 14px; - height: 10px; - visibility: hidden; - z-index: 6; -} - -#header:hover #toggle_hide { - visibility: visible; -} - -#header #toggle_hide:hover { - background-image: url("../../images/_headers/toggle-hide-hover.png"); -} - -#toggle_show { - cursor: pointer; - background: url("../../images/_headers/toggle-show.png") no-repeat top left; - position: fixed; - top: 3px; - left: 3px; - width: 14px; - height: 10px; - z-index: 6; -} - -#header #toggle_show:hover { - background-image: url("../../images/_headers/toggle-show-hover.png"); -} - -/* @end */ - - -/* @end */ - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/_headers/glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* @group header */ - -#header { - height: 40px; - text-shadow: #505050 0px 1px 2px; -} - -#header_bar { - background-image: url("../../images/_headers/glass.png"); - height: 40px; -} - -#header_bar .left { - font-size: 16px; - letter-spacing: 0px; - top: 6px; - left: 10px; -} - -#header_bar .right { - font-size: 14px; - letter-spacing: 0px; - top: 7px; - right: 10px; -} - -/* @end */ - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_default.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ - - -/* @group outgoing */ - -.outgoing { - float: left; - margin: 8px 38px 0px 0px; - position: relative; -} - -.outgoing .sender { - position: absolute; - left: 0px; - bottom: 11px; - width: 32px; - height: 32px; -} -.outgoing .icon { - -} -.outgoing .name { - font-size: 9px; - position: absolute; - left: 0px; - bottom: -14px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #6e6e6e; -} -.outgoing .sender:hover .name { - visibility: visible; -} -.outgoing .service { - font-size: 9px; - position: absolute; - left: 0px; - bottom: 34px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #c7c7c7; -} -.outgoing .sender:hover .service { - visibility: visible; -} -.outgoing .message { - margin-left: 38px; -} -.outgoing .message .bottomleft { - background-image: url("../../images/modern/bottomleft-arrow.png"); -} -.outgoing .compact .ctime { - right: -58px; - text-align: left; -} - -/* @end */ - - - -/* @group incoming */ - -.incoming { - float: right; - margin: 8px 0px 0px 38px; - position: relative; -} - -.incoming .sender { - position: absolute; - right: 0px; - bottom: 11px; - width: 32px; - height: 32px; -} -.incoming .icon { - -} -.incoming .name { - font-size: 9px; - position: absolute; - right: 0px; - bottom: -14px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #6e6e6e; -} -.incoming .sender:hover .name { - visibility: visible; -} -.incoming .service { - font-size: 9px; - position: absolute; - right: 0px; - bottom: 34px; - min-width: 32px; - text-align: center; - visibility: hidden; - white-space: nowrap; - color: #c7c7c7; -} -.incoming .sender:hover .service { - visibility: visible; -} -.incoming .message { - margin-right: 38px; -} -.incoming .message .bottomright { - background-image: url("../../images/modern/bottomright-arrow.png"); -} -.incoming .compact .ctime { - left: -58px; - text-align: right; -} - -/* @end */ - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -/* import the glass header */ -@import url("../_headers/glass.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-aqua.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #586bb1; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-aqua/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #9ca0c0; -} -.incoming .message .topleft { - background: url("../../images/glass-aqua/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-aqua/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-aqua/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-aqua/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-aqua/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-aqua/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #586bb1; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-blue/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #9ca0c0; -} -.incoming .message .topleft { - background: url("../../images/glass-blue/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-blue/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-blue/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-blue/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-blue/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-blue/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-cyan.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #92c9c9; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #5beffc; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-cyan/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #a1e2e7; -} -.incoming .message .topleft { - background: url("../../images/glass-cyan/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-cyan/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-cyan/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-cyan/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-cyan/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-cyan/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group incoming */ - -.incoming .compact .cnbody { - border-top: 1px dotted #e5e5e5; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .topleft { - background: url("../../images/glass/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #757b8e; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-graphite/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c9cbd6; -} -.incoming .message .topleft { - background: url("../../images/glass-graphite/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-graphite/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-graphite/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-graphite/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-graphite/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-graphite/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #5db158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-green/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #89c582; -} -.incoming .message .topleft { - background: url("../../images/glass-green/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-green/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-green/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-green/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-green/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-green/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-green/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group incoming */ - -.incoming .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-grey/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .topleft { - background: url("../../images/glass-grey/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-grey/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-grey/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-grey/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-grey/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-grey/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #68c662; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-lime/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #aed18d; -} -.incoming .message .topleft { - background: url("../../images/glass-lime/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-lime/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-lime/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-lime/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-lime/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-lime/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b19158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #edc276; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-orange/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c6af7f; -} -.incoming .message .topleft { - background: url("../../images/glass-orange/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-orange/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-orange/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-orange/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-orange/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-orange/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b1799d; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #efa3d4; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-pink/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #dcc3dc; -} -.incoming .message .topleft { - background: url("../../images/glass-pink/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-pink/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-pink/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-pink/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-pink/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-pink/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #92569f; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #df83f2; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-purple/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c0a4c6; -} -.incoming .message .topleft { - background: url("../../images/glass-purple/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-purple/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-purple/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-purple/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-purple/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-purple/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #9f5657; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #f28385; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-red/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c5a3a4; -} -.incoming .message .topleft { - background: url("../../images/glass-red/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-red/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-red/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-red/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-red/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-red/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-red/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-in-yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group incoming */ - -.incoming .history { - color: #b19158; -} - -.incoming .compact .cnbody { - border-top: 1px dotted #ffef00; -} - -.incoming .message .bottomright { - background-image: url("../../images/glass-yellow/bottomright-arrow.png"); -} - -/* @group message */ - -.incoming .message .time { - color: #c6af7f; -} -.incoming .message .topleft { - background: url("../../images/glass-yellow/topleft.png") top left no-repeat; -} -.incoming .message .top { - background: url("../../images/glass-yellow/top.png") top right repeat-x; -} -.incoming .message .topright { - background: url("../../images/glass-yellow/topright.png") top right no-repeat; -} -.incoming .message .left { - background: url("../../images/glass-yellow/left.png") top left repeat-y; -} -.incoming .message .middle { - background: url("../../images/glass-yellow/middle.png") top left repeat; -} -.incoming .message .right { - background: url("../../images/glass-yellow/right.png") top right repeat-y; -} -.incoming .message .bottomleft { - background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; -} -.incoming .message .bottom { - background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; -} -/*.incoming .message .bottomright { - background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; -}*/ - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-aqua.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #586bb1; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-aqua/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #9ca0c0; -} -.outgoing .message .topleft { - background: url("../../images/glass-aqua/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-aqua/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-aqua/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-aqua/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-aqua/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-aqua/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-aqua/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-aqua/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-aqua/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #586bb1; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #8cb4ff; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-blue/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #9ca0c0; -} -.outgoing .message .topleft { - background: url("../../images/glass-blue/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-blue/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-blue/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-blue/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-blue/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-blue/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-blue/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-blue/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-blue/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-cyan.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #92c9c9; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #5beffc; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-cyan/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #a1e2e7; -} -.outgoing .message .topleft { - background: url("../../images/glass-cyan/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-cyan/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-cyan/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-cyan/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-cyan/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-cyan/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-cyan/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-cyan/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-cyan/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group outgoing */ - -.outgoing .compact .cnbody { - border-top: 1px dotted #e5e5e5; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .topleft { - background: url("../../images/glass/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-graphite.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #757b8e; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-graphite/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c9cbd6; -} -.outgoing .message .topleft { - background: url("../../images/glass-graphite/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-graphite/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-graphite/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-graphite/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-graphite/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-graphite/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-graphite/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-graphite/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-graphite/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #5db158; -} -.outgoing .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-green/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #89c582; -} -.outgoing .message .topleft { - background: url("../../images/glass-green/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-green/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-green/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-green/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-green/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-green/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-green/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-green/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-green/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ - -/* @group outgoing */ - -.outgoing .compact .cnbody { - border-top: 1px dotted #d1d1d1; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-grey/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .topleft { - background: url("../../images/glass-grey/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-grey/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-grey/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-grey/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-grey/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-grey/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-grey/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-grey/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-grey/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-lime.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #68c662; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #77e770; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-lime/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #aed18d; -} -.outgoing .message .topleft { - background: url("../../images/glass-lime/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-lime/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-lime/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-lime/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-lime/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-lime/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-lime/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-lime/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-lime/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b19158; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #edc276; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-orange/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c6af7f; -} -.outgoing .message .topleft { - background: url("../../images/glass-orange/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-orange/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-orange/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-orange/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-orange/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-orange/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-orange/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-orange/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-orange/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-pink.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b1799d; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #efa3d4; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-pink/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #dcc3dc; -} -.outgoing .message .topleft { - background: url("../../images/glass-pink/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-pink/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-pink/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-pink/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-pink/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-pink/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-pink/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-pink/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-pink/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-purple.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #92569f; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #df83f2; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-purple/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c0a4c6; -} -.outgoing .message .topleft { - background: url("../../images/glass-purple/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-purple/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-purple/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-purple/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-purple/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-purple/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-purple/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-purple/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-purple/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #9f5657; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #f28385; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-red/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c5a3a4; -} -.outgoing .message .topleft { - background: url("../../images/glass-red/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-red/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-red/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-red/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-red/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-red/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-red/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-red/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-red/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/glass-out-yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ - -/* @group outgoing */ - -.outgoing .history { - color: #b19158; -} - -.outgoing .compact .cnbody { - border-top: 1px dotted #ffef00; -} - -.outgoing .message .bottomleft { - background-image: url("../../images/glass-yellow/bottomleft-arrow.png"); -} - -/* @group message */ - -.outgoing .message .time { - color: #c6af7f; -} -.outgoing .message .topleft { - background: url("../../images/glass-yellow/topleft.png") top left no-repeat; -} -.outgoing .message .top { - background: url("../../images/glass-yellow/top.png") top right repeat-x; -} -.outgoing .message .topright { - background: url("../../images/glass-yellow/topright.png") top right no-repeat; -} -.outgoing .message .left { - background: url("../../images/glass-yellow/left.png") top left repeat-y; -} -.outgoing .message .middle { - background: url("../../images/glass-yellow/middle.png") top left repeat; -} -.outgoing .message .right { - background: url("../../images/glass-yellow/right.png") top right repeat-y; -} -/*.outgoing .message .bottomleft { - background: url("../../images/glass-yellow/bottomleft.png") bottom left no-repeat; -}*/ -.outgoing .message .bottom { - background: url("../../images/glass-yellow/bottom.png") bottom right repeat-x; -} -.outgoing .message .bottomright { - background: url("../../images/glass-yellow/bottomright.png") bottom right no-repeat; -} - -/* @end */ - -/* @end */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white-bubbling.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - -BODY { - background: #fff url("../../images/bg-white.jpg") top center repeat-y; -} - - -.message .topleft { - background: url("../../images/white/topleft.png") top left no-repeat; -} -.message .top { - background: url("../../images/white/top.png") top right repeat-x; -} -.message .topright { - background: url("../../images/white/topright.png") top right no-repeat; -} -.message .left { - background: url("../../images/white/left.png") top left repeat-y; -} -.message .middle { - background: url("../../images/white/middle.png") top left repeat; -} -.message .right { - background: url("../../images/white/right.png") top right repeat-y; -} -.message .bottomleft { - background: url("../../images/white/bottomleft.png") top left no-repeat; - height: 17px; - bottom: 12px; -} -.message .bottom { - background: url("../../images/white/bottom.png") top right repeat-x; - height: 17px; - bottom: 12px; -} -.message .bottomright { - background: url("../../images/white/bottomright.png") top right no-repeat; - height: 17px; - bottom: 12px; -} - - -.incoming .message .bottomright { - background-image: url("../../images/white/bottomright-arrow.png"); -} - -.outgoing .message .bottomleft { - background-image: url("../../images/white/bottomleft-arrow.png"); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/styles/normal/_white.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ - -.message .topleft { - background: url("../../images/white/topleft.png") top left no-repeat; -} -.message .top { - background: url("../../images/white/top.png") top right repeat-x; -} -.message .topright { - background: url("../../images/white/topright.png") top right no-repeat; -} -.message .left { - background: url("../../images/white/left.png") top left repeat-y; -} -.message .middle { - background: url("../../images/white/middle.png") top left repeat; -} -.message .right { - background: url("../../images/white/right.png") top right repeat-y; -} -.message .bottomleft { - background: url("../../images/white/bottomleft.png") bottom left no-repeat; -} -.message .bottom { - background: url("../../images/white/bottom.png") bottom right repeat-x; -} -.message .bottomright { - background: url("../../images/white/bottomright.png") bottom right no-repeat; -} - - -.incoming .message .bottomright { - background-image: url("../../images/white/bottomright-arrow.png"); -} - -.outgoing .message .bottomleft { - background-image: url("../../images/white/bottomleft-arrow.png"); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Aqua & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-aqua.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Blue & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-blue.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Cyan & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-cyan.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Graphite) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Orange).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Purple).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Glass & Yellow).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-glass.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Aqua).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Blue).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Cyan).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Glass) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Green) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Grey).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Lime).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Orange) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Pink).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Purple) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Red).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Graphite & Yellow) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-graphite.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Graphite) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Orange).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Purple).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Green & Yellow).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-green.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Grey & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-grey.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Lime & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-lime.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Glass).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Graphite) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Green).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Purple).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Orange & Yellow).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-orange.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Graphite).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Pink & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-pink.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Glass).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Graphite) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Green).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Orange).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Purple & Yellow).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-purple.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Graphite).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Red & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-red.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Glass).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Graphite) 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Green).cs 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Orange).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Purple).c 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Glass (Yellow & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); -@import url("../styles/alternative/_glass.css"); - -@import url("../styles/alternative/glass-out-yellow.css"); -@import url("../styles/alternative/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative Modern.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White Bubbling.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); - -@import url("../styles/alternative/_white-bubbling.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Alternative White.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url("../main.css"); -@import url("../styles/alternative/_default.css"); - -@import url("../styles/alternative/_white.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Aqua & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-aqua.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Blue & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-blue.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Cyan & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-cyan.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Glass & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-glass.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Graphite & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-graphite.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Green & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-green.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Grey & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-grey.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Lime & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-lime.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Orange & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-orange.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Pink & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-pink.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Purple & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-purple.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Red & Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-red.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Aqua).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-aqua.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Blue).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-blue.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-yellow.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Cyan).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-cyan.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Glass).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-glass.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Graphite).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-graphite.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Green).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-green.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Grey).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-grey.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Lime).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-lime.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Orange).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-orange.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Pink).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-pink.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Purple).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-purple.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Glass (Yellow & Red).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); -@import url("../styles/normal/_glass.css"); - -@import url("../styles/normal/glass-out-yellow.css"); -@import url("../styles/normal/glass-in-red.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/Modern.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White Bubbling.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); - -@import url("../styles/normal/_white-bubbling.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Modern Bubbling/Contents/Resources/Variants/White.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -@import url("../main.css"); -@import url("../styles/normal/_default.css"); - -@import url("../styles/normal/_white.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - AllowTextColors - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Renkoo Message Style - CFBundleIdentifier - com.adiumx.renkoo.style - CFBundleInfoDictionaryVersion - 1.2 - CFBundleName - Renkoo - CFBundlePackageType - AdIM - DefaultBackgroundColor - ffffff - DefaultFontFamily - Lucida Grande - DefaultFontSize - 13 - MessageViewVersion - 4 - DisableCombineConsecutive - - - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -.outgoingItem .avatar { - float:right; -} - -.outgoingItem .indicator { - float:right; - position:relative; - left:11px; - top:8px; -} - -.myBubble { - margin-right:40px; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Demo.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Demo.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Demo.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Demo.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - - - - - - - - -
-
- - - - -
- %sender% -
-
- - - - - - - - - - - - - -
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. -
Torrey @ 4:55 am
-
-
- testing 1 -
%sender% @ %time%
-
-
-
- testing 123 -
%sender% @ %time%
-
-
-
- testing 123testing 123testing 123testing 123 - testing 123testing 123 -
%sender% @ %time%
-
-
-
-
-
- -
- - - - -
- %sender% -
-
- - - - - - - - - - - - - -
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquam sapien. Aliquam sed erat eu leo bibendum egestas. Praesent mauris. Quisque eget eros et neque scelerisque convallis. Phasellus orci. Pellentesque interdum tellus a erat. venenatis tristique. -
Torrey @ 4:55 am
-
-
-
-
- -
- - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
-
%chatName%
-
Conversation began %timeOpened%
-
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/alert.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/alert.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/blueIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/DummyContact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/DummyContact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/greenIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/redIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/silverBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/silverBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/silverCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/silverCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelHeading.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelHeading.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/steelIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/typing-left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/typing-left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/typing-right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/typing-right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowBackground.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowBackground.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowBackground.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowBackground.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowCurves.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowCurves.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowCurves.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowCurves.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowHeading.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowHeading.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator2.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator2.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicatorAlt.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicatorAlt.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowIndicator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowTL.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowTL.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowTR.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/images/yellowTR.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -
-
-
- - %message% -
%time%
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- - %message% -
%time%
-
- Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,292 +0,0 @@ -* { - word-wrap: break-word; - word-break:break-word; -} - -#header1 { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - margin: 0; - padding: 10px; - overflow: auto; - color: white; - font-family: Lucida Grande; - text-align: center; - font-size: 10px; - font-weight: regular; - background: rgba(0,0,0,.65); - z-index: 999; -} - -#heading { - position: fixed; - top: 0px; - left: 0px; - margin: 0; - padding: 5px; - font-weight: regular; - background-color:#fbfbed; - z-index: 999; - width:100%; - height:45px; - border-bottom:2px solid #d5d5d5; - background:url("images/steelHeading.jpg") repeat-x top left; - -} - -#heading .conversationIncomingIcon { - position:absolute; - left:5px; - top:5px; -} - -#heading .conversationIncomingIcon img { - width:48px; - height:48px; -} - -#heading .conversationWith { - position:relative; - left:60px; - margin:5px 0 0 0; - font: bold 16px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; - overflow:hide; -} - -#heading .conversationTime { - position:relative; - left:60px; - color:#6d6d6d; - font: bold 10px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; -} - -body { - margin-top: 65px; - background-color: white; - color: black; -} - -.status_container { - font: 10px Myriad, Lucida Grande, Arial; -} - - -body { -} - -.followUp { - clear:right; - height:1px; - font-size:1px; - line-height:1px; - margin:4px 0 4px 0; -} - -.chatItem { - opacity:0.96; -} - -.tableBubble { - width:100%; -} - -.tableBubble .tl { - height:8px; -} - -.tableBubble .tr { - width:8px; - height:8px; -} - -.message { - padding:0 1em 0 1.25em; - word-wrap: break-word; -} - -.tableBubble .message { - font-size:11px; -} - -.tableBubble .message img { - vertical-align:middle; -} - -.tableBubble .messageRight { - width:1px; -} - -.tableBubble .bl { - height:10px; -} - -.tableBubble .br { - width:8px; - height:10px; -} - -.tableBubble .timeStamp { - margin:2px; - margin-left:7px; - text-align:right; - float:right; -} - -.myBubble .indicator { - position:absolute; - top:8px; - left:0; - width:13px; - height:11px; -} - -.myBubble { - position:relative; - padding-left:10px; - margin-left:33px; - margin-right:10px; -} - -.chatItem .avatar { - width:26px; - height:26px; - float:left; -} - -/****** STatus ******/ - -.statusMessage { - opacity:0.8; - color:#676767; -} - -.statusMessage .myBubble .indicator { - background:url("images/steelIndicator.png") no-repeat top left; -} - -.statusMessage .tableBubble .tl { - background:url("images/steelCurves.png") no-repeat top left; -} - -.statusMessage .tableBubble .tr { - background:url("images/steelCurves.png") no-repeat top right; -} - -.statusMessage .tableBubble .head { - background:url("images/steelCurves.png") no-repeat -10px 0; -} - -.statusMessage .tableBubble .message { - background:url("images/steelBackground.png") repeat-y top left; -} - -.statusMessage .tableBubble .messageRight { - background:url("images/steelBackground.png") repeat-y top right; -} - -.statusMessage .tableBubble .bl { - background:url("images/steelCurves.png") no-repeat bottom left; -} - -.statusMessage .tableBubble .br { - background:url("images/steelCurves.png") no-repeat bottom right; -} - -.statusMessage .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - -.statusMessage .timeStamp { - color:#676767; -} - - -/*incoming */ - -.incomingItem .myBubble .indicator { - background:url("images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - -.incomingItem .timeStamp { - color:#bdb410; -} - -/* outgoing */ - - -.outgoingItem .myBubble .indicator { - background:url("images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - -.outgoingItem .timeStamp { - color:#9ecf35; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/noname.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/noname.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/noname.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/noname.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.name { - display:none; -} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- - %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -
-
-
- %message% -
%time%
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -
-
- %message% -
%time%
-
- Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/outgoing_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/outgoing_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -
- - - - -
-
- - - - - - - - - - - - - -
- %message% -
%time%
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Template.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Template.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,436 +0,0 @@ - - - - - - - - - - - - - - - - - - - - -%@ -
-
-%@ -
- - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - -/*incoming */ - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Blue on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Green on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Red on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Steel on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkoo/Contents/Resources/Variants/Yellow on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Renkoo LICENSE.txt qutecom-2.2+dfsg1/wengophone/resources/chat/Renkoo LICENSE.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Renkoo LICENSE.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Renkoo LICENSE.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -The images, css and html is dual licensed under the BSD and AFL license. -The source files for the bubbles can be found at http://www.itorrey.com/adiumx/ - -The fading javascript is not covered in this license. The code is fadomatic and is covered under its own license as set by its author. - -BSD LICENSE -Copyright (c) 2007, Torrey Rice/Renkoo63 All rights reserved. Redistribution and use in source and binary forms, with or without modification, are permitted provided that the following conditions are met: * Redistributions of source code must retain the above copyright notice, this list of conditions and the following disclaimer. * Redistributions in binary form must reproduce the above copyright notice, this list of conditions and the following disclaimer in the documentation and/or other materials provided with the distribution. * Neither the name of the Torrey Rice and Renkoo nor the names of its contributors may be used to endorse or promote products derived from this software without specific prior written permission. THIS SOFTWARE IS PROVIDED BY THE COPYRIGHT HOLDERS AND CONTRIBUTORS "AS IS" AND ANY EXPRESS OR IMPLIED WARRANTIES, INCLUDING, BUT NOT LIMITED TO, THE IMPLIED WARRANTIES OF MERCHANTABILITY AND FITNESS FOR A PARTICULAR PURPOSE ARE DISCLAIMED. IN NO EVENT SHALL THE COPYRIGHT OWNER OR CONTRIBUTORS BE LIABLE FOR ANY DIRECT, INDIRECT, INCIDENTAL, SPECIAL, EXEMPLARY, OR CONSEQUENTIAL DAMAGES (INCLUDING, BUT NOT LIMITED TO, PROCUREMENT OF SUBSTITUTE GOODS OR SERVICES; LOSS OF USE, DATA, OR PROFITS; OR BUSINESS INTERRUPTION) HOWEVER CAUSED AND ON ANY THEORY OF LIABILITY, WHETHER IN CONTRACT, STRICT LIABILITY, OR TORT (INCLUDING NEGLIGENCE OR OTHERWISE) ARISING IN ANY WAY OUT OF THE USE OF THIS SOFTWARE, EVEN IF ADVISED OF THE POSSIBILITY OF SUCH DAMAGE. - -Renkoo is a service mark of Renkoo, Inc. - -http://www.opensource.org/licenses/bsd-license.php - - - -# Larry Rosen has ceased to use or recommend any version # of the Academic Free License below version 2.1 The Academic Free License v. 2.1 This Academic Free License (the "License") applies to any original work of authorship (the "Original Work") whose owner (the "Licensor") has placed the following notice immediately following the copyright notice for the Original Work: Licensed under the Academic Free License version 2.1 1) Grant of Copyright License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license to do the following: a) to reproduce the Original Work in copies; b) to prepare derivative works ("Derivative Works") based upon the Original Work; c) to distribute copies of the Original Work and Derivative Works to the public; d) to perform the Original Work publicly; and e) to display the Original Work publicly. 2) Grant of Patent License. Licensor hereby grants You a world-wide, royalty-free, non-exclusive, perpetual, sublicenseable license, under patent claims owned or controlled by the Licensor that are embodied in the Original Work as furnished by the Licensor, to make, use, sell and offer for sale the Original Work and Derivative Works. 3) Grant of Source Code License. The term "Source Code" means the preferred form of the Original Work for making modifications to it and all available documentation describing how to modify the Original Work. Licensor hereby agrees to provide a machine-readable copy of the Source Code of the Original Work along with each copy of the Original Work that Licensor distributes. Licensor reserves the right to satisfy this obligation by placing a machine-readable copy of the Source Code in an information repository reasonably calculated to permit inexpensive and convenient access by You for as long as Licensor continues to distribute the Original Work, and by publishing the address of that information repository in a notice immediately following the copyright notice that applies to the Original Work. 4) Exclusions From License Grant. Neither the names of Licensor, nor the names of any contributors to the Original Work, nor any of their trademarks or service marks, may be used to endorse or promote products derived from this Original Work without express prior written permission of the Licensor. Nothing in this License shall be deemed to grant any rights to trademarks, copyrights, patents, trade secrets or any other intellectual property of Licensor except as expressly stated herein. No patent license is granted to make, use, sell or offer to sell embodiments of any patent claims other than the licensed claims defined in Section 2. No right is granted to the trademarks of Licensor even if such marks are included in the Original Work. Nothing in this License shall be interpreted to prohibit Licensor from licensing under different terms from this License any Original Work that Licensor otherwise would have a right to license. 5) This section intentionally omitted. 6) Attribution Rights. You must retain, in the Source Code of any Derivative Works that You create, all copyright, patent or trademark notices from the Source Code of the Original Work, as well as any notices of licensing and any descriptive text identified therein as an "Attribution Notice." You must cause the Source Code for any Derivative Works that You create to carry a prominent Attribution Notice reasonably calculated to inform recipients that You have modified the Original Work. 7) Warranty of Provenance and Disclaimer of Warranty. Licensor warrants that the copyright in and to the Original Work and the patent rights granted herein by Licensor are owned by the Licensor or are sublicensed to You under the terms of this License with the permission of the contributor(s) of those copyrights and patent rights. Except as expressly stated in the immediately proceeding sentence, the Original Work is provided under this License on an "AS IS" BASIS and WITHOUT WARRANTY, either express or implied, including, without limitation, the warranties of NON-INFRINGEMENT, MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. THE ENTIRE RISK AS TO THE QUALITY OF THE ORIGINAL WORK IS WITH YOU. This DISCLAIMER OF WARRANTY constitutes an essential part of this License. No license to Original Work is granted hereunder except under this disclaimer. 8) Limitation of Liability. Under no circumstances and under no legal theory, whether in tort (including negligence), contract, or otherwise, shall the Licensor be liable to any person for any direct, indirect, special, incidental, or consequential damages of any character arising as a result of this License or the use of the Original Work including, without limitation, damages for loss of goodwill, work stoppage, computer failure or malfunction, or any and all other commercial damages or losses. This limitation of liability shall not apply to liability for death or personal injury resulting from Licensor's negligence to the extent applicable law prohibits such limitation. Some jurisdictions do not allow the exclusion or limitation of incidental or consequential damages, so this exclusion and limitation may not apply to You. 9) Acceptance and Termination. If You distribute copies of the Original Work or a Derivative Work, You must make a reasonable effort under the circumstances to obtain the express assent of recipients to the terms of this License. Nothing else but this License (or another written agreement between Licensor and You) grants You permission to create Derivative Works based upon the Original Work or to exercise any of the rights granted in Section 1 herein, and any attempt to do so except under the terms of this License (or another written agreement between Licensor and You) is expressly prohibited by U.S. copyright law, the equivalent laws of other countries, and by international treaty. Therefore, by exercising any of the rights granted to You in Section 1 herein, You indicate Your acceptance of this License and all of its terms and conditions. 10) Termination for Patent Action. This License shall terminate automatically and You may no longer exercise any of the rights granted to You by this License as of the date You commence an action, including a cross-claim or counterclaim, against Licensor or any licensee alleging that the Original Work infringes a patent. This termination provision shall not apply for an action alleging patent infringement by combinations of the Original Work with other software or hardware. 11) Jurisdiction, Venue and Governing Law. Any action or suit relating to this License may be brought only in the courts of a jurisdiction wherein the Licensor resides or in which Licensor conducts its primary business, and under the laws of that jurisdiction excluding its conflict-of-law provisions. The application of the United Nations Convention on Contracts for the International Sale of Goods is expressly excluded. Any use of the Original Work outside the scope of this License or after its termination shall be subject to the requirements and penalties of the U.S. Copyright Act, 17 U.S.C. 030003 101 et seq., the equivalent laws of other countries, and international treaty. This section shall survive the termination of this License. 12) Attorneys Fees. In any action to enforce the terms of this License or seeking damages relating thereto, the prevailing party shall be entitled to recover its costs and expenses, including, without limitation, reasonable attorneys' fees and costs incurred in connection with such action, including any appeal of such action. This section shall survive the termination of this License. 13) Miscellaneous. This License represents the complete agreement concerning the subject matter hereof. If any provision of this License is held to be unenforceable, such provision shall be reformed only to the extent necessary to make it enforceable. 14) Definition of "You" in This License. "You" throughout this License, whether in upper or lower case, means an individual or a legal entity exercising rights under, and complying with all of the terms of, this License. For legal entities, "You" includes any entity that controls, is controlled by, or is under common control with you. For purposes of this definition, "control" means (i) the power, direct or indirect, to cause the direction or management of such entity, whether by contract or otherwise, or (ii) ownership of fifty percent (50%) or more of the outstanding shares, or (iii) beneficial ownership of such entity. 15) Right to Use. You may use the Original Work in all ways not otherwise restricted or conditioned by this License or by law, and Licensor promises not to interfere with or be responsible for such uses by You. This license is Copyright (C) 2003-2004 Lawrence E. Rosen. All rights reserved. Permission is hereby granted to copy and distribute this license without modification. This license may not be modified without the express written permission of its copyright owner. \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - AllowTextColors - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Renkoo Naked Message Style - CFBundleIdentifier - com.adiumx.renkooNaked.style - CFBundleInfoDictionaryVersion - 1.2 - CFBundleName - Renkoo Naked - CFBundlePackageType - AdIM - DefaultBackgroundColor - ffffff - DefaultFontFamily - Lucida Grande - DefaultFontSize - 13 - MessageViewVersion - 4 - DisableCombineConsecutive - - - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -.outgoingItem .avatar { - float:right; -} - -.outgoingItem .indicator { - float:right; - position:relative; - left:11px; - top:8px; -} - -.myBubble { - margin-right:40px; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Demo.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Demo.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Demo.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Demo.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - - - - - - - - -
-
- - - - -
- %sender% -
-
- - - - - - - - - - - - - -
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. -
Torrey @ 4:55 am
-
-
- testing 1 -
%sender% @ %time%
-
-
-
- testing 123 -
%sender% @ %time%
-
-
-
- testing 123testing 123testing 123testing 123 - testing 123testing 123 -
%sender% @ %time%
-
-
-
-
-
- -
- - - - -
- %sender% -
-
- - - - - - - - - - - - - -
- Lorem ipsum dolor sit amet, consectetuer adipiscing elit. Maecenas aliquam sapien. Aliquam sed erat eu leo bibendum egestas. Praesent mauris. Quisque eget eros et neque scelerisque convallis. Phasellus orci. Pellentesque interdum tellus a erat. venenatis tristique. -
Torrey @ 4:55 am
-
-
-
-
- -
- - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
-
%chatName%
-
Conversation began %timeOpened%
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -
-
-
- - %message% -
%time%
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- - %message% -
%time%
-
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,292 +0,0 @@ -* { - word-wrap: break-word; - word-break:break-word; -} - -#header1 { - position: fixed; - top: 0px; - left: 0px; - right: 0px; - margin: 0; - padding: 10px; - overflow: auto; - color: white; - font-family: Lucida Grande; - text-align: center; - font-size: 10px; - font-weight: regular; - background: rgba(0,0,0,.65); - z-index: 999; -} - -#heading { - position: fixed; - top: 0px; - left: 0px; - margin: 0; - padding: 5px; - font-weight: regular; - background-color:#fbfbed; - z-index: 999; - width:100%; - height:45px; - border-bottom:2px solid #d5d5d5; - background:url("images/steelHeading.jpg") repeat-x top left; - -} - -#heading .conversationIncomingIcon { - position:absolute; - left:5px; - top:5px; -} - -#heading .conversationIncomingIcon img { - width:48px; - height:48px; -} - -#heading .conversationWith { - position:relative; - left:60px; - margin:5px 0 0 0; - font: bold 16px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; - overflow:hide; -} - -#heading .conversationTime { - position:relative; - left:60px; - color:#6d6d6d; - font: bold 10px Myriad Pro, Myriad, Lucida Grande, Trebuchet MS, Arial; -} - -body { - margin-top: 65px; - background-color: white; - color: black; -} - -.status_container { - font: 10px Myriad, Lucida Grande, Arial; -} - - -body { -} - -.followUp { - clear:right; - height:1px; - font-size:1px; - line-height:1px; - margin:4px 0 4px 0; -} - -.chatItem { - opacity:0.96; -} - -.tableBubble { - width:100%; -} - -.tableBubble .tl { - height:8px; -} - -.tableBubble .tr { - width:8px; - height:8px; -} - -.message { - padding:0 1em 0 1.25em; - word-wrap: break-word; -} - -.tableBubble .message { - font-size:11px; -} - -.tableBubble .message img { - vertical-align:middle; -} - -.tableBubble .messageRight { - width:1px; -} - -.tableBubble .bl { - height:10px; -} - -.tableBubble .br { - width:8px; - height:10px; -} - -.tableBubble .timeStamp { - margin:2px; - margin-left:7px; - text-align:right; - float:right; -} - -.myBubble .indicator { - position:absolute; - top:8px; - left:0; - width:13px; - height:11px; -} - -.myBubble { - position:relative; - padding-left:10px; - margin-left:33px; - margin-right:10px; -} - -.chatItem .avatar { - width:26px; - height:26px; - float:left; -} - -/****** STatus ******/ - -.statusMessage { - opacity:0.8; - color:#676767; -} - -.statusMessage .myBubble .indicator { - background:url("images/steelIndicator.png") no-repeat top left; -} - -.statusMessage .tableBubble .tl { - background:url("images/steelCurves.png") no-repeat top left; -} - -.statusMessage .tableBubble .tr { - background:url("images/steelCurves.png") no-repeat top right; -} - -.statusMessage .tableBubble .head { - background:url("images/steelCurves.png") no-repeat -10px 0; -} - -.statusMessage .tableBubble .message { - background:url("images/steelBackground.png") repeat-y top left; -} - -.statusMessage .tableBubble .messageRight { - background:url("images/steelBackground.png") repeat-y top right; -} - -.statusMessage .tableBubble .bl { - background:url("images/steelCurves.png") no-repeat bottom left; -} - -.statusMessage .tableBubble .br { - background:url("images/steelCurves.png") no-repeat bottom right; -} - -.statusMessage .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - -.statusMessage .timeStamp { - color:#676767; -} - - -/*incoming */ - -.incomingItem .myBubble .indicator { - background:url("images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - -.incomingItem .timeStamp { - color:#bdb410; -} - -/* outgoing */ - - -.outgoingItem .myBubble .indicator { - background:url("images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - -.outgoingItem .timeStamp { - color:#9ecf35; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/noname.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/noname.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/noname.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/noname.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.name { - display:none; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- - %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -
- - - - -
- -
-
- - - - - - - - - - - - - -
- - %message% -
%sender% @ %time%
- -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,9 +0,0 @@ -
-
-
- %message% -
%time%
-
- -
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -
-
- %message% -
%time%
-
- diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -
- - - - -
-
- - - - - - - - - - - - - -
- %message% -
%time%
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Template.html qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Template.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ - - - - - - - - - - - - - - - - - - - -%@ -
-
-%@ -
- - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - -/*incoming */ - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Blue on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#7fc5f8; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Blue on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Blue on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Green on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#9ecf35; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Green on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Green on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Red on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#f88f8f; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Red on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Red on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Steel on Yellow.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#a9a9a9; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - - -/*incoming */ - -.incomingItem .timeStamp { - color:#bdb410; -} - -.incomingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Yellow Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Steel on Yellow No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Steel on Yellow.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Blue.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#7fc5f8; -} - -.incomingItem .myBubble .indicator { - background:url("../images/blueIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/blueCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/blueCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/blueCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/blueBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/blueBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/blueCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/blueCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ddf0fe; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Blue Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Blue No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Blue.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Green.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#9ecf35; -} - - -.incomingItem .myBubble .indicator { - background:url("../images/greenIndicator.png") no-repeat top left; -} - -.incomingItem .timeStamp { - color:#9ecf35; -} - -.incomingItem .tableBubble .tl { - background:url("../images/greenCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/greenCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/greenCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/greenBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/greenBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/greenCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/greenCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#e2efc4; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Green Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Green No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Green.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Red.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#f88f8f; -} - -.incomingItem .myBubble .indicator { - background:url("../images/redIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/redCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/redCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/redCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/redBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/redBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/redCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/redCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ffdada; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Red Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Red No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Red.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel Alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -@import url("Yellow on Steel.css"); -@import url("../alternating.css"); - - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator2.png") no-repeat top left; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -@import url("../main.css"); - -/* outgoing */ - - -.outgoingItem .timeStamp { - color:#bdb410; -} - -.outgoingItem .myBubble .indicator { - background:url("../images/yellowIndicator.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tl { - background:url("../images/yellowCurves.png") no-repeat top left; -} - -.outgoingItem .tableBubble .tr { - background:url("../images/yellowCurves.png") no-repeat top right; -} - -.outgoingItem .tableBubble .head { - background:url("../images/yellowCurves.png") no-repeat -10px 0; -} - -.outgoingItem .tableBubble .message { - background:url("../images/yellowBackground.png") repeat-y top left; -} - -.outgoingItem .tableBubble .messageRight { - background:url("../images/yellowBackground.png") repeat-y top right; -} - -.outgoingItem .tableBubble .bl { - background:url("../images/yellowCurves.png") no-repeat bottom left; -} - -.outgoingItem .tableBubble .br { - background:url("../images/yellowCurves.png") no-repeat bottom right; -} - -.outgoingItem .followUp { - background-color:#f4f0a7; - border-bottom:1px solid #fff; -} - - -/*incoming */ - -.incomingItem .timeStamp { - color:#a9a9a9; -} - -.incomingItem .myBubble .indicator { - background:url("../images/steelIndicator.png") no-repeat top left; -} - -.incomingItem .tableBubble .tl { - background:url("../images/steelCurves.png") no-repeat top left; -} - -.incomingItem .tableBubble .tr { - background:url("../images/steelCurves.png") no-repeat top right; -} - -.incomingItem .tableBubble .head { - background:url("../images/steelCurves.png") no-repeat -10px 0; -} - -.incomingItem .tableBubble .message { - background:url("../images/steelBackground.png") repeat-y top left; -} - -.incomingItem .tableBubble .messageRight { - background:url("../images/steelBackground.png") repeat-y top right; -} - -.incomingItem .tableBubble .bl { - background:url("../images/steelCurves.png") no-repeat bottom left; -} - -.incomingItem .tableBubble .br { - background:url("../images/steelCurves.png") no-repeat bottom right; -} - -.incomingItem .followUp { - background-color:#ececec; - border-bottom:1px solid #fff; -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names Alt.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Steel Alternating.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/renkooNaked/Contents/Resources/Variants/Yellow on Steel No Names.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -@import url("Yellow on Steel.css"); -@import url("../noname.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Satin Adium Message Style - CFBundleIdentifier - com.adiumx.satin.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Satin - CFBundlePackageType - AdIM - DefaultBackgroundColor - ffffff - DefaultFontFamily - Helvetica - DefaultFontSize - 10 - DisplayNameForNoVariant - GBO-Left Icon - MessageViewVersion - 1 - ShowsUserIcons:GBO-No Icon - - ShowsUserIcons:GBP-No Icon - - ShowsUserIcons:RBP-No Icon - - ShowsUserIcons:Monochrome-No Icon - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,12 +0,0 @@ -
- \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/buddy_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/buddy_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_close_pressed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_close_pressed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_open_pressed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_button_open_pressed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg15degRot.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg15degRot.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg1.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg1.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/header/header_sender_bg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_bot_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_bot_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_bot_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_bot_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_bot_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_context_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/message/message_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/blue/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/gray/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/green/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/mono/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/red/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/flipped/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_context_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_context_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/sender_mono_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/blue/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/gray/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/green/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right_history.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right_history.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/mono/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_context_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_context_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/red/sender_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_context_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_context_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/sender/standard/sender_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/black/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/gray/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/orange/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/images/status/purple/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon_alt.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon_alt.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -
-
%sender%
%service%
-
-
-
-
-
-
-
-
-

%time%%message%

-
-
-
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -
-
%sender%
%service%
-
-
-
-
-
-
-
-
-

%time%%message%

-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
-

%time%%message%

-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
-

%time%%message%

-
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("styles/defaults.css"); -@import url("styles/layout_left.css"); -@import url("styles/green_blue_orange_left.css"); \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon_alt.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon_alt.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -
-
%sender%
%service%
-
-
-
-
-
-
-
-
-

%time%%message%

-
-
-
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ -
-
%sender%
%service%
-
-
-
-
-
-
-
-
-

%time%%message%

-
-
-
-
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
-

%time%%message%

-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
-

%time%%message%

-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/showhide.js qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/showhide.js --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/showhide.js 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/showhide.js 1970-01-01 00:00:00.000000000 +0000 @@ -1,166 +0,0 @@ - closeBtn = new Image(); - closeBtn.src = "images/header/header_button_close.png"; - closePBtn = new Image(); - closePBtn.src = "images/header/header_button_close_pressed.png"; - openBtn = new Image(); - openBtn.src = "images/header/header_button_open.png"; - openPBtn = new Image(); - openPBtn.src = "images/header/header_button_open_pressed.png"; - - isDebug = true; - - //Do this on load - function initEvents() { - if(document.getElementById("heading") == null) { - document.getElementById("bodyNode").style.marginTop = "68px"; - } - - if(isDebug == false) { - document.getElementById("debug").style.display = "none"; - } - - alignChat(true); - } - - //Debugging function - function trace(msg) { - var node = document.createElement("div"); - var debugCon = document.getElementById("debug"); - node.innerHTML = msg; - debugCon.appendChild(node); - } - - - //Appending new content to the message view - function appendMessage(html) { - shouldScroll = nearBottom(); - - //Remove any existing insertion point - insert = document.getElementById("insert"); - if(insert) insert.parentNode.removeChild(insert); - - //Append the new message to the bottom of our chat block - chat = document.getElementById("Chat"); - range = document.createRange(); - range.selectNode(chat); - documentFragment = range.createContextualFragment(html); - chat.appendChild(documentFragment); - - alignChat(shouldScroll); - } - function appendNextMessage(html){ - shouldScroll = nearBottom(); - - //Locate the insertion point - insert = document.getElementById("insert"); - - //make new node - range = document.createRange(); - range.selectNode(insert.parentNode); - newNode = range.createContextualFragment(html); - - //swap - insert.parentNode.replaceChild(newNode,insert); - - alignChat(shouldScroll); - } - - //Auto-scroll to bottom. Use nearBottom to determine if a scrollToBottom is desired. - function nearBottom() { - return ( document.body.scrollTop >= ( document.body.offsetHeight - ( window.innerHeight * 1.2 ) ) ); - } - function scrollToBottom() { - document.body.scrollTop = document.body.offsetHeight; - } - - //Dynamically exchange the active stylesheet - function setStylesheet( id, url ) { - var code = ""; - var range = document.createRange(); - var head = document.getElementsByTagName( "head" ).item(0); - range.selectNode( head ); - documentFragment = range.createContextualFragment( code ); - head.removeChild( document.getElementById( id ) ); - head.appendChild( documentFragment ); - } - - //Swap an image with its alt-tag text on click - document.onclick = imageCheck; - function imageCheck() { - node = event.target; - if(node.tagName == 'IMG' && node.alt && node.className!="avatar") { - a = document.createElement('a'); - a.setAttribute('onclick', 'imageSwap(this)'); - a.setAttribute('src', node.src); - a.className = node.className; - text = document.createTextNode(node.alt); - a.appendChild(text); - node.parentNode.replaceChild(a, node); - } - } - function imageSwap(node) { - shouldScroll = nearBottom(); - - //Swap the image/text - img = document.createElement('img'); - img.setAttribute('src', node.src); - img.className = node.className; - img.setAttribute('alt', node.firstChild.nodeValue); - node.parentNode.replaceChild(img, node); - - alignChat(shouldScroll); - } - - //Align our chat to the bottom of the window. If true is passed, view will also be scrolled down - function alignChat(shouldScroll) { - - var windowHeight = window.innerHeight; - - if(windowHeight > 0) { - var contentElement = document.getElementById('Chat'); - var contentHeight = contentElement.offsetHeight; - if (windowHeight - contentHeight > 0) { - contentElement.style.position = 'relative'; - contentElement.style.top = '0px'; - } else { - contentElement.style.position = 'static'; - } - } - - if(shouldScroll) scrollToBottom(); - } - - function toggleParent(parentId) { - myParent = document.getElementById(parentId); - toggleBtn = document.images["togglebutton"]; - if (myParent.style.display=="none") { - myParent.style.display="block"; - toggleBtn.src = closeBtn.src; - document.getElementById("bodyNode").style.marginTop = "68px"; - } else { - myParent.style.display="none"; - toggleBtn.src = openBtn.src; - document.getElementById("bodyNode").style.marginTop = "5px"; - } - alignChat(shouldScroll); - return true; - } - - function buttonPressed(parentId) { - myParent = document.getElementById(parentId); - me = event.target; - if (myParent.style.display=="none") { - me.src = openPBtn.src; - } else { - me.src = closePBtn.src; - } - return true; - } - - function windowDidResize() { - alignChat(true/*nearBottom()*/); //nearBottom buggy with inactive tabs - } - - window.onresize = windowDidResize; \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%message%
-
%time%
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/defaults.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/defaults.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/defaults.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/defaults.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -body {margin: 10px 15px 10px 15px;} - -p {margin: 0px;overflow: hidden;} - -.spacer {clear: both;} - -.nameheader { - font-family: "Helvetica" sans-serif; - font-size: 11px; - font-weight: bold; - font-style: normal; - opacity: 1.0; - #border: 1px solid #999999; - } -.name { - #border: 1px solid #999999; - } -.protocol { - #border: 1px solid #999999; - } - -.message { - font-size: 10px; - color: #454545; - text-shadow: 0px 1px 0px rgba(255,255,255,0.9); - } -.messagetime { - font-family: "Helvetica" sans-serif; - font-size: 9px; - color: #999999; - float: right; - padding-top: 2px; - vertical-align: baseline; - } -.messagetime.consecutive { - padding-left: 11px; - } - -.status { - font-family: "Helvetica" sans-serif; - font-size: 9px; - font-weight: bold; - color: rgba(255,255,255,1.0); - #border: 1px solid #999999; - } -.statusmessage { - text-align: left; - #border: 1px solid #999999; - } -.statustime { - text-align: right; - #border: 1px solid #999999; - } - -.nextmessageline { - border-bottom: 1px dotted #CCCCCC; - height: 1px; - margin-top: 2px; - margin-bottom: 2px; - } - -#chat { - overflow: hidden; - margin-bottom: 10px; - } - -#header { - display: block; - height: 69px; - position: fixed; - top: 0; - width: 100%; - z-index: 100; - margin-left: -15px; - } -#headerFill { - background: url("../images/header/header_fill.png") repeat-x top; - #position: relative; - width: "100%"; - height: 59px; - margin-left: 82px; - margin-right: 82px; - } -#headerLeft { - background: url("../images/header/header_left.png") no-repeat; - position: absolute; - top: 0; - left: 0; - width: 82px; - height: 59px; - float: left; - #display: block; - } -#headerRight { - background: url("../images/header/header_right.png") no-repeat; - position: absolute; - top: 0; - right: 0; - width: 82px; - height: 59px; - float: right; - #display: block; - } -#headerImage { - background: url("../images/header/header_sender_bg.png") no-repeat; - position: relative; - #-webkit-transform:rotate(14deg); - width: 46px; - height: 46px; - margin-left: 14px; - margin-top: 4px; - padding: 3px 5px 7px 6px; - float: left; - z-index: 200; - } -#headerChatWho { - color: #787878; - font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; - position: relative; - float: left; - margin-left: 5px; - margin-top: 8px; - text-shadow: 0px 1px 0px rgba(255,255,255,1.9); - z-index: 200; - } -#headerChatWho h2 { - color: #676767; - font-size: 24px; - font-weight: 100; - margin-top: -2px; - padding: 0; - } -#headerChatStarted { - color: #787878; - font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; - position: absolute; - float: right; - right: 0px; - margin-right: 28px; - margin-top: 35px; - text-shadow: 0px 1px 0px rgba(255,255,255,1.9); - z-index: 200; - } -.togglebutton { - visibility: visible; - padding: 0px; - position: fixed; - z-index: 200; - top: 0; - right: 0; - } - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/orange/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/orange/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/orange/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/orange/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/orange/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/orange/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } - -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/orange/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/orange/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/orange/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_orange_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/orange/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/orange/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/orange/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/green/sender_right.png") right top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/green/sender_context_right.png") right top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } - -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/green_blue_purple_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(84,155,38,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(84,155,38,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/green/sender_left.png") left top no-repeat; - color: rgba(84,155,38,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/green/sender_context_left.png") left top no-repeat; - color: rgba(84,155,38,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/header.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/header.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/header.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/header.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -// This file is not currently referenced. - -#header { - display: block; - height: 69px; - position: fixed; - top: 0; - width: 100%; - z-index: 100; - margin-left: -15px; - } -#headerFill { - background: url("../images/header/header_fill.png") repeat-x top; - #position: relative; - width: "100%"; - height: 59px; - margin-left: 82px; - margin-right: 82px; - } -#headerLeft { - background: url("../images/header/header_left.png") no-repeat; - position: absolute; - top: 0; - left: 0; - width: 82px; - height: 59px; - float: left; - #display: block; - } -#headerRight { - background: url("../images/header/header_right.png") no-repeat; - position: absolute; - top: 0; - right: 0; - width: 82px; - height: 59px; - float: right; - #display: block; - } -#headerImage { - background: url("../images/header/header_sender_bg.png") no-repeat; - position: relative; - #-webkit-transform:rotate(14deg); - width: 46px; - height: 46px; - margin-left: 14px; - margin-top: 4px; - padding: 3px 5px 7px 6px; - float: left; - z-index: 200; - } -#headerChatWho { - color: #787878; - font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; - position: relative; - float: left; - margin-left: 5px; - margin-top: 8px; - text-shadow: 0px 1px 0px rgba(255,255,255,1.9); - z-index: 200; - } -#headerChatWho h2 { - color: #676767; - font-size: 24px; - font-weight: 100; - margin-top: -2px; - padding: 0; - } -#headerChatStarted { - color: #787878; - font: 10px "HelveticaNeue-Light", "Helvetica Neue", Helvetica; - position: absolute; - float: right; - right: 0px; - margin-right: 28px; - margin-top: 35px; - text-shadow: 0px 1px 0px rgba(255,255,255,1.9); - z-index: 200; - } -.togglebutton { - visibility: visible; - padding: 0px; - position: fixed; - z-index: 200; - top: 0; - right: 0; - } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_all.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_all.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_all.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_all.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -.in {margin-bottom: 0px;} -.out {margin-bottom: 0px;} - -.nameheader { - position: relative; - height: 25px; - top: 0px; - padding: 0px 0px 0px 0px; - } -.name { - position: relative; - height: 25px; - top: 0px; - text-overflow: ellipsis; - overflow: hidden; - } -.protocol { - position: absolute; - height: 18px; - top: 0px; - } -.message { - margin-left: 0px; - padding: 0px 11px 12px 0px; - } -.messagetop { - position: relative; - height: 12px; - top: -8px; - padding: 0px 0px 0px 0px; - margin: 0px 12px 0px 12px; - } -.messagetopleft { - position: relative; - float: left; - height: 12px; - top: 0px; - left: -12px; - padding: 0px 12px 0px 0px; - margin: 0px -13px 0px 0px; - } -.messagetopright { - position: relative; - float: right; - height: 12px; - top: 0px; - right: -12px; - padding: 0px 0px 0px 12px; - margin: 0px 0px 0px -13px; - } -.messagetextcontainer { - position: relative; - margin: -8px 0px 0px 0px; - padding: 0px 0px 0px 12px; - } -.status { - position: relative; - height: 23px; - top: 0px; - padding: 0px 30px 0px 30px; - margin: 0px 30px 0px 30px; - } -.statusmessage { - position: relative; - height: 17px; - top: 0px; - left: 0px; - padding: 5px 0px 0px 12px; - margin: 0px 0px 6px -60px; - text-overflow: ellipsis; - overflow: hidden; - } -.statustime { - position: absolute; - float: right; - height: 17px; - top: 0px; - right: 0px; - padding: 5px 12px 0px 0px; - margin: 0px -30px 0px 0px; - } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -@import url("layout_all.css"); - -.out .nameheader { - margin: 0px 77px 6px 25px; - } -.in .nameheader { - margin: 0px 24px 6px 78px; - } -.out .name { - left: 0px; - padding: 4px 0px 0px 12px; - margin: 0px 0px 0px -25px; - } -.in .name { - float: right; - right: 0px; - padding: 4px 12px 0px 0px; - margin: 0px -25px 0px 0px; - } -.out .protocol { - float: right; - right: 0px; - padding: 5px 12px 1px 66px; - margin: 0px -78px -2px 0px; - } -.in .protocol { - left: 0px; - padding: 5px 66px 1px 12px; - margin: 0px 0px -2px -78px; - } -.messagecontainer { - padding: 0px 0px 0px 0px; - } -.out .messagecontainer { - margin: 0px 0px 0px 48px; - } -.in .messagecontainer { - margin: 0px 48px 0px 0px; - } -.buddyicon { - position: relative; - top: -6px; - z-index: 4; - } -.buddyicon img { - height: 32px; - width: 32px; - z-index: 3; - } -.junkIcon { - #background: url("../images/buddy_background.png") top left no-repeat; - #height: 40px; - #width: 40px; - #padding: 2px 0px 0px 4px; - #border: 1px solid #999999; - } -.junkIcon img { - #margin-top: 2px; - #margin-left: 4px; - } -.out .buddyicon { - float: left; - margin-left: 10px; - margin-right: 0px; - margin-bottom: 0px; - margin-top: 0px; - } -.in .buddyicon { - float: right; - margin-left: 0px; - margin-bottom: 0px; - margin-top: 0px; - margin-right: 10px; - } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -@import url("layout_all.css"); - -.in .nameheader { - margin: 0px 77px 6px 25px; - } -.out .nameheader { - margin: 0px 24px 6px 78px; - } -.in .name { - left: 0px; - padding: 4px 0px 0px 12px; - margin: 0px 0px 0px -25px; - } -.out .name { - float: right; - right: 0px; - padding: 4px 12px 0px 0px; - margin: 0px -25px 0px 0px; - } -.in .protocol { - float: right; - right: 0px; - padding: 5px 12px 1px 66px; - margin: 0px -78px -2px 0px; - } -.out .protocol { - left: 0px; - padding: 5px 66px 1px 12px; - margin: 0px 0px -2px -78px; - } -.messagecontainer { - padding: 0px 0px 0px 0px; - } -.in .messagecontainer { - margin: 0px 0px 0px 48px; - } -.out .messagecontainer { - margin: 0px 48px 0px 0px; - } -.buddyicon { - position: relative; - top: -6px; - #background: url("../images/buddy_background.png") top left no-repeat; - #height: 40px; - #width: 40px; - z-index: 4; - #padding: 2px 0px 0px 4px; - #border: 1px solid #999999; - } -.buddyicon img { - height: 32px; - width: 32px; - #margin-top: 2px; - #margin-left: 4px; - z-index: 3; - } -.in .buddyicon { - float: left; - margin-left: 10px; - margin-right: 0px; - margin-bottom: 0px; - margin-top: 0px; - } -.out .buddyicon { - float: right; - margin-left: 0px; - margin-bottom: 0px; - margin-top: 0px; - margin-right: 10px; - } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_hidden.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -@import url("layout_all.css"); - -.nameheader { - margin: 0px 77px 6px 25px; - } -.name { - left: 0px; - padding: 4px 0px 0px 12px; - margin: 0px 0px 0px -25px; - } -.protocol { - float: right; - right: 0px; - padding: 5px 12px 1px 66px; - margin: 0px -78px -2px 0px; - } - -.messagecontainer { - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 0px; - } -.buddyicon {display: none;} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -@import url("layout_all.css"); - -.nameheader { - margin: 0px 77px 6px 25px; - } -.name { - left: 0px; - padding: 4px 0px 0px 12px; - margin: 0px 0px 0px -25px; - } -.protocol { - float: right; - right: 0px; - padding: 5px 12px 1px 50px; - margin: 0px -78px 0px 0px; - } -.messagecontainer { - padding: 0px 0px 0px 0px; - margin: 0px 0px 0px 48px; - } -.buddyicon img { - height: 32px; - width: 32px; - z-index: 3; - } -.buddyicon { - position: relative; - top: -6px; - z-index: 4; - float: left; - margin-left: 10px; - margin-right: 0px; - margin-bottom: 0px; - margin-top: 0px; - } -.junkIcon { - #background: url("../images/buddy_background.png") top left no-repeat; - #height: 40px; - #width: 40px; - #padding: 2px 0px 0px 4px; - #border: 1px solid #999999; - } -.junkIcon img { - #margin-top: 2px; - #margin-left: 4px; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/layout_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -@import url("layout_all.css"); - -.nameheader { - margin: 0px 24px 6px 78px; - } -.name { - float: right; - right: 0px; - padding: 4px 12px 0px 0px; - margin: 0px -25px 0px 0px; - } -.protocol { - left: 0px; - padding: 5px 66px 1px 12px; - margin: 0px 0px -2px -78px; - } -.messagecontainer { - padding: 0px 0px 0px 0px; - margin: 0px 48px 0px 0px; - } -.buddyicon { - position: relative; - top: -6px; - #background: url("../images/buddy_background.png") top left no-repeat; - #height: 40px; - #width: 40px; - z-index: 4; - float: right; - margin-left: 0px; - margin-bottom: 0px; - margin-top: 0px; - margin-right: 10px; - #padding: 2px 0px 0px 4px; - #border: 1px solid #999999; - } -.buddyicon img { - height: 32px; - width: 32px; - #margin-top: 2px; - #margin-left: 4px; - z-index: 3; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/message_common.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/message_common.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/message_common.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/message_common.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -body { - background: #FFFFFF url("../images/background.png") bottom fixed repeat-x; - } - -.content .message { - background: url("../images/message/message_bot_right.png") bottom right no-repeat; - } -.context .message { - background: url("../images/message/message_context_bot_right.png") bottom right no-repeat; - } -.content .messagetextcontainer { - background: url("../images/message/message_bot_left.png") bottom left no-repeat; - } -.context .messagetextcontainer { - background: url("../images/message/message_context_bot_left.png") bottom left no-repeat; - } -.content .messagetop { - background: url("../images/message/message_top_fill.png") top repeat-x; - } -.context .messagetop { - background: url("../images/message/message_context_top_fill.png") top repeat-x; - } -.content .messagetopleft { - background: url("../images/message/message_top_left.png") left top no-repeat; - } -.context .messagetopleft { - background: url("../images/message/message_context_top_left.png") left top no-repeat; - } -.content .messagetopright { - background: url("../images/message/message_top_right.png") right top no-repeat; - } -.context .messagetopright { - background: url("../images/message/message_context_top_right.png") right top no-repeat; - } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(78,78,78,1); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(78,78,78,0.8); - } -.in.content .nameheader { - background: url("../images/sender/sender_mono_fill.png") top repeat-x; - color: rgba(248,248,248,1); - } -.in.context .nameheader { - background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; - color: rgba(248,248,248,0.9); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/mono/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/mono/sender_right_history.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/gray/sender_right.png") right top no-repeat; - color: rgba(78,78,78,0.8); - } -.out.context .protocol { - background: url("../images/sender/standard/gray/sender_right_history.png") right top no-repeat; - color: rgba(78,78,78,0.6); - } -.in.content .protocol { - background: url("../images/sender/flipped/mono/sender_left.png") left top no-repeat; - color: rgba(248,248,248,0.9); - } -.in.context .protocol { - background: url("../images/sender/flipped/mono/sender_left_history.png") left top no-repeat; - color: rgba(248,248,248,0.8); - } - -.status { - background: url("../images/status/black/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/black/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/black/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(78,78,78,1); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(78,78,78,0.8); - } -.in.content .nameheader { - background: url("../images/sender/sender_mono_fill.png") top repeat-x; - color: rgba(248,248,248,1); - } -.in.context .nameheader { - background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; - color: rgba(248,248,248,0.9); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/mono/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/mono/sender_left_history.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/gray/sender_left.png") left top no-repeat; - color: rgba(78,78,78,0.8); - } -.out.context .protocol { - background: url("../images/sender/flipped/gray/sender_left_history.png") left top no-repeat; - color: rgba(78,78,78,0.6); - } -.in.content .protocol { - background: url("../images/sender/standard/mono/sender_right.png") right top no-repeat; - color: rgba(248,248,248,0.9); - } -.in.context .protocol { - background: url("../images/sender/standard/mono/sender_right_history.png") right top no-repeat; - color: rgba(248,248,248,0.8); - } - -.status { - background: url("../images/status/black/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/black/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/black/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(78,78,78,1); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(78,78,78,0.8); - } -.in.content .nameheader { - background: url("../images/sender/sender_mono_fill.png") top repeat-x; - color: rgba(248,248,248,1); - } -.in.context .nameheader { - background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; - color: rgba(248,248,248,0.9); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/mono/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/mono/sender_left_history.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/gray/sender_right.png") right top no-repeat; - color: rgba(78,78,78,0.8); - } -.out.context .protocol { - background: url("../images/sender/standard/gray/sender_right_history.png") right top no-repeat; - color: rgba(78,78,78,0.6); - } -.in.content .protocol { - background: url("../images/sender/standard/mono/sender_right.png") right top no-repeat; - color: rgba(248,248,248,0.9); - } - -.in.context .protocol { - background: url("../images/sender/standard/mono/sender_right_history.png") right top no-repeat; - color: rgba(248,248,248,0.8); - } - -.status { - background: url("../images/status/black/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/black/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/black/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/monochrome_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(78,78,78,1); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(78,78,78,0.8); - } -.in.content .nameheader { - background: url("../images/sender/sender_mono_fill.png") top repeat-x; - color: rgba(248,248,248,1); - } -.in.context .nameheader { - background: url("../images/sender/sender_mono_fill_history.png") top repeat-x; - color: rgba(248,248,248,0.9); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/mono/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/mono/sender_right_history.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/gray/sender_left.png") left top no-repeat; - color: rgba(78,78,78,0.8); - } -.out.context .protocol { - background: url("../images/sender/flipped/gray/sender_left_history.png") left top no-repeat; - color: rgba(78,78,78,0.6); - } -.in.content .protocol { - background: url("../images/sender/flipped/mono/sender_left.png") left top no-repeat; - color: rgba(248,248,248,0.9); - } -.in.context .protocol { - background: url("../images/sender/flipped/mono/sender_left_history.png") left top no-repeat; - color: rgba(248,248,248,0.8); - } - -.status { - background: url("../images/status/black/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/black/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/black/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(170,17,17,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(170,17,17,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/red/sender_right.png") right top no-repeat; - color: rgba(170,17,17,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/red/sender_context_right.png") right top no-repeat; - color: rgba(170,17,17,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_alternate_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(170,17,17,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(170,17,17,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/red/sender_left.png") left top no-repeat; - color: rgba(170,17,17,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/red/sender_context_left.png") left top no-repeat; - color: rgba(170,17,17,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_left.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(170,17,17,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(170,17,17,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.out.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } -.in.content .name { - background: url("../images/sender/standard/sender_left.png") left top no-repeat; - } -.in.context .name { - background: url("../images/sender/standard/sender_context_left.png") left top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/standard/red/sender_right.png") right top no-repeat; - color: rgba(170,18,18,0.4); - } -.out.context .protocol { - background: url("../images/sender/standard/red/sender_context_right.png") right top no-repeat; - color: rgba(170,18,18,0.3); - } -.in.content .protocol { - background: url("../images/sender/standard/blue/sender_right.png") right top no-repeat; - color: rgba(39,55,152,0.4); - } - -.in.context .protocol { - background: url("../images/sender/standard/blue/sender_context_right.png") right top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/styles/red_blue_purple_right.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -@import url("message_common.css"); - -.out.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(178,18,18,0.8); - } -.out.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(178,18,18,0.5); - } -.in.content .nameheader { - background: url("../images/sender/sender_fill.png") top repeat-x; - color: rgba(39,55,152,0.8); - } -.in.context .nameheader { - background: url("../images/sender/sender_context_fill.png") top repeat-x; - color: rgba(39,55,152,0.5); - } - -.out.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.out.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } -.in.content .name { - background: url("../images/sender/flipped/sender_right.png") right top no-repeat; - } -.in.context .name { - background: url("../images/sender/flipped/sender_context_right.png") right top no-repeat; - } - -.out.content .protocol { - background: url("../images/sender/flipped/red/sender_left.png") left top no-repeat; - color: rgba(178,18,18,0.4); - } -.out.context .protocol { - background: url("../images/sender/flipped/red/sender_context_left.png") left top no-repeat; - color: rgba(178,18,18,0.3); - } -.in.content .protocol { - background: url("../images/sender/flipped/blue/sender_left.png") left top no-repeat; - color: rgba(39,55,152,0.4); - } -.in.context .protocol { - background: url("../images/sender/flipped/blue/sender_context_left.png") left top no-repeat; - color: rgba(39,55,152,0.3); - } - -.status { - background: url("../images/status/purple/status_fill.png") top repeat-x; - } -.statusmessage { - background: url("../images/status/purple/status_left.png") left top no-repeat; - } -.statustime { - background: url("../images/status/purple/status_right.png") right top no-repeat; - } \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Template.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Template.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Template.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Template.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ - - - - - - - - - - - - - -%@ -
-
-%@ -
- - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/test.html qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/test.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/test.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/test.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,181 +0,0 @@ - - - - - - - - - -
- - - -
- -
-
Evan has gone offline blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah blah
-
11:26:20
-
-
- -
-
Evan come back online
-
11:26:45
-
-
- -
-
Jeff (Me)
Yahoo!
-
-
-
-
-
-
-

This is going to be a message from the past5:27:45

-
-

Instant Messaging is really fun!!!20:29

-
-

Right?20:50

-
-
-
-
-
- -
-
Evan (Buddy)
AIM
-
-
-
-
-
-
-

Not if your life depended on it5:28:01

-
-
-
-
-
- -
-
Evan has gone away: this is going to be a really long status message so I can make sure wrapping is handled correctly...
-
11:28:13
-
-
- -
-
A really long alias if it will fit into this view blah blah blah blah blah blah blah blah
AIM
-
-
-
-
-
-
-

This is a new message11:29:20

-
-

Instant Messaging is supposed to be fun...29:41

-
-

Right?30:50

-
-
-
-
-
- -
-
Evan has gone idle
-
11:31:05
-
-
- -
-
Jeff (Me)
Yahoo!
-
-
-
-
-
-
-

If given the opportunity, a person would write a book about their life story. It may be the most boring thing in the world to read, but you're the one who put them on your buddy list ;).11:31:50

-
-
-
-
-
- -
-
Evan (Buddy)
Yahoo!
-
-
-
-
-
-
-

If given the opportunity, a person would write a book about their life story. It may be the most boring thing in the world to read, but you're the one who put them on your buddy list ;).11:38:20

-
-
-
-
-
- -
-
Jeff (Me)
Yahoo!
-
-
-
-
-
-
-

I have no idea what you're talking about!11:40:10

-
-
-
-
-
-
-
- - - \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_left.css"); -@import url("../styles/green_blue_orange_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-No Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_hidden.css"); -@import url("../styles/green_blue_orange_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_right.css"); -@import url("../styles/green_blue_orange_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBO-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_right.css"); -@import url("../styles/green_blue_orange_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_left.css"); -@import url("../styles/green_blue_purple_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_left.css"); -@import url("../styles/green_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-No Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_hidden.css"); -@import url("../styles/green_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_right.css"); -@import url("../styles/green_blue_purple_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/GBP-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_right.css"); -@import url("../styles/green_blue_purple_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_left.css"); -@import url("../styles/monochrome_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_left.css"); -@import url("../styles/monochrome_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-No Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_hidden.css"); -@import url("../styles/monochrome_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_right.css"); -@import url("../styles/monochrome_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/Monochrome-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_right.css"); -@import url("../styles/monochrome_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_left.css"); -@import url("../styles/red_blue_purple_alternate_left.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Left Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_left.css"); -@import url("../styles/red_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-No Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_hidden.css"); -@import url("../styles/red_blue_purple_left.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Alternate Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_alternate_right.css"); -@import url("../styles/red_blue_purple_alternate_right.css"); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Satin/Contents/Resources/Variants/RBP-Right Icon.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -@import url("../styles/defaults.css"); -@import url("../styles/layout_right.css"); -@import url("../styles/red_blue_purple_right.css"); \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Simplicity Adium Message Style - CFBundleIdentifier - com.adiumx.simplicity.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Simplicity - CFBundlePackageType - AdIM - MessageViewVersion - 1 - DefaultFontFamily - Helvetica - DefaultFontSize - 12 - DisplayNameForNoVariant - Name - ShowsUserIcons - - DisableCustomBackground - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- (%time%) %sender% (%time%): - %message% -
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- (%time%) %sender% (%time%): - %message% -
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%message%
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -@import url(styles/layout.css); -@import url(styles/base.css); - -.prefix .timestampbefore { - display: none; -} - -.prefix .sender { - display: inline; -} - -.prefix .timestampafter { - display: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- (%time%) %sender% (%time%): - %message% -
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- (%time%) %sender% (%time%): - %message% -
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
-
%message%
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/sample.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/sample.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/sample.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/sample.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,147 +0,0 @@ - - - - - - - - - -
-
-
(20:41:49) eevyleevyl@mac.com (20:41:49): %message%
-
%message%
-
-
-
(20:41:49) eevyleevyl@mac.com (20:41:49): huhuhuhu
-
huhuhu
-
whatever we may take
-
-
-
- (20:41:49) eevyleevyl@mac.com (20:41:49): - hu
-
-
-
- (20:41:49) eevyleevyl@mac.com (20:41:49): - huhuhuhu -
-
huhuhu
-
whatever we may take
-
-
- eevyl went away - (16:19) -
-
- Away Message: Busy / Ocupado - (16:19) -
-
- eevyl came back - (16:19) -
-
-
- (20:41:49) eevyleevyl@mac.com (20:41:49): - huhuhuhu atest eth us heteshlthe tletshiet iso ehtioioseh tiseoteuo thseo oseht eh tset hshet stli ethsil etile thilsethilwsethilsthlsitehs ei -
-
-
huhuhu
-
-
ujdfbhfffdfsabhudfsabhjdfahbfjlfdabhjlsfdbjfdbhjfdbjfadbjafdlsafjbdlafdjlbafdsbjafdsbjfadsbjfdasjbfdasbjafdsbj
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,7 +0,0 @@ -
-
- %message% - %time% -
-
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/base.css qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/base.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/base.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/base.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ - - -body { - padding: 0px; - margin: 0px; -} - -.incoming { - margin-left:-23px; - } - -.outgoing { - margin-left:-23px; - } - -.prefix -{ - font: bold 11px "Lucida Grande"; -} - -/**/ - -.incoming .prefix { - color: rgb(0,32,127); -} - -.incoming .messagebody -{ - background: #E5F2FF; - border-top: 1px solid #6B8FB3; -} - -.incoming .nextmessagebody { - background: #E5F2FF; -} - -.incoming .nextmessagetext { - border-top: 1px solid #B6CFEB; -} - -/*
*/ - -/**/ - -.outgoing .prefix -{ - color: rgb(0,127,0); -} - -.outgoing .messagebody -{ - background: #E6FFEA; - border-top: 1px solid #6BB377; -} - -.outgoing .nextmessagebody { - background: #E6FFEA; -} - -.outgoing .nextmessagetext { - border-top: 1px solid #B8E6BF; -} - -/**/ - -.incoming.context .prefix { - color: #516cbb; -} - -.outgoing.context .prefix { - color: #28cb28; -} - -.context .messagebody, .context .nextmessagebody { - color: gray; - background-color: #FFF; -} - -.status_message { - text-align: center; - font: 11px Helvetica, sans-serif; - color: gray; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/layout.css qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/layout.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/layout.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/styles/layout.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -body -{ - margin: 0px; -} - -#Chat { - overflow: hidden; -} - -.bottomdivider { - width: 100%; - position: fixed; - bottom: 0px; - margin: 0px; - padding: 0px; - left: 0px; -} - -.status_message { - padding: 0px 7px 0px 7px; -} - -.prefix { - position: relative; -} - -.messagebody { - padding: 1px 7px 1px 30px; - overflow: auto; -} - -.nextmessagebody { - padding: 1px 7px 1px 30px; - overflow: auto; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/Name (Time).css 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -@import url(../styles/layout.css); -@import url(../styles/base.css); - -.prefix .timestampbefore { - display: none; -} - -.prefix .sender { - display: inline; -} - -.prefix .timestampafter { - display: inline; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Simplicity/Contents/Resources/Variants/(Time) Name.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,14 +0,0 @@ -@import url(../styles/layout.css); -@import url(../styles/base.css); - -.prefix .timestampbefore { - display: inline; -} - -.prefix .sender { - display: inline; -} - -.prefix .timestampafter { - display: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Smooth Operator Adium Message Style - CFBundleIdentifier - com.adiumx.smooth.operator.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Smooth Operator - CFBundlePackageType - AdIM - DefaultBackgroundColor - FFFFFF - DefaultFontFamily - Lucida Grande - DefaultFontSize - 10 - DefaultVariant - Normal - DisableCustomBackground - - MessageViewVersion - 4 - ShowsUserIcons - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/arrow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/arrow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/bottom_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/bottom_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/bottom_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/bottom_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/buddy_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/buddy_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_bottom_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/context_top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_left_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_right_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/status_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/top_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/top_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/top_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/images/top_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- %sender% -
-
- %time% -
-
- -
-
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- %sender% -
-
- %time% -
-
- -
-
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
%time{%M:%S}%
-
%message%
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
%time{%M:%S}%
-
%message%
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,210 +0,0 @@ -body { - background: white url(images/background.png) center top repeat-x fixed; - font-weight: normal; -} - -.incoming { color: #a6002c; } -.context .incoming { color:#A65369; } - -.outgoing { color: #001190; } -.context .outgoing { color: #47508F; } - -.container { - position: relative; - background: url("images/bottom_right.png") bottom right no-repeat; - margin: 15px 0px 0px 43px; - min-height: 25px; -} - -.context { - background: url("images/context_bottom_right.png") bottom right no-repeat; -} - -.sender { - top: -16px; - left: -41px; - right: 38px; - position: absolute; - background: url("images/top_left.png") top left no-repeat; - font-size: 11px; - font-weight: bold; - text-transform: lowercase; - text-shadow: 1px 1px 3px #ccc; - padding: 13px 5px 0 56px; - margin-bottom: 0; - overflow: hidden; - white-space: nowrap; - text-overflow: ellipsis; -} - -.context .sender { - background: url("images/context_top_left.png") top left no-repeat; -} - -.time_initial { - position: absolute; - right: 0; - top: -16px; - background: url("images/top_right.png") top right no-repeat; - font-size: 9px; - font-weight: bold; - text-transform: uppercase; - text-shadow: 1px 1px 3px #ccc; - color: #808080; - padding: 14px 16px 0 5px; - margin-bottom: 0; - } - -.context .time_initial { - background: url("images/context_top_right.png") top right no-repeat; -} - -.time_consecutive { - float: left; - background: 29px url("images/arrow.png") no-repeat; - margin-left: -40px; - margin-top: 10px; - font-size: 9px; - text-shadow: 1px 1px 3px #ddd; - color: #bfbfbf; - } - - -.buddyicon { - position: absolute; - background: url("images/buddy_background.png"); - top: -5px; - left: -29px; - z-index: 4; - width: 40px; - } - -.buddyicon img { - position: absolute; - top: 3px; - left: 3px; - z-index: 3; - } - -.message { - position: relative; - background: url("images/bottom_left.png") bottom left repeat-y; - margin: 0px -24px 0px -41px; - text-shadow: 1px 1px 3px #ccc; - padding: 10px 0 10px 56px; - min-height: 25px; - color: #404040; -} - -.context .message { - background: url("images/context_bottom_left.png") bottom left repeat-y; - color: #666666; - } - -.text { - padding: 6px 40px 6px 0; - margin: 0; - overflow: auto; -} - -.time_consecutive + .text{ /* Next message in same bubble */ - margin-top: 7px; - padding-top: 0px; -} -.status_container { - position: relative; - margin: 0px 5px 5px 5px; - color: #fff; - text-shadow: 1px 1px 3px #aaa; - font-size: 9px; - font-weight: bold; - text-transform: lowercase; -} -.status_top { - background: url("images/status_top.png") top repeat-x; - height: 9px; - margin: 0px 9px 0px 9px; -} -.status_bottom { - background: url("images/status_bottom.png") bottom repeat-x; - height: 9px; - margin: 0px 9px 0px 9px; -} - -.status_message_upperleft { - position: absolute; - top: 0; - left: 0; - width: 9px; - height: 9px; - background: url("images/status_left_top.png") top left no-repeat; -} -.status_message_upperright { - position: absolute; - top: 0; - right: 0; - width: 9px; - height: 9px; - background: url("images/status_right_top.png") top right no-repeat; -} -.status_message_lowerleft { - position: absolute; - bottom: 0; - left: 0; - width: 9px; - height: 9px; - background: url("images/status_left_bottom.png") bottom left no-repeat; -} -.status_message_lowerright { - position: absolute; - bottom: 0; - right: 0; - width: 9px; - height: 9px; - background: url("images/status_right_bottom.png") bottom right no-repeat; -} - -.status_message { - padding: 0px 9px 0px 9px; - position: relative; - margin: 0px; -} -.status_message_text { - background: url("images/status_background.png"); - padding-right: 40px; -} -.status_left { - background: url("images/status_left.png") repeat-y; - position: absolute; - top: 0; - left: 0px; - width: 9px; - height: 100%; -} -.status_right { - background: url("images/status_right.png") repeat-y; - position: absolute; - top: 0; - right: 0; - width: 9px; - height: 100%; -} -.status_time { - position: absolute; - top: 7px; - right: 11px; - text-transform: uppercase; - font-size: 8px; -} - -IMG { - vertical-align:middle; - top:-3px; -} - -img.scaledToFitImage{ width:auto; } - -#Chat { - overflow: hidden; - margin-bottom: -8px; -} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- %sender% -
-
- %time% -
-
- -
-
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
- %sender% -
-
- %time% -
-
- -
-
-
%message%
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
%time{%M:%S}%
-
%message%
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -
%time{%M:%S}%
-
%message%
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Smooth Operator/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,15 +0,0 @@ -
-
-
-
-
- %message% -
-
-
-
- %time% -
-
-
-
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - English - CFBundleGetInfoString - Stockholm Adium Message Style - CFBundleIdentifier - com.adiumx.stockholm.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Stockholm - CFBundlePackageType - AdIM - DefaultFontFamily - Lucida Grande - DefaultFontSize - 11 - DefaultVariant - Blue - Grey - DisplayNameForNoVariant - Normal - MessageViewVersion - 4 - ShowsUserIcons - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/alternating.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/alternating.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/alternating.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/alternating.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,152 +0,0 @@ -@import url("../main.css"); - -/* HEADER */ -.outgoingheader_ctx_left { - background: url("images/ctx_right_a.png") top right no-repeat; - width:4px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.outgoingheader_ctx_center { - background: url("images/ctx_fill.png") top right repeat-x; - height:21px; - position:absolute; - left:3px; - right:2px; - top:0px; -} - -.outgoingheader_ctx_right { - background: url("images/ctx_left_a.png") top right no-repeat; - width:2px; - height:21px; - position: absolute; - right:0px; - top:0px; -} -.incomingheader_left { - width:2px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.incomingheader_center { - height:21px; - position:absolute; - left:2px; - right:3px; - top:0px; -} - -.incomingheader_right { - width:4px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - -.outgoingheader_left { - width:4px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.outgoingheader_center { - height:21px; - position:absolute; - left:3px; - right:2px; - top:0px; -} - -.outgoingheader_right { - width:2px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - -/* MESSAGE */ -.outgoing_left { - float: right; - margin 0px; - width:39px; - padding: 3px 0px 0px 0px; -} -.outgoing_right { - width:auto; - margin: 11px 44px 0px 0px; - position: relative; -} -.outgoing_right[background="Incoming/buddy_icon.png"], -.outgoing_right[background="Outgoing/buddy_icon.png"] { - margin: 11px 5px 0px 0px !important; -} -.outgoing_buddyicon { - height: 38px; - width: 38px; - background: #FFF; - border: 0px; - z-index: 3 !important; - position: absolute; - right:6px; - top:1px; -} -.outgoing_iconoverlay { - height: 41px; - width: 39px; - background: url("images/icon_overlay_a.png") top right no-repeat; - z-index: 4 !important; - position: absolute; - right:5px; - top:0px; - -} -.outgoingmessage_right { - background: url("images/message_right_a.png") top right repeat-y; - width:3px; - height: 100%; - position: absolute; - left: 0px; - top:21px; -} -.outgoingmessage_left { - background: url("images/message_left_a.png") top right repeat-y; - width:2px; - height: 100%; - position: absolute; - right: 0px; - top:21px; -} -.outgoingmessage_bottomleft { - background: url("images/message_bottomleft_a.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - right:0px; -} -.outgoingmessage_bottomright { - background: url("images/message_bottomright_a.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - left:0px; - -} -.outgoingmessage_bottomcenter { - background: url("images/message_bottom.png") bottom left repeat-x; - height: 4px; - position: absolute; - right:2px; - left:3px; -} - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/bkg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/bkg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/blue_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/ctx_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/green_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/grey_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/icon_overlay_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/icon_overlay_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/icon_overlay.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/icon_overlay.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomleft.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomright_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomright_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomright.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_bottomright.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/message_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/orange_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_left_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_left_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_right_a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_right_a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_right.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/red_right.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_bottomcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_bottomcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_bottom.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_bottom.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_leftside.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_leftside.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_topcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_topcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_l_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_bottomcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_bottomcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_rightside.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_rightside.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_topcorner.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_topcorner.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_top.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/images/status_r_top.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -
-
-
- -
-
-
-
-
-
-
-
-
%sender%
-
%time%
-
-
-
-
-
-
-
-

%message%

-
-
-
-
-
-
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -
-
-
- -
-
-
-
-
-
-
-
-
%sender%
-
%time%
-
-
-
-
-
-
-
-

%message%

-
-
-
-
-
-
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/FileTransferRequest.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -
-
-
- -
-
-
-
-
-
-
-
-
%sender%
-
%time%
-
-
-
-
-
-
-
-
-
Incoming file:
- -
%message%
- - -
-
-
-
-
-
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
- %message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
- %message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,397 +0,0 @@ -body { - margin:0; - padding:0; - color: #141414; - background: url(images/bkg.png) repeat-x top left; - position: relative; - top:0px; - background-attachment: fixed; - background-color:#EBEBEB; -} -p { - margin: 0; - padding: 0px; - overflow: auto; -} - -a { - color: #0033CC; -} - -img { - border: none; -} - -.container, .ctx_container { - margin: 0 2px 0 6px; - padding-bottom:4px; - position: relative; - clear: both; -} -.contents_left { - float: left; - margin 0px; - width:39px; - padding: 3px 0px 0px 0px; -} -.contents_right { - width:auto; - margin: 11px 5px 0px 39px; - position: relative; -} -.contents_right[background="Incoming/buddy_icon.png"], -.contents_right[background="Outgoing/buddy_icon.png"] { - margin: 11px 5px 0px 0px !important; -} - -/* ICON */ - - -.iconsubstitute[background="Incoming/buddy_icon.png"], -.iconsubstitute[background="Outgoing/buddy_icon.png"] { - display: none; -} - -.buddyicon { - height: 38px; - width: 38px; - background: #FFF; - border: 0px; - z-index: 1 !important; - position: absolute; - left:1px; - top:1px; -} -.iconoverlay { - height: 41px; - width: 39px; - background: url("images/icon_overlay.png") top right no-repeat; - z-index: 2 !important; - position: absolute; - left:0px; - top:0px; - -} - - -/* HEADER */ - -.header { - font-size: 11px; - height:21px; - color: #FFF; - font-family:Lucida Grande; - font-weight:bold; - text-shadow: #4D4D4D 1px 1px 1px; -} - -.sender { - padding:2px 30px 0 6px; - overflow:hidden; - height:15px; -} - -.time { - position: absolute; - right:5px; - top:2px; -} - -.time { - position: absolute; - right:5px; - top:2px; -} - - -/* MESSAGE */ - -.message { - background-color: #F0F0F0; -} - -.message_top { - position: relative; - overflow:hidden; -} - -.message_left { - background: url("images/message_left.png") top right repeat-y; - width:2px; - height: 100%; - position: absolute; - left: 0px; - top:21px; -} - -.message_right { - background: url("images/message_right.png") top right repeat-y; - width:3px; - height: 100%; - position: absolute; - right: 0px; - top:21px; -} - - -.text, .text_ctx { - line-height: 1.3em; - padding: 1px 10px 1px 8px; - margin-left: 1px; - margin-right: 1px; -} - -.text_ctx { - color: #979797 !important; -} - -.message_bottom { - position: relative; -} - -.message_bottomleft { - background: url("images/message_bottomleft.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - left:-1px; -} - -.message_bottomcenter { - background: url("images/message_bottom.png") bottom left repeat-x; - height: 4px; - position: absolute; - right:3px; - left:2px; -} - - -.message_bottomright { - background: url("images/message_bottomright.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - right:0px; -} - - -/* STATUS */ - -.status_container { - font-size: 10px; - font-family:Lucida Grande; - margin:11px 2px 0px 6px; - position:relative; - clear:both; -} - -.status__r_top { - position: relative; -} - -.status_r_topcorner { - background: url("images/status_r_topcorner.png") top right no-repeat; - width:3px; - height:3px; - position: absolute; - right:5px; - top:0px; -} -.status_r_top { - background: url("images/status_r_top.png") top right repeat-x; - height:3px; - position: absolute; - right:8px; - left:39px; - top:0px; -} - -.status_l_topcorner { - background: url("images/status_l_topcorner.png") top left no-repeat; - width:3px; - height:3px; - position: absolute; - left:0px; - top:0px; -} -.status_l_top { - background: url("images/status_l_top.png") top right repeat-x; - height:3px; - width:36px; - position: absolute; - left:3px; - top:0px; -} - -.status__r_bottom { - position: relative; -} - -.status_r_bottomcorner { - background: url("images/status_r_bottomcorner.png") top right no-repeat; - width:3px; - height:3px; - position: absolute; - right:5px; - bottom:-1px; -} -.status_r_bottom { - background-color: #E4E4E4; - height:1px; - position: absolute; - right:8px; - left:39px; -} - -.status_l_bottomcorner { - background: url("images/status_l_bottomcorner.png") top right no-repeat; - width:3px; - height:3px; - position: absolute; - left:0px; - bottom:-1px; -} -.status_l_bottom { - background: url("images/status_l_bottom.png") top right repeat-x; - height:3px; - width:36px; - position: absolute; - left:3px; - bottom:-1px; -} - -.status_leftside { - background: url("images/status_leftside.png") top right repeat-y; - width:39px; - position: absolute; - left: 0px; - top:3px; - bottom:2px; -} - -.status_rightside { - background: url("images/status_rightside.png") top right repeat-y; - width:3px; - position: absolute; - right: 5px; - top:3px; - bottom:2px; -} - -.status_left { - color:#FFF; - font-size:9.5px; - width:36px; - text-align:center; - float: left; - font-weight:bold; - position: absolute; - left: 2px; - top: 4px; - overflow:hidden; - white-space: nowrap; -} -.status_right { - background:#F0F0F0; - color:#787878; - font-size:9.5px; - min-height:15px; - margin: 0px 8px 0px 39px; - padding:4px 7px 0px 7px; - text-align:left; -} -.status_bump { - height:3px; -} - -/* NEXT */ - -.combine { - margin-top: 3px; - padding-top: 2px; - border-top: 1px solid #DDDDDD; -} - -.combine:hover .ctime { - visibility: visible; -} - -.combine .ctime { - float: right; - color: #8f8f8f; - top: 14px; - margin-right: -3px; - text-align:right; - visibility: hidden; -} - - - -/* CONTEXT */ - -.ctx_container { - opacity: .85; -} - -.header_ctx_left { - background: url("images/ctx_left.png") top right no-repeat; - width:2px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.header_ctx_center { - background: url("images/ctx_fill.png") top right repeat-x; - height:21px; - position:absolute; - left:2px; - right:3px; - top:0px; -} - -.header_ctx_right { - background: url("images/ctx_right.png") top right no-repeat; - width:4px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - - -#Chat { - overflow: hidden; - padding-bottom: 10px; -} - -/* FILE HANDLER */ - -.filetext { - line-height: 1.3em; - font-size: 10px; - padding: 1px 10px 1px 8px; - margin-left: 1px; - margin-right: 1px; -} - -.fileicon { - height: 32px; - width: 32px; - vertical-align: bottom; - padding: 3px 5px 3px 0; - float: left; -} -.fileincoming { - padding-top:10px; -} - -.filename a { - text-decoration: none; -} - -.filemessage { - padding: 7px 0 5px 0; - clear: both; -} \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -
-
-
- -
-
-
-
-
-
-
-
-
%sender%
-
%time%
-
-
-
-
-
-
-
-

%message%

-
-
-
-
-
-
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -
-
-
- -
-
-
-
-
-
-
-
-
%sender%
-
%time%
-
-
-
-
-
-
-
-

%message%

-
-
-
-
-
-
-
-
-
-
-
- \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
- %message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -
-
%time%
- %message% -
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/regular.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/regular.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/regular.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/regular.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ -@import url("../main.css"); - -/* HEADER */ -.incomingheader_left { - width:2px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.incomingheader_center { - height:21px; - position:absolute; - left:2px; - right:3px; - top:0px; -} - -.incomingheader_right { - width:4px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - -.outgoingheader_left { - width:2px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.outgoingheader_center { - height:21px; - position:absolute; - left:2px; - right:3px; - top:0px; -} - -.outgoingheader_right { - width:4px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - -.outgoingheader_ctx_left { - background: url("images/ctx_left.png") top right no-repeat; - width:2px; - height:21px; - position: absolute; - left:0px; - top:0px; -} - -.outgoingheader_ctx_center { - background: url("images/ctx_fill.png") top right repeat-x; - height:21px; - position:absolute; - left:2px; - right:3px; - top:0px; -} - -.outgoingheader_ctx_right { - background: url("images/ctx_right.png") top right no-repeat; - width:4px; - height:21px; - position: absolute; - right:0px; - top:0px; -} - -/* MESSAGE */ -.outgoing_left { - float: left; - margin 0px; - width:39px; - padding: 3px 0px 0px 0px; -} -.outgoing_right { - width:auto; - margin: 11px 5px 0px 39px; - position: relative; -} -.outgoing_right[background="Incoming/buddy_icon.png"], -.outgoing_right[background="Outgoing/buddy_icon.png"] { - margin: 11px 5px 0px 0px !important; -} - -.outgoing_buddyicon { - height: 38px; - width: 38px; - background: #FFF; - border: 0px; - z-index: 1 !important; - position: absolute; - left:1px; - top:1px; -} -.outgoing_iconoverlay { - height: 41px; - width: 39px; - background: url("images/icon_overlay.png") top right no-repeat; - z-index: 2 !important; - position: absolute; - left:0px; - top:0px; - -} -.outgoingmessage_top { - position: relative; - overflow:hidden; -} - -.outgoingmessage_left { - background: url("images/message_left.png") top right repeat-y; - width:2px; - height: 100%; - position: absolute; - left: 0px; - top:21px; -} - -.outgoingmessage_right { - background: url("images/message_right.png") top right repeat-y; - width:3px; - height: 100%; - position: absolute; - right: 0px; - top:21px; -} -.outgoingmessage_bottomleft { - background: url("images/message_bottomleft.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - left:-1px; -} - -.outgoingmessage_bottomcenter { - background: url("images/message_bottom.png") bottom left repeat-x; - height: 4px; - position: absolute; - right:3px; - left:2px; -} - - -.outgoingmessage_bottomright { - background: url("images/message_bottomright.png") top right no-repeat; - width:3px; - height:4px; - position: absolute; - right:0px; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ -
-
-
-
-
-
-
-
-
- -
-
%shortTime%
%message%
-
-
-
-
-
-
-
-
-
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../alternating.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../alternating.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_left_a.png") top right no-repeat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../alternating.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Blue - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../alternating.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_left_a.png") top right no-repeat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,29 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_right_a.png") top right no-repeat; - -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_left_a.png") top right no-repeat; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Green - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Grey - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Orange - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../alternating.css"); - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Alt Red - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../alternating.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_right_a.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_left_a.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../regular.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../regular.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../regular.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Blue - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -@import url("../regular.css"); - -.incomingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Green - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Grey - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Orange - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Blue.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/blue_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/blue_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/blue_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Green.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/green_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/green_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/green_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Grey.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/grey_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/grey_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/grey_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Orange.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -@import url("../regular.css"); - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/orange_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/orange_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/orange_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Stockholm/Contents/Resources/Variants/Red - Red.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -@import url("../regular.css"); - - - -.incomingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.incomingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.incomingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} - -.outgoingheader_left { - background: url("../images/red_left.png") top right no-repeat; -} - -.outgoingheader_center { - background: url("../images/red_fill.png") top right repeat-x; -} - -.outgoingheader_right { - background: url("../images/red_right.png") top right no-repeat; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Info.plist qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Info.plist --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Info.plist 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Info.plist 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ - - - - - CFBundleDevelopmentRegion - German - CFBundleGetInfoString - Vacation - CFBundleIdentifier - com.mac-home.vacation.style - CFBundleInfoDictionaryVersion - 1.0 - CFBundleName - Vacation - CFBundlePackageType - AdIM - DefaultFontFamily - Skia - DefaultFontSize - 12 - DefaultVariant - Sonnenuntergang 1 - DisplayNameForNoVariant - Standard - MessageViewVersion - 2 - ShowsUserIcons - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageDark.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageDark.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageDark.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageDark.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.content { - background-image: url(../images/messageDarkBG.png); -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/MessageVeryDark.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.content { - background-image: url(../images/messageVeryDarkBG.png); -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowNo.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.shadow { - background-image: none; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/css/ShadowYes.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -.shadow { - background-image: url(../images/messageShadow.png); -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Header.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Header.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Header.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Header.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,23 +0,0 @@ - - \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Apfelbaum.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Apfelbaum.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Bambus.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Bambus.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/GlitzerndeWelle.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/GlitzerndeWelle.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneBlaetter.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneBlaetter.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneMauern.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/MediterraneMauern.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Mittelmeer.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Mittelmeer.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SchattigerLaubbaum.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SchattigerLaubbaum.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Sonnenblick.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/Sonnenblick.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnenuntergangRheinufer.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnenuntergangRheinufer.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnigeBaumkrone.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_backgroundimages/SonnigeBaumkrone.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/header_bg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/header_bg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/glass.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/glass.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/tiger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/tiger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-hide.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show-hover.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show-hover.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/_headers/toggle-show.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageDarkBG.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageDarkBG.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageShadow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageShadow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageVeryDarkBG.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/images/MessageVeryDarkBG.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -
-
-
%sender%
-
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -
-
-
%sender%
-
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Incoming/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
%time%
-
%message%
- -
\ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/incoming_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/incoming_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/main.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/main.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/main.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/main.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* import default header style sheet */ -@import url("styles/_headers/_default.css"); - - -body { - background: url(images/_backgroundimages/SchattigerLaubbaum.jpg) no-repeat fixed; - -} - -.sender .name { - color: #ddffee; - font-family: "Trebuchet MS", TrebuchetMS; - font-size: 16px; - font-weight: bold; - margin-bottom: -4px; - margin-left: 10px; - margin-right: 20px; - text-shadow: #000000 0px 0px 4px; -} - -.sender .name.co { - text-align: right; -} - -/*message content*/ -.content { - background: url(images/MessageDarkBG.png); - border: 0px black solid; - color: #ffffff; - font-family: "Trebuchet MS", TrebuchetMS; - font-size: 11px; - line-height: 1.3em; - word-wrap: break-word; -} - -.contentText { - color: #ffffff; - padding-top: 5px; - padding-bottom: 5px; - margin-right: 20px; - margin-left: 20px; - font-family: Skia, sans-serif; - font-size: 11px; - text-align: justify; -} - -.contentSpacer { - padding-top: 5px; - padding-bottom: 4px; -} - -.message { -} - -.message a { - color: #ffffff; -} - -.message a:hover { - color: #ffffff; -} - -.shadow { - background: url(images/MessageShadow.png) repeat-x top; - height: 9px; -} - -.date { - color: #ffffff; - float: right; - font-family: Arial; - font-size: 10px; - margin-left: 20px; - margin-right: 20px; - margin-bottom: 5px; - opacity: 1; - padding-top: 5px; - text-shadow: #000 0px 0px 2px; -} - -.status { - color: #ddffee; - font-family: "Trebuchet MS", TrebuchetMS; - font-size: 11px; - font-weight: bold; - margin-bottom: .5em; - opacity: 1; - text-align: center; - text-shadow: #000000 0px 0px 2px; -} - -.status a { - color: #ddffee; -} - -.status a:hover { - color: #ddffee; -} - -#Chat { - overflow: visible; - padding-top: 50px; - padding-bottom: 6px; - margin-bottom: 0px; -} - -.context { - opacity: .6; -} - -img.scaledToFitImage{ - width: auto; -} \ No newline at end of file Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/buddy_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/buddy_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Content.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -
-
-
%sender%
-
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/Context.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,16 +0,0 @@ - -
-
-
%sender%
-
-
-
-
%time%
-
%message%
-
-
-
-
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContent.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Outgoing/NextContext.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -
%time%
-
%message%
- -
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Status.html qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Status.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Status.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Status.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,2 +0,0 @@ -
%message% (%time%)
-
\ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/_default.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -/* @group header */ - -#header { - color: #FFF; - cursor: default; - font-family: helvetica, sans-serif; - overflow: hidden; - position: fixed; - top: 0px; - left: 0px; - z-index: 5; - width: 100%; - height: 65px; - text-shadow: #1f4971 0px 1px 2px; -} - -#header_bar { - background: url("../../images/header_bg.png") repeat; - border-bottom: 1px solid white; - width: 100%; - height: 64px; - position: relative; -} - -#header_bar .chattitel { - margin: 0px 125px 0px 125px; - padding-top: 10px; - font-size: 18px; - font-weight: bold; - text-align: center; -} - -#header_bar .uhrzeit { - font-size: 15px; - color: #dfdfdf; - letter-spacing: 0px; -} - -#header_bar .sitzplatz { - margin-top: 20px; - font-size: 11px; - color: #dfdfdf; - padding: 6px; -} - -#header_bar .sitzplatz.me { - float: left; -} - -#header_bar .sitzplatz.co { - float: right; -} - -img.picture { - width: 64px; - height: 64px; - border-right: 1px solid white; - float: left; -} - -img.picture.co { - border-right: 0px; - border-left: 1px solid white; - float: right; -} - -/* @group toggle */ - -#toggle_hide { - cursor: pointer; - background: url("../../images/_headers/toggle-hide.png") no-repeat top left; - position: fixed; - top: 3px; - left: 3px; - width: 14px; - height: 10px; - visibility: hidden; - z-index: 6; -} - -#header:hover #toggle_hide { - visibility: visible; -} - -#header #toggle_hide:hover { - background-image: url("../../images/_headers/toggle-hide-hover.png"); -} - -#toggle_show { - cursor: pointer; - background: url("../../images/_headers/toggle-show.png") no-repeat top left; - position: fixed; - top: 3px; - left: 3px; - width: 14px; - height: 10px; - z-index: 6; -} - -#header #toggle_show:hover { - background-image: url("../../images/_headers/toggle-show-hover.png"); -} - -/* @end */ - - -/* @end */ - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/styles/_headers/glass.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* @group header */ - -#header { - height: 40px; - text-shadow: #505050 0px 1px 2px; -} - -#header_bar { - background-image: url("../../images/_headers/glass.png"); - height: 40px; -} - -#header_bar .left { - font-size: 16px; - letter-spacing: 0px; - top: 6px; - left: 10px; -} - -#header_bar .right { - font-size: 14px; - letter-spacing: 0px; - top: 7px; - right: 10px; -} - -/* @end */ - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Apfelbaum.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/Apfelbaum.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Bambus.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/Bambus.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Glitzernde Welle.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/GlitzerndeWelle.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Blaetter.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/MediterraneBlaetter.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mediterrane Mauern.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/MediterraneMauern.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Mittelmeer.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/Mittelmeer.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Schattiger Laubbaum.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/SchattigerLaubbaum.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenblick.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/Sonnenblick.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnenuntergang Rheinufer.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/SonnenuntergangRheinufer.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/chat/Vacation/Contents/Resources/Variants/Sonnige Baumkrone.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,5 +0,0 @@ -@import url("../main.css"); - -body { - background: url(../images/_backgroundimages/SonnigeBaumkrone.jpg) no-repeat fixed; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/resources/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,10 +0,0 @@ -if (COPY_DATA_FILES_ON_CONFIGURE) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/chat/* ${DATA_COPY_DIR}/chat/.) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/config/* ${DATA_COPY_DIR}/config/.) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/pics/* ${DATA_COPY_DIR}/pics/.) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/sounds/* ${DATA_COPY_DIR}/sounds/.) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/webpages/* ${DATA_COPY_DIR}/webpages/.) - if (WIN32) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/css/* ${DATA_COPY_DIR}/css/.) - endif (WIN32) -endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/branding.xml qutecom-2.2+dfsg1/wengophone/resources/config/branding.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/branding.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/config/branding.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ - -QuteCom -QuteCom - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/resources/config/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/config/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -if (COPY_DATA_FILES_ON_CONFIGURE) - ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${DATA_COPY_DIR}/config/.) -endif (COPY_DATA_FILES_ON_CONFIGURE) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/config.xml qutecom-2.2+dfsg1/wengophone/resources/config/config.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/config.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/config/config.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,282 +0,0 @@ - - -15 - -1 -sounds/callclosed.wav - - - SPEEX/8000 - SPEEX/16000 - ILBC/8000 - - PCMU/8000 - PCMA/8000 - - GSM/8000 - G722/8000 - - - -sounds/doublecall.wav -0 - - -sounds/ringin.wav -sounds/outgoingcall.wav - - - - ALSA: default - default - DeviceTypeWaveIn - - - - - ALSA: default - default - DeviceTypeWaveOut - - - - - ALSA: default - default - DeviceTypeWaveOut - - -1 -sounds/tones/ - -0 -unauthorized - - - - - - - button.wengo.com - button.wdeal.com - - - -phapi-plugins - - - - -1 -0 -2 -1 -0 -1 -1 -1 -wengo - - -Hidden - -1 - -detect - - -renkoo -renkoo - - - -NatTypeSymmetric -0 - - -0 - -5060 -stun.wengo.fr -1 -0 -80 - -0 - -0 -0 -0 -0 -1 -1 -1 - - - -0 -0 -0 -0 -0 - -500 - -100 -100 -300 - -1 -0 -VideoQualityNormal - -0 - -0 - - - - ALSA: default - default - DeviceTypeWaveIn - - - - - ALSA: default - default - DeviceTypeWaveOut - - - - - ALSA: default - default - DeviceTypeWaveOut - - -WenboxStatusNotConnected - -/cirpack/index.php -/directory/index.php -/info/info.php -mbdsys.com -/sms/sendsms.php -/QuteCom/update/ -/softphone-sso/sso2.php -/softphone-subscription/index.php -voip.wengo.fr -333@voip.wengo.fr -335@voip.wengo.fr - - - -5060 - -5060 - -0 - - - -2940 -300 -true -false -false -false - - - -http://www.wengo.com/public/public.php?page=subscribe_wengos&wl=wengo&lang=@lang@ - - -http://www.qutecom.org - - -http://www.qutecom.org - - -http://www.wengo.com/public/public.php?page=product_sms&wl=wengo&lang=@lang@ - - -http://www.wengo.com/public/public.php?page=product_voicemail&wl=wengo&lang=@lang@ - - -http://www.wengo.com/public/public.php?page=main_smart_directory_ng&wl=wengo&lang=@lang@ - - -http://www.wengo.com/public/public.php?page=smart_directory_ng&wl=wengo&lang=@lang@ - - -http://www.qutecom.org - - -https://secure.wengo.com/selfcare/wengophone/auth/auth.php?page=homepage&wl=wengo&lang=@lang@&login=@login@&password=@password@ - - -https://secure.wengo.com/selfcare/wengophone/auth/auth.php?page=reload&wl=wengo&lang=@lang@&login=@login@&password=@password@ - - -http://www.wengo.com/public/public.php?page=download&wl=wengo&lang=@lang@&login=@login@&password=@password@ - - -https://secure.wengo.com/selfcare/wengophone/auth/auth.php?page=display_account&wl=wengo&lang=@lang@&login=@login@&password=@password@ - - -http://www.qutecom.org - - -http://www.wengo.com/public/public.php?page=lostpassword&wl=wengo&lang=@lang@ - -https://launchpad.net/wengophone -http://www.wengo.com/auth/auth.php -https://secure.wengo.com/selfcare/wengophone/auth/auth.php -http://www.qutecom.org - -1 -1 -unknown -unknown - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/imaccountparameters.xml qutecom-2.2+dfsg1/wengophone/resources/config/imaccountparameters.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/config/imaccountparameters.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/config/imaccountparameters.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,36 +0,0 @@ - -0 -1 -0 - -0 - - -0 -scs.msg.yahoo.com -cs.yahoo.co.jp -5050 -filetransfer.msg.yahoo.com -filetransfer.msg.yahoo.co.jp -80 -us -messenger.hotmail.com -1863 -gateway.messenger.hotmail.com -1 -login.oscar.aol.com -5190 -ISO-8859-1 - -5222 -QuteCom -1 -1 -0 -0 - - -im.myspace.akadns.net -1863 - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/css/qutecom.css qutecom-2.2+dfsg1/wengophone/resources/css/qutecom.css --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/css/qutecom.css 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/css/qutecom.css 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/* Turn the border of all lists to red, and it's background to light gray: */ - - - /*QMainWindow,QDialog,QWidget#centralWidget - { - background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #E0E0E0, stop: 1 #FFFFFF); - /* border: 0.3px solid gray; - /*border-radius: 1px; - margin-top: 3ex; /* leave space at the top for the title */ - /*} - /*QLabel - { - background-color:solid gray - - }*/ - /*QTreeView#treeView - { - background-image: url(:/pics/arcor.png); - background-repeat: no-repeat; - background-position:bottom right; - } - - QTreeWidget#treeWidget - { - background-image: url(:/pics/arcor.png); - background-repeat: no-repeat; - background-position:bottom right; - }*/ - -QLineEdit -{ - border: 1px solid grey; - border-radius: 5px; - /* padding: 10px;*/ -} - -QComboBox -{ - border: 1px solid grey; - border-radius: 5px; - padding-left: 1px; - padding-top: 1px; - padding-bottom: 1px; - /* padding-right:15px;*/ -} - -QComboBox::down-arrow -{ - image: url(:/pics/history/filter.png); - background-color:White; -} - -QComboBox QAbstractItemView -{ - border: 1px solid grey; -} - - -QComboBox::drop-down -{ - subcontrol-origin: padding; - subcontrol-position: top right; - width: 20px; - - border-left-width: 1px; - border-left-color: darkgray; - border-left-style: solid; - border-top-right-radius: 5px; - border-bottom-right-radius: 5px; -} - -QDateTimeEdit -{ - border: 1px solid grey; - border-bottom-left-radius: 5px; - border-top-left-radius: 5px; - padding-left: 1px; - padding-top: 1px; - padding-bottom: 1px; - /* padding-right:15px;*/ -} - - /*QGroupBox { - background-color: qlineargradient(x1: 0, y1: 0, x2: 0, y2: 1, - stop: 0 #E0E0E0, stop: 1 #FFFFFF); - border: 2px solid gray; - border-radius: 5px; - margin-top: 1ex; /* leave space at the top for the title - }*/ - - QHeaderView::section { - background-color: qlineargradient(x1:0, y1:0, x2:0, y2:1, - stop:0 #616161, stop: 0.5 #505050, - stop: 0.6 #434343, stop:1 #656565); - color: white; - padding-left: 4px; - border: 1px solid #6c6c6c; - } - /* - QLineEdit { - border: 2px solid gray; - border-radius: 10px; - padding: 0 8px; - background: white; - selection-background-color: darkgray; - } - - QLineEdit[echoMode="2"] { - lineedit-password-character: 9679; - } - - QLineEdit:read-only { - background: lightblue; - } - - /*QMenu { - background-color: lightblue; /* sets background of the menu */ - /*border: 1px solid black; - } - - QMenu::item { - /* sets background of menu item. set this to something non-transparent - if you want menu color and menu item color to be different - background-color: transparent; - } - - QMenu::item:selected { /* when user selects item using mouse or keyboard - background-color: white; - }*/ - -LogAccount -{ - QLabel#loginLabel - { - background-image: url(:/pics/headers/login.png); - } -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/css/README.txt qutecom-2.2+dfsg1/wengophone/resources/css/README.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/css/README.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/css/README.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,6 +0,0 @@ -Any file ending with .css placed here will be loaded by the WengoPhone to -customize its appearance. - -For more information regarding Qt stylesheets, have a look at this url: - -http://doc.trolltech.com/qt/stylesheet Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/about_logo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/about_logo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/accept-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/accept-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/add-contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/add-contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/delete.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/delete.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/hangup-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/hangup-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/hold-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/hold-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/resume-phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/resume-phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/send_file.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/send_file.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/actions/send-sms-16.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/actions/send-sms-16.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/add.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/add.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/application-icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/application-icon.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/audio/microphone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/audio/microphone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/audio/speaker.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/audio/speaker.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatar_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatar_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/default-avatar.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/default-avatar.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export11_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export11_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export12_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export12_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export13_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export13_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export14_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export14_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export15_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export15_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export16_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export16_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export17_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export17_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export18_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export18_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export1_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export1_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export19_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export19_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export20_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export20_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export21_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export21_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export22_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export22_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export23_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export23_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export24_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export24_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export25_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export25_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export26_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export26_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export27_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export27_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export28_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export28_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export2_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export2_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export29_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export29_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export30_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export30_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export31_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export31_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export32_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export32_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export33_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export33_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export34_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export34_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export35_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export35_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export36_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export36_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export37_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export37_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export38_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export38_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export3_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export3_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export39_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export39_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export40_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export40_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export4_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export4_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export5_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export5_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export6_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export6_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export7_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export7_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export8_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export8_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/avatars/export9_96.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/avatars/export9_96.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/callbar/call_bar_button_hangup_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/callbar/call_bar_button_hangup_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/callbar/call_bar_button_hangup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/callbar/call_bar_button_hangup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/callbar/call_bar_button_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/callbar/call_bar_button_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/callbar/call_bar_button.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/callbar/call_bar_button.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/callbar/call_bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/callbar/call_bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/cancel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/cancel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/bar_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/bar_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/block-a.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/block-a.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat_emoticon_button_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat_emoticon_button_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat_emoticon_button.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat_emoticon_button.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat_emoticon_button.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat_emoticon_button.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat-room.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat-room.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/chat_send.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/chat_send.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/contact-details.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/contact-details.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_bold_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_bold_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_bold.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_bold.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_italic_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_italic_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_italic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_italic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_underline_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_underline_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/font_underline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/font_underline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/hide_avatar_frame.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/hide_avatar_frame.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/new_chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/new_chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/chat/show_avatar_frame.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/chat/show_avatar_frame.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/close_normal.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/close_normal.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/close_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/close_on.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/resources/pics/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/pics/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -if (COPY_DATA_FILES_ON_CONFIGURE) - # For some unknown reason, the commented line below fails under Windows - # (Tested with cmake 2.4.5 and cmake 2.4.6). CMake enters an infinite loop - # while copying "protocols/overlay_presence_away.png", it outputs an - # endless string of broken chars. To workaround this, copy each folder by - # hand :-( - - #ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${DATA_COPY_DIR}/pics/) - - ow_copy_dir(${CMAKE_CURRENT_SOURCE_DIR}/*.png ${DATA_COPY_DIR}/pics/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/actions/*.png ${DATA_COPY_DIR}/pics/actions/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/audio/*.png ${DATA_COPY_DIR}/pics/audio/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/callbar/*.png ${DATA_COPY_DIR}/pics/callbar/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/chat/*.png ${DATA_COPY_DIR}/pics/chat/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/config/*.png ${DATA_COPY_DIR}/pics/config/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/contact/*.png ${DATA_COPY_DIR}/pics/contact/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/dialpad/*.png ${DATA_COPY_DIR}/pics/dialpad/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/emoticons/*.png ${DATA_COPY_DIR}/pics/emoticons/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/filetransfer/*.png ${DATA_COPY_DIR}/pics/filetransfer/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/headers/*.png ${DATA_COPY_DIR}/pics/headers/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/history/*.png ${DATA_COPY_DIR}/pics/history/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/iconbar/*.png ${DATA_COPY_DIR}/pics/iconbar/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/phonecall/*.png ${DATA_COPY_DIR}/pics/phonecall/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/profilebar/*.png ${DATA_COPY_DIR}/pics/profilebar/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/protocols/*.png ${DATA_COPY_DIR}/pics/protocols/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/status/*.png ${DATA_COPY_DIR}/pics/status/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/statusbar/*.png ${DATA_COPY_DIR}/pics/statusbar/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/systray/*.png ${DATA_COPY_DIR}/pics/systray/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/toaster/*.png ${DATA_COPY_DIR}/pics/toaster/) - - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.mng ${DATA_COPY_DIR}/pics/) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/*.xml ${DATA_COPY_DIR}/pics/) -endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/advanced.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/advanced.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/appearance.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/appearance.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/appearance.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/appearance.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/audio.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/audio.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/call-forward.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/call-forward.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/general.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/general.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/imaccounts.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/imaccounts.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/languages.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/languages.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/notifications.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/notifications.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/privacy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/privacy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/video.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/video.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/config/voicemail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/config/voicemail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/call.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/call.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/home.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/home.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/landline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/landline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/mobile.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/mobile.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/contact/sms.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/contact/sms.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/delete.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/delete.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/10_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/10_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/11_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/11_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/12_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/12_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/1_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/1_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/2_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/2_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/3_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/3_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/4_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/4_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/5_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/5_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/6_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/6_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/7_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/7_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/8_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/8_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/9_on.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/9_on.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/audiosmileys.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/audiosmileys.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/dialpad/dialpad.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/dialpad/dialpad.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/down.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/down.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/edit.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/edit.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/angel.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/angel.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/angry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/angry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/ap.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/ap.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/asl.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/asl.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/au.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/au.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/bat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/bat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/bearingteeth.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/bearingteeth.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/beer.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/beer.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/blank_look.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/blank_look.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/boy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/boy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/brb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/brb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/cake.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/cake.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/camera.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/camera.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/cat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/cat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/ci.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/ci.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/clock.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/clock.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/cocktail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/cocktail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/coins.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/coins.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/confused.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/confused.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/co.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/co.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/cry.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/cry.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/cup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/cup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/devil.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/devil.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/dog.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/dog.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/dunno.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/dunno.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/embarrassed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/embarrassed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/envelope.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/envelope.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/film.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/film.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/girl.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/girl.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/h5.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/h5.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/handcuffs.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/handcuffs.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/icondef.xml qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/icondef.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/icondef.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/icondef.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,674 +0,0 @@ - - - - - :-) - :) - regular.png - - - :-D - :D - :> - :-d - megasmile.png - - - :-O - :o - omg.png - - - :-p - :p - tongue.png - - - ;-) - ;) - wink.png - - - :-( - :( - sad.png - - - 8o| - bearingteeth.png - - - :-@ - :@ - angry.png - - - 8-) - nerd.png - - - :'( - cry.png - - - :-S - :-s - confused.png - - - :-$ - embarrassed.png - - - :-| - :| - dunno.png - - - :-* - (K) - kiss.png - - - :-# - secret.png - - - (H) - shade.png - - - (A) - angel.png - - - +o( - sick.png - - - (brb) - brb.png - - - (6) - devil.png - - - (Y) - thumbs_up.png - - - (N) - thumbs_down.png - - - (X) - girl.png - - - (Z) - boy.png - - - (L) - love.png - - - (P) - camera.png - - - (G) - present.png - - - (%) - handcuffs.png - - - (F) - rose.png - - - (D) - cocktail.png - - - (B) - beer.png - - - (C) - cup.png - - - (^) - cake.png - - - (pi) - pizza.png - - - (M) - messenger.png - - - (sn) - snail.png - - - (tu) - tu.png - - - (bah) - sheep.png - - - :-[ - :[ - bat.png - - - (?) - asl.png - - - (@) - cat.png - - - (&) - dog.png - - - (8) - note.png - - - (ip) - ip.png - - - (S) - moon.png - - - (*) - star.png - - - (R) - rainbow.png - - - (#) - sun.png - - - (li) - li.png - - - (st) - st.png - - - (co) - co.png - - - (mp) - mp.png - - - (T) - phone.png - - - (E) - envelope.png - - - (ap) - ap.png - - - (au) - au.png - - - (~) - film.png - - - (O) - clock.png - - - (so) - so.png - - - (ci) - ci.png - - - (h5) - h5.png - - - (mo) - coins.png - - - - - :-) - :) - (-: - (: - regular.png - - - :-D - :D - megasmile.png - - - :-O - :O - omg.png - - - :-P - :P - tongue.png - - - ;-) - ;) - wink.png - - - :-( - :( - sad.png - - - :-/ - :-\ - confused.png - - - :"> - embarrassed.png - - - :-> - :> - sarcastic.png - - - :-| - :| - blank_look.png - - - B-) - shade.png - - - :-B - nerd.png - - - X-( - X( - nerd.png - - - :-X - :X - love.png - - - |-) - |) - l-) - l) - sleepy.png - - - @};- - rose.png - - - 0:-) - angel.png - - - >:) - devil.png - - - >:) - devil.png - - - :-$ - sshh.png - - - ~o) - cup.png - - - :-& - sick.png - - - =* - kiss.png - - - - - :-) - :) - regular.png - - - :-D - :D - :> - :-d - megasmile.png - - - :-O - :o - omg.png - - - :-p - :p - tongue.png - - - ;-) - ;) - wink.png - - - :-( - :( - sad.png - - - 8o| - bearingteeth.png - - - :-@ - :@ - angry.png - - - 8-) - nerd.png - - - :'( - cry.png - - - :-S - :-s - confused.png - - - :-$ - embarrassed.png - - - :-| - :| - dunno.png - - - :-* - (K) - kiss.png - - - :-# - secret.png - - - (H) - shade.png - - - (A) - angel.png - - - +o( - sick.png - - - (brb) - brb.png - - - (6) - devil.png - - - (Y) - thumbs_up.png - - - (N) - thumbs_down.png - - - (X) - girl.png - - - (Z) - boy.png - - - (L) - love.png - - - (P) - camera.png - - - (G) - present.png - - - (%) - handcuffs.png - - - (F) - rose.png - - - (D) - cocktail.png - - - (B) - beer.png - - - (C) - cup.png - - - (^) - cake.png - - - (pi) - pizza.png - - - (M) - messenger.png - - - (sn) - snail.png - - - (tu) - tu.png - - - (bah) - sheep.png - - - :-[ - :[ - bat.png - - - (?) - asl.png - - - (@) - cat.png - - - (&) - dog.png - - - (8) - note.png - - - (ip) - ip.png - - - (S) - moon.png - - - (*) - star.png - - - (R) - rainbow.png - - - (#) - sun.png - - - (li) - li.png - - - (st) - st.png - - - (co) - co.png - - - (mp) - mp.png - - - (T) - phone.png - - - (E) - envelope.png - - - (ap) - ap.png - - - (au) - au.png - - - (~) - film.png - - - (O) - clock.png - - - (so) - so.png - - - (ci) - ci.png - - - (h5) - h5.png - - - (mo) - coins.png - - - - - - :-) - :) - regular.png - - - :-D - :D - :> - :-d - megasmile.png - - - :-O - :o - omg.png - - - :-p - :p - tongue.png - - - ;-) - ;) - wink.png - - - :-( - :( - sad.png - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/ip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/ip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/kiss.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/kiss.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/li.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/li.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/love.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/love.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/megasmile.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/megasmile.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/messenger.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/messenger.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/moon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/moon.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/mp.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/mp.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/nerd.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/nerd.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/note.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/note.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/omg.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/omg.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/phone.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/phone.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/pizza.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/pizza.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/present.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/present.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/rainbow.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/rainbow.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/regular.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/regular.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/rose.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/rose.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sad.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sad.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sarcastic.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sarcastic.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/secret.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/secret.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/shade.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/shade.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sheep.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sheep.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sick.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sick.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sleepy.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sleepy.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/snail.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/snail.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/so.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/so.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sshh.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sshh.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/star.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/star.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/st.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/st.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/sun.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/sun.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/thumbs_down.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/thumbs_down.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/thumbs_up.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/thumbs_up.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/tongue.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/tongue.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/tu.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/tu.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/emoticons/wink.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/emoticons/wink.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/exit.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/exit.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/filetransfer/cleanup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/filetransfer/cleanup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/filetransfer/download_folder.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/filetransfer/download_folder.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/filetransfer/send-file.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/filetransfer/send-file.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/group_close.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/group_close.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/group_open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/group_open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/headers/conference.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/headers/conference.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/headers/file-transfer.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/headers/file-transfer.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/headers/login.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/headers/login.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/help.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/help.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/call_incoming.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/call_incoming.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/call_missed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/call_missed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/call_outgoing.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/call_outgoing.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/filter.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/filter.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/history/sms_sent.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/history/sms_sent.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/add_contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/add_contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/conference.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/conference.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/search_contact.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/search_contact.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/sms.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/sms.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/iconbar/webcam.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/iconbar/webcam.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/important.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/important.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/open.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/open.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/phonecall/avatar_background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/phonecall/avatar_background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/phonecall/encryption.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/phonecall/encryption.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/play.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/play.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_end.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_end.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_fill.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_fill.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_separator_left.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_separator_left.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_on_start_status_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_separator.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_separator.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_start_status_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_start_status_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_start_status_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_start_status_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_start_status_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_start_status_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_start_status_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_start_status_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/bar_start_status_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/bar_start_status_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/credit/call_forward.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/credit/call_forward.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/credit/wengos.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/credit/wengos.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/event/call_missed.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/event/call_missed.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/event/voicemessage_new.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/event/voicemessage_new.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/indicator_contract.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/indicator_contract.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/profilebar/indicator_expand.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/profilebar/indicator_expand.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/aim_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/aim_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/aim.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/aim.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/facebook_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/facebook_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/facebook.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/facebook.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/google-talk_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/google-talk_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/google-talk.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/google-talk.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/icq_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/icq_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/icq.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/icq.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/jabber_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/jabber_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/jabber.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/jabber.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/msn_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/msn_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/msn.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/msn.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/myspace_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/myspace_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/myspace.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/myspace.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_presence_away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_presence_away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_presence_donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_presence_donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_presence_invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_presence_invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_presence_offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_presence_offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_presence_online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_presence_online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/overlay_progress.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/overlay_progress.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/sip_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/sip_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/sip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/sip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/skype_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/skype_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/skype.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/skype.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/twitter_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/twitter_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/twitter.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/twitter.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/wengo_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/wengo_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/wengo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/wengo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/yahoo_off.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/yahoo_off.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/protocols/yahoo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/protocols/yahoo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/testcall.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/testcall.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/testcall.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/testcall.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/unknown.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/unknown.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/unknown-sip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/unknown-sip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/unknown-wengo.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/unknown-wengo.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/unknown-wengo-sip.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/unknown-wengo-sip.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/status/wdeal.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/status/wdeal.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/audio_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/audio_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/audio_status_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/audio_status_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/input_volume_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/input_volume_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/input_volume_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/input_volume_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/internet_status_connecting.mng and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/internet_status_connecting.mng differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/internet_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/internet_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/network_status_connecting.mng and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/network_status_connecting.mng differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/network_status_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/network_status_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/network_status_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/network_status_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/output_volume_error.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/output_volume_error.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/output_volume_ok.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/output_volume_ok.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/statusbar/output_volume.xcf and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/statusbar/output_volume.xcf differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/away.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/away.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/connecting.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/connecting.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/disconnected.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/disconnected.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/donotdisturb.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/donotdisturb.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/invisible.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/invisible.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/offline.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/offline.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/systray/online.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/systray/online.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/toaster/chat.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/toaster/chat.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/toaster/hangup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/toaster/hangup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/toaster/pickup.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/toaster/pickup.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/toaster/toaster-background.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/toaster/toaster-background.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/update.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/update.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/up.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/up.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/video_attach.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/video_attach.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/video_detach.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/video_detach.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/video_flip.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/video_flip.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/video_fullscreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/video_fullscreen.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/pics/video_unfullscreen.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/pics/video_unfullscreen.png differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/callclosed.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/callclosed.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/callhold.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/callhold.wav differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/resources/sounds/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -if (COPY_DATA_FILES_ON_CONFIGURE) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${DATA_COPY_DIR}/sounds) -endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/contactoffline.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/contactoffline.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/contactonline.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/contactonline.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/doublecall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/doublecall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/incomingcall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/incomingcall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/incomingchat.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/incomingchat.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/incomingmms.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/incomingmms.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/incomingsms.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/incomingsms.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/once_a2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/once_a2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/once_b1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/once_b1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/once_b2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/once_b2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/once_c1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/once_c1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/once_c2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/once_c2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/outgoingcallbusy.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/outgoingcallbusy.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/outgoingcall.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/outgoingcall.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/ringin.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/ringin.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/combo_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/combo_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/dialpad.xml qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/dialpad.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/dialpad.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/dialpad.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,17 +0,0 @@ - - - - - - - - - - - - - - - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_0.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_0.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_3.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_3.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_4.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_4.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_5.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_5.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_6.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_6.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_7.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_7.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_8.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_8.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_9.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_9.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_pound.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_pound.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/default/sound_star.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/default/sound_star.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/combo_icon.png and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/combo_icon.png differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_image.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_image.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_image.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_image.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,23186 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - MEDHI N. - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_mask.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_mask.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_mask.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad_mask.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad.xml qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad.xml --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/dialpad.xml 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/dialpad.xml 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_0.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_0.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_0.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_0.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_1.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_1.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_1.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_1.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_2.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_2.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_2.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_2.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_3.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_3.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_3.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_3.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_4.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_4.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_4.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_4.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_5.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_5.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_5.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_5.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,1080 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_6.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_6.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_6.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_6.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_7.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_7.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_7.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_7.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_8.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_8.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_8.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_8.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,300 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_9.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_9.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_9.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_9.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_pound.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_pound.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_pound.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_pound.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ - - - - - -]> - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_star.svg qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_star.svg --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/layer_star.svg 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/layer_star.svg 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ - - - - - -]> - - - - - - - - - - - - - - - - - - - - - - - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_0.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_0.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_1.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_1.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_2.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_2.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_3.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_3.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_4.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_4.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_5.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_5.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_6.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_6.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_7.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_7.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_8.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_8.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_9.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_9.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_pound.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_pound.wav differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/sounds/tones/jungle/sound_star.wav and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/sounds/tones/jungle/sound_star.wav differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/resources/webpages/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/webpages/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -if (COPY_DATA_FILES_ON_CONFIGURE) - ow_copy_dir_recursive(${CMAKE_CURRENT_SOURCE_DIR}/* ${DATA_COPY_DIR}/webpages/.) -endif (COPY_DATA_FILES_ON_CONFIGURE) Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu_bas_d.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu_bas_d.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu_bas_g.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu_bas_g.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu_bas.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu_bas.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu_d.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu_d.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu_g.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu_g.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/bleu.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/bleu.gif differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/houpeto-anim.gif and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/houpeto-anim.gif differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/loading.html qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/loading.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/loading.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/loading.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ - - - - - QuteCom 2.2 - - - - - -
-
- Please wait while logging in... -
-
- - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/logged-off.html qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/logged-off.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/logged-off.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/logged-off.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ - - - - - WengoPhone 2.0 - - - - - -
- -
- Logged off... -
- -
- - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/sip.html qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/sip.html --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/webpages/windows/sip.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/webpages/windows/sip.html 1970-01-01 00:00:00.000000000 +0000 @@ -1,203 +0,0 @@ - - - - - WengoPhone 2.0 - - - - - - -
-
- - - -
-
 
-
- Welcome on the QuteCom software -
-
 
-
-
-
- -
-

- - Welcome to the QuteCom softphone.
-
- This program allows you to make computer-to-computer phone calls and to - create conference calls. If your provider supports SIP/Simple, you can - also use chat and see your contacts' presence status. You may also be - able to buy credit with your provider to make phone calls to land lines - and mobile phones.
- - -

-
- -
-
-
 
-
 
-
- -
-
- - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/wengophone.qrc qutecom-2.2+dfsg1/wengophone/resources/wengophone.qrc --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/resources/wengophone.qrc 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/resources/wengophone.qrc 1970-01-01 00:00:00.000000000 +0000 @@ -1,306 +0,0 @@ - - - -pics/about_logo.png -pics/actions/accept-phone.png -pics/actions/add-contact.png -pics/actions/chat.png -pics/actions/delete.png -pics/actions/hangup-phone.png -pics/actions/hold-phone.png -pics/actions/resume-phone.png -pics/actions/send-sms-16.png -pics/actions/send_file.png -pics/add.png -pics/audio/microphone.png -pics/audio/speaker.png -pics/avatar_background.png -pics/avatars/default-avatar.png -pics/avatars/export11_96.png -pics/avatars/export12_96.png -pics/avatars/export13_96.png -pics/avatars/export14_96.png -pics/avatars/export15_96.png -pics/avatars/export16_96.png -pics/avatars/export17_96.png -pics/avatars/export18_96.png -pics/avatars/export19_96.png -pics/avatars/export1_96.png -pics/avatars/export20_96.png -pics/avatars/export21_96.png -pics/avatars/export22_96.png -pics/avatars/export23_96.png -pics/avatars/export24_96.png -pics/avatars/export25_96.png -pics/avatars/export26_96.png -pics/avatars/export27_96.png -pics/avatars/export28_96.png -pics/avatars/export29_96.png -pics/avatars/export2_96.png -pics/avatars/export30_96.png -pics/avatars/export31_96.png -pics/avatars/export32_96.png -pics/avatars/export33_96.png -pics/avatars/export34_96.png -pics/avatars/export35_96.png -pics/avatars/export36_96.png -pics/avatars/export37_96.png -pics/avatars/export38_96.png -pics/avatars/export39_96.png -pics/avatars/export3_96.png -pics/avatars/export40_96.png -pics/avatars/export4_96.png -pics/avatars/export5_96.png -pics/avatars/export6_96.png -pics/avatars/export7_96.png -pics/avatars/export8_96.png -pics/avatars/export9_96.png -pics/callbar/call_bar_button.png -pics/callbar/call_bar_button_hangup.png -pics/callbar/call_bar_button_hangup_on.png -pics/callbar/call_bar_button_on.png -pics/callbar/call_bar_fill.png -pics/cancel.png -pics/chat/bar_end.png -pics/chat/bar_fill.png -pics/chat/block-a.png -pics/chat/chat-room.png -pics/chat/chat_close.png -pics/chat/chat_emoticon_button.png -pics/chat/chat_emoticon_button_on.png -pics/chat/chat_send.png -pics/chat/contact-details.png -pics/chat/font_bold.png -pics/chat/font_bold_on.png -pics/chat/font_italic.png -pics/chat/font_italic_on.png -pics/chat/font_underline.png -pics/chat/font_underline_on.png -pics/chat/hide_avatar_frame.png -pics/chat/new_chat.png -pics/chat/show_avatar_frame.png -pics/close_normal.png -pics/close_on.png -pics/config/advanced.png -pics/config/audio.png -pics/config/call-forward.png -pics/config/general.png -pics/config/imaccounts.png -pics/config/languages.png -pics/config/notifications.png -pics/config/privacy.png -pics/config/video.png -pics/config/voicemail.png -pics/contact/call.png -pics/contact/chat.png -pics/contact/home.png -pics/contact/landline.png -pics/contact/mobile.png -pics/contact/sms.png -pics/delete.png -pics/dialpad/10_on.png -pics/dialpad/11_on.png -pics/dialpad/12_on.png -pics/dialpad/1_on.png -pics/dialpad/2_on.png -pics/dialpad/3_on.png -pics/dialpad/4_on.png -pics/dialpad/5_on.png -pics/dialpad/6_on.png -pics/dialpad/7_on.png -pics/dialpad/8_on.png -pics/dialpad/9_on.png -pics/dialpad/audiosmileys.png -pics/dialpad/dialpad.png -pics/down.png -pics/edit.png -pics/emoticons/angel.png -pics/emoticons/angry.png -pics/emoticons/ap.png -pics/emoticons/asl.png -pics/emoticons/au.png -pics/emoticons/bat.png -pics/emoticons/bearingteeth.png -pics/emoticons/beer.png -pics/emoticons/blank_look.png -pics/emoticons/boy.png -pics/emoticons/brb.png -pics/emoticons/cake.png -pics/emoticons/camera.png -pics/emoticons/cat.png -pics/emoticons/ci.png -pics/emoticons/clock.png -pics/emoticons/co.png -pics/emoticons/cocktail.png -pics/emoticons/coins.png -pics/emoticons/confused.png -pics/emoticons/cry.png -pics/emoticons/cup.png -pics/emoticons/devil.png -pics/emoticons/dog.png -pics/emoticons/dunno.png -pics/emoticons/embarrassed.png -pics/emoticons/envelope.png -pics/emoticons/film.png -pics/emoticons/girl.png -pics/emoticons/h5.png -pics/emoticons/handcuffs.png -pics/emoticons/ip.png -pics/emoticons/kiss.png -pics/emoticons/li.png -pics/emoticons/love.png -pics/emoticons/megasmile.png -pics/emoticons/messenger.png -pics/emoticons/moon.png -pics/emoticons/mp.png -pics/emoticons/nerd.png -pics/emoticons/note.png -pics/emoticons/omg.png -pics/emoticons/phone.png -pics/emoticons/pizza.png -pics/emoticons/present.png -pics/emoticons/rainbow.png -pics/emoticons/regular.png -pics/emoticons/rose.png -pics/emoticons/sad.png -pics/emoticons/sarcastic.png -pics/emoticons/secret.png -pics/emoticons/shade.png -pics/emoticons/sheep.png -pics/emoticons/sick.png -pics/emoticons/sleepy.png -pics/emoticons/snail.png -pics/emoticons/so.png -pics/emoticons/sshh.png -pics/emoticons/st.png -pics/emoticons/star.png -pics/emoticons/sun.png -pics/emoticons/thumbs_down.png -pics/emoticons/thumbs_up.png -pics/emoticons/tongue.png -pics/emoticons/tu.png -pics/emoticons/wink.png -pics/exit.png -pics/filetransfer/cleanup.png -pics/filetransfer/download_folder.png -pics/filetransfer/send-file.png -pics/group_close.png -pics/group_open.png -pics/headers/conference.png -pics/headers/file-transfer.png -pics/headers/login.png -pics/help.png -pics/history/call_incoming.png -pics/history/call_missed.png -pics/history/call_outgoing.png -pics/history/chat.png -pics/history/sms_sent.png -pics/iconbar/add_contact.png -pics/iconbar/chat.png -pics/iconbar/conference.png -pics/iconbar/search_contact.png -pics/iconbar/sms.png -pics/iconbar/webcam.png -pics/important.png -pics/open.png -pics/phonecall/avatar_background.png -pics/phonecall/encryption.png -pics/play.png -pics/profilebar/bar_end.png -pics/profilebar/bar_fill.png -pics/profilebar/bar_on_end.png -pics/profilebar/bar_on_fill.png -pics/profilebar/bar_on_separator_left.png -pics/profilebar/bar_on_start_status_away.png -pics/profilebar/bar_on_start_status_donotdisturb.png -pics/profilebar/bar_on_start_status_invisible.png -pics/profilebar/bar_on_start_status_offline.png -pics/profilebar/bar_on_start_status_online.png -pics/profilebar/bar_separator.png -pics/profilebar/bar_start_status_away.png -pics/profilebar/bar_start_status_donotdisturb.png -pics/profilebar/bar_start_status_invisible.png -pics/profilebar/bar_start_status_offline.png -pics/profilebar/bar_start_status_online.png -pics/profilebar/credit/call_forward.png -pics/profilebar/credit/wengos.png -pics/profilebar/event/call_missed.png -pics/profilebar/event/voicemessage_new.png -pics/profilebar/indicator_contract.png -pics/profilebar/indicator_expand.png -pics/protocols/aim.png -pics/protocols/aim_off.png -pics/protocols/icq.png -pics/protocols/icq_off.png -pics/protocols/jabber.png -pics/protocols/jabber_off.png -pics/protocols/google-talk.png -pics/protocols/google-talk_off.png -pics/protocols/msn.png -pics/protocols/msn_off.png -pics/protocols/overlay_error.png -pics/protocols/overlay_presence_away.png -pics/protocols/overlay_presence_donotdisturb.png -pics/protocols/overlay_presence_invisible.png -pics/protocols/overlay_presence_offline.png -pics/protocols/overlay_presence_online.png -pics/protocols/overlay_progress.png -pics/protocols/sip.png -pics/protocols/sip_off.png -pics/protocols/wengo.png -pics/protocols/wengo_off.png -pics/protocols/yahoo.png -pics/protocols/yahoo_off.png -pics/protocols/facebook.png -pics/protocols/myspace.png -pics/protocols/skype.png -pics/protocols/twitter.png -pics/protocols/facebook_off.png -pics/protocols/myspace_off.png -pics/protocols/skype_off.png -pics/protocols/twitter_off.png -pics/status/away.png -pics/status/donotdisturb.png -pics/status/invisible.png -pics/status/offline.png -pics/status/online.png -pics/status/testcall.png -pics/status/unknown-sip.png -pics/status/unknown-wengo.png -pics/status/unknown.png -pics/status/wdeal.png -pics/statusbar/audio_status_error.png -pics/statusbar/audio_status_ok.png -pics/statusbar/input_volume_error.png -pics/statusbar/input_volume_ok.png -pics/statusbar/internet_status_connecting.mng -pics/statusbar/internet_status_error.png -pics/statusbar/network_status_connecting.mng -pics/statusbar/network_status_error.png -pics/statusbar/network_status_ok.png -pics/statusbar/output_volume_error.png -pics/statusbar/output_volume_ok.png -pics/systray/away.png -pics/systray/connecting.png -pics/systray/disconnected.png -pics/systray/donotdisturb.png -pics/systray/invisible.png -pics/systray/offline.png -pics/systray/online.png -pics/toaster/chat.png -pics/toaster/hangup.png -pics/toaster/pickup.png -pics/toaster/toaster-background.png -pics/up.png -pics/update.png -pics/video_attach.png -pics/video_detach.png -pics/video_flip.png -pics/video_fullscreen.png -pics/video_unfullscreen.png - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/buildid/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/src/buildid/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/buildid/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/buildid/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -ow_create_static_library(owbuildid) - -ow_use_private_libraries( - tinyxml - curl - ffmpeg - owutil -) - -if(IMWRAPPER_BACKEND_MULTI) - ow_use_private_libraries( - glib2 - libpurple - ) -endif(IMWRAPPER_BACKEND_MULTI) - -if (NOT APPLE AND OWSOUND_PORTAUDIO_SUPPORT) - ow_use_private_libraries( - portaudio - ) -endif (NOT APPLE AND OWSOUND_PORTAUDIO_SUPPORT) - -if (BUILDID_SUPPORT) - ow_add_private_definitions( - -DDD_BUILDID=${CURRENT_DATE_TIME}LL - -DDD_VERSION=${APPLICATION_VERSION} - -DDD_REVISION=${SVN_REVISION} - -DDD_SOFTPHONE_NAME=wengo - ) -else (BUILDID_SUPPORT) - ow_add_private_definitions( - -DDD_BUILDID=0LL - -DDD_VERSION=0 - -DDD_REVISION=0 - -DDD_SOFTPHONE_NAME=wengo - ) -endif (BUILDID_SUPPORT) - -ow_add_public_include_dirs( - ${CMAKE_CURRENT_SOURCE_DIR} -) - -ow_add_sources( - ../WengoPhoneBuildId.cpp -) - -ow_create_project_binary() diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/src/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,213 +0,0 @@ -ow_create_static_library(owphone) - -ow_use_public_libraries( - owsettings - owsystem - owhttp - owserialization - owserializer - owsocket - owimwrapper - owsipwrapper - owsound -) - -if(IMWRAPPER_BACKEND_MULTI) - ow_use_public_libraries( - owmultiimwrapper - ) -endif(IMWRAPPER_BACKEND_MULTI) - -ow_use_private_libraries( - webcam - netlib - owsl - tinyxml - owphapiwrapper - owbuildid - owqtutil - qt4 -) - -if (APPLE) - ow_use_public_frameworks( - SystemConfiguration - ) -endif (APPLE) - -ow_add_public_include_dirs( - ${CMAKE_CURRENT_SOURCE_DIR} - ${CMAKE_CURRENT_SOURCE_DIR}/model/coipmanager/include - ${CMAKE_CURRENT_SOURCE_DIR}/model/coipmanager/filesessionmanager/include -) - -ow_add_sources( - model/WengoPhone.cpp - model/SipCallbacks.cpp - model/config/Config.cpp - model/config/ConfigImporter.cpp - model/config/ConfigXMLSerializer.cpp - model/config/ConfigManager.cpp - model/config/ConfigManagerFileStorage.cpp - model/config/EnumToolBarMode.cpp - model/config/LanguageList.cpp - model/config/StartupSettingListener.cpp - model/config/CommandLineParser.cpp - model/connect/Connect.cpp - model/connect/ConnectHandler.cpp - model/chat/ChatHandler.cpp - model/phonecall/SipAddress.cpp - model/phonecall/PhoneCall.cpp - model/phonecall/PhoneCallState.cpp - model/phonecall/PhoneCallStateClosed.cpp - model/phonecall/PhoneCallStateUnknown.cpp - model/phonecall/PhoneCallStateDialing.cpp - model/phonecall/PhoneCallStateError.cpp - model/phonecall/PhoneCallStateHold.cpp - model/phonecall/PhoneCallStateIncoming.cpp - model/phonecall/PhoneCallStateTalking.cpp - model/phonecall/PhoneCallStateResumed.cpp - model/phonecall/PhoneCallStateRinging.cpp - model/phonecall/PhoneCallStateRingingStart.cpp - model/phonecall/PhoneCallStateRingingStop.cpp - model/phonecall/PhoneCallStateMissed.cpp - model/phonecall/ConferenceCall.cpp - model/phonecall/ConferenceCallParticipant.cpp - model/phoneline/PhoneLine.cpp - model/phoneline/PhoneLineStateUnknown.cpp - model/phoneline/PhoneLineStateProgress.cpp - model/phoneline/PhoneLineStateOk.cpp - model/phoneline/PhoneLineStateClosed.cpp - model/phoneline/PhoneLineStateTimeout.cpp - model/phoneline/PhoneLineStateServerError.cpp - model/phoneline/PhoneLineStateAuthenticationError.cpp - model/network/NetworkProxyDiscovery.cpp - model/network/NetworkDiscovery.cpp - model/network/NetworkObserver.cpp - model/account/wengo/WengoAccount.cpp - model/account/wengo/WengoAccountParser.cpp - model/account/wengo/WengoAccountXMLSerializer.cpp - model/account/SipAccount.cpp - model/account/SipAccountXMLSerializer.cpp - model/presence/Presence.cpp - model/presence/PresenceHandler.cpp - model/presence/MyPresenceStateOnline.cpp - model/presence/MyPresenceStateOffline.cpp - model/presence/MyPresenceStateAway.cpp - model/presence/MyPresenceStateDoNotDisturb.cpp - model/presence/MyPresenceStateInvisible.cpp - model/contactlist/Contact.cpp - model/contactlist/ContactProfile.cpp - model/contactlist/ContactPresenceState.cpp - model/contactlist/ContactPresenceStateAway.cpp - model/contactlist/ContactPresenceStateOnline.cpp - model/contactlist/ContactPresenceStateOffline.cpp - model/contactlist/ContactPresenceStateDoNotDisturb.cpp - model/contactlist/ContactPresenceStateUnknown.cpp - model/contactlist/ContactPresenceStateUnavailable.cpp - model/contactlist/ContactXMLSerializer.cpp - model/contactlist/ContactXMLSerializer1.cpp - model/contactlist/ContactList.cpp - model/contactlist/ContactListXMLSerializer.cpp - model/contactlist/ContactListXMLSerializer1.cpp - model/contactlist/ContactGroup.cpp - model/contactlist/ContactListFileStorage.cpp - model/contactlist/ContactListFileStorage1.cpp - model/contactlist/ContactListRPCStorage.cpp - model/contactlist/IMContactListHandler.cpp - model/profile/Avatar.cpp - model/profile/AvatarList.cpp - model/profile/IMAccountManager.cpp - model/profile/Profile.cpp - model/profile/ProfileXMLSerializer.cpp - model/profile/UserProfile.cpp - model/profile/UserProfileHandler.cpp - model/profile/UserProfileXMLSerializer.cpp - model/profile/UserProfileFileStorage.cpp - model/profile/UserProfileFileStorage1.cpp - model/profile/EnumSex.cpp - model/profile/StreetAddress.cpp - model/profile/StreetAddressXMLSerializer.cpp - model/history/History.cpp - model/history/HistoryMemento.cpp - model/history/HistoryMementoCollection.cpp - model/webservices/WengoWebService.cpp - model/webservices/sms/WsSms.cpp - model/webservices/info/WsInfo.cpp - model/webservices/softupdate/WsSoftUpdate.cpp - model/webservices/callforward/WsCallForward.cpp - model/webservices/url/WsUrl.cpp - model/classic/ClassicExterminator.cpp - model/commandserver/CommandServer.cpp - model/commandserver/CommandClient.cpp - - # FIXME: This part will be removed when coipmanager will be moved to libs - model/coipmanager/src/CoIpManager.cpp - model/coipmanager/src/Session.cpp - - model/coipmanager/filesessionmanager/src/FileSessionManager.cpp - model/coipmanager/filesessionmanager/src/IFileSession.cpp - model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp - model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp - model/coipmanager/filesessionmanager/src/ISendFileSession.cpp - model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp - model/coipmanager/filesessionmanager/src/SendFileSession.cpp - model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp - model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp - model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp - ## - - model/dtmf/Tone.cpp - model/dtmf/DtmfTheme.cpp - model/dtmf/DtmfThemeManager.cpp - - control/CWengoPhone.cpp - control/chat/CChatHandler.cpp - control/dtmf/CDtmfThemeManager.cpp - control/phoneline/CPhoneLine.cpp - control/phonecall/CPhoneCall.cpp - control/phonecall/CConferenceCall.cpp - control/profile/CUserProfile.cpp - control/profile/CUserProfileHandler.cpp - control/contactlist/CContactList.cpp - control/webservices/sms/CSms.cpp - control/webservices/softupdate/CSoftUpdate.cpp - control/webservices/info/CWsInfo.cpp - control/webservices/callforward/CWsCallForward.cpp - control/history/CHistory.cpp - - presentation/PFactory.cpp -) - -qt4_wrap_cpp(${PROJECT_NAME}_SRCS - model/network/NetworkObserver.h -) - -if (PHAPI_SPEEXWB_REPLACES_G726WB_HACK) - ow_add_private_definitions( - -DPH_SPEEXWB_REPLACES_G726WB - ) -endif (PHAPI_SPEEXWB_REPLACES_G726WB_HACK) - -if (LINUX) - if (WENGOPHONE_RESOURCEDIR_PATH) - ow_add_private_definitions( - -DOW_RESOURCEDIR='"${CMAKE_INSTALL_PREFIX}/${DATA_INSTALL_DIR}"' - ) - endif (WENGOPHONE_RESOURCEDIR_PATH) -endif (LINUX) - -if (PHAPI_CODEC_ILBC_SUPPORT) - ow_add_private_definitions( - -DENABLE_ILBC=1 - ) -endif (PHAPI_CODEC_ILBC_SUPPORT) - -ow_create_project_binary() - -# TODO: test, xpcom, gtk? -subdirs( - #presentation/gtk - presentation/qt - #presentation/xpcom -) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/chat/CChatHandler.cpp qutecom-2.2+dfsg1/wengophone/src/control/chat/CChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/chat/CChatHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/chat/CChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CChatHandler.h" - -#include -#include - -#include -#include - -#include - -#include -#include -#include - -CChatHandler::CChatHandler(ChatHandler & chatHandler, CUserProfile & cUserProfile) - : _chatHandler(chatHandler), - _cUserProfile(cUserProfile) { - - _pChatHandler = NULL; - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CChatHandler::initPresentationThreadSafe, this)); - PFactory::postEvent(event); -} - -CChatHandler::~CChatHandler() { - - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&PChatHandler::deletePresentation, _pChatHandler)); - PFactory::postEvent(event); -} - -void CChatHandler::initPresentationThreadSafe() { - - _pChatHandler = PFactory::getFactory().createPresentationChatHandler(*this); - _chatHandler.newIMChatSessionCreatedEvent += boost::bind(&CChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); -} - -Presentation * CChatHandler::getPresentation() const { - return _pChatHandler; -} - -CWengoPhone & CChatHandler::getCWengoPhone() const { - return _cUserProfile.getCWengoPhone(); -} - -CUserProfile & CChatHandler::getCUserProfile() const { - return _cUserProfile; -} - -void CChatHandler::newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CChatHandler::newIMChatSessionCreatedEventHandlerThreadSafe, this, _1), imChatSession); - PFactory::postEvent(event); -} - -void CChatHandler::newIMChatSessionCreatedEventHandlerThreadSafe(IMChatSession & imChatSession) { - LOG_DEBUG("new IMChatSessionCreatedEvent"); - if (_pChatHandler) { - _pChatHandler->newIMChatSessionCreatedEvent(imChatSession); - } -} - -void CChatHandler::createSession(const std::string & imAccountId, const IMContactSet & imContactSet) { - _chatHandler.createSession(imAccountId, imContactSet); -} - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/chat/CChatHandler.h qutecom-2.2+dfsg1/wengophone/src/control/chat/CChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/chat/CChatHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/chat/CChatHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCCHATHANDLER_H -#define OWCCHATHANDLER_H - -#include - -class Presentation; -class ChatHandler; -class CUserProfile; -class CWengoPhone; -class IMAccount; -class IMContactSet; -class IMChatSession; -class PChatHandler; - -/** - * - * @ingroup control - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class CChatHandler : public Control { -public: - - CChatHandler(ChatHandler & chatHandler, CUserProfile & cUserProfile); - - ~CChatHandler(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - CUserProfile & getCUserProfile() const; - - /** - * @see ChatHandler::createSession() - */ - void createSession(const std::string & imAccountId, const IMContactSet & imContactSet); - -private: - - void initPresentationThreadSafe(); - - void newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession); - - void newIMChatSessionCreatedEventHandlerThreadSafe(IMChatSession & imChatSession); - - ChatHandler & _chatHandler; - - PChatHandler * _pChatHandler; - - CUserProfile & _cUserProfile; -}; - -#endif //OWCCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/contactlist/CContactList.cpp qutecom-2.2+dfsg1/wengophone/src/control/contactlist/CContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/contactlist/CContactList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/contactlist/CContactList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,322 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CContactList.h" - -#include -#include -#include -#include - -#include - -#include -#include - -#include - -#include - -CContactList::CContactList(ContactList & contactList, CWengoPhone & cWengoPhone) - : _contactList(contactList), - _cWengoPhone(cWengoPhone) { - - _pContactList = NULL; - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::initPresentationThreadSafe, this)); - PFactory::postEvent(event); -} - -CContactList::~CContactList() { - /*delete _pContactList;*/ - _pContactList = NULL; -} - -void CContactList::initPresentationThreadSafe() { - _pContactList = PFactory::getFactory().createPresentationContactList(*this); - - _contactList.contactGroupAddedEvent += boost::bind(&CContactList::contactGroupAddedEventHandler, this, _1, _2); - _contactList.contactGroupRemovedEvent += boost::bind(&CContactList::contactGroupRemovedEventHandler, this, _1, _2); - _contactList.contactAddedEvent += boost::bind(&CContactList::contactAddedEventHandler, this, _1, _2); - _contactList.contactRemovedEvent += boost::bind(&CContactList::contactRemovedEventHandler, this, _1, _2); - _contactList.contactMovedEvent += boost::bind(&CContactList::contactMovedEventHandler, this, _1, _2, _3, _4); - _contactList.contactChangedEvent += boost::bind(&CContactList::contactChangedEventHandler, this, _1, _2); -} - -Presentation * CContactList::getPresentation() const { - return _pContactList; -} - -CWengoPhone & CContactList::getCWengoPhone() const { - return _cWengoPhone; -} - -void CContactList::contactAddedEventHandler(ContactList & sender, Contact & contact) { - //We do not emit the event if the Contact has no group because the GUI - //does not support a Contact with no group - if (!contact.getGroupId().empty()) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactAddedEventHandlerThreadSafe, this, _1), contact.getUUID()); - PFactory::postEvent(event); - } -} - -void CContactList::contactAddedEventHandlerThreadSafe(std::string contactId) { - _pContactList->contactAddedEvent(contactId); -} - -void CContactList::contactRemovedEventHandler(ContactList & sender, Contact & contact) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactRemovedEventHandlerThreadSafe, this, _1), contact.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactRemovedEventHandlerThreadSafe(std::string contactId) { - _pContactList->contactRemovedEvent(contactId); -} - -void CContactList::contactMovedEventHandler(ContactList & sender, ContactGroup & dstContactGroup, - ContactGroup & srcContactGroup, Contact & contact) { - - typedef ThreadEvent3 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactMovedEventHandlerThreadSafe, this, _1, _2, _3), - dstContactGroup.getUUID(), srcContactGroup.getUUID(), contact.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactMovedEventHandlerThreadSafe(std::string dstGroupId, std::string srcGroupId, std::string contactId) { - _pContactList->contactMovedEvent(dstGroupId, srcGroupId, contactId); -} - -void CContactList::contactGroupAddedEventHandler(ContactList & sender, ContactGroup & contactGroup) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupAddedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactGroupAddedEventHandlerThreadSafe(std::string groupId) { - _pContactList->contactGroupAddedEvent(groupId); -} - -void CContactList::contactGroupRemovedEventHandler(ContactList & sender, ContactGroup & contactGroup) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupRemovedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactGroupRemovedEventHandlerThreadSafe(std::string groupId) { - _pContactList->contactGroupRemovedEvent(groupId); -} - -void CContactList::contactGroupRenamedEventHandler(ContactList & sender, ContactGroup & contactGroup) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactGroupRenamedEventHandlerThreadSafe, this, _1), contactGroup.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactGroupRenamedEventHandlerThreadSafe(std::string groupId) { - _pContactList->contactGroupRenamedEvent(groupId); -} - -void CContactList::contactChangedEventHandler(ContactList & sender, Contact & contact) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::contactChangedEventHandlerThreadSafe, this, _1), contact.getUUID()); - PFactory::postEvent(event); -} - -void CContactList::contactChangedEventHandlerThreadSafe(std::string contactId) { - if(_pContactList) - _pContactList->contactChangedEvent(contactId); -} - -std::vector< std::pair > CContactList::getContactGroups() const { - std::vector< std::pair > result; - - RecursiveMutex::ScopedLock lock(_contactList._mutex); - ContactList::ContactGroupSet contactGroups = _contactList.getContactGroupSet(); - //_contactList.unlock(); - - for (ContactList::ContactGroupSet::const_iterator it = contactGroups.begin(); - it != contactGroups.end(); ++it) { - result.push_back(std::pair((*it).getUUID(), (*it).getName())); - } - - return result; -} - -std::string CContactList::getContactGroupName(const std::string & groupId) const { - std::string result; - - RecursiveMutex::ScopedLock lock(_contactList._mutex); - //_contactList.lock(); - - ContactGroup * contactGroup = _contactList.getContactGroup(groupId); - if (contactGroup) { - result = contactGroup->getName(); - } - - //_contactList.unlock(); - - return result; -} - -std::string CContactList::getContactGroupIdFromName(const std::string & groupName) const { - return _contactList.getContactGroupIdFromName(groupName); -} - -ContactProfile CContactList::getContactProfile(const std::string & contactId) const { - ContactProfile result; - Contact * contact = getContact(contactId); - if (contact) { - result = *contact; - } - - return result; -} - -Contact * CContactList::getContact(const std::string & contactId) const { - return _contactList.getContact(contactId); -} - -StringList CContactList::getContactIds() const { - StringList result; - - RecursiveMutex::ScopedLock lock(_contactList._mutex); - //_contactList.lock(); - - const ContactList::Contacts & contacts = _contactList.getContacts(); - for (ContactList::Contacts::const_iterator it = contacts.begin(); - it != contacts.end(); ++it) { - result += (*it).getUUID(); - } - - //_contactList.unlock(); - - return result; -} - -void CContactList::addContact(const ContactProfile & contactProfile) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::addContactThreadSafe, this, _1), contactProfile); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::addContactThreadSafe(ContactProfile contactProfile) { - Contact & contact = _contactList.createContact(); - contact = contactProfile; - - LOG_DEBUG("adding new contact=" + contact.getFirstName() + " in group=" + contact.getGroupId()); -} - -void CContactList::removeContact(const std::string & contactId) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::removeContactThreadSafe, this, _1), contactId); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::removeContactThreadSafe(std::string contactId) { - Contact * contact = getContact(contactId); - if (contact) { - _contactList.removeContact(*contact); - } -} - -void CContactList::updateContact(const ContactProfile & contactProfile) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::updateContactThreadSafe, this, _1), contactProfile); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::updateContactThreadSafe(ContactProfile contactProfile) { - Contact * contact = getContact(contactProfile.getUUID()); - if (contact) { - (*contact) = contactProfile; - } -} - -void CContactList::addContactGroup(const std::string & name) { - /* - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::addContactGroupThreadSafe, this, _1), name); - _modelThread.postEvent(event); - */ - //FIXME: Here we do not change the thread because QtProfileDetails needs this method to be blocking - //We should change the code in QtProfileDetails - _contactList.addContactGroup(name); -} - -void CContactList::addContactGroupThreadSafe(std::string name) { - _contactList.addContactGroup(name); -} - -void CContactList::removeContactGroup(const std::string & groupId) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::removeContactGroupThreadSafe, this, _1), groupId); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::removeContactGroupThreadSafe(std::string groupId) { - _contactList.removeContactGroup(groupId); -} - -void CContactList::renameContactGroup(const std::string & groupId, const std::string & name) { - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::renameContactGroupThreadSafe, this, _1, _2), groupId, name); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::renameContactGroupThreadSafe(std::string groupId, std::string name) { - _contactList.renameContactGroup(groupId, name); -} - -void CContactList::merge(const std::string & dstContactId, const std::string & srcContactId) { - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CContactList::mergeThreadSafe, this, _1, _2), dstContactId, srcContactId); - WengoPhone::getInstance().postEvent(event); -} - -void CContactList::mergeThreadSafe(std::string dstContactId, std::string srcContactId) { - Contact * dstContact = getContact(dstContactId); - Contact * srcContact = getContact(srcContactId); - if (dstContact && srcContact) { - _contactList.mergeContacts(*dstContact, *srcContact); - } -} - -std::string CContactList::findContactThatOwns(const IMContact & imContact) { - std::string result; - - Contact * contact = _contactList.findContactThatOwns(imContact); - if (contact) { - result = contact->getUUID(); - } - - return result; -} - -std::string CContactList::findContactThatOwns(const std::string & number) { - std::string result; - - Contact * contact = _contactList.findContactThatOwns(number); - if (contact) { - result = contact->getUUID(); - } - - return result; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/contactlist/CContactList.h qutecom-2.2+dfsg1/wengophone/src/control/contactlist/CContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/contactlist/CContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/contactlist/CContactList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,262 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCCONTACTLIST_H -#define OWCCONTACTLIST_H - -#include - -#include - -#include -#include - -class Presentation; -class ContactList; -class Contact; -class ContactGroup; -class ContactProfile; -class CWengoPhone; -class PContactList; -class IMContact; - -/** - * - * @ingroup control - * @author Tanguy Krotoff - */ -class CContactList : public Control { - friend class CUserProfile; -public: - - CContactList(ContactList & contactList, CWengoPhone & cWengoPhone); - - ~CContactList(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - /** - * Gets a list of pair of . - */ - std::vector< std::pair > getContactGroups() const; - - /** - * Gets the name of a ContactGroup given its UUID. - * - * @param groupId the UUID of the desired group - * @return the group name, a null string if not found - */ - std::string getContactGroupName(const std::string & groupId) const; - - /** - * @see ContactList::getContactGroupIdFromName() - */ - std::string getContactGroupIdFromName(const std::string & groupName) const; - - /** - * Constructs a ContactProfile from a Contact contained in the model. - * - * If no Contact with the given contactId exists an empty ContactProfile - * is returned. - * - * Used by the GUI to get data from the model. - * - * @param contactId the Contact UUID od the desired Contact - * @return a ContactProfile based on the found Contact - */ - ContactProfile getContactProfile(const std::string & contactId) const; - - /** - * @see ContactList::findContactThatOwns() - */ - std::string findContactThatOwns(const IMContact & imContact); - - std::string findContactThatOwns(const std::string & number); - - /** - * Gets all existing Contact Ids. - * - * @return a string list containing the UUID of the Contacts. - */ - StringList getContactIds() const; - - /** - * Adds a Contact to the ContactList. - * - * This method is used by GUI to add a Contact into the model. - * - * The Contact will be created from the given ContactProfile. - * - * @param contactProfile the ContactProfile that will be used to create the Contact - */ - void addContact(const ContactProfile & contactProfile); - - /** - * @see ContactList::removeContact() - */ - void removeContact(const std::string & contactId); - - /** - * Updates a Contact from a ContactProfile. - * - * @param contactProfile the ContactProfile which will full the Contact - */ - void updateContact(const ContactProfile & contactProfile); - - /** - * Adds a contact group. - * - * @param name name of the ContactGroup to add - */ - void addContactGroup(const std::string & name); - - /** - * @see ContactList::removeContactGroup() - */ - void removeContactGroup(const std::string & groupId); - - /** - * @see ContactList::renameContactGroup() - */ - void renameContactGroup(const std::string & groupId, const std::string & name); - - /** - * @see ContactList::mergeContacts() - */ - void merge(const std::string & dstContactId, const std::string & srcContactId); - - /** - * FIXME: this part should not exist. It is here until QtChatRoomInviteDlg - * will be refactored. - */ - ContactList & getContactList() { return _contactList; } - -private: - - void initPresentationThreadSafe(); - - /** - * Returns a pointer to the Contact associated with the given contactId - * or NULL if not found. - * - * Used by the Control to retrieve a Contact grom a contact UUID given by - * the GUI. - * - * @param contactId the UUID of the desired Contact - * @return the found Contact - */ - Contact * getContact(const std::string & contactId) const; - - /** - * @see ContactList::contactAddedEvent - */ - void contactAddedEventHandler(ContactList & sender, Contact & contact); - - void contactAddedEventHandlerThreadSafe(std::string contactId); - - /** - * @see ContactList::contactRemovedEvent - */ - void contactRemovedEventHandler(ContactList & sender, Contact & contact); - - void contactRemovedEventHandlerThreadSafe(std::string contactId); - - /** - * @see ContactList::contactGroupAddedEvent - */ - void contactGroupAddedEventHandler(ContactList & sender, ContactGroup & contactGroup); - - void contactGroupAddedEventHandlerThreadSafe(std::string groupId); - - /** - * @see ContactList::contactGroupRemovedEvent - */ - void contactGroupRemovedEventHandler(ContactList & sender, ContactGroup & contactGroup); - - void contactGroupRemovedEventHandlerThreadSafe(std::string groupId); - - /** - * @see ContactList::contactGroupRenamedEvent - */ - void contactGroupRenamedEventHandler(ContactList & sender, ContactGroup & contactGroup); - - void contactGroupRenamedEventHandlerThreadSafe(std::string groupId); - - /** - * @see ContactList::contactGroupMovedEvent - */ - void contactMovedEventHandler(ContactList & sender, ContactGroup & dstContactGroup, - ContactGroup & srcContactGroup, Contact & contact); - - void contactMovedEventHandlerThreadSafe(std::string dstGroupId, std::string srcGroupId, std::string contactId); - - /** - * @see ContactList::contactChangedEvent - */ - void contactChangedEventHandler(ContactList & sender, Contact & contact); - - void contactChangedEventHandlerThreadSafe(std::string contactId); - - /** - * @see addContact - */ - void addContactThreadSafe(ContactProfile contactProfile); - - /** - * @see removeContact - */ - void removeContactThreadSafe(std::string contactId); - - /** - * @see updateContact - */ - void updateContactThreadSafe(ContactProfile contactProfile); - - /** - * @see addContactGroup - */ - void addContactGroupThreadSafe(std::string name); - - /** - * @see removeContactGroup - */ - void removeContactGroupThreadSafe(std::string groupId); - - /** - * @see renameContactGroup - */ - void renameContactGroupThreadSafe(std::string groupId, std::string name); - - /** - * @see merge - */ - void mergeThreadSafe(std::string dstContactId, std::string srcContactId); - - /** Direct link to the model. */ - ContactList & _contactList; - - /** Direct link to the presentation via an interface. */ - PContactList * _pContactList; - - CWengoPhone & _cWengoPhone; -}; - -#endif //OWCCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/Control.h qutecom-2.2+dfsg1/wengophone/src/control/Control.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/Control.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/Control.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTROL_H -#define OWCONTROL_H - -#include -#include - -class CWengoPhone; -class Presentation; -class Control; - -/** - * @defgroup control Control Component - * - * Like the model component, the control is part of the heart of WengoPhone. - * It is developped in pure C++ using libraries like LibUtil, Boost, TinyXML and Curl. - * This component has a very limited 'intelligence', everything is in fact done - * inside the model component. - * - * The control component goal is to make the jonction between the model component - * and the presentation component. - * - * The control component receives informations from the model component via the design - * pattern observer. On the other hand it sends informations to the model component directly. - * The control component dialogs with the presentation component via interfaces thus allowing - * different graphical interfaces to be implemented (Qt, GTK+...). - * - * Control component deal with the switch between the thread from the model and the thread - * from the presentation component. - * - * All classes inside the control component are named using a leading 'C' letter and - * are inside the subdirectory control. - */ - -/** - * Interface for control component classes. - * - * @ingroup control - * @author Tanguy Krotoff - */ -class Control : Interface, public Trackable { -public: - - virtual ~Control() { - } - - /** - * Gets the Presentation associated with this Control. - * - * @return Presentation layer associated with this Control - */ - virtual Presentation * getPresentation() const = 0; - - /** - * Gets the root Control object. - * - * The root Control object is the one that creates all the Control objects. - * - * @return root Control object - */ - virtual CWengoPhone & getCWengoPhone() const = 0; - -protected: - - /** - * Creates the presentation component in a thread safe way (via a postEvent()). - */ - virtual void initPresentationThreadSafe() = 0; -}; - -#endif //OWCONTROL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/CWengoPhone.cpp qutecom-2.2+dfsg1/wengophone/src/control/CWengoPhone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/CWengoPhone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/CWengoPhone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,143 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CWengoPhone.h" - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -CWengoPhone::CWengoPhone(WengoPhone & wengoPhone, bool runInBackground) - : _wengoPhone(wengoPhone) { - - _pWengoPhone = PFactory::getFactory().createPresentationWengoPhone(*this, runInBackground); - - _cUserProfileHandler = new CUserProfileHandler(_wengoPhone.getUserProfileHandler(), *this); - - _wengoPhone.initFinishedEvent += boost::bind(&CWengoPhone::initFinishedEventHandler, this, _1); - _wengoPhone.exitEvent += boost::bind(&CWengoPhone::exitEventHandler, this); - - //DTMFThemeManager - _wengoPhone.dtmfThemeManagerCreatedEvent += boost::bind(&CWengoPhone::dtmfThemeManagerCreatedEventHandler, this, _1, _2); - - CommandServer & commandServer = CommandServer::getInstance(_wengoPhone); - commandServer.showAddContactEvent += boost::bind(&CWengoPhone::showAddContactEventHandler, this, _1); - commandServer.bringMainWindowToFrontEvent += boost::bind(&CWengoPhone::bringMainWindowToFrontEventHandler, this); - - // Start the model thread - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CWengoPhone::start, this)); - PFactory::postEvent(event); -} - -CWengoPhone::~CWengoPhone() { - /*if (_pWengoPhone) { - delete _pWengoPhone; - }*/ -} - -void CWengoPhone::initPresentationThreadSafe() { -} - -Presentation * CWengoPhone::getPresentation() const { - return _pWengoPhone; -} - -CWengoPhone & CWengoPhone::getCWengoPhone() const { - return (CWengoPhone &) *this; -} - -CUserProfileHandler & CWengoPhone::getCUserProfileHandler() const { - return *_cUserProfileHandler; -} - -WengoPhone & CWengoPhone::getWengoPhone() const { - return _wengoPhone; -} - -void CWengoPhone::start() { - _wengoPhone.start(); -} - -void CWengoPhone::terminate() { - _wengoPhone.prepareToTerminate(); -} - -void CWengoPhone::dtmfThemeManagerCreatedEventHandler(WengoPhone & sender, DtmfThemeManager & dtmfThemeManager) { - _cDtmfThemeManager = new CDtmfThemeManager(dtmfThemeManager, *this); -} - -void CWengoPhone::initFinishedEventHandler(WengoPhone & sender) { - LOG_DEBUG("WengoPhone::init() finished"); -} - -void CWengoPhone::exitEventHandler() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CWengoPhone::exitEventHandlerThreadSafe, this)); - PFactory::postEvent(event); -} - -void CWengoPhone::exitEventHandlerThreadSafe() { - _wengoPhone.terminate(); - if (_pWengoPhone) { - _pWengoPhone->exitEvent(); - } -} - -void CWengoPhone::showAddContactEventHandler(ContactInfo contactInfo) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CWengoPhone::showAddContactEventHandlerThreadSafe, this, _1), contactInfo); - PFactory::postEvent(event); -} - -void CWengoPhone::showAddContactEventHandlerThreadSafe(ContactInfo contactInfo) { - if (_pWengoPhone) { - _pWengoPhone->showAddContact(contactInfo); - } -} - -void CWengoPhone::bringMainWindowToFrontEventHandler() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CWengoPhone::bringMainWindowToFrontEventHandlerThreadSafe, this)); - PFactory::postEvent(event); -} - -void CWengoPhone::bringMainWindowToFrontEventHandlerThreadSafe() { - if (_pWengoPhone) { - _pWengoPhone->bringMainWindowToFront(); - } -} - -void CWengoPhone::enableSerialization(bool enable) { - _wengoPhone.enableSerialization(enable); -} - -CDtmfThemeManager & CWengoPhone::getCDtmfThemeManager() const { - return *_cDtmfThemeManager; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/CWengoPhone.h qutecom-2.2+dfsg1/wengophone/src/control/CWengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/CWengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/CWengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCWENGOPHONE_H -#define OWCWENGOPHONE_H - -#include - -class ContactInfo; -class PWengoPhone; -class WengoPhone; -class Presentation; -class CUserProfileHandler; -class DtmfThemeManager; -class CDtmfThemeManager; - -/** - * @ingroup control - * @author Tanguy Krotoff - * @author Philippe Bernery - * @author Mathieu Stute - */ -class CWengoPhone : public Control { -public: - - CWengoPhone(WengoPhone & wengoPhone, bool runInBackground); - - ~CWengoPhone(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - CDtmfThemeManager & getCDtmfThemeManager() const; - - /** FIXME should be removed. */ - WengoPhone & getWengoPhone() const; - - /** - * Entry point of the application, equivalent to main(). - * - * Starts the object WengoPhone thus almost everything. - * Starts the model component thread (the thread WengoPhone). - * - * @see WengoPhone::init() - * @see WengoPhone::run() - */ - void start(); - - /** - * @see WengoPhone::terminate() - */ - void terminate(); - - /** - * Gets the CUserProfileHandler - */ - CUserProfileHandler & getCUserProfileHandler() const; - - /** - * @see WengoPhone::enableSerialization. - */ - void enableSerialization(bool enable); - -private: - - void initPresentationThreadSafe(); - - void initFinishedEventHandler(WengoPhone & sender); - - void showAddContactEventHandler(ContactInfo contactInfo); - - void showAddContactEventHandlerThreadSafe(ContactInfo contactInfo); - - void bringMainWindowToFrontEventHandler(); - - void bringMainWindowToFrontEventHandlerThreadSafe(); - - void exitEventHandler(); - - void exitEventHandlerThreadSafe(); - - void dtmfThemeManagerCreatedEventHandler(WengoPhone & sender, DtmfThemeManager & dtmfThemeManager); - - /** Direct link to the model. */ - WengoPhone & _wengoPhone; - - /** Direct link to the presentation via an interface. */ - PWengoPhone * _pWengoPhone; - - CUserProfileHandler * _cUserProfileHandler; - - /** DtmfThemeManager */ - CDtmfThemeManager * _cDtmfThemeManager; -}; - -#endif //OWCWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.cpp qutecom-2.2+dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CDtmfThemeManager.h" -#include - -#include - -#include - -#include - -#include -#include - -CDtmfThemeManager::CDtmfThemeManager(DtmfThemeManager & dtmfThemeManager, CWengoPhone & cWengoPhone) - : _dtmfThemeManager(dtmfThemeManager), - _cWengoPhone(cWengoPhone) { - - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CDtmfThemeManager::initPresentationThreadSafe, this)); - PFactory::postEvent(event); -} - -CDtmfThemeManager::~CDtmfThemeManager() { - //delete _dtmfThemeManager; -} - -void CDtmfThemeManager::initPresentationThreadSafe() { - PFactory::getFactory().createPresentationDtmfThemeManager(*this); -} - -Presentation * CDtmfThemeManager::getPresentation() const { - return 0; -} - -CWengoPhone & CDtmfThemeManager::getCWengoPhone() const { - return _cWengoPhone; -} - -void CDtmfThemeManager::playTone(const std::string & themeName, const std::string & key) const { - - //get the theme - const DtmfTheme* theme = _dtmfThemeManager.getDtmfTheme(themeName); - - //play the tone - if (theme) { - theme->playTone(key); - } else { - LOG_WARN("This theme does not exist !"); - } -} - -StringList CDtmfThemeManager::getThemeList() const { - return _dtmfThemeManager.getThemeList(); -} - -const DtmfTheme * CDtmfThemeManager::getDtmfTheme(const std::string & themeName) const { - return _dtmfThemeManager.getDtmfTheme(themeName); -} - -bool CDtmfThemeManager::refreshDtmfThemes() { - return _dtmfThemeManager.refreshDtmfThemes(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.h qutecom-2.2+dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/dtmf/CDtmfThemeManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCDTMFTHEMEMANAGER_H -#define OWCDTMFTHEMEMANAGER_H - -#include - -#include - -class Presentation; -class CWengoPhone; -class DtmfThemeManager; -class DtmfTheme; - -/** - * Control for DtmfThemeManager. - * - * @ingroup control - * @author Xavier Desjardins - */ -class CDtmfThemeManager : public Control { -public: - - /** - * Default constructor. - */ - CDtmfThemeManager(DtmfThemeManager & dtmfThemeManager, CWengoPhone & cWengoPhone); - - ~CDtmfThemeManager(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - //play a tone - void playTone(const std::string & themeName, const std::string & key) const; - - //get theme list - StringList getThemeList() const; - - //get a theme - const DtmfTheme * getDtmfTheme(const std::string & themeName) const; - - //refresh DTMFThemes - bool refreshDtmfThemes(); - -private: - - void initPresentationThreadSafe(); - - /** Link to the model. */ - DtmfThemeManager & _dtmfThemeManager; - - /** Link to the CWengoPhone. */ - CWengoPhone & _cWengoPhone; - - /** Link to the presentation via an interface. */ -}; - -#endif //OWCDTMFTHEMEMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/history/CHistory.cpp qutecom-2.2+dfsg1/wengophone/src/control/history/CHistory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/history/CHistory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/history/CHistory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,246 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CHistory.h" -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -CHistory::CHistory(History & history, CWengoPhone & cWengoPhone, CUserProfile & cUserProfile) - : _history(history), - _cWengoPhone(cWengoPhone), - _cUserProfile(cUserProfile) { - - _pHistory = NULL; - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::initPresentationThreadSafe, this)); - PFactory::postEvent(event); - - // TODO NCOUTURIER bind handler - _cUserProfile.getUserProfile().getChatHandler().newIMChatSessionCreatedEvent += boost::bind(&CHistory::newIMChatSessionCreatedEventHandler, this, _1, _2); -} - -CHistory::~CHistory() { - //delete _pHistory; -} - -void CHistory::initPresentationThreadSafe() { - _pHistory = PFactory::getFactory().createPresentationHistory(*this); - - _history.historyLoadedEvent += boost::bind(&CHistory::historyLoadedEventHandler, this, _1); - _history.mementoAddedEvent += boost::bind(&CHistory::historyMementoAddedEventHandler, this, _1, _2); - _history.mementoUpdatedEvent += boost::bind(&CHistory::historyMementoUpdatedEventHandler, this, _1, _2); - _history.mementoRemovedEvent += boost::bind(&CHistory::historyMementoRemovedEventHandler, this, _1, _2); - _history.unseenMissedCallsChangedEvent += boost::bind(&CHistory::unseenMissedCallsChangedEventhandler, this, _1, _2); -} - -Presentation * CHistory::getPresentation() const { - return _pHistory; -} - -CWengoPhone & CHistory::getCWengoPhone() const { - return _cWengoPhone; -} - -History & CHistory::getHistory() { - return _history; -} - -void CHistory::historyMementoAddedEventHandler(History & sender, unsigned id) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoAddedEventHandlerThreadSafe, this, _1), id); - PFactory::postEvent(event); -} - -void CHistory::historyMementoAddedEventHandlerThreadSafe(unsigned id) { - _pHistory->mementoAddedEvent(id); -} - -void CHistory::historyMementoUpdatedEventHandler(History & sender, unsigned id) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoUpdatedEventHandlerThreadSafe, this, _1), id); - PFactory::postEvent(event); -} - -void CHistory::historyMementoUpdatedEventHandlerThreadSafe(unsigned id) { - _pHistory->mementoUpdatedEvent(id); -} - -void CHistory::historyMementoRemovedEventHandler(History & sender, unsigned id) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyMementoRemovedEventHandlerThreadSafe, this, _1), id); - PFactory::postEvent(event); -} - -void CHistory::historyMementoRemovedEventHandlerThreadSafe(unsigned id) { - _pHistory->mementoRemovedEvent(id); -} - -void CHistory::historyLoadedEventHandler(History & sender) { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::historyLoadedEventHandlerThreadSafe, this)); - PFactory::postEvent(event); -} - -void CHistory::historyLoadedEventHandlerThreadSafe() { - _pHistory->historyLoadedEvent(); -} - -void CHistory::unseenMissedCallsChangedEventhandler(History & sender, int count) { - /*typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::unseenMissedCallsChangedEventHandlerThreadSafe, this, _1), count); - PFactory::postEvent(event);*/ -} - -void CHistory::unseenMissedCallsChangedEventHandlerThreadSafe(int count) { - _pHistory->unseenMissedCallsChangedEvent(count); -} - -void CHistory::removeHistoryMemento(unsigned id) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::removeHistoryMementoThreadSafe, this, _1), id); - WengoPhone::getInstance().postEvent(event); -} - -void CHistory::removeHistoryMementoThreadSafe(unsigned id) { - _history.removeMemento(id); -} - -void CHistory::clear(HistoryMemento::State state) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::clearThreadSafe, this, _1), state); - WengoPhone::getInstance().postEvent(event); -} - -void CHistory::clearThreadSafe(HistoryMemento::State state) { - _history.clear(state); -} - -std::string CHistory::getMementoData(unsigned id) const { - return _history.getMemento(id)->getData(); -} - -std::string CHistory::getMementoPeer(unsigned id) const { - return _history.getMemento(id)->getPeer(); -} - -void CHistory::replay(unsigned id) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::replayThreadSafe, this, _1), id); - WengoPhone::getInstance().postEvent(event); -} - -void CHistory::replayThreadSafe(unsigned id) { - _history.replay(id); -} - -HistoryMementoCollection * CHistory::getMementos(HistoryMemento::State state, int count) { - return _history.getMementos(state, count); -} - -void CHistory::resetUnseenMissedCalls() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CHistory::resetUnseenMissedCallsThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void CHistory::resetUnseenMissedCallsThreadSafe() { - _history.resetUnseenMissedCalls(); -} - -int CHistory::getUnseenMissedCalls() { - return _history.getUnseenMissedCalls(); -} - -void CHistory::newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession) { - if(_history.addChatMementoSession(&imChatSession)){ - - HistoryMementoCollection * hmc = _history.getSessionCollection(imChatSession.getId()); - std::string name = "toto_le_testeur_fou"; - std::string message = "ceci est un message bidon"; - Date date; - Time time; - - for (HistoryMap::const_iterator it = hmc->begin(); it != hmc->end(); ++it) { - HistoryMemento* hm = it->second; - name = hm->getPeer(); - message = hm->getData(); - date = hm->getDate(); - time = hm->getTime(); - imChatSession.setReceivedMessage(name,message,date,time); - } - _lastReceivedMesssageIndex[imChatSession.getId()] = -1 + hmc->size(); - imChatSession.imChatSessionWillDieEvent += boost::bind(&CHistory::imChatSessionWillDieEventHandler, this, _1); - imChatSession.messageReceivedEvent += boost::bind(&CHistory::messageReceivedEventHandler, this, _1); - imChatSession.messageSentEvent += boost::bind(&CHistory::messageSentEventHandler, this, _1, _2); - } -} - -void CHistory::imChatSessionWillDieEventHandler(IMChatSession & sender) { - _history.removeChatMementoSession(&sender); - _lastReceivedMesssageIndex.erase(sender.getId()); -} - -void CHistory::messageReceivedEventHandler(IMChatSession & sender) { - IMChatSession::IMChatMessageList imChatMessageList = sender.getReceivedMessage(_lastReceivedMesssageIndex[sender.getId()]+1); - if(imChatMessageList.size() > 0) { - _lastReceivedMesssageIndex[sender.getId()] += imChatMessageList.size(); - IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); - while(imChatMessageListIterator < imChatMessageList.end()) { - IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; - HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, - imChatMessage->getIMContact().getContactId(), - -1, /* don't care about the call id */ - imChatMessage->getMessage(), - imChatMessage->getIMContact().getAlias()); - _history.addChatMemento(memento, sender.getId()); - imChatMessageListIterator++; - } - } -} - -void CHistory::messageSentEventHandler(IMChatSession & sender, std::string message) { - //HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, - // ((SipAccount *)_cUserProfile.getUserProfile().getWengoAccount())->getDisplayName(), - // -1, /* don't care about the call id */ - // message); - IMAccount * imAccount = - _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(sender.getIMChat().getIMAccountId()); - HistoryMemento * memento = new HistoryMemento(HistoryMemento::ChatSession, - imAccount->getLogin(), - -1, /* don't care about the call id */ - message); - OWSAFE_DELETE(imAccount); - _history.addChatMemento(memento, sender.getId()); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/history/CHistory.h qutecom-2.2+dfsg1/wengophone/src/control/history/CHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/history/CHistory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/history/CHistory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCHISTORY_H -#define OWCHISTORY_H - -#include -#include - -#include - -#include - -#include -#include - -class Presentation; -class CWengoPhone; -class PHistory; -class CUserProfile; - -/** - * Control for History. - * - * @ingroup control - * @author Mathieu Stute - */ -class CHistory : public Control { -public: - - /** - * Default constructor. - */ - CHistory(History & history, CWengoPhone & cWengoPhone, CUserProfile & cUserProfile); - - ~CHistory(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - /** - * @see History::removeMemento - */ - void removeHistoryMemento(unsigned id); - - /** - * @see History::clear - */ - void clear(HistoryMemento::State state = HistoryMemento::Any); - - /** - * @see History::replay - */ - void replay(unsigned id); - - /** - * @see History::getMementos - */ - HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1); - - /** - * Gets the memento data. - * - * @param id the memento id - * @return the memento data (the sms text) - */ - std::string getMementoData(unsigned id) const; - - /** - * Gets the memento peer. - * - * @param id the memento id - * @return the memento peer - */ - std::string getMementoPeer(unsigned id) const; - - /** - * Resets unseen missed calls. - */ - void resetUnseenMissedCalls(); - - /** - * Gets the unseen missed calls count. - * - * @return unseen missed calls count - */ - int getUnseenMissedCalls(); - - /** - * FIXME to remove - * Retreives the History. - * - * @return the History - */ - History & getHistory(); - -private: - - void initPresentationThreadSafe(); - - void historyMementoAddedEventHandler(History & sender, unsigned id); - void historyMementoAddedEventHandlerThreadSafe(unsigned id); - - void historyMementoUpdatedEventHandler(History & sender, unsigned id); - void historyMementoUpdatedEventHandlerThreadSafe(unsigned id); - - void historyMementoRemovedEventHandler(History & sender, unsigned id); - void historyMementoRemovedEventHandlerThreadSafe(unsigned id); - - void historyLoadedEventHandler(History & sender); - void historyLoadedEventHandlerThreadSafe(); - - void unseenMissedCallsChangedEventhandler(History & sender, int count); - void unseenMissedCallsChangedEventHandlerThreadSafe(int count); - - void newIMChatSessionCreatedEventHandler(ChatHandler & sender, IMChatSession & imChatSession); - - void imChatSessionWillDieEventHandler(IMChatSession & sender); - - void messageReceivedEventHandler(IMChatSession & sender); - - void messageSentEventHandler(IMChatSession & sender, std::string message); - - void removeHistoryMementoThreadSafe(unsigned id); - - void clearThreadSafe(HistoryMemento::State state); - - void replayThreadSafe(unsigned id); - - void resetUnseenMissedCallsThreadSafe(); - - /** Link to the model. */ - History & _history; - - /** Link to the CWengoPhone. */ - CWengoPhone & _cWengoPhone; - - /** Link to the CUserProfile **/ - CUserProfile & _cUserProfile; - - /** Link to the presentation via an interface. */ - PHistory * _pHistory; - - /** Index of the last message recorded in the History for each sessionID **/ - std::map _lastReceivedMesssageIndex; -}; - -#endif //OWCHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CConferenceCall.cpp qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CConferenceCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CConferenceCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CConferenceCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CConferenceCall.h" - -#include -#include - -#include - -#include -#include - -#include -#include - -CConferenceCall::CConferenceCall(ConferenceCall & conferenceCall, CWengoPhone & cWengoPhone) - : _conferenceCall(conferenceCall), - _cWengoPhone(cWengoPhone) { - - _pConferenceCall = NULL; - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CConferenceCall::initPresentationThreadSafe, this)); - PFactory::postEvent(event); -} - -CConferenceCall::~CConferenceCall() { -} - -void CConferenceCall::initPresentationThreadSafe() { - _pConferenceCall = PFactory::getFactory().createPresentationConferenceCall(*this); - - _conferenceCall.stateChangedEvent += boost::bind(&CConferenceCall::stateChangedEventHandler, this, _1, _2); - _conferenceCall.phoneCallAddedEvent += boost::bind(&CConferenceCall::phoneCallAddedEventHandler, this, _1, _2); - _conferenceCall.phoneCallRemovedEvent += boost::bind(&CConferenceCall::phoneCallRemovedEventHandler, this, _1, _2); -} - -Presentation * CConferenceCall::getPresentation() const { - return _pConferenceCall; -} - -CWengoPhone & CConferenceCall::getCWengoPhone() const { - return _cWengoPhone; -} - -void CConferenceCall::addPhoneCall(CPhoneCall & cPhoneCall) { - //_conferenceCall.addPhoneCall(cPhoneCall.getPhoneCall()); -} - -void CConferenceCall::removePhoneCall(CPhoneCall & cPhoneCall) { - //_conferenceCall.removePhoneCall(cPhoneCall.getPhoneCall()); -} - -void CConferenceCall::addPhoneNumber(const std::string & phoneNumber) { - _conferenceCall.addPhoneNumber(phoneNumber); -} - -void CConferenceCall::removePhoneNumber(const std::string & phoneNumber) { - _conferenceCall.removePhoneNumber(phoneNumber); -} - -void CConferenceCall::stateChangedEventHandler(ConferenceCall & sender, EnumConferenceCallState::ConferenceCallState state) { - _pConferenceCall->stateChangedEvent(state); -} - -void CConferenceCall::phoneCallAddedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall) { - //_pConferenceCall->phoneCallAddedEvent(phoneCall); -} - -void CConferenceCall::phoneCallRemovedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall) { - //_pConferenceCall->phoneCallRemovedEvent(phoneCall); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CConferenceCall.h qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CConferenceCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCCONFERENCECALL_H -#define OWCCONFERENCECALL_H - -#include - -#include - -class CWengoPhone; -class CPhoneCall; -class PhoneCall; -class ConferenceCall; -class Presentation; -class PConferenceCall; - -/** - * Control layer for a conference call. - * - * @see ConferenceCall - * @ingroup control - * @author Tanguy Krotoff - */ -class CConferenceCall : public Control { -public: - - CConferenceCall(ConferenceCall & conferenceCall, CWengoPhone & cWengoPhone); - - ~CConferenceCall(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - /** - * @see ConferenceCall::addPhoneCall() - */ - void addPhoneCall(CPhoneCall & cPhoneCall); - - /** - * @see ConferenceCall::removePhoneCall() - */ - void removePhoneCall(CPhoneCall & cPhoneCall); - - /** - * @see ConferenceCall::addPhoneNumber() - */ - void addPhoneNumber(const std::string & phoneNumber); - - /** - * @see ConferenceCall::removePhoneNumber() - */ - void removePhoneNumber(const std::string & phoneNumber); - -private: - - void initPresentationThreadSafe(); - - void stateChangedEventHandler(ConferenceCall & sender, EnumConferenceCallState::ConferenceCallState state); - - void phoneCallAddedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall); - - void phoneCallRemovedEventHandler(ConferenceCall & sender, PhoneCall & phoneCall); - - ConferenceCall & _conferenceCall; - - PConferenceCall * _pConferenceCall; - - CWengoPhone & _cWengoPhone; -}; - -#endif //OWCCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CPhoneCall.cpp qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CPhoneCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CPhoneCall.h" - -#include -#include - -#include - -#include -#include - -#include -#include - -CPhoneCall::CPhoneCall(PhoneCall & phoneCall, CWengoPhone & cWengoPhone) - : _phoneCall(phoneCall), - _cWengoPhone(cWengoPhone) { - - _pPhoneCall = NULL; - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::initPresentationThreadSafe, this)); - PFactory::postEvent(event); -} - -CPhoneCall::~CPhoneCall() { - delete _pPhoneCall; -} - -void CPhoneCall::initPresentationThreadSafe() { - _pPhoneCall = PFactory::getFactory().createPresentationPhoneCall(*this); - - _phoneCall.stateChangedEvent += boost::bind(&CPhoneCall::stateChangedEventHandler, this, _1, _2); - _phoneCall.videoFrameReceivedEvent += boost::bind(&CPhoneCall::videoFrameReceivedEventHandler, this, _1, _2, _3); -} - -Presentation * CPhoneCall::getPresentation() const { - return _pPhoneCall; -} - -CWengoPhone & CPhoneCall::getCWengoPhone() const { - return _cWengoPhone; -} - -std::string CPhoneCall::getPeerSipAddress() const { - return _phoneCall.getPeerSipAddress().getSipAddress(); -} - -std::string CPhoneCall::getPeerUserName() const { - return _phoneCall.getPeerSipAddress().getUserName(); -} - -std::string CPhoneCall::getPeerDisplayName() const { - return _phoneCall.getPeerSipAddress().getDisplayName(); -} - -int CPhoneCall::getDuration() const { - return _phoneCall.getDuration(); -} - -void CPhoneCall::stateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::stateChangedEventHandlerThreadSafe, this, _1), state); - PFactory::postEvent(event); -} - -void CPhoneCall::stateChangedEventHandlerThreadSafe(EnumPhoneCallState::PhoneCallState state) { - if (!_pPhoneCall) { - return; - } - - if (state == EnumPhoneCallState::PhoneCallStateClosed) { - // the peer has closed the call - unbindAndClose(); - //// - } else { - _pPhoneCall->stateChangedEvent(state); - } -} - -void CPhoneCall::videoFrameReceivedEventHandler(PhoneCall & sender, piximage * remoteVideoFrame, piximage * localVideoFrame) { - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::videoFrameReceivedEventHandlerThreadSafe, this, _1, _2), remoteVideoFrame, localVideoFrame); - PFactory::postEvent(event); -} - -void CPhoneCall::videoFrameReceivedEventHandlerThreadSafe(piximage * remoteVideoFrame, piximage * localVideoFrame) { - if (_pPhoneCall) { - _pPhoneCall->videoFrameReceivedEvent(remoteVideoFrame, localVideoFrame); - } -} - -void CPhoneCall::hangUp() { - // here we're called from the presentation thread - unbindAndClose(); - //// - - // let's go to the model thread - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::hangUpThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); - //// -} - -void CPhoneCall::hangUpThreadSafe() { - _phoneCall.close(); -} - -void CPhoneCall::accept() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::acceptThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void CPhoneCall::acceptThreadSafe() { - _phoneCall.accept(); -} - -void CPhoneCall::hold() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::holdThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void CPhoneCall::holdThreadSafe() { - _phoneCall.hold(); -} - -void CPhoneCall::resume() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::resumeThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void CPhoneCall::resumeThreadSafe() { - _phoneCall.resume(); -} - -void CPhoneCall::blindTransfer(const std::string & phoneNumber) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CPhoneCall::blindTransferThreadSafe, this, _1), phoneNumber); - WengoPhone::getInstance().postEvent(event); -} - -void CPhoneCall::blindTransferThreadSafe(std::string phoneNumber) { - _phoneCall.blindTransfer(phoneNumber); -} - -CodecList::AudioCodec CPhoneCall::getAudioCodecUsed() { - return _phoneCall.getAudioCodecUsed(); -} - -CodecList::VideoCodec CPhoneCall::getVideoCodecUsed() { - return _phoneCall.getVideoCodecUsed(); -} - -EnumPhoneCallState::PhoneCallState CPhoneCall::getState() const { - return _phoneCall.getState(); -} - -void CPhoneCall::unbindAndClose() { - _phoneCall.videoFrameReceivedEvent -= boost::bind(&CPhoneCall::videoFrameReceivedEventHandler, this, _1, _2, _3); - _phoneCall.stateChangedEvent -= boost::bind(&CPhoneCall::stateChangedEventHandler, this, _1, _2); - _pPhoneCall->close(); - _pPhoneCall = NULL; -} - -bool CPhoneCall::isCallEncrypted() const { - return _phoneCall.isCallEncrypted(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CPhoneCall.h qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phonecall/CPhoneCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phonecall/CPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCPHONECALL_H -#define OWCPHONECALL_H - -#include - -#include -#include - -#include - -#include - -class Presentation; -class CWengoPhone; -class PPhoneCall; -class PhoneCall; -class WengoPhone; - -/** - * Control layer for a phone call. - * - * @see PhoneCall - * @ingroup control - * @author Tanguy Krotoff - */ -class CPhoneCall : public Control { -public: - - CPhoneCall(PhoneCall & phoneCall, CWengoPhone & cWengoPhone); - - ~CPhoneCall(); - - Presentation * getPresentation() const; - - CWengoPhone & getCWengoPhone() const; - - /** - * FIXME this breaks the control layer. - * Used inside QtContactCallListWidget in order to create a ConferenceCall. - */ - PhoneCall & getPhoneCall() const { - return _phoneCall; - } - - /** - * @see PhoneCall::getState() - */ - EnumPhoneCallState::PhoneCallState getState() const; - - /** - * @see PhoneCall::close() - * @see PhoneCall::reject() - */ - void hangUp(); - - /** - * @see PhoneCall::accept() - */ - void accept(); - - /** - * @see PhoneCall::mute() - */ - void mute(); - - /** - * @see PhoneCall::hold() - */ - void hold(); - - /** - * @see PhoneCall::resume() - */ - void resume(); - - /** - * @see PhoneCall::blindTransfer() - */ - void blindTransfer(const std::string & phoneNumber); - - /** - * @see PhoneCall::getAudioCodecUsed() - */ - CodecList::AudioCodec getAudioCodecUsed(); - - /** - * @see PhoneCall::getVideoCodecUsed() - */ - CodecList::VideoCodec getVideoCodecUsed(); - - /** - * Gets the peer SIP address (phone number) of the current call. - * - * @return SIP address - */ - std::string getPeerSipAddress() const; - - /** - * Gets the peer username part of the SIP address. - * - * @return peer username - */ - std::string getPeerUserName() const; - - /** - * Gets the peer display name part of the SIP address. - * - * @return peer display name - */ - std::string getPeerDisplayName() const; - - /** - * @see PhoneCall::getDuration() - */ - int getDuration() const; - - /** - * @see PhoneCall::isCallEncrypted - */ - bool isCallEncrypted() const; - -private: - - void unbindAndClose(); - - void initPresentationThreadSafe(); - - void stateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); - - void videoFrameReceivedEventHandler(PhoneCall & sender, piximage * remoteVideoFrame, piximage * localVideoFrame); - - void stateChangedEventHandlerThreadSafe(EnumPhoneCallState::PhoneCallState state); - - void videoFrameReceivedEventHandlerThreadSafe(piximage * remoteVideoFrame, piximage * localVideoFrame); - - void hangUpThreadSafe(); - - void acceptThreadSafe(); - - void holdThreadSafe(); - - void resumeThreadSafe(); - - void blindTransferThreadSafe(std::string phoneNumber); - - PhoneCall & _phoneCall; - - PPhoneCall * _pPhoneCall; - - CWengoPhone & _cWengoPhone; -}; - -#endif //OWCPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phoneline/CPhoneLine.cpp qutecom-2.2+dfsg1/wengophone/src/control/phoneline/CPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phoneline/CPhoneLine.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phoneline/CPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CPhoneLine.h" - -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include -#include - -CPhoneLine::CPhoneLine(IPhoneLine & phoneLine, CWengoPhone & cWengoPhone) - : _phoneLine(phoneLine), - _cWengoPhone(cWengoPhone) { - - _pPhoneLine = PFactory::getFactory().createPresentationPhoneLine(*this); - - _phoneLine.stateChangedEvent += boost::bind(&CPhoneLine::stateChangedEventHandler, this, _1, _2); - _phoneLine.phoneCallCreatedEvent += boost::bind(&CPhoneLine::phoneCallCreatedEventHandler, this, _1, _2); - _phoneLine.phoneCallClosedEvent += boost::bind(&CPhoneLine::phoneCallClosedEventHandler, this, _1, _2); - - // Notify the presentation of the current state of the phoneline - EnumPhoneLineState::PhoneLineState state = phoneLine.getState().getCode(); - stateChangedEventHandler(phoneLine, state); -} - -CPhoneLine::~CPhoneLine() { - OWSAFE_DELETE(_pPhoneLine); -} - -int CPhoneLine::makeCall(const std::string & phoneNumber) { - return _phoneLine.makeCall(phoneNumber); -} - -void CPhoneLine::stateChangedEventHandler(IPhoneLine & sender, EnumPhoneLineState::PhoneLineState state) { - _pPhoneLine->stateChangedEvent(state); -} - -void CPhoneLine::phoneCallCreatedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall) { - CPhoneCall * cPhoneCall = new CPhoneCall(phoneCall, _cWengoPhone); - _cPhoneCallMap[&phoneCall] = cPhoneCall; - _pPhoneLine->phoneCallCreatedEvent(*cPhoneCall); - - LOG_DEBUG("CPhoneCall created"); -} - -void CPhoneLine::phoneCallClosedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall) { - CPhoneCall * cPhoneCall = _cPhoneCallMap[&phoneCall]; - if (!cPhoneCall) { - LOG_FATAL("cPhoneCall cannot be NULL"); - } - _pPhoneLine->phoneCallClosedEvent(*cPhoneCall); -} - -bool CPhoneLine::hasPendingCalls() const { - return _phoneLine.hasPendingCalls(); -} - -void CPhoneLine::closePendingCalls() { - _phoneLine.closePendingCalls(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phoneline/CPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/control/phoneline/CPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/phoneline/CPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/phoneline/CPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCPHONELINE_H -#define OWCPHONELINE_H - -#include -#include - -#include -#include - -class IPhoneLine; -class PPhoneLine; -class PhoneCall; -class CWengoPhone; -class CPhoneCall; - -/** - * - * @ingroup control - * @author Tanguy Krotoff - */ -class CPhoneLine : public Trackable { -public: - - CPhoneLine(IPhoneLine & phoneLine, CWengoPhone & cWengoPhone); - - ~CPhoneLine(); - - PPhoneLine * getPresentation() const { - return _pPhoneLine; - } - - CWengoPhone & getCWengoPhone() const { - return _cWengoPhone; - } - - /** - * @see IPhoneLine::hasPendingcalls - */ - bool hasPendingCalls() const; - - /** - * @see IPhoneLine::closePendingCalls - */ - void closePendingCalls(); - - int makeCall(const std::string & phoneNumber); - -private: - - void stateChangedEventHandler(IPhoneLine & sender, EnumPhoneLineState::PhoneLineState state); - - void phoneCallCreatedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall); - - void phoneCallClosedEventHandler(IPhoneLine & sender, PhoneCall & phoneCall); - - IPhoneLine & _phoneLine; - - PPhoneLine * _pPhoneLine; - - CWengoPhone & _cWengoPhone; - - typedef std::map CPhoneCallMap; - - CPhoneCallMap _cPhoneCallMap; -}; - -#endif //OWCPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfile.cpp qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,260 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CUserProfile.h" - -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -CUserProfile::CUserProfile(UserProfile & userProfile, CWengoPhone & cWengoPhone) - : _userProfile(userProfile), - _cWengoPhone(cWengoPhone), - _cContactList(userProfile.getContactList(), cWengoPhone), - _cChatHandler(userProfile.getChatHandler(), *this) { - - _cHistory = NULL; - _cPhoneLine = NULL; - _cSms = NULL; - _cSoftUpdate = NULL; - _cWsCallForward = NULL; - - _pUserProfile = PFactory::getFactory().createPresentationUserProfile(*this); - - _userProfile.phoneLineCreatedEvent += - boost::bind(&CUserProfile::phoneLineCreatedEventHandler, this, _1, _2); - _userProfile.wsSmsCreatedEvent += - boost::bind(&CUserProfile::wsSmsCreatedEventHandler, this, _1, _2); - _userProfile.wsSoftUpdateCreatedEvent += - boost::bind(&CUserProfile::wsSoftUpdateCreatedEventHandler, this, _1, _2); - _userProfile.wsCallForwardCreatedEvent += - boost::bind(&CUserProfile::wsCallForwardCreatedEventHandler, this, _1, _2); - - _userProfile.loginStateChangedEvent += - boost::bind(&CUserProfile::loginStateChangedEventHandler, this, _1, _2); - _userProfile.networkDiscoveryStateChangedEvent += - boost::bind(&CUserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); - - _userProfile.getHistory().historyLoadedEvent += - boost::bind(&CUserProfile::historyLoadedEventHandler, this, _1); - - _userProfile.getPresenceHandler().authorizationRequestEvent += - boost::bind(&CUserProfile::authorizationRequestEventHandler, this, _1, _2, _3); - - _userProfile.getPresenceHandler().incomingSubscribeEvent += - boost::bind(&CUserProfile::incomingSubscribeEventHandler, this, _1, _2, _3, _4, _5); - - //Check if a PhoneLine already exist - if (_userProfile.getActivePhoneLine()) { - phoneLineCreatedEventHandler(_userProfile, *_userProfile.getActivePhoneLine()); - } - - historyLoadedEventHandler(_userProfile.getHistory()); - - if (_userProfile.getWsSms()) { - wsSmsCreatedEventHandler(_userProfile, *_userProfile.getWsSms()); - } - - if (_userProfile.getWsSoftUpdate()) { - wsSoftUpdateCreatedEventHandler(_userProfile, *_userProfile.getWsSoftUpdate()); - } - - if (_userProfile.getWsCallForward()) { - wsCallForwardCreatedEventHandler(_userProfile, *_userProfile.getWsCallForward()); - } -} - -CUserProfile::~CUserProfile() { - OWSAFE_DELETE(_pUserProfile); - OWSAFE_DELETE(_cHistory); - OWSAFE_DELETE(_cSms); - OWSAFE_DELETE(_cSoftUpdate); - OWSAFE_DELETE(_cPhoneLine); -} - -void CUserProfile::loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state) { - _pUserProfile->loginStateChangedEventHandler(sender, state); -} - -void CUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state) { - _pUserProfile->networkDiscoveryStateChangedEventHandler(sender, state); -} - -void CUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message) { - _pUserProfile->authorizationRequestEventHandler(sender, imContact, message); -} - -void CUserProfile::incomingSubscribeEventHandler(PresenceHandler & sender, - const std::string & imaccountId, int sid,const std::string & from,const std::string & evtType) -{ - _pUserProfile->incomingSubscribeEventHandler(sender,imaccountId, sid, from, evtType); -} - -void CUserProfile::phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine) { - if (!_cPhoneLine) { - _cPhoneLine = new CPhoneLine(phoneLine, _cWengoPhone); - LOG_DEBUG("CPhoneLine created"); - } -} - -void CUserProfile::wsSmsCreatedEventHandler(UserProfile & sender, WsSms & sms) { - if (!_cSms) { - _cSms = new CSms(sms, _cWengoPhone); - LOG_DEBUG("CSms created"); - } -} - -void CUserProfile::wsCallForwardCreatedEventHandler(UserProfile & sender, WsCallForward & wsCallForward) { - if (!_cWsCallForward) { - _cWsCallForward = new CWsCallForward(_cWengoPhone, wsCallForward); - } -} - -void CUserProfile::wsSoftUpdateCreatedEventHandler(UserProfile & sender, WsSoftUpdate & wsSoftUpdate) { - if (!_cSoftUpdate) { - _cSoftUpdate = new CSoftUpdate(wsSoftUpdate, _cWengoPhone); - LOG_DEBUG("CSoftUpdate created"); - - //Check for WengoPhone update - if (_userProfile.getSipAccount()) { - //if (_userProfile.getSipAccount()->getType() == SipAccount::SipAccountTypeWengo) { - wsSoftUpdate.checkForUpdate(); - //} - } - } -} - -void CUserProfile::historyLoadedEventHandler(History & history) { - if (!_cHistory) { - _cHistory = new CHistory(history, _cWengoPhone, *this); - } -} - -void CUserProfile::disconnect() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::disconnectThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfile::disconnectThreadSafe() { - _userProfile.disconnect(); -} - -void CUserProfile::makeContactCall(const std::string & contactId) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::makeContactCallThreadSafe, this, _1), contactId); - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfile::makeContactCallThreadSafe(std::string contactId) { - Contact * contact = _cContactList.getContact(contactId); - if (contact) { - EnumMakeCallError::MakeCallError error = _userProfile.makeCall(*contact); - if (error != EnumMakeCallError::NoError) { - makeCallErrorEvent(*this, error); - } - } -} - -void CUserProfile::makeCall(const std::string & phoneNumber) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::makeCallThreadSafe, this, _1), phoneNumber); - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfile::makeCallThreadSafe(std::string phoneNumber) { - EnumMakeCallError::MakeCallError error = _userProfile.makeCall(phoneNumber); - if (error != EnumMakeCallError::NoError) { - makeCallErrorEvent(*this, error); - } -} - -void CUserProfile::startIM(const std::string & contactId) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::startIMThreadSafe, this, _1), contactId); - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfile::startIMThreadSafe(std::string contactId) { - Contact * contact = _cContactList.getContact(contactId); - if (contact) { - _userProfile.startIM(*contact); - } -} - -//void CUserProfile::setWengoAccount(const WengoAccount & wengoAccount) { -// typedef ThreadEvent1 MyThreadEvent; -// MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::setWengoAccountThreadSafe, this, _1), wengoAccount); -// WengoPhone::getInstance().postEvent(event); -//} -// -//void CUserProfile::setWengoAccountThreadSafe(WengoAccount wengoAccount) { -// _userProfile.setWengoAccount(wengoAccount); -//} - -void CUserProfile::setSipAccount(const SipAccount & sipAccount) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&CUserProfile::setSipAccountThreadSafe, this, _1), sipAccount); - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfile::setSipAccountThreadSafe(SipAccount sipAccount) { - _userProfile.setSipAccount(sipAccount); -} - -PhoneCall * CUserProfile::getActivePhoneCall() const { - PhoneCall * result = NULL; - - //FIXME: model must not be used directly by the GUI - IPhoneLine * phoneLine = _userProfile.getActivePhoneLine(); - if (phoneLine) { - result = phoneLine->getActivePhoneCall(); - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfile.h qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,254 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCUSERPROFILE_H -#define OWCUSERPROFILE_H - -#include -#include - -#include -#include - -#include -#include - -#include - -#include - -class CHistory; -class CPhoneLine; -class CSms; -class CSoftUpdate; -class CWengoPhone; -class CWsCallForward; -class History; -class IMAccount; -class IPhoneLine; -class PhoneCall; -class PUserProfile; -class UserProfile; -class WengoAccount; -class WsCallForward; -class WsSms; -class WsSoftUpdate; -class PresenceHandler; - -/** - * Control layer for UserProfile. - * - * FIXME: 'init()' must be called on UserProfile before constructing CUserProfile. - * - * @author Philippe Bernery - */ -class CUserProfile : public Trackable { -public: - - Event makeCallErrorEvent; - - CUserProfile(UserProfile & userProfile, CWengoPhone & cWengoPhone); - - ~CUserProfile(); - - /** - * @see UserProfile::disconnect - */ - void disconnect(); - - /** - * @see UserProfile::makeCall() - */ - void makeContactCall(const std::string & contactId); - - /** - * @see UserProfile::makeCall() - */ - void makeCall(const std::string & phoneNumber); - - /** - * @see UserProfile::startIM - */ - void startIM(const std::string & contactId); - - /** - * @see UserProfile::setSipAccount - */ - void setSipAccount(const SipAccount & sipAccount); - - /** - * Gets the active phone call. - * - * Used for playing DTMF. - * - * @return active phone call or NULL - */ - PhoneCall * getActivePhoneCall() const; - - /** - * Gets the CHistory. - * - * @return the CHistory - */ - CHistory * getCHistory() const { - return _cHistory; - } - - /** - * Gets the CContactList. - * - * @return the CContactList - */ - CContactList & getCContactList() { - return _cContactList; - } - - /** - * @return the CWsCallForward object. - */ - CWsCallForward * getCWsCallForward() { - return _cWsCallForward; - } - - /** - * @return the CWengoPhone object. - */ - CWengoPhone & getCWengoPhone() { - return _cWengoPhone; - } - - /** - * Gets the UserProfile. - * - * TODO: This method should not exist (because it allows the GUI to access - * the model directly) and so should be removed ASAP. - */ - UserProfile & getUserProfile() { - return _userProfile; - } - - /** - * Gets the Presentation layer. - */ - PUserProfile * getPresentation() { - return _pUserProfile; - } - - CPhoneLine * getCPhoneLine() { - return _cPhoneLine; - } - -private: - - /** - * @see UserProfile::loginStateChangedEvent - */ - void loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state); - - /** - * @see UserProfile::networkDiscoveryStateChangedEvent - */ - void networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state); - - /** - * @see PresenceHandler::authorizationRequestEvent - */ - void authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message); - - /** - * @see PresenceHandler::authorizationRequestEvent - */ - void incomingSubscribeEventHandler(PresenceHandler & sender, - const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType); - - /** - * @see UserProfile::historyLoadedEvent - */ - void historyLoadedEventHandler(History & sender); - - /** - * @see UserProfile::phoneLineCreatedEvent - */ - void phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine); - - /** - * @see UserProfile::wsSmsCreatedEvent - */ - void wsSmsCreatedEventHandler(UserProfile & sender, WsSms & wsSms); - - /** - * @see UserProfile::wsSoftUpdateCreatedEvent - */ - void wsSoftUpdateCreatedEventHandler(UserProfile & sender, WsSoftUpdate & wsSoftUpdate); - - /** - * @see UserProfile::wsCallForwardCreatedEvent - */ - void wsCallForwardCreatedEventHandler(UserProfile & sender, WsCallForward & wsCallForward); - - /** - * @see disconnect() - */ - void disconnectThreadSafe(); - - /** - * @see makeCall() - */ - void makeContactCallThreadSafe(std::string contactId); - - /** - * @see makeCall() - */ - void makeCallThreadSafe(std::string phoneNumber); - - /** - * @see startIM - */ - void startIMThreadSafe(std::string contactId); - - /** - * @see setSipAccount - */ - void setSipAccountThreadSafe(SipAccount sipAccount); - - UserProfile & _userProfile; - - CWengoPhone & _cWengoPhone; - - PUserProfile * _pUserProfile; - - CContactList _cContactList; - - CHistory * _cHistory; - - CWsCallForward * _cWsCallForward; - - CChatHandler _cChatHandler; - - CSms * _cSms; - - CSoftUpdate * _cSoftUpdate; - - CPhoneLine * _cPhoneLine; -}; - -#endif //OWCUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfileHandler.cpp qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfileHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,200 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CUserProfileHandler.h" - -#include -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -CUserProfileHandler::CUserProfileHandler(UserProfileHandler & userProfileHandler, CWengoPhone & cWengoPhone) - : _userProfileHandler(userProfileHandler), - _cWengoPhone(cWengoPhone) { - - _cUserProfile = NULL; - - _pUserProfileHandler = PFactory::getFactory().createPresentationUserProfileHandler(*this); - - _userProfileHandler.noCurrentUserProfileSetEvent += - boost::bind(&CUserProfileHandler::noCurrentUserProfileSetEventHandler, this, _1); - _userProfileHandler.currentUserProfileWillDieEvent += - boost::bind(&CUserProfileHandler::currentUserProfileWillDieEventHandler, this, _1); - _userProfileHandler.userProfileInitializedEvent += - boost::bind(&CUserProfileHandler::userProfileInitializedEventHandler, this, _1, _2); - _userProfileHandler.sipAccountConnectionFailedEvent += - boost::bind(&CUserProfileHandler::sipAccountConnectionFailedEventHandler, this, _1, _2); - _userProfileHandler.profileLoadedFromBackupsEvent += - boost::bind(&CUserProfileHandler::profileLoadedFromBackupsEventHandler, this, _1, _2); - _userProfileHandler.profileCannotBeLoadedEvent += - boost::bind(&CUserProfileHandler::profileCannotBeLoadedEventHandler, this, _1, _2); - _userProfileHandler.networkDiscoveryStateChangedEvent += - boost::bind(&CUserProfileHandler::networkDiscoveryStateChangedEventHandler, this, _1, _2); -} - -CUserProfileHandler::~CUserProfileHandler() { - OWSAFE_DELETE(_pUserProfileHandler); - OWSAFE_DELETE(_cUserProfile); -} - -std::vector CUserProfileHandler::getUserProfileNames(bool onlyRealDir) { - return _userProfileHandler.getUserProfileNames(onlyRealDir); -} - -void CUserProfileHandler::setCurrentUserProfile(const std::string & login, const SipAccount & sipAccount) { - - if(!sipAccount.isEmpty() || !login.empty()) - _pUserProfileHandler->setCurrentUserProfileEventHandler(); - if (sipAccount.getType() == SipAccount::SipAccountTypeWengo) { - const WengoAccount & wengoAccount = dynamic_cast(sipAccount); - - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&CUserProfileHandler::setUserProfileWithWengoAccountThreadSafe, this, _1, _2), - login, wengoAccount); - - WengoPhone::getInstance().postEvent(event); - } else { - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&CUserProfileHandler::setUserProfileWithSipAccountThreadSafe, this, _1, _2), - login, sipAccount); - - WengoPhone::getInstance().postEvent(event); - } -} - -void CUserProfileHandler::setUserProfileWithSipAccountThreadSafe(std::string profileName, SipAccount sipAccount) { - _userProfileHandler.setCurrentUserProfile(profileName, sipAccount); -} - -void CUserProfileHandler::setUserProfileWithWengoAccountThreadSafe(std::string profileName, WengoAccount wengoAccount) { - _userProfileHandler.setCurrentUserProfile(profileName, wengoAccount); -} - -void CUserProfileHandler::logOff() { - // close active call(s) - if (_cUserProfile) { - CPhoneLine * cPhoneLine = _cUserProfile->getCPhoneLine(); - if (cPhoneLine) { - cPhoneLine->closePendingCalls(); - } - } - //// - - // hack to avoid crashes when logging off while an IMAccount is connecting - UserProfile * currentUserProfile = getUserProfileHandler().getCurrentUserProfile(); - if (currentUserProfile) { - currentUserProfile->getConnectHandler().userProfileIsLoggingOff(); - } - - setCurrentUserProfile(String::null, SipAccount::empty); -} - -bool CUserProfileHandler::userProfileExists(const std::string & name) const { - return _userProfileHandler.userProfileExists(name); -} - -SipAccount CUserProfileHandler::getSipAccountOfUserProfile(const std::string & name) { - UserProfile * userProfile = _userProfileHandler.getUserProfile(name); - SipAccount result; - - if (userProfile) { - result = *userProfile->getSipAccount(); - } - - OWSAFE_DELETE(userProfile); - - return result; -} - -void CUserProfileHandler::currentUserProfileReleased() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&CUserProfileHandler::currentUserProfileReleasedThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfileHandler::currentUserProfileReleasedThreadSafe() { - OWSAFE_DELETE(_cUserProfile); - - PFactory::getFactory().reset(); - - _userProfileHandler.currentUserProfileReleased(); -} - -void CUserProfileHandler::noCurrentUserProfileSetEventHandler(UserProfileHandler & sender) { - _pUserProfileHandler->noCurrentUserProfileSetEventHandler(); -} - -void CUserProfileHandler::currentUserProfileWillDieEventHandler(UserProfileHandler & sender) { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&CUserProfileHandler::currentUserProfileWillDieEventHandlerThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void CUserProfileHandler::currentUserProfileWillDieEventHandlerThreadSafe() { - _pUserProfileHandler->currentUserProfileWillDieEventHandler(); -} - -void CUserProfileHandler::userProfileInitializedEventHandler(UserProfileHandler & sender, UserProfile & userProfile) { - Mutex::ScopedLock scopedLock(_mutex); - if(!_cUserProfile) - { - _cUserProfile = new CUserProfile(userProfile, _cWengoPhone); - _pUserProfileHandler->userProfileInitializedEventHandler(); - } -} - -void CUserProfileHandler::sipAccountConnectionFailedEventHandler(SipAccount & sipAccount, EnumSipLoginState::SipLoginState state) { - _pUserProfileHandler->sipAccountConnectionFailedEventHandler(sipAccount, state); -} - -void CUserProfileHandler::profileLoadedFromBackupsEventHandler(UserProfileStorage &sender, std::string profileName) { - _pUserProfileHandler->profileLoadedFromBackupsEventHandler(profileName); -} - -void CUserProfileHandler::profileCannotBeLoadedEventHandler(UserProfileStorage &sender, std::string profileName) { - _pUserProfileHandler->profileCannotBeLoadedEventHandler(profileName); -} - -void CUserProfileHandler::networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state) { - - if ((state == SipAccount::NetworkDiscoveryStateError) || - (state == SipAccount::NetworkDiscoveryStateHTTPError) || - (state == SipAccount::NetworkDiscoveryStateSIPError)) { - _pUserProfileHandler->networkErrorEventHandler(sender); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfileHandler.h qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/profile/CUserProfileHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/profile/CUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,172 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCUSERPROFILEHANDLER_H -#define OWCUSERPROFILEHANDLER_H - -#include - -#include - -#include - -#include - -class CUserProfile; -class CWengoPhone; -class PUserProfileHandler; -class UserProfile; -class UserProfileHandler; -class UserProfileStorage; - -/** - * Control of UserProfileHandler. - * - * @author Philippe Bernery - */ -class CUserProfileHandler : public Trackable { -public: - - CUserProfileHandler(UserProfileHandler & userProfileHandler, CWengoPhone & cWengoPhone); - - ~CUserProfileHandler(); - - /** - * @see UserProfileHandler::getUserProfileNames - */ - std::vector getUserProfileNames(bool onlyRealDir = false); - - /** - * @return true if the UserProfile named 'name' exists - */ - bool userProfileExists(const std::string & name) const; - - /** - * @see UserProfileHandler::setUserProfile - */ - void setCurrentUserProfile(const std::string & profileName, - const SipAccount & sipAccount); - - /** - * Convenience method to log the user off - */ - void logOff(); - - /** - * @see UserProfileHandler::currentUserProfileReleased - */ - void currentUserProfileReleased(); - - /** - * Return a copy of the SipAccount of the UserProfile named 'name'. - * - * @param name the UserProfile name - * @return the SipAccount of the UserProfile named 'name' - */ - SipAccount getSipAccountOfUserProfile(const std::string & name); - - /** - * @return the current CUserProfile. - * Can be NULL. - */ - CUserProfile * getCUserProfile() const { - Mutex::ScopedLock scopedLock(_mutex); - return _cUserProfile; - } - - /** - * @return the Presentation layer. - */ - PUserProfileHandler * getPresentation() const { return _pUserProfileHandler; } - - /** - * @return the Model layer - */ - UserProfileHandler & getUserProfileHandler() const { return _userProfileHandler; } - -private: - - /** - * @see UserProfileHandler::noCurrentUserProfileSetEvent - */ - void noCurrentUserProfileSetEventHandler(UserProfileHandler & sender); - - /** - * @see UserProfileHandler::currentUserProfileWillDieEvent - */ - void currentUserProfileWillDieEventHandlerThreadSafe(); - void currentUserProfileWillDieEventHandler(UserProfileHandler & sender); - - /** - * @see UserProfileHandler::userProfileInitializedEvent - */ - void userProfileInitializedEventHandler(UserProfileHandler & sender, - UserProfile & userProfile); - - /** - * @see UserProfileHandler::sipAccountConnectionFailedEvent - */ - void sipAccountConnectionFailedEventHandler(SipAccount & sipAccount, EnumSipLoginState::SipLoginState); - - /** - * @see UserProfileStorage::profileLoadedFromBackupsEvent - */ - void profileLoadedFromBackupsEventHandler(UserProfileStorage &sender, - std::string profileName); - - /** - * @see UserProfileStorage::profileCannotBeLoadedEvent - */ - void profileCannotBeLoadedEventHandler(UserProfileStorage &sender, - std::string profileName); - - /** - * @see setCurrentUserProfile - */ - void setUserProfileWithSipAccountThreadSafe(std::string profileName, - SipAccount sipAccount); - - /** - * @see setCurrentUserProfile - */ - void setUserProfileWithWengoAccountThreadSafe(std::string profileName, - WengoAccount wengoAccount); - /** - * @see currentUserProfileReleased - */ - void currentUserProfileReleasedThreadSafe(); - - /** - * @see UserProfileHandler::networkDiscoveryStateChangedEvent - */ - void networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state); - - CUserProfile * _cUserProfile; - - PUserProfileHandler * _pUserProfileHandler; - - UserProfileHandler & _userProfileHandler; - - CWengoPhone & _cWengoPhone; - - mutable Mutex _mutex; -}; - -#endif //OWCUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.cpp qutecom-2.2+dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CWsCallForward.h" - -#include - -CWsCallForward::CWsCallForward(CWengoPhone & cWengoPhone, WsCallForward & wsCallForward) - : _wsCallForward(wsCallForward), _cWengoPhone(cWengoPhone) { - - _wsCallForward.wsCallForwardEvent += wsCallForwardEvent; -} - -CWsCallForward::~CWsCallForward() { -} - -CWengoPhone& CWsCallForward::getCWengoPhone() { - return _cWengoPhone; -} - -void CWsCallForward::disableCallForward() { - _wsCallForward.disableCallForward(); -} - -void CWsCallForward::forwardToVoiceMail() { - _wsCallForward.forwardToVoiceMail(); -} - -void CWsCallForward::forwardToNumber(const std::string & number1, - const std::string & number2, const std::string & number3) { - _wsCallForward.forwardToNumber(number1, number2, number3); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.h qutecom-2.2+dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/callforward/CWsCallForward.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CWSCALLFORWARD_H -#define CWSCALLFORWARD_H - -#include - -#include - -class CWengoPhone; - -/** - * - * @ingroup control - * @author Mathieu Stute - */ -class CWsCallForward : public Trackable { - -public: - - CWsCallForward(CWengoPhone & cWengoPhone, WsCallForward & wsCallForward); - - ~CWsCallForward(); - - /** - * @see WsCallForward - */ - Event wsCallForwardEvent; - - /** - * @see WsCallForward - */ - void disableCallForward(); - - /** - * @see WsCallForward - */ - void forwardToVoiceMail(); - - /** - * @see WsCallForward - */ - void forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3); - - CWengoPhone& getCWengoPhone(); - -private: - - WsCallForward & _wsCallForward; - - CWengoPhone& _cWengoPhone; -}; - -#endif /* CWSCALLFORWARD_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/info/CWsInfo.cpp qutecom-2.2+dfsg1/wengophone/src/control/webservices/info/CWsInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/info/CWsInfo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/info/CWsInfo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CWsInfo.h" - -CWsInfo::CWsInfo(WsInfo & wsInfo, CWengoPhone & cWengoPhone) - : _wsInfo(wsInfo), _cWengoPhone(cWengoPhone) { - - _wsInfo.wsInfoWengosEvent += wsInfoWengosEvent; - _wsInfo.wsInfoSmsCountEvent += wsInfoSmsCountEvent; - _wsInfo.wsInfoActiveMailEvent += wsInfoActiveMailEvent; - _wsInfo.wsInfoVoiceMailEvent += wsInfoVoiceMailEvent; - _wsInfo.wsInfoLandlineNumberEvent += wsInfoLandlineNumberEvent; - _wsInfo.wsCallForwardInfoEvent += wsCallForwardInfoEvent; -} - -CWsInfo::~CWsInfo() { -} - -void CWsInfo::getWengosCount() { - _wsInfo.getWengosCount(true); - _wsInfo.execute(); -} - -void CWsInfo::getSmsCount() { - _wsInfo.getSmsCount(true); - _wsInfo.execute(); -} - -void CWsInfo::getActiveMail() { - _wsInfo.getActiveMail(true); - _wsInfo.execute(); -} - -void CWsInfo::getUnreadVoiceMail() { - _wsInfo.getUnreadVoiceMail(true); - _wsInfo.execute(); -} - -void CWsInfo::getCallForwardInfo() { - _wsInfo.getCallForwardInfo(true); - _wsInfo.execute(); -} - -void CWsInfo::getLandlineNumber() { - _wsInfo.getLandlineNumber(true); - _wsInfo.execute(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/info/CWsInfo.h qutecom-2.2+dfsg1/wengophone/src/control/webservices/info/CWsInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/info/CWsInfo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/info/CWsInfo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CWSINFO_H -#define CWSINFO_H - -#include - -#include - -#include - -class CWengoPhone; - -/** - * - * @ingroup control - * @author Mathieu Stute - */ -class CWsInfo : public Trackable { -public: - - /** - * @see WsInfo::wsInfoWengosEvent - */ - Event wsInfoWengosEvent; - - /** - * @see WsInfo::wsInfoSmsCountEvent - */ - Event wsInfoSmsCountEvent; - - /** - * @see WsInfo::wsInfoActiveMailEvent - */ - Event wsInfoActiveMailEvent; - - /** - * @see WsWengoInfo::wsInfoVoiceMailEvent - */ - Event wsInfoVoiceMailEvent; - - /** - * @see WsWengoInfo::wsInfoLandlineNumberEvent - */ - Event wsInfoLandlineNumberEvent; - - /** - * @see WsWengoInfo::wsCallForwardInfoEvent - */ - Event wsCallForwardInfoEvent; - - /** - * default constructor. - * - * @param wsInfo reference to WsWengoInfo. - * @param cWengoPhone reference to CWengoPhone. - */ - CWsInfo(WsInfo & wsInfo, CWengoPhone & cWengoPhone); - - /** - * default destructor. - */ - ~CWsInfo(); - - /** - * Get a reference to CWengoPhone. - * - * @return _cWengoPhone. - */ - CWengoPhone & getCWengoPhone() const { - return _cWengoPhone; - } - - /** - * wengo's request. - */ - void getWengosCount(); - - /** - * sms count request. - */ - void getSmsCount(); - - /** - * active mail request. - */ - void getActiveMail(); - - /** - * voice mail count request. - */ - void getUnreadVoiceMail(); - - /** - * call forward request. - */ - void getCallForwardInfo(); - - /** - * Landline number request. - */ - void getLandlineNumber(); - -private: - - WsInfo & _wsInfo; - - CWengoPhone & _cWengoPhone; -}; - -#endif //CWSINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/sms/CSms.cpp qutecom-2.2+dfsg1/wengophone/src/control/webservices/sms/CSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/sms/CSms.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/sms/CSms.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CSms.h" - -#include -#include - -CSms::CSms(WsSms & wsSms, CWengoPhone & cWengoPhone) - : _wsSms(wsSms), - _cWengoPhone(cWengoPhone) { - - _pSms = PFactory::getFactory().createPresentationSms(*this); - - _wsSms.smsStatusEvent += smsStatusEvent; -} - -CSms::~CSms() { - delete _pSms; -} - -int CSms::sendSMS(const std::string & phoneNumber, const std::string & message) { - return _wsSms.sendSMS(phoneNumber, message); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/sms/CSms.h qutecom-2.2+dfsg1/wengophone/src/control/webservices/sms/CSms.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/sms/CSms.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/sms/CSms.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CSMS_H -#define CSMS_H - -#include - -#include - -#include - -class CWengoPhone; -class PSms; - -/** - * - * @ingroup control - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class CSms : public Trackable { -public: - - /** - * @see Sms::smsStatusEvent - */ - Event smsStatusEvent; - - CSms(WsSms & sms, CWengoPhone & cWengoPhone); - - ~CSms(); - - CWengoPhone & getCWengoPhone() const { - return _cWengoPhone; - } - - /** - * @see Sms::sendSMS() - */ - int sendSMS(const std::string & phoneNumber, const std::string & message); - -private: - - WsSms & _wsSms; - - CWengoPhone & _cWengoPhone; - - PSms * _pSms; -}; - -#endif //CSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp qutecom-2.2+dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CSoftUpdate.h" - -#include -#include -#include - -#include - -CSoftUpdate::CSoftUpdate(WsSoftUpdate & wsSoftUpdate, CWengoPhone & cWengoPhone) - : _wsSoftUpdate(wsSoftUpdate), - _cWengoPhone(cWengoPhone) { - - _pSoftUpdate = PFactory::getFactory().createPresentationSoftUpdate(*this); - - _wsSoftUpdate.updateWengoPhoneEvent += - boost::bind(&CSoftUpdate::updateWengoPhoneEventHandler, this, _1, _2, _3, _4, _5); -} - -CSoftUpdate::~CSoftUpdate() { - OWSAFE_DELETE(_pSoftUpdate); -} - -void CSoftUpdate::updateWengoPhoneEventHandler(WsSoftUpdate & sender, - const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize) { - - _pSoftUpdate->updateWengoPhoneEvent(downloadUrl, buildId, version, fileSize); -} - -void CSoftUpdate::checkForUpdate() { - _wsSoftUpdate.checkForUpdate(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.h qutecom-2.2+dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/control/webservices/softupdate/CSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CSOFTUPDATE_H -#define CSOFTUPDATE_H - -#include - -#include - -class WsSoftUpdate; -class CWengoPhone; -class PSoftUpdate; - -/** - * - * @ingroup control - * @author Tanguy Krotoff - */ -class CSoftUpdate : public Trackable { -public: - - CSoftUpdate(WsSoftUpdate & wsSoftUpdate, CWengoPhone & cWengoPhone); - - ~CSoftUpdate(); - - CWengoPhone & getCWengoPhone() const { - return _cWengoPhone; - } - - void checkForUpdate(); - -private: - - void updateWengoPhoneEventHandler(WsSoftUpdate & sender, - const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize); - - WsSoftUpdate & _wsSoftUpdate; - - CWengoPhone & _cWengoPhone; - - PSoftUpdate * _pSoftUpdate; -}; - -#endif //CSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/EnumSipLoginState.h qutecom-2.2+dfsg1/wengophone/src/model/account/EnumSipLoginState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/EnumSipLoginState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/EnumSipLoginState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWENUMSIPLOGINSTATE_H -#define OWENUMSIPLOGINSTATE_H - -#include - -/** - * SIP account login state. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class EnumSipLoginState : NonCopyable { -public: - - enum SipLoginState { - /** Initial login state. */ - SipLoginStateUnknown, - - /** This SIP account is ready to login. */ - SipLoginStateReady, - - /** Registration has been successful, login ok connection done. */ - SipLoginStateConnected, - - /** This SIP account has been disconnected. */ - SipLoginStateDisconnected, - - /** Login/Password incorrect. */ - SipLoginStatePasswordError, - - /** A network error occured. */ - SipLoginStateNetworkError, - - /** Try to connect. */ - SipLoginStateProgress - }; - - /** - * Converts a state into a string. - * - * @return the string - */ - //static std::string toString(SipLoginState state); -}; - -#endif //OWENUMSIPLOGINSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/LocalNetworkAccount.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/LocalNetworkAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/LocalNetworkAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/LocalNetworkAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "LocalNetworkAccount.h" - -#include - -LocalNetworkAccount::LocalNetworkAccount() { - //init(); -} - -void LocalNetworkAccount::init() { - _identity = "guest"; - _username = "sip:guest@guest"; - _realm = String::null; - _displayName = "guest"; - _registerServerHostname = String::null; - _registerServerPort = -1; - _proxyServerHostname = String::null; - _proxyServerPort = -1; - _password = String::null; -} - -std::string LocalNetworkAccount::serialize() { - return String::null; -} - -bool LocalNetworkAccount::unserialize(const std::string & /*data*/) { - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/LocalNetworkAccount.h qutecom-2.2+dfsg1/wengophone/src/model/account/LocalNetworkAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/LocalNetworkAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/LocalNetworkAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef LOCALNETWORKACCOUNT_H -#define LOCALNETWORKACCOUNT_H - -#include "SipAccountType.h" -#include "model/config/ConfigItem.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class LocalNetworkAccount : public SipAccountType, public ConfigItem { -public: - - LocalNetworkAccount(); - - void init(); - - std::string serialize(); - - bool unserialize(const std::string & data); - - std::string getName() const { - return "LocalNetworkAccount"; - } -}; - -#endif //LOCALNETWORKACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccount.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,326 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "SipAccount.h" - -#include -#include -#include -#include - -#include -#include -#include - -SipAccount SipAccount::empty; -unsigned short SipAccount::_testSIPRetry = 4; -int SipAccount::_initTimerMaximum = 4; -int SipAccount::_initTimerInterval = 5000; - -SipAccount::SipAccount() - : Account(EnumIMProtocol::IMProtocolSIP) { - - _registerServerPort = 0; - _sipProxyServerPort = 0; - _httpTunnelServerPort = 0; - _httpsTunnelServerPort = 0; - _needsHttpTunnel = false; - _httpTunnelWithSSL = false; - _localSIPPort = 0; - _isConnected = false; - _rememberPassword = true; - _visibleName = ""; - _voicemail = "123"; - _enablePIM = true; - _initSuccessful = false; - - _discoveringNetwork = false; - _lastNetworkDiscoveryState = NetworkDiscoveryStateError; - - //_lastNetworkDiscoveryState = NetworkDiscoveryStateUnknown; - _lastLoginState = EnumSipLoginState::SipLoginStateUnknown; - - //_initTimer.timeoutEvent += boost::bind(&SipAccount::initTimeoutEventHandler, this); - _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); - _initTimerCounter = 0; -} - -SipAccount::SipAccount(const std::string & username,const std::string & userid , - const std::string & password, const std::string & realm, - const std::string & registerservername, unsigned registerserverport, - const std::string & SIPproxyservername, unsigned SIPproxyserverport, - bool rememberPasswod, bool enablePIM) { - - _protocol = EnumIMProtocol::IMProtocolSIP; - _identity = userid; - _username = username; - _realm = realm; - _password = password; - _registerServerHostname = registerservername; - _registerServerPort = registerserverport; - _sipProxyServerHostname = SIPproxyservername; - _sipProxyServerPort = SIPproxyserverport; - _enablePIM = enablePIM; - _voicemail = "123"; - _rememberPassword = rememberPasswod; - _discoveringNetwork = false; - _lastNetworkDiscoveryState = NetworkDiscoveryStateError; - _initSuccessful = false; - - _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); - _initTimerCounter = 0; -} - -SipAccount::SipAccount(const SipAccount & sipAccount) - : Account(sipAccount) { - copy(sipAccount); -} - -SipAccount & SipAccount::operator = (const SipAccount & sipAccount) { - copy(sipAccount); - - return *this; -} - -SipAccount * SipAccount::clone() const { - return new SipAccount(*this); -} - -SipAccount::~SipAccount() { - Mutex::ScopedLock lock(_mutex); - - if (NetworkObserver::hasInstance()) { - NetworkObserver::getInstance().connectionIsDownEvent -= - boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); - NetworkObserver::getInstance().connectionIsUpEvent -= - boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1); - } - - _initTimer.stop(); -} - -void SipAccount::copy(const SipAccount & sipAccount) { - Account::copy(sipAccount); - - _registerServerHostname = sipAccount._registerServerHostname; - _registerServerPort = sipAccount._registerServerPort; - _sipProxyServerHostname = sipAccount._sipProxyServerHostname; - _sipProxyServerPort = sipAccount._sipProxyServerPort; - _httpTunnelServerHostname = sipAccount._httpTunnelServerHostname; - _httpTunnelServerPort = sipAccount._httpTunnelServerPort; - _httpsTunnelServerHostname = sipAccount._httpsTunnelServerHostname; - _httpsTunnelServerPort = sipAccount._httpsTunnelServerPort; - _needsHttpTunnel = sipAccount._needsHttpTunnel; - _httpTunnelWithSSL = sipAccount._httpTunnelWithSSL; - _localSIPPort = sipAccount._localSIPPort; - _isConnected = sipAccount._isConnected; - _rememberPassword = sipAccount._rememberPassword; - _displayName = sipAccount._displayName; - _identity = sipAccount._identity; - _username = sipAccount._username; - _password = sipAccount._password; - _realm = sipAccount._realm; - _lastNetworkDiscoveryState = sipAccount._lastNetworkDiscoveryState; - _lastLoginState = sipAccount._lastLoginState; - _visibleName = sipAccount._visibleName; - _voicemail = sipAccount._voicemail; - _enablePIM = sipAccount._enablePIM; - _initSuccessful = sipAccount._initSuccessful; - - _discoveringNetwork = false; - - _initTimer.lastTimeoutEvent += boost::bind(&SipAccount::initLastTimeoutEventHandler, this); - _initTimerCounter = sipAccount._initTimerCounter; -} - -bool SipAccount::operator == (const SipAccount & other) const { - if (other.getType() != SipAccountTypeBasic) { - return false; - } - else - loginStateChangedEvent(*(SipAccount *)this, EnumSipLoginState::SipLoginStateNetworkError); - - return ( _identity == other._identity && - _username == other._username && - _realm == other._realm && - _password == other._password && - _registerServerHostname == other._registerServerHostname && - _registerServerPort == other._registerServerPort && - _sipProxyServerHostname == other._sipProxyServerHostname && - _sipProxyServerPort == other._sipProxyServerPort ); -} - -void SipAccount::setConnected(bool connected) { - Mutex::ScopedLock lock(_mutex); - - if (_isConnected != connected) { - _isConnected = connected; - if (_isConnected) { - loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateConnected); - } else { - loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateDisconnected); - } - } -} - -void SipAccount::phoneLineAuthenticationError() { - loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStatePasswordError); -} - -void SipAccount::init() { - Mutex::ScopedLock lock(_mutex); - - _initSuccessful = false; - - if (NetworkObserver::getInstance().isConnected()) { - _initTimerCounter = 0; - _initTimer.start(0, _initTimerInterval, 1); - } - else - loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateNetworkError); - - NetworkObserver::getInstance().connectionIsDownEvent += - boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); - NetworkObserver::getInstance().connectionIsUpEvent += - boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1); -} - -void SipAccount::initLastTimeoutEventHandler() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&SipAccount::initLastTimeoutEventHandlerThreadSafe, this)); - WengoPhone::getInstance().postEvent(event); -} - -void SipAccount::initLastTimeoutEventHandlerThreadSafe() { - Mutex::ScopedLock lock(_mutex); - - _initTimer.stop(); - - if (++_initTimerCounter >= _initTimerMaximum) { - loginStateChangedEvent(*this, EnumSipLoginState::SipLoginStateNetworkError); - networkDiscoveryStateChangedEvent(*this, _lastNetworkDiscoveryState); - } else { - if (!_discoveringNetwork) { - _discoveringNetwork = true; - _lastLoginState = discoverNetwork(); - if (_lastLoginState != EnumSipLoginState::SipLoginStateNetworkError) { - - loginStateChangedEvent(*this, _lastLoginState); - networkDiscoveryStateChangedEvent(*this, _lastNetworkDiscoveryState); - - /*NetworkObserver::getInstance().connectionIsDownEvent -= - boost::bind(&SipAccount::connectionIsDownEventHandler, this, _1); - NetworkObserver::getInstance().connectionIsUpEvent -= - boost::bind(&SipAccount::connectionIsUpEventHandler, this, _1);*/ - _initSuccessful = true; - } else { - // restart timer - _initTimer.start(_initTimerInterval, 0, 1); - } - _discoveringNetwork = false; - } - } -} - -void SipAccount::connectionIsUpEventHandler(NetworkObserver & sender) { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&SipAccount::connectionIsUpEventHandlerThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void SipAccount::connectionIsUpEventHandlerThreadSafe() { - Mutex::ScopedLock lock(_mutex); - - if (!_initSuccessful) { - _initTimerCounter = 0; - _initTimer.start(0, _initTimerInterval, 1); - } -} - -void SipAccount::connectionIsDownEventHandler(NetworkObserver & sender) { - //typedef ThreadEvent0 MyThreadEvent; - //MyThreadEvent * event = - // new MyThreadEvent(boost::bind(&SipAccount::connectionIsDownEventHandlerThreadSafe, this)); - - //WengoPhone::getInstance().postEvent(event); - connectionIsDownEventHandlerThreadSafe(); -} - -void SipAccount::connectionIsDownEventHandlerThreadSafe() { - Mutex::ScopedLock lock(_mutex); - - _initTimer.stop(); -} - -bool SipAccount::discoverForSIP() { - // - // Please contact network@openwengo.com before any modifications. - // - - LOG_DEBUG("discovering network parameters for SIP connection"); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _localSIPPort = _networkDiscovery.getFreeLocalPort(); - - if (!config.getNetWorkTunnelNeeded()) { - LOG_DEBUG("SIP will use " + String::fromNumber(_localSIPPort) + " as local SIP port"); - - // SIP test with UDP - for (unsigned short i = 0; i < _testSIPRetry; i++) { - LOG_DEBUG("testSIP test number: " + String::fromNumber(i + 1)); - - if (_networkDiscovery.testSIP(_sipProxyServerHostname,_username, (unsigned short) _sipProxyServerPort, (unsigned short) _localSIPPort)) { - LOG_DEBUG("SIP can connect via UDP"); - _needsHttpTunnel = false; - return true; - } - } - //// - } - - LOG_ERROR("cannot connect via UDP"); - - return false; -} - -EnumSipLoginState::SipLoginState SipAccount::discoverNetwork() { - if (!discoverForSIP()) { - LOG_ERROR("error while discovering network for SIP"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateSIPError; - return EnumSipLoginState::SipLoginStateNetworkError; - } - - LOG_DEBUG("initialization Ok"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; - return EnumSipLoginState::SipLoginStateReady; -} - -bool SipAccount::isEmpty() const { - return ( _identity.empty() || - _username.empty() || - _realm.empty() || - _registerServerHostname.empty() || - _registerServerPort == 0 || - _sipProxyServerHostname.empty() || - _sipProxyServerPort == 0 ); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccount.h qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,577 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWSIPACCOUNT_H -#define OWSIPACCOUNT_H - -#include "EnumSipLoginState.h" - -#include - -#include -#include - -#include -#include - -#include - -#include - -class NetworkObserver; - -/** - * Contains informations of a SIP account. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - * @author Xavier Desjardins - */ -class SipAccount : public Account { -public: - - /** Empty SipAccount. */ - static SipAccount empty; - - /** - * Emitted when the account tried to register. - * - * @param sender this class - * @param state the SIP account login state - */ - Event< void (SipAccount & sender, EnumSipLoginState::SipLoginState state) > loginStateChangedEvent; - - enum NetworkDiscoveryState { - /** Initial NetworkDiscoveryState. */ - NetworkDiscoveryStateUnknown, - - /** Network discovery has been successful. */ - NetworkDiscoveryStateOk, - - /** An error occured in testHTTP. */ - NetworkDiscoveryStateHTTPError, - - /** An error occured in testSIP. */ - NetworkDiscoveryStateSIPError, - - /** A proxy has been detected and it needs authentication. */ - NetworkDiscoveryStateProxyNeedsAuthentication, - - /** A sip error occured while discovering the network. */ - NetworkDiscoveryStateError - }; - - /** - * Emitted when an event occured while detecting network configuration. - * - * @param sender this class - * @param state state of the network discovery - */ - Event< void (SipAccount & sender, NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; - - SipAccount(); - - SipAccount(const std::string & username,const std::string & userid , - const std::string & password, const std::string & realm, - const std::string & registerservername, unsigned registerserverport, - const std::string & SIPproxyservername, unsigned SIPproxyserverport, - bool rememberPassword, bool enablePIM); - - SipAccount(const SipAccount & sipAccount); - - virtual ~SipAccount(); - - virtual SipAccount * clone() const; - - virtual SipAccount & operator = (const SipAccount & sipAccount); - - virtual bool operator== (const SipAccount & other) const; - - /** - * Initializes the SIP account. - * - * Discover network and set configuration. - */ - virtual void init(); - - /** - * @return the full identity - * e.g: identity: toto - * realm: voip.wengo.fr - * full identity: toto@voip.wengo.fr - */ - virtual const std::string getFullIdentity() const { - return getIdentity() + std::string("@") + getRealm(); - } - - /** - * @return the sip address - * e.g: identity: toto - * realm: voip.wengo.fr - * full identity: sip:toto@voip.wengo.fr - */ - const std::string getSIPAddress() const { - return std::string("sip:") + getIdentity() + std::string("@") + getRealm(); - } - - /** - * @return the user identity - */ - const std::string & getIdentity() const { - return _identity; - } - /** - * @param identity the user identity - */ - void setIdentity(const std::string & identity) { _identity = identity; } - - /** - * @return the user name. Will be sent in the "From: " header - * of a SIP transaction. Usually same as Identity - */ - const std::string & getUsername() const { - return _username; - } - /** - * @param the user name. Will be sent in the "From: " header - * of a SIP transaction. Usually same as Identity - */ - void setUsername(const std::string & username) { _username = username; } - - /** - * @return the realm of this SipAccount. - * e.g: from a wengo account: test@voip.openwengo.org, - * getRealm will return voip.openwengo.org - */ - const std::string & getRealm() const { - return _realm; - } - - /** - * @param the realm of this SipAccount. - * e.g: from a wengo account: test@voip.openwengo.org, - * getRealm will return voip.openwengo.org - */ - void setRealm(const std::string & realm) { _realm = realm; } - - /** - * @return the password. - */ - const std::string & getPassword() const { - return _password; - } - - /** - * @param the password. - */ - void setPassword(const std::string & password){ _password = password; } - - /** - * @return the display name - */ - const std::string & getDisplayName() const { - return _displayName; - } - - /** - * @param the display name - */ - void setDisplayName(const std::string & displayName) { _displayName = displayName; } - - /** - * @return the register server address - */ - const std::string & getRegisterServerHostname() const { - return _registerServerHostname; - } - - /** - * @param the register server address - */ - void setRegisterServerHostname(const std::string & server) { _registerServerHostname = server; } - - /** - * @return the register server port - */ - unsigned getRegisterServerPort() const { - return _registerServerPort; - } - - /** - * @param the register server port - */ - void setRegisterServerPort(unsigned port) { _registerServerPort = port; } - - /** - * @return the SIP proxy server address - */ - const std::string & getSIPProxyServerHostname() const { - return _sipProxyServerHostname; - } - - /** - * @param SIP proxy server address. - */ - void setSIPProxyServerHostname(const std::string & server) { _sipProxyServerHostname = server; } - - /** - * @return the SIP proxy server port - */ - unsigned getSIPProxyServerPort() const { - return _sipProxyServerPort; - } - - /** - * @param SIP proxy server port. - */ - void setSIPProxyServerPort(unsigned port) { _sipProxyServerPort = port; } - - /** - * @return the http tunnel server address. Currently only useful for a WengoAccount - */ - const std::string & getHttpTunnelServerHostname() const { - return _httpTunnelServerHostname; - } - - /** - * @return the http tunnel server port. Currently only useful for a WengoAccount - */ - unsigned getHttpTunnelServerPort() const { - return _httpTunnelServerPort; - } - - /** - * @return the https tunnel server address. Currently only useful for a WengoAccount - */ - const std::string & getHttpsTunnelServerHostname() const { - return _httpsTunnelServerHostname; - } - - /** - * @return the https tunnel server port. Currently only useful for a WengoAccount - */ - unsigned getHttpsTunnelServerPort() const { - return _httpsTunnelServerPort; - } - - /** - * @return true if HttpTunnel must be used with SSL - */ - bool httpTunnelHasSSL() const { - return _httpTunnelWithSSL; - } - - /** - * @return true if the SIP connection needs a HttpTunnel - */ - bool isHttpTunnelNeeded() const { - return _needsHttpTunnel; - } - - /** - * @return the local SIP port to use - */ - unsigned getLocalSIPPort() const { - return _localSIPPort; - } - - /** - * @return True if remember password is activated. - */ - bool isPasswordRemembered() const { - return _rememberPassword; - } - - /** - * @return Set remember password. - */ - void setRememberPassword(bool newState) { - _rememberPassword = newState; - } - - /** - * @return true if this SipAccount is connected - */ - bool isConnected() const { - return _isConnected; - } - - /** - * Sets connection state. - */ - void setConnected(bool connected); - - /** - * PhoneLine can not connect. - */ - void phoneLineAuthenticationError(); - - enum SipAccountType { - /** Basic SIP account. */ - SipAccountTypeBasic, - - /** Wengo SIP account. */ - SipAccountTypeWengo - }; - - /** - * Gets the type of SIP account for this SipAccount. - * - * @return SIP account type - */ - virtual SipAccountType getType() const { - return SipAccountTypeBasic; - } - - NetworkDiscoveryState getLastNetworkDiscoveryState() const { - return _lastNetworkDiscoveryState; - } - - EnumSipLoginState::SipLoginState getLastLoginState() const { - return _lastLoginState; - } - - /** - * Gets the VLine used by this SipAccount. - */ - int getVLineID() const { - return _vLineId; - } - - /** - * Sets the VLine ID used by this SipAccount. - */ - void setVLineID(int vLineId) { - _vLineId = vLineId; - } - - /** - * @return true if empty - */ - virtual bool isEmpty() const; - - /** - * @return password set by user - */ - virtual const std::string getUserPassword() const { - return _password; - } - - /** - * @return userprofile's name - */ - virtual const std::string getUserProfileName() const { - return _userProfileName; - } - - /** - * Sets the userprofile's name - * - * @param newUserProfileName name of the userprofile - */ - void setUserProfileName(std::string newUserProfileName) { - _userProfileName = newUserProfileName; - } - - /** - * Sets visible name - * - * param name name to be displayed to the user - */ - void setVisibleName(const std::string name) { - _visibleName = name; - } - - /** - * @return name setted by the user - */ - virtual const std::string getVisibleName() const { - return _visibleName; - } - - /** - * @return voicemail number - */ - const std::string getVoicemailNumber() { - return _voicemail; - } - - /** - * Sets the voicemail number - * @param number new voicemail number - */ - void setVoicemailNumber(std::string number) { - _voicemail = number; - } - - /** - * Activate PIM(SIP/SIMPLE) support. - * @param enable if True SIP/SIMPLE is enabled. - */ - void enablePIM(const bool enable) { - _enablePIM = enable; - } - - /** - * @return True if SIP/SIMPLE is enabled. - */ - bool isPIMEnabled() const { - return _enablePIM; - } - -protected: - - /** - * Copy a SipAccount. - */ - virtual void copy(const SipAccount & sipAccount); - - //virtual void initTimeoutEventHandler(); - - void initLastTimeoutEventHandler(); - void initLastTimeoutEventHandlerThreadSafe(); - - /** - * @see NetworkObserver::connectionIsUpEvent - */ - void connectionIsUpEventHandler(NetworkObserver & sender); - void connectionIsUpEventHandlerThreadSafe(); - - /** - * Handle NetworkObserver::connectionIsDownEvent - */ - void connectionIsDownEventHandler(NetworkObserver & sender); - void connectionIsDownEventHandlerThreadSafe(); - - - /** - * Discovers network for SIP. - * - * Please contact network@openwengo.com before any modifications. - */ - virtual bool discoverForSIP(); - - virtual EnumSipLoginState::SipLoginState discoverNetwork(); - - /** The identity. */ - std::string _identity; - - /** The username. */ - std::string _username; - - /** The realm. */ - std::string _realm; - - /** The password. */ - std::string _password; - - /** The display name. */ - std::string _displayName; - - /** The register server hostname. */ - std::string _registerServerHostname; - - /** The register server port. */ - unsigned _registerServerPort; - - /** The SIP proxy server hostname. */ - std::string _sipProxyServerHostname; - - /** The SIP proxy server port. */ - unsigned _sipProxyServerPort; - - /** True if the SIP connection needs a HttpTunnel. */ - bool _needsHttpTunnel; - - /** The HttpTunnel server address. Currently only useful for a WengoAccount */ - std::string _httpTunnelServerHostname; - - /** The HttpTunnel server port. Currently only useful for a WengoAccount */ - unsigned _httpTunnelServerPort; - - /** The HttpsTunnel server address. Currently only useful for a WengoAccount */ - std::string _httpsTunnelServerHostname; - - /** The HttpsTunnel server port. Currently only useful for a WengoAccount */ - unsigned _httpsTunnelServerPort; - - /** True if HttpTunnel must use SSL. */ - bool _httpTunnelWithSSL; - - /** The local SIP port to use. */ - unsigned _localSIPPort; - - /** The NetworkDiscovery object. */ - NetworkDiscovery _networkDiscovery; - - /** True if network discovery is running. */ - bool _discoveringNetwork; - - /** True if this SipAccount is connected. */ - bool _isConnected; - - /** True if this SipAccount must remember is password. */ - bool _rememberPassword; - - /** The STUN server used by NetworkDiscovery to check NAT and UDP connection. */ - std::string _stunServer; - - /** Used to remember the last NetworkDiscoveryState. */ - NetworkDiscoveryState _lastNetworkDiscoveryState; - - /** Used to remember the last LoginState. */ - EnumSipLoginState::SipLoginState _lastLoginState; - - /** VLine ID used by this SipAccount. */ - int _vLineId; - - /** Number of testSIP retry. */ - static unsigned short _testSIPRetry; - - /** name of the userprofile that uses this sipaccount */ - std::string _userProfileName; - - /** name set and visiable by user */ - std::string _visibleName; - - /** voicemail number */ - std::string _voicemail; - - /** enable Presence and Instant Messaging support (SIP/SIMPLE) */ - bool _enablePIM; - - Mutex _mutex; - - Timer _initTimer; - - /** True if initialization has been successul. */ - bool _initSuccessful; - - /** count timer call */ - int _initTimerCounter; - - /** maxium timer call */ - static int _initTimerMaximum; - - /** init timer time interval */ - static int _initTimerInterval; -}; - -#endif //OWSIPACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountType.h qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountType.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountType.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountType.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef SIPACCOUNTTYPE_H -#define SIPACCOUNTTYPE_H - -#include "SipAccount.h" - -class SipAccountType : public SipAccount { -public: - - virtual ~SipAccountType() { } - - virtual void init() = 0; - - virtual const std::string & getIdentity() const { return _identity; } - - virtual const std::string & getUsername() const { return _username; } - - virtual const std::string & getRealm() const { return _realm; } - - virtual const std::string & getDisplayName() const { return _displayName; } - - virtual const std::string & getRegisterServerHostname() const { return _registerServerHostname; } - - virtual unsigned getRegisterServerPort() const { return _registerServerPort; } - - virtual const std::string & getProxyServerHostname() const { return _proxyServerHostname; } - - virtual unsigned getProxyServerPort() const { return _proxyServerPort; } - - virtual const std::string & getPassword() const { return _password; } - - virtual const std::string & getTunnelServerHostname() const { return _tunnelServerHostname; } - - virtual unsigned getTunnelServerPort() const { return _tunnelServerPort; } - -protected: - std::string _identity; - std::string _username; - std::string _realm; - std::string _displayName; - std::string _registerServerHostname; - unsigned _registerServerPort; - std::string _proxyServerHostname; - unsigned _proxyServerPort; - std::string _password; - std::string _tunnelServerHostname; - unsigned _tunnelServerPort; -}; - -#endif //SIPACCOUNTTYPE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "SipAccountXMLSerializer.h" - -#include - -#include -#include -#include - -#include - -SipAccountXMLSerializer::SipAccountXMLSerializer(SipAccount & sipAccount) - : _sipAccount(sipAccount) { -} - -std::string SipAccountXMLSerializer::serialize() { - std::string result; - - result += "\n"; - result += "" + _sipAccount.getVisibleName() + "\n"; - result += "" + _sipAccount.getIdentity() + "\n"; - result += "" + _sipAccount.getUsername() + "\n"; - result += "" + _sipAccount.getDisplayName() + "\n"; - result += "" + Base64::encode(_sipAccount.getPassword()) + "\n"; - result += "" + _sipAccount.getRealm() + "\n"; - result += "" + _sipAccount.getRegisterServerHostname() + "\n"; - result += "" + String::fromNumber(_sipAccount.getRegisterServerPort()) + "\n"; - result += "" + _sipAccount.getSIPProxyServerHostname() + "\n"; - result += "" + String::fromNumber(_sipAccount.getSIPProxyServerPort()) + "\n"; - result += "" + _sipAccount.getVoicemailNumber() + "\n"; - result += "" + String::fromBoolean(_sipAccount.isPIMEnabled()) + "\n"; - result += "\n"; - - return result; -} - -bool SipAccountXMLSerializer::unserialize(const std::string & data) { - - TiXmlDocument doc; - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlHandle sipaccount = docHandle.FirstChild("sipaccount"); - - // Retrieving visible name - TiXmlNode * visiblename = sipaccount.FirstChild("visiblename").FirstChild().Node(); - if (visiblename) { - _sipAccount.setVisibleName(visiblename->Value()); - } else { - LOG_ERROR("Invalid WengoAccount: no visiblename set"); - return false; - } - //// - - // Retrieving identity - TiXmlNode * identity = sipaccount.FirstChild("identity").FirstChild().Node(); - if (identity) { - _sipAccount.setIdentity(identity->Value()); - } else { - LOG_ERROR("Invalid WengoAccount: no identity set"); - return false; - } - //// - - // Retrieving username - TiXmlNode * username = sipaccount.FirstChild("username").FirstChild().Node(); - if (username) { - _sipAccount.setUsername(username->Value()); - } - //// - - // Retrieving displayname - TiXmlNode * displayname = sipaccount.FirstChild("displayname").FirstChild().Node(); - if (displayname) { - _sipAccount.setDisplayName(displayname->Value()); - } - //// - - // Retrieving password - TiXmlNode * password = sipaccount.FirstChild("password").FirstChild().Node(); - if (password) { - _sipAccount.setPassword(Base64::decode(password->Value())); - //_sipAccount.setPassword(password->Value()); - } - //// - - // Retrieving realm - TiXmlNode * realm = sipaccount.FirstChild("realm").FirstChild().Node(); - if (realm) { - _sipAccount.setRealm(realm->Value()); - } - //// - - // Retrieving registerserver - TiXmlNode * registerserver = sipaccount.FirstChild("registerserver").FirstChild().Node(); - if (registerserver) { - _sipAccount.setRegisterServerHostname(registerserver->Value()); - } - //// - - // Retrieving registerport - TiXmlNode * registerport = sipaccount.FirstChild("registerport").FirstChild().Node(); - if (registerport) { - String sSipRegisterServerPort = registerport->Value(); - _sipAccount.setRegisterServerPort(sSipRegisterServerPort.toInteger()); - } - //// - - // Retrieving sipproxyserver - TiXmlNode * sipproxyserver = sipaccount.FirstChild("sipproxyserver").FirstChild().Node(); - if (sipproxyserver) { - _sipAccount.setSIPProxyServerHostname(sipproxyserver->Value()); - } - //// - - // Retrieving sipproxyport - TiXmlNode * sipproxyport = sipaccount.FirstChild("sipproxyport").FirstChild().Node(); - if (sipproxyport) { - String sSipProxyServerPort = sipproxyport->Value(); - _sipAccount.setSIPProxyServerPort(sSipProxyServerPort.toInteger()); - } - //// - - // Retrieving voicemail number - TiXmlNode * voicemail = sipaccount.FirstChild("voicemail").FirstChild().Node(); - if (voicemail) { - _sipAccount.setVoicemailNumber(voicemail->Value()); - } - //// - - // Retrieving pim - TiXmlNode * pim = sipaccount.FirstChild("pim").FirstChild().Node(); - if (pim) { - String validStr = pim->Value(); - _sipAccount.enablePIM(validStr.toBoolean()); - } - //// - - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/SipAccountXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWSIPACCOUNTXMLSERIALIZER_H -#define OWSIPACCOUNTXMLSERIALIZER_H - -#include - -class SipAccount; - -/** - * SipAccount serialization. - * - * @author Philippe Bernery - */ -class SipAccountXMLSerializer : public Serializable { -public: - - SipAccountXMLSerializer(SipAccount & sipAccount); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - SipAccount & _sipAccount; - -}; - -#endif //OWSIPACCOUNTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccount.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,329 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoAccount.h" - -#include "WengoPhoneBuildId.h" -#include "WengoAccountParser.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -using namespace std; - -unsigned short WengoAccount::_testStunRetry = 2; - - -WengoAccount::WengoAccount() - : SipAccount(), WengoWebService(this) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _protocol = EnumIMProtocol::IMProtocolWengo; - _ssoRequestOk = false; - _wengoLoginOk = false; - _ssoWithSSL = false; - _discoveringNetwork = false; - _needsHttpTunnel = false; - _stunServer = config.getNetworkStunServer(); - _lastNetworkDiscoveryState = NetworkDiscoveryStateError; - - _ssoTimer.timeoutEvent += boost::bind(&WengoAccount::ssoTimeoutEventHandler, this); - _ssoTimer.lastTimeoutEvent += boost::bind(&WengoAccount::ssoLastTimeoutEventHandler, this); -} - -WengoAccount::WengoAccount(const std::string & login, const std::string & password, bool rememberPassword) - : SipAccount(), - WengoWebService(this) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _protocol = EnumIMProtocol::IMProtocolWengo; - _wengoLogin = login; - _wengoPassword = password; - _rememberPassword = rememberPassword; - _ssoRequestOk = false; - _wengoLoginOk = false; - _ssoWithSSL = false; - _needsHttpTunnel = false; - _stunServer = config.getNetworkStunServer(); - _discoveringNetwork = false; - _lastNetworkDiscoveryState = NetworkDiscoveryStateError; - - _ssoTimer.timeoutEvent += boost::bind(&WengoAccount::ssoTimeoutEventHandler, this); - _ssoTimer.lastTimeoutEvent += boost::bind(&WengoAccount::ssoLastTimeoutEventHandler, this); -} - -WengoAccount::WengoAccount(const WengoAccount & wengoAccount) - : SipAccount(*this), - WengoWebService(this) { - copy(wengoAccount); - - _ssoTimer.timeoutEvent += boost::bind(&WengoAccount::ssoTimeoutEventHandler, this); - _ssoTimer.lastTimeoutEvent += boost::bind(&WengoAccount::ssoLastTimeoutEventHandler, this); -} - -WengoAccount & WengoAccount::operator = (const WengoAccount & wengoAccount) { - copy(wengoAccount); - - return *this; -} - -bool WengoAccount::operator == (const SipAccount & other) const { - if (other.getType() != SipAccount::SipAccountTypeWengo) { - return false; - } - - const WengoAccount & gother = dynamic_cast(other); - - return ( _wengoLogin == gother._wengoLogin && - _wengoPassword == gother._wengoPassword); -} - -WengoAccount * WengoAccount::clone() const { - return new WengoAccount(*this); -} - -void WengoAccount::copy(const WengoAccount & wengoAccount) { - SipAccount::copy(wengoAccount); - - _wengoLogin = wengoAccount._wengoLogin; - _wengoPassword = wengoAccount._wengoPassword; - _rememberPassword = wengoAccount._rememberPassword; - _ssoRequestOk = wengoAccount._ssoRequestOk; - _wengoLoginOk = wengoAccount._wengoLoginOk; - _ssoWithSSL = wengoAccount._ssoWithSSL; - _stunServer = wengoAccount._stunServer; - _discoveringNetwork = false; - _lastNetworkDiscoveryState = wengoAccount._lastNetworkDiscoveryState; -} - -WengoAccount::~WengoAccount() { - Mutex::ScopedLock lock(_mutex); - - _ssoTimer.stop(); -} - -EnumSipLoginState::SipLoginState WengoAccount::discoverNetwork() { - static const unsigned LOGIN_TIMEOUT = 10000; - static const unsigned LIMIT_RETRY = 5; - - if (!discoverForSSO()) { - LOG_ERROR("error while discovering network for SSO"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateHTTPError; - return EnumSipLoginState::SipLoginStateNetworkError; - } - - _ssoTimerFinished = false; - _ssoTimer.start(0, LOGIN_TIMEOUT, LIMIT_RETRY); - while (!_ssoTimerFinished) { - Thread::msleep(100); - } - - if (!_ssoRequestOk) { - LOG_ERROR("error while doing SSO request"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateError; - return EnumSipLoginState::SipLoginStateNetworkError; - } else if (_ssoRequestOk && !_wengoLoginOk) { - LOG_ERROR("SSO request Ok but login/password are invalid"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; - return EnumSipLoginState::SipLoginStatePasswordError; - } - - if (!discoverForSIP()) { - LOG_ERROR("error while discovering network for SIP"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateSIPError; - return EnumSipLoginState::SipLoginStateNetworkError; - } - - LOG_DEBUG("initialization Ok"); - _lastNetworkDiscoveryState = NetworkDiscoveryStateOk; - return EnumSipLoginState::SipLoginStateReady; -} - -bool WengoAccount::discoverForSSO() { - // - // Please contact network@openwengo.com before any modifications. - // - - LOG_DEBUG("discovering network parameters for SSO connection"); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - string url = config.getWengoServerHostname() + ":" + String::fromNumber(443) + config.getWengoSSOPath(); - if (_networkDiscovery.testHTTP(url, true)) { - _ssoWithSSL = true; - LOG_DEBUG("SSO can connect on port 443 with SSL"); - return true; - } - - url = config.getWengoServerHostname() + ":" + String::fromNumber(80) + config.getWengoSSOPath(); - if (_networkDiscovery.testHTTP(url, false)) { - _ssoWithSSL = false; - LOG_DEBUG("SSO can connect on port 80 without SSL"); - return true; - } - - LOG_ERROR("SSO cannot connect"); - return false; -} - -bool WengoAccount::discoverForSIP() { - // - // Please contact network@openwengo.com before any modifications. - // - - LOG_DEBUG("discovering network parameters for SIP connection"); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _localSIPPort = _networkDiscovery.getFreeLocalPort(); - - if (!config.getNetWorkTunnelNeeded()) { - LOG_DEBUG("SIP will use " + String::fromNumber(_localSIPPort) + " as local SIP port"); - - // Stun test - unsigned short iTestStun; - for (iTestStun = 0; iTestStun < _testStunRetry; iTestStun++) { - LOG_DEBUG("testUDP (Stun): " + String::fromNumber(iTestStun + 1)); - if (_networkDiscovery.testUDP(_stunServer)) { - break; - } - } - - if (iTestStun == _testStunRetry) { - // Stun test failed - _networkDiscovery.setNatConfig(EnumNatType::NatTypeFullCone); - } - //// - - // SIP test with UDP - for (unsigned short i = 0; i < _testSIPRetry; i++) { - LOG_DEBUG("testSIP test number: " + String::fromNumber(i + 1)); - - if (_networkDiscovery.testSIP(_sipProxyServerHostname,_username, _sipProxyServerPort, _localSIPPort)) { - LOG_DEBUG("SIP can connect via UDP"); - _needsHttpTunnel = false; - return true; - } - } - //// - } - - LOG_DEBUG("cannot connect via UDP"); - - // SIP test with Http - if (_networkDiscovery.testSIPHTTPTunnel(_httpTunnelServerHostname, 80, false, - _sipProxyServerHostname, _sipProxyServerPort)) { - - _needsHttpTunnel = true; - _httpTunnelServerPort = 80; - _httpTunnelWithSSL = false; - - LOG_DEBUG("SIP can connect via a tunnel on port 80 without SSL"); - return true; - } - - if (_networkDiscovery.testSIPHTTPTunnel(_httpTunnelServerHostname, 443, false, - _sipProxyServerHostname, _sipProxyServerPort)) { - - _needsHttpTunnel = true; - _httpTunnelServerPort = 443; - _httpTunnelWithSSL = false; - - LOG_DEBUG("SIP can connect via a tunnel on port 443 without SSL"); - return true; - } - - if (_networkDiscovery.testSIPHTTPTunnel(_httpsTunnelServerHostname, 443, true, - _sipProxyServerHostname, _sipProxyServerPort)) { - - _needsHttpTunnel = true; - _httpsTunnelServerPort = 443; - _httpTunnelWithSSL = true; - - LOG_DEBUG("SIP can connect via a tunnel on port 443 with SSL"); - return true; - } - //// - - LOG_ERROR("SIP cannot connect"); - return false; -} - -void WengoAccount::ssoTimeoutEventHandler() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - setHostname(config.getWengoServerHostname()); - setGet(false); - setHttps(_ssoWithSSL); - setServicePath(config.getWengoSSOPath()); - setWengoAuthentication(true); - - LOG_DEBUG("setting proxy settings for SSO request"); - NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); - - HttpRequest::setProxy(networkProxy.getServer(), networkProxy.getServerPort(), - networkProxy.getLogin(), networkProxy.getPassword()); - - if (_ssoWithSSL) { - setPort(443); - LOG_DEBUG("sending SSO request with SSL"); - } else { - setPort(80); - LOG_DEBUG("sending SSO request without SSL"); - } - - call(this); -} - -void WengoAccount::ssoLastTimeoutEventHandler() { - _ssoTimerFinished = true; -} - -void WengoAccount::answerReceived(const std::string & answer, int requestId) { - if (!answer.empty()) { - LOG_DEBUG("SSO request has been processed successfully"); - _ssoRequestOk = true; - WengoAccountParser parser(*this, answer); - if (parser.isLoginPasswordOk()) { - LOG_DEBUG("login/password Ok"); - _wengoLoginOk = true; - _ssoTimer.stop(); - _ssoTimerFinished = true; - //SIP connection test can now be launched - } else { - LOG_DEBUG("login/password not Ok"); - _wengoLoginOk = false; - _ssoTimer.stop(); - _ssoTimerFinished = true; - } - } -} - -bool WengoAccount::isEmpty() const { - return (_wengoLogin.empty() || _wengoPassword.empty()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccount.h qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,156 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOACCOUNT_H -#define OWWENGOACCOUNT_H - -#include -#include - -#include - -#include - -class NetworkObserver; - -/** - * Connects to the single sign-on (SSO) system of the Wengo SIP service. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class WengoAccount : public SipAccount, public WengoWebService { - - friend class WengoAccountXMLSerializer; - - friend class WengoAccountParser; - -public: - WengoAccount(); - - WengoAccount(const std::string & login, const std::string & password, bool rememberPassword); - - virtual ~WengoAccount(); - - WengoAccount(const WengoAccount & wengoAccount); - - virtual WengoAccount * clone() const; - - virtual WengoAccount & operator = (const WengoAccount & wengoAccount); - - virtual bool operator == (const SipAccount & other) const; - - //virtual void init(); - - /** Gets the Wengo login (e-mail address). */ - const std::string & getWengoLogin() const { return _wengoLogin; } - - /** Gets the Wengo Password. */ - const std::string & getWengoPassword() const { return _wengoPassword; } - - /** Sets the Wengo login (e-mail address). */ - void setWengoLogin(const std::string newlogin) { _wengoLogin = newlogin; } - - /** Sets the Wengo Password. */ - void setWengoPassword(const std::string newpass) { _wengoPassword = newpass; } - - virtual const std::string getUserProfileName() const { - return _wengoLogin; - } - - /** - * @return password set by user - */ - virtual const std::string getUserPassword() const { return _wengoPassword; } - - /** - * @return the full identity - * e.g: robobob666@voip.wengo.fr - */ - virtual const std::string getFullIdentity() const { - return _wengoLogin; - } - - virtual const std::string getVisibleName() const { - return _wengoLogin; - } - - virtual SipAccountType getType() const { - return SipAccount::SipAccountTypeWengo; - } - - /** - * @return true if empty - */ - virtual bool isEmpty() const; - -private: - - void copy(const WengoAccount & wengoAccount); - - virtual EnumSipLoginState::SipLoginState discoverNetwork(); - - /** - * Discovers network for SSO request. - * - * Please contact network@openwengo.com before any modifications. - */ - bool discoverForSSO(); - - /** - * Discovers network for SIP. - * - * Please contact network@openwengo.com before any modifications. - */ - bool discoverForSIP(); - - void wengoLoginEventHandler(); - - void answerReceived(const std::string & answer, int requestId); - - void ssoTimeoutEventHandler(); - - void ssoLastTimeoutEventHandler(); - - std::string _wengoLogin; - - std::string _wengoPassword; - - Timer _ssoTimer; - - /** True if SSO request can be done with SSL. */ - bool _ssoWithSSL; - - /** True if SSO request is Ok. */ - bool _ssoRequestOk; - - /** True if SSO request is Ok and login/password are valid. */ - bool _wengoLoginOk; - - /** True when _timer is finished. */ - bool _ssoTimerFinished; - - /** Number of testStun retry. */ - static unsigned short _testStunRetry; -}; - -#endif //OWWENGOACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoAccountParser.h" - -#include -#include -#include - -#include - -#include -#include - -#include -using namespace std; - -static const std::string STATUS_CODE_OK = "200"; - -WengoAccountParser::WengoAccountParser(WengoAccount & account, const std::string & data) { - - TiXmlDocument doc; - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(& doc); - - TiXmlHandle sso = docHandle.FirstChild("sso"); - - //sso status code - TiXmlElement * elem = sso.FirstChild("status").Element(); - if (elem) { - std::string statusCode = elem->Attribute("code"); - LOG_DEBUG("SSO status code=" + statusCode); - if (statusCode != STATUS_CODE_OK) { - _loginPasswordOk = false; - return; - } else { - _loginPasswordOk = true; - } - } - - //iterate over "d" element - TiXmlElement * element = sso.FirstChild("d").Element(); - while (element) { - - std::string key = std::string(element->Attribute("k")); - std::string value; - const char * tmp = element->Attribute("v"); - if (tmp) { - value = std::string(tmp); - } - - if (key == "sip.auth.userid") { - account._identity = value; - } else if (key == "sip.auth.password") { - account._password = value; - } else if (key == "sip.auth.realm") { - account._realm = value; - } else if (key == "sip.address.name") { - account._username = value; - } else if (key == "sip.address.displayname") { - account._displayName = value; - } else if (key == "sip.address.server.host") { - account._registerServerHostname = value; - } else if (key == "sip.address.server.port") { - account._registerServerPort = String(value).toInteger(); - } else if (key == "sip.outbound") { - //TODO: pass this parameter to phapi by phconfig - } else if (key == "sip.outbound.proxy.host") { - account._sipProxyServerHostname = value; - } else if (key == "sip.outbound.proxy.port") { - account._sipProxyServerPort = String(value).toInteger(); - } else if (key == "netlib.stun.host") { - account._stunServer = value; - } - - else if (key == "netlib.tunnel.http") { - StringList httpTunnels; - TiXmlElement * elt = element->FirstChildElement("l"); - while (elt) { - - const char * tmp = elt->Attribute("v"); - if (tmp) { - httpTunnels += std::string(tmp); - } - - elt = elt->NextSiblingElement("l"); - } - account._httpTunnelServerHostname = chooseHttpTunnel(httpTunnels); - - } else if (key == "netlib.tunnel.https") { - StringList httpsTunnels; - TiXmlElement * elt = element->FirstChildElement("l"); - while (elt) { - - const char * tmp = elt->Attribute("v"); - if (tmp) { - httpsTunnels += std::string(tmp); - } - - elt = elt->NextSiblingElement("l"); - } - account._httpsTunnelServerHostname = chooseHttpTunnel(httpsTunnels); - } - - element = element->NextSiblingElement("d"); - } -} - -std::string WengoAccountParser::chooseHttpTunnel(const StringList & httpTunnels) { - srand(time(NULL)); - return httpTunnels[rand() % httpTunnels.size()]; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.h qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountParser.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOACCOUNTPARSER_H -#define OWWENGOACCOUNTPARSER_H - -#include "WengoAccount.h" - -#include - -class StringList; - -/** - * Parses the XML datas from the Single Sign On authentication on the Wengo platform (SSO). - * - * This a separated class rather than to be inside the class WengoAccount, - * this allows more modularity and encapsulates the use of TinyXML. - * - * XML scheme - * - * http://ws.wengo.fr/softphone-sso/sso.php?login=LOGIN&password=PASSWORD - * - * Replace LOGIN and PASSWORD by the login/password provided by Wengo. - * - * If the login/password are wrong it will return: - *
- * 
- * 
- *     Unauthorized
- * 
- * 
- * - * If the login/password are correct it will return: - *
- * 
- * 
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- * 	
- *	
- *		
- *		
- *	
- *	
- *		
- *		
- *		
- *		
- *	
- * 
- * 
- * - * @ingroup model - * @author Mathieu Stute - * @author Tanguy Krotoff - */ -class WengoAccountParser { -public: - - WengoAccountParser(WengoAccount & account, const std::string & data); - - /** - * Check if password is correct - * - * @return true if login ok - */ - bool isLoginPasswordOk() const { - return _loginPasswordOk; - } - -private: - - /** - * Choose a random http tunnel - * - * @param httpTunnels a list of http tunnel ip - * @return a http tunnel ip - */ - std::string chooseHttpTunnel(const StringList & httpTunnels); - - bool _loginPasswordOk; -}; - -#endif //OWWENGOACCOUNTPARSER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoAccountXMLSerializer.h" - -#include - -#include -#include -#include - -#include - -WengoAccountXMLSerializer::WengoAccountXMLSerializer(WengoAccount & wengoAccount) - : _wengoAccount(wengoAccount) { -} - -std::string WengoAccountXMLSerializer::serialize() { - std::string result; - - result += "\n"; - - result += "" + _wengoAccount.getWengoLogin() + "\n"; - - result += "" + Base64::encode(_wengoAccount.getWengoPassword()) + "\n"; - - result += "" + String::fromBoolean(_wengoAccount.isPasswordRemembered()) + "\n"; - - result += "" + _wengoAccount.getVoicemailNumber() + "\n"; - - result += "\n"; - - return result; -} - -bool WengoAccountXMLSerializer::unserialize(const std::string & data) { - TiXmlDocument doc; - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlHandle wengoaccount = docHandle.FirstChild("wengoaccount"); - - // Retrieving login - TiXmlNode * login = wengoaccount.FirstChild("login").Node(); - if (login && login->FirstChild()) { - _wengoAccount._wengoLogin = login->FirstChild()->Value(); - } else { - LOG_ERROR("Invalid WengoAccount: no login set"); - return false; - } - //// - - // Retrieving password - TiXmlNode * password = wengoaccount.FirstChild("password").Node(); - if (password && password->FirstChild()) { - _wengoAccount._wengoPassword = Base64::decode(password->FirstChild()->Value()); - } - //// - - // Retrieving autologin - TiXmlNode * rememberpassword = wengoaccount.FirstChild("rememberp").Node(); - if (rememberpassword && rememberpassword->FirstChild()) { - String rememberpasswordStr = rememberpassword->FirstChild()->Value(); - _wengoAccount._rememberPassword = rememberpasswordStr.toBoolean(); - } - //// - - // Retrieving voicemail number - TiXmlNode * voicemail = wengoaccount.FirstChild("voicemail").FirstChild().Node(); - if (voicemail) { - _wengoAccount.setVoicemailNumber(voicemail->Value()); - } - //// - - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/account/wengo/WengoAccountXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef WENGOACCOUNTXMLSERIALIZER_H -#define WENGOACCOUNTXMLSERIALIZER_H - -#include - -class WengoAccount; - -/** - * Serialize a WengoAccount object. - * - * @author Philippe Bernery - */ -class WengoAccountXMLSerializer : public Serializable { -public: - - WengoAccountXMLSerializer(WengoAccount & wengoAccount); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - WengoAccount & _wengoAccount; - -}; - -#endif //WENGOACCOUNTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/chat/ChatHandler.cpp qutecom-2.2+dfsg1/wengophone/src/model/chat/ChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/chat/ChatHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/chat/ChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,148 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ChatHandler.h" - -#include - -#include -#include -#include - -#include -#include - -ChatHandler::ChatHandler(UserProfile & userProfile) - : _userProfile(userProfile) { - - _userProfile.getIMAccountManager().imAccountAddedEvent += - boost::bind(&ChatHandler::imAccountAddedEventHandler, this, _1, _2); - _userProfile.getIMAccountManager().imAccountRemovedEvent += - boost::bind(&ChatHandler::imAccountRemovedEventHandler, this, _1, _2); -} - -ChatHandler::~ChatHandler() { - RecursiveMutex::ScopedLock lock(_mutex); - - for (IMChatSessionList::const_iterator it = _imChatSessionList.begin(); - it != _imChatSessionList.end(); - it++) { - delete (*it); - } - - for (IMChatMap::const_iterator it = _imChatMap.begin(); - it != _imChatMap.end(); - ++it) { - delete (*it).second; - } -} - -void ChatHandler::createSession(const std::string & imAccountId, const IMContactSet & imContactSet) { - RecursiveMutex::ScopedLock lock(_mutex); - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - - if (imAccount) { - LOG_DEBUG("creating new IMChatSession for: " + imAccount->getLogin()); - IMChatMap::iterator it = _imChatMap.find(imAccount->getUUID()); - if (it != _imChatMap.end()) { - (*it).second->createSession(imContactSet); - } else { - LOG_ERROR("No IMChat created for this IMAccount"); - } - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount not found!"); - } -} - -void ChatHandler::newIMChatSessionCreatedEventHandler(IMChat & sender, IMChatSession & imChatSession) { - RecursiveMutex::ScopedLock lock(_mutex); - - LOG_DEBUG("a new IMChatSession has been created"); - _imChatSessionList.push_back(&imChatSession); - imChatSession.imChatSessionWillDieEvent += - boost::bind(&ChatHandler::imChatSessionWillDieEventHandler, this, _1); - newIMChatSessionCreatedEvent(*this, imChatSession); -} - -void ChatHandler::imChatSessionWillDieEventHandler(IMChatSession & sender) { - RecursiveMutex::ScopedLock lock(_mutex); - - IMChatSessionList::iterator it = - std::find(_imChatSessionList.begin(), _imChatSessionList.end(), &sender); - - if (it != _imChatSessionList.end()) { - _imChatSessionList.erase(it); - } else { - LOG_ERROR("IMChatSession not in ChatHandler"); - } -} - -void ChatHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - LOG_DEBUG("new account added: login: " + imAccount->getLogin() - + " protocol: " + EnumIMProtocol::toString(imAccount->getProtocol())); - - IMChatMap::iterator it = _imChatMap.find(imAccountId); - if (it == _imChatMap.end()) { - IMChat * imChat = IMWrapperFactory::getFactory().createIMChat(*imAccount); - imChat->newIMChatSessionCreatedEvent += - boost::bind(&ChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); - - _imChatMap.insert(std::pair(imAccountId, imChat)); - } else { - LOG_ERROR("this IMAccount has already been added " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void ChatHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - IMChatMap::iterator it = _imChatMap.find(imAccountId); - - if (it != _imChatMap.end()) { - //TODO close all IMChatSession opened with this IMAccount - delete (*it).second; - _imChatMap.erase(it); - } else { - LOG_ERROR("this IMAccount has not been added: " + imAccountId); - } -} - -void ChatHandler::unregisterAllEvents() { - _userProfile.getIMAccountManager().imAccountAddedEvent -= - boost::bind(&ChatHandler::imAccountAddedEventHandler, this, _1, _2); - _userProfile.getIMAccountManager().imAccountRemovedEvent -= - boost::bind(&ChatHandler::imAccountRemovedEventHandler, this, _1, _2); - - for (IMChatMap::const_iterator it = _imChatMap.begin(); - it != _imChatMap.end(); - ++it) { - (*it).second->newIMChatSessionCreatedEvent -= - boost::bind(&ChatHandler::newIMChatSessionCreatedEventHandler, this, _1, _2); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/chat/ChatHandler.h qutecom-2.2+dfsg1/wengophone/src/model/chat/ChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/chat/ChatHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/chat/ChatHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCHATHANDLER_H -#define OWCHATHANDLER_H - -#include - -#include - -#include -#include -#include - -#include - -class IMAccountManager; -class IMChat; -class IMChatSession; -class IMContactSet; -class UserProfile; - -/** - * Allows to create an instant messaging chat session. - * - * @see IMChatSession - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ChatHandler : NonCopyable, public Trackable { -public: - - ChatHandler(UserProfile & userProfile); - - ~ChatHandler(); - - /** - * Emitted when a new IMChatSession has been created. - * - * @param sender this class - * @param imChatSession the new IMChatSession - */ - Event newIMChatSessionCreatedEvent; - - /** - * Creates a new IMChatSession. - * The newChatSessionCreatedEvent is emitted when an IMChatSession is created - * - * @param imAccount the Id of the IMAccount for which we want to create the new IMChatSession - */ - void createSession(const std::string & imAccountId, const IMContactSet & imContactSet); - - /** - * Tells ChatHandler to unregister to all registered Events. - */ - void unregisterAllEvents(); - -private: - - /** - * @see IMChat::newIMChatSessionCreatedEvent - */ - void newIMChatSessionCreatedEventHandler(IMChat & sender, IMChatSession & imChatSession); - - /** - * @see IMAccountManager::imAccountAddedEvent - */ - void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMAccountManager::imAccountRemovedEvent - */ - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMChatSession::imChatSessionWillDieEvent - */ - void imChatSessionWillDieEventHandler(IMChatSession & sender); - - typedef std::map IMChatMap; - IMChatMap _imChatMap; - - typedef std::list IMChatSessionList; - IMChatSessionList _imChatSessionList; - - UserProfile & _userProfile; - - mutable RecursiveMutex _mutex; -}; - -#endif //OWCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/classic/ClassicExterminator.cpp qutecom-2.2+dfsg1/wengophone/src/model/classic/ClassicExterminator.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/classic/ClassicExterminator.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/classic/ClassicExterminator.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ClassicExterminator.h" - -#include -#include - -#include -#include - -#include - -static const char * WENGO_VALUE = "Wengo"; -static const char * CLASSIC_EXECUTABLE_NAME = "wengophone.exe"; - -void ClassicExterminator::removeClassicFromStartup() { - Startup startup(WENGO_VALUE, String::null); - startup.setStartup(false); -} - -void ClassicExterminator::killClassicExecutable() { - Processes::killProcess(std::string(CLASSIC_EXECUTABLE_NAME)); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/classic/ClassicExterminator.h qutecom-2.2+dfsg1/wengophone/src/model/classic/ClassicExterminator.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/classic/ClassicExterminator.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/classic/ClassicExterminator.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCLASSICEXTERMINATOR_H -#define OWCLASSICEXTERMINATOR_H - -/** - * WengoPhone classic exterminator. - * - * @ingroup model - * @author Mathieu Stute - */ -class ClassicExterminator { -public: - - static void removeClassicFromStartup(); - - static void killClassicExecutable(); -}; - -#endif //OWCLASSICEXTERMINATOR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo -* -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA -*/ - -#ifndef OWPHAPIFILESESSIONMANAGER_H -#define OWPHAPIFILESESSIONMANAGER_H - -#include - -#include - -#include - -/** -* TODO create file session for receive -* -* @author Nicolas Couturier -*/ -class PhApiFileSessionManager : public IFileSessionManager { - -public : - - PhApiFileSessionManager(UserProfile & userProfile); - - virtual ~PhApiFileSessionManager(); - - bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const; - - ISendFileSession * createSendFileSession(); - -private : - - void newIncomingFileEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void needUpgradeEventHandler(PhApiSFPWrapper & sender); - - void peerNeedsUpgradeEventHandler(PhApiSFPWrapper & sender, const std::string contactID); - -}; - -#endif //OWPHAPIFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHAPIRECEIVEFILESESSION_H -#define OWPHAPIRECEIVEFILESESSION_H - -#include - -#include - -/** - * TODO - * - * @author Nicolas Couturier - */ -class PhApiReceiveFileSession : public IReceiveFileSession { - -public: - - PhApiReceiveFileSession(); - - PhApiReceiveFileSession(const PhApiReceiveFileSession & phApiReceiveFileSession); - - virtual PhApiReceiveFileSession * clone() const; - - PhApiReceiveFileSession(int callID, std::string contactID, std::string fileName, unsigned int fileSize); - - virtual ~PhApiReceiveFileSession(); - - void start(); - - void pause(); - - void resume(); - - void stop(); - -private : - - void transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, int fileSize); - - void transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage); - - void transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - void transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize); - - int _currentCallID; - -}; - -#endif //OWPHAPIRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/include/phapifilesessionmanager/PhApiSendFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHAPISENDFILESESSION_H -#define OWPHAPISENDFILESESSION_H - -#include - -class UserProfile; -class PhApiSFPWrapper; - -/** - * TODO - * - * @author Nicolas Couturier - */ -class PhApiSendFileSession : public ISendFileSession { - -public: - - PhApiSendFileSession(UserProfile & userProfile); - - PhApiSendFileSession(const PhApiSendFileSession & phApiSendFileSession); - - virtual PhApiSendFileSession * clone() const; - - virtual ~PhApiSendFileSession(); - - void start(); - - void pause(); - - void resume(); - - void stop(); - -private : - - void inviteToTransferEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri, std::string fileName, std::string fileType, size_t fileSize); - - void waitingForAnswerEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri); - - void transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, size_t fileSize); - - void transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage); - - void transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - void transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize); - - std::string extractContactIDFromURI(std::string uri) const; - - /** - * The file that is being sent / received currently - */ - std::vector::iterator _currentFile; - - /** - * The contact that is curently sending / receiving the file - */ - IMContactSet::iterator _currentContact; - - /** - * The call id of the file current file transfer - */ - int _currentCallID; - - bool _initialized; - - UserProfile & _userProfile; - -}; - -#endif //OWPHAPISENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../include/phapifilesessionmanager/PhApiFileSessionManager.h" -#include "../include/phapifilesessionmanager/PhApiSendFileSession.h" -#include "../include/phapifilesessionmanager/PhApiReceiveFileSession.h" - -#include "../../../../../../../../libs/sipwrapper/src/phapi/PhApiSFPCallbacks.h" - -#include -#include - -#include - -#include - -PhApiFileSessionManager::PhApiFileSessionManager(UserProfile & userProfile) - : IFileSessionManager(userProfile) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string pluginPath = config.getPhApiPluginPath(); - -#if defined(WIN32) || defined(WIN32_WCE) - pluginPath += "sfp-plugin.dll"; -#else - pluginPath += "libsfp-plugin.so"; -#endif - - owplPluginLoad(pluginPath.c_str()); - - owplPluginSetParam("11000", 5, "SFPPlugin", "sfp_file_transfer_port"); - owplPluginSetParam("tcp", 3, "SFPPlugin", "sfp_default_ip_protocol"); - - PhApiSFPCallbacks::setCallbacks(); - PhApiSFPEvent::newIncomingFileEvent += - boost::bind(&PhApiFileSessionManager::newIncomingFileEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::needUpgradeEvent += - boost::bind(&PhApiFileSessionManager::needUpgradeEventHandler, this, _1); - PhApiSFPEvent::peerNeedsUpgradeEvent += - boost::bind(&PhApiFileSessionManager::peerNeedsUpgradeEventHandler, this, _1, _2); -} - -PhApiFileSessionManager::~PhApiFileSessionManager() { -} - -ISendFileSession * PhApiFileSessionManager::createSendFileSession() { - return new PhApiSendFileSession(_userProfile); -} - -bool PhApiFileSessionManager::isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const { - // FIXME - if (protocol == EnumIMProtocol::IMProtocolWengo) { - return true; - } else { - return false; - } -} - -void PhApiFileSessionManager::newIncomingFileEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - PhApiReceiveFileSession * session = new PhApiReceiveFileSession(callID, contactID, fileName, (unsigned int)fileSize); - newIReceiveFileSessionCreatedEvent(*this, session); -} - -void PhApiFileSessionManager::needUpgradeEventHandler(PhApiSFPWrapper & sender) { - needUpgradeEvent(*this); -} - -void PhApiFileSessionManager::peerNeedsUpgradeEventHandler(PhApiSFPWrapper & sender, const std::string contactID) { - peerNeedsUpgradeEvent(*this, contactID); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,183 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../include/phapifilesessionmanager/PhApiReceiveFileSession.h" - -#include - -#include -#include - -PhApiReceiveFileSession::PhApiReceiveFileSession(){} - -PhApiReceiveFileSession::PhApiReceiveFileSession(int callID, std::string contactID, std::string fileName, unsigned int fileSize) -: IReceiveFileSession() { - _imContact = IMContact(EnumIMProtocol::IMProtocolWengo, contactID); - _fileName = fileName; - _fileSize = fileSize; - _currentCallID = callID; - - PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); - PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiReceiveFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiReceiveFileSession::transferProgressionEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiReceiveFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiReceiveFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); -} - -PhApiReceiveFileSession::PhApiReceiveFileSession(const PhApiReceiveFileSession & phApiReceiveFileSession) -: IReceiveFileSession(phApiReceiveFileSession) { - _imContact = phApiReceiveFileSession._imContact; - _fileName = phApiReceiveFileSession._fileName; - _fileSize = phApiReceiveFileSession._fileSize; - _currentCallID = phApiReceiveFileSession._currentCallID; - - PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); - PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiReceiveFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiReceiveFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiReceiveFileSession::transferProgressionEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiReceiveFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiReceiveFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiReceiveFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); -} - -PhApiReceiveFileSession * PhApiReceiveFileSession::clone() const { - return new PhApiReceiveFileSession(*this); -} - -PhApiReceiveFileSession::~PhApiReceiveFileSession(){} - -void PhApiReceiveFileSession::start() { - LOG_DEBUG("starting file transfer"); - PhApiSFPWrapper::getInstance().receiveFile(_currentCallID, File::convertPathSeparators(_filePath+_fileName)); - LOG_DEBUG("end of transfer start"); -} - -void PhApiReceiveFileSession::pause(){ - LOG_DEBUG("pausing file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().pauseTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer pause"); -} - -void PhApiReceiveFileSession::resume(){ - LOG_DEBUG("resuming file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().resumeTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer resume"); -} - -void PhApiReceiveFileSession::stop(){ - LOG_DEBUG("stopping file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().cancelTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer stop"); -} - -void PhApiReceiveFileSession::transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID){ - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelled, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelledByPeer, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferBegan, _imContact, File(getFilePath()+getFileName())); - } -} - -void PhApiReceiveFileSession::transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, _imContact, File(getFilePath()+getFileName())); - moduleFinishedEvent(*this); - } -} - -void PhApiReceiveFileSession::transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage){ - if(callID == _currentCallID){ - fileTransferProgressionEvent(*this, _imContact, File(getFilePath()+getFileName()), percentage); - } -} - -void PhApiReceiveFileSession::transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPausedByPeer, _imContact, File(getFilePath()+getFileName())); - } -} - -void PhApiReceiveFileSession::transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPaused, _imContact, File(getFilePath()+getFileName())); - } -} - -void PhApiReceiveFileSession::transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumedByPeer, _imContact, File(getFilePath()+getFileName())); - } -} - -void PhApiReceiveFileSession::transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, int fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumed, _imContact, File(getFilePath()+getFileName())); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/phapi/src/PhApiSendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../include/phapifilesessionmanager/PhApiSendFileSession.h" - -#include -#include - -#include -#include - -#include - -#include -#include - -PhApiSendFileSession::PhApiSendFileSession(UserProfile & userProfile) -: ISendFileSession(), _userProfile(userProfile) { - _initialized = false; - _currentCallID = -1; - - PhApiSFPEvent::inviteToTransferEvent += boost::bind(&PhApiSendFileSession::inviteToTransferEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::waitingForAnswerEvent += boost::bind(&PhApiSendFileSession::waitingForAnswerEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiSendFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); - PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiSendFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiSendFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiSendFileSession::transferProgressionEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiSendFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiSendFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiSendFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiSendFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); -} - -PhApiSendFileSession::PhApiSendFileSession(const PhApiSendFileSession & phApiSendFileSession) -: ISendFileSession(phApiSendFileSession), _userProfile(phApiSendFileSession._userProfile) { - _initialized = phApiSendFileSession._initialized; - _currentCallID = phApiSendFileSession._currentCallID; - - PhApiSFPEvent::inviteToTransferEvent += boost::bind(&PhApiSendFileSession::inviteToTransferEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::waitingForAnswerEvent += boost::bind(&PhApiSendFileSession::waitingForAnswerEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferCancelledEvent += boost::bind(&PhApiSendFileSession::transferCancelledEventHandler, this, _1, _2, _3, _4, _5); - PhApiSFPEvent::transferCancelledByPeerEvent += boost::bind(&PhApiSendFileSession::transferCancelledByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::sendingFileBeginEvent += boost::bind(&PhApiSendFileSession::sendingFileBeginEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFinishedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFinishedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferFromPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferFromPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferToPeerFailedEvent += boost::bind(&PhApiSendFileSession::transferToPeerFailedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferProgressionEvent += boost::bind(&PhApiSendFileSession::transferProgressionEventHandler, this, _1, _2, _3); - PhApiSFPEvent::transferPausedByPeerEvent += boost::bind(&PhApiSendFileSession::transferPausedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferPausedEvent += boost::bind(&PhApiSendFileSession::transferPausedEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedByPeerEvent += boost::bind(&PhApiSendFileSession::transferResumedByPeerEventHandler, this, _1, _2, _3, _4, _5, _6); - PhApiSFPEvent::transferResumedEvent += boost::bind(&PhApiSendFileSession::transferResumedEventHandler, this, _1, _2, _3, _4, _5, _6); -} - -PhApiSendFileSession * PhApiSendFileSession::clone() const { - return new PhApiSendFileSession(*this); -} - -PhApiSendFileSession::~PhApiSendFileSession() { -} - -void PhApiSendFileSession::start() { - LOG_DEBUG("starting file transfer"); - if(!_initialized){ - _currentContact = _imContactSet.begin(); - _currentFile = _fileVector.begin(); - _initialized = true; - } - if(_account != NULL && _imContactSet.size()>0 && _fileVector.size()>0){ - //WengoAccount * wAccount = dynamic_cast(_account); - WengoAccount * wAccount = _userProfile.getWengoAccount(); - PhApiSFPWrapper & wrapper = PhApiSFPWrapper::getInstance(); - int vlid = wAccount->getVLineID(); - std::string fullIdentity = wAccount->getDisplayName()+std::string(" <")+wAccount->getSIPAddress()+std::string(">"); - std::string contactUri = std::string("sip:")+(*_currentContact).getContactId(); - std::string fileType = (*_currentFile).getExtension(); - if(fileType == String::null) { - fileType = "*"; - } - _currentCallID = wrapper.sendFile(vlid, - fullIdentity, - contactUri, - (*_currentFile).getFullPath(), - (*_currentFile).getFileName(), - fileType, - (*_currentFile).getSize()); - } - LOG_DEBUG("end of transfer start"); -} - -void PhApiSendFileSession::pause() { - LOG_DEBUG("pausing file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().pauseTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer pause"); -} - -void PhApiSendFileSession::resume() { - LOG_DEBUG("resuming file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().resumeTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer resume"); -} - -void PhApiSendFileSession::stop() { - LOG_DEBUG("stopping file transfer"); - if(_currentCallID > 0){ - PhApiSFPWrapper::getInstance().cancelTransfer(_currentCallID); - } - LOG_DEBUG("end of transfer stop"); -} - -void PhApiSendFileSession::inviteToTransferEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventInviteToTransfer, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::waitingForAnswerEventHandler(PhApiSFPWrapper & sender, int callID, std::string uri){ - if(callID == _currentCallID && (*_currentContact).getContactId().compare(extractContactIDFromURI(uri)) == 0){ - fileTransferEvent(*this, IFileSession::IFileSessionEventWaitingForAnswer, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::transferCancelledEventHandler(PhApiSFPWrapper & sender, int callID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelled, *_currentContact, *_currentFile); - moduleFinishedEvent(*this); - } -} - -void PhApiSendFileSession::transferCancelledByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferCancelledByPeer, *_currentContact, *_currentFile); - moduleFinishedEvent(*this); - } -} - -void PhApiSendFileSession::sendingFileBeginEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferBegan, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::transferFromPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, *_currentContact, *_currentFile); - moduleFinishedEvent(*this); - } -} - -void PhApiSendFileSession::transferToPeerFinishedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFinished, *_currentContact, *_currentFile); - // send one file to each contact, then go to the next file - _currentCallID = -1; - _currentContact++; - if(_currentContact == _imContactSet.end()){ - _currentContact = _imContactSet.begin(); - if(_currentFile != _fileVector.end()){ - _currentFile++; - } - } - if(_currentFile != _fileVector.end()){ - start(); - }else{ - moduleFinishedEvent(*this); - } - } -} - -void PhApiSendFileSession::transferFromPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, *_currentContact, *_currentFile); - moduleFinishedEvent(*this); - } -} - -void PhApiSendFileSession::transferToPeerFailedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferFailed, *_currentContact, *_currentFile); - moduleFinishedEvent(*this); - } -} - -void PhApiSendFileSession::transferProgressionEventHandler(PhApiSFPWrapper & sender, int callID, int percentage){ - if(callID == _currentCallID){ - fileTransferProgressionEvent(*this, *_currentContact, *_currentFile, percentage); - } -} - -void PhApiSendFileSession::transferPausedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPausedByPeer, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::transferPausedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferPaused, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::transferResumedByPeerEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumedByPeer, *_currentContact, *_currentFile); - } -} - -void PhApiSendFileSession::transferResumedEventHandler(PhApiSFPWrapper & sender, int callID, std::string contactID, std::string fileName, std::string fileType, size_t fileSize){ - if(callID == _currentCallID) { - fileTransferEvent(*this, IFileSession::IFileSessionEventFileTransferResumed, *_currentContact, *_currentFile); - } -} - -std::string PhApiSendFileSession::extractContactIDFromURI(std::string uri) const{ - std::string::size_type usernameStartIndex = uri.find(":"); - std::string::size_type usernameEndIndex = uri.find("@"); - if(usernameStartIndex == std::string::npos || usernameStartIndex == std::string::npos || usernameStartIndex > usernameEndIndex){ - return ""; - } - return uri.substr(usernameStartIndex, usernameEndIndex-usernameStartIndex+1); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef TESTFILESESSIONMANAGER_H -#define TESTFILESESSIONMANAGER_H - -#include - -class TestFileSessionManager : public IFileSessionManager { -public: - - TestFileSessionManager(UserProfile & userProfile); - - virtual ~TestFileSessionManager(); - - ISendFileSession * createSendFileSession(); - - bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const; -}; - -#endif //TESTFILESESSIONMANAGER_H \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/include/testfilesessionmanager/TestSendFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef TESTSENDFILESESSION_H -#define TESTSENDFILESESSION_H - -#include - -class TestSendFileSession : public ISendFileSession { -public: - - TestSendFileSession(); - - virtual ~TestSendFileSession(); - - // Inherited from FileSessionImplementation - virtual void start(); - - virtual void pause(); - - virtual void resume(); - - virtual void stop(); - //// -}; - -#endif //TESTSENDFILESESSION_H \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../include/testfilesessionmanager/TestFileSessionManager.h" -#include "../include/testfilesessionmanager/TestSendFileSession.h" - -TestFileSessionManager::TestFileSessionManager(UserProfile & userProfile) - : IFileSessionManager(userProfile) { -} - -TestFileSessionManager::~TestFileSessionManager() { -} - -ISendFileSession * TestFileSessionManager::createSendFileSession() { - return new TestSendFileSession(); -} - -bool TestFileSessionManager::isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const { - if (protocol == EnumIMProtocol::IMProtocolMSN) { - return true; - } else { - return false; - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/implementation/test/src/TestSendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "../include/testfilesessionmanager/TestSendFileSession.h" - -#include -#include - -TestSendFileSession::TestSendFileSession() - : ISendFileSession() { -} - -TestSendFileSession::~TestSendFileSession() { -} - -void TestSendFileSession::start() { - LOG_DEBUG("starting download"); - - Thread::msleep(100); - - LOG_DEBUG("finished"); - moduleFinishedEvent(*this); -} - -void TestSendFileSession::pause() { -} - -void TestSendFileSession::resume() { -} - -void TestSendFileSession::stop() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/FileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWFILESESSIONMANAGER_H -#define OWFILESESSIONMANAGER_H - -#include - -#include - -#include -#include - -class Account; -class IFileSessionManager; -class IReceiveFileSession; -class ISendFileSession; -class SendFileSession; -class UserProfile; - -/** - * File Session Manager. - * - * Used to manage classes related to File Transfer - * - * @author Philippe Bernery - */ -class FileSessionManager { - friend class SendFileSession; -public: - - /** - * Emitted when a new FileSession is created. - * Can be emitted after a call to createFileSession or - * because subsystem created it (surely because someone - * is trying to send us a file). - * - * @param sender this class - * @param fileSession pointer to the newly created FileSession. - * Here the FileSession is a pointer because the received of the event is - * responsible of the deleting of this object. - */ - Event< void (FileSessionManager & sender, ReceiveFileSession fileSession)> newReceiveFileSessionCreatedEvent; - - Event needUpgradeEvent; - - Event peerNeedsUpgradeEvent; - - FileSessionManager(UserProfile & userProfile); - - virtual ~FileSessionManager(); - - /** - * Creates a SendFileSession. Caller is responsible for deleting the - * Session. - */ - SendFileSession * createSendFileSession(); - - // HACK : Unique file transfer hack - /** - * Queues a SendFileSession and starts it if it is the only session. - * - * @param the session to queue - */ - void queueSession(SendFileSession * session); - -private: - - /** - * @see IFileSessionManager::newIReceiveFileSessionCreatedEvent - */ - void newIReceiveFileSessionCreatedEventHandler(IFileSessionManager & sender, - IReceiveFileSession * iReceiveFileSession); - - void needUpgradeEventHandler(IFileSessionManager & sender); - - void peerNeedsUpgradeEventHandler(IFileSessionManager & sender, const std::string contactID); - - // HACK : Unique file transfer hack - /** - * Handler used to start the next session in queue - * - * @param the SendFileSession that finished, as a CoIpModule - */ - void moduleFinishedEventHandler(CoIpModule & sender); - - /** - * Create a ISendFileSession suitable for the given contact. - * - * @return a pointer to the new FileSession. - * Must be destroyed by the caller. - */ - ISendFileSession * createFileSessionForContact(const std::string & contactId); - - /** Vector of available FileSessionManager. */ - std::vector _fileSessionManagerVector; - - /** Link to UserProfile. */ - UserProfile & _userProfile; - - // HACK : Unique file transfer hack - /** Queue to ensure that only one session is active at a time */ - std::queue _sendSessions; - -}; - -#endif //OWFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIFILESESSION_H -#define OWIFILESESSION_H - -#include -#include -#include - -class Account; - -/** - * Must be inherited to be used. - * - * @author Philippe Bernery - */ -class IFileSession : public CoIpModule { -public: - - enum IFileSessionEvent { - - /** Emitted when a ask for transferring a file has been sent. */ - IFileSessionEventInviteToTransfer, - - /** Emitted when the invite to transfer has been received by the peer but - * he has not yet accept the tranfer. */ - IFileSessionEventWaitingForAnswer, - - /** Emitted when a file transfer is finished. */ - IFileSessionEventFileTransferFinished, - - /** Emitted when a file transfer failed. */ - IFileSessionEventFileTransferFailed, - - /** Emitted when a File transfer is paused by the user. */ - IFileSessionEventFileTransferPaused, - - /** Emitted when a File transfer is paused by peer. */ - IFileSessionEventFileTransferPausedByPeer, - - /** Emitted when a File transfer is resumed by the user. */ - IFileSessionEventFileTransferResumed, - - /** Emitted when a File transfer is resumed by peer. */ - IFileSessionEventFileTransferResumedByPeer, - - /** Emitted when a File transfer has been cancelled by the user. */ - IFileSessionEventFileTransferCancelled, - - /** Emitted when a File transfer has been cancelled by peer. */ - IFileSessionEventFileTransferCancelledByPeer, - - /** Emitted when the transfer of a File starts. */ - IFileSessionEventFileTransferBegan, - - }; - - /** - * Emitted when something happened in this IFileSession. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - */ - Event< void (IFileSession & sender, IFileSessionEvent event, - IMContact imContact, File sentFile) > fileTransferEvent; - - /** - * Information about progression of a download. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - * @param percentage completion of the transfer in percentage - */ - Event< void (IFileSession & sender, IMContact imContact, - File sentFile, int percentage) > fileTransferProgressionEvent; - - IFileSession(); - - IFileSession(const IFileSession & iFileSession); - - virtual IFileSession * clone() const = 0; - - virtual ~IFileSession(); - - /** - * Sets the Account to use. - */ - void setAccount(const Account * account); - -protected: - - /** The Account to use for File transfer. */ - Account * _account; - -}; - -#endif //OWIFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IFileSessionManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIFILESESSIONMANAGER_H -#define OWIFILESESSIONMANAGER_H - -#include -#include -#include -#include - -class IReceiveFileSession; -class ISendFileSession; -class UserProfile; - -/** - * File Session Manager. - * - * Used to manage classes related to File Transfer - * - * @author Philippe Bernery - */ -class IFileSessionManager : public Trackable { -public: - - /** - * Emitted when a new IReceiveFileSession is created. - * - * @param sender this class - * @param fileSession pointer to the newly created ISendFileSession. - * Here the ISendFileSession is a pointer because the received of the event is - * responsible of deleting of this object. - */ - Event< void (IFileSessionManager & sender, IReceiveFileSession * iReceiveFileSession)> - newIReceiveFileSessionCreatedEvent; - - Event needUpgradeEvent; - - Event peerNeedsUpgradeEvent; - - IFileSessionManager(UserProfile & userProfile); - - virtual ~IFileSessionManager(); - - /** - * @return true if the protocol is supported by this FileSessionManager. - */ - virtual bool isProtocolSupported(EnumIMProtocol::IMProtocol protocol) const = 0; - - /** - * Creates an ISendFileSession in FileSessionModeSend mode. - */ - virtual ISendFileSession * createSendFileSession() = 0; - -protected: - - UserProfile & _userProfile; - -}; - -#endif //OWIFILESESSIONMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/IReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIRECEIVEFILESESSION_H -#define OWIRECEIVEFILESESSION_H - -#include "IFileSession.h" - -#include - -#include - -/** - * - * - * @author Philippe Bernery - */ -class IReceiveFileSession : public IFileSession { -public: - - IReceiveFileSession(); - - IReceiveFileSession(const IReceiveFileSession & iReceiveFileSession); - - virtual IReceiveFileSession * clone() const = 0; - - virtual ~IReceiveFileSession(); - - /** - * Gets the IMContact who sends the File. - */ - IMContact getIMContact() const { return _imContact; } - - /** - * Sets the path for saving the File. - */ - void setFilePath(const std::string & path) { _filePath = path; } - - /** - * Gets the path to the File to be saved. - */ - std::string getFilePath() const { return _filePath; } - - /** - * Gets the name of the file to receive. - */ - std::string getFileName() const { return _fileName; } - - /** - * Gets the size of the file to receive. - */ - unsigned getFileSize() const { return _fileSize; } - -protected: - - /** Path to save place of the file. */ - std::string _filePath; - - /** Name of the file to receive. */ - std::string _fileName; - - /** Size of the file to receive. */ - unsigned _fileSize; - - /** Sender of File. */ - IMContact _imContact; - -}; - -#endif //OWIRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ISendFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWISENDFILESESSION_H -#define OWISENDFILESESSION_H - -#include "IFileSession.h" - -#include - -#include - -#include - -/** - * - * - * @author Philippe Bernery - */ -class ISendFileSession : public IFileSession { -public: - - ISendFileSession(); - - ISendFileSession(const ISendFileSession & iSendFileSession); - - virtual ISendFileSession * clone() const = 0; - - virtual ~ISendFileSession(); - - /** - * Sets the IMContactSet. - */ - void setIMContactSet(const IMContactSet & imContactSet) { _imContactSet = imContactSet; } - - /** - * Gets the IMContactSet. - */ - IMContactSet getIMContactSet() const { return _imContactSet; } - - /** - * Sets the File List. - */ - void setFileList(const std::vector & fileList) { _fileVector = fileList; } - - /** - * Gets the File list. - */ - std::vector getFileList() const { return _fileVector; } - -protected: - - /** List of Contact to send the files to. */ - IMContactSet _imContactSet; - - /** List of File to send. */ - std::vector _fileVector; - -}; - -#endif //OWISENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/ReceiveFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWRECEIVEFILESESSION_H -#define OWRECEIVEFILESESSION_H - -#include -#include -#include -#include -#include - -class FileSessionManager; -class IFileSession; -class IReceiveFileSession; -class UserProfile; - -/** - * File Session. - * - * Interface to File transfer services. - * - * - Receive mode: 'start' accepts the transfer and 'stop' refuses it. - * - * @see TestFileSession for an example - * - * @author Philippe Bernery - */ -class ReceiveFileSession : public Session { -public: - - /** - * Emitted when something happened in this ReceiveFileSession. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - */ - Event< void (ReceiveFileSession & sender, IFileSession::IFileSessionEvent event, - IMContact imContact, File sentFile) > fileTransferEvent; - - /** - * Information about progression of a download. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - * @param percentage completion of the transfer in percentage - */ - Event< void (ReceiveFileSession & sender, IMContact imContact, - File sentFile, int percentage) > fileTransferProgressionEvent; - - /** - * Creates a ReceiveFileSession. - * - * @param userProfile link to UserProfile - * @param fileSessionImp the IFileSession to use for receiving the file - */ - ReceiveFileSession(UserProfile & userProfile, IReceiveFileSession * fileSessionImp); - - ReceiveFileSession(const ReceiveFileSession & receiveFileSession); - - virtual ~ReceiveFileSession(); - - // Inherited from Session - virtual void start(); - - virtual void pause(); - - virtual void resume(); - - virtual void stop(); - //// - - /** - * Gets the IMContact who sends the File. - */ - IMContact getIMContact() const; - - /** - * Sets the path for saving the File. - */ - void setFilePath(const std::string & path); - - /** - * Gets the path to the File to be saved. - */ - std::string getFilePath() const; - - /** - * Gets the name of the file to receive. - */ - std::string getFileName() const; - - /** - * Gets the size of the file to receive. - */ - unsigned getFileSize() const; - - /** - * Gets the last event. - */ - IFileSession::IFileSessionEvent getLastEvent() const { return _lastEvent; }; - -private: - - /** - * @see IFileSession::fileTransferEvent - */ - void fileTransferEventHandler(IFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); - - /** - * @see IFileSession::fileTransferProgressionEvent - */ - void fileTransferProgressionEventHandler(IFileSession & sender, - IMContact imContact, File sentFile, int percentage); - - // Inherited from Session - virtual void addContact(const std::string & /*contactId*/) { } - - virtual void removeContact(const std::string & /*contactId*/) { } - //// - - /** - * @see Module::moduleFinishedEvent - */ - void moduleFinishedEventHandler(CoIpModule & sender); - - /** Last occured event. */ - IFileSession::IFileSessionEvent _lastEvent; - - /** Pointer to running IFileSession. */ - IReceiveFileSession * _currentFileSessionImp; -}; - -#endif //OWRECEIVEFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/include/filesessionmanager/SendFileSession.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWSENDFILESESSION_H -#define OWSENDFILESESSION_H - -#include -#include -#include -#include - -class FileSessionManager; -class ISendFileSession; -class UserProfile; - -/** - * File Session. - * - * Interface to File transfer services. - * - * - Send mode: 'start' starts sending files by creating a FileSession per - * Contact and per file. 'stop' stops the transfer. - * - * @see TestFileSession for an example - * - * @author Philippe Bernery - */ -class SendFileSession : public Session { -public: - - /** - * Emitted when something happened in this SendFileSession. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - */ - Event< void (SendFileSession & sender, IFileSession::IFileSessionEvent event, - IMContact imContact, File sentFile) > fileTransferEvent; - - /** - * Information about progression of a download. - * - * @param sender this class - * @param imContact the peer that send or receive the file - * @param sentFile the sent File - * @param percentage completion of the transfer in percentage - */ - Event< void (SendFileSession & sender, IMContact imContact, - File sentFile, int percentage) > fileTransferProgressionEvent; - - /** - * Creates a SendFileSession. - * - * @param fileSessionManager reference to the main FileSessionManager. - * @param userProfile link to UserProfile - */ - SendFileSession(FileSessionManager & fileSessionManager, UserProfile & userProfile); - - SendFileSession(const SendFileSession & sendFileSession); - - virtual ~SendFileSession(); - - // Inherited from Session - virtual void start(); - - virtual void pause(); - - virtual void resume(); - - virtual void stop(); - //// - - /** - * Adds a file to the transfer queue. - * - * Thread safe. - * - * @param file the file to add. The File object is copied. - */ - void addFile(const File & file); - - /** - * Gets the File list. - */ - std::vector getFileList() const { return _fileVector; } - -private: - - /** - * @see IFileSession::fileTransferEvent - */ - void fileTransferEventHandler(IFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); - - /** - * @see IFileSession::fileTransferProgressionEvent - */ - void fileTransferProgressionEventHandler(IFileSession & sender, - IMContact imContact, File sentFile, int percentage); - - /** - * @see Module::moduleFinishedEvent - */ - void moduleFinishedEventHandler(CoIpModule & sender); - - /** List of Files to send. */ - std::vector _fileVector; - - /** Pointer to running IFileSession. */ - ISendFileSession * _currentFileSessionImp; - - /** Link to FileSessionManager. */ - FileSessionManager & _fileSessionManager; -}; - -#endif //OWSENDFILESESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/FileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include - -#include "../implementation/phapi/include/phapifilesessionmanager/PhApiFileSessionManager.h" - -#include -#include -#include -#include -#include -#include - -#include - -FileSessionManager::FileSessionManager(UserProfile & userProfile) - : _userProfile(userProfile) { - - PhApiFileSessionManager * phapiManager = new PhApiFileSessionManager(_userProfile); - phapiManager->newIReceiveFileSessionCreatedEvent += boost::bind(&FileSessionManager::newIReceiveFileSessionCreatedEventHandler, this, _1, _2); - - phapiManager->needUpgradeEvent += boost::bind(&FileSessionManager::needUpgradeEventHandler, this, _1); - - phapiManager->peerNeedsUpgradeEvent += boost::bind(&FileSessionManager::peerNeedsUpgradeEventHandler, this, _1, _2); - - _fileSessionManagerVector.push_back(phapiManager); - - -} - -FileSessionManager::~FileSessionManager() { - for (std::vector::const_iterator it = _fileSessionManagerVector.begin(); - it != _fileSessionManagerVector.end(); - ++it) { - delete (*it); - } -} - -SendFileSession * FileSessionManager::createSendFileSession() { - SendFileSession * newFileSession = new SendFileSession(*this, _userProfile); - // HACK : Unique file transfer hack - newFileSession->moduleFinishedEvent += boost::bind(&FileSessionManager::moduleFinishedEventHandler, this, _1); - return newFileSession; -} - -ISendFileSession * FileSessionManager::createFileSessionForContact(const std::string & contactId) { - ISendFileSession * result = NULL; - - Contact * contact = _userProfile.getContactList().getContact(contactId); - if (contact) { - - ContactProfile contactProfile = *contact; - - for (std::vector::const_iterator it = _fileSessionManagerVector.begin(); - it != _fileSessionManagerVector.end(); - ++it) { - - for (IMContactSet::const_iterator contactIterator = contactProfile.getIMContactSet().begin(); - contactIterator != contactProfile.getIMContactSet().end(); - contactIterator++) { - - if ((*it)->isProtocolSupported((*contactIterator).getProtocol())) { - result = (*it)->createSendFileSession(); - IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount((*contactIterator).getIMAccountId()); - result->setAccount(imAccount); - IMContactSet imContactSet; - imContactSet.insert(*contactIterator); - result->setIMContactSet(imContactSet); - } - } - } - } - - if (!result) { - LOG_ERROR("no FileSession implementation available"); - } - - return result; -} - -void FileSessionManager::newIReceiveFileSessionCreatedEventHandler(IFileSessionManager & sender, IReceiveFileSession * iReceiveFileSession) { - LOG_DEBUG("new IReceiveFileSession created event"); - - ReceiveFileSession newFileSession(_userProfile, iReceiveFileSession); - - newReceiveFileSessionCreatedEvent(*this, newFileSession); -} - -void FileSessionManager::needUpgradeEventHandler(IFileSessionManager & sender) { - needUpgradeEvent(*this); -} - -void FileSessionManager::peerNeedsUpgradeEventHandler(IFileSessionManager & sender, const std::string contactID) { - peerNeedsUpgradeEvent(*this, contactID); -} - -// HACK : Unique file transfer hack -void FileSessionManager::queueSession(SendFileSession * session) { - _sendSessions.push(session); - if(_sendSessions.size() == 1) { - _sendSessions.front()->start(); - } -} - -// HACK : Unique file transfer hack -void FileSessionManager::moduleFinishedEventHandler(CoIpModule & sender) { - _sendSessions.pop(); - if(_sendSessions.size() > 0) { - _sendSessions.front()->start(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include - -IFileSession::IFileSession() { - _account = NULL; -} - -IFileSession::IFileSession(const IFileSession & iFileSession) - : CoIpModule() { - _account = iFileSession._account->clone(); -} - -IFileSession::~IFileSession() { - OWSAFE_DELETE(_account); -} - -void IFileSession::setAccount(const Account * account) { - OWSAFE_DELETE(_account); - - _account = account->clone(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IFileSessionManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -IFileSessionManager::IFileSessionManager(UserProfile & userProfile) - : _userProfile(userProfile) { -} - -IFileSessionManager::~IFileSessionManager() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/IReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -IReceiveFileSession::IReceiveFileSession() { - _fileSize = 0; -} - -IReceiveFileSession::IReceiveFileSession(const IReceiveFileSession & iReceiveFileSession) - : IFileSession() { - _filePath = iReceiveFileSession._filePath; - _fileName = iReceiveFileSession._fileName; - _fileSize = iReceiveFileSession._fileSize; - _imContact = iReceiveFileSession._imContact; -} - -IReceiveFileSession::~IReceiveFileSession() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ISendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -ISendFileSession::ISendFileSession() { -} - -ISendFileSession::ISendFileSession(const ISendFileSession & iSendFileSession) - : IFileSession() { - _imContactSet = iSendFileSession._imContactSet; - _fileVector = iSendFileSession._fileVector; -} - -ISendFileSession::~ISendFileSession() { -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/ReceiveFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include - -#include - -ReceiveFileSession::ReceiveFileSession(UserProfile & userProfile, - IReceiveFileSession * fileSessionImp) - : Session(userProfile) { - - _currentFileSessionImp = fileSessionImp; - _currentFileSessionImp->moduleFinishedEvent += - boost::bind(&ReceiveFileSession::moduleFinishedEventHandler, this, _1); - _currentFileSessionImp->fileTransferEvent += - boost::bind(&ReceiveFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); - _currentFileSessionImp->fileTransferProgressionEvent += - boost::bind(&ReceiveFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); -} - -ReceiveFileSession::ReceiveFileSession(const ReceiveFileSession & receiveFileSession) - : Session(receiveFileSession) { - if (receiveFileSession._currentFileSessionImp) { - _currentFileSessionImp = receiveFileSession._currentFileSessionImp->clone(); - _currentFileSessionImp->moduleFinishedEvent += - boost::bind(&ReceiveFileSession::moduleFinishedEventHandler, this, _1); - _currentFileSessionImp->fileTransferEvent += - boost::bind(&ReceiveFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); - _currentFileSessionImp->fileTransferProgressionEvent += - boost::bind(&ReceiveFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - } else { - _currentFileSessionImp = NULL; - } -} - -ReceiveFileSession::~ReceiveFileSession() { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - OWSAFE_DELETE(_currentFileSessionImp); -} - -void ReceiveFileSession::start() { - if (_currentFileSessionImp) { - _currentFileSessionImp->start(); - } -} - -void ReceiveFileSession::pause() { - if (_currentFileSessionImp) { - _currentFileSessionImp->pause(); - } -} - -void ReceiveFileSession::resume() { - if (_currentFileSessionImp) { - _currentFileSessionImp->resume(); - } -} - -void ReceiveFileSession::stop() { - if (_currentFileSessionImp) { - _currentFileSessionImp->stop(); - } -} - -IMContact ReceiveFileSession::getIMContact() const { - if (_currentFileSessionImp) { - return _currentFileSessionImp->getIMContact(); - } else { - return IMContact(); - } -} - -void ReceiveFileSession::setFilePath(const std::string & path) { - if (_currentFileSessionImp) { - _currentFileSessionImp->setFilePath(path + File::getPathSeparator()); - } -} - -std::string ReceiveFileSession::getFilePath() const { - if (_currentFileSessionImp) { - return _currentFileSessionImp->getFilePath(); - } else { - return String::null; - } -} - -std::string ReceiveFileSession::getFileName() const { - if (_currentFileSessionImp) { - return _currentFileSessionImp->getFileName(); - } else { - return String::null; - } -} - -unsigned ReceiveFileSession::getFileSize() const { - if (_currentFileSessionImp) { - return _currentFileSessionImp->getFileSize(); - } else { - return 0; - } -} - -void ReceiveFileSession::moduleFinishedEventHandler(CoIpModule & sender) { - moduleFinishedEvent(*this); -} - -void ReceiveFileSession::fileTransferEventHandler(IFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { - - _lastEvent = event; - - fileTransferEvent(*this, event, imContact, sentFile); -} - -void ReceiveFileSession::fileTransferProgressionEventHandler(IFileSession & sender, - IMContact imContact, File sentFile, int percentage) { - - fileTransferProgressionEvent(*this, imContact, sentFile, percentage); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/filesessionmanager/src/SendFileSession.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -SendFileSession::SendFileSession(FileSessionManager & fileSessionManager, UserProfile & userProfile) - : Session(userProfile), - _fileSessionManager(fileSessionManager) { - _currentFileSessionImp = NULL; -} - -SendFileSession::SendFileSession(const SendFileSession & sendFileSession) - : Session(sendFileSession), - _fileSessionManager(sendFileSession._fileSessionManager) { - - _fileVector = sendFileSession._fileVector; - - if (sendFileSession._currentFileSessionImp) { - _currentFileSessionImp = sendFileSession._currentFileSessionImp->clone(); - _currentFileSessionImp->moduleFinishedEvent += - boost::bind(&SendFileSession::moduleFinishedEventHandler, this, _1); - _currentFileSessionImp->fileTransferEvent += - boost::bind(&SendFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); - _currentFileSessionImp->fileTransferProgressionEvent += - boost::bind(&SendFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - } else { - _currentFileSessionImp = NULL; - } -} - -SendFileSession::~SendFileSession() { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - OWSAFE_DELETE(_currentFileSessionImp); -} - -void SendFileSession::start() { - // A FileSession will be created for each different protocols. - - // Check if a FileSession is not currently running. - if (_currentFileSessionImp) { - return; - } - - // Check if we have files to send and contacts to send to - if (_fileVector.empty() || _contactIdList.empty()) { - moduleFinishedEvent(*this); - return; - } - - bool done = false; - while (!done) { - std::string contact = *_contactIdList.begin(); - ISendFileSession * fileSessionImp = - _fileSessionManager.createFileSessionForContact(contact); - - if (fileSessionImp) { - done = true; - _currentFileSessionImp = fileSessionImp; - _currentFileSessionImp->moduleFinishedEvent += - boost::bind(&SendFileSession::moduleFinishedEventHandler, this, _1); - _currentFileSessionImp->fileTransferEvent += - boost::bind(&SendFileSession::fileTransferEventHandler, this, _1, _2, _3, _4); - _currentFileSessionImp->fileTransferProgressionEvent += - boost::bind(&SendFileSession::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - - _currentFileSessionImp->setFileList(_fileVector); - - _currentFileSessionImp->start(); - } else { - LOG_ERROR("cannot find any account usable with this contact." - " Removing contact from list and checking next one."); - _contactIdList.erase(_contactIdList.begin()); - done = _contactIdList.empty(); - if (done) { - moduleFinishedEvent(*this); - return; - } - } - } -} - -void SendFileSession::pause() { - if (_currentFileSessionImp) { - _currentFileSessionImp->pause(); - } -} - -void SendFileSession::resume() { - if (_currentFileSessionImp) { - _currentFileSessionImp->resume(); - } -} - -void SendFileSession::stop() { - if (_currentFileSessionImp) { - _currentFileSessionImp->stop(); - } -} - -void SendFileSession::addFile(const File & file) { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - _fileVector.push_back(file); -} - -void SendFileSession::moduleFinishedEventHandler(CoIpModule & sender) { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - //Removing Contacts from the _contactIdList - ISendFileSession & fileSessionImp = - dynamic_cast(sender); - IMContactSet imContactSet = fileSessionImp.getIMContactSet(); - for (IMContactSet::const_iterator imIt = imContactSet.begin(); - imIt != imContactSet.end(); - ++imIt) { - Contact * contact = - _userProfile.getContactList().findContactThatOwns(*imIt); - if (contact) { - std::string contactId = contact->getUUID(); - for (StringList::iterator strIt = _contactIdList.begin(); - strIt != _contactIdList.end(); - ++strIt) { - if (contactId == (*strIt)) { - _contactIdList.erase(strIt); - break; - } - } - } - } - //// - - OWSAFE_DELETE(_currentFileSessionImp); - start(); // Recall start to launch the next FileSession. -} - - -void SendFileSession::fileTransferEventHandler(IFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { - - fileTransferEvent(*this, event, imContact, sentFile); -} - -void SendFileSession::fileTransferProgressionEventHandler(IFileSession & sender, - IMContact imContact, File sentFile, int percentage) { - - fileTransferProgressionEvent(*this, imContact, sentFile, percentage); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpManager.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCOIPMANAGER_H -#define OWCOIPMANAGER_H - -#include - -class UserProfile; - -/** - * Entry point for CoIpManager model. - * - * @author Philippe Bernery - */ -class CoIpManager { -public: - - CoIpManager(UserProfile & userProfile); - - ~CoIpManager(); - - FileSessionManager & getFileSessionManager() { - return _fileSessionManager; - } - -private: - - UserProfile & _userProfile; - - FileSessionManager _fileSessionManager; - -}; - -#endif //OWCOIPMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpModule.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpModule.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpModule.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/CoIpModule.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCOIPMODULE_H -#define OWCOIPMODULE_H - -#include -#include -#include - -/** - * Base class for all CoIp module. - * - * @author Philippe Bernery - */ -class CoIpModule : Interface, public Trackable { -public: - - /** - * Sent when the module is finished. - * - * @param sender this class - */ - Event< void (CoIpModule & sender) > moduleFinishedEvent; - - /** - * Starts the Module. - */ - virtual void start() = 0; - - /** - * Pauses the Module. - * - * No effect if paused or stopped. - */ - virtual void pause() = 0; - - /** - * Resumes the Module. - * - * No effect if not paused. - */ - virtual void resume() = 0; - - /** - * Stops the Module. - */ - virtual void stop() = 0; -}; - -#endif //OWCOIPMODULE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/Session.h qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/Session.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/include/coipmanager/Session.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/include/coipmanager/Session.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWSESSION_H -#define OWSESSION_H - -#include -#include -#include -#include -#include -#include -#include - -#include - -class UserProfile; - -/** - * Base class for all kind of Session. - * - * @author Philippe Bernery - */ -class Session : public CoIpModule { -public: - - Session(UserProfile & userProfile); - - Session(const Session & session); - - virtual ~Session(); - - /** - * Adds a Contact to the Session. - * - * Thread safe. - */ - virtual void addContact(const std::string & contactId); - - /** - * Removes a Contact from the Session. - * - * Thread safe. - * - * No effect if contactId not found. - */ - virtual void removeContact(const std::string & contactId); - - /** - * Sets the list of Contact by giving a StringList. - * - * Thread safe. - * - * The list is copied. - */ - virtual void setContactList(const StringList & contactList); - - StringList getContactList() const { - return _contactIdList; - } - -protected: - - /** - * Looks for the first Account that is connected and where the Contact - * associated with contactId has a connected IMContact. - */ - IMAccount findFirstValidAccount(const std::string & contactId) const; - - /** - * Finds the first Account that is common to the UserProfile and - * Contacts given in parameter. - * That is to say Contact must be linked to this Account. - * - * @return the found Account or NULL if no common Account found. - */ - Account * findCommonAccount(const StringList & contactIdList) const; - - /** - * Finds for each Contact the IMContact that is linked to the given - * Account. - */ - IMContactSet getLinkedIMContacts(const Account & account) const; - - /** Link to UserProfile. */ - UserProfile & _userProfile; - - /** Mutex for Thread safe operation. */ - RecursiveMutex _mutex; - - /** List of Contact Ids. */ - StringList _contactIdList; -}; - -#endif //OWSESSION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/src/CoIpManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/src/CoIpManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/src/CoIpManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/src/CoIpManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -CoIpManager::CoIpManager(UserProfile & userProfile) - : _userProfile(userProfile), - _fileSessionManager(userProfile) { -} - -CoIpManager::~CoIpManager() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/src/Session.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/src/Session.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/src/Session.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/src/Session.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include -#include - -#include -#include -#include - -Session::Session(UserProfile & userProfile) - : _userProfile(userProfile) { -} - -Session::Session(const Session & session) - : CoIpModule(), - _userProfile(session._userProfile) { - _contactIdList = session._contactIdList; -} - -Session::~Session() { -} - -void Session::addContact(const std::string & contactId) { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - _contactIdList.push_back(contactId); -} - -void Session::removeContact(const std::string & contactId) { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - for (StringList::iterator it = _contactIdList.begin(); - it != _contactIdList.end(); - ++it) { - if ((*it) == contactId) { - _contactIdList.erase(it); - } - } -} - -void Session::setContactList(const StringList & contactList) { - RecursiveMutex::ScopedLock scopedLock(_mutex); - - _contactIdList = contactList; -} - -IMAccount Session::findFirstValidAccount(const std::string & contactId) const { - Contact * contact = _userProfile.getContactList().getContact(contactId); - if (contact) { - Contact workingContact(*contact); - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - for (IMAccountList::const_iterator upIt = imAccountList.begin(); - upIt != imAccountList.end(); - ++upIt) { - for (IMContactSet::const_iterator imIt = workingContact.getIMContactSet().begin(); - imIt != workingContact.getIMContactSet().end(); - ++imIt) { - if ((*upIt).getUUID() == (*imIt).getIMAccountId()) { - return (*upIt); - } - } - } - } - - return IMAccount(); -} - -Account * Session::findCommonAccount(const StringList & contactIdList) const { - return NULL; -} - -IMContactSet Session::getLinkedIMContacts(const Account & account) const { - IMContactSet result; - -/* for (StringList::const_iterator it = _contactIdList.begin(); - it != _contactIdList.end(); - ++it) { - Contact * myContact = _userProfile.getContactList().getContact(*it); - const IMContact * imContact = myContact->getFirstValidIMContact(account); - if (imContact) { - result.insert(*imContact); - } - } -*/ - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/tests/main.cpp qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/coipmanager/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/coipmanager/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -static Contact * contact1 = NULL; -static Contact * contact2 = NULL; - -void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, - ReceiveFileSession fileSession); - -void moduleFinishedEventHandler(CoIpModule & sender); - -int main(int argc, char **argv) { - // Setting factories - IMWrapperFactory * imFactory = NULL; - SipWrapperFactory * sipFactory = NULL; - - PhApiFactory * phApiFactory = new PhApiFactory(); - GaimIMFactory * gaimIMFactory = new GaimIMFactory(); - sipFactory = phApiFactory; - imFactory = new MultiIMFactory(*phApiFactory, *gaimIMFactory); - - SipWrapperFactory::setFactory(sipFactory); - IMWrapperFactory::setFactory(imFactory); - //// - - UserProfile userProfile; - CoIpManager coIpManager(userProfile); - - // Populating IMAccount list. - IMAccount imAccount1("jacob@msn", "cobaj", EnumIMProtocol::IMProtocolMSN); - userProfile.addIMAccount(imAccount1); - //// - - // Populating ContactList - userProfile.getContactList().addContactGroup("test"); - std::string groupId = userProfile.getContactList().getContactGroupIdFromName("test"); - - contact1 = &(userProfile.getContactList().createContact()); - contact1->setGroupId(groupId); - IMContact imContact11(imAccount1, "bilibob@msn"); - IMContact imContact12(EnumIMProtocol::IMProtocolYahoo, "bilibob@yahoo"); - contact1->addIMContact(imContact11); - contact1->addIMContact(imContact12); - - contact2 = &(userProfile.getContactList().createContact()); - contact2->setGroupId(groupId); - IMContact imContact21(imAccount1, "jacobine@msn"); - IMContact imContact22(EnumIMProtocol::IMProtocolYahoo, "jacobine@yahoo"); - contact2->addIMContact(imContact21); - contact2->addIMContact(imContact22); - //// - - FileSessionManager & fileSessionManager = coIpManager.getFileSessionManager(); - fileSessionManager.newReceiveFileSessionCreatedEvent += - &newReceiveFileSessionCreatedEventHandler; - - // Creating the file session - SendFileSession * fileSession = fileSessionManager.createSendFileSession(); - - File file("/Users/philou/Desktop/La_chanson_de_l_informatique.pps"); - LOG_DEBUG("size: " + String::fromNumber(file.getSize())); - fileSession->addFile(file); - - fileSession->addContact(contact1->getUUID()); - fileSession->addContact(contact2->getUUID()); - - fileSession->moduleFinishedEvent += - &moduleFinishedEventHandler; - - LOG_DEBUG("Starting FileSession"); - fileSession->start(); - //// - - return 0; -} - -void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, - ReceiveFileSession fileSession) { - LOG_DEBUG("ReceiveFileSession created"); -} - -void moduleFinishedEventHandler(CoIpModule & sender) { - LOG_DEBUG("FileSession finished"); - - delete &sender; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandClient.cpp qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandClient.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandClient.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandClient.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "CommandClient.h" - -#include "CommandServer.h" - -#include - -#include - -#include - -#ifdef OS_WINDOWS -#include -#endif - -CommandClient::CommandClient() { - _socket = new ClientSocket(); -} - -CommandClient::~CommandClient() { -#ifdef OS_WINDOWS - // FIXME: This Sleep() has been copied from main.cpp when CommandClient was - // created. Not sure it's really necessary. - Sleep(1000); - WSACleanup(); -#endif - OWSAFE_DELETE(_socket); -} - -bool CommandClient::connect() { - // FIXME: Modify ClientSocket::connect() to return a bool - _socket->connect("127.0.0.1", CommandServer::Port); - return true; -} - -void CommandClient::call(const std::string& number) { - _socket->write(CommandServer::QueryCall + number); -} - -void CommandClient::bringToFront() { - _socket->write(CommandServer::QueryBringToFront); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandClient.h qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandClient.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandClient.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandClient.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef COMMANDCLIENT_H -#define COMMANDCLIENT_H - -#include - -class ClientSocket; - -class CommandClient { -public: - CommandClient(); - ~CommandClient(); - bool connect(); - void call(const std::string& number); - void bringToFront(); - -private: - ClientSocket* _socket; -}; - -#endif /* COMMANDCLIENT_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandServer.cpp qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandServer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandServer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandServer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,269 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CommandServer.h" - -#include "ContactInfo.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -CommandServer * CommandServer::_commandServerInstance = NULL; -const std::string CommandServer::QueryStatus = "1|s"; -const std::string CommandServer::QueryCall = "1|o|call/"; -const std::string CommandServer::QuerySms = "1|o|sms/"; -const std::string CommandServer::QueryChat = "1|o|chat/"; -const std::string CommandServer::QueryAddContact = "1|o|addc/"; -const std::string CommandServer::QueryBringToFront = "1|o|bringToFront"; - -const std::string NICKNAME_STR = "pseudo"; -const std::string SIP_STR = "sip"; -const std::string FIRSTNAME_STR = "firstname"; -const std::string LASTNAME_STR = "lastname"; -const std::string COUNTRY_STR = "country"; -const std::string CITY_STR = "city"; -const std::string STATE_STR = "state"; -const std::string GROUP_STR = "group"; -const std::string WDEALSERVICETITLE_STR = "title"; -const std::string URL_STR = "url"; - -CommandServer::CommandServer(WengoPhone & wengoPhone) - : _wengoPhone(wengoPhone) { - - _serverSocket = new ServerSocket("127.0.0.1", Port); - _serverSocket->serverStatusEvent += boost::bind(&CommandServer::serverStatusEventHandler, this, _1, _2); - _serverSocket->connectionEvent += boost::bind(&CommandServer::connectionEventHandler, this, _1, _2); - _serverSocket->incomingRequestEvent += boost::bind(&CommandServer::incomingRequestEventHandler, this, _1, _2, _3); - _serverSocket->writeStatusEvent += boost::bind(&CommandServer::writeStatusEventHandler, this, _1, _2, _3); - _serverSocket->init(); -} - -CommandServer::~CommandServer() { - OWSAFE_DELETE(_serverSocket); -} - -CommandServer & CommandServer::getInstance(WengoPhone & wengoPhone) { - if (!_commandServerInstance) { - _commandServerInstance = new CommandServer(wengoPhone); - } - - return *_commandServerInstance; -} - -void CommandServer::serverStatusEventHandler(ServerSocket & sender, ServerSocket::Error error) { - if (error == ServerSocket::NoError) { - LOG_DEBUG("connected"); - } else { - LOG_WARN("not connected"); - } -} - -void CommandServer::connectionEventHandler(ServerSocket & sender, const std::string & connectionId) { - LOG_DEBUG("client connection=" + connectionId); -} - -void CommandServer::incomingRequestEventHandler(ServerSocket & sender, const std::string & connectionId, const std::string & data) { - LOG_DEBUG("incoming request connectionId=" + connectionId + " data=" + data); - String query = String(data); - - if (query == QueryStatus) { - - //Find the phoneline status and answer - UserProfile * userprofile = _wengoPhone.getUserProfileHandler().getCurrentUserProfile(); - if (userprofile) { - IPhoneLine * phoneLine = userprofile->getActivePhoneLine(); - if (phoneLine && phoneLine->isConnected()) { - _serverSocket->writeToClient(connectionId, QueryStatus + "|1"); - } else { - _serverSocket->writeToClient(connectionId, QueryStatus + "|0"); - } - } - - } else if (query == QueryBringToFront) { - bringMainWindowToFrontEvent(); - - } else if (query.beginsWith(QueryCall)) { - - //Extract the number from query & place the call - StringList l = query.split("/"); - if (l.size() == 2) { - LOG_DEBUG("call peer=" + l[1]); - UserProfile * userprofile = _wengoPhone.getUserProfileHandler().getCurrentUserProfile(); - if (userprofile) { - IPhoneLine * phoneLine = userprofile->getActivePhoneLine(); - if (phoneLine && phoneLine->isConnected()) { - phoneLine->makeCall(l[1]); - _serverSocket->writeToClient(connectionId, data + "|1"); - return; - } - } - } - _serverSocket->writeToClient(connectionId, data + "|0"); - - } else if (query.beginsWith(QuerySms)) { - - LOG_WARN("not yet implemented"); - - } else if (query.contains(QueryChat)) { - - UserProfile * userProfile = _wengoPhone.getUserProfileHandler().getCurrentUserProfile(); - if (userProfile) { - IPhoneLine * phoneLine = userProfile->getActivePhoneLine(); - if (phoneLine && phoneLine->isConnected()) { - - // extract the nickname from 1|o|chat/pseudo=value&sip=value - StringList l = query.split("/"); - std::string nickname; - if (l.size() == 2) { - int sepPos = l[1].find("&"); - nickname = l[1].substr(7, sepPos - 7); - } - //// - - // get THE Wengo account - IMAccountList imAccountList = userProfile->getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolWengo); - //// - - // create the IMContactSet - IMAccount *imAccount = userProfile->getIMAccountManager().getIMAccount((*imAccountList.begin()).getUUID()); - IMContact imContact(*imAccount, nickname); - IMContactSet imContactSet; - imContactSet.insert(imContact); - //// - - // create the chat session - ChatHandler & chatHandler = userProfile->getChatHandler(); - chatHandler.createSession(imAccount->getUUID(), imContactSet); - //// - - OWSAFE_DELETE(imAccount); - } - } - // failed - _serverSocket->writeToClient(connectionId, QueryChat + "|0"); - - } else if (query.beginsWith(QueryAddContact)) { - - UserProfile * userProfile = _wengoPhone.getUserProfileHandler().getCurrentUserProfile(); - if (userProfile) { - - ContactInfo contactInfo; - String tmp = query.substr(QueryAddContact.size(), query.size() - 1); - - StringList args = tmp.split("&"); - for (unsigned i = 0; i < args.size(); i++) { - - String tmp = args[i]; - if (!tmp.size()) { - continue; - } - - StringList list = tmp.split("="); - if ((!(list.size() == 2)) || list[0].empty()) { - continue; - } - - // remove the first and the last quote if any - String value = list[1]; - - if (list[0] == NICKNAME_STR) { - contactInfo.wengoName = value; - } else if (list[0] == SIP_STR) { - contactInfo.sip = value; - } else if (list[0] == FIRSTNAME_STR) { - contactInfo.firstname = value; - } else if (list[0] == LASTNAME_STR) { - contactInfo.lastname = value; - } else if (list[0] == COUNTRY_STR) { - contactInfo.country = value; - } else if (list[0] == CITY_STR) { - contactInfo.city = value; - } else if (list[0] == STATE_STR) { - contactInfo.state = value; - } else if (list[0] == GROUP_STR) { - contactInfo.group = value; - } else if (list[0] == WDEALSERVICETITLE_STR) { - contactInfo.wdealServiceTitle = value; - } else if (list[0] == URL_STR) { - if (value.beginsWith("\"")) { - value = value.substr(1, value.size() - 2); - } - contactInfo.website = value; - } - } - - showAddContactEvent(contactInfo); - } - - } else { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //"emulate" a http server. Needed for Flash sockets - std::string tmp = "\n" - "\n" - "\n"; - StringList domains = config.getCmdServerAuthorizedDomains(); - StringList::const_iterator it = domains.begin(), end = domains.end(); - for (;it!=end; ++it) { - tmp += "\n"; - } - tmp += "\n" - ""; - _serverSocket->writeToClient(connectionId, buildHttpForFlash(tmp)); - } -} - -void CommandServer::writeStatusEventHandler(ServerSocket & sender, const std::string & writeId, ServerSocket::Error error) { - if (error == ServerSocket::NoError) { - LOG_DEBUG("writeId=" + writeId + " write success"); - } else { - LOG_WARN("writeId=" + writeId + " write failed"); - } -} - -std::string CommandServer::buildHttpForFlash(const std::string & xml) { - - std::string httpHeader = - "HTTP/1.1 200 OK\n" - "Date: Thu, 29 Jun 2006 11:02:50 GMT\n" - "Server: Apache/2.0.46 (CentOS)\n" - "Last-Modified: Thu, 29 Jun 2006 10:41:12 GMT\n" - "Accept-Ranges: bytes\n" - "Connection: close\n" - "Content-Type: text/xml"; - - //Add the xml Content-Length and the header separator - httpHeader += "Content-Length: " + String::fromNumber(xml.size()) + "\n\n"; - - return httpHeader + xml; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandServer.h qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandServer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/CommandServer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/commandserver/CommandServer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCOMMANDSERVER_H -#define OWCOMMANDSERVER_H - -#include -#include - -class WengoPhone; -class ContactInfo; - -/** - * Command server. Listen for local connections, - * implements a simple command protocol. - * - * Syntax for query string is: - * |s - * |o|[/] - * - is the version of the communication protocol ("1" for now) - * - "s" stands for "status" - * - "o" stands for "order" - * - is a string - * - are optional params for - * - * @author Mathieu Stute - */ -class CommandServer { -public: - static const int Port = 25902; - - static const std::string QueryStatus; - - static const std::string QueryCall; - - static const std::string QuerySms; - - static const std::string QueryChat; - - static const std::string QueryAddContact; - - static const std::string QueryBringToFront; - - /** - * A contact has to be added to the contact list. - * - * work around a f*c*i*g VS 2003 bug that produces an INTERNAL COMPILER ERROR. - * - * @param contactInfo contact informations (firstname, lastname, SIP address...) - */ - Event showAddContactEvent; - - Event bringMainWindowToFrontEvent; - - CommandServer(WengoPhone & wengoPhone); - - ~CommandServer(); - - static CommandServer & getInstance(WengoPhone & wengoPhone); - -private: - - static std::string buildHttpForFlash(const std::string & xml); - - /** - * @see ServerSocket::serverStatusEvent - */ - void serverStatusEventHandler(ServerSocket & sender, ServerSocket::Error error); - - /** - * @see ServerSocket::connectionEvent - */ - void connectionEventHandler(ServerSocket & sender, const std::string & connectionId); - - /** - * @see ServerSocket::incomingRequestEvent - */ - void incomingRequestEventHandler(ServerSocket & sender, const std::string & connectionId, const std::string & data); - - /** - * @see ServerSocket::writeStatusEvent - */ - void writeStatusEventHandler(ServerSocket & sender, const std::string & writeId, ServerSocket::Error error); - - ServerSocket * _serverSocket; - - static CommandServer * _commandServerInstance; - - WengoPhone & _wengoPhone; -}; - -#endif //OWCOMMANDSERVER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/ContactInfo.h qutecom-2.2+dfsg1/wengophone/src/model/commandserver/ContactInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/commandserver/ContactInfo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/commandserver/ContactInfo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTINFO_H -#define OWCONTACTINFO_H - -#include - -/** - * Contact informations retrieved from the flash add contact button. - * - * Originaly done as a workaround for a f*c*i*g VS 2003 bug that produces an INTERNAL COMPILER ERROR. - * - * @author Mathieu Stute - * @author Tanguy Krotoff - */ -class ContactInfo { -public: - - /** Wengo name= wengo pseudo. */ - std::string wengoName; - - /** Wdeal service title/name. */ - std::string wdealServiceTitle; - - /** Contact SIP address. */ - std::string sip; - - /** Contact first name. */ - std::string firstname; - - /** Contact last name. */ - std::string lastname; - - /** Contact country. */ - std::string country; - - /** Contact city. */ - std::string city; - - /** Contact state. */ - std::string state; - - /** Contact group. */ - std::string group; - - /** Contact website url. */ - std::string website; -}; - -#endif //OWCONTACTINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/CommandLineParser.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/CommandLineParser.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/CommandLineParser.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/CommandLineParser.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,151 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "CommandLineParser.h" - -#include -#include -using namespace boost::program_options; -using namespace std; - -#include -#include -#include - -#include - -static std::string getDefaultResourcesDir() { - // Init resourcesDir - std::string resourcesDir; -#if defined(OS_WINDOWS) - resourcesDir = Path::getApplicationDirPath(); -#elif defined(OS_MACOSX) - resourcesDir = Path::getApplicationResourcesDirPath(); -#elif defined(OS_LINUX) and defined(OW_RESOURCEDIR) - resourcesDir = OW_RESOURCEDIR + File::getPathSeparator(); -#endif - - //Check if resourcesDir exist, if not then Path::getApplicationDirPath() - if (!File::exists(resourcesDir)) { - resourcesDir = Path::getApplicationDirPath(); - } - - return resourcesDir; -} - -static std::string getDefaultUserConfigDir(const std::string& binaryName) { - std::string configDir = Path::getConfigurationDirPath(); -#if defined(OS_LINUX) - configDir += '.'; -#endif - configDir += binaryName; - configDir += Path::getPathSeparator(); - return configDir; -} - -// FIXME: binaryName should get read from buildconfig, but it's only available -// in the qt subdir for now :-( -CommandLineParser::CommandLineParser(const std::string& binaryName, int argc, char * argv[]) { - _severalWengoPhoneAllowed = false; - _runInBackground = false; - _resourcesDir = getDefaultResourcesDir(); - _userConfigDir = getDefaultUserConfigDir(binaryName); - - try { - options_description desc("Allowed options"); - desc.add_options() - //First parameter describes option name/short name - //The second is parameter to option - //The third is description - ("help,h", "print usage message") - ("background,b", "run in background mode") - ("several,s", "allow several WengoPhone at the same time") - ("configpath,q", value(), "pass a path to load configuration directory") - ("resources", value(), "use a custom resources directory") - ("command,c", value(), "pass a command to the wengophone") - ; - - variables_map vm; - store(parse_command_line(argc, argv, desc), vm); - - // Handle help first - if (vm.count("help")) { - cout << desc << endl; - exit(0); - } - - // Now init config - if (vm.count("resources")) { - _resourcesDir = vm["resources"].as(); - } - - if (vm.count("configpath")) { - _userConfigDir = vm["configpath"].as(); - std::string pathSeparator = File::getPathSeparator(); - - int size = _userConfigDir.size(); - if (_userConfigDir[size-1] != pathSeparator[0]) { - - // remove " at the end - if (_userConfigDir[size-1] == '\"') { - _userConfigDir = _userConfigDir.substr(0,size-1); - } - //// - - // add path separator - _userConfigDir += pathSeparator; - //// - } - } - - //Set executable name - std::string executableName; - if (argv[0]) { - char * p = strrchr(argv[0], Path::getPathSeparator()[0]); - _executableName = std::string(p ? p + 1 : argv[0]); - } - - if (vm.count("background")) { - _runInBackground = true; - } - - if (vm.count("several")) { - _severalWengoPhoneAllowed = true; - } - - if (vm.count("command")) { - static String commandCall = "call/"; - String command = String(vm["command"].as()); - - //FIXME is it right to do that here? - command.remove("wengo://"); - - if (command.beginsWith(commandCall)) { - _command = command.split("/")[1]; - } - } - - } - catch(exception & e) { - cerr << e.what() << endl; - } -} - -CommandLineParser::~CommandLineParser() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/CommandLineParser.h qutecom-2.2+dfsg1/wengophone/src/model/config/CommandLineParser.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/CommandLineParser.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/CommandLineParser.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCOMMANDLINEPARSER_H -#define OWCOMMANDLINEPARSER_H - -#include - -/** - * Parse command line option. - * - * @ingroup model - * @author Mathieu Stute - * @euthor Xavier Desjardins - * @euthor Aurelien Gateau - */ -class CommandLineParser { -public: - - CommandLineParser(const std::string& binaryName, int argc, char * argv[]); - - ~CommandLineParser(); - - bool isSeveralWengoPhoneAllowed() const { - return _severalWengoPhoneAllowed; - } - - bool getRunInBackground() const { - return _runInBackground; - } - - std::string getResourcesDir() const { - return _resourcesDir; - } - - std::string getUserConfigDir() const { - return _userConfigDir; - } - - std::string getCommand() const { - return _command; - } - - std::string getExecutableName() const { - return _executableName; - } - -private: - bool _severalWengoPhoneAllowed; - bool _runInBackground; - std::string _resourcesDir; - std::string _userConfigDir; - std::string _command; - std::string _executableName; -}; - -#endif //OWCOMMANDLINEPARSER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Config.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/Config.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Config.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/Config.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,836 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Config.h" - -#include -#include - -#include - -#include - -#include - -#include -#include -#include -#include - -#ifdef OS_MACOSX - #include -#endif - -using namespace std; - -const string Config::CONFIG_VERSION_KEY = "config.version"; - -const string Config::NETWORK_SSO_SSL_KEY = "network.sso.ssl"; -const string Config::NETWORK_NAT_TYPE_KEY = "network.nat.type"; -const string Config::NETWORK_SIP_LOCAL_PORT_KEY = "network.sip.localport"; -const string Config::NETWORK_TUNNEL_NEEDED_KEY = "network.tunnel.needed"; -const string Config::NETWORK_TUNNEL_SSL_KEY = "network.tunnel.ssl"; -const string Config::NETWORK_TUNNEL_SERVER_KEY = "network.tunnel.server"; -const string Config::NETWORK_TUNNEL_PORT_KEY = "network.tunnel.port"; -const string Config::NETWORK_PROXY_DETECTED_KEY = "network.proxy.detected"; -const string Config::NETWORK_PROXY_SERVER_KEY = "network.proxy.server"; -const string Config::NETWORK_PROXY_PORT_KEY = "network.proxy.port"; -const string Config::NETWORK_PROXY_LOGIN_KEY = "network.proxy.login"; -const string Config::NETWORK_PROXY_PASSWORD_KEY = "network.proxy.password"; -const string Config::NETWORK_STUN_SERVER_KEY = "network.stun.server"; - -const string Config::CODEC_PLUGIN_PATH_KEY = "codec.plugin.path"; -const string Config::PHAPI_PLUGIN_PATH_KEY = "phapi.plugin.path"; - -const string Config::AUDIO_CODEC_LIST_KEY = "audio.codec.list"; -const string Config::AUDIO_OUTPUT_DEVICEID_KEY = "audio.output.deviceid"; -const string Config::AUDIO_INPUT_DEVICEID_KEY = "audio.input.deviceid"; -const string Config::AUDIO_RINGER_DEVICEID_KEY = "audio.ringer.deviceid"; -const string Config::AUDIO_ENABLE_RINGING_KEY = "audio.ringing.enable"; - -const string Config::AUDIO_INCOMINGCALL_FILE_KEY = "audio.incomingcall.file"; -const string Config::AUDIO_OUTGOINGCALL_FILE_KEY = "audio.outgoingcall.file"; -const string Config::AUDIO_DOUBLECALL_FILE_KEY = "audio.doublecall.file"; -const string Config::AUDIO_CALLCLOSED_FILE_KEY = "audio.callclosed.file"; -const string Config::AUDIO_INCOMINGCHAT_FILE_KEY = "audio.incomingchat.file"; -const string Config::AUDIO_IMACCOUNTCONNECTED_FILE_KEY = "audio.imaccountconnected.file"; -const string Config::AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY = "audio.imaccountdisconnected.file"; -const string Config::AUDIO_CONTACTONLINE_FILE_KEY = "audio.contactonline.file"; - -const string Config::AUDIO_SMILEYS_DIR_KEY = "audio.smileys.dir"; -const string Config::AUDIO_AEC_KEY = "audio.aec"; -const string Config::AUDIO_HALFDUPLEX_KEY = "audio.halfduplex"; - -const string Config::PROFILE_LAST_USED_NAME_KEY = "profile.last_used_name"; -const string Config::PROFILE_WIDTH_KEY = "profile.width"; -const string Config::PROFILE_HEIGHT_KEY = "profile.height"; -const string Config::PROFILE_POSX_KEY = "profile.posx"; -const string Config::PROFILE_POSY_KEY = "profile.posy"; - -const string Config::CALL_FORWARD_MODE_KEY = "call.forward.mode"; -const string Config::CALL_FORWARD_PHONENUMBER1_KEY = "call.forward.phonenumber1"; -const string Config::CALL_FORWARD_PHONENUMBER2_KEY = "call.forward.phonenumber2"; -const string Config::CALL_FORWARD_PHONENUMBER3_KEY = "call.forward.phonenumber3"; - -const string Config::VOICE_MAIL_ACTIVE_KEY = "voicemail.active"; - -const string Config::GENERAL_AUTOSTART_KEY = "general.autostart"; -const string Config::GENERAL_STARTBACKGROUNDMODE_KEY = "general.start.background.mode"; -const string Config::GENERAL_CLICK_START_FREECALL_KEY = "general.click.start.freecall"; -const string Config::GENERAL_CLICK_START_CHAT_KEY = "general.click.start.chat"; -const string Config::GENERAL_CLICK_CALL_CELLPHONE_KEY = "general.click.call.cellphone"; -const string Config::GENERAL_AWAY_TIMER_KEY = "general.away.timer"; -const string Config::GENERAL_SHOW_GROUPS_KEY = "general.show.groups"; -const string Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY = "general.show.offline.contacts"; -const string Config::GENERAL_HYPERLINKPROTOCOL_KEY = "general.hyperlinkprotocol"; -const string Config::GENERAL_TOOLBARMODE_KEY = "general.toolbarmode"; - -const string Config::APPEARANCE_CHATTHEME_KEY = "chat.theme"; -const string Config::APPEARANCE_CHATTHEMEVARIANT_KEY = "chat.theme.variant"; - -const string Config::LANGUAGE_AUTODETECT_KEYVALUE = "detect"; -const string Config::LANGUAGE_KEY = "language"; - -const string Config::NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY = "notification.show.toaster.on.incoming.call"; -const string Config::NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY = "notification.show.toaster.on.incoming.chat"; -const string Config::NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY = "notification.show.toaster.on.contact"; -const string Config::NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY = "notification.donotdisturb.nowindow"; -const string Config::NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY = "notification.donotdisturb.noaudio"; -const string Config::NOTIFICATION_AWAY_NO_WINDOW_KEY = "notification.away.nowindow"; -const string Config::NOTIFICATION_AWAY_NO_AUDIO_KEY = "notification.away.noaudio"; - -const string Config::PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY = "privacy.allow.call.from.anyone"; -const string Config::PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY = "privacy.allow.call.only.from.contact.list"; -const string Config::PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY = "privacy.allow.chat.from.anyone"; -const string Config::PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY = "privacy.allow.chat.only.from.contact.list"; -const string Config::PRIVACY_SIGN_AS_INVISIBLE_KEY = "privacy.sign.as.invisible"; - -const string Config::VIDEO_ENABLE_KEY = "video.enable"; -const string Config::VIDEO_WEBCAM_DEVICE_KEY = "video.webcam.device"; -const string Config::VIDEO_QUALITY_KEY = "video.quality"; -const string Config::VIDEO_ENABLE_XVIDEO_KEY = "video.xvideo.enable"; -const string Config::VIDEO_ENABLE_FLIP_KEY = "video.flip.enable"; - -const string Config::WENGO_SERVER_HOSTNAME_KEY = "wengo.server.hostname"; -const string Config::WENGO_SMS_PATH_KEY = "wengo.sms.path"; -const string Config::WENGO_SSO_PATH_KEY = "wengo.sso.path"; -const string Config::WENGO_INFO_PATH_KEY = "wengo.info.path"; -const string Config::WENGO_SUBSCRIBE_PATH_KEY = "wengo.subscribe.path"; -const string Config::WENGO_SOFTUPDATE_PATH_KEY = "wengo.softupdate.path"; -const string Config::WENGO_CIRPACK_PATH_KEY = "wengo.cirpack.path"; -const string Config::WENGO_DIRECTORY_PATH_KEY = "wengo.directory.path"; -const string Config::WENGO_AUDIOTESTCALL_KEY = "wengo.testcall.audio"; -const string Config::WENGO_VIDEOTESTCALL_KEY = "wengo.testcall.video"; -const string Config::WENGO_REALM_KEY = "wengo.realm"; - -const string Config::SIP_REGISTER_SERVER = "sip.register.server"; -const string Config::SIP_REGISTER_PORT = "sip.register.port"; -const string Config::SIP_PROXY_SERVER = "sip.proxy.server"; -const string Config::SIP_PROXY_PORT = "sip.proxy.port"; -const string Config::SIP_REALM = "sip.realm"; -const string Config::SIP_SIMPLE_SUPPORT = "sip.simplesupport"; -const string Config::SIP_AUDIOTESTCALL_KEY = "sip.testcall.audio"; -const string Config::SIP_VIDEOTESTCALL_KEY = "sip.testcall.video"; - -const string Config::SIP_REGISTER_TIMEOUT = "sip.register.timeout"; -const string Config::SIP_PUBLISH_TIMEOUT = "sip.publish.timeout"; -const string Config::SIP_USE_OPTIONS = "sip.use.options"; -const string Config::SIP_P2P_PRESENCE= "sip.p2p.presence"; -const string Config::SIP_CHAT_WITHOUT_PRESENCE= "sip.chat.without.presence"; - -const string Config::LAST_CHAT_HISTORY_SAVE_DIR_KEY = "last.chat.history.save.dir"; - -const string Config::APPLICATION_ICON_PATH = "/pics/application-icon.png"; - -const string Config::IEACTIVEX_ENABLE_KEY = "ieactivex.enable"; - -const string Config::CMDSERVER_AUTHORIZEDDOMAINS_KEY = "cmdserver.authorizeddomains"; - -const string Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY = "filetransfer.downloadfolder"; -const string Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY = "filetransfer.lastuploadedfilefolder"; - -const string Config::LINUX_PREFERED_BROWSER_KEY = "linux.prefered.browser"; - -const string Config::CALL_ENCRYPTION_MODE_KEY = "call.encryption.mode"; - -const string Config::URL_ACCOUNTCREATION_KEY = "url.accountcreation"; - -const string Config::URL_FORUM_KEY = "url.forum"; - -const string Config::URL_CALLOUT_KEY = "url.callout"; - -const string Config::URL_SMS_KEY = "url.sms"; - -const string Config::URL_VOICEMAIL_KEY = "url.voicemail"; - -const string Config::URL_EXTERNALDIRECTORY_KEY = "url.externaldirectory"; - -const string Config::URL_INTERNALDIRECTORY_KEY = "url.internaldirectory"; - -const string Config::URL_FAQ_KEY = "url.faq"; - -const string Config::URL_ACCOUNT_KEY = "url.account"; - -const string Config::URL_BUYWENGOS_KEY = "url.buywengos"; - -const string Config::URL_DOWNLOAD_KEY = "url.download"; - -const string Config::URL_PHONENUMBER_KEY = "url.phonenumber"; - -const string Config::URL_WIKI_KEY = "url.wiki"; - -const string Config::URL_LOSTPASSWORD_KEY = "url.lostpassword"; - -const string Config::URL_LAUNCHPAD_KEY = "url.launchpad"; - -const string Config::URL_HOME_HTTP_KEY = "url.home.http"; -const string Config::URL_HOME_HTTPS_KEY = "url.home.https"; - -const string Config::URL_COMPANYWEBSITE_KEY = "url.companywebsite"; - -const string Config::FEATURE_SMS_KEY = "feature.sms"; -const string Config::FEATURE_AUDIOCONFERENCE_KEY = "feature.audioconference"; - -const string Config::SIP_USE_TYPING_STATE="sip.use.typing_state"; - -const string Config::TRANSLATION_SENT_KEY="translation.sent"; -const string Config::TRANSLATION_RECEIVED_KEY="translation.received"; - -string Config::_configDir; - -Config::Config(const string & name) - : CascadingSettings() { - - _name = name; - - // Version is set to sticky otherwise it would be impossible to detect - // config version changes - addStickyKey(CONFIG_VERSION_KEY); -} - -Config::~Config() { -} - -string Config::getName() const { - return _name; -} - -int Config::getConfigVersion() const { - return getIntegerKeyValue(CONFIG_VERSION_KEY); -} - -bool Config::getNetworkSSOSSL() const { - return getBooleanKeyValue(NETWORK_SSO_SSL_KEY); -} - -string Config::getNetworkNatType() const { - return getStringKeyValue(NETWORK_NAT_TYPE_KEY); -} - -int Config::getNetworkSipLocalPort() const { - return getIntegerKeyValue(NETWORK_SIP_LOCAL_PORT_KEY); -} - -bool Config::getNetworkTunnelSSL() const { - return getBooleanKeyValue(NETWORK_TUNNEL_SSL_KEY); -} - -string Config::getNetworkTunnelServer() const { - return getStringKeyValue(NETWORK_TUNNEL_SERVER_KEY); -} - -bool Config::getNetWorkTunnelNeeded() const { - return getBooleanKeyValue(NETWORK_TUNNEL_NEEDED_KEY); -} - -int Config::getNetworkTunnelPort() const { - return getIntegerKeyValue(NETWORK_TUNNEL_PORT_KEY); -} - -bool Config::getNetworkProxyDetected() const { - return getBooleanKeyValue(NETWORK_PROXY_DETECTED_KEY); -} - -string Config::getNetworkProxyServer() const { - return getStringKeyValue(NETWORK_PROXY_SERVER_KEY); -} - -int Config::getNetworkProxyPort() const { - return getIntegerKeyValue(NETWORK_PROXY_PORT_KEY); -} - -string Config::getNetworkProxyLogin() const { - return getStringKeyValue(NETWORK_PROXY_LOGIN_KEY); -} - -string Config::getNetworkProxyPassword() const { - return getStringKeyValue(NETWORK_PROXY_PASSWORD_KEY); -} - -string Config::getNetworkStunServer() const { - return getStringKeyValue(NETWORK_STUN_SERVER_KEY); -} - -string Config::getCodecPluginPath() const { - return getStringKeyValue(CODEC_PLUGIN_PATH_KEY); -} - -string Config::getPhApiPluginPath() const { - return getStringKeyValue(PHAPI_PLUGIN_PATH_KEY); -} - -StringList Config::getAudioCodecList() const { - StringList res = getStringListKeyValue(AUDIO_CODEC_LIST_KEY); - return res; -} - -bool Config::getAudioAEC() const { - return getBooleanKeyValue(AUDIO_AEC_KEY); -} - -bool Config::getAudioHalfDuplex() const { - return getBooleanKeyValue(AUDIO_HALFDUPLEX_KEY); -} - -bool Config::getAudioRingingEnable() const { - return getBooleanKeyValue(AUDIO_ENABLE_RINGING_KEY); -} - -string Config::getLastChatHistorySaveDir() const { - return getStringKeyValue(LAST_CHAT_HISTORY_SAVE_DIR_KEY); -} - -string Config::getApplicationIconPath() const { - return getResourcesDir() + APPLICATION_ICON_PATH; -} - -string Config::getAudioSmileysDir() const { - return getResourceKeyValue(AUDIO_SMILEYS_DIR_KEY); -} - -string Config::getAudioIncomingCallFile() const { - return getResourceKeyValue(AUDIO_INCOMINGCALL_FILE_KEY); -} - -string Config::getAudioOutgoingCallFile() const { - return getResourceKeyValue(AUDIO_OUTGOINGCALL_FILE_KEY); -} - -string Config::getAudioDoubleCallFile() const { - return getResourceKeyValue(AUDIO_DOUBLECALL_FILE_KEY); -} - -string Config::getAudioCallClosedFile() const { - return getResourceKeyValue(AUDIO_CALLCLOSED_FILE_KEY); -} - -string Config::getAudioIncomingChatFile() const { - return getResourceKeyValue(AUDIO_INCOMINGCHAT_FILE_KEY); -} - -string Config::getAudioIMAccountConnectedFile() const { - return getResourceKeyValue(AUDIO_IMACCOUNTCONNECTED_FILE_KEY); -} - -string Config::getAudioIMAccountDisconnectedFile() const { - return getResourceKeyValue(AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY); -} - -string Config::getAudioContactOnlineFile() const { - return getResourceKeyValue(AUDIO_CONTACTONLINE_FILE_KEY); -} - -/** - * Code factorization. - * - * @see Config::getAudioRingerDeviceId() - * @see Config::getAudioInputDeviceId() - * @see Config::getAudioOutputDeviceId() - * @param storedDeviceData the stored audio device - * @param currentdeviceList the actual audio devices list - * @param currentDefaultDevice the actual default device - */ -static StringList getProperAudioDeviceId( - const StringList & storedDeviceData, - const std::list & currentdeviceList, - const StringList & currentDefaultDevice) { - - StringList result; - - // if no device stored use the default one - if (storedDeviceData.empty()) { - result = currentDefaultDevice; - - // else check if the stored device is currently available - // do not exec this check under Linux because when devices - // are busy they are not in currentdeviceList - } else { -#ifndef OS_LINUX - bool found = false; - - std::list::const_iterator it; - for (it = currentdeviceList.begin(); it != currentdeviceList.end(); ++it) { - - if ((*it).getData() == storedDeviceData) { - found = true; - } - } - - // if the stored device has been found we use it - if (found) { - result = storedDeviceData; - } else { - result = currentDefaultDevice; - } -#else - result = storedDeviceData; -#endif - } - return result; -} - -StringList Config::getAudioOutputDeviceId() const { - return getProperAudioDeviceId( - getStringListKeyValue(AUDIO_OUTPUT_DEVICEID_KEY), - AudioDeviceManager::getInstance().getOutputDeviceList(), - AudioDeviceManager::getInstance().getDefaultOutputDevice().getData() - ); -} - -StringList Config::getAudioInputDeviceId() const { - return getProperAudioDeviceId( - getStringListKeyValue(AUDIO_INPUT_DEVICEID_KEY), - AudioDeviceManager::getInstance().getInputDeviceList(), - AudioDeviceManager::getInstance().getDefaultInputDevice().getData() - ); -} - -StringList Config::getAudioRingerDeviceId() const { - return getProperAudioDeviceId( - getStringListKeyValue(AUDIO_RINGER_DEVICEID_KEY), - AudioDeviceManager::getInstance().getOutputDeviceList(), - AudioDeviceManager::getInstance().getDefaultOutputDevice().getData() - ); -} - -string Config::getWengoServerHostname() const { - return getStringKeyValue(WENGO_SERVER_HOSTNAME_KEY); -} - -string Config::getWengoSSOPath() const { - return getStringKeyValue(WENGO_SSO_PATH_KEY); -} - -string Config::getWengoSMSPath() const { - return getStringKeyValue(WENGO_SMS_PATH_KEY); -} - -string Config::getWengoSubscribePath() const { - return getStringKeyValue(WENGO_SUBSCRIBE_PATH_KEY); -} - -string Config::getWengoInfoPath() const { - return getStringKeyValue(WENGO_INFO_PATH_KEY); -} - -string Config::getWengoSoftUpdatePath() const { - return getStringKeyValue(WENGO_SOFTUPDATE_PATH_KEY); -} - -string Config::getWengoCirpackPath() const { - return getStringKeyValue(WENGO_CIRPACK_PATH_KEY); -} - -string Config::getWengoDirectoryPath() const { - return getStringKeyValue(WENGO_DIRECTORY_PATH_KEY); -} - -string Config::getWengoRealm() const { - return getStringKeyValue(WENGO_REALM_KEY); -} - -string Config::getWengoAudioTestCall() const { - return getStringKeyValue(WENGO_AUDIOTESTCALL_KEY); -} - -string Config::getWengoVideoTestCall() const { - return getStringKeyValue(WENGO_VIDEOTESTCALL_KEY); -} - -std::string Config::getSipRegisterServer() const { - return getStringKeyValue(SIP_REGISTER_SERVER); -} - -int Config::getSipRegisterPort() const { - return getIntegerKeyValue(SIP_REGISTER_PORT); -} - -std::string Config::getSipProxyServer() const { - return getStringKeyValue(SIP_PROXY_SERVER); -} - -int Config::getSipProxyPort() const { - return getIntegerKeyValue(SIP_PROXY_PORT); -} - -std::string Config::getSipRealm() const { - return getStringKeyValue(SIP_REALM); -} - -bool Config::getSipSimpleSupport() const { - return getBooleanKeyValue(SIP_SIMPLE_SUPPORT); -} - -string Config::getSipAudioTestCall() const { - return getStringKeyValue(SIP_AUDIOTESTCALL_KEY); -} - -string Config::getSipVideoTestCall() const { - return getStringKeyValue(SIP_VIDEOTESTCALL_KEY); -} - -int Config::getSipRegisterTimeOut() const { - return getIntegerKeyValue(SIP_REGISTER_TIMEOUT); -} - -int Config::getSipPublishTimeOut() const { - return getIntegerKeyValue(SIP_PUBLISH_TIMEOUT); -} - -bool Config::getSipUseOptions() const { - return getBooleanKeyValue(SIP_USE_OPTIONS); -} - -bool Config::getSipP2pPresence() const { - return getBooleanKeyValue(SIP_P2P_PRESENCE); -} - -bool Config::getSipChatWithoutPresence() const { - return getBooleanKeyValue(SIP_CHAT_WITHOUT_PRESENCE); -} - -string Config::getProfileLastUsedName() const { - return getStringKeyValue(PROFILE_LAST_USED_NAME_KEY); -} - -int Config::getProfileWidth() const { - return getIntegerKeyValue(PROFILE_WIDTH_KEY); -} - -int Config::getProfileHeight() const { - return getIntegerKeyValue(PROFILE_HEIGHT_KEY); -} - -int Config::getProfilePosX() const { - return getIntegerKeyValue(PROFILE_POSX_KEY); -} - -int Config::getProfilePoxY() const { - return getIntegerKeyValue(PROFILE_POSY_KEY); -} - -string Config::getCallForwardMode() const { - return getStringKeyValue(CALL_FORWARD_MODE_KEY); -} - -string Config::getCallForwardPhoneNumber1() const { - return getStringKeyValue(CALL_FORWARD_PHONENUMBER1_KEY); -} - -string Config::getCallForwardPhoneNumber2() const { - return getStringKeyValue(CALL_FORWARD_PHONENUMBER2_KEY); -} - -string Config::getCallForwardPhoneNumber3() const { - return getStringKeyValue(CALL_FORWARD_PHONENUMBER3_KEY); -} - -bool Config::getVoiceMailActive() const { - return getBooleanKeyValue(VOICE_MAIL_ACTIVE_KEY); -} - -bool Config::getGeneralAutoStart() const { - return getBooleanKeyValue(GENERAL_AUTOSTART_KEY); -} - -bool Config::getGeneralStartBackgroundMode() const { - return getBooleanKeyValue(GENERAL_STARTBACKGROUNDMODE_KEY); -} - -bool Config::getGeneralClickStartFreeCall() const { - return getBooleanKeyValue(GENERAL_CLICK_START_FREECALL_KEY); -} - -bool Config::getGeneralClickStartChat() const { - return getBooleanKeyValue(GENERAL_CLICK_START_CHAT_KEY); -} - -bool Config::getGeneralClickCallCellPhone() const { - return getBooleanKeyValue(GENERAL_CLICK_CALL_CELLPHONE_KEY); -} - -int Config::getGeneralAwayTimer() const { - return getIntegerKeyValue(GENERAL_AWAY_TIMER_KEY); -} - -bool Config::getShowGroups() const { - return getBooleanKeyValue(GENERAL_SHOW_GROUPS_KEY); -} - -bool Config::getShowOfflineContacts() const { - return getBooleanKeyValue(GENERAL_SHOW_OFFLINE_CONTACTS_KEY); -} - -std::string Config::getHyperlinkProtocol() const { - return getStringKeyValue(GENERAL_HYPERLINKPROTOCOL_KEY); -} - -std::string Config::getToolBarMode() const { - return getStringKeyValue(GENERAL_TOOLBARMODE_KEY); -} - -string Config::getChatTheme() const { - return getStringKeyValue(APPEARANCE_CHATTHEME_KEY); -} - -string Config::getChatThemeVariant() const { - return getStringKeyValue(APPEARANCE_CHATTHEMEVARIANT_KEY); -} - -string Config::getLanguage() const { - return getStringKeyValue(LANGUAGE_KEY); -} - -bool Config::getNotificationShowToasterOnIncomingCall() const { - return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY); -} - -bool Config::getNotificationShowToasterOnIncomingChat() const { - return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY); -} - -bool Config::getNotificationShowToasterOnContactOnline() const { - return getBooleanKeyValue(NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY); -} - -bool Config::getNotificationDoNotDisturbNoWindow() const { - return getBooleanKeyValue(NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY); -} - -bool Config::getNotificationDoNotDisturbNoAudio() const { - return getBooleanKeyValue(NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY); -} - -bool Config::getNotificationAwayNoWindow() const { - return getBooleanKeyValue(NOTIFICATION_AWAY_NO_WINDOW_KEY); -} - -bool Config::getNotificationAwayNoAudio() const { - return getBooleanKeyValue(NOTIFICATION_AWAY_NO_AUDIO_KEY); -} - -bool Config::getPrivacyAllowCallFromAnyone() const { - return getBooleanKeyValue(PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY); -} - -bool Config::getPrivacyAllowCallOnlyFromContactList() const { - return getBooleanKeyValue(PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY); -} - -bool Config::getPrivacyAllowChatsFromAnyone() const { - return getBooleanKeyValue(PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY); -} - -bool Config::getPrivacyAllowChatOnlyFromContactList() const { - return getBooleanKeyValue(PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY); -} - -bool Config::getPrivacySignAsInvisible() const { - return getBooleanKeyValue(PRIVACY_SIGN_AS_INVISIBLE_KEY); -} - -bool Config::getVideoEnable() const { - if (getVideoWebcamDevice().empty()) { - return false; - } else { - return getBooleanKeyValue(VIDEO_ENABLE_KEY); - } -} - -string Config::getVideoWebcamDevice() const { - WebcamDriver * webcam = WebcamDriver::getInstance(); - - string deviceName = getStringKeyValue(VIDEO_WEBCAM_DEVICE_KEY); - - //FIXME see fixme DirectXWebcamDriver.h - //string defaultDevice = webcam->getDefaultDevice(); - string defaultDevice = deviceName; - - if (defaultDevice == WEBCAM_NULL) { - defaultDevice = String::null; - } - StringList deviceList = webcam->getDeviceList(); - - if (deviceName.empty()) { - return defaultDevice; - } else if (!deviceList.contains(deviceName)) { - return defaultDevice; - } else { - return deviceName; - } -} - -string Config::getVideoQuality() const { - return getStringKeyValue(VIDEO_QUALITY_KEY); -} - -bool Config::getXVideoEnable() const { - return getBooleanKeyValue(VIDEO_ENABLE_XVIDEO_KEY); -} - -bool Config::getVideoFlipEnable() const { - return getBooleanKeyValue(VIDEO_ENABLE_FLIP_KEY); -} - -bool Config::getIEActiveXEnable() const { - return getBooleanKeyValue(IEACTIVEX_ENABLE_KEY); -} - -StringList Config::getCmdServerAuthorizedDomains() const { - return getStringListKeyValue(CMDSERVER_AUTHORIZEDDOMAINS_KEY); -} - -string Config::getFileTransferDownloadFolder() const { - return getStringKeyValue(FILETRANSFER_DOWNLOAD_FOLDER_KEY); -} - -string Config::getLinuxPreferedBrowser() const { - return getStringKeyValue(LINUX_PREFERED_BROWSER_KEY); -} - -string Config::getLastUploadedFileFolder() const { - return getStringKeyValue(FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY); -} - -bool Config::getCallEncryptionMode() const { - return getBooleanKeyValue(CALL_ENCRYPTION_MODE_KEY); -} -string Config::getAccountCreationUrl() const { - return getStringKeyValue(URL_ACCOUNTCREATION_KEY); -} - -string Config::getForumUrl() const { - return getStringKeyValue(URL_FORUM_KEY); -} - -string Config::getCalloutUrl() const { - return getStringKeyValue(URL_CALLOUT_KEY); -} - -string Config::getSmsUrl() const { - return getStringKeyValue(URL_SMS_KEY); -} - -string Config::getVoiceMailUrl() const { - return getStringKeyValue(URL_VOICEMAIL_KEY); -} - -string Config::getExternalDirectoryUrl() const { - return getStringKeyValue(URL_EXTERNALDIRECTORY_KEY); -} - -string Config::getInternalDirectoryUrl() const { - return getStringKeyValue(URL_INTERNALDIRECTORY_KEY); -} - -string Config::getFaqUrl() const { - return getStringKeyValue(URL_FAQ_KEY); -} - -string Config::getAccountUrl() const { - return getStringKeyValue(URL_ACCOUNT_KEY); -} - -string Config::getBuyWengosUrl() const { - return getStringKeyValue(URL_BUYWENGOS_KEY); -} - -string Config::getDownloadUrl() const { - return getStringKeyValue(URL_DOWNLOAD_KEY); -} - -string Config::getPhoneNumberUrl() const { - return getStringKeyValue(URL_PHONENUMBER_KEY); -} - -string Config::getWikiUrl() const { - return getStringKeyValue(URL_WIKI_KEY); -} - -string Config::getLostPasswordUrl() const { - return getStringKeyValue(URL_LOSTPASSWORD_KEY); -} - -string Config::getLaunchpadUrl() const { - return getStringKeyValue(URL_LAUNCHPAD_KEY); -} - -string Config::getHttpHomeUrl() const { - return getStringKeyValue(URL_HOME_HTTP_KEY); -} - -string Config::getHttpsHomeUrl() const { - return getStringKeyValue(URL_HOME_HTTPS_KEY); -} - -string Config::getCompanyWebSiteUrl() const { - return getStringKeyValue(URL_COMPANYWEBSITE_KEY); -} - -bool Config::getSmsFeatureEnabled() const { - return getBooleanKeyValue(FEATURE_SMS_KEY); -} - -bool Config::getAudioConferenceFeatureEnabled() const { - return getBooleanKeyValue(FEATURE_AUDIOCONFERENCE_KEY); -} - -std::string Config::getConfigDir() { - if (_configDir.empty()) { - LOG_FATAL("getConfigDir() called before setConfigDir()"); - } - return _configDir; -} - -void Config::setConfigDir(const std::string& configDir) { - _configDir = configDir; -} - -bool Config::getSipUseTypingState() const -{ - return getBooleanKeyValue(SIP_USE_TYPING_STATE); -} - -string Config::getTranslationSent() const { - return getStringKeyValue(TRANSLATION_SENT_KEY); -} - -string Config::getTranslationReceived() const { - return getStringKeyValue(TRANSLATION_RECEIVED_KEY); -} Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/config_framework1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/config/config_framework1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Config.h qutecom-2.2+dfsg1/wengophone/src/model/config/Config.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Config.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/Config.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,680 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONFIG_H -#define OWCONFIG_H - -#include - -#include -#include - -/** - * Stores the configuration options of WengoPhone. - * - * Tries to make it impossible to make a mistake. - * - * @see CascadingSettings - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class Config : public CascadingSettings { -public: - - static const std::string CONFIG_VERSION_KEY; - int getConfigVersion() const; - - Config(const std::string & name); - - ~Config(); - - /** - * Gets the name associated with the Config. - * - * @return Config name - */ - std::string getName() const; - - /** True if SSL connection to SSO is available. */ - static const std::string NETWORK_SSO_SSL_KEY; - bool getNetworkSSOSSL() const; - - /** - * Type of NAT. - * - * @see EnumNatType::NatType - */ - static const std::string NETWORK_NAT_TYPE_KEY; - std::string getNetworkNatType() const; - - /** Client SIP Port to use. */ - static const std::string NETWORK_SIP_LOCAL_PORT_KEY; - int getNetworkSipLocalPort() const; - - /** True if tunnel is SSL. */ - static const std::string NETWORK_TUNNEL_SSL_KEY; - bool getNetworkTunnelSSL() const; - - /** Tunnel server. Empty if no tunnel is needed */ - static const std::string NETWORK_TUNNEL_SERVER_KEY; - std::string getNetworkTunnelServer() const; - - /** True if HTTP tunnel needed. */ - static const std::string NETWORK_TUNNEL_NEEDED_KEY; - bool getNetWorkTunnelNeeded() const; - - /** Tunnel server port. */ - static const std::string NETWORK_TUNNEL_PORT_KEY; - int getNetworkTunnelPort() const; - - /** Is proxy detected ?. */ - static const std::string NETWORK_PROXY_DETECTED_KEY; - bool getNetworkProxyDetected() const; - - /** Proxy server. Empty if no proxy */ - static const std::string NETWORK_PROXY_SERVER_KEY; - std::string getNetworkProxyServer() const; - - /** Proxy server port. */ - static const std::string NETWORK_PROXY_PORT_KEY; - int getNetworkProxyPort() const; - - /** Proxy login. Empty if not needed */ - static const std::string NETWORK_PROXY_LOGIN_KEY; - std::string getNetworkProxyLogin() const; - - /** Proxy Password. Empty if not needed */ - static const std::string NETWORK_PROXY_PASSWORD_KEY; - std::string getNetworkProxyPassword() const; - - /** Stun server. */ - static const std::string NETWORK_STUN_SERVER_KEY; - std::string getNetworkStunServer() const; - - /** - * @name PhApi configuration Methods - * @{ - */ - - /** Path to codecs. */ - static const std::string CODEC_PLUGIN_PATH_KEY; - std::string getCodecPluginPath() const; - - /** Path to PhApi plugins (e.g SFP plugin). */ - static const std::string PHAPI_PLUGIN_PATH_KEY; - std::string getPhApiPluginPath() const; - - /** - * @} - */ - - /** - * @name Audio Methods - * @{ - */ - - /** audio codec list */ - static const std::string AUDIO_CODEC_LIST_KEY; - StringList getAudioCodecList() const; - - /** Playback audio device name. */ - static const std::string AUDIO_OUTPUT_DEVICEID_KEY; - StringList getAudioOutputDeviceId() const; - - /** Record audio device name. */ - static const std::string AUDIO_INPUT_DEVICEID_KEY; - StringList getAudioInputDeviceId() const; - - /** Ringer audio device name. */ - static const std::string AUDIO_RINGER_DEVICEID_KEY; - StringList getAudioRingerDeviceId() const; - - /** Ringing/incoming call/ringtone audio file name. */ - static const std::string AUDIO_INCOMINGCALL_FILE_KEY; - std::string getAudioIncomingCallFile() const; - - /** Ringing/incoming call/ringtone audio file name. */ - static const std::string AUDIO_OUTGOINGCALL_FILE_KEY; - std::string getAudioOutgoingCallFile() const; - - /** Ringing/double call/ringtone audio file name. */ - static const std::string AUDIO_DOUBLECALL_FILE_KEY; - std::string getAudioDoubleCallFile() const; - - /** Call closed audio file name. */ - static const std::string AUDIO_CALLCLOSED_FILE_KEY; - std::string getAudioCallClosedFile() const; - - /** Incoming chat audio file name. */ - static const std::string AUDIO_INCOMINGCHAT_FILE_KEY; - std::string getAudioIncomingChatFile() const; - - /** IM account connected audio file name. */ - static const std::string AUDIO_IMACCOUNTCONNECTED_FILE_KEY; - std::string getAudioIMAccountConnectedFile() const; - - /** IM account disconnected audio file name. */ - static const std::string AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY; - std::string getAudioIMAccountDisconnectedFile() const; - - /** Contact online audio file name. */ - static const std::string AUDIO_CONTACTONLINE_FILE_KEY; - std::string getAudioContactOnlineFile() const; - - /** Audio smileys directory. */ - static const std::string AUDIO_SMILEYS_DIR_KEY; - std::string getAudioSmileysDir() const; - - /** AEC (echo canceller) enable or not. */ - static const std::string AUDIO_AEC_KEY; - bool getAudioAEC() const; - - /** Half duplex mode enable or not. */ - static const std::string AUDIO_HALFDUPLEX_KEY; - bool getAudioHalfDuplex() const; - - /** Ringing enable or not. */ - static const std::string AUDIO_ENABLE_RINGING_KEY; - bool getAudioRingingEnable() const; - - /** @} */ - - /** - * @name Wengo Specific Methods - * @{ - */ - - /** Wengo server hostname. */ - static const std::string WENGO_SERVER_HOSTNAME_KEY; - std::string getWengoServerHostname() const; - - /** Wengo SSO path on the server. */ - static const std::string WENGO_SSO_PATH_KEY; - std::string getWengoSSOPath() const; - - /** Wengo SMS path on the server. */ - static const std::string WENGO_SMS_PATH_KEY; - std::string getWengoSMSPath() const; - - /** Wengo info web service path on the server. */ - static const std::string WENGO_INFO_PATH_KEY; - std::string getWengoInfoPath() const; - - /** Wengo subscription web service path on the server. */ - static const std::string WENGO_SUBSCRIBE_PATH_KEY; - std::string getWengoSubscribePath() const; - - /** WengoPhone update path on the Wengo server. */ - static const std::string WENGO_SOFTUPDATE_PATH_KEY; - std::string getWengoSoftUpdatePath() const; - - /** - * Wengo cirpack web service path on the server. - * FIXME no cirpack information please! - */ - static const std::string WENGO_CIRPACK_PATH_KEY; - std::string getWengoCirpackPath() const; - - /** Wengo directory web service path on the server. */ - static const std::string WENGO_DIRECTORY_PATH_KEY; - std::string getWengoDirectoryPath() const; - - /** Wengo realm. */ - static const std::string WENGO_REALM_KEY; - std::string getWengoRealm() const; - - static const std::string WENGO_AUDIOTESTCALL_KEY; - std::string getWengoAudioTestCall() const; - - static const std::string WENGO_VIDEOTESTCALL_KEY; - std::string getWengoVideoTestCall() const; - - /** @} */ - - /** - * @name Sip Methods - * @{ - */ - static const std::string SIP_REGISTER_SERVER; - std::string getSipRegisterServer() const; - - static const std::string SIP_REGISTER_PORT; - int getSipRegisterPort() const; - - static const std::string SIP_PROXY_SERVER; - std::string getSipProxyServer() const; - - static const std::string SIP_PROXY_PORT; - int getSipProxyPort() const; - - static const std::string SIP_REALM; - std::string getSipRealm() const; - - static const std::string SIP_SIMPLE_SUPPORT; - bool getSipSimpleSupport() const; - - static const std::string SIP_AUDIOTESTCALL_KEY; - std::string getSipAudioTestCall() const; - - static const std::string SIP_VIDEOTESTCALL_KEY; - std::string getSipVideoTestCall() const; - - /** @} */ - - /** - * @name Sip Options - * @{ - */ - static const std::string SIP_REGISTER_TIMEOUT; - int getSipRegisterTimeOut() const; - - static const std::string SIP_PUBLISH_TIMEOUT; - int getSipPublishTimeOut() const; - - static const std::string SIP_USE_OPTIONS; - bool getSipUseOptions() const; - - static const std::string SIP_P2P_PRESENCE; - bool getSipP2pPresence() const; - - static const std::string SIP_CHAT_WITHOUT_PRESENCE; - bool getSipChatWithoutPresence() const; - /** @} */ - - /** - * @name Profile Methods - * @{ - */ - - /** Gets the name of the last used UserProfile. */ - static const std::string PROFILE_LAST_USED_NAME_KEY; - std::string getProfileLastUsedName() const; - - /** Profile all widget enabled. */ - static const std::string PROFILE_ALL_KEY; - bool getProfileAll() const; - - /** Profile window width. */ - static const std::string PROFILE_WIDTH_KEY; - int getProfileWidth() const; - - /** Profile window height. */ - static const std::string PROFILE_HEIGHT_KEY; - int getProfileHeight() const; - - /** Profile window position X. */ - static const std::string PROFILE_POSX_KEY; - int getProfilePosX() const; - - /** Profile window position Y. */ - static const std::string PROFILE_POSY_KEY; - int getProfilePoxY() const; - - /** @} */ - - /** - * @name Call Forwarding Methods - * @{ - */ - - /** Call forward mode. */ - static const std::string CALL_FORWARD_MODE_KEY; - std::string getCallForwardMode() const; - - /** Forward call phone number 1. */ - static const std::string CALL_FORWARD_PHONENUMBER1_KEY; - std::string getCallForwardPhoneNumber1() const; - - /** Forward call phone number 2. */ - static const std::string CALL_FORWARD_PHONENUMBER2_KEY; - std::string getCallForwardPhoneNumber2() const; - - /** Forward call phone number 3. */ - static const std::string CALL_FORWARD_PHONENUMBER3_KEY; - std::string getCallForwardPhoneNumber3() const; - - /** Active voice mail. */ - static const std::string VOICE_MAIL_ACTIVE_KEY; - bool getVoiceMailActive() const; - - /** @} */ - - /** - * @name General Settings Methods - * @{ - */ - - /** Automatically start WengoPhone when computer starts. */ - static const std::string GENERAL_AUTOSTART_KEY; - bool getGeneralAutoStart() const; - - /** Start in background mode. */ - static const std::string GENERAL_STARTBACKGROUNDMODE_KEY; - bool getGeneralStartBackgroundMode() const; - - /** Start a free call if applicable. */ - static const std::string GENERAL_CLICK_START_FREECALL_KEY; - bool getGeneralClickStartFreeCall() const; - - /** Start a chat-only when applicable. */ - static const std::string GENERAL_CLICK_START_CHAT_KEY; - bool getGeneralClickStartChat() const; - - /** Call cell phone or land line if contact not available. */ - static const std::string GENERAL_CLICK_CALL_CELLPHONE_KEY; - bool getGeneralClickCallCellPhone() const; - - /** Show me as away when I am inactive for. */ - static const std::string GENERAL_AWAY_TIMER_KEY; - static const int NO_AWAY_TIMER = -1; - int getGeneralAwayTimer() const; - - /** Show / Hide groups in the contacts list. */ - static const std::string GENERAL_SHOW_GROUPS_KEY; - bool getShowGroups() const; - - /** Show / Hide offline contacts in the contacts list. */ - static const std::string GENERAL_SHOW_OFFLINE_CONTACTS_KEY; - bool getShowOfflineContacts() const; - - /** - * The protocol used to create hyperlinks: For example in - * 'wengo://someone', 'wengo' is the protocol. - */ - static const std::string GENERAL_HYPERLINKPROTOCOL_KEY; - std::string getHyperlinkProtocol() const; - - /** The toolbar mode. See config.xml for possible values. */ - static const std::string GENERAL_TOOLBARMODE_KEY; - std::string getToolBarMode() const; - - /** @} */ - - /** - * @name Appearance Methods - * @{ - */ - static const std::string APPEARANCE_CHATTHEME_KEY; - std::string getChatTheme() const; - - static const std::string APPEARANCE_CHATTHEMEVARIANT_KEY; - std::string getChatThemeVariant() const; - /** @} */ - - /** ISO 639 code of the current language for translating WengoPhone. */ - static const std::string LANGUAGE_KEY; - static const std::string LANGUAGE_AUTODETECT_KEYVALUE; - std::string getLanguage() const; - - /** - * @name Notification Settings Methods - * @{ - */ - - /** Shows toaster for incoming calls. */ - static const std::string NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CALL_KEY; - bool getNotificationShowToasterOnIncomingCall() const; - - /** Shows toaster for incoming chats. */ - static const std::string NOTIFICATION_SHOW_TOASTER_ON_INCOMING_CHAT_KEY; - bool getNotificationShowToasterOnIncomingChat() const; - - /** Shows toaster when a contact is turning online. */ - static const std::string NOTIFICATION_SHOW_TOASTER_ON_CONTACT_ONLINE_KEY; - bool getNotificationShowToasterOnContactOnline() const; - - /** Do not show any toaster or window when in do not disturb mode. */ - static const std::string NOTIFICATION_DONOTDISTURB_NO_WINDOW_KEY; - bool getNotificationDoNotDisturbNoWindow() const; - - /** Switch off audio notifications when in do not disturb mode mode. */ - static const std::string NOTIFICATION_DONOTDISTURB_NO_AUDIO_KEY; - bool getNotificationDoNotDisturbNoAudio() const; - - /** Do not show any call toaster when in away mode. */ - static const std::string NOTIFICATION_AWAY_NO_WINDOW_KEY; - bool getNotificationAwayNoWindow() const; - - /** Switch off audio notifications when in away mode. */ - static const std::string NOTIFICATION_AWAY_NO_AUDIO_KEY; - bool getNotificationAwayNoAudio() const; - - /** @} */ - - /** - * @name Privacy Methods - * @{ - */ - - /** Allow calls from: anyone. */ - static const std::string PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY; - bool getPrivacyAllowCallFromAnyone() const; - - /** Allow calls from: only people from my contact list. */ - static const std::string PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY; - bool getPrivacyAllowCallOnlyFromContactList() const; - - /** Allow chats from: anyone. */ - static const std::string PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY; - bool getPrivacyAllowChatsFromAnyone() const; - - /** Allow chats from: only people from my contact list. */ - static const std::string PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY; - bool getPrivacyAllowChatOnlyFromContactList() const; - - /** When I sign into Wengo: always sign in as invisible. */ - static const std::string PRIVACY_SIGN_AS_INVISIBLE_KEY; - bool getPrivacySignAsInvisible() const; - - /** @} */ - - /** - * @name Video Methods - * @{ - */ - - static const std::string VIDEO_ENABLE_KEY; - bool getVideoEnable() const; - - static const std::string VIDEO_WEBCAM_DEVICE_KEY; - std::string getVideoWebcamDevice() const; - - static const std::string VIDEO_QUALITY_KEY; - std::string getVideoQuality() const; - - static const std::string VIDEO_ENABLE_XVIDEO_KEY; - bool getXVideoEnable() const; - - static const std::string VIDEO_ENABLE_FLIP_KEY; - bool getVideoFlipEnable() const; - - /** @} */ - - /** - * @name Path Methods - * @{ - */ - - /** - * Location of configuration files on the hard disk. - * This is not stored in the config file. - */ - static void setConfigDir(const std::string&); - static std::string getConfigDir(); - - /** Last location where a chat history has benn saved */ - static const std::string LAST_CHAT_HISTORY_SAVE_DIR_KEY; - std::string getLastChatHistorySaveDir() const; - - static const std::string APPLICATION_ICON_PATH; - std::string getApplicationIconPath() const; - - /** @} */ - - /** - * @name Other Methods - * @{ - */ - - /** Enables Internet Explorer ActiveX support (relevant only under Windows). */ - static const std::string IEACTIVEX_ENABLE_KEY; - bool getIEActiveXEnable() const; - - /** - * Returns the authorized domains that can pass commands to the softphone. - * @see CommandServer - */ - static const std::string CMDSERVER_AUTHORIZEDDOMAINS_KEY; - StringList getCmdServerAuthorizedDomains() const; - - /** @} */ - - /** - * @name File Transfer Options - * @{ - */ - - /** Download folder. */ - static const std::string FILETRANSFER_DOWNLOAD_FOLDER_KEY; - std::string getFileTransferDownloadFolder() const; - - /** Path to the last uploaded file. */ - static const std::string FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY; - std::string getLastUploadedFileFolder() const; - - /** @} */ - - /** - * @name Linux Options - * @{ - */ - - /** Prefered browser. */ - static const std::string LINUX_PREFERED_BROWSER_KEY; - std::string getLinuxPreferedBrowser() const; - - /** @} */ - - /** - * @name Security Options - * @{ - */ - - /** Call encryption mode. */ - static const std::string CALL_ENCRYPTION_MODE_KEY; - bool getCallEncryptionMode() const; - - /** @} */ - - - /** - * @name Urls - * @{ - */ - static const std::string URL_ACCOUNTCREATION_KEY; - std::string getAccountCreationUrl() const; - - static const std::string URL_FORUM_KEY; - std::string getForumUrl() const; - - static const std::string URL_CALLOUT_KEY; - std::string getCalloutUrl() const; - - static const std::string URL_SMS_KEY; - std::string getSmsUrl() const; - - static const std::string URL_VOICEMAIL_KEY; - std::string getVoiceMailUrl() const; - - static const std::string URL_EXTERNALDIRECTORY_KEY; - std::string getExternalDirectoryUrl() const; - - static const std::string URL_INTERNALDIRECTORY_KEY; - std::string getInternalDirectoryUrl() const; - - static const std::string URL_FAQ_KEY; - std::string getFaqUrl() const; - - static const std::string URL_ACCOUNT_KEY; - std::string getAccountUrl() const; - - static const std::string URL_BUYWENGOS_KEY; - std::string getBuyWengosUrl() const; - - static const std::string URL_DOWNLOAD_KEY; - std::string getDownloadUrl() const; - - static const std::string URL_PHONENUMBER_KEY; - std::string getPhoneNumberUrl() const; - - static const std::string URL_WIKI_KEY; - std::string getWikiUrl() const; - - static const std::string URL_LOSTPASSWORD_KEY; - std::string getLostPasswordUrl() const; - - static const std::string URL_LAUNCHPAD_KEY; - std::string getLaunchpadUrl() const; - - static const std::string URL_HOME_HTTP_KEY; - std::string getHttpHomeUrl() const; - - static const std::string URL_HOME_HTTPS_KEY; - std::string getHttpsHomeUrl() const; - - static const std::string URL_COMPANYWEBSITE_KEY; - std::string getCompanyWebSiteUrl() const; - - /** @} */ - - /** - * @name Feature Methods - * @{ - */ - static const std::string FEATURE_SMS_KEY; - bool getSmsFeatureEnabled() const; - - static const std::string FEATURE_AUDIOCONFERENCE_KEY; - bool getAudioConferenceFeatureEnabled() const; - - static const std::string SIP_USE_TYPING_STATE; - bool getSipUseTypingState() const; - /** @} */ - - /** - * @name translation Methods - * @{ - */ - - static const std::string TRANSLATION_SENT_KEY; - std::string getTranslationSent() const; - - static const std::string TRANSLATION_RECEIVED_KEY; - std::string getTranslationReceived() const; - -private: - - /** Name of this configuration. */ - std::string _name; - - static std::string _configDir; -}; - -#endif //OWCONFIG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigImporter.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigImporter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigImporter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigImporter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,1062 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConfigImporter.h" - -#include "Config.h" -#include "ConfigManager.h" - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -using namespace std; - -typedef struct telNumber_s { - string key; - string value; -} telNumber_t; - -typedef std::list telNumberList; -typedef std::list::iterator telNumberIt; - -typedef struct address_s { - string street; - string city; - string post_code; - string state; - string country; -} address_t; - -typedef struct birthday_s { - int day; - int month; - int year; -} birthday_t; - -#define MALE 0 -#define FEMALE 1 -#define UNKNOWN 2 - -typedef struct vcard_s { - string id; - string fname; - string lname; - int gender; - string company; - string website; - birthday_t birthday; - string note; - address_t address; - telNumberList numbers; - StringList emails; - string owner; - bool blocked; -} vcard_t; - -typedef std::list vcardList; -typedef std::list::iterator vcardIt; - -static const char * HOME_NUMBER_KEY = "home"; -static const char * WORK_NUMBER_KEY = "work"; -static const char * CELL_NUMBER_KEY = "cell"; -static const char * FAX_NUMBER_KEY = "fax"; -static const char * OTHER_NUMBER_KEY = "other"; - -telNumber_t * createNewNodeNumber(const std::string & key, const std::string & value) { - telNumber_t * number = new telNumber_t(); - - memset(number, 0, sizeof(telNumber_t)); - number->key = key; - number->value = value; - - return number; -} - -StringList mySplit(const std::string & str, char sep) { - string word; - StringList wordList; - istringstream strStream(str); - - while (std::getline(strStream, word, sep)) { - wordList += word; - } - - return wordList; -} - -static void initVcard(vcard_t * mVcard) { - if (mVcard) { - mVcard->gender = UNKNOWN; - mVcard->blocked = false; - mVcard->birthday.day = 1; - mVcard->birthday.month = 1; - mVcard->birthday.year = 1900; - } -} - -static const int CONFIG_UNKNOWN = 0; -static const int CONFIG_VERSION1 = 1; -static const int CONFIG_VERSION2 = 2; -static const int CONFIG_VERSION3 = 3; -static const int CONFIG_VERSION4 = 4; -static const int CONFIG_VERSION5 = 5; -static const int CONFIG_VERSION6 = 6; -static const int CONFIG_VERSION7 = 7; -static const int CONFIG_VERSION8 = 8; -static const int CONFIG_VERSION9 = 9; -static const int CONFIG_VERSION10 = 10; -static const int CONFIG_VERSION11 = 11; -static const int CONFIG_VERSION12 = 12; -static const int CONFIG_VERSION13 = 13; -static const int CONFIG_VERSION14 = 14; -static const int CONFIG_VERSION15 = 15; - -static const std::string USERPROFILE_FILENAME = "userprofile.xml"; -static const std::string USERCONFIG_FILENAME = "user.config"; -static const std::string IMACCOUNTS_FILENAME = "imaccounts.xml"; -static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; -static const std::string NEW_HISTORY_FILENAME = "history.xml"; -static const std::string OLD_HISTORY_FILENAME = "_history"; -static const std::string CONFIG_FILENAME = "config.xml"; -static const std::string FAKE_LOGIN = "**fake_identity**"; -static const std::string FAKE_PASSWORD = "**fake_password**"; -static const std::string CONTACT_PREFIX = "#IMPORTED_CONTACT#"; - -void ConfigImporter::importConfig() { - Config& config = ConfigManager::getInstance().getCurrentConfig(); - int systemVersion = boost::any_cast( config.getDefaultValue(Config::CONFIG_VERSION_KEY) ); - int localVersion = detectLastVersion(); - - if (localVersion != CONFIG_UNKNOWN && localVersion < systemVersion) { - if (localVersion == CONFIG_VERSION1) { - importConfigFromV1toV3(); - localVersion = CONFIG_VERSION3; - } - - if (localVersion == CONFIG_VERSION2) { - importConfigFromV2toV3(); - localVersion = CONFIG_VERSION3; - } - - if (localVersion == CONFIG_VERSION3) { - importConfigFromV3toV4(); - localVersion = CONFIG_VERSION4; - } - - if (localVersion == CONFIG_VERSION4) { - importConfigFromV4toV5(); - localVersion = CONFIG_VERSION5; - } - - if (localVersion == CONFIG_VERSION5) { - importConfigFromV5toV6(); - localVersion = CONFIG_VERSION6; - } - - if (localVersion == CONFIG_VERSION6) { - importConfigFromV6toV7(); - localVersion = CONFIG_VERSION7; - } - - if (localVersion == CONFIG_VERSION7) { - importConfigFromV7toV8(); - localVersion = CONFIG_VERSION8; - } - - if (localVersion == CONFIG_VERSION8) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION9; - } - - if (localVersion == CONFIG_VERSION9) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION10; - } - - if (localVersion == CONFIG_VERSION10) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION11; - } - - if (localVersion == CONFIG_VERSION11) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION12; - } - - if (localVersion == CONFIG_VERSION12) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION13; - } - - if (localVersion == CONFIG_VERSION13) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION14; - } - - if (localVersion == CONFIG_VERSION14) { - // Nothing to do, just bump the version number - localVersion = CONFIG_VERSION15; - } - - if (localVersion < systemVersion) { - LOG_FATAL("importer: config=" + String::fromNumber(localVersion) - + " failed to reach config=" + String::fromNumber(systemVersion)); - } - - // Set the new version number - Settings settings = readConfigFile(); - settings.set(Config::CONFIG_VERSION_KEY, systemVersion); - writeConfigFile(settings); - } -} - -unsigned ConfigImporter::detectLastVersion() { - string ConfigPathV1 = getWengoClassicConfigPath(); - string ConfigPathV2 = Config::getConfigDir(); - - bool dirV1Exists = !ConfigPathV1.empty() - && File::exists(ConfigPathV1.substr(0, ConfigPathV1.size() - 1)); - bool dirV2Exists = !ConfigPathV2.empty() - && File::exists(ConfigPathV2.substr(0, ConfigPathV2.size() - 1)); - - if (dirV2Exists) { - if (File::exists(ConfigPathV2 + "profiles")) { - - std::string configFilename = ConfigPathV2 + CONFIG_FILENAME; - if (!File::exists(configFilename)) { - return CONFIG_UNKNOWN; - } - Settings settings = readConfigFile(); - if (settings.contains(Config::CONFIG_VERSION_KEY)) { - return settings.getIntegerKeyValue(Config::CONFIG_VERSION_KEY); - } else { - // If the config version does not exist, it means that the - // config is older than version 4. - return CONFIG_VERSION3; - } - } else if (File::exists(ConfigPathV2 + "user.config")) { - return CONFIG_VERSION2; - } else if (dirV1Exists) { - return CONFIG_VERSION1; - } - } else if (dirV1Exists) { - return CONFIG_VERSION1; - } - - return CONFIG_UNKNOWN; -} - -string ConfigImporter::getWengoClassicConfigPath() { - string result; - -#if defined(OS_WINDOWS) - result = File::convertPathSeparators(Path::getHomeDirPath() + "wengo/"); -#elif defined(OS_LINUX) - result = File::convertPathSeparators(Path::getHomeDirPath() + ".wengo/"); -#endif - - return result; -} - -/** - * Works like std::getline() but will remove any ending '\r'. This is necessary - * because the WengoPhone Classic creates files ending with '\r\n', regardless - * of the platform - */ -static void getStrippedLine(std::ifstream& stream, std::string& line) { - std::getline(stream, line); - if (line[line.size() - 1] == '\r') { - line = line.substr(0, line.size() - 1); - } -} - -bool ConfigImporter::classicVcardParser(const string & vcardFile, void * structVcard) { - vcard_t * mVcard = (vcard_t *) structVcard; - std::ifstream fileStream; - string lastLine; - - fileStream.open(vcardFile.c_str()); - if (!fileStream) { - LOG_ERROR("cannot open the file: " + vcardFile); - return false; - } - - getStrippedLine(fileStream, lastLine); - if (lastLine != "BEGIN:VCARD") { - return false; - } - - String key, value, tmp; - - getStrippedLine(fileStream, tmp); - - while (!lastLine.empty()) { - int pos = lastLine.find(":", 0); - key = lastLine.substr(0, pos); - value = lastLine.substr(pos + 1, lastLine.length() - (pos + 1)); - - if (!value.empty()) { - if (!key.compare("N")) { - StringList mList = mySplit(value, ';'); - mVcard->lname = mList[0]; - mVcard->fname = mList[1]; - - if (!mList[4].compare("Mme.")) { - mVcard->gender = FEMALE; - } - else if (!mList[4].compare("Mr.")) { - mVcard->gender = MALE; - } - else { - mVcard->gender = UNKNOWN; - } - } - else if (!key.compare("TEL;TYPE=home")) { - mVcard->numbers.push_back(createNewNodeNumber(HOME_NUMBER_KEY, value)); - } - - else if (!key.compare("TEL;TYPE=work")) { - mVcard->numbers.push_back (createNewNodeNumber(WORK_NUMBER_KEY, value)); - } - - else if (!key.compare("TEL;TYPE=cell")) { - mVcard->numbers.push_back(createNewNodeNumber(CELL_NUMBER_KEY, value)); - } - - else if (!key.compare("TEL;TYPE=pref")) { - mVcard->id = CONTACT_PREFIX + value; - } - - else if (!key.compare("TEL;TYPE=fax")) { - mVcard->numbers.push_back(createNewNodeNumber(FAX_NUMBER_KEY, value)); - } - - else if (!key.compare("TEL;TYPE=other")) { - mVcard->numbers.push_back(createNewNodeNumber(OTHER_NUMBER_KEY, value)); - } - - else if (!key.compare("EMAIL")) { - mVcard->emails += value; - } - - else if (!key.compare("ORG")) { - mVcard->company = value; - } - - else if (!key.compare("URL")) { - mVcard->website = value; - } - - else if (!key.compare("BDAY")) { - StringList mList = mySplit(value, '-'); - mVcard->birthday.year = atoi(mList[0].c_str()); - mVcard->birthday.month = atoi(mList[1].c_str()); - mVcard->birthday.day = atoi(mList[2].c_str()); - } - else if (!key.compare("NOTE")) { - mVcard->note = value; - } - - else if (!key.compare("ADR;TYPE=home;TYPE=pref")) { - StringList mList = mySplit(value, ';'); - mVcard->address.street = mList[2]; - mVcard->address.city = mList[3]; - mVcard->address.state = mList[4]; - mVcard->address.post_code = mList[5]; - mVcard->address.country = mList[6]; - } - else { - LOG_DEBUG("KEY " + key + " not supported"); - } - } - - lastLine = tmp.trim(); - getStrippedLine(fileStream, tmp); - - if (!tmp.empty()) { - if (tmp.find(":", 0) == string::npos) { - lastLine += tmp.trim(); - getStrippedLine(fileStream, tmp); - } - } - } - - return true; -} - -bool ConfigImporter::classicXMLParser(const string & xmlFile, void *structVcard) { - vcard_t *mVcard = (vcard_t *) structVcard; - std::ifstream fileStream; - String lastLine; - - mVcard->blocked = false; - - fileStream.open(xmlFile.c_str()); - if (!fileStream) { - LOG_ERROR("cannot open the file: " + xmlFile); - return false; - } - - std::getline(fileStream, lastLine); - - while (!lastLine.empty()) { - lastLine = lastLine.trim(); - - if (!strncmp(lastLine.c_str(), "", 9)) { - int pos1 = lastLine.find_first_of('>'); - int pos2 = lastLine.find_last_of('<'); - string resp = ((String)lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); - - if (resp == "true") { - mVcard->blocked = true; - } - } - - std::getline(fileStream, lastLine); - } - - return true; -} - -string ConfigImporter::classicVCardToString(void *structVcard) { - vcard_t * mVcard = (vcard_t *) structVcard; - string res = "\n"; - - //Todo: look at ProfileXMLSerializer and try to use the same serializer - if (!mVcard->id.empty()) { - res += ("" + mVcard->id + "\n"); - } - - res += "\n"; - if (!mVcard->fname.empty()) { - res += ("fname + "]]>\n"); - } - if (!mVcard->lname.empty()) { - res += ("lname + "]]>\n"); - } - res += "\n"; - - if (mVcard->gender == MALE) { - res += ("male\n"); - } - else if (mVcard->gender == FEMALE) { - res += ("female\n"); - } - - if (!mVcard->website.empty()) { - res += ("" + mVcard->website + "\n"); - } - - if (mVcard->birthday.day && mVcard->birthday.month && mVcard->birthday.year) { - res += "\n\n"; - res += ("" + String::fromNumber(mVcard->birthday.day) + "\n"); - res += ("" + String::fromNumber(mVcard->birthday.month) + "\n"); - res += ("" + String::fromNumber(mVcard->birthday.year) + "\n"); - res += "\n\n"; - } - - if (!mVcard->company.empty()) { - res += "" + mVcard->company + "\n"; - } - - telNumberIt it; - for (it = mVcard->numbers.begin(); it != mVcard->numbers.end(); it++) { - if (!(*it)->key.compare("home") && !((*it)->value.empty())) { - res += "" + (*it)->value + "\n"; - } - else if (!(*it)->key.compare("work") && !((*it)->value.empty())) { - res += "" + (*it)->value + "\n"; - } - else if (!(*it)->key.compare("cell") && !((*it)->value.empty())) { - res += "" + (*it)->value + "\n"; - } - else if (!(*it)->key.compare("fax") && !((*it)->value.empty())) { - res += "" + (*it)->value + "\n"; - } - } - - res += "
\n"; - if (!mVcard->address.street.empty()) { - res += ("address.street + "]]>\n"); - } - if (!mVcard->address.city.empty()) { - res += ("address.city + "]]>\n"); - } - if (!mVcard->address.state.empty()) { - res += ("address.state + "]]>\n"); - } - if (!mVcard->address.post_code.empty()) { - res += ("address.post_code + "]]>\n"); - } - if (!mVcard->address.country.empty()) { - res += ("address.country + "]]>\n"); - } - res += "
\n"; - - if (!mVcard->id.empty()) { - res += "\n"; - res += ("" + mVcard->id + "\n"); - res += ("" + mVcard->owner + ""); - res += "\n"; - } - - if (mVcard->emails.size() >= 1 && !mVcard->emails[0].empty()) { - res += ("" + mVcard->emails[0] + "\n"); - } - if (mVcard->emails.size() >= 2 && !mVcard->emails[1].empty()) { - res += ("" + mVcard->emails[1] + "\n"); - } - if (mVcard->emails.size() >= 3 && !mVcard->emails[2].empty()) { - res += ("" + mVcard->emails[2] + "\n"); - } - - if (!mVcard->note.empty()) { - res += ("note + "]]>\n"); - } - - res += ("\n"); - - res += "
\n"; - return res; -} - -void ConfigImporter::addContactDetails(Contact & contact, void * structVcard) { - vcard_t * mVcard = (vcard_t *) structVcard; - - contact.setFirstName(mVcard->fname); - contact.setLastName(mVcard->lname); - contact.setCompany(mVcard->company); - contact.setBirthdate(Date(mVcard->birthday.day, mVcard->birthday.month, mVcard->birthday.year)); - contact.setNotes(mVcard->note); - contact.setWebsite(mVcard->website); - if (!mVcard->address.city.empty()) { - StreetAddress adress; - adress.setStreet(mVcard->address.street); - adress.setCity(mVcard->address.city); - adress.setZipCode(mVcard->address.post_code); - adress.setStateProvince(mVcard->address.state); - adress.setCountry(mVcard->address.country); - contact.setStreetAddress(adress); - } - - if (mVcard->gender != UNKNOWN) { - contact.setSex(mVcard->gender == MALE ? EnumSex::SexMale : EnumSex::SexFemale); - } - - telNumberIt it; - for (it = mVcard->numbers.begin(); it != mVcard->numbers.end(); it++) { - if (!(*it)->key.compare(HOME_NUMBER_KEY) && !((*it)->value.empty())) { - contact.setHomePhone((*it)->value); - } - else if (!(*it)->key.compare(WORK_NUMBER_KEY) && !((*it)->value.empty())) { - contact.setWorkPhone((*it)->value); - } - else if (!(*it)->key.compare(CELL_NUMBER_KEY) && !((*it)->value.empty())) { - contact.setMobilePhone((*it)->value); - } - else if (!(*it)->key.compare(FAX_NUMBER_KEY) && !((*it)->value.empty())) { - contact.setFax((*it)->value); - } - else if (!(*it)->key.compare(OTHER_NUMBER_KEY) && !((*it)->value.empty())) { - contact.setOtherPhone((*it)->value); - } - } - - if (mVcard->emails.size() >= 1 && !mVcard->emails[0].empty()) { - contact.setPersonalEmail(mVcard->emails[0]); - } - if (mVcard->emails.size() >= 2 && !mVcard->emails[1].empty()) { - contact.setWorkPhone(mVcard->emails[1]); - } - if (mVcard->emails.size() >= 3 && !mVcard->emails[2].empty()) { - contact.setOtherPhone(mVcard->emails[2]); - } -} - -bool ConfigImporter::importContactsFromV1toV3(const string & fromDir, UserProfile & userProfile) { - File mDir(fromDir); - StringList fileList = mDir.getFileList(); - ContactList & contactList = userProfile.getContactList(); - - contactList.addContactGroup("Classic"); - - IMAccountList imAccountList = - userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolWengo); - - if (!imAccountList.size()) { - return false; - } - - for (unsigned i = 0; i < fileList.size(); i++) { - File mFile(fromDir + fileList[i]); - string Id = fileList[i].substr(0, fileList[i].find("_", 0)); - vcard_t mVcard; - - initVcard(&mVcard); - if (!mFile.getExtension().compare("vcf")) { - if (classicVcardParser(fromDir + fileList[i], &mVcard) == false) { - continue; - } - - int extPos = fileList[i].find_last_of('.'); - string fileWoExt = fileList[i].substr(0, extPos + 1); - classicXMLParser(fromDir + fileWoExt + "xml", &mVcard); - - IMContact imContact(*imAccountList.begin(), mVcard.id); - Contact & contact = contactList.createContact(); - contact.setGroupId(contactList.getContactGroupIdFromName("Classic")); - addContactDetails(contact, &mVcard); - contact.addIMContact(imContact); - } - } - return true; -} - -typedef struct last_user_s { - string login; - string password; - bool auto_login; -} last_user_t; - -void * ConfigImporter::getLastWengoUser(const std::string & configUserFile, int version) { - std::ifstream fileStream; - String lastLine; - - last_user_t * lastUser = new last_user_t(); - fileStream.open(configUserFile.c_str()); - if (!fileStream) { - LOG_ERROR("cannot open the file: " + configUserFile); - return NULL; - } - - std::getline(fileStream, lastLine); - - while (!lastLine.empty()) { - lastLine = lastLine.trim(); - - if (!strncmp(lastLine.c_str(), "", 7)) { - int pos1, pos2; - if (version == CONFIG_VERSION2) { - pos1 = lastLine.find_first_of('>'); - pos2 = lastLine.find_last_of('<'); - } else { - pos2 = lastLine.find_first_of(']'); - pos1 = lastLine.find_last_of('['); - } - - lastUser->login = ((String)lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); - } - else if (!strncmp(lastLine.c_str(), "", 10)) { - int pos1, pos2; - if (version == CONFIG_VERSION2) { - pos1 = lastLine.find_first_of('>'); - pos2 = lastLine.find_last_of('<'); - } else { - pos2 = lastLine.find_first_of(']'); - pos1 = lastLine.find_last_of('['); - } - - lastUser->password = ((String) lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); - } - else if (!strncmp(lastLine.c_str(), "", 11)) { - int pos1 = lastLine.find_first_of('>'); - int pos2 = lastLine.find_last_of('<'); - string resp = ((String) lastLine.substr(pos1 + 1, pos2 - (pos1 + 1))).trim(); - - if (resp == (version == CONFIG_VERSION2 ? "1" : "true")) { - lastUser->auto_login = true; - } else { - lastUser->auto_login = false; - } - } - - std::getline(fileStream, lastLine); - } - - return lastUser; -} - -bool ConfigImporter::importConfigFromV1toV3() { - string classicPath = getWengoClassicConfigPath(); - File mDir(classicPath); - last_user_t * lastUser = (last_user_t *) getLastWengoUser(classicPath + USERCONFIG_FILENAME, CONFIG_VERSION1); - if (lastUser) { - UserProfile userProfile; - WengoAccount wAccount(lastUser->login, lastUser->password, true); - userProfile.setSipAccount(wAccount, false); - - // An SSO request was made here before. - // The SSO request was made to get the SIP identity of the user and link Wengo contacts to this id. - // Faking this SSO request. - IMAccount imAccount(FAKE_LOGIN, FAKE_PASSWORD, EnumIMProtocol::IMProtocolWengo); - userProfile.addIMAccount(imAccount); - - string sep = mDir.getPathSeparator(); - String oldPath = classicPath + lastUser->login + sep + "contacts" + sep; - importContactsFromV1toV3(oldPath, userProfile); - - String accountDir(userProfile.getProfileDirectory()); - File::createPath(accountDir); - UserProfileFileStorage1 fStorage(userProfile); - fStorage.save(userProfile.getName()); - - Settings settings = readConfigFile(); - settings.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); - writeConfigFile(settings); - } - - return true; -} - -bool ConfigImporter::importConfigFromV2toV3() { - String configDir = Config::getConfigDir(); - - FileReader file(configDir + USERPROFILE_FILENAME); - if (file.open()) { - string data = file.read(); - - last_user_t * lastUser = (last_user_t *) getLastWengoUser(configDir + USERCONFIG_FILENAME, CONFIG_VERSION2); - if (lastUser == NULL) { - return false; - } - - UserProfile userProfile; - - UserProfileXMLSerializer serializer(userProfile); - serializer.unserialize(data); - - WengoAccount wAccount(lastUser->login, Base64::decode(lastUser->password), true); - userProfile.setSipAccount(wAccount, false); - - // An SSO request was made here before. - // The SSO request was made to get the SIP identity of the user and link Wengo contacts to this id. - // Faking this SSO request. - IMAccount imAccount(FAKE_LOGIN, FAKE_PASSWORD, EnumIMProtocol::IMProtocolWengo); - userProfile.addIMAccount(imAccount); - - //remove user.config and userprofile.xml from the main directory - File userConfigFile(configDir + USERCONFIG_FILENAME); - userConfigFile.remove(); - File userProfileFile(configDir + USERPROFILE_FILENAME); - userProfileFile.remove(); - - String accountDir(userProfile.getProfileDirectory()); - File::createPath(accountDir); - UserProfileFileStorage1 fStorage(userProfile); - fStorage.save(userProfile.getName()); - - File mFile1(configDir + IMACCOUNTS_FILENAME); - mFile1.move(accountDir + IMACCOUNTS_FILENAME, true); - - File mFile2(configDir + CONTACTLIST_FILENAME); - mFile2.move(accountDir + CONTACTLIST_FILENAME, true); - - File mDir(configDir); - StringList dirList = mDir.getFileList(); - for (unsigned i = 0; i < dirList.size(); i++) { - if (dirList[i].length() > OLD_HISTORY_FILENAME.length()) { - if (dirList[i].substr(dirList[i].length() - OLD_HISTORY_FILENAME.length()) == OLD_HISTORY_FILENAME) { - File mFile3(configDir + dirList[i]); - mFile3.move(accountDir + NEW_HISTORY_FILENAME, true); - break; - } - } - } - - Settings settings = readConfigFile(); - settings.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); - writeConfigFile(settings); - } - - return true; -} - -bool ConfigImporter::importConfigFromV3toV4() { - StringList list = UserProfileHandler::getUserProfileNames(); - std::string sipSimpleProtocol = EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSIPSIMPLE); - std::string wengoProtocol = EnumIMProtocol::toString(EnumIMProtocol::IMProtocolWengo); - - for (StringList::const_iterator it = list.begin(); - it != list.end(); - ++it) { - - std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); - - //Replacing in imaccounts.xml - FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - iIMAccountsFile.open(); - String data = iIMAccountsFile.read(); - - data.replace(sipSimpleProtocol, wengoProtocol); - - FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - oIMAccountsFile.write(data); - //// - - //Replacing in contactlist.xml - FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); - iContactListFile.open(); - data = iContactListFile.read(); - - data.replace(sipSimpleProtocol, wengoProtocol); - - FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); - oContactListFile.write(data); - //// - } - - return true; -} - -bool ConfigImporter::importConfigFromV4toV5() { - std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; - //Replacing in config.xml - FileReader iConfigFile(configFilename); - iConfigFile.open(); - String data = iConfigFile.read(); - - // Fix video.quality key (int to string) - data.replace("0", - "VideoQualityNormal"); - data.replace("1", - "VideoQualityGood"); - data.replace("2", - "VideoQualityVeryGood"); - data.replace("3", - "VideoQualityExcellent"); - - FileWriter oConfigFile(configFilename); - oConfigFile.write(data); - //// - - return true; -} - -Settings ConfigImporter::readConfigFile() { - Settings settings; - std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; - FileReader iConfigFile(configFilename); - if (iConfigFile.open()) { - std::string data = iConfigFile.read(); - SettingsXMLSerializer serializer(settings); - serializer.unserialize(data); - } - return settings; -} - -void ConfigImporter::writeConfigFile(Settings& settings) { - std::string configFilename = Config::getConfigDir() + CONFIG_FILENAME; - SettingsXMLSerializer serializer(settings); - std::string data = serializer.serialize(); - - FileWriter oConfigFile(configFilename); - oConfigFile.write(data); -} - -bool ConfigImporter::importConfigFromV5toV6() { - Settings settings = readConfigFile(); - - // In V5 (WengoPhone 2.0), the values of GENERAL_SHOW_OFFLINE_CONTACTS_KEY - // and GENERAL_SHOW_GROUPS_KEY were the opposite of their meaning. - if (settings.contains(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY)) { - settings.set(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY, - !settings.getBooleanKeyValue(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY) - ); - } - - if (settings.contains(Config::GENERAL_SHOW_GROUPS_KEY)) { - settings.set(Config::GENERAL_SHOW_GROUPS_KEY, - !settings.getBooleanKeyValue(Config::GENERAL_SHOW_GROUPS_KEY) - ); - } - - writeConfigFile(settings); - return true; -} - -bool ConfigImporter::importConfigFromV6toV7() { - StringList list = UserProfileHandler::getUserProfileNames(); - std::map accountMap; - - for (StringList::const_iterator it = list.begin(); - it != list.end(); - ++it) { - - std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); - - //Replacing AIM/ICQ in imaccounts.xml - FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - iIMAccountsFile.open(); - String data = iIMAccountsFile.read(); - static const std::string AIMICQACCSTR = ""; - static const std::string LOGINSTR = ""; - - std::string::size_type accPos = data.find(AIMICQACCSTR); - while (accPos != std::string::npos) { - // Gets login and protocol - std::string::size_type loginPos = data.find(LOGINSTR, accPos + AIMICQACCSTR.size()); - std::string login = data.substr(loginPos + LOGINSTR.size(), - data.find("", loginPos) - loginPos - LOGINSTR.size()); - bool beginsWithDigit = (String(login.substr(0, 1)).toInteger() != 0); - EnumIMProtocol::IMProtocol protocol = EnumIMProtocol::IMProtocolAIM; - if (beginsWithDigit) { - protocol = EnumIMProtocol::IMProtocolICQ; - } - //// - - // Changing protocol line - data.replaceInRange(accPos, AIMICQACCSTR.size(), "AIM/ICQ", EnumIMProtocol::toString(protocol)); - //// - - // Inserting account in map for changing contactlist.xml - accountMap[login] = protocol; - //// - - accPos += AIMICQACCSTR.size(); - accPos = data.find(AIMICQACCSTR); - } - - FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - oIMAccountsFile.write(data); - //// - - //Replacing in contactlist.xml - FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); - iContactListFile.open(); - data = iContactListFile.read(); - static const std::string AIMICQIMSTR = ""; - static const std::string ACCOUNTSTR = ""; - - std::string::size_type imPos = data.find(AIMICQIMSTR); - while (imPos != std::string::npos) { - std::string::size_type accountPos = data.find(ACCOUNTSTR, imPos + AIMICQIMSTR.size()); - std::string account = data.substr(accountPos + ACCOUNTSTR.size(), - data.find("", accountPos) - accountPos - ACCOUNTSTR.size()); - data.replaceInRange(imPos, AIMICQIMSTR.size(), "AIM/ICQ", EnumIMProtocol::toString(accountMap[account])); - - imPos += AIMICQIMSTR.size(); - imPos = data.find(AIMICQIMSTR); - } - - FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); - oContactListFile.write(data); - //// - } - - return true; -} - -bool ConfigImporter::importConfigFromV7toV8() { - StringList list = UserProfileHandler::getUserProfileNames(); - std::map accountMap; - - for (StringList::const_iterator it = list.begin(); - it != list.end(); - ++it) { - - std::string userProfileDirectory = File::convertPathSeparators(Config::getConfigDir() + "profiles/" + *it + "/"); - - //Loading data - FileReader iIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - iIMAccountsFile.open(); - String data = iIMAccountsFile.read(); - - IMAccountList imAccountList; - IMAccountListXMLSerializer1 imAccountListSerializer1(imAccountList); - imAccountListSerializer1.unserialize(data); - - FileReader iContactListFile(userProfileDirectory + "contactlist.xml"); - iContactListFile.open(); - data = iContactListFile.read(); - - UserProfile userProfile; - ContactList contactList(userProfile); - ContactListXMLSerializer1 contactListSerializer1(contactList, imAccountList); - contactListSerializer1.unserialize(data); - - // Look for IMAccount and Contact link to the IMAccount with login FAKE_LOGIN. It has been introduced by a previous importation step - // to avoid the SSO request. - for (IMAccountList::iterator ait = imAccountList.begin(); ait != imAccountList.end(); ++ait) { - if (((*ait).getProtocol() == EnumIMProtocol::IMProtocolWengo) - && ((*ait).getLogin() == FAKE_LOGIN)) { - - // Update contact links to this IMAccount (update UUID and remove CONTACT_PREFIX). - for (ContactList::Contacts::iterator cit = const_cast(contactList.getContacts()).begin(); - cit != contactList.getContacts().end(); - cit++) { - IMContactSet & imContactSet = const_cast((*cit).getIMContactSet()); - for (IMContactSet::iterator imit = imContactSet.begin(); - imit != imContactSet.end(); - imit++) { - if (String((*imit).getContactId()).beginsWith(CONTACT_PREFIX)) { - const_cast(*imit).setContactId((*imit).getContactId().substr(CONTACT_PREFIX.size())); - const_cast(*imit).setIMAccount(&(*ait)); - } - } - } - - // Removing the IMAccount - imAccountList.erase(ait); - break; - } - } - //// - - IMAccountListXMLSerializer lastIMAccountListSerializer(imAccountList); - data = lastIMAccountListSerializer.serialize(); - FileWriter oIMAccountsFile(userProfileDirectory + "imaccounts.xml"); - oIMAccountsFile.write(data); - - ContactListXMLSerializer lastContactListSerializer(contactList, imAccountList); - data = lastContactListSerializer.serialize(); - FileWriter oContactListFile(userProfileDirectory + "contactlist.xml"); - oContactListFile.write(data); - //// - } - - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigImporter.h qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigImporter.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigImporter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigImporter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONFIGIMPORTER_H -#define OWCONFIGIMPORTER_H - -#include -#include - -#include -#include - -#include - -class Contact; -class UserProfile; -class Settings; - -/** - * Imports the config from a previous WengoPhone version. - * - * This class should not use Config getters and setters because at the time - * it's used the user config has not been loaded in Config yet. Any value set - * using a Config setter will be overwritten when user config is loaded. - * - * Instead of the Config getters and setters, you should use the static methods - * readConfigFile() and writeConfigFile() to read and write the *user* config - * to/from a Settings instance. - * - * @ingroup model - * @author Julien Bossart - * @author Philippe Bernery - */ -class ConfigImporter { -public: - - /** - * Import configuration from previous version of WengoPhone - * If this method fails it makes a LOG_FATAL() -> assertion failed - */ - static void importConfig(); - -private: - static Settings readConfigFile(); - static void writeConfigFile(Settings&); - - /** - * Detects the last available version. - * - * @return the version of the last found version. - */ - static unsigned detectLastVersion(); - - static std::string getWengoClassicConfigPath(); - - static bool classicVcardParser(const std::string & vcardFile, void * structVcard); - - static bool classicXMLParser(const std::string & xmlFile, void * structVcard); - - static std::string classicVCardToString(void * structVcard); - - static void * getLastWengoUser(const std::string & configUserFile, int version); - - static bool importConfigFromV1toV3(); - - static bool importConfigFromV2toV3(); - - static bool importConfigFromV3toV4(); - - static bool importConfigFromV4toV5(); - - static bool importConfigFromV5toV6(); - - static bool importConfigFromV6toV7(); - - static bool importConfigFromV7toV8(); - - static bool importContactsFromV1toV3(const std::string & fromDir, UserProfile & userProfile); - - static void addContactDetails(Contact & contact, void * structVcard); - -}; - -#endif //OWCONFIGIMPORTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConfigManager.h" - -#include "Config.h" - -#include - -using namespace std; - -Mutex ConfigManager::_mutex; - -ConfigManager::ConfigManager() { - _currentConfig = new Config("default"); -} - -ConfigManager::~ConfigManager() { - OWSAFE_DELETE(_currentConfig); -} - -ConfigManager & ConfigManager::getInstance() { - Mutex::ScopedLock scopedLock(_mutex); - - static ConfigManager configManager; - return configManager; -} - -Config & ConfigManager::getCurrentConfig() const { - return *_currentConfig; -} - -void ConfigManager::resetCurrentConfig() { - Mutex::ScopedLock scopedLock(_mutex); - - OWSAFE_DELETE(_currentConfig); - _currentConfig = new Config("default"); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConfigManagerFileStorage.h" - -#include -#include -#include - -#include -#include - -static const std::string CONFIG_FILENAME = "config.xml"; - -ConfigManagerFileStorage::ConfigManagerFileStorage(ConfigManager & configManager) -: _configManager(configManager) { -} - -ConfigManagerFileStorage::~ConfigManagerFileStorage() { -} - -bool ConfigManagerFileStorage::loadSystemConfig(const std::string& systemDir) { - std::string systemData; - - FileReader systemFile(systemDir + CONFIG_FILENAME); - if (!systemFile.open()) { - LOG_ERROR("Could not open " + systemDir + CONFIG_FILENAME); - return false; - } - systemData = systemFile.read(); - ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); - return serializer.unserializeSystemSettings(systemData); -} - - -bool ConfigManagerFileStorage::loadUserConfig(const std::string& userDir) { - std::string userData; - FileReader userFile(userDir + CONFIG_FILENAME); - if (userFile.open()) { - userData = userFile.read(); - } - - ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); - return serializer.unserializeUserSettings(userData); -} - -bool ConfigManagerFileStorage::save() { - std::string userDir = _configManager.getCurrentConfig().getConfigDir(); - FileWriter file(userDir + CONFIG_FILENAME); - ConfigXMLSerializer serializer(_configManager.getCurrentConfig()); - - file.write(serializer.serialize()); - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.h qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerFileStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONFIGMANAGERFILESTORAGE_H -#define CONFIGMANAGERFILESTORAGE_H - -#include - -class ConfigManager; - -/** - * Storage class for ConfigManager. File implementation. - * - * @ingroup model - * @author Philippe Bernery - */ -class ConfigManagerFileStorage { -public: - - ConfigManagerFileStorage(ConfigManager & configManager); - - virtual ~ConfigManagerFileStorage(); - - bool loadSystemConfig(const std::string& systemDir); - - bool loadUserConfig(const std::string& userDir); - - bool save(); - -private: - ConfigManager& _configManager; -}; - -#endif //CONFIGMANAGERFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManager.h qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONFIGMANAGER_H -#define CONFIGMANAGER_H - -#include -#include - -#include - -class Config; - -/** - * Manages configuration profiles. - * - * This class contains every available Config. - * There is at least one Config named "default" - * - * @see Config - * @ingroup model - * @author Philippe Bernery - * @author Tanguy Krotoff - */ -class ConfigManager { -public: - - static ConfigManager & getInstance(); - - /** - * Gets the current config. - * - * @return a reference to the current config - */ - Config & getCurrentConfig() const; - - /** - * Reset the current config. (delete and new) - */ - void resetCurrentConfig(); - -private: - - ConfigManager(); - - ~ConfigManager(); - - Config * _currentConfig; - - static Mutex _mutex; -}; - -#endif //CONFIGMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerStorage.h qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigManagerStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigManagerStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONFIGMANAGERSTORAGE_H -#define CONFIGMANAGERSTORAGE_H - -#include - -class ConfigManager; - -/** - * Storage interface for ConfigManager. - * - * @ingroup model - * @author Philippe Bernery - */ -class ConfigManagerStorage : public Storage { -public: - - ConfigManagerStorage(ConfigManager & configManager) - : _configManager(configManager) { } - - virtual ~ConfigManagerStorage() { } - -protected: - - ConfigManager & _configManager; -}; - -#endif //CONFIGMANAGERSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConfigXMLSerializer.h" - -#include "Config.h" - -ConfigXMLSerializer::ConfigXMLSerializer(Config & config) -: CascadingSettingsXMLSerializer(config) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/ConfigXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/ConfigXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONFIGXMLSERIALIZER_H -#define CONFIGXMLSERIALIZER_H - -#include - -class Config; - -/** - * Serialize a Config object. - * FIXME: Just a stub now, should be removed - * - * @author Philippe Bernery - */ -class ConfigXMLSerializer : public CascadingSettingsXMLSerializer { -public: - ConfigXMLSerializer(Config & config); -}; - -#endif //CONFIGXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Countries.h qutecom-2.2+dfsg1/wengophone/src/model/config/Countries.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Countries.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/Countries.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ -/** - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef COUNTRIES_H -#define COUNTRIES_H - -/** - * A Country is the association of its ISO 3166-1 code - * + its english name - * + country calling code - * - * @see http://kropla.com/dialcode.htm - */ -struct Country { - - /** English country name. */ - std::string englishName; - - /** ISO 3166-1 code. */ - std::string iso3166Code; - - /** - * The country code is the national prefix to be used - * when dialing to that particular country from another country. - * Ex: +33 for France - */ - int nationalPrefix; -}; - -/** Number of countries available. */ -static const int COUNTRIES_SIZE = 250; - -/** - * Country list from ISO 3166-1. - * - * This list states the country names (official short names in English) in - * alphabetical order as given in ISO 3166-1 and the corresponding ISO - * 3166-1-alpha-2 code elements. The list is updated whenever a change to the - * official code list in ISO 3166-1 is effected by the ISO 3166/MA. It lists 240 - * official short names and code elements. One line of text contains one entry. - * - * @see http://www.iso.org/iso/en/prods-services/iso3166ma/02iso-3166-code-lists/index.html - * @author Tanguy Krotoff - */ -static const Country COUNTRIES[COUNTRIES_SIZE] = { - { "Afghanistan", "af", 93 }, - { "Albania", "al", 355 }, - { "Algeria", "dz", 213 }, - { "American Samoa", "as", 00 }, - { "Andorra", "ad", 376 }, - { "Angola", "ao", 244 }, - { "Anguilla", "ai", 00 }, - { "Antarctica", "aq", 672 }, - { "Antigua and Barbuda", "ag", 00 }, - { "Argentina", "ar", 00 }, - { "Armenia", "am", 00 }, - { "Aruba", "aw", 00 }, - { "Australia", "au", 00 }, - { "Austria", "at", 00 }, - { "Azerbaijan", "az", 00 }, - { "Bahamas", "bs", 00 }, - { "Bahrain", "bh", 00 }, - { "Bangladesh", "bd", 00 }, - { "Barbados", "bb", 00 }, - { "Belarus", "by", 00 }, - { "Belgium", "be", 00 }, - { "Belize", "bz", 00 }, - { "Benin", "bj", 00 }, - { "Bermuda", "bm", 00 }, - { "Bhutan", "bt", 00 }, - { "Bolivia", "bo", 00 }, - { "Bosnia and Herzegovina", "ba", 00 }, - { "Botswana", "bw", 00 }, - { "Bouvet Island", "bv", 00 }, - { "Brazil", "br", 00 }, - { "Brunei", "bn", 00 }, - { "Bulgaria", "bg", 00 }, - { "Burkina Faso", "bf", 00 }, - { "Burundi", "bi", 00 }, - { "Cambodia", "kh", 00 }, - { "Cameroon", "cm", 00 }, - { "Canada", "ca", 00 }, - { "Cape Verde", "cv", 00 }, - { "Cayman Islands", "ky", 00 }, - { "Central African Republic", "cf", 00 }, - { "Chad", "td", 00 }, - { "Chile", "cl", 00 }, - { "China", "cn", 00 }, - { "Christmas Island", "cx", 00 }, - { "Cocos (keeling) islands", "cc", 00 }, - { "Colombia", "co", 00 }, - { "Comoros", "km", 00 }, - { "Congo", "cg", 00 }, - { "Congo, The Democratic Republic of the", "cd", 00 }, - { "Cook Islands", "ck", 00 }, - { "Costa Rica", "cr", 00 }, - { "Cote d'Ivoire", "ci", 00 }, - { "Croatia", "hr", 00 }, - { "Cuba", "cu", 00 }, - { "Cyprus", "cy", 00 }, - { "Czech Republic", "cz", 00 }, - { "Denmark", "dk", 00 }, - { "Djibouti", "dj", 00 }, - { "Dominica", "dm", 00 }, - { "Dominican Republic", "do", 00 }, - { "Ecuador", "ec", 00 }, - { "Egypt", "eg", 00 }, - { "El Salvador", "sv", 00 }, - { "Equatorial Guinea", "gq", 00 }, - { "Eritrea", "er", 00 }, - { "Estonia", "ee", 00 }, - { "Ethiopia", "et", 00 }, - { "Falkland Islands (Malvinas)", "fk", 00 }, - { "Faroe Islands", "fo", 00 }, - { "Fiji", "fj", 00 }, - { "Finland", "fi", 00 }, - { "France", "fr", 33 }, - { "French Guiana", "gf", 00 }, - { "French Polynesia", "pf", 00 }, - { "French Southern Territories", "tf", 00 }, - { "Gabon", "ga", 00 }, - { "Gambia", "gm", 00 }, - { "Georgia", "ge", 00 }, - { "Germany", "de", 00 }, - { "Ghana", "gh", 00 }, - { "Gibraltar", "gi", 00 }, - { "Greece", "gr", 00 }, - { "Greenland", "gl", 00 }, - { "Grenada", "gd", 00 }, - { "Guadeloupe", "gp", 00 }, - { "Guam", "gu", 00 }, - { "Guatemala", "gt", 00 }, - { "Guernsey", " gg", 00 }, - { "Guinea", "gn", 00 }, - { "Guinea-Bissau", "gw", 00 }, - { "Guyana", "gy", 00 }, - { "Haiti", "ht", 00 }, - { "Heard Island and McDonald Islands", "hm", 00 }, - { "Holy See (Vatican City State)", "va", 00 }, - { "Honduras", "hn", 00 }, - { "Hong Kong", "hk", 00 }, - { "Hungary", "hu", 00 }, - { "Iceland", "is", 00 }, - { "India", "in", 00 }, - { "Indonesia", "id", 00 }, - { "Iran", "ir", 00 }, - { "Iraq", "iq", 00 }, - { "Ireland", "ie", 00 }, - { "Isle of Man", "im", 00 }, - { "Israel", "il", 00 }, - { "Italy", "it", 00 }, - { "Jamaica", "jm", 00 }, - { "Japan", "jp", 00 }, - { "Jersey", "je", 00 }, - { "jordan", "jo", 00 }, - { "Kazakhstan", "kz", 00 }, - { "Kenya", "ke", 00 }, - { "Kiribati", "ki", 00 }, - { "Korea, Democratic people's Republic of", "kp", 00 }, - { "Korea, Republic of", "kr", 00 }, - { "Kuwait", "kw", 00 }, - { "Kyrgyzstan", "kg", 00 }, - { "Lao people's Democratic Republic", "la", 00 }, - { "Latvia", "lv", 00 }, - { "Lebanon", "lb", 00 }, - { "Lesotho", "ls", 00 }, - { "Liberia", "lr", 00 }, - { "Libya", "ly", 00 }, - { "Liechtenstein", "li", 00 }, - { "Lithuania", "lt", 00 }, - { "Luxembourg", "lu", 00 }, - { "Macao", "mo", 00 }, - { "Macedonia", "mk", 00 }, - { "Madagascar", "mg", 00 }, - { "Malawi", "mw", 00 }, - { "Malaysia", "my", 00 }, - { "Maldives", "mv", 00 }, - { "Mali", "ml", 00 }, - { "Malta", "mt", 00 }, - { "Marshall Islands", "mh", 00 }, - { "Martinique", "mq", 00 }, - { "Mauritania", "mr", 00 }, - { "Mauritius", "mu", 00 }, - { "Mayotte", "yt", 00 }, - { "Mexico", "mx", 00 }, - { "Micronesia, Federated States of", "fm", 00 }, - { "Moldova", "md", 00 }, - { "Monaco", "mc", 00 }, - { "Mongolia", "mn", 00 }, - { "Montserrat", "ms", 00 }, - { "Morocco", "ma", 00 }, - { "Mozambique", "mz", 00 }, - { "Myanmar", "mm", 00 }, - { "Namibia", "na", 00 }, - { "Nauru", "nr", 00 }, - { "Nepal", "np", 00 }, - { "Netherlands", "nl", 00 }, - { "Netherlands Antilles", "an", 00 }, - { "New Caledonia", "nc", 00 }, - { "New Zealand", "nz", 00 }, - { "Nicaragua", "ni", 00 }, - { "Niger", "ne", 00 }, - { "Nigeria", "ng", 00 }, - { "Niue", "nu", 00 }, - { "Norfolk Island", "nf", 00 }, - { "Northern Mariana Islands", "mp", 00 }, - { "Norway", "no", 00 }, - { "Oman", "om", 00 }, - { "Pakistan", "pk", 00 }, - { "Palau", "pw", 00 }, - { "Palestinian Territory", "ps", 00 }, - { "Panama", "pa", 00 }, - { "Papua New Guinea", "pg", 00 }, - { "Paraguay", "py", 00 }, - { "Peru", "pe", 00 }, - { "Philippines", "ph", 00 }, - { "Pitcairn", "pn", 00 }, - { "Poland", "pl", 00 }, - { "Portugal", "pt", 00 }, - { "Puerto rico", "pr", 00 }, - { "Qatar", "qa", 00 }, - { "Reunion", "re", 00 }, - { "Romania", "ro", 00 }, - { "Russia", "ru", 00 }, - { "Rwanda", "rw", 00 }, - { "Saint Helena", "sh", 00 }, - { "Saint Kitts and Nevis", "kn", 00 }, - { "Saint Lucia", "lc", 00 }, - { "Saint Pierre and Miquelon", "pm", 00 }, - { "Saint Vincent and the Grenadines", "vc", 00 }, - { "Samoa", "ws", 00 }, - { "San marino", "sm", 00 }, - { "Sao Tome and Principe", "st", 00 }, - { "Saudi arabia", "sa", 00 }, - { "Senegal", "sn", 00 }, - { "Serbia and Montenegro", "cs", 00 }, - { "Seychelles", "sc", 00 }, - { "Sierra leone", "sl", 00 }, - { "Singapore", "sg", 00 }, - { "Slovakia", "sk", 00 }, - { "Slovenia", "si", 00 }, - { "Solomon islands", "sb", 00 }, - { "Somalia", "so", 00 }, - { "South Africa", "za", 00 }, - { "South Georgia and the South Sandwich Islands", "gs", 00 }, - { "Spain", "es", 00 }, - { "Sri Lanka", "lk", 00 }, - { "Sudan", "sd", 00 }, - { "Suriname", "sr", 00 }, - { "Svalbard and Jan Mayen", "sj", 00 }, - { "Swaziland", "sz", 00 }, - { "Sweden", "se", 00 }, - { "Switzerland", "ch", 00 }, - { "Syria", "sy", 00 }, - { "Taiwan", "tw", 00 }, - { "Tajikistan", "tj", 00 }, - { "Tanzania", "tz", 00 }, - { "Thailand", "th", 00 }, - { "Timor-Leste", "tl", 00 }, - { "Togo", "tg", 00 }, - { "Tokelau", "tk", 00 }, - { "Tonga", "to", 00 }, - { "Trinidad and Tobago", "tt", 00 }, - { "Tunisia", "tn", 00 }, - { "Turkey", "tr", 00 }, - { "Turkmenistan", "tm", 00 }, - { "Turks and Caicos Islands", "tc", 00 }, - { "Tuvalu", "tv", 00 }, - { "Uganda", "ug", 00 }, - { "Ukraine", "ua", 00 }, - { "United Arab Emirates", "ae", 00 }, - { "United Kingdom", "gb", 00 }, - { "United States", "us", 00 }, - { "Uruguay", "uy", 00 }, - { "Uzbekistan", "uz", 00 }, - { "Vanuatu", "vu", 00 }, - { "Venezuela", "ve", 00 }, - { "Vietnam", "vn", 00 }, - { "Virgin Islands, British", "vg", 00 }, - { "Virgin Islands, U.S.", "vi", 00 }, - { "Wallis and Futuna", "wf", 00 }, - { "Western Sahara", "eh", 00 }, - { "Yemen", "ye", 00 }, - { "Zambia", "zm", 00 }, - { "Zimbabwe", "zw", 00 } -}; - -#endif //COUNTRIES_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/EnumToolBarMode.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/EnumToolBarMode.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/EnumToolBarMode.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/EnumToolBarMode.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "EnumToolBarMode.h" - -// util -#include - -static TwoWayMap _twoWayMap; - -static void init() { - if (!_twoWayMap.empty()) { - return; - } - - _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeHidden, "Hidden"); - _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeIconsOnly, "IconsOnly"); - _twoWayMap.addEntry(EnumToolBarMode::ToolBarModeTextUnderIcons, "TextUnderIcons"); -} - -std::string EnumToolBarMode::toString(EnumToolBarMode::ToolBarMode mode) { - init(); - return _twoWayMap.toSecond(mode); -} - -EnumToolBarMode::ToolBarMode EnumToolBarMode::toToolBarMode(const std::string & txt) { - init(); - return _twoWayMap.toFirst(txt); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/EnumToolBarMode.h qutecom-2.2+dfsg1/wengophone/src/model/config/EnumToolBarMode.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/EnumToolBarMode.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/EnumToolBarMode.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef ENUMTOOLBARMODE_H -#define ENUMTOOLBARMODE_H - -#include - -class EnumToolBarMode { -public: - - enum ToolBarMode { - ToolBarModeHidden, - ToolBarModeIconsOnly, - ToolBarModeTextUnderIcons - }; - - static std::string toString(ToolBarMode mode); - - static ToolBarMode toToolBarMode(const std::string & string); -}; - -#endif // ENUMTOOLBARMODE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/LanguageList.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/LanguageList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/LanguageList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/LanguageList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "LanguageList.h" - -#include "Languages.h" - -#include - -std::string LanguageList::getLanguageName(const std::string & iso639Code) { - std::string languageName; - for (int i = 0; i < LANGUAGES_SIZE; i++) { - Language lang = LANGUAGES[i]; - if (lang.iso639Code == iso639Code) { - languageName = lang.name; - break; - } - } - return languageName; -} - -std::string LanguageList::getEnglishLanguageName(const std::string & iso639Code) { - std::string englishLanguageName; - for (int i = 0; i < LANGUAGES_SIZE; i++) { - Language lang = LANGUAGES[i]; - if (lang.iso639Code == iso639Code) { - englishLanguageName = lang.englishName; - break; - } - } - return englishLanguageName; -} - -std::string LanguageList::getISO639Code(const std::string & languageName) { - std::string iso639Code; - for (int i = 0; i < LANGUAGES_SIZE; i++) { - Language lang = LANGUAGES[i]; - if (lang.name == languageName) { - iso639Code = lang.iso639Code; - break; - } - } - return iso639Code; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/LanguageList.h qutecom-2.2+dfsg1/wengophone/src/model/config/LanguageList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/LanguageList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/LanguageList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef LANGUAGELIST_H -#define LANGUAGELIST_H - -#include -#include -#include - -/** - * Parses Languages.h - * - * @see Languages.h - * @author Tanguy Krotoff - */ -class LanguageList : NonCopyable { -public: - - /** - * Gets the language name given its ISO 639 Alpha-2 code. - * - * Warning! - * returns a UTF-8 encoded string. - * For Qt4, check QString::fromUtf8() - *
-	 * std::string tmp;
-	 * QString tmpUtf8 = QString::fromUtf8(tmp.c_str());
-	 * 
- * - * @param iso639Code ISO 639 Alpha-2 code (e.g en, fr ect...) - * @return language name (e.g franais, english...) or empty string - */ - static std::string getLanguageName(const std::string & iso639Code); - - /** - * Gets the ISO 639 Alpha-2 code from the language name. - * - * Warning! - * Takes an UTF-8 encoded string. - * For Qt4, check QString::toUtf8() - *
-	 * Qstring tmp;
-	 * std::string tmpUtf8 = tmp.toUtf8().constData();
-	 * 
- * - * @param languageName language name (e.g franais, english...) - * @return ISO 639 Alpha-2 code (e.g en, fr ect...) or empty string - */ - static std::string getISO639Code(const std::string & languageName); - - /** - * Gets the english language name given its ISO 639 Alpha-2 code. - * - * @param iso639Code ISO 639 Alpha-2 code (e.g en, fr ect...) - * @return english language name (e.g french, english...) or empty string - */ - static std::string getEnglishLanguageName(const std::string & iso639Code); - -private: -}; - -#endif //LANGUAGELIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Languages.h qutecom-2.2+dfsg1/wengophone/src/model/config/Languages.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/Languages.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/Languages.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,287 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef LANGUAGES_H -#define LANGUAGES_H - -/** A language is the association of its ISO 639 code + its name + its english name. */ -struct Language { - - /** ISO 639 Alpha-2 code. */ - std::string iso639Code; - - /** Original language name. */ - std::string name; - - /** English language name. */ - std::string englishName; -}; - - -/** - * List of all languages. - * - * Taken from wikipedia. - * - * Format: - * ISO 639 Alpha-2 code - * language name - * language name in english - * - * Originaly created on 31th october 2005 from revision 1.53 of Names.php - * - * @see http://cvs.sourceforge.net/viewcvs.py/wikipedia/phase3/languages/Names.php - * @see http://en.wikipedia.org/w/index.php?title=ISO_639 - * @author Tanguy Krotoff - */ -static const Language LANGUAGES[] = { - { "aa", "Afar", "Afar" }, - { "ab", "Аҧсуа", "Abkhazian" }, - { "af", "Afrikaans", "Afrikaans" }, - { "ak", "Akana", "Akan" }, - { "als", "Alemannisch", "Alemannic" }, - { "am", "አማርኛ", "Amharic" }, - { "an", "Aragonés", "Aragonese" }, - { "ang", "Anglo Saxon", "Old English" }, - { "ar", "العربية", "Arabic" }, - { "arc", "ܕܥܒܪܸܝܛ", "Aramaic" }, - { "as", "অসমীয়া", "Assamese" }, - { "ast", "Asturianu", "Asturian" }, - { "av", "Авар", "Avar" }, - { "ay", "Aymar", "Aymara" }, - { "az", "Azərbaycan", "Azerbaijani" }, - { "ba", "Башҡорт", "Bashkir" }, - { "bat_SMG", "Žemaitėška", "Samogitian" }, - { "be", "Беларуская", "Byelarussian" }, - { "bg", "Български", "Bulgarian" }, - { "bh", "भोजपुरी", "Bihara" }, - { "bi", "Bislama", "Bislama" }, - { "bm", "Bamanankan", "Bambara" }, - { "bn", "বাংলা", "Bengali" }, - { "bo", "བོད་ཡིག", "Tibetan" }, - { "br", "Brezhoneg", "Breton" }, - { "bs", "Bosanski", "Bosnian" }, - { "bug", "ᨅᨔ ᨕᨘᨁᨗ", "Buginese" }, - { "ca", "Català", "Catalan" }, - { "ce", "Нохчийн", "Chechen" }, - { "ceb", "Cebuano", "Cebuano" }, - { "ch", "Chamoru", "Chamorro" }, - { "cho", "Choctaw", "Choctaw" }, - { "chr", "ᏣᎳᎩ", "Cherokee" }, - { "chy", "Tsetsêhestâhese", "Cheyenne" }, - { "co", "Corsu", "Corsican" }, - { "cr", "Nehiyaw", "Cree" }, - { "cs", "Česky", "Czech" }, - { "csb", "Kaszëbsczi", "Cassubian" }, - { "cv", "Чӑваш", "Chuvash" }, - { "cy", "Cymraeg", "Welsh" }, - { "da", "Dansk", "Danish" }, - { "de", "Deutsch", "German" }, - { "dk", "Dansk", "Unused code currently redirecting to Danish da is correct for the language" }, - { "dv", "ދިވެހިބަސް", "Dhivehi" }, - { "dz", "ཇོང་ཁ", "Bhutani" }, - { "ee", "Ɛʋɛ", "Ewe" }, - { "el", "Ελληνικά", "Greek" }, - { "en", "English", "English" }, - { "en_GB", "English (British)", "English (British)" }, - { "eo", "Esperanto", "Esperanto" }, - { "es", "Español", "Spanish" }, - { "et", "Eesti", "Estonian" }, - { "eu", "Euskara", "Basque" }, - { "fa", "فارسی", "Persian" }, - { "ff", "Fulfulde", "Fulah" }, - { "fi", "Suomi", "Finnish" }, - { "fiu-vro", "Võro", "Võro" }, - { "fj", "Na Vosa Vakaviti", "Fijian" }, - { "fo", "Føroyskt", "Faroese" }, - { "fr", "Français", "French" }, - { "frp", "Arpitan", "Franco-Provençal/Arpitan" }, - { "fur", "Furlan", "Friulian" }, - { "fy", "Frysk", "Frisian" }, - { "ga", "Gaeilge", "Irish" }, - { "gd", "Gàidhlig", "Scots Gaelic" }, - { "gl", "Galego", "Gallegan" }, - { "gn", "Avañe - ẽ", "Guarani" }, - { "got", "ЌӰЌ࠰ЍŰЌڰЍİЌډ", "Gothic" }, - { "gsw", "Alemannisch", "Alemannic" }, - { "gu", "ગુજરાતી", "Gujarati" }, - { "gv", "Gaelg", "Manx" }, - { "ha", "هَوُسَ", "Hausa" }, - { "haw", "Hawai`i", "Hawaiian" }, - { "he", "עברית", "Hebrew" }, - { "hi", "हिन्दी", "Hindi" }, - { "ho", "Hiri Motu", "Hiri Motu" }, - { "hr", "Hrvatski", "Croatian" }, - { "ht", "Krèyol ayisyen", "Haitian common" }, - { "hu", "Magyar", "Hungarian" }, - { "hy", "Հայերեն", "Armenian" }, - { "hz", "Otsiherero", "Herero" }, - { "ia", "Interlingua", "Interlingua (IALA)" }, - { "id", "Bahasa Indonesia", "Indonesian" }, - { "ie", "Interlingue", "Interlingue (Occidental)" }, - { "ig", "Igbo", "Igbo" }, - { "ii", "ꆇꉙ", "Sichuan Yi" }, - { "ik", "Iñupiak", "Inupiak" }, - { "ilo", "Ilokano", "Ilokano" }, - { "io", "Ido", "Ido" }, - { "is", "Íslenska", "Icelandic" }, - { "it", "Italiano", "Italian" }, - { "iu", "ᐃᓄᒃᑎᑐᑦ", "Inuktitut" }, - { "ja", "日本語", "Japanese" }, - { "jbo", "Lojban", "Lojban" }, - { "jv", "Basa Jawa", "Javanese" }, - { "ka", "ქართული", "Georgian" }, - { "kg", "Kongo", "Kongo (FIXME!) should probaly be KiKongo or KiKoongo" }, - { "ki", "Gĩkũyũ", "Kikuyu correctness not guaranteed" }, - { "kj", "Kuanyama", "Kuanyama (FIXME!)" }, - { "kk", "қазақша", "Kazakh" }, - { "kl", "Kalaallisut", "Greenlandic" }, - { "km", "ភាសាខ្មែរ", "Cambodian" }, - { "kn", "ಕನ್ನಡ", "Kannada" }, - { "ko", "한국어", "Korean" }, - { "kr", "Kanuri", "Kanuri (FIXME!)" }, - { "ks", "कश्मीरी - (كشميري)", "Kashmiri" }, - { "ku", "Kurdî", "Kurdish" }, - { "kv", "Коми ", "Komi cyrillic is common script but also written in latin script" }, - { "kw", "Kernewek", "Cornish" }, - { "ky", "Kırgızca", "Kirghiz" }, - { "la", "Latina", "Latin" }, - { "lad", "Ladino", "Ladino" }, - { "lb", "Lëtzebuergesch", "Luxemburguish" }, - { "lg", "Luganda", "Ganda" }, - { "li", "Limburgs", "Limburgian" }, - { "lmo", "Lumbaart", "Lombard" }, - { "ln", "Lingala", "Lingala" }, - { "lo", "ລາວ", "Laotian" }, - { "lt", "Lietuvių", "Lithuanian" }, - { "lv", "Latviešu", "Latvian" }, - { "mg", "Malagasy", "Malagasy" }, - { "mh", "Ebon", "Marshallese" }, - { "mi", "Māori", "Maori" }, - { "minnan", "Bân-lâm-gú", "Min-nan (also zh-min-nan)" }, - { "mk", "Македонски", "Macedonian" }, - { "ml", "മലയാളം", "Malayalam" }, - { "mn", "Монгол", "Mongoloian" }, - { "mo", "Молдовеняскэ", "Moldovan" }, - { "mr", "मराठी", "Marathi" }, - { "ms", "Bahasa Melayu", "Malay" }, - { "mt", "bil-Malti", "Maltese" }, - { "mus", "Muscogee", "Creek should possibly be Muskogee" }, - { "my", "Myanmasa", "Burmese" }, - { "na", "Ekakairũ Naoero", "Nauruan" }, - { "nah", "Nahuatl", "Nahuatl en:Wikipedia writes Nahuatlahtolli while another form is Náhuatl" }, - { "nap", "Nnapulitano", "Neapolitan" }, - { "nb", "Norsk (bokmål)", "Norwegian (Bokmal)" }, - { "nds", "Plattdüütsch", "Low German or Low Saxon" }, - { "ne", "नेपाली", "Nepali" }, - { "ng", "Oshiwambo", "Ndonga" }, - { "nl", "Nederlands", "Dutch" }, - { "nn", "Norsk (nynorsk)", "Norwegian (Nynorsk)" }, - { "no", "Norsk (bokmål)", "Norwegian" }, - { "non", "Norrǿna", "Old Norse" }, - { "nv", "Diné bizaad", "Navajo" }, - { "ny", "Chi-Chewa", "Chichewa" }, - { "oc", "Occitan", "Occitan" }, - { "om", "Oromoo ", "Oromo" }, - { "or", "ଓଡ଼ିଆ", "Oriya" }, - { "os", "Иронау", "Ossetic" }, - { "pa", "ਪੰਜਾਬੀ", "Punjabi" }, - { "pam", "Pampangan", "Pampanga" }, - { "pih", "Norfuk - Pitkern", "Norfuk - Pitcairn - Norfolk" }, - { "pi", "पािऴ", "Pali" }, - { "pl", "Polski", "Polish" }, - { "ps", "پښتو", "Pashto" }, - { "pt", "Português", "Portuguese" }, - { "pt_BR", "Português do Brasil", "Brazilian Portuguese" }, - { "qu", "Runa Simi", "Quechua" }, - { "rm", "Rumantsch", "Raeto-Romance" }, - { "rn", "Kirundi", "Kirundi" }, - { "ro", "Română", "Romanian" }, - { "roa_RUP", "Armâneashti", "Aromanian" }, - { "ru", "Русский", "Russian" }, - { "rw", "Kinyarwanda", "Kinyarwanda should possibly be Kinyarwandi" }, - { "sa", "संस्कृत", "Sanskrit" }, - { "sc", "Sardu", "Sardinian" }, - { "scn", "Sicilianu", "Sicilian" }, - { "sco", "Scots", "Scots" }, - { "sd", "सिनधि", "Sindhi" }, - { "se", "Sámegiella", "Northern Sami" }, - { "sg", "Sängö", "Sango possible alternative is Sangho" }, - { "sh", "Srpskohrvatski - Српскохрватски", "Serbocroatian" }, - { "si", "සිංහල", "Sinhalese" }, - { "simple", "Simple English", "Simple English" }, - { "sk", "Slovenčina", "Slovak" }, - { "sl", "Slovenščina", "Slovenian" }, - { "sm", "Gagana Samoa", "Samoan" }, - { "sn", "chiShona", "Shona" }, - { "so", "Soomaaliga", "Somali" }, - { "sq", "Shqip", "Albanian" }, - { "sr", "Српски - Srpski", "Serbian" }, - { "ss", "SiSwati", "Swati" }, - { "st", "seSotho", "Southern Sotho" }, - { "su", "Basa Sunda", "Sundanese" }, - { "sv", "Svenska", "Swedish" }, - { "sw", "Kiswahili", "Swahili" }, - { "ta", "தமிழ்", "Tamil" }, - { "te", "తెలుగు", "Telugu" }, - { "tg", "Тоҷикӣ", "Tajik" }, - { "th", "ไทย", "Thai" }, - { "ti", "ትግርኛ", "Tigrinya" }, - { "tk", "تركمن - Туркмен", "Turkmen" }, - { "tl", "Tagalog", "Tagalog (Filipino)" }, - { "tn", "Setswana", "Setswana" }, - { "to", "faka-Tonga", "Tonga (Tonga Islands)" }, - { "tokipona", "Toki Pona", "Toki Pona" }, - { "tp", "Toki Pona", "Toki Pona - non-standard language code" }, - { "tpi", "Tok Pisin", "Tok Pisin" }, - { "tr", "Türkçe", "Turkish" }, - { "ts", "Xitsonga", "Tsonga" }, - { "tt", "Tatarça", "Tatar" }, - { "tum", "chiTumbuka", "Tumbuka" }, - { "tw", "Twi", "Twi (FIXME!)" }, - { "ty", "Reo Mā`ohi", "Tahitian" }, - { "udm", "Удмурт", "Udmurt" }, - { "ug", "Oyghurque", "Uyghur" }, - { "uk", "Українська", "Ukrainian" }, - { "ur", "اردو", "Urdu" }, - { "uz", "Ўзбек", "Uzbek" }, - { "ve", "Tshivenda", "Venda" }, - { "vec", "Vèneto", "Venetian" }, - { "vi", "Tiếng Việt", "Vietnamese" }, - { "vo", "Volapük", "Volapük" }, - { "wa", "Walon", "Walloon" }, - { "war", "Samar-Leyte Visayan", "Waray-Waray" }, - { "wo", "Wollof", "Wolof" }, - { "xh", "isiXhosa", "Xhosan" }, - { "yi", "ייִדיש", "Yiddish" }, - { "yo", "Yorùbá", "Yoruba" }, - { "za", "(Cuengh)", "Zhuang" }, - { "zh", "中文", "(Zhōng Wén) - Chinese" }, - { "zh_CFR", "閩南語", "Chinese Min-nan alias (site is at minnan)" }, - { "zh_CN", "中文(简体)", "Chinese Simplified" }, - { "zh_HK", "中文(繁體)", "ChineseTraditional (Hong Kong)" }, - { "zh_MIN_NAN", "Bân-lâm-gú", "Chinese Min-nan" }, - { "zh_SG", "中文(简体)", "Chinese Simplified (Singapore)" }, - { "zh_TW", "中文(繁體)", "Chinese Traditional" }, - { "zu", "isiZulu", "Zulu" } -}; - -static const int LANGUAGES_SIZE = sizeof (LANGUAGES) / sizeof (Language); - -#endif //LANGUAGES_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/StartupSettingListener.cpp qutecom-2.2+dfsg1/wengophone/src/model/config/StartupSettingListener.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/StartupSettingListener.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/StartupSettingListener.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "StartupSettingListener.h" - -#include "Config.h" -#include "ConfigManager.h" - -#include - -#include -#include -#include - -#include - -StartupSettingListener::StartupSettingListener(const std::string & executableName) { - std::string appPath; - -#if defined(OS_WINDOWS) - //add the -b option to start in background mode - appPath = Path::getApplicationDirPath() + executableName + " -b"; -#elif defined (OS_MACOSX) - (void)executableName; // Avoid gcc warning - appPath = Path::getApplicationBundlePath(); -#else - (void)executableName; // Avoid gcc warning -#endif - _startup = new Startup("QuteCom", appPath); - _startup->setStartup(ConfigManager::getInstance().getCurrentConfig().getGeneralAutoStart()); - - ConfigManager::getInstance().getCurrentConfig().valueChangedEvent += - boost::bind(&StartupSettingListener::startupSettingChanged, this, _1); -} - -StartupSettingListener::~StartupSettingListener() { - if (_startup) { - delete _startup; - } -} - -void StartupSettingListener::startupSettingChanged(const std::string & key) const { - if (key == Config::GENERAL_AUTOSTART_KEY) { - _startup->setStartup(ConfigManager::getInstance().getCurrentConfig().getGeneralAutoStart()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/StartupSettingListener.h qutecom-2.2+dfsg1/wengophone/src/model/config/StartupSettingListener.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/config/StartupSettingListener.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/config/StartupSettingListener.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef STARTUPSETTINGLISTENER_H -#define STARTUPSETTINGLISTENER_H - -#include -#include - -#include - -class Startup; -class Settings; - -class StartupSettingListener : NonCopyable, public Trackable { -public: - - StartupSettingListener(const std::string & executableName); - - ~StartupSettingListener(); - - void startupSettingChanged(const std::string & key) const; - -private: - - Startup * _startup; -}; - -#endif //STARTUPSETTINGLISTENER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/Connect.cpp qutecom-2.2+dfsg1/wengophone/src/model/connect/Connect.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/Connect.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/connect/Connect.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,189 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Connect.h" - -#include -#include - -#include -#include -#include - -#include -#include - -const unsigned RECONNECT_INTERVAL = 200000; -const unsigned RECONNECT_RETRY = 10; - -Connect::Connect(IMAccount account, UserProfile & userProfile) - : _imAccount(account), - _userProfile(userProfile) { - - _imConnect = IMWrapperFactory::getFactory().createIMConnect(account); - - _imConnect->connectedEvent += - boost::bind(&Connect::connectedEventHandler, this, _1); - _imConnect->disconnectedEvent += - boost::bind(&Connect::disconnectedEventHandler, this, _1, _2, _3); - _imConnect->connectionProgressEvent += - boost::bind(&Connect::connectionProgressEventHandler, this, _1, _2, _3, _4); - - _timerIsRunning = false; - _timer.timeoutEvent += - boost::bind(&Connect::timeoutEventHandler, this, _1); - - _isConnecting = false; - _isDisconnecting = false; -} - -Connect::~Connect() { - _timer.stop(); - delete _imConnect; -} - -void Connect::connect() { - _connectionRetryCount = 0; - _isDisconnecting = false; - - autoConnect(); -} - -void Connect::disconnect(bool force) { - _timer.stop(); - _timerIsRunning = false; - _isConnecting = false; - - // Gets up-to-date IMAccount - IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(_imAccount.getUUID()); - - if (imAccount) { - if (imAccount->isConnected()) { - _isDisconnecting = true; - if ((_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) - || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { - _userProfile.disconnectSipAccounts(force); - } - _imConnect->disconnect(force); - } - OWSAFE_DELETE(imAccount); - } -} - -void Connect::timeoutEventHandler(Timer & sender) { - Mutex::ScopedLock lock(_mutex); - bool stopToggle = false; - if (_isConnecting) { - return; - } - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(_imAccount.getUUID()); - if (imAccount) { - // Check if the IMAccount is not already connected. This can happen - // if a timeout event is emitted during a connection process. - if (!imAccount->isConnected()) { - if (_connectionRetryCount < RECONNECT_RETRY && NetworkObserver::getInstance().isConnected()) { - ++_connectionRetryCount; - _isConnecting = true; - if ((_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) - || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolSIP) - || (_imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo)) { - if (!_userProfile.connectSipAccounts()) { - LOG_ERROR("Couldn't connect sip accounts"); - stopToggle = true; - } - } else { - _imConnect->connect(); - } - } else { - if (_connectionRetryCount >= RECONNECT_RETRY) { - LOG_ERROR("Too many attempts to connect"); - } else { - LOG_ERROR("Not connected"); - } - stopToggle = true; - } - - if (stopToggle) { - // Either the user as cancelled the connection - // nor the retry count has been exceeded - _timer.stop(); - _timerIsRunning = false; - _connectionRetryCount = 0; - } - } - OWSAFE_DELETE(imAccount); - } -} - -void Connect::autoConnect() { - if (!_timerIsRunning && (_connectionRetryCount < RECONNECT_RETRY)) { - _timerIsRunning = true; - _timer.start(0, RECONNECT_INTERVAL, 0); - } -} - -void Connect::connectedEventHandler(IMConnect & sender) { - connectedEvent(sender); - - _timer.stop(); - _timerIsRunning = false; - _isConnecting = false; - _connectionRetryCount = 0; -} - -void Connect::disconnectedEventHandler(IMConnect & sender, bool connectionError, std::string reason) { - disconnectedEvent(sender, connectionError, reason); - - _isConnecting = false; - - if (_isDisconnecting) { - return; - } - - // We check if this is a user disconnection or a error disconnection. - // If so, we try to reconnect - if (connectionError) { - autoConnect(); - } else { - _timer.stop(); - _timerIsRunning = false; - _connectionRetryCount = 0; - } -} - -void Connect::connectionProgressEventHandler(IMConnect & sender, - int currentStep, int totalSteps, std::string infoMessage) { - - connectionProgressEvent(sender, currentStep, totalSteps, infoMessage); -} - -void Connect::unregisterAllEvents() { - _imConnect->connectedEvent -= - boost::bind(&Connect::connectedEventHandler, this, _1); - _imConnect->disconnectedEvent -= - boost::bind(&Connect::disconnectedEventHandler, this, _1, _2, _3); - _imConnect->connectionProgressEvent -= - boost::bind(&Connect::connectionProgressEventHandler, this, _1, _2, _3, _4); - - _timer.timeoutEvent -= - boost::bind(&Connect::timeoutEventHandler, this, _1); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/Connect.h qutecom-2.2+dfsg1/wengophone/src/model/connect/Connect.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/Connect.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/connect/Connect.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONNECT_H -#define CONNECT_H - -#include - -#include -#include - -#include -#include -#include - -class UserProfile; - -/** - * Wrapper for Instant Messaging connection. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class Connect : NonCopyable, public Trackable { -public: - - /** - * @see IMConnect::connectedEvent - */ - Event connectedEvent; - - /** - * @see IMConnect::disconnectedEvent - */ - Event disconnectedEvent; - - /** - * @see IMConnect::connectionProgressEvent - */ - Event connectionProgressEvent; - - Connect(IMAccount account, UserProfile & userProfile); - - virtual ~Connect(); - - void connect(); - - void disconnect(bool force = false); - - IMAccount getIMAccount() const { - return _imAccount; - } - - /** - * Tells Connect to unregister to all registered Events. - */ - void unregisterAllEvents(); - -protected: - - /** - * Used disconnectedEventHandler to launch reconnection - * without resetting _connectionRetryCount to 0. - */ - void autoConnect(); - - /** - * @see IMConnect::connectedEvent - */ - void connectedEventHandler(IMConnect & sender); - - /** - * @see IMConnect::disconnectedEvent - */ - void disconnectedEventHandler(IMConnect & sender, - bool connectionError, std::string reason); - - /** - * @see IMConnect::connectionProgressEvent - */ - void connectionProgressEventHandler(IMConnect & sender, - int currentStep, int totalSteps, std::string infoMessage); - - void timeoutEventHandler(Timer & sender); - - bool _timerIsRunning; - - bool _isConnecting; - - bool _isDisconnecting; - - /** Count how many time we retry to connect. */ - unsigned _connectionRetryCount; - - IMAccount _imAccount; - - IMConnect * _imConnect; - - UserProfile & _userProfile; - - Mutex _mutex; - - Timer _timer; -}; - -#endif //CONNECT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/ConnectHandler.cpp qutecom-2.2+dfsg1/wengophone/src/model/connect/ConnectHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/ConnectHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/connect/ConnectHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,251 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConnectHandler.h" - -#include -#include -#include -#include - -#include - -#include -#include -#include - -ConnectHandler::ConnectHandler(UserProfile * userProfile) - : _userProfile(userProfile) { - - _userProfile->getIMAccountManager().imAccountRemovedEvent += - boost::bind(&ConnectHandler::imAccountRemovedEventHandler, this, _1, _2); - - NetworkObserver::getInstance().connectionIsDownEvent += - boost::bind(&ConnectHandler::connectionIsDownEventHandler, this, _1); - - NetworkObserver::getInstance().connectionIsUpEvent += - boost::bind(&ConnectHandler::connectionIsUpEventHandler, this, _1); - - _freeze = false; -} - -ConnectHandler::~ConnectHandler() { - for (ConnectMap::const_iterator it = _connectMap.begin(); - it != _connectMap.end(); - ++it) { - delete (*it).second; - } -} - -void ConnectHandler::connect(const std::string & imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - Connect * connect = NULL; - IMAccount * imAccount = - _userProfile->getIMAccountManager().getIMAccount(imAccountId); - - if (imAccount) { - ConnectMap::iterator it = _connectMap.find(imAccountId); - if (it == _connectMap.end()) { - connect = new Connect(*imAccount, *_userProfile); - - connect->connectedEvent += - boost::bind(&ConnectHandler::connectedEventHandler, this, _1); - connect->disconnectedEvent += - boost::bind(&ConnectHandler::disconnectedEventHandler, this, _1, _2, _3); - connect->connectionProgressEvent += - boost::bind(&ConnectHandler::connectionProgressEventHandler, this, _1, _2, _3, _4); - - _connectMap.insert(std::pair(imAccountId, connect)); - } else { - connect = (*it).second; - } - - if (!(imAccount->isConnected())) { - connect->connect(); - } - - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount " + imAccountId + " not found!"); - } -} - -void ConnectHandler::disconnect(const std::string & imAccountId) { - ConnectMap::iterator it = _connectMap.find(imAccountId); - if (it != _connectMap.end()) { - (*it).second->disconnect(); - } -} - -void ConnectHandler::connectedEventHandler(IMConnect & sender) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&ConnectHandler::connectedEventHandlerThreadSafe, this, _1), sender.getIMAccountId()); - - WengoPhone::getInstance().postEvent(event); -} - -void ConnectHandler::connectedEventHandlerThreadSafe(std::string imAccountId) { - if (_userProfile && !_freeze) { - IMAccount * imAccount = - _userProfile->getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - imAccount->setConnected(true); - _userProfile->updateIMAccount(*imAccount); - OWSAFE_DELETE(imAccount); - connectedEvent(*this, imAccountId); - } - } -} - -void ConnectHandler::disconnectedEventHandler(IMConnect & sender, bool connectionError, std::string reason) { -/* - typedef ThreadEvent3 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&ConnectHandler::disconnectedEventHandlerThreadSafe, this, _1, _2, _3), &sender.getIMAccount(), connectionError, reason); - - _modelThread.postEvent(event); - FIXME: crashes when trying to change UserProfile -*/ - disconnectedEventHandlerThreadSafe(sender.getIMAccountId(), connectionError, reason); -} - -void ConnectHandler::disconnectedEventHandlerThreadSafe(std::string imAccountId, bool connectionError, std::string reason) { - if (_userProfile) { - IMAccount * imAccount = - _userProfile->getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - imAccount->setConnected(false); - _userProfile->updateIMAccount(*imAccount); - OWSAFE_DELETE(imAccount); - disconnectedEvent(*this, imAccountId, connectionError, reason); - } - } -} - -void ConnectHandler::connectionProgressEventHandler(IMConnect & sender, - int currentStep, int totalSteps, std::string infoMessage) { - - connectionProgressEventHandlerThreadSafe(sender.getIMAccountId(), currentStep, totalSteps, infoMessage); -} - -void ConnectHandler::connectionProgressEventHandlerThreadSafe(std::string imAccountId, - int currentStep, int totalSteps, std::string infoMessage) { - - connectionProgressEvent(*this, imAccountId, currentStep, totalSteps, infoMessage); -} - -void ConnectHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - ConnectMap::iterator it = _connectMap.find(imAccountId); - - if (it != _connectMap.end()) { - delete (*it).second; - _connectMap.erase(it); - } else { - LOG_DEBUG("No Connect constructed for IMAccount " + imAccountId); - } -} - -void ConnectHandler::connectionIsUpEventHandler(NetworkObserver & sender) { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&ConnectHandler::connectionIsUpEventHandlerThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void ConnectHandler::connectionIsUpEventHandlerThreadSafe() { - RecursiveMutex::ScopedLock lock(_mutex); - - for (ConnectMap::const_iterator it = _connectMap.begin(); - it != _connectMap.end(); - ++it) { - - IMAccount * imAccount = - _userProfile->getIMAccountManager().getIMAccount((*it).first); - if (imAccount) { - if (!imAccount->isConnected()) { - (*it).second->connect(); - } - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount " + (*it).first + " not found!"); - } - } -} - -void ConnectHandler::connectionIsDownEventHandler(NetworkObserver & sender) { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&ConnectHandler::connectionIsDownEventHandlerThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void ConnectHandler::connectionIsDownEventHandlerThreadSafe() { - RecursiveMutex::ScopedLock lock(_mutex); - - for (ConnectMap::const_iterator it = _connectMap.begin(); - it != _connectMap.end(); - ++it) { - - IMAccount * imAccount = - _userProfile->getIMAccountManager().getIMAccount((*it).first); - if (imAccount) { - if (imAccount->isConnected()) { - (*it).second->disconnect(true); - } - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount " + (*it).first + " not found!"); - } - } -} - -void ConnectHandler::userProfileIsLoggingOff() { - // hack to avoid crashes when logging off while an IMAccount is connecting - _freeze = true; -} - -void ConnectHandler::unregisterAllEvents() { - _userProfile->getIMAccountManager().imAccountRemovedEvent -= - boost::bind(&ConnectHandler::imAccountRemovedEventHandler, this, _1, _2); - - NetworkObserver::getInstance().connectionIsDownEvent -= - boost::bind(&ConnectHandler::connectionIsDownEventHandler, this, _1); - - NetworkObserver::getInstance().connectionIsUpEvent -= - boost::bind(&ConnectHandler::connectionIsUpEventHandler, this, _1); - - for (ConnectMap::const_iterator it = _connectMap.begin(); - it != _connectMap.end(); - ++it) { - (*it).second->unregisterAllEvents(); - - (*it).second->connectedEvent -= - boost::bind(&ConnectHandler::connectedEventHandler, this, _1); - (*it).second->disconnectedEvent -= - boost::bind(&ConnectHandler::disconnectedEventHandler, this, _1, _2, _3); - (*it).second->connectionProgressEvent -= - boost::bind(&ConnectHandler::connectionProgressEventHandler, this, _1, _2, _3, _4); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/ConnectHandler.h qutecom-2.2+dfsg1/wengophone/src/model/connect/ConnectHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/connect/ConnectHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/connect/ConnectHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONNECTHANDLER_H -#define OWCONNECTHANDLER_H - -#include - -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include - -class Connect; -class IMAccountManager; -class NetworkObserver; -class UserProfile; -class WengoPhone; - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ConnectHandler : NonCopyable, public Trackable { -public: - - /** - * @see IMConnect::connectedEvent - */ - Event connectedEvent; - - /** - * @see IMConnect::disconnectedEvent - */ - Event disconnectedEvent; - - /** - * @see IMConnect::connectionProgressEvent - */ - Event connectionProgressEvent; - - ConnectHandler(UserProfile * userProfile); - - ~ConnectHandler(); - - void connect(const std::string & imAccountId); - - void disconnect(const std::string & imAccountId); - - void userProfileIsLoggingOff(); - - /** - * Tells ConnectHandler to unregister to all registered Events. - */ - void unregisterAllEvents(); - -private: - - /** - * @see IMAccountManager::imAccountRemovedEvent - */ - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMConnect::connectedEvent - */ - void connectedEventHandler(IMConnect & sender); - - /** - * Here we must change thread because are sent from Gaim or PhApi Thread. - * @see connectedEventHandler - */ - void connectedEventHandlerThreadSafe(std::string imAccountId); - - /** - * @see IMConnect::disconnectedEvent - */ - void disconnectedEventHandler(IMConnect & sender, - bool connectionError, std::string reason); - - /** - * Here we must change thread because are sent from Gaim or PhApi Thread. - * @see disconnectedEventHandler - */ - void disconnectedEventHandlerThreadSafe(std::string imAccountId, - bool connectionError, std::string reason); - - /** - * @see IMConnect::connectionProgressEvent - */ - void connectionProgressEventHandler(IMConnect & sender, - int currentStep, int totalSteps, std::string infoMessage); - - /** - * @see IMConnect::connectionProgressEvent - */ - void connectionProgressEventHandlerThreadSafe(std::string imAccountId, - int currentStep, int totalSteps, std::string infoMessage); - - /** - * @see NetworkObserver::connectionIsUpEvent - */ - void connectionIsUpEventHandler(NetworkObserver & sender); - void connectionIsUpEventHandlerThreadSafe(); - - /** - * Handle NetworkObserver::connectionIsDownEvent - */ - void connectionIsDownEventHandler(NetworkObserver & sender); - void connectionIsDownEventHandlerThreadSafe(); - - /** - * Associative table between an IMAccount id and a Connect. - */ - typedef std::map ConnectMap; - ConnectMap _connectMap; - - RecursiveMutex _mutex; - - UserProfile * _userProfile; - - bool _freeze; -}; - -#endif //OWCONNECTHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/Contact.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/Contact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/Contact.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/Contact.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,313 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Contact.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -using namespace std; - -Contact::Contact(UserProfile & userProfile) - : ContactProfile(), - _userProfile(userProfile), - _contactList(userProfile.getContactList()) { - - profileChangedEvent += boost::bind(&Contact::profileChangedEventHandler, this, _1); -} - -Contact::Contact(const Contact & contact) - : ContactProfile(contact), - Trackable(), - _userProfile(contact._userProfile), - _contactList(contact._contactList) { - - copy(contact); -} - -Contact::~Contact() { -} - -Contact & Contact::operator=(const Contact & contact) { - if (&contact != this) { - copy(contact); - } - - contactChangedEvent(*this); - - return *this; -} - -Contact & Contact::operator=(const ContactProfile & contactProfile) { - if (&contactProfile != this) { - copy(contactProfile); - } - - contactChangedEvent(*this); - - return *this; -} - -void Contact::copy(const Contact & contact) { - copy((const ContactProfile &)contact); -} - -void Contact::copy(const ContactProfile & contactProfile) { - _uuid = contactProfile._uuid; - profileChangedEvent += - boost::bind(&Contact::profileChangedEventHandler, this, _1); - - // Sets groups - //_contactList.lock(); - RecursiveMutex::ScopedLock lock(ContactList::_mutex); - - ContactGroup * newContactGroup = _contactList.getContactGroup(contactProfile.getGroupId()); - ContactGroup * oldContactGroup = _contactList.getContactGroup(getGroupId()); - - if (oldContactGroup && newContactGroup && (oldContactGroup->getUUID() != newContactGroup->getUUID())) { - _contactList.moveContactToGroup(newContactGroup->getName(), *this); - } else if (!oldContactGroup && newContactGroup) { - _contactList._addToContactGroup(newContactGroup->getName(), *this); - } - - //_contactList.unlock(); - //// - - Profile::copy(contactProfile); - _blocked = contactProfile._blocked; - _preferredIMContact = contactProfile._preferredIMContact; - _groupId = contactProfile._groupId; - _presenceState = contactProfile._presenceState; - - // Removes not present IMContacts - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end();) { - if (!contactProfile.hasIMContact(*it)) { - IMContactSet::const_iterator curIt = it++; - _contactList.removeIMContact(*this, *curIt); - } else { - it++; - } - } - //// - - // Adds present IMContacts - for (IMContactSet::const_iterator it = contactProfile._imContactSet.begin(); - it != contactProfile._imContactSet.end(); - ++it) { - if (!hasIMContact(*it)) { - _contactList.addIMContact(*this, *it); - } - } - //// -} - -bool Contact::operator==(const Contact & contact) const { - return (ContactProfile::operator == (contact)); -} - -void Contact::addIMContact(const IMContact & imContact) { - _contactList.addIMContact(*this, imContact); -} - -void Contact::removeIMContact(const IMContact & imContact) { - _contactList.removeIMContact(*this, imContact); -} - -void Contact::_addIMContact(const IMContact & imContact) { - pair result = _imContactSet.insert(imContact); - - if (result.second) { - IMContact & newIMContact = (IMContact &)(*result.first); - - newIMContact.imContactChangedEvent += - boost::bind(&Contact::imContactChangedEventHandler, this, _1); - - _userProfile.getPresenceHandler().subscribeToPresenceOf(*result.first); - contactChangedEvent(*this); - } -} - -void Contact::_removeIMContact(const IMContact & imContact) { - IMContactSet::iterator it = _imContactSet.find(imContact); - - if (it != _imContactSet.end()) { - _userProfile.getPresenceHandler().unsubscribeToPresenceOf(*it); - contactChangedEvent(*this); - _imContactSet.erase(it); - } -} - -bool Contact::checkAndSetIMContact(const IMContact & imContact) { - for (IMContactSet::iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if ((*it) == imContact) { - if ((*it).getIMAccountId().empty()) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - ((IMContact &)(*it)).setIMAccount(imAccount); - OWSAFE_DELETE(imAccount); - } - return true; - } - } - - return false; -} - -const IMContact * Contact::getFirstValidIMContact(const IMAccount & imAccount) const { - const IMContact * result = NULL; - - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if (((*it).getIMAccountId() == imAccount.getUUID()) - && (((*it).getPresenceState() != EnumPresenceState::PresenceStateUnknown) - || ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline))) { - result = &(*it); - break; - } - } - - return result; -} - -void Contact::imContactChangedEventHandler(IMContact & sender) { - updatePresenceState(); - contactChangedEvent(*this); -} - -void Contact::block() { - for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; it++) { - _userProfile.getPresenceHandler().blockContact(*it); - } - - _blocked = true; -} - -void Contact::unblock() { - for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; it++) { - _userProfile.getPresenceHandler().unblockContact(*it); - } - - _blocked = false; -} - -void Contact::profileChangedEventHandler(Profile & profile) { - contactChangedEvent(*this); -} - -void Contact::setIcon(const OWPicture & icon) { -} - -void Contact::merge(const Contact & contact) { - if (_firstName.empty()) { - _firstName = contact._firstName; - } - - if (_lastName.empty()) { - _lastName = contact._lastName; - } - - if (_sex == EnumSex::SexUnknown) { - _sex = contact._sex; - } - - //TODO: how can we detect that birthdate is not fulled - //_birthdate = contact._birthdate; - - if (_website.empty()) { - _website = contact._website; - } - - if (_company.empty()) { - _company= contact._company; - } - - if (_mobilePhone.empty()) { - _mobilePhone = contact._mobilePhone; - } - - if (_homePhone.empty()) { - _homePhone = contact._homePhone; - } - - if (_workPhone.empty()) { - _workPhone = contact._workPhone; - } - - if (_otherPhone.empty()) { - _otherPhone = contact._otherPhone; - } - - if (_fax.empty()) { - _fax = contact._fax; - } - - if (_personalEmail.empty()) { - _personalEmail = contact._personalEmail; - } - - if (_workEmail.empty()) { - _workEmail = contact._workEmail; - } - - if (_otherEmail.empty()) { - _otherEmail = contact._otherEmail; - } - - //TODO: how can we detect that streetAddress is not fulled - //_streetAddress = contact._streetAddress; - - if (_notes.empty()) { - _notes = contact._notes; - } - - if (!_preferredIMContact) { - _preferredIMContact = contact._preferredIMContact; - } - - for (IMContactSet::const_iterator it = contact._imContactSet.begin(); - it != contact._imContactSet.end(); ++it) { - if (!hasIMContact(*it)) { - _imContactSet.insert(*it); - } - } - - if (_groupId.empty()) { - _groupId = contact._groupId; - } - - contactChangedEvent(*this); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactGroup.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactGroup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactGroup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactGroup.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactGroup.h" - -#include "Contact.h" -#include "IMContactListHandler.h" - -#define LOGGER_COMPONENT "ContactList" -#include -#include - -ContactGroup::ContactGroup(const std::string & groupName) - : _groupName(groupName) { - _uuid = Uuid::generateString(); -} - -ContactGroup::ContactGroup(const ContactGroup & contactGroup) - : _groupName(contactGroup._groupName), - _contactList(contactGroup._contactList) { - - _uuid = contactGroup._uuid; -} - -void ContactGroup::addContact(Contact & contact) { - Mutex::ScopedLock lock(_mutex); - - _contactList.push_back(&contact); - contactAddedEvent(*this, contact); - LOG_DEBUG("Contact added to group " + _groupName); -} - -void ContactGroup::removeContact(Contact & contact) { - Mutex::ScopedLock lock(_mutex); - - for (ContactVector::iterator it = _contactList.begin(); - it != _contactList.end(); - ++it) { - if ((*(*it)) == contact) { - contactRemovedEvent(*this, *(*it)); - _contactList.erase(it); - break; - } - } -} - -Contact * ContactGroup::operator[](unsigned int i) const { - Mutex::ScopedLock lock(_mutex); - - if (i <= size()) { - return _contactList[i]; - } else { - return NULL; - } -} - -bool ContactGroup::operator==(const ContactGroup & contactGroup) const { - return (_groupName == contactGroup._groupName); -} - -bool ContactGroup::operator<(const ContactGroup & contactGroup) const { - return (_groupName < contactGroup._groupName); -} - -void ContactGroup::setName(const std::string & groupName) { - _groupName = groupName; - contactGroupModifiedEvent(*this); -} - -std::list ContactGroup::getMobilePhoneList() const { - std::list list; - for (ContactVector::const_iterator it = _contactList.begin(); - it != _contactList.end(); ++it) { - - std::string getMobilePhone = (*it)->getMobilePhone(); - if( getMobilePhone != "" ) { - list.push_front(getMobilePhone); - } - } - return list; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactGroup.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactGroup.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactGroup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactGroup.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTGROUP_H -#define CONTACTGROUP_H - -#include -#include - -#include -#include - -class Contact; -class ContactList; - -/** - * A group of contacts (i.e familly, friends ect...). - * - * Contains a list of Contact. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ - -extern template class std::list< std::string >; - -class ContactGroup { - friend class ContactList; -public: - - /** - * A ContactGroup has been modified/updated. - * - * @param sender ContactGroup modified/updated - */ - Event contactGroupModifiedEvent; - - /** - * A Contact has been added. - * - * @param sender this class - * @param contact Contact added - */ - Event contactAddedEvent; - - /** - * A Contact has been removed. - * - * @param sender this class - * @param contact Contact removed - */ - Event contactRemovedEvent; - - ContactGroup(const std::string & groupName); - - ContactGroup(const ContactGroup & contactGroup); - - std::string getName() const { - return _groupName; - } - - /** - * Permits to use ContactGroup as an array. - * - * @see List::operator[] - * @param i index inside the array - * @return the Contact that corresponds to the index i inside the ContactGroup or NULL - */ - Contact * operator[](unsigned i) const; - - /** - * @return the number of Contact in this ContactGroup - */ - unsigned size() const { - return _contactList.size(); - } - - /** - * @return a list containing all mobile phone number - */ - std::list getMobilePhoneList() const; - - /** - * Gets the UUID of this ContactGroup. - * - * @return the UUID of this ContactGroup - */ - std::string getUUID() const { - return _uuid; - } - - /** - * Compare two groups. - * - * @param contactGroup group to compare - * @return true if equal - */ - bool operator==(const ContactGroup & contactGroup) const; - - bool operator<(const ContactGroup & contactGroup) const; - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - /** - * Sets the name of the group. - * - * @param groupName the desired name - */ - void setName(const std::string & groupName); - - /** - * Add a Contact to the ContactGroup. - * - * Must only be called by ContactList - * - * @param contact the Contact to add - */ - void addContact(Contact & contact); - - /** - * Remove a Contact from the ContactGroup. - * - * Must only be called by ContactList - * - * @param contact the Contact to remove - */ - void removeContact(Contact & contact); - - /** Defines the vector of Contact. */ - typedef std::vector ContactVector; - - /** Name of the ContactGroup. */ - std::string _groupName; - - /** List of Contact associated with the ContactGroup. */ - ContactVector _contactList; - - /** The UUID of this ContactGroup. */ - std::string _uuid; - - mutable Mutex _mutex; -}; - -#endif //CONTACTGROUP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/Contact.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/Contact.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/Contact.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/Contact.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,190 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACT_H -#define OWCONTACT_H - -#include "ContactProfile.h" - -#include - -#include - -/** - * Contact inside an address book. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class Contact : public ContactProfile, public Trackable { - friend class ContactList; - friend class ContactXMLSerializer; - friend class ContactXMLSerializer1; -public: - - /** - * A Contact has been modified/updated. - * - * @param sender the Contact modified/updated - */ - Event contactChangedEvent; - - Contact(UserProfile & userProfile); - - Contact(const Contact & contact); - - Contact & operator=(const Contact & contact); - - Contact & operator=(const ContactProfile & contactProfile); - - ~Contact(); - - bool operator==(const Contact & contact) const; - - /** - * Set the preferred phone number (can also be a wengo id or a sip address). - * - * @param number the preferred phone number - */ - void setPreferredPhoneNumber(const std::string & number) { _preferredNumber = number; contactChangedEvent(*this); } - - /** - * Set the preferred IMContact to use. - * - * @param the imContact to set. The given reference must stay valid during - * the execution (this must be a reference to an IMContact of this Contact). - */ - void setPreferredIMContact(const IMContact & imContact) { _preferredIMContact = (IMContact *)&imContact; contactChangedEvent(*this); } - - /** - * Add an IMContact to the Contact. - * - * This method will send a request to ContactList that will send a request - * to the appropriated IMContactList. Then the ContactList will call - * _addIMContact that will actually add the IMContact. - * - * @param imContact IMContact to add - */ - void addIMContact(const IMContact & imContact); - - /** - * Remove an IMContact from the Contact. - * - * The process is the same as in addIMContact - * - * @param imContact IMContact to remove - */ - void removeIMContact(const IMContact & imContact); - - /** - * Check if an IMContact of the Contact is equivalent to the given - * IMContact. - * - * Equivalent IMContacts are of the same protocol. If an equivalent - * IMContact has been found and if it has no associated IMAccount, - * the IMAccount of the given IMContact is linked to the found - * IMContact. - * - * @param imContact the IMContact to check - * @return true if an equivalent IMContact has been found. - */ - bool checkAndSetIMContact(const IMContact & imContact); - - /** - * Gets the first valid IMContact given an IMAccount. - * - * A valid IMContact is a connected IMContact linked to the given IMAcccount. - * - * @return the found IMContact or NULL if not found. - */ - const IMContact * getFirstValidIMContact(const IMAccount & imAccount) const; - - /** - * Avoid this contact to see my presence. - */ - void block(); - - /** - * Authorize this contact to see my presence. - */ - void unblock(); - - UserProfile & getUserProfile() const { - return _userProfile; - } - -private: - - /** - * Copy a Contact. - */ - virtual void copy(const Contact & contact); - - /** - * Copy a ContactProfile. - */ - virtual void copy(const ContactProfile & contactProfile); - - /** - * @see Profile::profileChangedEvent - */ - void profileChangedEventHandler(Profile & profile); - - /** - * @see IMContact::imContactChangedEvent - */ - void imContactChangedEventHandler(IMContact & sender); - - /** - * Actually add an IMContact to this Contact. - * - * This method must be called only by ContactList - * - * The IMContact is copied internally - * - * @param the IMContact to add - */ - void _addIMContact(const IMContact & imContact); - - /** - * Actually remove an IMContact to this Contact. - * - * This method must be called only by ContactList - * - * @param the IMContact to remove - */ - void _removeIMContact(const IMContact & imContact); - - /** Can't be used on a Contact.*/ - void setIcon(const OWPicture & icon); - - /** - * Merges this Contact with another. - * - * @param contact the Contact to merge with - */ - void merge(const Contact & contact); - - UserProfile & _userProfile; - - ContactList & _contactList; -}; - -#endif //OWCONTACT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactList.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,581 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactList.h" - -#include "Contact.h" -#include "IMContactListHandler.h" - -#include -#include - -#include - -#define LOGGER_COMPONENT "ContactList" -#include -#include -#include - -using namespace std; - -RecursiveMutex ContactList::_mutex; - -ContactList::ContactList(UserProfile & userProfile) - : _userProfile(userProfile), - _imContactListHandler(userProfile.getIMContactListHandler()) { - - _imContactListHandler.newIMContactAddedEvent += - boost::bind(&ContactList::newIMContactAddedEventHandler, this, _1, _2, _3); - _imContactListHandler.imContactRemovedEvent += - boost::bind(&ContactList::imContactRemovedEventHandler, this, _1, _2, _3); - _imContactListHandler.newContactGroupAddedEvent += - boost::bind(&ContactList::newContactGroupAddedEventHandler, this, _1, _2); - _imContactListHandler.contactGroupRemovedEvent += - boost::bind(&ContactList::contactGroupRemovedEventHandler, this, _1, _2); - _imContactListHandler.imContactMovedEvent += - boost::bind(&ContactList::imContactMovedEventHandler, this, _1, _2, _3); - _userProfile.getPresenceHandler().presenceStateChangedEvent += - boost::bind(&ContactList::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - _userProfile.getPresenceHandler().contactIconChangedEvent += - boost::bind(&ContactList::contactIconChangedEventHandler, this, _1, _2, _3); - _userProfile.getIMAccountManager().imAccountRemovedEvent += - boost::bind(&ContactList::imAccountRemovedEventHandler, this, _1, _2); -} - -ContactList::~ContactList() { -} - -void ContactList::addContactGroup(const string & groupName) { - RecursiveMutex::ScopedLock lock(_mutex); - - _addContactGroup(groupName); - _imContactListHandler.addGroup(groupName); -} - -void ContactList::removeContactGroup(const string & groupId) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(groupId); - if (contactGroup) { - string groupName = contactGroup->getName(); - _removeContactGroup(groupId); - _imContactListHandler.removeGroup(groupName); - } -} - -void ContactList::renameContactGroup(const std::string & groupId, const std::string & name) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (!name.empty()) { - ContactGroup * contactGroup = getContactGroup(groupId); - - if (contactGroup) { - std::string oldName = contactGroup->getName(); - contactGroup->setName(name); - _imContactListHandler.changeGroupName(oldName, name); - contactGroupRenamedEvent(*this, *contactGroup); - } - } -} - -Contact & ContactList::createContact() { - RecursiveMutex::ScopedLock lock(_mutex); - - Contact contact(_userProfile); - Contacts::const_iterator it; - - _contacts.push_back(contact); - //Look for the added Contact - for (it = _contacts.begin(); - it != _contacts.end(); ++it) { - if (contact == (*it)) { - ((Contact &) *it).contactChangedEvent += - boost::bind(&ContactList::contactChangedEventHandler, this, _1); - contactAddedEvent(*this, (Contact &) *it); - break; - } - } - - return (Contact &) *it; -} - -void ContactList::removeContact(Contact & contact) { - RecursiveMutex::ScopedLock lock(_mutex); - - //Remove the Contact from its group - ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); - - if (contactGroup) { - contactGroup->removeContact(contact); - } - //// - - //Remove all IMContacts - - //We get a copy of the IMContactSet as it will modified while browsing it - IMContactSet imContactSet = contact.getIMContactSet(); - - for (IMContactSet::const_iterator it = imContactSet.begin(); - it != imContactSet.end(); ++it) { - removeIMContact(contact, *contact.getIMContact(*it)); - } - //// - - //Remove the Contact from the ContactList - for (Contacts::iterator it = _contacts.begin(); - it != _contacts.end(); ++it) { - if (contact == (*it)) { - contactRemovedEvent(*this, (Contact &)*it); - _contacts.erase(it); - break; - } - } - ///// -} - -void ContactList::addIMContact(Contact & contact, const IMContact & imContact) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); - - if (contactGroup) { - contact._addIMContact(imContact); - _imContactListHandler.addIMContact(contactGroup->getName(), imContact); - } -} - -void ContactList::removeIMContact(Contact & contact, const IMContact & imContact) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); - - if (contactGroup) { - _imContactListHandler.removeIMContact(contactGroup->getName(), imContact); - contact._removeIMContact(imContact); - } -} - -void ContactList::newIMContactAddedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & newIMContact) { - - RecursiveMutex::ScopedLock lock(_mutex); - - if (!groupName.empty()) { - LOG_DEBUG("adding a new IMContact in group " + groupName + ": " + newIMContact.getContactId()); - - //Find the Contact that owns the IMContact. Creating a new one if needed - Contact * contact = findContactThatOwns(newIMContact); - if (!contact) { - LOG_DEBUG("IMContact " + newIMContact.getContactId() + " not found. Adding a new Contact"); - contact = &(createContact()); - } - - if (!contact->hasIMContact(newIMContact)) { - _addToContactGroup(groupName, *contact); - contact->_addIMContact(newIMContact); - - LOG_DEBUG("IMContact added in group " + groupName + ": " + newIMContact.getContactId()); - } else { - //This event can be received although the IMContact is already present - //in the ContactList. We assume that this is a move event. - _moveContactToGroup(groupName, *contact); - } - } -} - -void ContactList::imContactRemovedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & imContact) { - - RecursiveMutex::ScopedLock lock(_mutex); - - LOG_DEBUG("IMContact removed from group " + groupName + ": " - + imContact.getContactId()); - - //Find the Contact that owns the IMContact. Creating a new one if needed - Contact * contact = findContactThatOwns(imContact); - if (!contact) { - contact = &(createContact()); - } - - contact->_removeIMContact(imContact); - - LOG_DEBUG("IMContact removed: " + imContact.getContactId()); -} - -void ContactList::newContactGroupAddedEventHandler(IMContactList & sender, const std::string & groupName) { - RecursiveMutex::ScopedLock lock(_mutex); - - _addContactGroup(groupName); -} - -void ContactList::contactGroupRemovedEventHandler(IMContactList & sender, const std::string & groupName) { - RecursiveMutex::ScopedLock lock(_mutex); - - _removeContactGroup(groupName); -} - -void ContactList::presenceStateChangedEventHandler(PresenceHandler & sender, - EnumPresenceState::PresenceState state, - const std::string & alias, const IMContact & imContact) { - - RecursiveMutex::ScopedLock lock(_mutex); - - //Find the Contact that owns the IMContact. Creating a new one if needed - Contact * contact = findContactThatOwns(imContact); - if (contact) { - //The PresenceState must not be changed if the PresenceState is - //UserDefined (used by PhApi to set the alias) - if (!contact->getIMContact(imContact)) { - LOG_FATAL("bad algorithm in findContactThatOwns or in getIMContact"); - } - - if (state != EnumPresenceState::PresenceStateUserDefined) { - contact->getIMContact(imContact)->setPresenceState(state); - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount->getProtocol() != EnumIMProtocol::IMProtocolWengo) { - contact->getIMContact(imContact)->setAlias(alias); - } - OWSAFE_DELETE(imAccount); - } else { - contact->getIMContact(imContact)->setPresenceState(EnumPresenceState::PresenceStateOnline); - contact->getIMContact(imContact)->setAlias(alias); - } - } -} - -void ContactList::imContactMovedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & imContact) { - - RecursiveMutex::ScopedLock lock(_mutex); - - Contact * contact = findContactThatOwns(imContact); - if (contact) { - //This method can be called when a Contact has changed, not only - //because the Contact has moved. - ContactGroup * contactGroup = getContactGroup(contact->getGroupId()); - if (contactGroup && (contactGroup->getName() == groupName)) { - contactChangedEvent(*this, *contact); - } else { - _moveContactToGroup(groupName, *contact); - } - } -} - -Contact * ContactList::findContactThatOwns(const IMContact & imContact) const { - RecursiveMutex::ScopedLock lock(_mutex); - - Contact * result = NULL; - - for (Contacts::const_iterator it = _contacts.begin(); - it != _contacts.end(); - ++it) { - Contact & contact = (Contact &)*it; - if (contact.checkAndSetIMContact(imContact)) { - result = &contact; - break; - } - } - - return result; -} - -Contact * ContactList::findContactThatOwns(const std::string & number) const { - RecursiveMutex::ScopedLock lock(_mutex); - - Contact * result = NULL; - IMAccountList imAccountListWengo = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolWengo); - if(imAccountListWengo.size() > 0) - { - IMContact imContact(*imAccountListWengo.begin(),number); - result = findContactThatOwns(imContact); - if(result) - return result; - } - - IMAccountList imAccountListSIP = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolSIP); - if(imAccountListSIP.size() > 0) - { - IMContact imContact(*imAccountListSIP.begin(),number); - result = findContactThatOwns(imContact); - if(result) - return result; - } - - IMAccountList imAccountListSIPSIMPLE = _userProfile.getIMAccountManager().getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolSIPSIMPLE); - if(imAccountListSIPSIMPLE.size() > 0) - { - IMContact imContact(*imAccountListSIPSIMPLE.begin(),number); - result = findContactThatOwns(imContact); - if(result) - return result; - } - - std::string cleanNumber = number; - size_t posFirstOf = cleanNumber.find_first_of("@"); - if (posFirstOf < cleanNumber.npos) - cleanNumber = cleanNumber.substr(0, posFirstOf); - - size_t posSip = cleanNumber.find_first_of(":") + 1; - if (posSip < cleanNumber.npos) - cleanNumber = cleanNumber.substr(posSip, cleanNumber.size()); - - - for (Contacts::const_iterator it = _contacts.begin();it != _contacts.end();++it) - { - Contact & contact = (Contact &)*it; - if (contact.getMobilePhone() == cleanNumber || contact.getHomePhone() == cleanNumber) - { - result = &contact; - break; - } - } - - return result; -} - -void ContactList::_addContactGroup(const std::string & groupName) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup contactGroup(groupName); - pair result = _contactGroupSet.insert(contactGroup); - - //If the ContactGroup was actually inserted (e.g did not exist) - if (result.second) { - contactGroupAddedEvent(*this, (ContactGroup &)*result.first); - LOG_DEBUG("new ContactGroup added " + groupName); - } else { - LOG_DEBUG("this ContactGroup already exists: " + groupName); - } -} - -void ContactList::_removeContactGroup(const std::string & groupId) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(groupId); - - if (contactGroup) { - //Deleting every Contacts in the ContactGroup - ContactGroup contactGroupCopy = *contactGroup; - for (ContactGroup::ContactVector::const_iterator vectIt = contactGroupCopy._contactList.begin(); - vectIt != contactGroupCopy._contactList.end(); - ++vectIt) { - removeContact(*(*vectIt)); - } - //// - - //Deleting the group - ContactGroupSet::iterator it = _contactGroupSet.find(contactGroupCopy); - contactGroupRemovedEvent(*this, contactGroupCopy); - _contactGroupSet.erase(it); - //// - LOG_DEBUG("ContactGroup removed. UUID: " + groupId); - } -} - -void ContactList::_addToContactGroup(const std::string & groupName, Contact & contact) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (!groupName.empty()) { - addContactGroup(groupName); - - ContactGroupSet::const_iterator it = _contactGroupSet.find(ContactGroup(groupName)); - if (it != _contactGroupSet.end()) { - LOG_DEBUG("adding a Contact to group " + groupName); - ((ContactGroup &)(*it)).addContact(contact); - contact.setGroupId((*it).getUUID()); - } else { - LOG_FATAL("the group " + groupName + " has not been added"); - } - } -} - -void ContactList::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - for (Contacts::const_iterator it = _contacts.begin(); - it != _contacts.end(); - ++it) { - for (IMContactSet::const_iterator imContactIt = ((Contact &) *it).getIMContactSet().begin(); - imContactIt != ((Contact &) *it).getIMContactSet().end(); - ++imContactIt) { - if (((*imContactIt).getIMAccountId()) == imAccountId) { - ((IMContact &)*imContactIt).setIMAccount(NULL); - } - } - } -} - -ContactGroup * ContactList::getContactGroup(const std::string & groupId) const { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * result = NULL; - - for (ContactGroupSet::const_iterator it = _contactGroupSet.begin(); - it != _contactGroupSet.end(); - ++it) { - if ((*it).getUUID() == groupId) { - result = &(ContactGroup &)(*it); - break; - } - } - - return result; -} - -void ContactList::contactIconChangedEventHandler(PresenceHandler & sender, const IMContact & imContact, OWPicture icon) { - RecursiveMutex::ScopedLock lock(_mutex); - - Contact * contact = findContactThatOwns(imContact); - if (contact) { - contact->getIMContact(imContact)->setIcon(icon); - } else { - LOG_DEBUG("IMContact not found: " + imContact.getContactId()); - } -} - -void ContactList::mergeContacts(Contact & dst, Contact & src) { - RecursiveMutex::ScopedLock lock(_mutex); - - dst.merge(src); - - //Remove the source Contact without removing it from linked IMContactLists - //Remove the Contact from its group - ContactGroup * contactGroup = getContactGroup(src.getGroupId()); - if (contactGroup) { - contactGroup->removeContact(src); - } - //// - - for (Contacts::iterator it = _contacts.begin(); - it != _contacts.end(); ++it) { - if (src == (*it)) { - contactRemovedEvent(*this, (Contact &) *it); - _contacts.erase(it); - break; - } - } - //// -} - -void ContactList::_moveContactToGroup(const string & dst, Contact & contact) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); - std::string oldGroupName; - - if (contactGroup) { - oldGroupName = contactGroup->getName(); - } - - if (oldGroupName != dst) { - addContactGroup(dst); - - ContactGroupSet::iterator oldIt = _contactGroupSet.find(ContactGroup(oldGroupName)); - ContactGroupSet::iterator newIt = _contactGroupSet.find(ContactGroup(dst)); - - if ((newIt != _contactGroupSet.end()) - && (oldIt != _contactGroupSet.end())) { - ((ContactGroup &)(*oldIt)).removeContact(contact); - ((ContactGroup &)(*newIt)).addContact(contact); - - contact.setGroupId((*newIt).getUUID()); - contactMovedEvent(*this, (ContactGroup &) *newIt, (ContactGroup &) *oldIt, contact); - } - } -} - -void ContactList::moveContactToGroup(const string & dst, Contact & contact) { - RecursiveMutex::ScopedLock lock(_mutex); - - ContactGroup * contactGroup = getContactGroup(contact.getGroupId()); - std::string oldGroupName; - - if (contactGroup) { - oldGroupName = contactGroup->getName(); - } - - if (oldGroupName != dst) { - addContactGroup(dst); - - ContactGroupSet::iterator oldIt = _contactGroupSet.find(ContactGroup(oldGroupName)); - ContactGroupSet::iterator newIt = _contactGroupSet.find(ContactGroup(dst)); - - for (IMContactSet::const_iterator it = contact.getIMContactSet().begin(); - it != contact.getIMContactSet().end(); - ++it) { - _imContactListHandler.moveContactToGroup((*newIt).getName(), oldGroupName, (IMContact &)*it); - } - - if ((newIt != _contactGroupSet.end()) - && (oldIt != _contactGroupSet.end())) { - ((ContactGroup &)(*oldIt)).removeContact(contact); - ((ContactGroup &)(*newIt)).addContact(contact); - - contact.setGroupId((*newIt).getUUID()); - contactMovedEvent(*this, (ContactGroup &)*newIt, (ContactGroup &)*oldIt, contact); - } - } -} - -Contact * ContactList::getContact(const std::string & contactId) const { - RecursiveMutex::ScopedLock lock(_mutex); - - for (Contacts::const_iterator it = _contacts.begin(); - it != _contacts.end(); - ++it) { - if ((*it).getUUID() == contactId) { - return &(Contact &)(*it); - break; - } - } - - return NULL; -} - -void ContactList::contactChangedEventHandler(Contact & sender) { - RecursiveMutex::ScopedLock lock(_mutex); - - contactChangedEvent(*this, sender); -} - -//void ContactList::lock() { -// _mutex.lock(); -//} - -//void ContactList::unlock() { -// _mutex.unlock(); -//} - -std::string ContactList::getContactGroupIdFromName(const std::string & groupName) const { - RecursiveMutex::ScopedLock lock(_mutex); - - std::string result; - - for (ContactGroupSet::const_iterator it = _contactGroupSet.begin(); - it != _contactGroupSet.end(); it++) { - LOG_DEBUG("groupName: " + groupName + ", current group name: " + (*it).getName()); - if ((*it).getName() == groupName) { - result = (*it).getUUID(); - break; - } - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactListFileStorage1.h" - -#include "ContactListXMLSerializer1.h" -#include "ContactList.h" -#include "ContactGroup.h" -#include "Contact.h" - -#include -#include - -#include -using namespace std; - -static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; - -ContactListFileStorage1::ContactListFileStorage1(ContactList & contactList, IMAccountList & imAccountList) - : ContactListStorage(contactList), - _imAccountList(imAccountList) { -} - -ContactListFileStorage1::~ContactListFileStorage1() { -} - -bool ContactListFileStorage1::load(const std::string & url) { - FileReader file(url + CONTACTLIST_FILENAME); - if (file.open()) { - string data = file.read(); - - ContactListXMLSerializer1 serializer(_contactList, _imAccountList); - serializer.unserialize(data); - return true; - } - - return false; -} - -bool ContactListFileStorage1::save(const std::string & url) { - FileWriter file(url + CONTACTLIST_FILENAME); - ContactListXMLSerializer1 serializer(_contactList, _imAccountList); - - file.write(serializer.serialize()); - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage1.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTLISTFILESTORAGE1_H -#define OWCONTACTLISTFILESTORAGE1_H - -#include "ContactListStorage.h" - -class ContactList; -class IMAccountList; - -/** - * WARNING: the IMAccountHandler given in the constructor must be poupulated - * BEFORE using the 'load' method. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactListFileStorage1 : public ContactListStorage { -public: - - ContactListFileStorage1(ContactList & contactList, IMAccountList & _imAccountList); - - ~ContactListFileStorage1(); - - bool load(const std::string & url); - - bool save(const std::string & url); - -private: - - IMAccountList & _imAccountList; -}; - -#endif //OWCONTACTLISTFILESTORAGE1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactListFileStorage.h" - -#include "ContactListXMLSerializer.h" -#include "ContactList.h" -#include "ContactGroup.h" -#include "Contact.h" - -#include -#include - -#include -using namespace std; - -static const std::string CONTACTLIST_FILENAME = "contactlist.xml"; - -ContactListFileStorage::ContactListFileStorage(ContactList & contactList, IMAccountList & imAccountList) - : ContactListStorage(contactList), - _imAccountList(imAccountList) { -} - -ContactListFileStorage::~ContactListFileStorage() { -} - -bool ContactListFileStorage::load(const std::string & url) { - FileReader file(url + CONTACTLIST_FILENAME); - if (file.open()) { - string data = file.read(); - - ContactListXMLSerializer serializer(_contactList, _imAccountList); - serializer.unserialize(data); - return true; - } - - return false; -} - -bool ContactListFileStorage::save(const std::string & url) { - FileWriter file(url + CONTACTLIST_FILENAME); - ContactListXMLSerializer serializer(_contactList, _imAccountList); - - file.write(serializer.serialize()); - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListFileStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTLISTFILESTORAGE_H -#define CONTACTLISTFILESTORAGE_H - -#include "ContactListStorage.h" - -class ContactList; -class IMAccountList; - -/** - * WARNING: the IMAccountHandler given in the constructor must be poupulated - * BEFORE using the 'load' method. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactListFileStorage : public ContactListStorage { -public: - - ContactListFileStorage(ContactList & contactList, IMAccountList & _imAccountList); - - ~ContactListFileStorage(); - - bool load(const std::string & url); - - bool save(const std::string & url); - -private: - - IMAccountList & _imAccountList; -}; - -#endif //CONTACTLISTFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactList.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,394 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTLIST_H -#define OWCONTACTLIST_H - -#include "ContactGroup.h" - -#include - -#include - -#include -#include -#include - -#include -#include - -class Contact; -class IMAccount; -class IMAccountManager; -class IMContact; -class IMContactList; -class IMContactListHandler; -class IMPresence; -class PresenceHandler; -class StringList; -class UserProfile; - -/** - * Contact list. - * - * List of ContactGroup. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactList : public Trackable { - friend class Contact; - friend class ContactListXMLSerializer; - friend class ContactListXMLSerializer1; - friend class ContactXMLSerializer; - friend class ContactXMLSerializer1; -public: - - /** Set of ContactGroup. */ - typedef std::set ContactGroupSet; - - /** List of Contact. */ - typedef std::list Contacts; - - ContactList(UserProfile & userProfile); - - ~ContactList(); - - /** - * A ContactGroup has been added. - * - * @param sender this class - * @param contactGroup ContactGroup added - */ - Event contactGroupAddedEvent; - - /** - * A ContactGroup has been removed. - * - * @param sender this class - * @param contactGroup ContactGroup removed - */ - Event contactGroupRemovedEvent; - - /** - * A ContactGroup has been renamed. - * - * @param sender this class - * @param contactGroup ContactGroup renamed - */ - Event contactGroupRenamedEvent; - - /** - * A Contact has been added to a ContactGroup. - * - * @param sender this class - * @param contactGroup the ContactGroup where the Contact has been added to - * @param contact the added Contact - */ - Event contactAddedEvent; - - /** - * A Contact has been removed from a ContactGroup. - * - * @param sender this class - * @param contactGroup the ContactGroup where the Contact has been removed from - * @param contact the removed Contact - */ - Event contactRemovedEvent; - - /** - * @see contactProfilePresenceChangedEvent - * FIXME not finished yet, this is for notification/toaster - */ - Event contactPresenceChangedEvent; - - /** - * A Contact has moved. - * - * @param sender this class - * @param groupName the destinaton group - * @param contact the removed Contact - */ - Event contactMovedEvent; - - /** - * Emitted when a Contact has been changed. - * - * @param sender this class - * @param contact the changed Contact - */ - Event contactChangedEvent; - - /** - * Adds a ContactGroup. - * - * If a ContactGroup with the given name exists, no ContactGroup is created - * - * @param name name of the ContactGroup to add. - */ - void addContactGroup(const std::string & name); - - /** - * Removes a ContactGroup. - * - * If no ContactGroup with the given name exists, nothing happens - * - * @param groupId the UUID of the ContactGroup to remove. - */ - void removeContactGroup(const std::string & groupId); - - /** - * Renames a ContactGroup. - * - * @param groupId the UUID of the group to rename - * @param name the desired name - */ - void renameContactGroup(const std::string & groupId, const std::string & name); - - /** - * Creates and adds a Contact to the ContactList. - * - * @return a reference to the new Contact - */ - Contact & createContact(); - - /** - * Removes a Contact. - * - * @param the contact to remove - */ - void removeContact(Contact & contact); - - /** - * Merges two Contacts. - * - * Merging two Contact will result in a deletation of the source Contact - * after fulling the destination Contact with missing information that - * come from the source Contact. - * - * @param src the source Contact - * @param dst the destination Contact - */ - void mergeContacts(Contact & dst, Contact & src); - - /** - * Moves a Contact from to a group. - * - * @param contact the Contact to move - * @param dst the destination group - */ - void moveContactToGroup(const std::string & dst, Contact & contact); - - /** - * Gets a ContactGroup given its UUID. - * - * @param groupId the group UUID of the desired ContactGroup - * @return a pointer to the ContactGroup, NULL if not found - */ - ContactGroup * getContactGroup(const std::string & groupId) const; - - /** - * @return a copy of the set of ContactGroups. - */ - ContactGroupSet getContactGroupSet() const { - return ContactGroupSet(_contactGroupSet); - } - - /** - * Gets the list of Contacts. - * - * @return the list of Contacts. - */ - const Contacts & getContacts() const { - return _contacts; - } - - /** - * Finds the first Contact that owns an IMContact. - * - * @param imContact the IMContact to look for - * @return the Contact or NULL if not found - */ - Contact * findContactThatOwns(const IMContact & imContact) const; - - /** - * Finds the first Contact that owns an Number. - * - * @param number the number to look for - * @return the Contact or NULL if not found - */ - Contact * findContactThatOwns(const std::string & number) const; - - /** - * Gets the Contact of given UUID. - * - * @param contactId the contact UUID - * @return the Contact or NULL if no found - */ - Contact * getContact(const std::string & contactId) const; - - /** - * Gets the UUID of a ContactGroup from its name. - * - * @param groupName the name of the group to find - * @return the UUID of the group. An empty string if not found - */ - std::string getContactGroupIdFromName(const std::string & groupName) const; - - /** - * Locks the ContactList. - * - * A locked ContactList can't be modified. - * The ContactList must be unlocked by calling unlock. - * - * This method is used by the model and the control. - */ - //void lock(); - - /** - * Unlocks the ContactList. - * - * This method is used by the model and the control. - */ - //void unlock(); - - static RecursiveMutex _mutex; - -private: - - /** - * @see IMAccountManager::imAccountRemovedEvent - */ - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMContactListHandler::newIMContactAddedEvent - */ - void newIMContactAddedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & newIMContact); - - /** - * @see IMContactListHandler::imContactRemovedEvent - */ - void imContactRemovedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & imContact); - - /** - * @see IMContactListHandler::imContactMovedEvent - */ - void imContactMovedEventHandler(IMContactListHandler & sender, - const std::string & groupName, IMContact & imContact); - - /** - * @see IMContactListHandler::newContactGroupAddedEvent - */ - void newContactGroupAddedEventHandler(IMContactList & sender, - const std::string & groupName); - - /** - * @see IMContactListHandler::contactGroupRemovedEvent - */ - void contactGroupRemovedEventHandler(IMContactList & sender, - const std::string & groupName); - - /** - * @see PresenceHandler::presenceStateChangedEventHandler - */ - void presenceStateChangedEventHandler(PresenceHandler & sender, - EnumPresenceState::PresenceState state, - const std::string & alias, const IMContact & imContact); - - /** - * @see PresenceHandler::contactIconChangedEvent - */ - void contactIconChangedEventHandler(PresenceHandler & sender, - const IMContact & imContact, OWPicture icon); - - /** - * @see Contact::contactChangedEvent - */ - void contactChangedEventHandler(Contact & sender); - - /** - * Add an IMContact to a Contact. - * - * It sends an asynchronous command to IMContactListHandler. - * - * Must only be called by Contact - * - * @param contact the Contact that wants to add an IMContact - * @param imContact the IMContact to add - */ - void addIMContact(Contact & contact, const IMContact & imContact); - - /** - * Remove an IMContact from a Contact. - * - * It sends an asynchronous command to IMContactListHandler. - * - * Must only be called by Contact - * - * @param contact the Contact that wants to remove an IMContact - * @param imContact the IMContact to remove - */ - void removeIMContact(Contact & contact, const IMContact & imContact); - - /** - * Moves a Contact to a group without modifying IM lists. - */ - void _moveContactToGroup(const std::string & dst, Contact & contact); - - /** - * Actually add a ContactGroup. - * - * @param groupName the group name - */ - void _addContactGroup(const std::string & groupName); - - /** - * Actually remove a ContactGroup. - * - * @param groupId the group UUID - */ - void _removeContactGroup(const std::string & groupId); - - /** - * Actually add the Contact to a ContactGroup. - * - * @param contact the Contact - * @param groupName the ContactGroup - */ - void _addToContactGroup(const std::string & groupName, Contact & contact); - - /** Set of ContactGroup. */ - ContactGroupSet _contactGroupSet; - - /** Vector of Contact. */ - Contacts _contacts; - - UserProfile & _userProfile; - - IMContactListHandler & _imContactListHandler; - - -}; - -#endif //OWCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactListRPCStorage.h" - -#include "ContactList.h" - -ContactListRPCStorage::ContactListRPCStorage(ContactList & contactList) - : ContactListStorage(contactList) { -} - -ContactListRPCStorage::~ContactListRPCStorage() { -} - -bool ContactListRPCStorage::load(const std::string & url) { - return false; -} - -bool ContactListRPCStorage::save(const std::string & url) { - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListRPCStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTLISTRPCSTORAGE_H -#define CONTACTLISTRPCSTORAGE_H - -#include "ContactListStorage.h" - -class ContactList; - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactListRPCStorage : public ContactListStorage { -public: - - ContactListRPCStorage(ContactList & contactList); - - ~ContactListRPCStorage(); - - bool load(const std::string & url); - - bool save(const std::string & url); -}; - -#endif //CONTACTLISTRPCSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListStorage.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTLISTSTORAGE_H -#define CONTACTLISTSTORAGE_H - -#include - -class ContactList; - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactListStorage : public Storage { -public: - - ContactListStorage(ContactList & contactList) - : _contactList(contactList) { } - - virtual ~ContactListStorage() { } - -protected: - - ContactList & _contactList; -}; - -#endif //CONTACTLISTSTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactListXMLSerializer1.h" - -#include "ContactXMLSerializer1.h" -#include "ContactList.h" -#include "Contact.h" - -#include - -using namespace std; - -ContactListXMLSerializer1::ContactListXMLSerializer1(ContactList & contactList, IMAccountList & imAccountList) - : _contactList(contactList), - _imAccountList(imAccountList) { -} - -string ContactListXMLSerializer1::serialize() { - string result; - - //_contactList.lock(); - RecursiveMutex::ScopedLock lock(ContactList::_mutex); - ContactList::Contacts contacts = _contactList.getContacts(); - - result += "\n"; - - for (ContactList::Contacts::const_iterator it = contacts.begin(); - it != contacts.end(); - ++it) { - ContactXMLSerializer1 serializer((Contact &)(*it), _contactList, _imAccountList); - result += serializer.serialize(); - } - - result += "\n"; - - //_contactList.unlock(); - - return result; -} - -bool ContactListXMLSerializer1::unserialize(const std::string & data) { - TiXmlDocument doc; - bool result = true; - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlNode * contactlist = docHandle.FirstChild("contactlist").Node(); - - if (contactlist) { - //Retrieving Contacts - TiXmlNode * lastChild = NULL; - while (result && (lastChild = contactlist->IterateChildren("wgcard", lastChild))) { - string nodeData; - nodeData << *lastChild; - ContactXMLSerializer1 serializer(_contactList.createContact(), - _contactList, _imAccountList); - result = serializer.unserialize(nodeData); - } - //// - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer1.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTLISTXMLSERIALIZER1_H -#define OWCONTACTLISTXMLSERIALIZER1_H - -#include - -#include - -class ContactList; -class IMAccountList; - -/** - * 1st version of ContactListXMLSerializer1. Uses ContactXMLSerializer1. - * - * @author Philippe Bernery - */ -class ContactListXMLSerializer1 : public Serializable { -public: - - ContactListXMLSerializer1(ContactList & contactList, IMAccountList & _imAccountList); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - ContactList & _contactList; - - IMAccountList & _imAccountList; - -}; - -#endif //OWCONTACTLISTXMLSERIALIZER1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactListXMLSerializer.h" - -#include "ContactXMLSerializer.h" -#include "ContactList.h" -#include "Contact.h" - -#include - -using namespace std; - -ContactListXMLSerializer::ContactListXMLSerializer(ContactList & contactList, IMAccountList & imAccountList) - : _contactList(contactList), - _imAccountList(imAccountList) { -} - -string ContactListXMLSerializer::serialize() { - string result; - - //_contactList.lock(); - RecursiveMutex::ScopedLock lock(ContactList::_mutex); - ContactList::Contacts contacts = _contactList.getContacts(); - - result += "\n"; - - for (ContactList::Contacts::const_iterator it = contacts.begin(); - it != contacts.end(); - ++it) { - ContactXMLSerializer serializer((Contact &)(*it), _contactList, _imAccountList); - result += serializer.serialize(); - } - - result += "\n"; - - //_contactList.unlock(); - - return result; -} - -bool ContactListXMLSerializer::unserialize(const std::string & data) { - TiXmlDocument doc; - bool result = true; - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlNode * contactlist = docHandle.FirstChild("contactlist").Node(); - - if (contactlist) { - //Retrieving Contacts - TiXmlNode * lastChild = NULL; - while (result && (lastChild = contactlist->IterateChildren("wgcard", lastChild))) { - string nodeData; - nodeData << *lastChild; - ContactXMLSerializer serializer(_contactList.createContact(), - _contactList, _imAccountList); - result = serializer.unserialize(nodeData); - } - //// - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactListXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTLISTXMLSERIALIZER_H -#define CONTACTLISTXMLSERIALIZER_H - -#include - -#include - -class ContactList; -class IMAccountList; - -/** - * Serialize a Contact object. - * - * @author Philippe Bernery - */ -class ContactListXMLSerializer : public Serializable { -public: - - ContactListXMLSerializer(ContactList & contactList, IMAccountList & _imAccountList); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - ContactList & _contactList; - - IMAccountList & _imAccountList; - -}; - -#endif //CONTACTLISTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateAway.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateAway::execute(ContactProfile & contact) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateAway.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEAWAY_H -#define CONTACTPRESENCESTATEAWAY_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceStateAway : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateAway; - } -}; - -#endif //CONTACTPRESENCESTATEAWAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceState.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceState.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceState.h" - -#include -#include - -#include - -#include - -ContactPresenceState::ContactPresenceState() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateDoNotDisturb.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateDoNotDisturb::execute(ContactProfile & contact) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateDoNotDisturb.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEDONOTDISTURB_H -#define CONTACTPRESENCESTATEDONOTDISTURB_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceStateDoNotDisturb : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateDoNotDisturb; - } -}; - -#endif //CONTACTPRESENCESTATEDONOTDISTURB_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceState.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATE_H -#define CONTACTPRESENCESTATE_H - -#include - -class ContactProfile; - -/** - * Represents the presence state of a Contact. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceState { -public: - - ContactPresenceState(); - - virtual ~ContactPresenceState() { - } - - virtual void execute(ContactProfile & contact) = 0; - - /** - * Gets the status code corresponding to this Contact presence state. - * - * @return status code of this state - */ - virtual EnumPresenceState::PresenceState getCode() const = 0; -}; - -#endif //CONTACTPRESENCESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,34 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateOffline.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateOffline::execute(ContactProfile & contact) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - Sound::play(config.getAudioIMAccountDisconnectedFile()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOffline.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEOFFLINE_H -#define CONTACTPRESENCESTATEOFFLINE_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceStateOffline : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateOffline; - } -}; - -#endif //CONTACTPRESENCESTATEOFFLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateOnline.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateOnline::execute(ContactProfile & contact) { - static bool firstConnection = true; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (firstConnection) { - Sound::play(config.getAudioIMAccountConnectedFile()); - firstConnection = false; - } else { - Sound::play(config.getAudioContactOnlineFile()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateOnline.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEONLINE_H -#define CONTACTPRESENCESTATEONLINE_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceStateOnline : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateOnline; - } -}; - -#endif //CONTACTPRESENCESTATEONLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateUnavailable.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateUnavailable::execute(ContactProfile & contact) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnavailable.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEUNAVAILABLE_H -#define CONTACTPRESENCESTATEUNAVAILABLE_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Mathieu Stute - */ -class ContactPresenceStateUnavailable : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateUnavailable; - } -}; - -#endif //CONTACTPRESENCESTATEUNAVAILABLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactPresenceStateUnknown.h" - -#include "ContactProfile.h" - -#include -#include - -#include - -#include - -void ContactPresenceStateUnknown::execute(ContactProfile & contact) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactPresenceStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPRESENCESTATEUNKNOWN_H -#define CONTACTPRESENCESTATEUNKNOWN_H - -#include "ContactPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ContactPresenceStateUnknown : public ContactPresenceState { -public: - - void execute(ContactProfile & contact); - - EnumPresenceState::PresenceState getCode() const { - return EnumPresenceState::PresenceStateUnknown; - } -}; - -#endif //CONTACTPRESENCESTATEUNKNOWN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactProfile.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactProfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactProfile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,556 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactProfile.h" - -#include "ContactPresenceStateUnknown.h" -#include "ContactPresenceStateOnline.h" -#include "ContactPresenceStateOffline.h" -#include "ContactPresenceStateAway.h" -#include "ContactPresenceStateDoNotDisturb.h" -#include "ContactPresenceStateUnavailable.h" - -#include -#include -#include - -#include -#include -#include -#include - -#define LOGGER_COMPONENT "ContactList" -#include -#include -#include - -#include - -using namespace std; - -ContactProfile::PresenceStates ContactProfile::_presenceStateMap; - -static ContactPresenceStateUnknown contactPresenceStateUnknown; -static ContactPresenceStateOnline contactPresenceStateOnline; -static ContactPresenceStateOffline contactPresenceStateOffline; -static ContactPresenceStateAway contactPresenceStateAway; -static ContactPresenceStateDoNotDisturb contactPresenceStateDoNotDisturb; -static ContactPresenceStateUnavailable contactPresenceStateUnavailable; - -ContactProfile::ContactProfile() { - _sex = EnumSex::SexUnknown; - _blocked = false; - _preferredIMContact = NULL; - - _uuid = Uuid::generateString(); - - //Default state (ContactPresenceStateUnknown) - _presenceState = &contactPresenceStateUnknown; - - _presenceStateMap[contactPresenceStateUnknown.getCode()] = &contactPresenceStateUnknown; - _presenceStateMap[contactPresenceStateOnline.getCode()] = &contactPresenceStateOnline; - _presenceStateMap[contactPresenceStateOffline.getCode()] = &contactPresenceStateOffline; - _presenceStateMap[contactPresenceStateAway.getCode()] = &contactPresenceStateAway; - _presenceStateMap[contactPresenceStateDoNotDisturb.getCode()] = &contactPresenceStateDoNotDisturb; - _presenceStateMap[contactPresenceStateUnavailable.getCode()] = &contactPresenceStateUnavailable; -} - -ContactProfile::ContactProfile(const ContactProfile & contactProfile) -: Profile() { - copy(contactProfile); -} - -ContactProfile::~ContactProfile() { -} - -ContactProfile & ContactProfile::operator=(const ContactProfile & contactProfile) { - if (&contactProfile != this) { - copy(contactProfile); - } - - return *this; -} - -void ContactProfile::copy(const ContactProfile & contactProfile) { - Profile::copy(contactProfile); - _uuid = contactProfile._uuid; - _blocked = contactProfile._blocked; - _preferredIMContact = contactProfile._preferredIMContact; - _imContactSet = contactProfile._imContactSet; - _groupId = contactProfile._groupId; - _presenceState = contactProfile._presenceState; -} - -bool ContactProfile::operator == (const ContactProfile & contactProfile) const { - return (_uuid == contactProfile._uuid); -} - -void ContactProfile::addIMContact(const IMContact & imContact) { - pair result = _imContactSet.insert(imContact); - updatePresenceState(); -} - -void ContactProfile::removeIMContact(const IMContact & imContact) { - IMContactSet::iterator it = _imContactSet.find(imContact); - - if (it != _imContactSet.end()) { - _imContactSet.erase(it); - } - updatePresenceState(); -} - -bool ContactProfile::hasIMContact(const IMContact & imContact) const { - if (_imContactSet.find(imContact) != _imContactSet.end()) { - return true; - } else { - return false; - } -} - -IMContact * ContactProfile::getIMContact(const IMContact & imContact) const { - IMContactSet::const_iterator it = _imContactSet.find(imContact); - if (it != _imContactSet.end()) { - return ((IMContact *) &(*it)); - } else { - return NULL; - } -} - -void ContactProfile::setGroupId(const std::string & groupId) { - _groupId = groupId; - profileChangedEvent(*this); -} - -bool ContactProfile::hasIM() const -{ - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - if(config.getSipChatWithoutPresence()) - { - String imContact = getFirstAvailableSIPNumber(); - if(!imContact.empty()) - return true; - } - - return (getPresenceState() != EnumPresenceState::PresenceStateOffline && - getPresenceState() != EnumPresenceState::PresenceStateUnknown && - getPresenceState() != EnumPresenceState::PresenceStateUnavailable); -} - -bool ContactProfile::hasCall() const { - if (!getPreferredNumber().empty()) { - return true; - } else { - return false; - } -} - -bool ContactProfile::hasVideo() const { - return hasAvailableWengoId(); -} - -bool ContactProfile::hasVoiceMail() const { - // For now, we assume only Wengo accounts support voice mail - return !getFirstWengoId().empty(); -} - -bool ContactProfile::hasFileTransfer() const { - if (!getFirstWengoId().empty() && isAvailable()) { - IMContact imContact = getFirstAvailableWengoIMContact(); - if ((imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { - return true; - } - } - return false; -} - -std::string ContactProfile::getPreferredNumber() const { - string result; - - if (!_preferredNumber.empty()) { - result = _preferredNumber; - } else if (hasAvailableWengoId()) { - result = getFirstAvailableWengoId(); - } else if (hasAvailableSIPNumber()) { - result = getFirstAvailableSIPNumber(); - } else if (!_mobilePhone.empty()) { - result = _mobilePhone; - } else if (!_homePhone.empty()) { - result = _homePhone; - } else if (!_workPhone.empty()) { - result = _workPhone; - } else if (!_otherPhone.empty()) { - result = _otherPhone; - } - - return result; -} - -/** - * Helper to assign scores to presence states - * FIXME: This should be moved in EnumPresenceState, as a getScore() method - */ -static int getStateScore(EnumPresenceState::PresenceState state) { - typedef std::map StateScoreMap; - static StateScoreMap stateScoreMap; - - if (stateScoreMap.empty()) { - stateScoreMap[EnumPresenceState::PresenceStateOffline] = 1; - stateScoreMap[EnumPresenceState::PresenceStateDoNotDisturb] = 2; - stateScoreMap[EnumPresenceState::PresenceStateAway] = 3; - stateScoreMap[EnumPresenceState::PresenceStateOnline] = 4; - } - - StateScoreMap::const_iterator it = stateScoreMap.find(state); - if (it == stateScoreMap.end()) { - return 0; - } - return it->second; -}; - -IMContact * ContactProfile::getPreferredIMContact() const { - const int offlineScore = getStateScore(EnumPresenceState::PresenceStateOffline); - - IMContact * bestIMContact = 0; - int bestIMContactScore = -1; - IMContact * bestWengoContact = 0; - int bestWengoContactScore = -1; - - // Find best IM contact and best Wengo contact - IMContactSet::const_iterator - it = _imContactSet.begin(), - end = _imContactSet.end(); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - bool ignorePresence = config.getSipChatWithoutPresence(); - - for (; it!=end; ++it) { - EnumPresenceState::PresenceState state = it->getPresenceState(); - int contactScore = getStateScore(state); - - - - if (!ignorePresence && (contactScore <= offlineScore)) - continue; - - - IMContact* contact = const_cast( &(*it) ); - - if (contact->getProtocol() == EnumIMProtocol::IMProtocolWengo) { - if (contactScore > bestWengoContactScore) { - bestWengoContact = contact; - bestWengoContactScore = contactScore; - } - } else { - if (contactScore > bestIMContactScore) { - bestIMContact = contact; - bestIMContactScore = contactScore; - } - } - } - - // Get score of _preferredIMContact, if any - int preferredIMContactScore; - if (_preferredIMContact) { - preferredIMContactScore = getStateScore(_preferredIMContact->getPresenceState()); - } else { - preferredIMContactScore = -1; - } - - // Choose the best one - IMContact* bestContact = 0; - if (bestWengoContactScore >= bestIMContactScore) { - if (preferredIMContactScore >= bestWengoContactScore) { - bestContact = _preferredIMContact; - } else { - bestContact = bestWengoContact; - } - } else { - if (preferredIMContactScore >= bestIMContactScore) { - bestContact = _preferredIMContact; - } else { - bestContact = bestIMContact; - } - } - //// - - return bestContact; -} - -EnumPresenceState::PresenceState ContactProfile::getPresenceState() const { - return _presenceState->getCode(); -} - -EnumPresenceState::PresenceState ContactProfile::computePresenceState() const { - // Find best state - EnumPresenceState::PresenceState bestState = EnumPresenceState::PresenceStateUnknown; - int bestStateScore = 0; - - IMContactSet::const_iterator - it = _imContactSet.begin(), - end = _imContactSet.end(); - - for (; it!=end; ++it) { - EnumPresenceState::PresenceState contactState = it->getPresenceState(); - int contactStateScore = getStateScore(contactState); - - if (contactStateScore > bestStateScore) { - bestState = contactState; - bestStateScore = contactStateScore; - } - } - - return bestState; -} - -void ContactProfile::updatePresenceState() { - EnumPresenceState::PresenceState presenceState = computePresenceState(); - - LOG_DEBUG("PresenceState=" + String::fromNumber(presenceState)); - - PresenceStates::iterator it = _presenceStateMap.find(presenceState); - if (it == _presenceStateMap.end()) { - LOG_FATAL("unknown PresenceState=" + String::fromNumber(presenceState)); - } - - ContactPresenceState * state = it->second; - if (state->getCode() == presenceState) { - if (_presenceState->getCode() != state->getCode()) { - _presenceState = state; - _presenceState->execute(*this); - LOG_DEBUG("presence state changed=" + EnumPresenceState::toString(_presenceState->getCode())); - profileChangedEvent(*this); - return; - } - } -} - -OWPicture ContactProfile::getIcon() const { - OWPicture icon; - for (IMContactSet::const_iterator it = _imContactSet.begin() ; - it != _imContactSet.end() ; - it++) { - icon = it->getIcon(); - if (!icon.getData().empty()) { - return icon; - } - } - - icon = Profile::getIcon(); - if(!icon.getData().empty()) - return icon; - - return AvatarList::getInstance().getDefaultAvatarPicture(); -} - -string ContactProfile::getDisplayName() const { - string result; - string pseudo; - string contactId; - - if (!_firstName.empty() || !_lastName.empty()) { - result += _firstName; - - if (!result.empty() && !_lastName.empty()) { - result += " "; - } - - result += _lastName; - } - - // Take the alias of the first IMContact - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if (!(*it).getAlias().empty()) { - pseudo = (*it).getAlias(); - contactId = (*it).getDisplayContactId(); - break; - } - } - - // If no alias set, we take the first contact id: - if (contactId.empty()) { - IMContactSet::const_iterator it = _imContactSet.begin(); - if (it != _imContactSet.end()) { - contactId = (*it).getDisplayContactId(); - } - } - - if (result.empty()) { - result = contactId; - } - - // FIXME: I don't know how this happens, but sometimes the pseudo is set to - // "(null)"! Since I don't have time to investigate that bug (and don't - // know how to reproduce it), I resort to this hack for now. - // See ticket #1495 - if (!pseudo.empty() && pseudo != "(null)") { - result += " - (" + pseudo + ")"; - } - - return result; -} - -std::string ContactProfile::getShortDisplayName() const -{ - std::string toReturn; - - if(getFirstName().empty()) - { - if(!getLastName().empty()) - toReturn = getLastName(); - } - else - { - toReturn = getFirstName(); - if(!getLastName().empty()) - toReturn += " " +getLastName(); - } - - return toReturn; -} - -IMContact * ContactProfile::getFirstAvailableIMContact(IMChatSession & imChatSession) const { - IMContact * result = NULL; - - for (IMContactSet::const_iterator it = _imContactSet.begin() ; it != _imContactSet.end() ; ++it) { - if (((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline) - && (((*it).getIMAccountId()) == imChatSession.getIMChat().getIMAccountId())) { - result = (IMContact *)&(*it); - break; - } - } - - return result; -} - -std::string ContactProfile::getFirstAvailableSIPNumber() const { - std::string result; - - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if (((*it).getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || - ((*it).getProtocol() == EnumIMProtocol::IMProtocolSIP)) { - result = (*it).getContactId(); - break; - } - } - - return result; -} - -bool ContactProfile::hasAvailableSIPNumber() const { - return (!getFirstAvailableSIPNumber().empty()); -} - -IMContact ContactProfile::getFirstAvailableWengoIMContact() const { - IMContact result; - - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - - if (((*it).getProtocol() == EnumIMProtocol::IMProtocolWengo) - && ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline)) { - result = *it; - break; - } - } - - return result; -} - -std::string ContactProfile::getFirstAvailableWengoId() const { - return getFirstAvailableWengoIMContact().getContactId(); -} - -std::string ContactProfile::getFirstWengoId() const { - std::string result; - - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if (((*it).getProtocol() == EnumIMProtocol::IMProtocolWengo)) { - result = (*it).getContactId(); - break; - } - } - - return result; -} - -bool ContactProfile::hasAvailableWengoId() const { - return (!getFirstAvailableWengoId().empty()); -} - -bool ContactProfile::hasAvailableSIPNumberAndNoWengoId() const { - - bool hasSIP = false; - - for (IMContactSet::const_iterator it = _imContactSet.begin(); - it != _imContactSet.end(); - ++it) { - if (((*it).getProtocol() == EnumIMProtocol::IMProtocolWengo)) { - return false; - } else if (((*it).getProtocol() == EnumIMProtocol::IMProtocolSIPSIMPLE) || - ((*it).getProtocol() == EnumIMProtocol::IMProtocolSIP)) { - hasSIP = true; - } - } - - return hasSIP; -} - -std::string ContactProfile::getFirstFreePhoneNumber() const { - std::string result; - - if (hasAvailableWengoId()) { - result = getFirstAvailableWengoId(); - } else if (hasAvailableSIPNumber()) { - result = getFirstAvailableSIPNumber(); - } - - return result; -} - -std::string ContactProfile::getFirstVoiceMailNumber() const { - return getFirstWengoId(); -} - -bool ContactProfile::hasFreeCall() const { - return (!getFirstFreePhoneNumber().empty()); -} - -void ContactProfile::setWengoPhoneId(const std::string & wengoPhoneId) { - Profile::setWengoPhoneId(wengoPhoneId); - addIMContact(IMContact(EnumIMProtocol::IMProtocolWengo, wengoPhoneId)); -} - -bool ContactProfile::isAvailable() const { - return ((getPresenceState() != EnumPresenceState::PresenceStateOffline) - && ((getPresenceState() != EnumPresenceState::PresenceStateUnknown))); -} - -void ContactProfile::setUUID(const std::string & newUUID) { - _uuid = newUUID; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactProfile.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,390 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTPROFILE_H -#define CONTACTPROFILE_H - -#include - -#include -#include - -#include - -#include -#include - -class UserProfile; -class ContactList; -class IMChatSession; -class ContactPresenceState; - -/** - * Contact Profile. - * - * This class is a simple container of information needed for a Contact. - * - * @ingroup model - * @author Philippe Bernery - * @author Mathieu Stute - */ -class ContactProfile : public Profile { - friend class Contact; -public: - - //typedef std::set ContactGroupSet; - - /** - * Emitted when the contact presence state has been changed. - * FIXME not connected yet, this is for the toaster/notification - * - * @param sender this class - */ - Event contactProfilePresenceChangedEvent; - - ContactProfile(); - - ContactProfile(const ContactProfile & contactProfile); - - ContactProfile & operator=(const ContactProfile & contactProfile); - - ~ContactProfile(); - - bool operator==(const ContactProfile & contactProfile) const; - - /** - * Gets the preferred phone number. - * - * @return the preferred phone number. If no preferred phone number has been set - * the first set phone number is returned (the test is made in this order: - * wengo id (if online), mobile, home, work and other phone number). If no phone number has - * been set, a null string is returned. - */ - std::string getPreferredNumber() const; - - /** - * Gets the preferred IMContact. - * - * @return the preferred IMContact. If no IMContact has been set or no - * IMContact is online, return NULL. - */ - IMContact * getPreferredIMContact() const; - - /** - * Gets an available IMContact. - * - * An available IMContact is a connected IMContact of protocol used in - * the imChatSession. - * - * @return an available IMContact. If no IMContact has been found, return NULL. - */ - IMContact * getFirstAvailableIMContact(IMChatSession & imChatSession) const; - - /** - * Adds an IMContact to the ContactProfile. - * - * @param imContact IMContact to add - */ - virtual void addIMContact(const IMContact & imContact); - - /** - * Removes an IMContact from the ContactProfile. - * - * @param imContact IMContact to remove - */ - virtual void removeIMContact(const IMContact & imContact); - - /** - * @param imContact the maybe associated IMContact - * @return true if this Contact is associated with the given IMContact. - */ - bool hasIMContact(const IMContact & imContact) const; - - /** - * Return the IMContact equals to given IMContact. - * - * @param imContact the desired IMContact - * @return the IMContact or NULL if not found - */ - IMContact * getIMContact(const IMContact & imContact) const; - - /** - * @return Set of IMContact - */ - const IMContactSet & getIMContactSet() { - return _imContactSet; - } - - /** - * @return true if chat is available with this Contact. - */ - bool hasIM() const; - - /** - * @return true if we can place a call with this Contact. - */ - bool hasCall() const; - - /** - * @return true if we can place a free call with this Contact - * A free call can be made if the Contact has a Wengo ID or - * a SIP address. - */ - bool hasFreeCall() const; - - /** - * @return true if the contact has a voice mail. - */ - bool hasVoiceMail() const; - - /** - * @return true if we can place a video call with this Contact. - */ - bool hasVideo() const; - - /** - * @return true if we can transfer a file with this Contact. - */ - bool hasFileTransfer() const; - - /** - * @return free phone number (Wengo ID, SIP address). - * an empty string if no phone number found - */ - std::string getFirstFreePhoneNumber() const; - - /** - * Gets the first available Wengo contact id that is online. - * - * @return the first available Wengo contact id. - */ - std::string getFirstAvailableWengoId() const; - - /** - * Gets the first available Wengo IMContact that is online. - * - * @return the first available Wengo IMContact. - */ - IMContact getFirstAvailableWengoIMContact() const; - - /** - * Gets the first Wengo contact. - * - * @return the first available Wengo contact id. - */ - std::string getFirstWengoId() const; - - /** - * Gets an available SIP address than can be called - * taken from IMContacts of protocol SIP/SIMPLE. - * - * This method does not check Wengo IMContacts - * - * @return the found SIP address or an empty string - * if no SIP address found - */ - std::string getFirstAvailableSIPNumber() const; - - /** - * Gets the first voice mail number. - * - * @return the first available voice mail number. - */ - std::string getFirstVoiceMailNumber() const; - - /** - * @return a display name computed from available Contact information. - */ - std::string getDisplayName() const; - - /** - * @return a display name in a short way. - */ - std::string getShortDisplayName() const; - - /** - * Gets the PresenceState of this Contact. - * - * @return the PresenceState of this Contact - */ - EnumPresenceState::PresenceState getPresenceState() const; - - /** - * @return true if presence state is different of Unknown and Offline. - */ - bool isAvailable() const; - - /** - * Gets the UUID of this Contact. - * - * @return the UUID of this Contact. - */ - std::string getUUID() const { - return _uuid; - } - - /** - * Set the UUID - * - * @param the UUID to be set - */ - void setUUID(const std::string & newUUID); - - /** - * @return true if the Contact is blocked. - */ - bool isBlocked() { return _blocked; } - - // Inherited from Profile - OWPicture getIcon() const; - //// - - /** - * Actually sets the groupId. - */ - void setGroupId(const std::string & groupId); - - /** - * Gets the group id of this Contact. - * Empty string if no group set. - */ - std::string getGroupId() const { - return _groupId; - } - - /** - * @return true when a wengo IMContact has been declared - * and this id is online. - */ - bool hasAvailableWengoId() const; - - /** - * Checks if a SIP number is available. - * - * This method does not check Wengo ID. - * - * @return true if the Contact has an available SIP Address. - */ - bool hasAvailableSIPNumber() const; - - /** - * Checks if a the contact has an available SIP adresse AND NO - * available Wengo ID. - * - * @return true if the Contact has an available SIP Address - * AND NO Wengo ID. - */ - bool hasAvailableSIPNumberAndNoWengoId() const; - - virtual void setMobilePhone(const std::string & mobilePhone) { Profile::setMobilePhone(mobilePhone); updatePresenceState(); } - - virtual void setHomePhone(const std::string & homePhone) { Profile::setHomePhone(homePhone); updatePresenceState(); } - - virtual void setWorkPhone(const std::string & workPhone) { Profile::setWorkPhone(workPhone); updatePresenceState(); } - - virtual void setOtherPhone(const std::string & otherPhone) { Profile::setOtherPhone(otherPhone); updatePresenceState(); } - -protected: - - // Inherited from Profile - // Used by WsDirectory - virtual void setWengoPhoneId(const std::string & wengoPhoneId); - //// - - /** - * Sets the group of this ContactProfile. - * - * @param groupName the group name - */ - virtual void setGroup(const std::string & /*groupName*/) {} - - /** - * Gets the group of the ContactProfile. - * - * @return the group name - */ - virtual std::string getGroup() const { return ""; } - - /** Copy a ContactProfile. */ - virtual void copy(const ContactProfile & contactProfile); - - /** - * Updated the current presence state. - * - * Called by the class Contact (that's why it's protected and not private). - * ContactProfile cannot be connected to the event imContactChangedEvent, so Contact - * connects to this event and notify ContactProfile via the method updatePresenceState() - */ - void updatePresenceState(); - - /** The preferrred number for this Contact. */ - std::string _preferredNumber; - - /** The preferred IMContact to use for this Contact. */ - IMContact * _preferredIMContact; - - /** Is the contact blocked? */ - bool _blocked; - - /** List of IMContact of this Contact. */ - IMContactSet _imContactSet; - - /** Name of the group of this Contact. */ - std::string _groupId; - - /** - * UUID of this Contact. - * - * Each Contact is identified by a UUID. - * A Contact copy has the same UUID. - */ - std::string _uuid; - - /** Current presence state of this Contact. */ - ContactPresenceState * _presenceState; - -private: - - /** - * Computes the current presence state. - * - * Internal helper method. - * - * Rules are: - * - At least one protocol is online -> online - * Or - * - At least one protocol is away -> away - * Or - * - At least one protocol is dnd -> dnd - * Or - * - Contact has a phone number and user has a Wengo account -> unavailable - * Otherwise: unknown - * - * @return current presence state - */ - EnumPresenceState::PresenceState computePresenceState() const; - - /** Defines the map of ContactPresenceState. */ - typedef std::map< EnumPresenceState::PresenceState, ContactPresenceState * > PresenceStates; - - /** Map of ContactPresenceState. */ - static PresenceStates _presenceStateMap; -}; - -#endif //CONTACTPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactXMLSerializer1.h" - -#include "Contact.h" -#include "ContactGroup.h" -#include "ContactList.h" - -#include - -#include -#include - -#include - -#include - -using namespace std; - -ContactXMLSerializer1::ContactXMLSerializer1(Contact & contact, - ContactList & contactList, IMAccountList & imAccountList) - : ProfileXMLSerializer(contact), - _contact(contact), - _contactList(contactList), - _imAccountList(imAccountList) { -} - -string ContactXMLSerializer1::serialize() { - string result; - - result += "\n"; - - result += ProfileXMLSerializer::serialize(); - - //Serializing IMContacts - for (IMContactSet::const_iterator it = _contact._imContactSet.begin(); - it != _contact._imContactSet.end(); - ++it) { - IMContactXMLSerializer1 imContactSerializer((IMContact &)*it, _imAccountList); - result += imContactSerializer.serialize(); - } - //// - - //Serializing group - ContactGroup * contactGroup = _contactList.getContactGroup(_contact.getGroupId()); - if (contactGroup) { - result += "getName() + "]]>\n"; - } - //// - - //serializing UUID - result += ""+ _contact.getUUID() +"\n"; - //// - - result += "\n"; - - return result; -} - -bool ContactXMLSerializer1::unserialize(const string & data) { - TiXmlDocument doc; - EnumIMProtocol imProtocol; - bool result = true; - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlHandle wgCard = docHandle.FirstChild("wgcard"); - - ProfileXMLSerializer::unserializeContent(wgCard); - - //retrieving UUID - TiXmlNode * uuid = wgCard.FirstChild("UUID").Node(); - if (uuid) { - _contact.setUUID(string(uuid->FirstChild()->Value())); - } - //// - - //Retrieving Groups - TiXmlNode * group = wgCard.FirstChild("group").Node(); - if (group) { - _contactList._addToContactGroup(string(group->FirstChild()->Value()), _contact); - } - //// - - //Retrieving IMContacts - TiXmlNode * imLastChild = NULL; - while (result && (imLastChild = wgCard.Node()->IterateChildren("im", imLastChild))) { - string imData; - IMContact imContact(EnumIMProtocol::IMProtocolUnknown, String::null); - IMContactXMLSerializer1 imContactSerializer(imContact, _imAccountList); - - imData << *imLastChild; - result = imContactSerializer.unserialize(imData); - - _contact._addIMContact(imContact); - } - //// - - _contact.updatePresenceState(); - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer1.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTXMLSERIALIZER1_H -#define OWCONTACTXMLSERIALIZER1_H - -#include - -#include - -class Contact; -class ContactList; -class IMAccountList; - -/** - * This is the 1st version of ContactXMLSerializer1. - * - * It uses IMContactXMLSerializer1 - * - * @author Philippe Bernery - */ -class ContactXMLSerializer1 : public ProfileXMLSerializer { -public: - - ContactXMLSerializer1(Contact & contact, ContactList & contactList, - IMAccountList & imAccountList); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - Contact & _contact; - - ContactList & _contactList; - - IMAccountList & _imAccountList; -}; - -#endif //OWCONTACTXMLSERIALIZER1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactXMLSerializer.h" - -#include "Contact.h" -#include "ContactGroup.h" -#include "ContactList.h" - -#include -#include -#include - -#include -#include - -#include - -#include - -using namespace std; - -ContactXMLSerializer::ContactXMLSerializer(Contact & contact, - ContactList & contactList, IMAccountList & imAccountList) - : ProfileXMLSerializer(contact), - _contact(contact), - _contactList(contactList), - _imAccountList(imAccountList) { -} - -string ContactXMLSerializer::serialize() { - string result; - - result += "\n"; - - result += ProfileXMLSerializer::serialize(); - - //Serializing IMContacts - for (IMContactSet::const_iterator it = _contact._imContactSet.begin(); - it != _contact._imContactSet.end(); - ++it) { - IMContactXMLSerializer imContactSerializer((IMContact &)*it, _imAccountList); - result += imContactSerializer.serialize(); - } - //// - - //Serializing group - ContactGroup * contactGroup = _contactList.getContactGroup(_contact.getGroupId()); - if (contactGroup) { - result += "getName() + "]]>\n"; - } - //// - - //serializing UUID - result += ""+ _contact.getUUID() +"\n"; - //// - - result += "\n"; - - return result; -} - -bool ContactXMLSerializer::unserialize(const string & data) { - TiXmlDocument doc; - EnumIMProtocol imProtocol; - bool result = true; - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string defaultRealm = config.getWengoRealm(); - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlHandle wgCard = docHandle.FirstChild("wgcard"); - - ProfileXMLSerializer::unserializeContent(wgCard); - - //retrieving UUID - TiXmlNode * uuid = wgCard.FirstChild("UUID").Node(); - if (uuid) { - _contact.setUUID(string(uuid->FirstChild()->Value())); - } - //// - - //Retrieving Groups - TiXmlNode * group = wgCard.FirstChild("group").Node(); - if (group) { - _contactList._addToContactGroup(string(group->FirstChild()->Value()), _contact); - } - //// - - //Retrieving IMContacts - TiXmlNode * imLastChild = NULL; - while (result && (imLastChild = wgCard.Node()->IterateChildren("im", imLastChild))) { - string imData; - IMContact imContact(EnumIMProtocol::IMProtocolUnknown, String::null); - IMContactXMLSerializer imContactSerializer(imContact, _imAccountList); - imContactSerializer.setDefaultRealm(defaultRealm); - - imData << *imLastChild; - result = imContactSerializer.unserialize(imData); - - _contact._addIMContact(imContact); - } - //// - - _contact.updatePresenceState(); - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/ContactXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONTACTXMLSERIALIZER_H -#define CONTACTXMLSERIALIZER_H - -#include - -#include - -class Contact; -class ContactList; -class IMAccountList; - -/** - * Serialize a Contact object. - * - * @author Philippe Bernery - */ -class ContactXMLSerializer : public ProfileXMLSerializer { -public: - - ContactXMLSerializer(Contact & contact, ContactList & contactList, - IMAccountList & imAccountList); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - Contact & _contact; - - ContactList & _contactList; - - IMAccountList & _imAccountList; -}; - -#endif //CONTACTXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/IMContactListHandler.cpp qutecom-2.2+dfsg1/wengophone/src/model/contactlist/IMContactListHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/IMContactListHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/IMContactListHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "IMContactListHandler.h" - -#include -#include -#include - -#define LOGGER_COMPONENT "ContactList" -#include -#include - -IMContactListHandler::IMContactListHandler(UserProfile & userProfile) - : _userProfile(userProfile) { - userProfile.getIMAccountManager().imAccountAddedEvent += - boost::bind(&IMContactListHandler::imAccountAddedEventHandler, this, _1, _2); - userProfile.getIMAccountManager().imAccountRemovedEvent += - boost::bind(&IMContactListHandler::imAccountRemovedEventHandler, this, _1, _2); -} - -IMContactListHandler::~IMContactListHandler() { -} - -void IMContactListHandler::addIMContact(const std::string & groupName, const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); - - if (it != _imContactListMap.end()) { - (*it).second->addContact(groupName, imContact.getContactId()); - } else { - LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::removeIMContact(const std::string & groupName, const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); - - if (it != _imContactListMap.end()) { - (*it).second->removeContact(groupName, imContact.getContactId()); - } else { - LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::newContactAddedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); - if (imAccount) { - IMContact imContact(*imAccount, contactId); - _imContactList.push_back(imContact); - MyIMContactList::iterator it = - std::find(_imContactList.begin(), _imContactList.end(), imContact); - newIMContactAddedEvent(*this, groupName, (IMContact &)*it); - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::contactRemovedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); - if (imAccount) { - IMContact imContact(*imAccount, contactId); - - MyIMContactList::iterator it = - std::find(_imContactList.begin(), _imContactList.end(), imContact); - - if (it != _imContactList.end()) { - imContactRemovedEvent(*this, groupName, (IMContact &)*it); - _imContactList.erase(it); - } else { - LOG_ERROR("contact not found"); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - IMContactListMap::iterator it = _imContactListMap.find(imAccountId); - if (it == _imContactListMap.end()) { - IMContactList * imContactList = IMWrapperFactory::getFactory().createIMContactList(*imAccount); - if (imContactList) { - imContactList->newContactAddedEvent += - boost::bind(&IMContactListHandler::newContactAddedEventHandler, this, _1, _2, _3); - imContactList->contactRemovedEvent += - boost::bind(&IMContactListHandler::contactRemovedEventHandler, this, _1, _2, _3); - imContactList->contactMovedEvent += - boost::bind(&IMContactListHandler::contactMovedEventHandler, this, _1, _2, _3); - imContactList->newContactGroupAddedEvent += - boost::bind(&IMContactListHandler::newContactGroupAddedEventHandler, this, _1, _2); - imContactList->contactGroupRemovedEvent += - boost::bind(&IMContactListHandler::contactGroupRemovedEventHandler, this, _1, _2); - - _imContactListMap.insert(std::pair(imAccountId, imContactList)); - } else { - LOG_DEBUG("cannot create an IMContactList"); - } - } else { - LOG_ERROR("this IMAccount has already been added " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); - if (it != _imContactListMap.end()) { - delete (*it).second; - _imContactListMap.erase(it); - } else { - LOG_ERROR("this IMAccount has not been added " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::contactMovedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); - if (imAccount) { - IMContact imContact(*imAccount, contactId); - MyIMContactList::const_iterator it = - std::find(_imContactList.begin(), _imContactList.end(), imContact); - - if (it != _imContactList.end()) { - LOG_DEBUG("an IMContact has moved:" + contactId); - imContactMovedEvent(*this, groupName, imContact); - } else { - LOG_DEBUG("this IMContact(" + contactId + ") from group " + groupName - + " has not been added yet. Adding it as new IMContact."); - newContactAddedEventHandler(sender, groupName, contactId); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::newContactGroupAddedEventHandler(IMContactList & sender, std::string groupName) { - newContactGroupAddedEvent(sender, groupName); -} - -void IMContactListHandler::contactGroupRemovedEventHandler(IMContactList & sender, std::string groupName) { - contactGroupRemovedEvent(sender, groupName); -} - -void IMContactListHandler::addGroup(const std::string & groupName) { - for (IMContactListMap::const_iterator it = _imContactListMap.begin(); - it != _imContactListMap.end(); it++) { - (*it).second->addGroup(groupName); - } -} - -void IMContactListHandler::removeGroup(const std::string & groupName) { - for (IMContactListMap::const_iterator it = _imContactListMap.begin(); - it != _imContactListMap.end(); it++) { - (*it).second->removeGroup(groupName); - } -} - -void IMContactListHandler::moveContactToGroup(const std::string & newGroupName, - const std::string & oldGroupName, const IMContact & imContact) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - IMContactListMap::iterator it = _imContactListMap.find(imAccount->getUUID()); - if (it != _imContactListMap.end()) { - (*it).second->moveContactToGroup(newGroupName, oldGroupName, imContact.getContactId()); - } else { - LOG_DEBUG("this IMAccount is not registered: " + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void IMContactListHandler::changeGroupName(const std::string & oldGroupName, const std::string & newGroupName) { - for (IMContactListMap::const_iterator it = _imContactListMap.begin(); - it != _imContactListMap.end(); it++) { - (*it).second->changeGroupName(oldGroupName, newGroupName); - } -} - -void IMContactListHandler::unregisterAllEvents() { - for (IMContactListMap::const_iterator it = _imContactListMap.begin(); - it != _imContactListMap.end(); it++) { - (*it).second->newContactAddedEvent -= - boost::bind(&IMContactListHandler::newContactAddedEventHandler, this, _1, _2, _3); - (*it).second->contactRemovedEvent -= - boost::bind(&IMContactListHandler::contactRemovedEventHandler, this, _1, _2, _3); - (*it).second->contactMovedEvent -= - boost::bind(&IMContactListHandler::contactMovedEventHandler, this, _1, _2, _3); - (*it).second->newContactGroupAddedEvent -= - boost::bind(&IMContactListHandler::newContactGroupAddedEventHandler, this, _1, _2); - (*it).second->contactGroupRemovedEvent -= - boost::bind(&IMContactListHandler::contactGroupRemovedEventHandler, this, _1, _2); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/IMContactListHandler.h qutecom-2.2+dfsg1/wengophone/src/model/contactlist/IMContactListHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/contactlist/IMContactListHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/contactlist/IMContactListHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,186 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef IMCONTACTLISTHANDLER_H -#define IMCONTACTLISTHANDLER_H - -#include - -#include -#include - -#include -#include -#include - -class IMAccount; -class IMAccountManager; -class IMContactList; -class UserProfile; - -class IMContactListHandler : public Trackable { -public: - - /** - * Emitted when an IMContact has been added remotely. - * - * @param sender this class - * @param groupName the group where the IMContact has been added - * @param newIMContact the new IMContact - * @see IMContactList::newContactAddedEvent - */ - Event< void (IMContactListHandler & sender, const std::string & groupName, - IMContact & newIMContact) > newIMContactAddedEvent; - - /** - * Emitted when an IMContact has been removed remotely. - * - * @param sender this class - * @param groupName the group where the IMContact is - * @param imContact the removed IMContact - * @see IMContactList::imContactRemovedEvent - */ - Event< void (IMContactListHandler & sender, const std::string & groupName, - IMContact & imContact) > imContactRemovedEvent; - - /** - * @see IMContactList::contactMovedEvent - */ - Event< void (IMContactListHandler & sender, const std::string & groupName, - IMContact & imContact) > imContactMovedEvent; - - /** - * Emitted when an IMContact has been added remotely. - * - * @param sender this class - * @param groupName the added group - */ - Event< void (IMContactList & sender, std::string groupName) > newContactGroupAddedEvent; - - /** - * Emitted when a group has been removed. - * - * @param sender this class - * @param groupName the removed group - */ - Event< void (IMContactList & sender, std::string groupName) > contactGroupRemovedEvent; - - IMContactListHandler(UserProfile & userProfile); - - ~IMContactListHandler(); - - /** - * Remotely adds an IMContact. - * - * @param groupName the group where we want to add the IMContact - * @param imContact the IMContact to add - */ - void addIMContact(const std::string & groupName, const IMContact & imContact); - - /** - * Remotely deletes an IMContact. - * - * @param groupName the group if the IMContact - * @param imContact the IMContact to remove - */ - void removeIMContact(const std::string & groupName, const IMContact & imContact); - - /** - * Remotely adds a group. - * - * @param groupName the group name to add the contact in - */ - void addGroup(const std::string & groupName); - - /** - * Remotely deletes a group. - * - * @param groupName the group name of the contact - */ - void removeGroup(const std::string & groupName); - - /** - * Renames a group. - * - * @param oldGroupName the group to rename - * @param newGroupName the desired group name - */ - void changeGroupName(const std::string & oldGroupName, const std::string & newGroupName); - - /** - * @see IMContactList::moveContactToGroup - */ - void moveContactToGroup(const std::string & newGroupName, - const std::string & oldGroupName, const IMContact & imContact); - - /** - * Tells IMContactListHandler to unregister to all registered Events. - */ - void unregisterAllEvents(); - -private: - - /** - * @see IMContactList::newContactAddedEvent - */ - void newContactAddedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId); - - /** - * @see IMContactList::contactRemovedEvent - */ - void contactRemovedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId); - - /** - * @see IMContactList::contactMovedEvent - */ - void contactMovedEventHandler(IMContactList & sender, - std::string groupName, std::string contactId); - - /** - * @see IMContactList::newContactGroupAddedEvent - */ - void newContactGroupAddedEventHandler(IMContactList & sender, std::string groupName); - - /** - * @see IMContactList::contactGroupRemovedEvent - */ - void contactGroupRemovedEventHandler(IMContactList & sender, std::string groupName); - - /** - * @see IMAccountManager::imAccountAddedEvent - */ - void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMAccountManager::imAccountRemovedEvent - */ - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - typedef std::map IMContactListMap; - IMContactListMap _imContactListMap; - - typedef std::list MyIMContactList; - MyIMContactList _imContactList; - - UserProfile & _userProfile; -}; - -#endif //IMCONTACTLISTHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfTheme.cpp qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfTheme.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfTheme.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfTheme.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,252 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "DtmfTheme.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include - -DtmfTheme::DtmfTheme(WengoPhone & wengoPhone, - const std::string & repertory, const std::string & xmlDescriptor) - : _repertory(repertory), - _wengoPhone(wengoPhone) { - - _dialpadMode = plain; - - _xmlDescriptor = _repertory + xmlDescriptor; - TiXmlDocument doc; - doc.LoadFile(_xmlDescriptor); - - TiXmlHandle docHandle(&doc); - - //extract info from the dialpad element - TiXmlElement * dialpadElt = docHandle.FirstChild("dialpad").Element(); - if (dialpadElt) { - - const char * attr = dialpadElt->Attribute("mode"); - if (attr) { - if (std::string(attr) == "plain") { - _dialpadMode = plain; - } else if (std::string(attr) == "iconified") { - _dialpadMode = iconified; - } else if (std::string(attr) == "svg") { - _dialpadMode = svg; - } else { - _dialpadMode = unknown; - } - } - - attr = dialpadElt->Attribute("name"); - if (attr) { - _name = std::string(attr); - } - - attr = dialpadElt->Attribute("pixmap"); - if (attr) { - _imageFile = std::string(attr); - } - } - - TiXmlElement * tonesNode = dialpadElt->FirstChildElement("tones"); - if (tonesNode) { - - //iterate over - TiXmlElement * toneElt = tonesNode->FirstChildElement("tone"); - while (toneElt) { - - std::string key; - std::string soundFile; - std::string text; - std::string imageFile; - Tone::Action localAction = Tone::Play; - Tone::Action remoteAction = Tone::Play; - Tone::AudioFormat audioFormat = Tone::Raw; - - //extract the attribut key, sound_file & audioformat - const char * attr = toneElt->Attribute("key"); - if (attr) { - key = std::string(attr); - } - - attr = toneElt->Attribute("format"); - std::string audioType; - if (attr) { - if (std::string(attr) == "raw") { - audioFormat = Tone::Raw; - audioType = ".raw"; - } else if (std::string(attr) == "wav") { - audioFormat = Tone::Wav; - audioType = ".wav"; - } else if (std::string(attr) == "dtmf") { - audioFormat = Tone::Dtmf; - audioType = ".wav"; - } else { - audioFormat = Tone::Unknown; - LOG_ERROR("This sound format does not exist !"); - } - - if (key == "*" ) { - soundFile = "sound_star" + audioType; - } else if (key == "#" ) { - soundFile = "sound_pound" + audioType; - } else { - soundFile = "sound_" + key + audioType; - } - } - - //local, remote, ... - attr = toneElt->Attribute("local"); - if (attr) { - if (std::string(attr) == "play") { - localAction = Tone::Play; - } else { - localAction = Tone::None; - } - } - - attr = toneElt->Attribute("remote"); - if (attr) { - if (std::string(attr) == "play") { - remoteAction = Tone::Play; - } else { - remoteAction = Tone::None; - } - } - - attr = toneElt->Attribute("image_file"); - if (attr) { - imageFile = std::string(attr); - } - - attr = toneElt->Attribute("text"); - if (attr) { - text = std::string(attr); - } - - //the minimum to have a valid Tone - if ((!key.empty()) && (audioFormat != Tone::Unknown)) { - Tone * tone = new Tone(key, soundFile, text, imageFile, - localAction, remoteAction, audioFormat - ); - _toneList[key] = tone; - } - - toneElt = toneElt->NextSiblingElement("tone"); - } - } -} - -DtmfTheme::~DtmfTheme() { -} - -std::string DtmfTheme::getName() const { - return _name; -} - -void DtmfTheme::playTone(const std::string & key) const { - - const Tone * tone = getTone(key); - if (!tone) { - LOG_WARN("Could not find a tone for key '" + key + "'"); - return; - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string soundfile = _repertory + tone->getSoundFile(); - - if (tone->getLocalAction() == Tone::Play) { - Sound::play(File::convertPathSeparators(soundfile), - config.getAudioRingerDeviceId() - ); - } - - if (tone->getRemoteAction() == Tone::Play) { - UserProfile * userprofile = - _wengoPhone.getUserProfileHandler().getCurrentUserProfile(); - if (userprofile) { - IPhoneLine * iphoneline = userprofile->getActivePhoneLine(); - if (iphoneline) { - PhoneCall * phonecall = iphoneline->getActivePhoneCall(); - if (phonecall) { - - if (tone->getAudioFormat() == Tone::Dtmf) { - iphoneline->playDtmf( - phonecall->getCallId(), - (char)tone->getKey()[0] - ); - } else { - iphoneline->playSoundFile( - phonecall->getCallId(), - File::convertPathSeparators(soundfile) - ); - } - } - } - } - } -} - -StringList DtmfTheme::getToneList() const { - - StringList toReturn; - - DtmfTheme::ToneList::const_iterator it; - for (it = _toneList.begin(); it != _toneList.end(); it++) { - toReturn.push_back((*it).first); - } - - return toReturn; -} - -const Tone * DtmfTheme::getTone(const std::string & key) const { - - DtmfTheme::ToneList::const_iterator it; - for (it = _toneList.begin(); it != _toneList.end(); it++) { - - if ((*it).first == key) { - return (*it).second; - } - } - return NULL; -} - -std::string DtmfTheme::getImageFile() const { - return _imageFile; -} - -DtmfTheme::DialpadMode DtmfTheme::getDialpadMode() const { - return _dialpadMode; -} - -std::string DtmfTheme::getRepertory() const { - return _repertory; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfTheme.h qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfTheme.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfTheme.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfTheme.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWDTMFTHEME_H -#define OWDTMFTHEME_H - -#include "Tone.h" - -#include - -#include -#include - -class WengoPhone; - -/** - * Dtmf theme. - * - * @ingroup model - * @author Mathieu Stute - */ -class DtmfTheme { - friend class DtmfThemeManager; - typedef std::map ToneList; -public: - - enum DialpadMode { - plain, - iconified, - svg, - unknown - }; - - ~DtmfTheme(); - - std::string getName() const; - - StringList getToneList() const; - - const Tone * getTone(const std::string & key) const; - - void playTone(const std::string & key) const; - - std::string getImageFile() const; - - std::string getRepertory() const; - - DtmfTheme::DialpadMode getDialpadMode() const; - -private: - - DtmfTheme(WengoPhone & wengoPhone, const std::string & repertory, const std::string & xmlDescriptor); - - std::string _repertory; - - std::string _xmlDescriptor; - - std::string _name; - - std::string _imageFile; - - DtmfTheme::DialpadMode _dialpadMode; - - ToneList _toneList; - - WengoPhone & _wengoPhone; -}; - -#endif //OWDTMFTHEME_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,178 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "DtmfThemeManager.h" - -#include - -#include -#include - -using namespace std; - -DtmfThemeManager::DtmfThemeManager(WengoPhone & wengoPhone, const string & dtmfDirPath) - : _dtmfDirPath(dtmfDirPath), - _wengoPhone(wengoPhone) { - - constructDTMF(); -} - -DtmfThemeManager::~DtmfThemeManager() { - deleteDTMF(); -} - -void DtmfThemeManager::constructDTMF() { - File dir(_dtmfDirPath); - StringList dirList = dir.getDirectoryList(); - - //iterate over dtmf dir - for (unsigned int i = 0; i != dirList.size(); i++) { - - File themeDir( - _dtmfDirPath + - File::getPathSeparator() + - dirList[i] + - File::getPathSeparator() - ); - StringList fileList = themeDir.getFileList(); - - //iterate over files - for (unsigned int j = 0; j != fileList.size(); j++) { - - //find the .xml file - string filename = fileList[j]; - string ext = filename.substr(filename.size() - 4, fileList[j].size() - 1); - if (ext == string(".xml")) { - - string themeRepertory = - _dtmfDirPath + dirList[i] + File::getPathSeparator(); - - //build DtmfTheme - DtmfTheme * theme = new DtmfTheme( - _wengoPhone, themeRepertory, fileList[j] - ); - -#if defined(OS_MACOSX) - /* - * some audio smileys are deactivated on MacOS X because Raw files cannot - * currently be played on this platform. - */ - - bool isRaw = false; - if (theme->getTone("0")->getAudioFormat() == Tone::Raw) { - isRaw = true; - } - if (!isRaw && (theme->getTone("1")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("2")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("3")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("4")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("5")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("6")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("7")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("8")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("9")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("#")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - if (!isRaw && (theme->getTone("*")->getAudioFormat() == Tone::Raw)) { - isRaw = true; - } - - if (isRaw) { - LOG_DEBUG("\n\nfind a xml file: " + fileList[j] + "\n -> CONTAIN RAW !! \n"); - OWSAFE_DELETE(theme); - continue; - } -#endif - - //add it in the list - _dtmfThemeList[theme->getName()] = theme; - LOG_DEBUG("find a theme : " + fileList[j]); - } - } - } -} - -void DtmfThemeManager::deleteDTMF() { - - //delete allocated DtmfTheme - DtmfThemeManager::DtmfThemeList::const_iterator it; - const DtmfTheme * ref = NULL; - for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { - ref = (*it).second; - if (ref) { - OWSAFE_DELETE(ref); - } - } - OWSAFE_DELETE(ref); - _dtmfThemeList.clear(); -} - -bool DtmfThemeManager::refreshDtmfThemes() { - - //delete old themes - deleteDTMF(); - - //construct new themes - constructDTMF(); - - return true; -} - -StringList DtmfThemeManager::getThemeList() const { - - StringList toReturn; - - DtmfThemeManager::DtmfThemeList::const_iterator it; - for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { - toReturn.push_back((*it).first); - } - - return toReturn; -} - -const DtmfTheme * DtmfThemeManager::getDtmfTheme(const string & themeName) const { - - DtmfThemeManager::DtmfThemeList::const_iterator it; - for (it = _dtmfThemeList.begin(); it != _dtmfThemeList.end(); it++) { - if (((*it).first) == themeName) { - return (*it).second; - } - } - - return NULL; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.h qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/DtmfThemeManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWDTMFTHEMEMANAGER_H -#define OWDTMFTHEMEMANAGER_H - -#include "DtmfTheme.h" - -#include - -#include -#include - -class WengoPhone; - -/** - * Dtmf theme. - * - * @ingroup model - * @author Mathieu Stute - */ -class DtmfThemeManager { -public: - - DtmfThemeManager(WengoPhone & wengoPhone, const std::string & dtmfDirPath); - - ~DtmfThemeManager(); - - StringList getThemeList() const; - - const DtmfTheme * getDtmfTheme(const std::string & themeName) const; - - bool refreshDtmfThemes(); - -private: - - void constructDTMF(); - - void deleteDTMF(); - - typedef std::map DtmfThemeList; - - DtmfThemeList _dtmfThemeList; - - std::string _dtmfDirPath; - - WengoPhone & _wengoPhone; -}; - -#endif //OWDTMFTHEMEMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/Tone.cpp qutecom-2.2+dfsg1/wengophone/src/model/dtmf/Tone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/Tone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/Tone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Tone.h" - -#include - -Tone::Tone(const std::string & key, const std::string & soundFile, - const std::string & text, const std::string & imageFile, - Tone::Action localAction, Tone::Action remoteAction, - Tone::AudioFormat audioFormat) : - _localAction(localAction), - _remoteAction(remoteAction), - _audioFormat(audioFormat), - _imageFile(imageFile), - _soundFile(soundFile), - _text(text), - _key(key) { -} - -Tone::~Tone() { -} - -std::string Tone::getImageFile() const { - return _imageFile; -} - -std::string Tone::getSoundFile() const { - return _soundFile; -} - -std::string Tone::getText() const { - return _text; -} - -std::string Tone::getKey() const { - return _key; -} - -Tone::Action Tone::getLocalAction() const { - return _localAction; -} - -Tone::Action Tone::getRemoteAction() const { - return _remoteAction; -} - -Tone::AudioFormat Tone::getAudioFormat() const { - return _audioFormat; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/Tone.h qutecom-2.2+dfsg1/wengophone/src/model/dtmf/Tone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/dtmf/Tone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/dtmf/Tone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWTONE_H -#define OWTONE_H - -#include - -/** - * Dtmf theme. - * - * @ingroup model - * @author Mathieu Stute - */ -class Tone { - friend class DtmfTheme; -public: - - enum Action { - Play, - None, - }; - - enum AudioFormat { - Dtmf, - Raw, - Wav, - Unknown, - }; - - ~Tone(); - - std::string getKey() const; - - std::string getSoundFile() const; - - std::string getText() const; - - std::string getImageFile() const; - - Tone::Action getLocalAction() const; - - Tone::Action getRemoteAction() const; - - Tone::AudioFormat getAudioFormat() const; - -private: - - Tone(const std::string & key, - const std::string & soundFile, - const std::string & text = "", - const std::string & imageFile = "", - Tone::Action localAction = Tone::Play, - Tone::Action remoteAction = Tone::Play, - Tone::AudioFormat audioFormat = Tone::Raw - ); - - /* action for local */ - Tone::Action _localAction; - - /* action for remote */ - Tone::Action _remoteAction; - - /* the format of the sound file associated with this Tone */ - Tone::AudioFormat _audioFormat; - - /* the path to the image file associated with this Tone */ - std::string _imageFile; - - /* the path to the sound file associated with this Tone */ - std::string _soundFile; - - /* the text string associated with this Tone. */ - std::string _text; - - /* the code of the key associated with this Tone. */ - std::string _key; -}; - -#endif //OWTONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/History.cpp qutecom-2.2+dfsg1/wengophone/src/model/history/History.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/History.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/History.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,483 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "History.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - - -History::History(UserProfile & userProfile) - : _userProfile(userProfile) { - - _collection = new HistoryMementoCollection(); - _missedCallCount = 0; -} - -History::~History() { -} - -HistoryMementoCollection * History::getHistoryMementoCollection() { - return _collection; -} - -unsigned int History::addMemento(HistoryMemento * memento) { - unsigned id = _collection->addMemento(memento); - mementoAddedEvent(*this, id); - return id; -} - -void History::updateCallDuration(int callId, int duration) { - HistoryMemento * memento = _collection->getMementoByCallId(callId); - if (memento) { - memento->updateDuration(duration); - unsigned id = _collection->getMementoId(memento); - mementoUpdatedEvent(*this, id); - } -} - -void History::updateSMSState(int callId, HistoryMemento::State state) { - HistoryMemento * memento = _collection->getMementoBySMSId(callId); - if (memento) { - memento->updateState(state); - unsigned id = _collection->getMementoId(memento); - mementoUpdatedEvent(*this, id); - } -} - -void History::updateCallState(int callId, HistoryMemento::State state) { - HistoryMemento * memento = _collection->getMementoByCallId(callId); - if (memento) { - memento->updateState(state); - unsigned id = _collection->getMementoId(memento); - mementoUpdatedEvent(*this, id); - - if (state == HistoryMemento::MissedCall) { - _missedCallCount++; - unseenMissedCallsChangedEvent(*this, _missedCallCount); - } - } -} - -unsigned int History::size() const { - return _collection->size(); -} - -std::string History::serialize() { - std::stringstream ss; - try { - boost::archive::xml_oarchive oa(ss); - oa << BOOST_SERIALIZATION_NVP(_collection); - oa << BOOST_SERIALIZATION_NVP(_missedCallCount); - } catch (boost::archive::archive_exception & e) { - LOG_DEBUG(e.what()); - return String::null; - } - return ss.str(); -} - -bool History::unserialize(const std::string & data) { - std::stringstream ss(data); - try { - boost::archive::xml_iarchive ia(ss); - ia >> BOOST_SERIALIZATION_NVP(_collection); - ia >> BOOST_SERIALIZATION_NVP(_missedCallCount); - } catch (boost::archive::archive_exception & e) { - LOG_DEBUG(e.what()); - return false; - } - return true; -} - -void History::clear(HistoryMemento::State state, bool notify) { - _collection->clear(state); - if (notify) { - mementoRemovedEvent(*this, 0); - } -} - -std::string History::toString() const { - return _collection->toString(); -} - -void History::removeMemento(unsigned id) { - _collection->removeMemento(id); - mementoRemovedEvent(*this, id); -} - -HistoryMemento * History::getMemento(unsigned id) { - Mutex::ScopedLock scopedLock(_mutex); - - return _collection->getMemento(id); -} - -HistoryMementoCollection * History::getMementos(HistoryMemento::State state, int count) { - Mutex::ScopedLock scopedLock(_mutex); - - return _collection->getMementos(state, count); -} - -bool History::load(const std::string & url) { - FileReader file(url); - - if (file.open()) { - std::string data = file.read(); - - //clear & unserialize the history - clear(HistoryMemento::Any, false); - bool toReturn = unserialize(data); - historyLoadedEvent(*this); - - return toReturn; - } - - return true; -} - -bool History::save(const std::string & url) { - FileWriter file(url); - - file.write(serialize()); - - historySavedEvent(*this); - - return true; -} - -void History::replay(unsigned id) { - - //replay only outgoing call - if (getMemento(id)->isCallMemento()) { - std::string phoneNumber = getMemento(id)->getPeer(); - _userProfile.getActivePhoneLine()->makeCall(phoneNumber); - } -} - -void History::resetUnseenMissedCalls() { - _missedCallCount = 0; - unseenMissedCallsChangedEvent(*this, _missedCallCount); -} - -int History::getUnseenMissedCalls() { - Mutex::ScopedLock scopedLock(_mutex); - - return _missedCallCount; -} -bool History::loadChatLog(std::string chatlog, HistoryMementoCollection * hmc, std::string * userlogin, StringList * cuuidList) { - - // complete filename - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string filename = File::convertPathSeparators( - config.getConfigDir() + "chatlogs" + File::getPathSeparator() - + _userProfile.getName() + File::getPathSeparator() - + chatlog + ".xml" - ); - //// - - //open and read chat log - FileReader file( filename ); - if(!file.open()) { - return false; - } - std::string lu = file.read(); - std::stringstream ss(lu); - boost::archive::xml_iarchive ia(ss); - //// - - // contact - int nbcontact = 0; - ia >> BOOST_SERIALIZATION_NVP(nbcontact); - for( int ic = 0; ic < nbcontact; ++ic) { - std::string cuuid; - ia >> BOOST_SERIALIZATION_NVP(cuuid); - cuuidList->push_back(cuuid); - } - - //user login - ia >> BOOST_SERIALIZATION_NVP(*userlogin); - - //number of message - int size = 0; - ia >> BOOST_SERIALIZATION_NVP(size); - - //load every message - std::string date, peer, data; - for(int i = 0; i < size; ++i) { - - // - // more compact serialization - // - //ia >> BOOST_SERIALIZATION_NVP(date); - //ia >> BOOST_SERIALIZATION_NVP(peer); - //ia >> BOOST_SERIALIZATION_NVP(data); - - //Date fdate( String(date.substr(8,2)).toInteger(), - // String(date.substr(5,2)).toInteger(), - // String(date.substr(0,4)).toInteger()); - - //Time ftime( String(date.substr(11,2)).toInteger(), - // String(date.substr(14,2)).toInteger(), - // String(date.substr(17,4)).toInteger()); - - //HistoryMemento* hm = new HistoryMemento(HistoryMemento::ChatSession, fdate, ftime, peer, -1, data); - - HistoryMemento* hm = new HistoryMemento(); - hm->load(ia,HistoryMemento::SERIALIZATION_VERSION); - - /** duration -1 means it is an history message */ - hm->updateDuration(-1); - - hmc->addMemento(hm); - } - return true; -} - -bool History::addChatMementoSession(IMChatSession * imchatSession) { - int chatSessionID = imchatSession->getId(); - if(_chatSessionsMementos[chatSessionID] == NULL){ - _chatSessionsMementos[chatSessionID] = new HistoryMementoCollection(); - -/** reload chat log (lost feature) ***/ -// -// //load last chat log -// IMContactSet contactSet = imchatSession->getIMContactSet(); -// -// // TO DO loop on all contacts ?? for now it could only be 1 contact... -// IMContactSet::const_iterator itc = contactSet.begin(); -// //// -// Contact * thecontact = _userProfile.getContactList().findContactThatOwns(*itc); -// if(!thecontact) { -// return true; -// } -// std::string repload = File::convertPathSeparators( -// Path::getWengoConfigurationDirPath() + "chatlogs" + File::getPathSeparator() -// + _userProfile.getName() + File::getPathSeparator() -// ); -// FileReader filec( repload + thecontact->getUUID() + ".xml" ); -// if(!filec.open()) { -// return true; -// } -// std::string readdatas = filec.read(); -// -// //parse datas -// TiXmlDocument doc; -// doc.Parse(readdatas.c_str()); -// TiXmlHandle docHandle(&doc); -// -// TiXmlNode * lastChat= NULL; -// while ((lastChat = docHandle.ToNode()->IterateChildren("chat", lastChat))) { -// std::string filechat(lastChat->FirstChild("id")->ToElement()->GetText()); -// -// std::string username; -// StringList cuuidList; -// if (!loadChatLog(filechat,_chatSessionsMementos[chatSessionID], &username, &cuuidList)) { -// continue; -// } -// } -/**********/ - - return true; - } - return false; -} - -void History::removeChatMementoSession(IMChatSession * imchatSession) { - int chatSessionID = imchatSession->getId(); - - HistoryMementoCollection * collection = NULL; - if((collection = _chatSessionsMementos[chatSessionID]) != NULL){ - //seek for history chat - int nbhistory = 0; - HistoryMap::iterator ithm; - for (ithm = collection->begin(); ithm != collection->end(); ++ithm) { - HistoryMemento* hm = ithm->second; - - // duration -1 means it is an history message - if( hm->getDuration() != -1 ) { - break; - } - ++nbhistory; - } - //// - - // don't save empty chat history - int size = collection->size() - nbhistory; - if(size>0) { - //save chat log - Date saveDate; - Time saveTime; - std::string peer = ""; - std::string filechat = String::fromNumber(saveDate.getYear(), 2) + String::fromNumber(saveDate.getMonth(), 2) + - String::fromNumber(saveDate.getDay(), 2) + String::fromNumber(saveTime.getHour(), 2) + - String::fromNumber(saveTime.getMinute(), 2) + String::fromNumber(saveTime.getSecond(), 2)+ - "_" + String::fromNumber(chatSessionID); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string saverep = File::convertPathSeparators( - config.getConfigDir() + "chatlogs" + File::getPathSeparator() - + _userProfile.getName() + File::getPathSeparator() - ); - File::createPath(saverep); - //save file should be unique - while(File::exists(saverep + filechat + ".xml")) { - filechat += "_f"; - } - //// - FileWriter file(saverep + filechat+".xml"); - std::stringstream ss; - bool serializedSuccessfully = false; - try { - boost::archive::xml_oarchive oa(ss); - - //constructs list of login per peer - std::map*> aliasMap; - IMContactSet contactSet = imchatSession->getIMContactSet(); - for (IMContactSet::const_iterator itc = contactSet.begin(); itc != contactSet.end(); ++itc) { - Contact * thecontact = _userProfile.getContactList().findContactThatOwns(*itc); - std::string cuuid = "unrecognized"; - if(thecontact) { - cuuid = thecontact->getUUID(); - } - - if(aliasMap[cuuid] == NULL) { - aliasMap[cuuid] = new std::vector; - } - aliasMap[cuuid]->push_back(itc->cleanContactId()); - } - //// - - // saves number of peer in this chat - int nbcontact = aliasMap.size(); - oa << BOOST_SERIALIZATION_NVP(nbcontact); - //// - - //links all peers to this chat - for(std::map*>::const_iterator itam = aliasMap.begin(); - itam != aliasMap.end(); ++itam) { - - /** links peer -> chat */ - - //filechat - std::string tobewritten = "\n\t"+filechat+"\n"; - - //different login used by this peer during this chat - for(std::vector::const_iterator itv = itam->second->begin(); itv != itam->second->end(); ++itv) { - tobewritten += "\t" + (*itv) + "\n"; - - peer += "," + (*itv); - } - - //// - - tobewritten += "\n"; - ///// - - std::string cuuid = itam->first; - FileWriter contactFile( saverep + cuuid + ".xml" ); - contactFile.setAppendMode(true); - contactFile.write(tobewritten); - - /** links chat -> peer */ - oa << BOOST_SERIALIZATION_NVP(cuuid); - } - //// - - // saves user login for this chat - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imchatSession->getIMChat().getIMAccountId()); - std::string userlogin; - if (imAccount) { - userlogin = imAccount->getLogin(); - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("cannot find the IMAccount"); - } - oa << BOOST_SERIALIZATION_NVP(userlogin); - //// - - // saves size - oa << BOOST_SERIALIZATION_NVP(size); - - // save all historymementos i.e. all message - for (;ithm != collection->end(); ++ithm) { - HistoryMemento* hm = ithm->second; - - // - // more compact serialization - // - //std::string date = hm->getDate().toString() + " " + hm->getTime().toString(); - //oa << BOOST_SERIALIZATION_NVP(date); - //std::string peer = hm->getPeer(); - //oa << BOOST_SERIALIZATION_NVP(peer); - //std::string data = hm->getData(); - //oa << BOOST_SERIALIZATION_NVP(data); - - hm->save(oa,HistoryMemento::SERIALIZATION_VERSION); - - } - serializedSuccessfully = true; - } catch (boost::archive::archive_exception & e) { - LOG_DEBUG(e.what()); - file.write(String::null); - } - - if (serializedSuccessfully) { - // xml_oarchive write the end of the xml in its destructor. - // This is why we do not write inside the try {} catch block - // because we would write before the xml_oarchive object is - // deleted. - file.write(ss.str()); - } - - if (peer.size() > 1) { - peer = peer.substr(1); - } - - HistoryMemento * historyMemento = new HistoryMemento(HistoryMemento::ChatSession, saveDate, saveTime, peer, -1, filechat); - historyMemento->updateDuration(0); - _userProfile.getHistory().addMemento(historyMemento); - } - _chatSessionsMementos.erase(chatSessionID); - delete collection; - } -} - -unsigned History::addChatMemento(HistoryMemento * memento, int chatSessionID) { - unsigned id = _chatSessionsMementos[chatSessionID]->addMemento(memento); - chatMementoAddedEvent(*this, id); - return id; -} - -HistoryMementoCollection * History::getSessionCollection(int chatSessionID) { - return _chatSessionsMementos[chatSessionID]; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/History.h qutecom-2.2+dfsg1/wengophone/src/model/history/History.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/History.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/History.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,295 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWHISTORY_H -#define OWHISTORY_H - -#include "HistoryMemento.h" -#include "HistoryMementoCollection.h" - -#include -#include -#include -#include - -#include -#include - -class UserProfile; -class IMContactSet; - -/** - * History (Care Taker in the Memento pattern) - * - * example: serialization example - *
- *	std::ofstream ofs("history.log");
- *	ofs << History::history.serialize();
- *	ofs.close();
- *	
- * - * example: unserialize a History - *
- *	std::string lines;
- *
- *	// assum you have read the save file
- *	// and you have the content of this file
- *	// in the std::string lines
- *
- *	History::history.unserialize(lines);
- *	
- * - * @author Mathieu Stute - */ -class History : public Serializable { -public: - - /** - * The history has been loaded. - */ - Event historyLoadedEvent; - - /** - * The history has been saved. - */ - Event historySavedEvent; - - /** - * A memento has been added. - */ - Event mementoAddedEvent; - - /** - * A chat memento has been added. - */ - Event chatMementoAddedEvent; - - /** - * A memento has been updated. - */ - Event mementoUpdatedEvent; - - /** - * A memento has been removed. - */ - Event mementoRemovedEvent; - - /** - * Unseen missed calls changed event. - */ - Event unseenMissedCallsChangedEvent; - - /** - * Default constructor - * - * @param wengophone a pointer to WengoPhone - */ - History(UserProfile & userProfile); - - /** - * destructor. - */ - ~History(); - - bool load(const std::string & url); - - bool save(const std::string & url); - - /** - * get a HistoryMemento by its id. - * - * @param id the id - * @return the HistoryMemento with the given id - */ - HistoryMemento * getMemento(unsigned id); - - /** - * get a HistoryMementoCollection containing all mementos - * that match state. - * - * @param state filter memento by State - * @param count specify number of mementos to be returned - * @return a pointer to a HistoryMementoCollection - */ - HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1); - - /** - * remove a memento by its id. - * - * @param id the id - */ - void removeMemento(unsigned id); - - /** - * Clear entries of the history - * @param state type of entries to remove - */ - void clear(HistoryMemento::State state = HistoryMemento::Any, bool notify = true); - - /** - * return the number of HistoryMemento's. - * - * @return the number of HistoryMemento's - */ - unsigned size() const; - - /** - * add a history memento to the history. - * - * @param memento the memento to add - * @return the id of the memento - */ - unsigned addMemento(HistoryMemento * memento); - - /** - * Return a string representing this object. - * - * @return a string representing this object - */ - std::string toString() const; - - /** - * return a pointer to the HistoryMementoCollection. - * - * @return a pointer to the HistoryMementoCollection - */ - HistoryMementoCollection * getHistoryMementoCollection(); - - /** - * update a memento duration (for incoming/outgoing calls). - * - * @param callId callId associated to the memento - * @param duration duration - */ - void updateCallDuration(int callId, int duration); - - /** - * update a memento state (for incoming/outgoing calls). - * - * @param callId callId associated to the memento - * @param state the new state - */ - void updateCallState(int callId, HistoryMemento::State state); - - /** - * update a memento internal state (for SMS). - * - * @param callId callId associated to the memento - * @param state new state - */ - void updateSMSState(int callId, HistoryMemento::State state); - - /** - * update a memento internal state (for SMS). - * - * @param id memento to replay - */ - void replay(unsigned id); - - /** - * Reset unseen missed calls. - * - */ - void resetUnseenMissedCalls(); - - /** - * Returns the unseen missed calls count. - * - * @return unseen missed calls count - */ - int getUnseenMissedCalls(); - - /** - * Loads a collection of History from a saved chat log - * - *@param chatlog name of the file where the chat log is saved - *@param hmc HistoryMementoCollection to complete with chat messages - *@param userlogin login used by the user - *@return true if chat log has been loaded - */ - bool loadChatLog(std::string chatlog, HistoryMementoCollection * hmc, std::string * userlogin, StringList * cuuidList); - - /** - * Creates a new collection of History Memento for new a chat session - * - * @param chatSessionID : the ID of the chat sesssion - * @return true if the session has been added; false else - */ - bool addChatMementoSession(IMChatSession * imchatSession); - - /** - * Removes a collection of History Memento of a closing chat session - * - * @param chatSessionID : the ID of the chat sesssion - */ - void removeChatMementoSession(IMChatSession * imchatSession); - - /** - * add memento into the right chat memento collection - * - * @param memento the memento to add - * @param chatSessionID the ID of the chat sesssion to which the memento belongs - * @return the id of the memento - */ - unsigned addChatMemento(HistoryMemento * memento, int chatSessionID); - - /** - * Access to the collection corresponding to chatSessionID - * - * @param chatSessionID : the ID of the chat sesssion - * @return pointor to the HistoryMementoCollection of te chat session - */ - HistoryMementoCollection * getSessionCollection(int chatSessionID); - -private: - - /** - * Serialize the history. - */ - std::string serialize(); - - /** - * Serialize the history. - */ - bool unserialize(const std::string & data); - - /** - * Private HistoryMementoList that store - * all HistoryMemento objects. - */ - HistoryMementoCollection *_collection; - - /** - * Set of History Memento Collection that store every message - * of a chat session. - */ - std::map _chatSessionsMementos; - - /** A ref to UserProfile */ - UserProfile & _userProfile; - - /** Unseen missed calls count. */ - int _missedCallCount; - - /** Mutex for thread-safe. */ - mutable Mutex _mutex; -}; - -#endif //OWHISTORY_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMementoCollection.cpp qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMementoCollection.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMementoCollection.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMementoCollection.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,183 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "HistoryMementoCollection.h" - -#include -#include - -unsigned int HistoryMementoCollection::_historyId = 0; - -HistoryMementoCollection::HistoryMementoCollection() { -} - -HistoryMementoCollection::~HistoryMementoCollection() { -} - -unsigned int HistoryMementoCollection::addMemento(HistoryMemento * memento) { - _privateCollection[_historyId] = memento; - _historyId++; - return _historyId - 1; -} - -HistoryMemento * HistoryMementoCollection::getMementoByCallId(int callId) { - if( callId != -1 ) { - HistoryMap::iterator it; - for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { - if( ((*it).second->isCallMemento()) && - ((*it).second->getCallId() == callId) ) { - return (*it).second; - } - } - } - return NULL; -} - -HistoryMemento * HistoryMementoCollection::getMementoBySMSId(int callId) { - if( callId != -1 ) { - HistoryMap::iterator it; - for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { - if( ((*it).second->isSMSMemento()) && - ((*it).second->getCallId() == callId)) { - return (*it).second; - } - } - } - return NULL; -} - -unsigned int HistoryMementoCollection::size() { - return _privateCollection.size(); -} - -HistoryMemento * HistoryMementoCollection::getMemento(unsigned int id) { - HistoryMap::iterator it = _privateCollection.find(id); - if (it != _privateCollection.end()) { - return it->second; - } else { - return NULL; - } -} - -void HistoryMementoCollection::removeMemento(unsigned int id) { - _privateCollection.erase(_privateCollection.find(id)); -} - -void HistoryMementoCollection::clear(HistoryMemento::State state) { - - int id = -1; - HistoryMemento * ref = NULL; - - HistoryMap::iterator it; - for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { - - if( ref ) { - delete ref; - _privateCollection.erase(id); - } - - if( ((*it).second->getState() == state) || (state == HistoryMemento::Any)) { - - id = (*it).first; - ref = (*it).second; - - } else { - ref = NULL; - } - } - - if(ref) { - delete ref; - _privateCollection.erase(id); - } -} - -void HistoryMementoCollection::setMaxEntries(unsigned int max) { - LOG_WARN("Not implemented yet"); -} - -void HistoryMementoCollection::privateAdd(unsigned int id, HistoryMemento * memento) { - _privateCollection[id] = memento; -} - -HistoryMementoCollection * HistoryMementoCollection::getMementos(HistoryMemento::State state, int count, bool noDuplicates) { - - int c = 0; - HistoryMementoCollection * toReturn = new HistoryMementoCollection(); - - HistoryMap::reverse_iterator it; - for (it = _privateCollection.rbegin(); it != _privateCollection.rend(); it++) { - - if ((state == HistoryMemento::Any) || ((*it).second->getState() == state)) { - - if (noDuplicates) { - if (HistoryMementoCollection::isPeerInCollection(toReturn, ((*it).second)->getPeer())) { - continue; - } - } - - toReturn->privateAdd((*it).first, (*it).second); - c++; - } - - if (c >= count) { - break; - } - } - return toReturn; -} - -HistoryMap::iterator HistoryMementoCollection::begin() { - return _privateCollection.begin(); -} - -HistoryMap::iterator HistoryMementoCollection::end() { - return _privateCollection.end(); -} - -std::string HistoryMementoCollection::toString() { - std::string toReturn = "_historyId: " + String::fromNumber(_historyId) + "\n"; - - HistoryMap::iterator it; - for (it = _privateCollection.begin(); it != _privateCollection.end(); it++) { - toReturn += ( "id: " + String::fromNumber((*it).first) + "/" + (*it).second->toString() + "\n"); - } - return toReturn; -} - -unsigned int HistoryMementoCollection::getMementoId(HistoryMemento * memento) { - HistoryMap::iterator it; - for(it = _privateCollection.begin(); it != _privateCollection.end(); it++) { - if( (*it).second == memento ) { - return (*it).first; - } - } - return 0; -} - -bool HistoryMementoCollection::isPeerInCollection(HistoryMementoCollection * collection, const std::string & peer) { - HistoryMap::iterator it; - for (it = collection->begin(); it != collection->end(); it++) { - HistoryMemento * memento = (*it).second; - if ((memento->getPeer() == peer)) { - return true; - } - } - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMementoCollection.h qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMementoCollection.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMementoCollection.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMementoCollection.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,193 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OW_HISTORYMEMENTOLIST_H -#define OW_HISTORYMEMENTOLIST_H - -#include "HistoryMemento.h" - -#include -#include - -#include -#include -#include -#include - -typedef std::map HistoryMap; - -/** - * HistoryMementoCollection stores a set of HistoryMemento - * - * @author Mathieu Stute - */ -class HistoryMementoCollection { - friend class History; -public: - - static const unsigned int SERIALIZATION_VERSION = 2; - - /** - * Default constructor. - */ - HistoryMementoCollection(); - - /** - * Default destructor. - */ - ~HistoryMementoCollection(); - - /** - * Add a HistoryMemento. - * - * @param memento the HistoryMemento to add - * @return the id of the memento - */ - unsigned int addMemento(HistoryMemento * memento); - - /** - * get a HistoryMemento by its id. - * - * @param id the id - * @return the HistoryMemento with the given id - */ - HistoryMemento * getMemento(unsigned int id); - - /** - * remove a memento by its id. - * - * @param id the id - */ - void removeMemento(unsigned int id); - - /** - * Clear all mementos. - */ - void clear(HistoryMemento::State state); - - /** - * Return the number of entries. - * - * @return the number of entries - */ - unsigned int size(); - - /** - * Return a string representing this object. - * - * @return a string representing this object - */ - std::string toString(); - - /** - * Returns an iterator pointing to the beginning of the map. - * - * @return an iterator pointing to the beginning of the map. - */ - HistoryMap::iterator begin(); - - /** - * Returns an iterator pointing to the end of the map. - * - * @return an iterator pointing to the end of the map. - */ - HistoryMap::iterator end(); - -private: - - /** - * get a HistoryMementoCollection containing all mementos - * that match state. - * - * @param state filter memento by State - * @param count specify number of mementos to be returned - * @param noDuplicates if true no duplicates mementos are returned - * @return a pointer to a HistoryMementoCollection - */ - HistoryMementoCollection * getMementos(HistoryMemento::State state, int count = -1, bool noDuplicates = true); - - /** - * Return the HistoryMemento's id associated to the given callId. - * - * @param callId the callId - * @return the HistoryMemento associated to callId - */ - HistoryMemento * getMementoByCallId(int callId); - - /** - * Return the HistoryMemento's id associated to the given SMS id. - * - * @param callId the SMS id - * @return the HistoryMemento associated to SMS id - */ - HistoryMemento * getMementoBySMSId(int callId); - - /** - * Add a HistoryMemento & do not increment the static int _historyId. - * - * @param memento the HistoryMemento to add - * @param id the id of the memento - */ - void privateAdd(unsigned int id, HistoryMemento * memento); - - /** - * Get the id of the memento - * - * @param memento the memento - * @return the id of the memento - */ - unsigned int getMementoId(HistoryMemento * memento); - - /** - * Set the max entries. - * - * @param max max entries - */ - void setMaxEntries(unsigned int max); - - /** - * Check if a peer in already in the collection. - * @param peer the peer. - * @return true if the peer is already in the collection. - */ - static bool isPeerInCollection(HistoryMementoCollection * collection, const std::string & peer); - - /** global static history id for mementos */ - static unsigned int _historyId; - - /** max entries of the history */ - unsigned int _maxEntries; - - /** private collection, handle a (id, memento) pair map */ - HistoryMap _privateCollection; - - friend class boost::serialization::access; - - /** serialialization method */ - template < class Archive > - void serialize(Archive & ar, const unsigned int version) { - ar & BOOST_SERIALIZATION_NVP(_historyId); - ar & BOOST_SERIALIZATION_NVP(_privateCollection); - } -}; - -BOOST_CLASS_VERSION(HistoryMementoCollection, HistoryMementoCollection::SERIALIZATION_VERSION) - -#endif //OW_HISTORYMEMENTOLIST_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMemento.cpp qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMemento.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMemento.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMemento.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "HistoryMemento.h" - -#include -#include - -HistoryMemento::HistoryMemento() { - _state = None; - _callId = -1; - _duration = 0; - _date = Date(); - _time = Time(); -} - -HistoryMemento::HistoryMemento(State state, const std::string & peer, int callId, const std::string & data,const std::string & alias) { - _state = state; - _peer = peer; - _callId = callId; - _duration = 0; - _date = Date(); - _time = Time(); - _data = data; - _alias = alias; -} - -HistoryMemento::HistoryMemento(State state, Date date, Time time, const std::string & peer, int callId, const std::string & data) { - _state = state; - _peer = peer; - _callId = callId; - _duration = 0; - _date = date; - _time = time; - _data = data; -} - -HistoryMemento::~HistoryMemento() { -} - -HistoryMemento::State HistoryMemento::getState() const { - return _state; -} - -std::string HistoryMemento::getPeer() const { - return _peer; -} - -int HistoryMemento::getDuration() const { - return _duration; -} - -Date HistoryMemento::getDate() const { - return _date; -} - -Time HistoryMemento::getTime() const { - return _time; -} - -int HistoryMemento::getCallId() const { - return _callId; -} - -std::string HistoryMemento::getData() const { - return _data; -} - -std::string HistoryMemento::getAlias() const { - return _alias; -} - -void HistoryMemento::updateDuration(int duration) { - _duration = duration; -} - -void HistoryMemento::updateState(State state) { - _state = state; -} - -bool HistoryMemento::canReplay() const { - return ((_state == OutgoingCall) || (_state == OutgoingSmsOk) || - (_state == IncomingCall) || (_state == MissedCall) || - (_state == RejectedCall)); -} - -bool HistoryMemento::isCallMemento() const { - return ((_state == OutgoingCall) || (_state == IncomingCall) || - (_state == MissedCall) || (_state == RejectedCall)); -} - -bool HistoryMemento::isSMSMemento() const { - return ((_state == OutgoingSmsOk) || (_state == OutgoingSmsNok)); -} - -bool HistoryMemento::isChatSessionMemento() const { - return (_state == ChatSession); -} - -std::string HistoryMemento::toString() const { - std::string toReturn; - static const std::string separator = "\n\t- "; - - toReturn += "Peer: " + _peer + separator; - toReturn += "date: " + _date.toString() + separator; - toReturn += "time: " + _time.toString() + separator; - toReturn += "duration: " + String::fromNumber(_duration) + separator; - toReturn += "state: " + stateToString(_state) + separator; - toReturn += "callid: " + String::fromNumber(_callId) + separator; - toReturn += "data: " + _data; - - return toReturn; -} - -std::string HistoryMemento::stateToString(State state) { - switch(state) { - case OutgoingCall: - return "StateOutgoingCall"; - - case IncomingCall: - return "StateIncomingCall"; - - case OutgoingSmsOk: - return "StateOutgoingSMSOK"; - - case OutgoingSmsNok: - return "StateOutgoingSMSNOK"; - - case RejectedCall: - return "StateRejectedCall"; - - case MissedCall: - return "StateMissedCall"; - - case None: - return "StateNone"; - - case Any: - return "StateAny"; - - case ChatSession: - return "StateChat"; - - default: - LOG_FATAL("unknown state=" + String::fromNumber(state)); - return ""; - } -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMemento.h qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMemento.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/history/HistoryMemento.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/history/HistoryMemento.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,284 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWHISTORYMEMENTO_H -#define OWHISTORYMEMENTO_H - -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include - -/** - * History Memento (Memento in the Memento pattern) - * - * @author Mathieu Stute - */ -class HistoryMemento { - friend class HistoryMementoCollection; - friend class History; -public: - - static const unsigned int SERIALIZATION_VERSION_V1 = 1; - static const unsigned int SERIALIZATION_VERSION_V2 = 2; - static const unsigned int SERIALIZATION_VERSION = SERIALIZATION_VERSION_V2; // latest version - - /** - * State of a memento. - */ - enum State { - IncomingCall, - OutgoingCall, - MissedCall, - RejectedCall, - OutgoingSmsOk, - OutgoingSmsNok, - ChatSession, - FileTransferUploaded, - FileTransferDownloaded, - FileTransferInProgress, - FileTransferCancelled, - FileTransferPaused, - None, - Any, - }; - - /** - * Default constructor. - */ - HistoryMemento(); - - /** - * Complete constructor. - */ - HistoryMemento(State state, const std::string & peer, int callId = -1, const std::string & data = "",const std::string & alias = "" ); - - /** - * a more complete constructor - */ - HistoryMemento(State state, Date date, Time time, const std::string & peer, int callId = -1, const std::string & data = ""); - - /** - * Default destructor. - */ - ~HistoryMemento(); - - /** - * Returns the state. - * - * @return the state - */ - HistoryMemento::State getState() const; - - /** - * Returns the peer. - * - * @return the peer - */ - std::string getPeer() const; - - /** - * Returns the duration. - * - * @return the duration - */ - int getDuration() const; - - /** - * Returns the date. - * - * @return the date - */ - Date getDate() const; - - /** - * Returns the time. - * - * @return the time - */ - Time getTime() const; - - /** - * Returns data. - * - * @return data - */ - std::string getData() const; - - - /** - * Returns alias. - * - * @return alias - */ - std::string getAlias() const; - - /** - * Returns true if the Memento can be replayed. - * - * @return true if the Memento can be replayed - */ - bool canReplay() const; - - /** - * update the duration. - * - * @param duration the duration of the call - */ - void updateDuration(int duration); - - /** - * Returns a string representing the memento. - * - * @return return a string representing the memento - */ - std::string toString() const; - -private: - - /** - * Returns true if the memento is for a call. - * - * @return true if the memento is for a call - */ - bool isCallMemento() const; - - /** - * Returns true if the memento is for a SMS. - * - * @return true if the memento is for a SMS - */ - bool isSMSMemento() const; - - /** - * Returns true if the memento is for a chat session. - * - * @return true if the memento is for a chat session - */ - bool isChatSessionMemento() const; - - /** - * Updates state. - * - * @param state new state - */ - void updateState(State state); - - /** - * Returns the callId associated to the memento. - * - * @return return the callId associated to the memento - */ - int getCallId() const; - - /** - * Returns a string representing a memento state. - * - * @return return a string representing a memento state - */ - static std::string stateToString(State state); - - /** - * the peer. - * TODO: replace by a set of peers (multi SMS, audio conf) - */ - std::string _peer; - - /** State of the Memento. */ - State _state; - - /** Date associated to the memento. */ - Date _date; - - /** Time associated to the memento. */ - Time _time; - - /** - * meaning: - * - text for SMS - * - filename for file transfer - */ - std::string _data; - - /** data: meaningfull only for calls. */ - int _duration; - - /** data: meaningfull only for calls from this instance of the application. */ - int _callId; - - /**display name used for sip message */ - std::string _alias; - - friend class boost::serialization::access; - - /** Serialialization load method. */ - template < class Archive > - void load(Archive & ar, const unsigned int version) { - if (version >= SERIALIZATION_VERSION_V1 && version <= SERIALIZATION_VERSION) { - ar >> BOOST_SERIALIZATION_NVP(_peer); - DateXMLSerializer d(_date); - std::string date; - ar >> BOOST_SERIALIZATION_NVP(date); - d.unserialize(date); - TimeXMLSerializer t(_time); - std::string time; - ar >> BOOST_SERIALIZATION_NVP(time); - t.unserialize(time); - ar >> BOOST_SERIALIZATION_NVP(_duration); - ar >> BOOST_SERIALIZATION_NVP(_state); - ar >> BOOST_SERIALIZATION_NVP(_data); - if(version >= SERIALIZATION_VERSION_V2) { - ar >> BOOST_SERIALIZATION_NVP(_alias); - } - } else { - //LOG_DEBUG("Bad Serialization Version"); - } - } - - /** Serialialization save method. */ - template < class Archive > - void save(Archive & ar, const unsigned int version) const { - ar << BOOST_SERIALIZATION_NVP(_peer); - DateXMLSerializer d((Date &)_date); - std::string date = d.serialize(); - ar << BOOST_SERIALIZATION_NVP(date); - TimeXMLSerializer t((Time &)_time); - std::string time = t.serialize(); - ar << BOOST_SERIALIZATION_NVP(time); - ar << BOOST_SERIALIZATION_NVP(_duration); - ar << BOOST_SERIALIZATION_NVP(_state); - ar << BOOST_SERIALIZATION_NVP(_data); - ar << BOOST_SERIALIZATION_NVP(_alias); - } - - BOOST_SERIALIZATION_SPLIT_MEMBER() -}; - -BOOST_CLASS_VERSION(HistoryMemento, HistoryMemento::SERIALIZATION_VERSION) - -#endif //OWHISTORYMEMENTO_H - Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/netlib1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/netlib1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkDiscovery.cpp qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkDiscovery.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkDiscovery.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkDiscovery.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "NetworkDiscovery.h" - -#include -#include -#include - -#include -#include -#include - -#include -#include - -using namespace std; - -NetworkDiscovery::NetworkDiscovery() { - if (owsl_initialize()) { - LOG_FATAL("network transport library (OWSL) initialization failed"); - } -} - -NetworkDiscovery::~NetworkDiscovery() { - owsl_terminate(); -} - -bool NetworkDiscovery::testHTTP(const std::string & url, bool ssl) { - NETLIB_BOOLEAN sslActivated = ((ssl) ? NETLIB_TRUE : NETLIB_FALSE); - bool result = false; - NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); - - if (is_http_conn_allowed(url.c_str(), - networkProxy.getServer().c_str(), networkProxy.getServerPort(), - networkProxy.getLogin().c_str(), networkProxy.getPassword().c_str(), - sslActivated, HTTP_TIMEOUT) == HTTP_OK) { - - result = true; - } else { - LOG_DEBUG("cannot connect to " + url + (ssl ? " with" : " without") + " SSL"); - } - - return result; -} - -bool NetworkDiscovery::testUDP(const string & stunServer) { - LOG_DEBUG("testing UDP connection and discovering NAT type with STUN server " + stunServer); - // By getting the NetworkProxy object, we wait for Proxy detection - // See NetworProxyDisocvery::getNetworkProxy - NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); - - NatType natType; - bool opened = (is_udp_port_opened(stunServer.c_str(), SIP_PORT, &natType) == NETLIB_TRUE ? true : false); - - EnumNatType::NatType nat = EnumNatType::NatTypeUnknown; - - switch(natType) { - case StunTypeUnknown: - nat = EnumNatType::NatTypeUnknown; - break; - case StunTypeOpen: - nat = EnumNatType::NatTypeOpen; - break; - case StunTypeConeNat: - nat = EnumNatType::NatTypeFullCone; - break; - case StunTypeRestrictedNat: - nat = EnumNatType::NatTypeRestrictedCone; - break; - case StunTypePortRestrictedNat: - nat = EnumNatType::NatTypePortRestrictedCone; - break; - case StunTypeSymNat: - nat = EnumNatType::NatTypeSymmetric; - break; - case StunTypeSymFirewall: - nat = EnumNatType::NatTypeSymmetricFirewall; - break; - case StunTypeBlocked: - nat = EnumNatType::NatTypeBlocked; - break; - case StunTypeFailure: - nat = EnumNatType::NatTypeFailure; - break; - default: - LOG_FATAL("unknown NAT type=" + String::fromNumber(natType)); - } - - setNatConfig(nat); - - return opened; -} - -bool NetworkDiscovery::testSIP(const string & server,const string & login, unsigned short port, unsigned short localPort) { - LOG_DEBUG("pinging SIP server " + server + " on port " + String::fromNumber(port) - + " from port " + String::fromNumber(localPort)); - return (udp_sip_ping(server.c_str(), port, localPort, - PING_TIMEOUT, login.c_str(), server.c_str()) == NETLIB_TRUE ? true : false); -} - -bool NetworkDiscovery::testSIPHTTPTunnel(const string & tunnelServer, unsigned tunnelPort, bool ssl, - const string & sipServer, unsigned sipServerPort) { - bool result = false; - NetworkProxy networkProxy = NetworkProxyDiscovery::getInstance().getNetworkProxy(); - - LOG_DEBUG("testing SIP tunnel connection"); - if (is_tunnel_conn_allowed(tunnelServer.c_str(), tunnelPort, - sipServer.c_str(), sipServerPort, - networkProxy.getServer().c_str(), networkProxy.getServerPort(), - networkProxy.getLogin().c_str(), networkProxy.getPassword().c_str(), - (ssl ? NETLIB_TRUE : NETLIB_FALSE), HTTP_TIMEOUT, sipServer.c_str(), - NETLIB_TRUE, PING_TIMEOUT) == HTTP_OK) { - - result = true; - } else { - LOG_DEBUG("cannot create a tunnel to " + tunnelServer + ":" + String::fromNumber(tunnelPort) - + " for SIP server " + sipServer + ":" + String::fromNumber(sipServerPort) - + (ssl ? " with" : " without") + " SSL"); - } - - return result; -} - -unsigned NetworkDiscovery::getFreeLocalPort() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - int localPort = SIP_PORT; - - if (!is_local_udp_port_used(NULL, config.getNetworkSipLocalPort())) { - LOG_DEBUG("UDP port configured, will use port number : " - + String::fromNumber(config.getNetworkSipLocalPort())); - return config.getNetworkSipLocalPort(); - } - if (!is_local_udp_port_used(NULL, localPort)) { - LOG_DEBUG("UDP port 5060 is free"); - return localPort; - } else if (!is_local_udp_port_used(NULL, localPort + 1)) { - LOG_DEBUG("UDP port 5060 is busy, will use 5061"); - return localPort + 1; - } else { - localPort = get_local_free_udp_port(NULL); - if (localPort == -1) { - LOG_DEBUG("cannot get a free local port"); - localPort = 0; - } - LOG_DEBUG("UDP port 5061 is busy, will use random port number : " + String::fromNumber(localPort)); - return localPort; - } -} - -void NetworkDiscovery::setNatConfig(EnumNatType::NatType natType) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - std::string tmp = EnumNatType::toString(natType); - LOG_DEBUG("NAT type=" + tmp); - config.set(Config::NETWORK_NAT_TYPE_KEY, tmp); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkDiscovery.h qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkDiscovery.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkDiscovery.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkDiscovery.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWNETWORKDISCOVERY_H -#define OWNETWORKDISCOVERY_H - -#include - -#include - -#include - -/** - * Discover Network configuration. - * - * @ingroup model - * @author Philippe Bernery - */ -class NetworkDiscovery { -public: - - NetworkDiscovery(); - - ~NetworkDiscovery(); - - /** - * Tests if an url is joinable by Http. - * - * @param the url to test (e.g: "ws.wengo.fr:443/softphone-sso/sso.php") - * @param true if a SSL connection must be tested - * @return true if connection ok - */ - bool testHTTP(const std::string & url, bool ssl); - - /** - * Tests if a UDP connection is possible. - * - * @param stunServer the STUN server - * @return true if ok - */ - bool testUDP(const std::string & stunServer); - - /** - * Tests if a server respond to a SIP ping. - * - * @param server the server to test - * @param port the server port - * @param localPort the local port to use - * @return true if ok - */ - bool testSIP(const std::string & server,const std::string & login, unsigned short port, unsigned short localPort); - - /** - * Tests if a HttpTunnel can be create and if SIP can pass through this tunnel. - * - * @param tunnelServer the tunnel server - * @param tunnelPort the tunnel port - * @param ssl true if tunnel must be done with SSL - * @param sipServer the SIP server to ping - * @param sipServerPort the SIP server port - * @return true if ok - */ - bool testSIPHTTPTunnel(const std::string & tunnelServer, unsigned tunnelPort, bool ssl, - const std::string & sipServer, unsigned sipServerPort); - - /** - * @return a free local port. - */ - unsigned getFreeLocalPort(); - - /** - * Sets the detected Nat Type. - */ - void setNatConfig(EnumNatType::NatType natType); - -private: - - static const unsigned PING_TIMEOUT = 3; - - static const unsigned HTTP_TIMEOUT = 10; -}; - -#endif //OWNETWORKDISCOVERY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkObserver.cpp qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkObserver.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkObserver.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkObserver.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,401 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "NetworkObserver.h" - -#include -#include -//#include -#include - -//#define RETRIES 8 - -#if defined(WIN32) -#include -#include -#else -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#endif - -#if defined(OS_MACOSX) -#include -#endif - -NetworkObserver::NetworkObserver() -{ - //_prevstate = 0; - _isConnected = (is_connection_available() ? true : false); - //_timer.timeoutEvent += boost::bind(&NetworkObserver::timeoutEventHandler, this); - - //_timer.start(0, 500, 0); - _idTimer = startTimer(500); - -#if defined(OS_LINUX) - QDBusConnection::systemBus().registerObject("/", this); - - QDBusConnection::systemBus().connect( - QString(), QString(), "org.qutecom.Wakeup", "wakeup", this, SLOT(wakeupSlot()) - ); -#endif - -} - -NetworkObserver *NetworkObserver::_staticInstance = NULL; - -bool NetworkObserver::hasInstance() { return _staticInstance != 0; } - - -//static Mutex mutex; - -NetworkObserver & NetworkObserver::getInstance() -{ - if (_staticInstance) - return *_staticInstance; - - //Mutex::ScopedLock scopedLock(mutex); - - if (!_staticInstance) - _staticInstance = new NetworkObserver(); - - - return * _staticInstance; -} - -NetworkObserver::~NetworkObserver() -{ - killTimer(_idTimer); - //_timer.stop(); -} - -bool NetworkObserver::isConnected() -{ - _isConnected = (is_connection_available() ? true : false); - return _isConnected ; -} - -#if defined(OS_LINUX) -void NetworkObserver::wakeupSlot() -{ - if (_isConnected) - { - _isConnected = false; - connectionIsDownEvent(*this); - } - - if (!_isConnected) - { - - _isConnected = is_connection_available(); - if (_isConnected) - connectionIsUpEvent(*this); - } - - -} -#endif - -void NetworkObserver::timerEvent(QTimerEvent*) -{ - if (is_connection_available()) - { - if (!_isConnected) - { - //if(!_prevstate) - //{ - LOG_DEBUG("Connection is up"); - _isConnected = true; - connectionIsUpEvent(*this); - //} - //_prevstate--; - } - } - else - { - if (_isConnected) - { - LOG_DEBUG("Connection is down"); - _isConnected = false; - connectionIsDownEvent(*this); - //_prevstate = RETRIES; - } - } -} - -bool NetworkObserver::is_connection_available() -{ - QList list = QNetworkInterface::allInterfaces(); - - - for(QList::iterator it = list.begin() ; it != list.end() ; it ++) - { - if((*it).isValid()) - { - if((*it).flags() & QNetworkInterface::IsLoopBack) - continue; - - - if( (*it).flags() & QNetworkInterface::IsUp && (*it).flags() & QNetworkInterface::IsRunning ) - { - QList list2 = (*it).addressEntries (); - for(QList::iterator itt = list2.begin() ; itt != list2.end();itt++ ) - { - if(!(*itt).ip().isNull() && (*itt).ip().protocol() == QAbstractSocket::IPv4Protocol) - { - #if defined(OS_MACOSX) - struct sockaddr_in zeroAddr; - bzero(&zeroAddr, sizeof(zeroAddr)); - zeroAddr.sin_len = sizeof(zeroAddr); - zeroAddr.sin_family = AF_INET; - - SCNetworkReachabilityRef target = SCNetworkReachabilityCreateWithAddress(NULL, (struct sockaddr *) &zeroAddr); - SCNetworkConnectionFlags flags; - SCNetworkReachabilityGetFlags(target, &flags); - - bool connected = flags & kSCNetworkFlagsReachable && !(flags & kSCNetworkFlagsConnectionRequired); - if (!connected) - return false; - #endif - return canConnect(); - } - } - } - } - } - - return false; -} - - - -bool NetworkObserver::canConnect() -{ -#if defined(WIN32) -/* w2000 and W95/98 */ - unsigned long best_interface_index; - DWORD hr; - - /* NT4 (sp4 only?) */ - PMIB_IPFORWARDTABLE ipfwdt; - DWORD siz_ipfwd_table = 0; - unsigned int ipf_cnt; - - best_interface_index = -1; - /* w2000 and W95/98 only */ - hr = GetBestInterface(inet_addr("217.12.3.11"),&best_interface_index); - if (hr) - { - LPVOID lpMsgBuf; - FormatMessage(FORMAT_MESSAGE_ALLOCATE_BUFFER | - FORMAT_MESSAGE_FROM_SYSTEM | - FORMAT_MESSAGE_IGNORE_INSERTS, - NULL, - hr, - MAKELANGID(LANG_NEUTRAL, SUBLANG_DEFAULT), - (LPSTR) &lpMsgBuf, 0, NULL); - best_interface_index = -1; - } - - if (best_interface_index != -1) - { /* probably W2000 or W95/W98 */ - char *servername; - char *serverip; - char *netmask; - - if (ppl_dns_get_local_fqdn(&servername, &serverip, &netmask, - best_interface_index)) - { - /*if(servername) - delete servername; - if(serverip) - delete serverip; - if(netmask) - delete netmask;*/ - - return true; - } - return false; - } - - - if (!GetIpForwardTable(NULL, &siz_ipfwd_table, FALSE) == ERROR_INSUFFICIENT_BUFFER - || !(ipfwdt = (PMIB_IPFORWARDTABLE) alloca (siz_ipfwd_table))) - { - return false; - } - - - /* NT4 (sp4 support only?) */ - if (!GetIpForwardTable(ipfwdt, &siz_ipfwd_table, FALSE)) - { - for (ipf_cnt = 0; ipf_cnt < ipfwdt->dwNumEntries; ++ipf_cnt) - { - if (ipfwdt->table[ipf_cnt].dwForwardDest == 0) - { /* default gateway found */ - char *servername; - char *serverip; - char *netmask; - - if (ppl_dns_get_local_fqdn(&servername, - &serverip, - &netmask, - ipfwdt->table[ipf_cnt].dwForwardIfIndex)) - { - delete servername; - delete serverip; - delete netmask; - return true; - } - return false; - } - } - - } - /* no default gateway interface found */ - return true; - -#else - - #if defined(OS_MACOSX) - socklen_t len; - #else - unsigned int len; - #endif - int sock_rt, on=1; - struct sockaddr_in iface_out; - struct sockaddr_in remote; - - memset(&remote, 0, sizeof(struct sockaddr_in)); - - remote.sin_family = AF_INET; - remote.sin_addr.s_addr = inet_addr("217.12.3.11"); - remote.sin_port = htons(11111); - - memset(&iface_out, 0, sizeof(iface_out)); - sock_rt = socket(AF_INET, SOCK_DGRAM, 0 ); - - if (setsockopt(sock_rt, SOL_SOCKET, SO_BROADCAST, &on, sizeof(on)) == -1) - { - close(sock_rt); - return false; - } - - if (::connect(sock_rt, (struct sockaddr*)&remote, sizeof(struct sockaddr_in)) == -1 ) - { - close(sock_rt); - return false; - } - - len = sizeof(iface_out); - if (getsockname(sock_rt, (struct sockaddr *)&iface_out, &len) == -1 ) - { - close(sock_rt); - return false; - } - - close(sock_rt); - if (iface_out.sin_addr.s_addr == 0) - { /* what is this case?? */ - return false; - } - - return true; - -#endif -} - -#if defined(WIN32) -bool NetworkObserver::ppl_dns_get_local_fqdn (char **servername, char **serverip,char **netmask, unsigned int WIN32_interface) -{ - unsigned int pos; - - *servername = NULL; /* no name on win32? */ - *serverip = NULL; - *netmask = NULL; - - /* First, try to get the interface where we should listen */ - { - DWORD size_of_iptable = 0; - PMIB_IPADDRTABLE ipt; - PMIB_IFROW ifrow; - - if (GetIpAddrTable(NULL, &size_of_iptable, TRUE) == ERROR_INSUFFICIENT_BUFFER) - { - ifrow = (PMIB_IFROW) _alloca (sizeof(MIB_IFROW)); - ipt = (PMIB_IPADDRTABLE) _alloca (size_of_iptable); - if (ifrow==NULL || ipt==NULL) - { - /* not very usefull to continue */ - return true; - } - - if (!GetIpAddrTable(ipt, &size_of_iptable, TRUE)) - { - /* look for the best public interface */ - - for (pos=0; pos < ipt->dwNumEntries && *netmask==NULL ; ++pos) - { - /* index is */ - struct in_addr addr; - struct in_addr mask; - ifrow->dwIndex = ipt->table[pos].dwIndex; - if (GetIfEntry(ifrow) == NO_ERROR) - { - switch(ifrow->dwType) - { - case MIB_IF_TYPE_LOOPBACK: - /* break; */ - case MIB_IF_TYPE_ETHERNET: - default: - addr.s_addr = ipt->table[pos].dwAddr; - mask.s_addr = ipt->table[pos].dwMask; - if (ipt->table[pos].dwIndex == WIN32_interface) - { - *servername = NULL; /* no name on win32? */ - *serverip = inet_ntoa(addr); - *netmask = inet_ntoa(mask); - break; - } - } - } - } - } - } - } - - if (*serverip==NULL || *netmask==NULL) - { - return false; - } - - return true; -} -#endif diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkObserver.h qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkObserver.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkObserver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkObserver.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef NETWORKOBSERVER_H -#define NETWORKOBSERVER_H - -//#include -#include -#include -#include -/** - * Watch the connection status. - * - * @ingroup model - * @author Julien Bossart - */ -class NetworkObserver : public QObject, public Trackable -{ - Q_OBJECT - -#if defined(OS_LINUX) - Q_CLASSINFO("D-Bus Interface", "org.qutecom.Wakeup"); - -Q_SIGNALS: - void wakeup(); -#endif - -public: - - /** - * Emitted when the connection is going up. - */ - Event< void (NetworkObserver & sender) > connectionIsUpEvent; - - /** - * Emitted when the connection is going down. - */ - Event< void (NetworkObserver & sender)> connectionIsDownEvent; - - bool isConnected()/* const { return _isConnected; }*/; - - static NetworkObserver & getInstance(); - - static bool hasInstance(); - //void init(); - -private: - - NetworkObserver(); - - ~NetworkObserver(); - - bool is_connection_available(); - - //void timeoutEventHandler(); - - static NetworkObserver *_staticInstance; - - int _idTimer; - //Timer _timer; - - bool _isConnected; - - //int _prevstate; - - bool canConnect(); - -#if defined(OS_LINUX) -private Q_SLOTS: - void wakeupSlot(); -#endif - -#if defined(WIN32) - bool ppl_dns_get_local_fqdn (char **servername, char **serverip,char **netmask, unsigned int WIN32_interface); -#endif - -protected: - void timerEvent(QTimerEvent*); -}; - -#endif /*NETWORKOBSERVER_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.cpp qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,243 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "NetworkProxyDiscovery.h" -#include "NetworkObserver.h" - -#include -#include - -#include -#include - -#include -#include - -NetworkProxy::NetworkProxy() { - _proxyAuthType = ProxyAuthTypeUnknown; -} - -NetworkProxy::NetworkProxy(const NetworkProxy & networkProxy) { - _login = networkProxy._login; - _password = networkProxy._password; - _server = networkProxy._server; - _serverPort = networkProxy._serverPort; - _proxyAuthType = networkProxy._proxyAuthType; -} - -NetworkProxyDiscovery * NetworkProxyDiscovery::_networkProxyDiscoveryInstance = NULL; - -NetworkProxyDiscovery::NetworkProxyDiscovery() { - if (owsl_initialize()) { - LOG_FATAL("network transport library (OWSL) initialization failed"); - } - - _state = NetworkProxyDiscoveryStateUnknown; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _networkProxy.setServer(config.getNetworkProxyServer()); - _networkProxy.setServerPort(config.getNetworkProxyPort()); - _networkProxy.setLogin(config.getNetworkProxyLogin()); - _networkProxy.setPassword(config.getNetworkProxyPassword()); - - NetworkObserver::getInstance().connectionIsUpEvent += - boost::bind(&NetworkProxyDiscovery::connectionIsUpEventHandler, this, _1); - NetworkObserver::getInstance().connectionIsDownEvent += - boost::bind(&NetworkProxyDiscovery::connectionIsDownEventHandler, this, _1); - - if (!NetworkObserver::getInstance().isConnected()) { - LOG_DEBUG("no connection available"); - _state = NetworkProxyDiscoveryStateUnknown; - return; - } - - int ret = 0; - if (config.getNetworkProxyDetected() - && (ret = is_http_conn_allowed("www.google.com:80", _networkProxy.getServer().c_str(), - _networkProxy.getServerPort(), _networkProxy.getLogin().c_str(), - _networkProxy.getPassword().c_str(), NETLIB_FALSE, 10)) == HTTP_OK) { - - // Protect against crash due to IE Digest authentication management bug - EnumAuthType proxyAuthType = get_proxy_auth_type(_networkProxy.getServer().c_str(), - _networkProxy.getServerPort(), PROXY_TIMEOUT); - if (proxyAuthType == proxyAuthDigest) { - _networkProxy.setProxyAuthType(NetworkProxy::ProxyAuthTypeDigest); - } - _state = NetworkProxyDiscoveryStateDiscovered; - } else if (ret == HTTP_AUTH) { - _state = NetworkProxyDiscoveryStateNeedsAuthentication; - if (_networkProxy.getLogin().empty()) { - proxyNeedsAuthenticationEvent(*this, _networkProxy); - } - else { - wrongProxyAuthenticationEvent(*this, _networkProxy); - } - } else { - discoverProxy(); - } -} - -NetworkProxyDiscovery::~NetworkProxyDiscovery() { - owsl_terminate(); - terminate(); -} - -NetworkProxyDiscovery & NetworkProxyDiscovery::getInstance() { - if (!_networkProxyDiscoveryInstance) { - _networkProxyDiscoveryInstance = new NetworkProxyDiscovery(); - } - - return *_networkProxyDiscoveryInstance; -} - -void NetworkProxyDiscovery::discoverProxy() { - start(); -} - -void NetworkProxyDiscovery::run() { - Mutex::ScopedLock lock(_mutex); - - if (!NetworkObserver::getInstance().isConnected()) { - LOG_DEBUG("no connection available"); - _state = NetworkProxyDiscoveryStateUnknown; - return; - } - - // Trying to ping an http server. We do this because sometimes - // a system can be set to use a proxy whereas it could connect directly. - if (is_http_conn_allowed("www.google.com", - NULL, 0, NULL, NULL, - NETLIB_FALSE, 10) == HTTP_OK) { - - LOG_DEBUG("can connect without proxy"); - - _networkProxy.setServer(String::null); - _networkProxy.setServerPort(0); - _networkProxy.setLogin(String::null); - _networkProxy.setPassword(String::null); - - saveProxySettings(); - _state = NetworkProxyDiscoveryStateDiscovered; - _condition.notify_all(); - return; - } - - //See below for explaination about this test - if (_state != NetworkProxyDiscoveryStateNeedsAuthentication) { - LOG_DEBUG("discovering network proxy..."); - _state = NetworkProxyDiscoveryStateDiscovering; - - LOG_DEBUG("searching for proxy..."); - - char * localProxyUrl = get_local_http_proxy_address(); - int localProxyPort = get_local_http_proxy_port(); - - _networkProxy.setServer(localProxyUrl ? String(localProxyUrl) : String(String::null)); - _networkProxy.setServerPort(localProxyPort); - _networkProxy.setLogin(String::null); - _networkProxy.setPassword(String::null); - - if (!localProxyUrl) { - LOG_DEBUG("no proxy found"); - saveProxySettings(); - _state = NetworkProxyDiscoveryStateDiscovered; - _condition.notify_all(); - return; - } - } - - LOG_DEBUG("proxy found"); - - if (is_proxy_auth_needed(_networkProxy.getServer().c_str(), - _networkProxy.getServerPort(), PROXY_TIMEOUT)) { - LOG_DEBUG("proxy authentication needed"); - - EnumAuthType proxyAuthType = get_proxy_auth_type(_networkProxy.getServer().c_str(), - _networkProxy.getServerPort(), PROXY_TIMEOUT); - if (proxyAuthType == proxyAuthDigest) { - _networkProxy.setProxyAuthType(NetworkProxy::ProxyAuthTypeDigest); - } - - if (_networkProxy.getLogin().empty()) { - LOG_DEBUG("proxy needs login/password"); - - _state = NetworkProxyDiscoveryStateNeedsAuthentication; - proxyNeedsAuthenticationEvent(*this, _networkProxy); - return; - } - - if (!is_proxy_auth_ok(_networkProxy.getServer().c_str(), _networkProxy.getServerPort(), - _networkProxy.getLogin().c_str(), _networkProxy.getPassword().c_str(), PROXY_TIMEOUT)) { - - LOG_DEBUG("proxy needs valid login/password"); - - _state = NetworkProxyDiscoveryStateNeedsAuthentication; - wrongProxyAuthenticationEvent(*this, _networkProxy); - return; - } - } - - saveProxySettings(); - _state = NetworkProxyDiscoveryStateDiscovered; - _condition.notify_all(); -} - -void NetworkProxyDiscovery::saveProxySettings() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - config.set(Config::NETWORK_PROXY_DETECTED_KEY, true); - config.set(Config::NETWORK_PROXY_SERVER_KEY, _networkProxy.getServer()); - config.set(Config::NETWORK_PROXY_PORT_KEY, _networkProxy.getServerPort()); - config.set(Config::NETWORK_PROXY_LOGIN_KEY, _networkProxy.getLogin()); - config.set(Config::NETWORK_PROXY_PASSWORD_KEY, _networkProxy.getPassword()); -} - -NetworkProxyDiscovery::NetworkProxyDiscoveryState NetworkProxyDiscovery::getState() const { - return _state; -} - -void NetworkProxyDiscovery::setProxySettings(NetworkProxy networkProxy) { - Mutex::ScopedLock lock(_mutex); - - _networkProxy = networkProxy; - discoverProxy(); -} - -NetworkProxy NetworkProxyDiscovery::getNetworkProxy() const { - Mutex::ScopedLock lock(_mutex); - - if (_state == NetworkProxyDiscoveryStateDiscovering) { - //Waiting for the end of the discovery - _condition.wait(lock); - } - - return _networkProxy; -} - -void NetworkProxyDiscovery::connectionIsUpEventHandler(NetworkObserver & sender) { - Mutex::ScopedLock lock(_mutex); - - if (_state != NetworkProxyDiscoveryStateDiscovered) { - discoverProxy(); - } -} - -void NetworkProxyDiscovery::connectionIsDownEventHandler(NetworkObserver & sender) { - terminate(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.h qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/network/NetworkProxyDiscovery.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,174 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWNETWORKPROXYDISCOVERY_H -#define OWNETWORKPROXYDISCOVERY_H - -#include -#include -#include - -#include - -#include - -class NetworkObserver; - -/** - * Network proxy data container. - */ -class NetworkProxy { -public: - - NetworkProxy(); - - NetworkProxy(const NetworkProxy & networkProxy); - - std::string getLogin() const { return _login; } - void setLogin(const std::string & login) { _login = login; } - - std::string getPassword() const { return _password; } - void setPassword(const std::string & password) { _password = password; } - - std::string getServer() const { return _server; } - void setServer(const std::string & server) { _server = server; } - - int getServerPort() const { return _serverPort; } - void setServerPort(int port) { _serverPort = port; } - - enum ProxyAuthType { - ProxyAuthTypeUnknown, - ProxyAuthTypeBasic, - ProxyAuthTypeDigest, - ProxyAuthTypeNTLM - }; - - ProxyAuthType getProxyAuthType() const { return _proxyAuthType; } - void setProxyAuthType(ProxyAuthType proxyAuthType) { _proxyAuthType = proxyAuthType; } - -private: - - std::string _login; - - std::string _password; - - std::string _server; - - int _serverPort; - - ProxyAuthType _proxyAuthType; -}; - -/** - * Network proxy discovery. - * - * TODO: add a proxyHasChangedEvent to notify registered classes that the proxy settings have changed. - * - * @author Julien Bossart - * @author Philippe Bernery - */ -class NetworkProxyDiscovery : public Thread { -public: - - enum NetworkProxyDiscoveryState { - /** Initial state. */ - NetworkProxyDiscoveryStateUnknown, - - /** NetworkProxyDiscovery is discovering the proxy settings. */ - NetworkProxyDiscoveryStateDiscovering, - - /** NetworkProxyDiscovery needs authentication parameters to continue discovery. */ - NetworkProxyDiscoveryStateNeedsAuthentication, - - /** NetworkProxyDiscovery has discovered the proxy settings. */ - NetworkProxyDiscoveryStateDiscovered - }; - - /** - * Emitted when a proxy has been detected and needs a login/password. - * - * @param sender this class - * @param networkProxy the current result of the discovery - */ - Event< void (NetworkProxyDiscovery & sender, NetworkProxy networkProxy) > proxyNeedsAuthenticationEvent; - - /** - * Emitted when given login/password are wrong. - * - * @param sender this class - * @param networkProxy the current result of the discovery - */ - Event< void (NetworkProxyDiscovery & sender, NetworkProxy networkProxy)> wrongProxyAuthenticationEvent; - - static NetworkProxyDiscovery & getInstance(); - - NetworkProxyDiscoveryState getState() const; - - /** - * Sets the NetworProxy settings. - * - * Will try to detect the Proxy with the given parameters. - * It it works, parameters will be saved in Config. - */ - void setProxySettings(NetworkProxy networkProxy); - - /** - * Returns proxy parameters. This method is blocking while proxy settings have not been detected. - */ - NetworkProxy getNetworkProxy() const; - -private: - - NetworkProxyDiscovery(); - - ~NetworkProxyDiscovery(); - - /** - * Sets the proxy settings in Config. - */ - void saveProxySettings(); - - void discoverProxy(); - - virtual void run(); - - /** - * @see NetworkObserver::connectionIsUpEvent - */ - void connectionIsUpEventHandler(NetworkObserver & sender); - - /** - * @see NetworkObserver::connectionIsDownEvent - */ - void connectionIsDownEventHandler(NetworkObserver & sender); - - static NetworkProxyDiscovery * _networkProxyDiscoveryInstance; - - NetworkProxyDiscoveryState _state; - - NetworkProxy _networkProxy; - - mutable Mutex _mutex; - - mutable Condition _condition; - - static const unsigned PROXY_TIMEOUT = 10; -}; - -#endif //OWNETWORKPROXYDISCOVERY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCall.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConferenceCall.h" - -#include "ConferenceCallParticipant.h" -#include "PhoneCall.h" - -#include -#include - -#include - -#include - -ConferenceCall::ConferenceCall(IPhoneLine & phoneLine) - : _phoneLine(phoneLine) { - - //No conference started yet - _confId = -1; -} - -ConferenceCall::~ConferenceCall() { -} - -void ConferenceCall::addPhoneCall(PhoneCall & phoneCall) { - if (_confId == -1) { - _confId = _phoneLine.getSipWrapper().createConference(); - } - - new ConferenceCallParticipant(*this, phoneCall); - phoneCallAddedEvent(*this, phoneCall); - - std::string phoneNumber = phoneCall.getPeerSipAddress().getUserName(); - _phoneCallMap[phoneNumber] = &phoneCall; -} - -void ConferenceCall::removePhoneCall(PhoneCall & phoneCall) { - phoneCall.setConferenceCall(NULL); - int callId = phoneCall.getCallId(); - - if (_confId == -1) { - _phoneLine.getSipWrapper().splitConference(_confId, callId); - } - - phoneCallRemovedEvent(*this, phoneCall); - std::string phoneNumber = phoneCall.getPeerSipAddress().getUserName(); - _phoneCallMap.erase(phoneNumber); -} - -void ConferenceCall::addPhoneNumber(const std::string & phoneNumber) { - //Searches for a already existing PhoneCall associated with this phone number - PhoneCall * phoneCall = getPhoneCall(phoneNumber); - if (!phoneCall) { - phoneCall = _phoneCallMap[phoneNumber]; - if (!phoneCall) { - int error = _phoneLine.makeCall(phoneNumber, this); - if (error != EnumMakeCallError::NoError) { - //NULL means put the phone number in the queue - phoneCall = NULL; - } else { - phoneCall = _phoneLine.getActivePhoneCall(); - } - } - } - - _phoneCallMap[phoneNumber] = phoneCall; - if (phoneCall) { - phoneCall->stateChangedEvent += boost::bind(&ConferenceCall::phoneCallStateChangedEventHandler, this, _1, _2); - addPhoneCall(*phoneCall); - } - LOG_DEBUG("phone number added=" + phoneNumber); -} - -void ConferenceCall::removePhoneNumber(const std::string & phoneNumber) { - for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - if (phoneCall) { - SipAddress sipAddress = phoneCall->getPeerSipAddress(); - if (sipAddress.getUserName() == phoneNumber) { - removePhoneCall(*phoneCall); - } - } - } - - if (_phoneCallMap.empty()) { - stateChangedEvent(*this, EnumConferenceCallState::ConferenceCallStateStopped); - } -} - -PhoneCall * ConferenceCall::getPhoneCall(const std::string & phoneNumber) const { - PhoneCall * phoneCall = NULL; - - IPhoneLine::PhoneCallList calls = _phoneLine.getPhoneCallList(); - - for (unsigned i = 0; i < calls.size(); i++) { - SipAddress sipAddress = calls[i]->getPeerSipAddress(); - if (sipAddress.getUserName() == phoneNumber) { - return calls[i]; - } - } - - return phoneCall; -} - -void ConferenceCall::phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { - switch (state) { - - case EnumPhoneCallState::PhoneCallStateUnknown: - break; - - case EnumPhoneCallState::PhoneCallStateError: - removePhoneCall(sender); - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - break; - - case EnumPhoneCallState::PhoneCallStateTalking: - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - break; - - case EnumPhoneCallState::PhoneCallStateRinging: - break; - - case EnumPhoneCallState::PhoneCallStateClosed: - removePhoneCall(sender); - break; - - case EnumPhoneCallState::PhoneCallStateIncoming: - break; - - case EnumPhoneCallState::PhoneCallStateHold: { - //Takes randomly a phoneNumber that has no PhoneCall associated - //and creates a PhoneCall - for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - if (!phoneCall) { - std::string phoneNumber = (*it).first; - addPhoneNumber(phoneNumber); - break; - } - } - - break; - } - - case EnumPhoneCallState::PhoneCallStateMissed: - break; - - case EnumPhoneCallState::PhoneCallStateRedirected: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStart: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStop: - break; - - default: - LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); - } -} - -ConferenceCall::PhoneCallList ConferenceCall::getPhoneCallList() const { - PhoneCallList phoneCallList; - - for (PhoneCalls::const_iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - if (phoneCall) { - phoneCallList += phoneCall; - } - } - return phoneCallList; -} - -void ConferenceCall::join(int callId) { - _phoneLine.getSipWrapper().joinConference(_confId, callId); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCall.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,150 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONFERENCECALL_H -#define OWCONFERENCECALL_H - -#include -#include - -#include -#include -#include -#include - -#include -#include - -class IPhoneLine; -class PhoneCall; -class ConferenceCallParticipant; - -/** - * Handles a conference call. - * - * Conferences are an association of calls - * where the audio media is mixed. - * - * The number of participant is unlimited in this model but probably - * limited by the SIP stack that uses ConferenceCall. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ConferenceCall : NonCopyable, public Trackable { -public: - - /** - * The state of the ConferenceCall has changed. - * - * @param sender this class - * @param state new state - */ - Event stateChangedEvent; - - /** - * A PhoneCall has been added to the ConferenceCall. - * - * @param sender this class - * @param phoneCall PhoneCall added to the ConferenceCall - */ - Event phoneCallAddedEvent; - - /** - * A PhoneCall has been removed to the ConferenceCall. - * - * @param sender this class - * @param phoneCall PhoneCall removed to the ConferenceCall - */ - Event phoneCallRemovedEvent; - - /** - * Creates a new ConferenceCall given a PhoneLine. - */ - ConferenceCall(IPhoneLine & phoneLine); - - ~ConferenceCall(); - - /** - * Adds a phone number to the conference. - * - * If the phone number corresponds to an existing PhoneCall - * the PhoneCall is directly added to the conference; otherwise a new PhoneCall is created. - * - * @param phoneNumber phone number to add to the conference - */ - void addPhoneNumber(const std::string & phoneNumber); - - /** - * Removes a phone number to the conference. - * - * If the phone number corresponds to an existing PhoneCall - * the PhoneCall is directly removed (and call is closed) to the conference. - * - * @param phoneNumber phone number to remove from the conference - */ - void removePhoneNumber(const std::string & phoneNumber); - - /** - * FIXME should be private? - */ - void addPhoneCall(PhoneCall & phoneCall); - - /** - * FIXME should be private? - */ - void removePhoneCall(PhoneCall & phoneCall); - - typedef List PhoneCallList; - - /** - * Gets the list of PhoneCall associated with this conference. - * - * @return the list of PhoneCall - */ - PhoneCallList getPhoneCallList() const; - - /** Should only be used by ConferenceCallParticipant. */ - void join(int callId); - - PhoneCall * getPhoneCall(const std::string & phoneNumber) const; - -private: - - /** Waits for a phone call to be in talking state before to create another one. */ - void phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); - - /** PhoneLine associated with the ConferenceCall. */ - IPhoneLine & _phoneLine; - - /** Defines the vector of PhoneCall participant. */ - typedef std::map < std::string, PhoneCall * > PhoneCalls; - - /** List of PhoneCall. */ - PhoneCalls _phoneCallMap; - - /** - * Conference id of this ConferenceCall. - * - * SipWrapper::ConfIdError (-1) means that the conference has not been started yet. - */ - int _confId; -}; - -#endif //OWCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ConferenceCallParticipant.h" - -#include "ConferenceCall.h" -#include "PhoneCall.h" -#include "PhoneCallState.h" - -#include - -#include - -ConferenceCallParticipant::ConferenceCallParticipant(ConferenceCall & conferenceCall, PhoneCall & phoneCall) - : _conferenceCall(conferenceCall), - _phoneCall(phoneCall) { - - _waitForHoldState = false; - - _phoneCall.stateChangedEvent += boost::bind(&ConferenceCallParticipant::phoneCallStateChangedEventHandler, this, _1, _2); - - joinConference(); -} - -void ConferenceCallParticipant::joinConference() { - int callId = _phoneCall.getCallId(); - - if (_phoneCall.getState() == EnumPhoneCallState::PhoneCallStateHold) { - _waitForHoldState = false; - _conferenceCall.join(callId); - } else { - _waitForHoldState = true; - - //FIXME hack, do not hold the first phone call of the conference, user has to do it himself - /*if (_conferenceCall.getPhoneCallList().size() > 1) { - _phoneCall.hold(); - }*/ - } -} - -void ConferenceCallParticipant::phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state) { - switch(state) { - - case EnumPhoneCallState::PhoneCallStateUnknown: - break; - - case EnumPhoneCallState::PhoneCallStateError: - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - break; - - case EnumPhoneCallState::PhoneCallStateTalking: - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - break; - - case EnumPhoneCallState::PhoneCallStateRinging: - break; - - case EnumPhoneCallState::PhoneCallStateClosed: - break; - - case EnumPhoneCallState::PhoneCallStateIncoming: - break; - - case EnumPhoneCallState::PhoneCallStateHold: - if (_waitForHoldState) { - joinConference(); - } - break; - - case EnumPhoneCallState::PhoneCallStateMissed: - break; - - case EnumPhoneCallState::PhoneCallStateRedirected: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStart: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStop: - break; - - default: - LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/ConferenceCallParticipant.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef CONFERENCECALLPARTICIPANT_H -#define CONFERENCECALLPARTICIPANT_H - -#include - -#include - -class ConferenceCall; -class PhoneCall; - -/** - * Participant to a ConferenceCall. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class ConferenceCallParticipant : NonCopyable { -public: - - ConferenceCallParticipant(ConferenceCall & conferenceCall, PhoneCall & phoneCall); - -private: - - void joinConference(); - - void phoneCallStateChangedEventHandler(PhoneCall & sender, EnumPhoneCallState::PhoneCallState state); - - ConferenceCall & _conferenceCall; - - PhoneCall & _phoneCall; - - bool _waitForHoldState; -}; - -#endif //CONFERENCECALLPARTICIPANT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCall.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,284 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCall.h" - -#include "PhoneCallStateUnknown.h" -#include "PhoneCallStateClosed.h" -#include "PhoneCallStateDialing.h" -#include "PhoneCallStateError.h" -#include "PhoneCallStateHold.h" -#include "PhoneCallStateIncoming.h" -#include "PhoneCallStateTalking.h" -#include "PhoneCallStateResumed.h" -#include "PhoneCallStateRinging.h" -#include "PhoneCallStateRingingStart.h" -#include "PhoneCallStateRingingStop.h" - -#include -#include - -#include - -#include - -PhoneCall::PhoneCall(IPhoneLine & phoneLine, const SipAddress & sipAddress) - : _phoneLine(phoneLine) { - - _duration = -1; - _holdRequest = false; - _resumeRequest = false; - _conferenceCall = NULL; - _callRejected = false; - _timeStart = -1; - _videoEnabled = false; - - _sipAddress = sipAddress; - - static PhoneCallStateUnknown stateUnknown; - - //Default state (PhoneCallStateUnknown) - _state = &stateUnknown; - - _phoneCallStateList += &stateUnknown; - - static PhoneCallStateClosed stateClosed; - _phoneCallStateList += &stateClosed; - - static PhoneCallStateDialing stateDialing; - _phoneCallStateList += &stateDialing; - - static PhoneCallStateError stateError; - _phoneCallStateList += &stateError; - - static PhoneCallStateHold stateHold; - _phoneCallStateList += &stateHold; - - static PhoneCallStateIncoming stateIncoming; - _phoneCallStateList += &stateIncoming; - - static PhoneCallStateTalking stateTalking; - _phoneCallStateList += &stateTalking; - - static PhoneCallStateResumed stateResumed; - _phoneCallStateList += &stateResumed; - - static PhoneCallStateRinging stateRinging; - _phoneCallStateList += &stateRinging; - - static PhoneCallStateRingingStart stateRingingStart; - _phoneCallStateList += &stateRingingStart; - - static PhoneCallStateRingingStop stateRingingStop; - _phoneCallStateList += &stateRingingStop; - - static PhoneCallStateBusy stateBusy; - _phoneCallStateList += &stateBusy; - - static PhoneCallStateRejected stateRejected; - _phoneCallStateList += &stateRejected; - - static PhoneCallStateUserNotFound stateUserNotFound; - _phoneCallStateList += &stateUserNotFound; - - static PhoneCallStateUserNotAvailable stateUserNotAvailable; - _phoneCallStateList += &stateUserNotAvailable; -} - -PhoneCall::~PhoneCall() { - //Do not need to delete everything (_phoneCallStateList) - //since states are static inside the constructor - _state = NULL; -} - -void PhoneCall::accept() { - PhoneCallState::stopSound(); - _phoneLine.acceptCall(_callId); -} - -void PhoneCall::resume() { - if (_state->getCode() == EnumPhoneCallState::PhoneCallStateHold) { - _resumeRequest = false; - _phoneLine.resumeCall(_callId); - } else { - _resumeRequest = true; - } -} - -void PhoneCall::hold() { - if (_state->getCode() == EnumPhoneCallState::PhoneCallStateTalking || - _state->getCode() == EnumPhoneCallState::PhoneCallStateResumed) { - - _holdRequest = false; - _phoneLine.holdCall(_callId); - } else { - _holdRequest = true; - } -} - -void PhoneCall::blindTransfer(const std::string & sipAddress) { - _phoneLine.blindTransfer(_callId, sipAddress); -} - -EnumPhoneCallState::PhoneCallState PhoneCall::getState() const { - return _state->getCode(); -} - -void PhoneCall::setState(EnumPhoneCallState::PhoneCallState state) { - LOG_DEBUG("PhoneCallState=" + String::fromNumber(state)); - - for (unsigned i = 0; i < _phoneCallStateList.size(); i++) { - PhoneCallState * callState = _phoneCallStateList[i]; - if (callState->getCode() == state) { - if (_state->getCode() != callState->getCode()) { - _state = callState; - - if(_state->getCode() == EnumPhoneCallState::PhoneCallStateIncoming) - { - if(_phoneLine.getUserProfile().getPresenceState() != EnumPresenceState::PresenceStateDoNotDisturb) - { - if(_phoneLine.hasPendingCalls()) - _state->execute(*this,true); - else - _state->execute(*this); - } - } - else - _state->execute(*this); - - LOG_DEBUG("call state changed callId=" + String::fromNumber(_callId) + - " state=" + EnumPhoneCallState::toString(_state->getCode())); - applyState(state); - stateChangedEvent(*this, state); - return; - } - } - } - - //LOG_FATAL("unknown PhoneCallState=" + String::fromNumber(state)); -} - -void PhoneCall::applyState(EnumPhoneCallState::PhoneCallState state) { - if (getVideoCodecUsed() == CodecList::VideoCodecError) { - _videoEnabled = true; - } else { - _videoEnabled = false; - } - - //This should not replace the state machine pattern PhoneCallState - switch(state) { - case EnumPhoneCallState::PhoneCallStateUnknown: - break; - - case EnumPhoneCallState::PhoneCallStateBusy: - case EnumPhoneCallState::PhoneCallStateRejected: - case EnumPhoneCallState::PhoneCallStateUserNotFound: - case EnumPhoneCallState::PhoneCallStateUserNotAvailable: - break; - - case EnumPhoneCallState::PhoneCallStateError: - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - break; - - case EnumPhoneCallState::PhoneCallStateTalking: - if (_holdRequest) { - hold(); - } else { - //Start of the call, computes duration - _timeStart = time(NULL); - } - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - break; - - case EnumPhoneCallState::PhoneCallStateRinging: - break; - - case EnumPhoneCallState::PhoneCallStateClosed: - //End of the call, computes duration - if (_timeStart != -1) { - _duration = time(NULL) - _timeStart; - } - - if (!_callRejected) { - //Call missed if incoming state + closed state without being rejected - setState(EnumPhoneCallState::PhoneCallStateMissed); - } - break; - - case EnumPhoneCallState::PhoneCallStateIncoming: - break; - - case EnumPhoneCallState::PhoneCallStateHold: - if (_resumeRequest) { - resume(); - } - break; - - case EnumPhoneCallState::PhoneCallStateMissed: - break; - - case EnumPhoneCallState::PhoneCallStateRedirected: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStart: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStop: - break; - - default: - LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); - } -} - -void PhoneCall::close() { - if (_state->getCode() != EnumPhoneCallState::PhoneCallStateClosed) { - if (_state->getCode() == EnumPhoneCallState::PhoneCallStateIncoming) { - _callRejected = true; - _phoneLine.rejectCall(_callId); - } else if (_state->getCode() != EnumPhoneCallState::PhoneCallStateError) { - _phoneLine.closeCall(_callId); - } - setState(EnumPhoneCallState::PhoneCallStateClosed); - } -} - -void PhoneCall::videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame) { - videoFrameReceivedEvent(*this, remoteVideoFrame, localVideoFrame); -} - -void PhoneCall::playSoundFile(const std::string & soundFile) { - _phoneLine.playSoundFile(_callId, soundFile); -} - -CodecList::AudioCodec PhoneCall::getAudioCodecUsed() { - return _phoneLine.getAudioCodecUsed(_callId); -} - -CodecList::VideoCodec PhoneCall::getVideoCodecUsed() { - return _phoneLine.getVideoCodecUsed(_callId); -} - -bool PhoneCall::isCallEncrypted() const { - return _phoneLine.isCallEncrypted(_callId); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCall.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,267 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONECALL_H -#define OWPHONECALL_H - -#include "SipAddress.h" - -#include -#include -#include - -#include -#include -#include - -#include - -#include - -class WebcamVideoFrame; -class PhoneCallState; -class IPhoneLine; -class ConferenceCall; - -/** - * Class that holds informations about a current phone call. - * - * A phone call is associated with a PhoneLine. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCall : NonCopyable { -public: - - /** - * The state of the PhoneCall has changed. - * - * @param sender this class - * @param status new status - */ - Event stateChangedEvent; - - /** - * A video frame has been received from the network. - * - * @param sender this class - * @param remoteVideoFrame remote video frame - * @param localVideoFrame local video frame from the webcam - */ - Event videoFrameReceivedEvent; - - /** - * Creates a new PhoneCall given a PhoneLine. - * - * @param phoneLine PhoneLine associated with this PhoneCall - * @param sipAddress caller/callee/peer SIP address - */ - PhoneCall(IPhoneLine & phoneLine, const SipAddress & sipAddress); - - ~PhoneCall(); - - /** - * @see IPhoneLine::acceptCall() - */ - void accept(); - - /** - * @see IPhoneLine::resumeCall() - */ - void resume(); - - /** - * @see IPhoneLine::holdCall() - */ - void hold(); - - /** - * @see IPhoneLine::closeCall() - */ - void close(); - - /** - * @see IPhoneLine::blindTransfer() - */ - void blindTransfer(const std::string & sipAddress); - - /** - * @see IPhoneLine::playSoundFile() - */ - void playSoundFile(const std::string & soundFile); - - /** - * @see IPhoneLine::getAudioCodecUsed() - */ - CodecList::AudioCodec getAudioCodecUsed(); - - /** - * @see IPhoneLine::getVideoCodecUsed() - */ - CodecList::VideoCodec getVideoCodecUsed(); - - /** - * Video frame received. - * - * @param remoteVideoFrame received - * @param localWebcam local webcam - */ - void videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame); - - /** - * Changes the state of this PhoneCall. - * - * @param state state code corresponding to the new PhoneCall state - */ - void setState(EnumPhoneCallState::PhoneCallState state); - - /** - * Gets the current state of this PhoneCall. - * - * @return state of this PhoneCall - */ - EnumPhoneCallState::PhoneCallState getState() const; - - /** - * Sets the call id associated with this PhoneCall. - * - * Should only be called by PhoneLine. - * - * @param callId call id of this PhoneCall - */ - void setCallId(int callId) { - _callId = callId; - } - - /** - * Gets the call id of this PhoneCall. - * - * @return call id of this PhoneCall - */ - int getCallId() const { - return _callId; - } - - /** - * Gets the caller/callee/peer SIP address associated with this PhoneCall. - * - * @return caller/callee/peer SIP address - */ - const SipAddress & getPeerSipAddress() const { - return _sipAddress; - } - - /** - * Gets the PhoneLine associated with this PhoneCall. - * - * @return phone line - */ - IPhoneLine & getPhoneLine() const { - return _phoneLine; - } - - /** - * Gets the duration of the call in seconds - * - * @return duration of the call or -1 if not call duration - */ - int getDuration() const { - return _duration; - } - - /** - * Gets the conference associated with this call. - * - * @return ConferenceCall or NULL if this call is not associated with a conference - */ - ConferenceCall * getConferenceCall() const { - return _conferenceCall; - } - - /** - * Gets the phone call type (audio or video). - * - * @return true if this call is a video call; false otherwise - */ - bool isVideoEnabled() const { - return _videoEnabled; - } - - /** - * @return True if the call is encrypted - */ - bool isCallEncrypted() const; - - /** - * Sets the conference associated with this call. - * - * Internal method, used only by ConferenceCall and PhoneLine. - * - * @param conferenceCall conference - */ - void setConferenceCall(ConferenceCall * conferenceCall) { - _conferenceCall = conferenceCall; - } - -private: - - void applyState(EnumPhoneCallState::PhoneCallState state); - - /** PhoneLine associated with this PhoneCall. */ - IPhoneLine & _phoneLine; - - /** Call id of this PhoneCall. */ - int _callId; - - /** Caller/callee/peer SIP address. */ - SipAddress _sipAddress; - - /** Current state of this PhoneCall. */ - PhoneCallState * _state; - - /** Defines the vector of PhoneCallState. */ - typedef List < PhoneCallState * > PhoneCallStates; - - /** List of PhoneCallState. */ - PhoneCallStates _phoneCallStateList; - - /** Call duration in seconds. */ - int _duration; - - /** If the PhoneCall should be held. */ - bool _holdRequest; - - /** If the PhoneCall should be resumed. */ - bool _resumeRequest; - - /** Conference associated with this call. */ - ConferenceCall * _conferenceCall; - - /** If this PhoneCall has been rejected as an incoming call. */ - bool _callRejected; - - /** Computes the PhoneCall duration. */ - int _timeStart; - - /** If this call is a video call or an audio call. */ - bool _videoEnabled; -}; - -#endif //OWPHONECALL_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/phonecallstate1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/phonecall/phonecallstate1.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,28 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateClosed.h" - -#include "PhoneCall.h" - -#include - -void PhoneCallStateClosed::execute(PhoneCall & phoneCall,bool) { - playSoundCallClosed(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateClosed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATECLOSED_H -#define PHONECALLSTATECLOSED_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateClosed : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateClosed; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false); -}; - -#endif //PHONECALLSTATECLOSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallState.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallState.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallState.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallState.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,103 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallState.h" - -#include -#include - -#include - -#include - -Sound * PhoneCallState::_sound = NULL; -static RecursiveMutex _mutexSound; - -PhoneCallState::PhoneCallState() { -} - -void PhoneCallState::stopSound() { - RecursiveMutex::ScopedLock scopedLock(_mutexSound); - if (_sound) { - _sound->stop(); - delete _sound; - _sound = NULL; - } -} - -void PhoneCallState::playSoundIncomingCall() { - RecursiveMutex::ScopedLock scopedLock(_mutexSound); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - stopSound(); - - if (config.getAudioRingingEnable()) - { - _sound = new Sound(config.getAudioIncomingCallFile()); - _sound->setWaveOutDevice(getRingerAudioDevice()); - _sound->setLoops(-1); - _sound->play(); - } -} - -void PhoneCallState::playSoundOutgoingCall() { - RecursiveMutex::ScopedLock scopedLock(_mutexSound); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - stopSound(); - if (config.getAudioRingingEnable()) - { - _sound = new Sound(config.getAudioOutgoingCallFile()); - _sound->setWaveOutDevice(getRingerAudioDevice()); - _sound->setLoops(-1); - _sound->play(); - } -} - -void PhoneCallState::playSoundDoubleCall() { - RecursiveMutex::ScopedLock scopedLock(_mutexSound); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - stopSound(); - if (config.getAudioRingingEnable()) - { - _sound = new Sound(config.getAudioDoubleCallFile()); - _sound->setWaveOutDevice(getRingerAudioDevice()); - _sound->setLoops(1); - _sound->play(); - } -} - -void PhoneCallState::playSoundCallClosed() { - RecursiveMutex::ScopedLock scopedLock(_mutexSound); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - stopSound(); - if (config.getAudioRingingEnable()) - { - _sound = new Sound(config.getAudioCallClosedFile()); - _sound->setWaveOutDevice(getRingerAudioDevice()); - _sound->setLoops(4); - _sound->play(); - } -} - -AudioDevice PhoneCallState::getRingerAudioDevice() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return AudioDevice(config.getAudioRingerDeviceId()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateDialing.h" - -#include "PhoneCall.h" - -void PhoneCallStateDialing::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateDialing.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATEDIALING_H -#define PHONECALLSTATEDIALING_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateDialing : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateDialing; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false); -}; - -#endif //PHONECALLSTATEDIALING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateError.h" - -#include "PhoneCall.h" - -void PhoneCallStateError::execute(PhoneCall & phoneCall,bool) { - stopSound(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateError.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATEERROR_H -#define PHONECALLSTATEERROR_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateError : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateError; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATEERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallState.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,75 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONECALLSTATE_H -#define OWPHONECALLSTATE_H - -#include - -#include -#include - -class PhoneCall; -class Sound; - -/** - * Represents the state of a PhoneCall. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallState { -public: - - PhoneCallState(); - - virtual ~PhoneCallState() { - } - - virtual void execute(PhoneCall & phoneCall,bool doublecall = false) = 0; - - /** - * Gets the status code corresponding to this PhoneCall state. - * - * @return status code of this state - */ - virtual EnumPhoneCallState::PhoneCallState getCode() const = 0; - - /** - * Stops the incoming phone call ringtone. - */ - //static void stopSoundIncomingCall(); - - static AudioDevice getRingerAudioDevice(); - - static void playSoundIncomingCall(); - - static void playSoundOutgoingCall(); - - static void playSoundDoubleCall(); - - static void playSoundCallClosed(); - - static void stopSound(); - -protected: - static Sound * _sound; -}; - -#endif //OWPHONECALLSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateHold.h" - -#include "PhoneCall.h" - -void PhoneCallStateHold::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateHold.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATEHOLD_H -#define PHONECALLSTATEHOLD_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateHold : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateHold; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATEHOLD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateIncoming.h" - -#include "PhoneCall.h" - -#include -#include -#include - -#include - -void PhoneCallStateIncoming::execute(PhoneCall & phoneCall,bool doublecall) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (config.getAudioRingingEnable()) { - //Ringin tonality - if(doublecall) - playSoundDoubleCall(); - else - playSoundIncomingCall(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateIncoming.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATEINCOMING_H -#define PHONECALLSTATEINCOMING_H - -#include "PhoneCallState.h" - -/** - * Incoming PhoneCall. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateIncoming : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateIncoming; - } - - void execute(PhoneCall & phoneCall,bool doublecall); -}; - -#endif //PHONECALLSTATEINCOMING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,25 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateMissed.h" - -#include "PhoneCall.h" - -void PhoneCallStateMissed::execute(PhoneCall & phoneCall) { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateMissed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONECALLSTATEMISSED_H -#define OWPHONECALLSTATEMISSED_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateMissed : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateMissed; - } - - void execute(PhoneCall & phoneCall); -}; - -#endif //OWPHONECALLSTATEMISSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateResumed.h" - -#include "PhoneCall.h" - -void PhoneCallStateResumed::execute(PhoneCall & phoneCall,bool) { - stopSound(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateResumed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONECALLSTATERESUMED_H -#define OWPHONECALLSTATERESUMED_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateResumed : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateResumed; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //OWPHONECALLSTATERESUMED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateRinging.h" - -#include "PhoneCall.h" - -#include -#include - -#include - -void PhoneCallStateRinging::execute(PhoneCall & phoneCall,bool) { - - /*Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (config.getAudioRingingEnable()) { - //Ringin tonality - _soundIncomingCall = new Sound(getSoundIncomingCallFile()); - - _soundIncomingCall->setWaveOutDevice(getRingerAudioDevice()); - //Play the sound indefinitely - _soundIncomingCall->setLoops(-1); - _soundIncomingCall->play(); - }*/ -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRinging.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATERINGING_H -#define PHONECALLSTATERINGING_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateRinging : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateRinging; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATERINGING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateRingingStart.h" - -#include "PhoneCall.h" - -#include -#include - -#include - -void PhoneCallStateRingingStart::execute(PhoneCall & phoneCall,bool) { - playSoundOutgoingCall(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStart.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATERINGINGSTART_H -#define PHONECALLSTATERINGINGSTART_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateRingingStart : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateRingingStart; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATERINGINGSTART_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,32 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateRingingStop.h" - -#include "PhoneCall.h" - -#include -#include - -#include - -void PhoneCallStateRingingStop::execute(PhoneCall & phoneCall,bool) { - - stopSound(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateRingingStop.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATERINGINGSTOP_H -#define PHONECALLSTATERINGINGSTOP_H - -#include "PhoneCallState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateRingingStop : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateRingingStop; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATERINGINGSTOP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateTalking.h" - -#include "PhoneCall.h" - -void PhoneCallStateTalking::execute(PhoneCall & phoneCall,bool) { - stopSound(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateTalking.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,41 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONECALLSTATETALKING_H -#define PHONECALLSTATETALKING_H - -#include "PhoneCallState.h" - -/** - * Communication state. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateTalking : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateTalking; - } - - void execute(PhoneCall & phoneCall,bool doublecall =false); -}; - -#endif //PHONECALLSTATETALKING_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,24 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneCallStateUnknown.h" - -#include "PhoneCall.h" - -void PhoneCallStateUnknown::execute(PhoneCall & phoneCall,bool) { } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/PhoneCallStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -; -#ifndef PHONECALLSTATEUNKNOWN_H -#define PHONECALLSTATEUNKNOWN_H - -#include "PhoneCallState.h" - -#include "PhoneCall.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class PhoneCallStateUnknown : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateUnknown; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false); -}; - -/** - * - * @ingroup model - * @author Preetish Kakkar - */ -class PhoneCallStateBusy : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateBusy; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false) { - } -}; - -/** - * - * @ingroup model - * @author Preetish Kakkar - */ -class PhoneCallStateRejected : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateRejected; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false) { - } -}; - -/** - * - * @ingroup model - * @author Preetish Kakkar - */ -class PhoneCallStateUserNotFound : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateUserNotFound; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false) { - } -}; - -/** - * - * @ingroup model - * @author Preetish Kakkar - */ -class PhoneCallStateUserNotAvailable : public PhoneCallState { -public: - - EnumPhoneCallState::PhoneCallState getCode() const { - return EnumPhoneCallState::PhoneCallStateUserNotAvailable; - } - - void execute(PhoneCall & phoneCall,bool doublecall = false) { - } -}; - -#endif //PHONECALLSTATEUNKNOWN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/SipAddress.cpp qutecom-2.2+dfsg1/wengophone/src/model/phonecall/SipAddress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/SipAddress.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/SipAddress.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "SipAddress.h" - -#include - -using namespace std; - -SipAddress::SipAddress(const std::string & rawSipAddress) { - _rawSipAddress = rawSipAddress; - parseSipAddress(rawSipAddress); -} - -SipAddress::~SipAddress() { -} - -void SipAddress::parseSipAddress(const std::string & rawSipAddress) { - static const string LOWER = "<"; - static const string UPPER = ">"; - static const string SIP = "sip:"; - static const string AT = "@"; - static const string BACKSLASH = "\""; - static const string SPACE = " "; - - //phApi from = "jwagner_office" ;tag=00-01430 - - String tmp(rawSipAddress); - _sipAddress = rawSipAddress; - if (!tmp.empty()) { - string::size_type posSipAddressBegin = tmp.find(LOWER); - if (posSipAddressBegin != string::npos) { - posSipAddressBegin += LOWER.length(); - string::size_type posSipAddressEnd = tmp.find(UPPER); - if (posSipAddressEnd != string::npos) { - _sipAddress = tmp.substr(posSipAddressBegin, posSipAddressEnd - posSipAddressBegin); - } - } - } - //_sipAddress = sip:0170187873@192.168.70.20;user=phone - - tmp = rawSipAddress; - _userName = rawSipAddress; - if (!tmp.empty()) { - string::size_type posUserNameBegin = tmp.find(SIP); - if (posUserNameBegin != string::npos) { - posUserNameBegin += SIP.length(); - string::size_type posUserNameEnd = tmp.find(AT); - if (posUserNameEnd != string::npos) { - _userName = tmp.substr(posUserNameBegin, posUserNameEnd - posUserNameBegin); - } - } - } - //_userName = 0170187873 - - tmp = rawSipAddress; - _displayName = ""; - if (!tmp.empty()) { - string::size_type posDisplayNameEnd = tmp.find(LOWER + SIP); - if (posDisplayNameEnd != string::npos) { - _displayName = tmp.substr(0, posDisplayNameEnd - 0); - _displayName.remove(BACKSLASH); - _displayName.remove(SPACE); - } - } - //_displayName = jwagner_office -} - -std::string SipAddress::toString() const { - if (!getDisplayName().empty()) { - return getDisplayName(); - } - - return getUserName(); -} - -SipAddress SipAddress::fromString(const std::string & str, const std::string & realm) { - /*if (str.empty()) { - return -1; - }*/ - - String sipUri(str); - size_t length = strspn(sipUri.c_str(), " .,;:()[]{}-_/#+0123456789"); - if (length == sipUri.length()) { - //sipUri is a real phone number not a SIP URI or a pseudo - - sipUri.remove(" "); - sipUri.remove("."); - sipUri.remove(","); - sipUri.remove(";"); - sipUri.remove(":"); - sipUri.remove("("); - sipUri.remove(")"); - sipUri.remove("["); - sipUri.remove("]"); - sipUri.remove("{"); - sipUri.remove("}"); - sipUri.remove("-"); - sipUri.remove("_"); - sipUri.remove("/"); - //sipUri.remove("#"); - - //Replaces + by 00 - sipUri.replace("+", "00"); - } - - if (!sipUri.beginsWith("sip:")) { - sipUri = "sip:" + sipUri; - } - - if (!sipUri.contains("@")) { - //Not a SIP URI - sipUri += "@" + realm; - } - - return SipAddress(sipUri); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/SipAddress.h qutecom-2.2+dfsg1/wengophone/src/model/phonecall/SipAddress.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phonecall/SipAddress.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phonecall/SipAddress.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,133 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWSIPADDRESS_H -#define OWSIPADDRESS_H - -#include - -/** - * SIP address parsing. - * - * A SIP URI is like: tanguy - * Separates the username/displayname from the rest of the SIP address. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class SipAddress { -public: - - SipAddress() { - } - - /** - * Constructs a SipAddress given a unmodified complete string raw SIP address. - * - * @param rawSipAddress string raw SIP address - */ - SipAddress(const std::string & rawSipAddress); - - ~SipAddress(); - - /** - * Gets the unmodified SIP address. - * - * The unmodified SIP address from the SIP stack. - * - * @return SIP address - */ - const std::string & getRawSipAddress() const { - return _rawSipAddress; - } - - /** - * Gets the simplified SIP address. - * - * Example: sip:0170187873@voip.wengo.fr - * No display name + no < > - * - * @return SIP address - */ - const std::string & getSipAddress() const { - return _sipAddress; - } - - /** - * Gets the username part of the SIP address. - * - * Example: tanguy - * username is 0170187873 - * - * @return username - */ - const std::string & getUserName() const { - return _userName; - } - - /** - * Gets the diplay name part of the SIP address. - * - * Example: tanguy - * display name is tanguy - * - * @return display name - */ - const std::string & getDisplayName() const { - return _displayName; - } - - /** - * Gets a human readable representation of this SIP address. - * - * @return display name or user name if display name is empty - */ - std::string toString() const; - - /** - * Creates a SipAddress from a unknown string. - * - * @param str unknown string that can be a SIP address or a phone number - * @param realm SIP server realm - * @return the SipAddress created from the given string - */ - static SipAddress fromString(const std::string & str, const std::string & realm); - -private: - - /** - * Parses the from (SIP address) field. - * - * Example of a from field (phApi): - * "jwagner_office" ;tag=00-01430 - * - * @param sipAddress from field - */ - void parseSipAddress(const std::string & sipAddress); - - std::string _rawSipAddress; - - String _sipAddress; - - String _displayName; - - String _userName; -}; - -#endif //SIPADDRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/EnumMakeCallError.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/EnumMakeCallError.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/EnumMakeCallError.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/EnumMakeCallError.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef ENUMMAKECALLERROR_H -#define ENUMMAKECALLERROR_H - -class EnumMakeCallError { -public: - enum MakeCallError { - CallNotHeld, - NotConnected, - EmptyPhoneNumber, - SipError, - NoError - }; -}; - -#endif /* ENUMMAKECALLERROR_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/IPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/IPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/IPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/IPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,256 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIPHONELINE_H -#define OWIPHONELINE_H - -#include -#include -#include - -#include "EnumMakeCallError.h" - -#include -#include -#include -#include - -#include - -class PhoneCall; -class ConferenceCall; -class PhoneLineState; -class SipAccount; -class SipWrapper; -class SipAddress; -class SipPresenceState; -class UserProfile; - -/** - * Interface representing a phone line. - * - * A phone line creates/deletes/contains a list of PhoneCall. - * - * @ingroup model - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class IPhoneLine : Interface { -public: - - /** - * @see SipWrapper::phoneLineStateChangedEvent - */ - Event stateChangedEvent; - - /** - * A PhoneCall has been created. - * - * @param sender this class - * @param phoneCall phoneCall created - */ - Event phoneCallCreatedEvent; - - /** - * A PhoneCall has been closed. - * - * @param sender this class - * @param phoneCall phoneCall closed - */ - Event phoneCallClosedEvent; - - virtual ~IPhoneLine() { - } - - virtual std::string getMySipAddress() const = 0; - - /** - * @see SipWrapper::makeCall() - */ - virtual EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall = NULL) = 0; - - /** - * @see SipWrapper::acceptCall() - */ - virtual void acceptCall(int callId) = 0; - - /** - * @see SipWrapper::rejectCall() - */ - virtual void rejectCall(int callId) = 0; - - /** - * @see SipWrapper::closeCall() - */ - virtual void closeCall(int callId) = 0; - - /** - * @see SipWrapper::holdCall() - */ - virtual void holdCall(int callId) = 0; - - /** - * @see SipWrapper::resumeCall() - */ - virtual void resumeCall(int callId) = 0; - - /** - * @see SipWrapper::blindTransfer() - */ - virtual void blindTransfer(int callId, const std::string & sipAddress) = 0; - - /** - * @see SipWrapper::playDtmf() - */ - virtual void playDtmf(int callId, char dtmf) = 0; - - /** - * @see SipWrapper::playSoundFile() - */ - virtual void playSoundFile(int callId, const std::string & soundFile) = 0; - - /** - * @see SipWrapper::getAudioCodecUsed() - */ - virtual CodecList::AudioCodec getAudioCodecUsed(int callId) = 0; - - /** - * @see SipWrapper::getVideoCodecUsed() - */ - virtual CodecList::VideoCodec getVideoCodecUsed(int callId) = 0; - - /** - * Gets the SIP account associated with this PhoneLine. - * - * @return SIP account associated with this PhoneLine or NULL - */ - virtual SipAccount & getSipAccount() = 0; - - /** - * Establishes a connection with the SIP server. - */ - virtual bool connect() = 0; - - /** - * Finishes the connection with the SIP server. - * - * @param force if true, disconnect without doing any transactions - */ - virtual void disconnect(bool force = false) = 0; - - /** - * @return true if connected, otherwise false - */ - virtual bool isConnected() const = 0; - - /** - * Sets the state of a PhoneCall. - * - * @param callId PhoneCall id - * @param state the state (e.g event) - * @param sipAddress from who we get a phone call - */ - virtual void setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress) = 0; - - /** - * Gets the SIP implementation wrapper. - * - * @return the SIP implementation wrapper - */ - virtual SipWrapper & getSipWrapper() const = 0; - - /** - * Gets the PhoneLine id. - * - * @return the id associated with this PhoneLine - */ - virtual int getLineId() const = 0; - - /** - * Changes the state of this PhoneLine. - * - * @param state state code corresponding to the new PhoneLine state - */ - virtual void setState(EnumPhoneLineState::PhoneLineState state) = 0; - - /** - * Gets the current state of this PhoneLine. - * - * @return state of this PhoneLine - */ - virtual const PhoneLineState & getState() const = 0; - - /** - * Gets the UserProfile instance. - * - * @return UserProfile instance - */ - virtual UserProfile & getUserProfile() const = 0; - - /** - * Gets the PhoneCall associated with a given callId. - * - * @return PhoneCall given its callId or NULL if no PhoneCall corresponds to the callId - */ - virtual PhoneCall * getPhoneCall(int callId) /*const*/ = 0; - - /** - * Gets the active PhoneCall associated with this PhoneLine. - * - * @return active PhoneCall or NULL - */ - virtual PhoneCall * getActivePhoneCall() const = 0; - - typedef List PhoneCallList; - - /** - * Gets the list of PhoneCall associated with this PhoneLine. - * - * @return the list of PhoneCall - */ - virtual PhoneCallList getPhoneCallList() const = 0; - - /** - * Set flip video parameter. - */ - virtual void flipVideoImage(bool flip) = 0; - - /** - * @see SipWrapper::setCallsEncryption - */ - virtual void setCallsEncryption(bool enable) = 0; - - /** - * @see SipWrapper::areCallsEncrypted - */ - virtual bool isCallEncrypted(int callId) = 0; - - /** - * @return True if there's pending call(s) - */ - virtual bool hasPendingCalls() const = 0; - - /** - * Close active call(s). - */ - virtual void closePendingCalls() = 0; - -}; - -#endif //OWIPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLine.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLine.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,605 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLine.h" - -#include "PhoneLineStateUnknown.h" -#include "PhoneLineStateProgress.h" -#include "PhoneLineStateOk.h" -#include "PhoneLineStateClosed.h" -#include "PhoneLineStateTimeout.h" -#include "PhoneLineStateServerError.h" -#include "PhoneLineStateAuthenticationError.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include - -#include -using namespace std; - -#include - -PhoneLine::PhoneLine(SipAccount & sipAccount, UserProfile & userProfile) - : _sipAccount(sipAccount), - _userProfile(userProfile) { - - static PhoneLineStateUnknown stateUnknown; - _phoneLineStateList += &stateUnknown; - _state = &stateUnknown; - - static PhoneLineStateProgress stateProgress; - _phoneLineStateList += &stateProgress; - - static PhoneLineStateOk stateOk; - _phoneLineStateList += &stateOk; - - static PhoneLineStateClosed stateClosed; - _phoneLineStateList += &stateClosed; - - static PhoneLineStateTimeout stateTimeout; - _phoneLineStateList += &stateTimeout; - - static PhoneLineStateServerError stateServerError; - _phoneLineStateList += &stateServerError; - - static PhoneLineStateAuthenticationError stateAuthenticationError; - _phoneLineStateList += &stateAuthenticationError; - - _activePhoneCall = NULL; - - _sipWrapper = NULL; - _sipCallbacks = NULL; - _lineId = SipWrapper::VirtualLineIdError; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.valueChangedEvent - += boost::bind(&PhoneLine::configureSipWrapper, this); -} - -PhoneLine::~PhoneLine() { - disconnect(); - - //Do not need to delete everything (_phoneLineStateList) - //since states are static inside the constructor - _state = NULL; - - OWSAFE_DELETE(_sipCallbacks); - - _sipWrapper = NULL; - - OWSAFE_DELETE(_activePhoneCall); -} - -bool PhoneLine::init() { - _sipWrapper = SipWrapperFactory::getFactory().createSipWrapper(); - _sipCallbacks = new SipCallbacks(*_sipWrapper, _userProfile); - _lineId = SipWrapper::VirtualLineIdError; - return initSipWrapper(); -} - -std::string PhoneLine::getMySipAddress() const { - return "sip:" + _sipAccount.getIdentity() + "@" + _sipAccount.getRealm(); -} - -EnumMakeCallError::MakeCallError PhoneLine::makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall) { - if (!_sipAccount.isConnected()) { - LOG_ERROR("SipAccount not connected"); - return EnumMakeCallError::NotConnected; - } - - if (phoneNumber.empty()) { - LOG_ERROR("empty phone number"); - return EnumMakeCallError::EmptyPhoneNumber; - } - - for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - - if (phoneCall) { - EnumPhoneCallState::PhoneCallState state = phoneCall->getState(); - if (state != EnumPhoneCallState::PhoneCallStateHold && - state != EnumPhoneCallState::PhoneCallStateClosed) { - - return EnumMakeCallError::CallNotHeld; - } - } - } - - SipAddress sipAddress = SipAddress::fromString( - phoneNumber, _sipAccount.getRealm() - ); - - //Puts all the PhoneCall in the hold state before to create a new PhoneCall - //holdAllCalls(); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - bool enableVideo = config.getVideoEnable(); - - if (enableVideo) { - //Sets the video device - _sipWrapper->setVideoDevice(config.getVideoWebcamDevice()); - } - - PhoneCall * phoneCall = new PhoneCall(*this, sipAddress); - phoneCall->setConferenceCall(conferenceCall); - _activePhoneCall = phoneCall; - int callId = _sipWrapper->makeCall( - _lineId, sipAddress.getRawSipAddress(), enableVideo - ); - - if (callId < 0) { - //FIXME should be replaced by a LOG_FATAL() - LOG_ERROR("couldn't place the call, SipWrapper returned an error=" + - String::fromNumber(callId)); - return EnumMakeCallError::SipError; - } - - phoneCall->setCallId(callId); - - //Adds the PhoneCall to the list of PhoneCall - _phoneCallMap[callId] = phoneCall; - - phoneCall->setState(EnumPhoneCallState::PhoneCallStateDialing); - - //Sends the event a new PhoneCall has been created - phoneCallCreatedEvent(*this, *phoneCall); - - //History: create a HistoryMemento for this outgoing call - HistoryMemento * memento = new HistoryMemento( - HistoryMemento::OutgoingCall, sipAddress.getSipAddress(), callId); - _userProfile.getHistory().addMemento(memento); - - return EnumMakeCallError::NoError; -} - -bool PhoneLine::connect() { - - if (_sipAccount.isConnected()) { - return true; // Nothing to do if the line is already connected! - } - _lineId = _sipWrapper->addVirtualLine( - _sipAccount.getDisplayName(), - _sipAccount.getUsername(), - _sipAccount.getIdentity(), - _sipAccount.getPassword(), - _sipAccount.getRealm(), - _sipAccount.getSIPProxyServerHostname(), - _sipAccount.getRegisterServerHostname()); - if (_lineId < 0) { - LOG_ERROR("VirtualLine Creation Failed"); - return false; - } - _sipAccount.setVLineID(_lineId); - - if (_sipWrapper->registerVirtualLine(_lineId) != 0) { - LOG_ERROR("Couldn't register virtual line"); - return false; - } - - LOG_DEBUG("connect username=" + _sipAccount.getUsername() - + " server=" + _sipAccount.getRegisterServerHostname() - + " lineId=" + String::fromNumber(_lineId)); - return true; -} - -void PhoneLine::disconnect(bool force) { - if (_lineId != SipWrapper::VirtualLineIdError) { - _sipAccount.setConnected(false); - _sipWrapper->removeVirtualLine(_lineId, force); - } -} - -void PhoneLine::checkCallId(int callId) { - PhoneCall * phoneCall = getPhoneCall(callId); - if (!phoneCall) { - LOG_FATAL("unknown phone call callId=" + String::fromNumber(callId)); - } -} - -void PhoneLine::acceptCall(int callId) { - //FIXME crash in some cases - //checkCallId(callId); - - holdCallsExcept(callId); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - bool enableVideo = config.getVideoEnable(); - - if (enableVideo) { - //Sets the video device - _sipWrapper->setVideoDevice(config.getVideoWebcamDevice()); - } - - _sipWrapper->acceptCall(callId, enableVideo); - LOG_DEBUG("call accepted callId=" + String::fromNumber(callId)); -} - -void PhoneLine::rejectCall(int callId) { - //FIXME crash in some cases - //checkCallId(callId); - - _sipWrapper->rejectCall(callId); - //History: retrieve the memento and change its state to rejected - _userProfile.getHistory().updateCallState(callId, HistoryMemento::RejectedCall); - LOG_DEBUG("call rejected callId=" + String::fromNumber(callId)); -} - -void PhoneLine::closeCall(int callId) { - checkCallId(callId); - _sipWrapper->closeCall(callId); - LOG_DEBUG("call closed callId=" + String::fromNumber(callId)); -} - -void PhoneLine::holdCall(int callId) { - checkCallId(callId); - _sipWrapper->holdCall(callId); - LOG_DEBUG("call hold callId=" + String::fromNumber(callId)); -} - -void PhoneLine::resumeCall(int callId) { - checkCallId(callId); - _sipWrapper->resumeCall(callId); - LOG_DEBUG("call resumed callId=" + String::fromNumber(callId)); -} - -void PhoneLine::blindTransfer(int callId, const std::string & sipAddress) { - checkCallId(callId); - SipAddress sipUri = SipAddress::fromString( - sipAddress, getSipAccount().getRealm() - ); - _sipWrapper->blindTransfer(callId, sipUri.getRawSipAddress()); - LOG_DEBUG("call transfered to=" + sipAddress); -} - -void PhoneLine::playSoundFile(int callId, const std::string & soundFile) { - //No check - //checkCallId(callId); - _sipWrapper->playSoundFile(callId, soundFile); -} - -void PhoneLine::playDtmf(int callId, char dtmf) { - //No check - //checkCallId(callId); - _sipWrapper->playDtmf(callId, dtmf); -} - - -CodecList::AudioCodec PhoneLine::getAudioCodecUsed(int callId) { - return _sipWrapper->getAudioCodecUsed(callId); -} - -CodecList::VideoCodec PhoneLine::getVideoCodecUsed(int callId) { - return _sipWrapper->getVideoCodecUsed(callId); -} - -void PhoneLine::setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress) { - LOG_DEBUG("call state changed callId=" + String::fromNumber(callId) + - " state=" + EnumPhoneCallState::toString(state) + - " from=" + sipAddress.getSipAddress()); - - //Saves the last state - EnumPhoneCallState::PhoneCallState lastState = EnumPhoneCallState::PhoneCallStateUnknown; - PhoneCall * phoneCall = getPhoneCall(callId); - if (phoneCall) { - - lastState = phoneCall->getState(); - - if (phoneCall->getState() == state) { - //We are already in this state - //Prevents the state to be applied 2 times in a row - return; - } - - phoneCall->setState(state); - } - - // This should not replace the state machine pattern PhoneCallState/ PhoneLineState - switch (state) { - - case EnumPhoneCallState::PhoneCallStateUnknown: - break; - - case EnumPhoneCallState::PhoneCallStateError: - callClosed(callId); - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - holdCallsExcept(callId); - _activePhoneCall = getPhoneCall(callId); - break; - - case EnumPhoneCallState::PhoneCallStateTalking: - _activePhoneCall = getPhoneCall(callId); - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - break; - - case EnumPhoneCallState::PhoneCallStateRinging: - break; - - case EnumPhoneCallState::PhoneCallStateClosed: - if (lastState == EnumPhoneCallState::PhoneCallStateIncoming) { - //History: retrieve the memento and change its state to missed - _userProfile.getHistory().updateCallState( - callId, HistoryMemento::MissedCall); - LOG_DEBUG("call missed callId=" + String::fromNumber(callId)); - } - callClosed(callId); - break; - - case EnumPhoneCallState::PhoneCallStateIncoming: { - //Sends SIP code 180 - //TODO automatically?? - _sipWrapper->sendRingingNotification(callId, - ConfigManager::getInstance().getCurrentConfig().getVideoEnable()); - - PhoneCall * phoneCall = new PhoneCall(*this, sipAddress); - phoneCall->setCallId(callId); - - //Adds the PhoneCall to the list of PhoneCall - _phoneCallMap[callId] = phoneCall; - - phoneCall->setState(state); - - _activePhoneCall = phoneCall; - - if(getUserProfile().getPresenceState() != EnumPresenceState::PresenceStateDoNotDisturb) - //Sends the event a new PhoneCall has been created - phoneCallCreatedEvent(*this, *phoneCall); - - //History: create a HistoryMemento for this incoming call - std::string displayName = sipAddress.getUserName(); - if (displayName.empty()) { - displayName = sipAddress.getDisplayName(); - } - HistoryMemento * memento = new HistoryMemento( - HistoryMemento::IncomingCall, displayName, callId); - _userProfile.getHistory().addMemento(memento); - - if(getUserProfile().getPresenceState() == EnumPresenceState::PresenceStateDoNotDisturb) - rejectCall(callId); - break; - } - - case EnumPhoneCallState::PhoneCallStateHold: - break; - - case EnumPhoneCallState::PhoneCallStateMissed: - //History: retrieve the memento and change its state to missed - _userProfile.getHistory().updateCallState(callId, HistoryMemento::MissedCall); - LOG_DEBUG("call missed callId=" + String::fromNumber(callId)); - break; - - case EnumPhoneCallState::PhoneCallStateRedirected: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStart: - break; - - case EnumPhoneCallState::PhoneCallStateRingingStop: - break; - - case EnumPhoneCallState::PhoneCallStateBusy: - case EnumPhoneCallState::PhoneCallStateRejected: - case EnumPhoneCallState::PhoneCallStateUserNotFound: - case EnumPhoneCallState::PhoneCallStateUserNotAvailable: - callClosed(callId); - break; - - default: - LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); - } -} - -void PhoneLine::callClosed(int callId) { - //If it crashes inside checkCallId() this is probably due - //to a duplicated phCALLCLOSED message - //checkCallId(callId); - - PhoneCall * phoneCall = getPhoneCall(callId); - if (!phoneCall) { - //Phone call has been already closed - return; - } - - if (_activePhoneCall == phoneCall) { - _activePhoneCall = NULL; - } - - //Deletes the PhoneCall that is closed now - //delete phoneCall; - - //History: update the duration of the memento associated to this phonecall - _userProfile.getHistory().updateCallDuration(callId, - phoneCall->getDuration()); - - //Removes it from the list of PhoneCall - _phoneCallMap.erase(callId); - - phoneCallClosedEvent(*this, *phoneCall); -} - -void PhoneLine::holdCallsExcept(int callId) { - for (PhoneCalls::iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - if (phoneCall) { - if (phoneCall->getCallId() != callId && - !phoneCall->getConferenceCall()) { - - phoneCall->hold(); - } - } - } -} - -void PhoneLine::holdAllCalls() { - holdCallsExcept(SipWrapper::CallIdError); -} - -void PhoneLine::setState(EnumPhoneLineState::PhoneLineState state) { - LOG_DEBUG("PhoneLineState=" + EnumPhoneLineState::toString(state)); - - for (unsigned i = 0; i < _phoneLineStateList.size(); i++) { - PhoneLineState * phoneLineState = _phoneLineStateList[i]; - if (phoneLineState->getCode() == state) { - if (_state->getCode() != phoneLineState->getCode()) { - _state = phoneLineState; - _state->execute(*this); - - if (state == EnumPhoneLineState::PhoneLineStateAuthenticationError) { - return; - } - - LOG_DEBUG("line state changed lineId=" + - String::fromNumber(_lineId) + " state=" + - EnumPhoneLineState::toString(_state->getCode())); - stateChangedEvent(*this, state); - return; - } else { - //Stay in the same state - return; - } - } - } - - LOG_FATAL("unknown PhoneLineState=" + String::fromNumber(state)); -} - -PhoneCall * PhoneLine::getPhoneCall(int callId) { - return _phoneCallMap[callId]; -} - -IPhoneLine::PhoneCallList PhoneLine::getPhoneCallList() const { - PhoneCallList phoneCallList; - - for (PhoneCalls::const_iterator it = _phoneCallMap.begin(); it != _phoneCallMap.end(); ++it) { - PhoneCall * phoneCall = (*it).second; - if (phoneCall) { - phoneCallList += phoneCall; - } - } - return phoneCallList; -} - -bool PhoneLine::initSipWrapper() { - configureSipWrapper(); - _sipWrapper->init(); - return _sipWrapper->isInitialized(); -} - -void PhoneLine::configureSipWrapper() { - //TODO check if Settings keys have changed - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //Setting plugin path - string pluginPath = Path::getApplicationDirPath() + config.getCodecPluginPath(); - _sipWrapper->setPluginPath(pluginPath); - - //Setting proxy - string proxyServer = config.getNetworkProxyServer(); - if (!proxyServer.empty()) { - unsigned proxyPort = config.getNetworkProxyPort(); - string proxyLogin = config.getNetworkProxyLogin(); - string proxyPassword = config.getNetworkProxyPassword(); - _sipWrapper->setProxy(proxyServer, proxyPort, - proxyLogin, proxyPassword); - } - - //Setting HTTP tunnel - if (_sipAccount.isHttpTunnelNeeded()) { - if (_sipAccount.httpTunnelHasSSL()) { - _sipWrapper->setTunnel(_sipAccount.getHttpsTunnelServerHostname(), - _sipAccount.getHttpsTunnelServerPort(), _sipAccount.httpTunnelHasSSL()); - } else { - _sipWrapper->setTunnel(_sipAccount.getHttpTunnelServerHostname(), - _sipAccount.getHttpTunnelServerPort(), _sipAccount.httpTunnelHasSSL()); - } - } - - //Setting SIP proxy - _sipWrapper->setSIP(_sipAccount.getSIPProxyServerHostname(), - _sipAccount.getSIPProxyServerPort(), - _sipAccount.getLocalSIPPort()); - - //Setting NAT - string natType = config.getNetworkNatType(); - _sipWrapper->setNatType(EnumNatType::toNatType(natType)); - - //Setting video quality - _sipWrapper->setVideoQuality(EnumVideoQuality::toVideoQuality( - config.getVideoQuality())); - - //Sets audio codec preferences - _sipWrapper->setAudioCodecList(config.getAudioCodecList()); - - //Setting audio devices - _sipWrapper->setCallOutputAudioDevice(AudioDevice(config.getAudioOutputDeviceId())); - _sipWrapper->setCallInputAudioDevice(AudioDevice(config.getAudioInputDeviceId())); - _sipWrapper->setRingerOutputAudioDevice(AudioDevice(config.getAudioRingerDeviceId())); - - //AEC + half duplex - _sipWrapper->enableAEC(config.getAudioAEC()); - _sipWrapper->enableHalfDuplex(config.getAudioHalfDuplex()); - - // Presence & IM (SIP/SIMPLE) - _sipWrapper->enablePIM(_sipAccount.isPIMEnabled()); - - // Configure call encryption - setCallsEncryption(config.getCallEncryptionMode()); -} - -bool PhoneLine::isConnected() const { - return (_state->getCode() == EnumPhoneLineState::PhoneLineStateOk); -} - -void PhoneLine::flipVideoImage(bool flip) { - _sipWrapper->flipVideoImage(flip); -} - -void PhoneLine::setCallsEncryption(bool enable) { - _sipWrapper->setCallsEncryption(enable); -} - -bool PhoneLine::isCallEncrypted(int callId) { - return _sipWrapper->isCallEncrypted(callId); -} - -bool PhoneLine::hasPendingCalls() const { - return (_activePhoneCall != NULL); -} - -void PhoneLine::closePendingCalls() { - if (_activePhoneCall) { - _activePhoneCall->close(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLine.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,206 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONELINE_H -#define OWPHONELINE_H - -#include "IPhoneLine.h" - -#include - -#include - -#include - -class PhoneLineState; -class PhoneCall; -class ConferenceCall; -class WengoPhone; -class SipAddress; -class SipCallbacks; -class SipWrapper; -class SipPresenceState; - -class PhoneLine : public IPhoneLine, public Trackable { -public: - - PhoneLine(SipAccount & sipAccount, UserProfile & userProfile); - - ~PhoneLine(); - - bool init(); - - std::string getMySipAddress() const; - - EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber, ConferenceCall * conferenceCall = NULL); - - void acceptCall(int callId); - - void rejectCall(int callId); - - void closeCall(int callId); - - void holdCall(int callId); - - void resumeCall(int callId); - - void blindTransfer(int callId, const std::string & sipAddress); - - void playSoundFile(int callId, const std::string & soundFile); - - void playDtmf(int callId, char dtmf); - - CodecList::AudioCodec getAudioCodecUsed(int callId); - - CodecList::VideoCodec getVideoCodecUsed(int callId); - - SipWrapper & getSipWrapper() const { - return *_sipWrapper; - } - - SipAccount & getSipAccount() { - return _sipAccount; - } - - bool connect(); - - void disconnect(bool force = false); - - void setPhoneCallState(int callId, EnumPhoneCallState::PhoneCallState state, const SipAddress & sipAddress); - - int getLineId() const { - return _lineId; - } - - void setState(EnumPhoneLineState::PhoneLineState state); - - const PhoneLineState & getState() const { - return *_state; - } - - UserProfile & getUserProfile() const { - return _userProfile; - } - - PhoneCall * getPhoneCall(int callId) /*const*/; - - PhoneCall * getActivePhoneCall() const { - return _activePhoneCall; - } - - PhoneCallList getPhoneCallList() const; - - bool isConnected() const; - - void flipVideoImage(bool flip); - - void setCallsEncryption(bool enable); - - bool isCallEncrypted(int callId); - - /** - * @see IPhoneLine::hasPendingcalls - */ - bool hasPendingCalls() const; - - /** - * @see IPhoneLine::closePendingCalls - */ - void closePendingCalls(); - -private: - - /** - * Creates and sets the SIP stack. - */ - bool initSipWrapper(); - - /** - * Configures the SIP stack. - * - * Configures Audio devices, AEC, half-duplex ect... - */ - void configureSipWrapper(); - - /** - * Puts all the PhoneCall in the hold state except one. - * - * Code factorization. - * - * @param callId phone call that won't be put in hold state - */ - void holdCallsExcept(int callId); - - /** - * Puts all the PhoneCall in the hold state. - * - * @see holdCallsExcept() - */ - void holdAllCalls(); - - /** - * A call has been closed. - * - * Code factorization. - * - * @param callId phone call being closed - */ - void callClosed(int callId); - - /** - * Checks if a callId is valid. - * - * Makes an assertion if the callId is not valid. - * - * @param callId to check - */ - void checkCallId(int callId); - - /** SIP implementation. */ - SipWrapper * _sipWrapper; - - SipCallbacks * _sipCallbacks; - - typedef std::map < int, PhoneCall * > PhoneCalls; - - /** Map of PhoneCall. */ - PhoneCalls _phoneCallMap; - - /** Active PhoneCall. */ - PhoneCall * _activePhoneCall; - - /** SipAccount associated with this PhoneLine. */ - SipAccount & _sipAccount; - - /** Line id of this PhoneLine. */ - int _lineId; - - /** State of the PhoneLine. */ - PhoneLineState * _state; - - /** Defines the vector of PhoneLineState. */ - typedef List < PhoneLineState * > PhoneLineStateList; - - /** List of PhoneLineState. */ - PhoneLineStateList _phoneLineStateList; - - UserProfile & _userProfile; -}; - -#endif //OWPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateAuthenticationError.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateAuthenticationError::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().phoneLineAuthenticationError(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateAuthenticationError.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATEAUTHENTICATIONERROR_H -#define PHONELINESTATEAUTHENTICATIONERROR_H - -#include "PhoneLineState.h" - -class PhoneLineStateAuthenticationError : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateAuthenticationError; - } -}; - -#endif //PHONELINESTATEAUTHENTICATIONERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateClosed.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateClosed::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(false); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateClosed.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATECLOSED_H -#define PHONELINESTATECLOSED_H - -#include "PhoneLineState.h" - -class PhoneLineStateClosed : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateClosed; - } -}; - -#endif //PHONELINESTATECLOSED_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineState.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATE_H -#define PHONELINESTATE_H - -#include - -#include - -#include - -class IPhoneLine; - -/** - * Represents the state of a PhoneLine. - * - * @author Tanguy Krotoff - */ -class PhoneLineState : NonCopyable { -public: - - virtual ~PhoneLineState() { - } - - virtual void execute(IPhoneLine & phoneLine) = 0; - - /** - * Gets the status code corresponding to this PhoneLine state. - * - * @return status code of this state - */ - virtual EnumPhoneLineState::PhoneLineState getCode() const = 0; -}; - -#endif //PHONELINESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateOk.h" - -#include "IPhoneLine.h" -#include - -#include - -#include - -#include - -void PhoneLineStateOk::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(true); - - WengoPhone& wengoPhone = WengoPhone::getInstance(); - const std::string callFromCommandLine = wengoPhone.getStartupCall(); - if (!callFromCommandLine.empty()) { - LOG_DEBUG("call from command line: " + callFromCommandLine); - //Resets the value to its default to do this call only for the first connection - wengoPhone.setStartupCall(std::string()); - //// - phoneLine.makeCall(callFromCommandLine); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateOk.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATEOK_H -#define PHONELINESTATEOK_H - -#include "PhoneLineState.h" - -class PhoneLineStateOk : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateOk; - } -}; - -#endif //PHONELINESTATEOK_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateProgress.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateProgress::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(false); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateProgress.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHONELINESTATEPROGRESS_H -#define OWPHONELINESTATEPROGRESS_H - -#include "PhoneLineState.h" - -class PhoneLineStateProgress : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateProgress; - } -}; - -#endif //OWPHONELINESTATEPROGRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateServerError.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateServerError::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(false); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateServerError.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATESERVERERROR_H -#define PHONELINESTATESERVERERROR_H - -#include "PhoneLineState.h" - -class PhoneLineStateServerError : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateServerError; - } -}; - -#endif //PHONELINESTATESERVERERROR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateTimeout.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateTimeout::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(false); - - // Restart connection. - phoneLine.disconnect(true); - phoneLine.connect(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateTimeout.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATETIMEOUT_H -#define PHONELINESTATETIMEOUT_H - -#include "PhoneLineState.h" - -class PhoneLineStateTimeout : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateTimeout; - } -}; - -#endif //PHONELINESTATETIMEOUT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.cpp qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,27 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PhoneLineStateUnknown.h" - -#include "IPhoneLine.h" -#include - -void PhoneLineStateUnknown::execute(IPhoneLine & phoneLine) { - phoneLine.getSipAccount().setConnected(false); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.h qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/phoneline/PhoneLineStateUnknown.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PHONELINESTATEUNKNOWN_H -#define PHONELINESTATEUNKNOWN_H - -#include "PhoneLineState.h" - -class PhoneLineStateUnknown : public PhoneLineState { -public: - - void execute(IPhoneLine & phoneLine); - - EnumPhoneLineState::PhoneLineState getCode() const { - return EnumPhoneLineState::PhoneLineStateUnknown; - } -}; - -#endif //PHONELINESTATEUNKNOWN_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence10.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence10.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence1.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence1.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence2.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence2.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence3.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence3.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence4.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence4.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence5.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence5.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence6.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence6.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence7.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence7.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence8.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence8.jpg differ Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/chat_presence9.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/model/presence/chat_presence9.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateAway.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateAway.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateAway.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateAway.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MyPresenceStateAway.h" - -#include "MyPresenceStateOnline.h" -#include "MyPresenceStateOffline.h" -#include "MyPresenceStateDoNotDisturb.h" -#include "MyPresenceStateInvisible.h" - -MyPresenceState * MyPresenceStateAway::offline() { - return MyPresenceStateOffline::getInstance(); -} - -MyPresenceState * MyPresenceStateAway::online() { - return MyPresenceStateOnline::getInstance(); -} - -MyPresenceState * MyPresenceStateAway::doNotDisturb() { - return MyPresenceStateDoNotDisturb::getInstance(); -} - -MyPresenceState * MyPresenceStateAway::away() { - return this; -} - -MyPresenceState * MyPresenceStateAway::invisible() { - return MyPresenceStateInvisible::getInstance(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateAway.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateAway.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateAway.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateAway.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MYPRESENCESTATEAWAY_H -#define MYPRESENCESTATEAWAY_H - -#include "MyPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class MyPresenceStateAway : public MyPresenceState { -public: - - MyPresenceState * online(); - - MyPresenceState * offline(); - - MyPresenceState * doNotDisturb(); - - MyPresenceState * away(); - - MyPresenceState * invisible(); - - std::string toString() const { - return toString_static(); - } - - static MyPresenceState * getInstance() { - static MyPresenceStateAway presenceState; - - return &presenceState; - } - -private: - - MyPresenceStateAway() { - } - - static std::string toString_static() { - return "Away"; - } -}; - -#endif //MYPRESENCESTATEAWAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MyPresenceStateDoNotDisturb.h" - -#include "MyPresenceStateAway.h" -#include "MyPresenceStateOnline.h" -#include "MyPresenceStateOffline.h" -#include "MyPresenceStateInvisible.h" - -MyPresenceState * MyPresenceStateDoNotDisturb::offline() { - return MyPresenceStateOffline::getInstance(); -} - -MyPresenceState * MyPresenceStateDoNotDisturb::online() { - return MyPresenceStateOnline::getInstance(); -} - -MyPresenceState * MyPresenceStateDoNotDisturb::doNotDisturb() { - return this; -} - -MyPresenceState * MyPresenceStateDoNotDisturb::away() { - return MyPresenceStateAway::getInstance(); -} - -MyPresenceState * MyPresenceStateDoNotDisturb::invisible() { - return MyPresenceStateInvisible::getInstance(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateDoNotDisturb.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MYPRESENCESTATEDONOTDISTURB_H -#define MYPRESENCESTATEDONOTDISTURB_H - -#include "MyPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class MyPresenceStateDoNotDisturb : public MyPresenceState { -public: - - MyPresenceState * online(); - - MyPresenceState * offline(); - - MyPresenceState * doNotDisturb(); - - MyPresenceState * away(); - - MyPresenceState * invisible(); - - std::string toString() const { - return toString_static(); - } - - static MyPresenceState * getInstance() { - static MyPresenceStateDoNotDisturb presenceState; - - return &presenceState; - } - -private: - - MyPresenceStateDoNotDisturb() { - } - - static std::string toString_static() { - return "DoNotDisturb"; - } -}; - -#endif //MYPRESENCESTATEDONOTDISTURB_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceState.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWMYPRESENCESTATE_H -#define OWMYPRESENCESTATE_H - -#include - -#include - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class MyPresenceState : Interface { -public: - - virtual ~MyPresenceState() { - } - - /** - * Switchs the presence status to online. - * - * @exception MyPresenceStateException if the switch cannot be done - * @return the new MyPresenceState that corresponds to the online presence status - */ - virtual MyPresenceState * online() = 0; - - /** - * Switchs the presence status to offline. - * - * @exception MyPresenceStateException if the switch cannot be done - * @return the new MyPresenceState that corresponds to the offline presence status - */ - virtual MyPresenceState * offline() = 0; - - /** - * Switchs the presence status to do not disturb. - * - * @exception MyPresenceStateException if the switch cannot be done - * @return the new MyPresenceState that corresponds to the do not disturb presence status - */ - virtual MyPresenceState * doNotDisturb() = 0; - - /** - * Switchs the presence status to away. - * - * @exception MyPresenceStateException if the switch cannot be done - * @return the new MyPresenceState that corresponds to the away presence status - */ - virtual MyPresenceState * away() = 0; - - /** - * Switchs the presence status to away. - * - * @exception MyPresenceStateException if the switch cannot be done - * @return the new MyPresenceState that corresponds to the away presence status - */ - virtual MyPresenceState * invisible() = 0; - - /** - * @return the string identifying the state. - */ - virtual std::string toString() const = 0; -}; - -#endif //OWMYPRESENCESTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MyPresenceStateInvisible.h" - -#include "MyPresenceStateAway.h" -#include "MyPresenceStateOnline.h" -#include "MyPresenceStateDoNotDisturb.h" -#include "MyPresenceStateOffline.h" - -MyPresenceState * MyPresenceStateInvisible::offline() { - return MyPresenceStateOffline::getInstance(); -} - -MyPresenceState * MyPresenceStateInvisible::online() { - return MyPresenceStateOnline::getInstance(); -} - -MyPresenceState * MyPresenceStateInvisible::doNotDisturb() { - return MyPresenceStateDoNotDisturb::getInstance(); -} - -MyPresenceState * MyPresenceStateInvisible::away() { - return MyPresenceStateAway::getInstance(); -} - -MyPresenceState * MyPresenceStateInvisible::invisible() { - return this; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateInvisible.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MYPRESENCESTATEINVISIBLE_H -#define MYPRESENCESTATEINVISIBLE_H - -#include "MyPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class MyPresenceStateInvisible : public MyPresenceState { -public: - - MyPresenceState * online(); - - MyPresenceState * offline(); - - MyPresenceState * doNotDisturb(); - - MyPresenceState * away(); - - MyPresenceState * invisible(); - - std::string toString() const { - return toString_static(); - } - - static MyPresenceState * getInstance() { - static MyPresenceStateInvisible presenceState; - - return &presenceState; - } - -private: - - MyPresenceStateInvisible() { - } - - static std::string toString_static() { - return "Invisible"; - } - -}; - -#endif //MYPRESENCESTATEINVISIBLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MyPresenceStateOffline.h" - -#include "MyPresenceStateAway.h" -#include "MyPresenceStateOnline.h" -#include "MyPresenceStateDoNotDisturb.h" -#include "MyPresenceStateInvisible.h" - -MyPresenceState * MyPresenceStateOffline::offline() { - return this; -} - -MyPresenceState * MyPresenceStateOffline::online() { - return MyPresenceStateOnline::getInstance(); -} - -MyPresenceState * MyPresenceStateOffline::doNotDisturb() { - return MyPresenceStateDoNotDisturb::getInstance(); -} - -MyPresenceState * MyPresenceStateOffline::away() { - return MyPresenceStateAway::getInstance(); -} - -MyPresenceState * MyPresenceStateOffline::invisible() { - return MyPresenceStateInvisible::getInstance(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOffline.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MYPRESENCESTATEOFFLINE_H -#define MYPRESENCESTATEOFFLINE_H - -#include "MyPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class MyPresenceStateOffline : public MyPresenceState { -public: - - MyPresenceState * online(); - - MyPresenceState * offline(); - - MyPresenceState * doNotDisturb(); - - MyPresenceState * away(); - - MyPresenceState * invisible(); - - std::string toString() const { - return toString_static(); - } - - static MyPresenceState * getInstance() { - static MyPresenceStateOffline presenceState; - - return &presenceState; - } - -private: - - MyPresenceStateOffline() { - } - - static std::string toString_static() { - return "Offline"; - } - -}; - -#endif //MYPRESENCESTATEOFFLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MyPresenceStateOnline.h" - -#include "MyPresenceStateAway.h" -#include "MyPresenceStateOffline.h" -#include "MyPresenceStateDoNotDisturb.h" -#include "MyPresenceStateInvisible.h" - -MyPresenceState * MyPresenceStateOnline::offline() { - return MyPresenceStateOffline::getInstance(); -} - -MyPresenceState * MyPresenceStateOnline::online() { - return this; -} - -MyPresenceState * MyPresenceStateOnline::doNotDisturb() { - return MyPresenceStateDoNotDisturb::getInstance(); -} - -MyPresenceState * MyPresenceStateOnline::away() { - return MyPresenceStateAway::getInstance(); -} - -MyPresenceState * MyPresenceStateOnline::invisible() { - return MyPresenceStateInvisible::getInstance(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.h qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/MyPresenceStateOnline.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef MYPRESENCESTATEONLINE_H -#define MYPRESENCESTATEONLINE_H - -#include "MyPresenceState.h" - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class MyPresenceStateOnline : public MyPresenceState { -public: - - MyPresenceState * online(); - - MyPresenceState * offline(); - - MyPresenceState * doNotDisturb(); - - MyPresenceState * away(); - - MyPresenceState * invisible(); - - std::string toString() const { - return toString_static(); - } - - static MyPresenceState * getInstance() { - static MyPresenceStateOnline presenceState; - - return &presenceState; - } - -private: - - MyPresenceStateOnline() { - } - - static std::string toString_static() { - return "Online"; - } -}; - -#endif //MYPRESENCESTATEONLINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/Presence.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/Presence.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/Presence.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/Presence.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Presence.h" - -#include -#include -#include -#include - -#include - -#define LOGGER_COMPONENT "Presence" -#include -#include - -Presence::Presence(IMAccount imAccount) - : _imAccount(imAccount) { - - _imPresence = IMWrapperFactory::getFactory().createIMPresence(_imAccount); - - _imPresence->presenceStateChangedEvent += - boost::bind(&Presence::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - _imPresence->myPresenceStatusEvent += - boost::bind(&Presence::myPresenceStatusEventHandler, this, _1, _2, _3); - _imPresence->subscribeStatusEvent += - boost::bind(&Presence::subscribeStatusEventHandler, this, _1, _2, _3); - _imPresence->authorizationRequestEvent += - boost::bind(&Presence::authorizationRequestEventHandler, this, _1, _2, _3); - _imPresence->contactIconChangedEvent += - boost::bind(&Presence::contactIconChangedEventHandler, this, _1, _2, _3); - _imPresence->incomingSubscribeEvent += - boost::bind(&Presence::incomingSubscribeEventHandler, this, _1, _2, _3, _4); - - _state = MyPresenceStateOffline::getInstance(); -} - -Presence::~Presence() { - OWSAFE_DELETE(_imPresence); -} - -void Presence::changeMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { - setState(state); - - _imPresence->changeMyPresence(state, note); -} - -void Presence::changeMyAlias(const std::string & alias) { - _imPresence->changeMyAlias(alias); -} - -void Presence::changeMyIcon(const OWPicture & picture) { - _imPresence->changeMyIcon(picture); -} - -void Presence::subscribeToPresenceOf(const std::string & contactId) { - _imPresence->subscribeToPresenceOf(contactId); -} - -void Presence::unsubscribeToPresenceOf(const std::string & contactId) { - _imPresence->unsubscribeToPresenceOf(contactId); -} - -void Presence::blockContact(const std::string & contactId) { - _imPresence->blockContact(contactId); -} - -void Presence::unblockContact(const std::string & contactId) { - _imPresence->unblockContact(contactId); -} - -void Presence::authorizeContact(const std::string & contactId, bool authorized, const std::string message) { - _imPresence->authorizeContact(contactId, authorized, message); -} - -void Presence::acceptSubscription(int sid) -{ - _imPresence->acceptSubscription(sid); -} - -void Presence::rejectSubscription(int sid) -{ - _imPresence->rejectSubscription(sid); -} - -void Presence::setState(EnumPresenceState::PresenceState state) { - switch(state) { - case EnumPresenceState::PresenceStateUnknown: - //Do nothing - break; - case EnumPresenceState::PresenceStateOnline: - _state = _state->online(); - break; - case EnumPresenceState::PresenceStateOffline: - _state = _state->offline(); - break; - case EnumPresenceState::PresenceStateAway: - _state = _state->away(); - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - _state = _state->doNotDisturb(); - break; - case EnumPresenceState::PresenceStateInvisible: - _state = _state->invisible(); - break; - default: - LOG_FATAL("unknown presence state=" + String::fromNumber(state)); - } -} - -void Presence::presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, - const std::string & alias, const std::string & from) { - - LOG_DEBUG("presence of=" + from + " changed=" + EnumPresenceState::toString(state)); - - presenceStateChangedEvent(sender, state, alias, from); -} - -void Presence::myPresenceStatusEventHandler(IMPresence & sender, EnumPresenceState::MyPresenceStatus status, - std::string note) { - - myPresenceStatusEvent(sender, status, note); -} - -void Presence::subscribeStatusEventHandler(IMPresence & sender, std::string contactId, - IMPresence::SubscribeStatus status) { - - subscribeStatusEvent(sender, contactId, status); -} - -void Presence::authorizationRequestEventHandler(IMPresence & sender, std::string contactId, - std::string message) { - - authorizationRequestEvent(sender, contactId, message); -} - -void Presence::incomingSubscribeEventHandler(IMPresence & sender, int sid, const std::string& from, const std::string& evtType) -{ - incomingSubscribeEvent(sender,sid,from,evtType); -} - -void Presence::contactIconChangedEventHandler(IMPresence & sender, std::string contactId, - OWPicture icon) { - - contactIconChangedEvent(sender, contactId, icon); -} - -void Presence::unregisterAllEvents() { - _imPresence->presenceStateChangedEvent -= - boost::bind(&Presence::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - _imPresence->myPresenceStatusEvent -= - boost::bind(&Presence::myPresenceStatusEventHandler, this, _1, _2, _3); - _imPresence->subscribeStatusEvent -= - boost::bind(&Presence::subscribeStatusEventHandler, this, _1, _2, _3); - _imPresence->authorizationRequestEvent -= - boost::bind(&Presence::authorizationRequestEventHandler, this, _1, _2, _3); - _imPresence->contactIconChangedEvent -= - boost::bind(&Presence::contactIconChangedEventHandler, this, _1, _2, _3); - _imPresence->incomingSubscribeEvent -= - boost::bind(&Presence::incomingSubscribeEventHandler, this, _1, _2, _3, _4); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/Presence.h qutecom-2.2+dfsg1/wengophone/src/model/presence/Presence.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/Presence.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/Presence.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,185 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PRESENCE_H -#define PRESENCE_H - -#include - -#include -#include -#include - -class ContactList; -class MyPresenceState; - -/** - * - * @ingroup model - * @author Tanguy Krotoff - */ -class Presence : NonCopyable, public Trackable { -public: - - /** - * @see IMPresence::presenceStateChangedEvent - */ - Event presenceStateChangedEvent; - - /** - * @see IMPresence::presenceStatusEvent - */ - Event myPresenceStatusEvent; - - /** - * @see IMPresence::subscribeStatusEvent - */ - Event subscribeStatusEvent; - - /** - * @see IMPresence::subscribeStatusEvent - */ - Event authorizationRequestEvent; - - /** - * Ask for authorization to see MyPresenceState. - */ - Event incomingSubscribeEvent; - - /** - * @see IMPresence::contactIconChangedEvent - */ - Event< void (IMPresence & sender, std::string contactId, - OWPicture icon) > contactIconChangedEvent; - - - Presence(IMAccount imAccount); - - ~Presence(); - - /** - * @see IMPresence::changeMyPresence - */ - void changeMyPresence(EnumPresenceState::PresenceState state, const std::string & note); - - /** - * @see IMPresence::changeMyAlias - */ - void changeMyAlias(const std::string & alias); - - /** - * @see IMPresence::changeMyIcon - */ - void changeMyIcon(const OWPicture & picture); - - /** - * @see IMPresence::subscribeToPresenceOf - */ - void subscribeToPresenceOf(const std::string & contactId); - - /** - * @see IMPresence::unsubscribeToPresenceOf - */ - void unsubscribeToPresenceOf(const std::string & contactId); - - /** - * @see IMPresence::blockContact - */ - void blockContact(const std::string & contactId); - - /** - * @see IMPresence::unblockContact - */ - void unblockContact(const std::string & contactId); - - /** - * @see IMPresence::authorizeContact - */ - void authorizeContact(const std::string & contactId, bool authorized, const std::string message); - - void acceptSubscription(int sid); - void rejectSubscription(int sid); - - std::string getIMAccountId() const { - return _imAccount.getUUID(); - } - - /** - * Tells Presence to unregister to all registered Events. - */ - void unregisterAllEvents(); - -private: - - /** - * Sets the state of this Presence - * - * @param the desired state - */ - void setState(EnumPresenceState::PresenceState state); - - /** - * Catches presenceStateChangedEvent for debug reason. - * - * Shows a LOG_DEBUG() message. - */ - void presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, - const std::string & alias, const std::string & from); - - /** - * @see IMPresence::presenceStatusEvent - */ - void myPresenceStatusEventHandler(IMPresence & sender, EnumPresenceState::MyPresenceStatus status, - std::string note); - - /** - * @see IMPresence::subscribeStatusEvent - */ - void subscribeStatusEventHandler(IMPresence & sender, std::string contactId, - IMPresence::SubscribeStatus status); - - /** - * @see IMPresence::subscribeStatusEvent - */ - void authorizationRequestEventHandler(IMPresence & sender, std::string contactId, - std::string message); - - /** - * Ask for authorization to see MyPresenceState. - */ - void incomingSubscribeEventHandler(IMPresence & sender, int sid, const std::string& from, const std::string& evtType); - - /** - * @see IMPresence::contactIconChangedEvent - */ - void contactIconChangedEventHandler(IMPresence & sender, std::string contactId, - OWPicture icon); - - IMAccount _imAccount; - - IMPresence * _imPresence; - - MyPresenceState * _state; -}; - -#endif //PRESENCE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/PresenceHandler.cpp qutecom-2.2+dfsg1/wengophone/src/model/presence/PresenceHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/PresenceHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/PresenceHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,564 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PresenceHandler.h" - -#include -#include -#include -#include -#include - -#include - -#include - -#define LOGGER_COMPONENT "Presence" -#include -#include - -PresenceHandler::PresenceHandler(UserProfile & userProfile) - : _userProfile(userProfile) { - - _userProfile.getConnectHandler().connectedEvent += - boost::bind(&PresenceHandler::connectedEventHandler, this, _1, _2); - _userProfile.getConnectHandler().disconnectedEvent += - boost::bind(&PresenceHandler::disconnectedEventHandler, this, _1, _2); - - _userProfile.getIMAccountManager().imAccountAddedEvent += - boost::bind(&PresenceHandler::imAccountAddedEventHandler, this, _1, _2); - _userProfile.getIMAccountManager().imAccountRemovedEvent += - boost::bind(&PresenceHandler::imAccountRemovedEventHandler, this, _1, _2); -} - -PresenceHandler::~PresenceHandler() { - for (PresenceMap::const_iterator it = _presenceMap.begin(); - it != _presenceMap.end(); - ++it) { - delete (*it).second; - } -} - -void PresenceHandler::subscribeToPresenceOf(const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); - if (it != _presenceMap.end()) { - LOG_DEBUG("subscribing to presence of=" + imContact.getContactId()); - (*it).second->subscribeToPresenceOf(imContact.getContactId()); - _subscribedContacts.push_back(imContact); - } else { - //Presence for 'protocol' has not yet been created. - // The contactId is pushed in the pending subscription list - _pendingSubscriptions.push_back(imContact); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::unsubscribeToPresenceOf(const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); - if (it != _presenceMap.end()) { - LOG_DEBUG("unsubscribing to presence of=" + imContact.getContactId()); - (*it).second->unsubscribeToPresenceOf(imContact.getContactId()); - MyIMContactList::iterator subIt = - std::find(_subscribedContacts.begin(), _subscribedContacts.end(), imContact); - if (subIt != _subscribedContacts.end()) { - _subscribedContacts.erase(subIt); - } - } else { - LOG_ERROR("cannot find associated Presence instance"); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::blockContact(const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); - if (it != _presenceMap.end()) { - LOG_DEBUG("blocking contact=" + imContact.getContactId() - + " of IMAccount=" + imAccount->getLogin() - + " of protocol=" + String::fromNumber(imAccount->getProtocol())); - - (*it).second->blockContact(imContact.getContactId()); - } else { - LOG_ERROR("the given IMAccount has not been added yet"); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::unblockContact(const IMContact & imContact) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); - if (it != _presenceMap.end()) { - LOG_DEBUG("unblocking contact=" + imContact.getContactId() - + " of IMAccount=" + imAccount->getLogin() - + " of protocol=" + String::fromNumber(imAccount->getProtocol())); - - (*it).second->unblockContact(imContact.getContactId()); - } else { - LOG_ERROR("the given IMAccount has not been added yet"); - } - } -} - -void PresenceHandler::connectedEventHandler(ConnectHandler & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - - //changeMyAlias(_userProfile.getAlias(), imAccount); - changeMyIcon(_userProfile.getIcon(), imAccount); - - PresenceMap::iterator it = _presenceMap.find(imAccountId); - if (it != _presenceMap.end()) { - LOG_DEBUG("an account is connected, login=" + imAccount->getLogin() - + " protocol=" + String::fromNumber(imAccount->getProtocol())); - - EnumPresenceState::PresenceState presenceState = imAccount->getPresenceState(); - if (presenceState == EnumPresenceState::PresenceStateOffline) { - presenceState = EnumPresenceState::PresenceStateOnline; - } - - (*it).second->changeMyPresence(presenceState, _userProfile.getAlias()); - - // Launch subscriptions to all already subscribed contacts - for (MyIMContactList::const_iterator subIt = _subscribedContacts.begin(); - subIt != _subscribedContacts.end(); - ++subIt) { - if ((*subIt).getIMAccountId() == imAccountId) { - LOG_DEBUG("subscribing to presence of=" + (*subIt).getContactId()); - (*it).second->subscribeToPresenceOf((*subIt).getContactId()); - } - } - //// - - //Launch all pending subscriptions - for (MyIMContactList::iterator pendIt = _pendingSubscriptions.begin(); - pendIt != _pendingSubscriptions.end();) { - if ((*pendIt).getIMAccountId() == imAccountId) { - LOG_DEBUG("subscribing to presence of=" + (*pendIt).getContactId()); - (*it).second->subscribeToPresenceOf((*pendIt).getContactId()); - _subscribedContacts.push_back(*pendIt); - _pendingSubscriptions.erase(pendIt++); - } else { - ++pendIt; - } - } - //// - - } else { - LOG_FATAL("the given IMAccount has not been added yet"); - } - - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::disconnectedEventHandler(ConnectHandler & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - LOG_DEBUG("an account is disconnected, login=" + imAccount->getLogin() - + " protocol=" + String::fromNumber(imAccount->getProtocol())); - - PresenceMap::iterator it = _presenceMap.find(imAccountId); - if (it != _presenceMap.end()) { - setPresenceStateToUnknown((*it).second); - } else { - LOG_FATAL("the given IMAccount has not been added yet"); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::changeMyPresenceState(EnumPresenceState::PresenceState state, - const std::string & note, IMAccount * imAccount) { - - LOG_DEBUG("changing MyPresenceState for " - + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol())) - + " with state=" + String::fromNumber(state) + " and note=" + note); - - if (!imAccount) { - for (PresenceMap::const_iterator it = _presenceMap.begin(); - it != _presenceMap.end(); - it++) { - //TODO: this code should be in a event handler - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount((*it).first); - if (imAccount) { - imAccount->setPresenceState(state); - _userProfile.updateIMAccount(*imAccount); - OWSAFE_DELETE(imAccount); - } - (*it).second->changeMyPresence(state, note); - } - } else { - //Find the desired Protocol - PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); - - if (it != _presenceMap.end()) { - //TODO: this code should be in a event handler - IMAccount * tmp = - _userProfile.getIMAccountManager().getIMAccount(imAccount->getUUID()); - if (tmp) { - tmp->setPresenceState(state); - _userProfile.updateIMAccount(*tmp); - OWSAFE_DELETE(tmp); - } - (*it).second->changeMyPresence(state, note); - } - } -} - -void PresenceHandler::changeMyAlias(const std::string & alias, IMAccount * imAccount) { - LOG_DEBUG("changing alias for " - + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol())) - + " with alias=" + alias); - - if (!imAccount) { - for (PresenceMap::const_iterator it = _presenceMap.begin(); - it != _presenceMap.end(); - it++) { - (*it).second->changeMyAlias(alias); - } - } else { - //Find the desired Protocol - PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); - - if (it != _presenceMap.end()) { - (*it).second->changeMyAlias(alias); - } - } -} - -void PresenceHandler::changeMyIcon(const OWPicture & picture, IMAccount * imAccount) { - LOG_DEBUG("changing icon for " - + ((!imAccount) ? "all" : imAccount->getLogin() + ", of protocol=" + String::fromNumber(imAccount->getProtocol()))); - - if (!imAccount) { - for (PresenceMap::const_iterator it = _presenceMap.begin(); - it != _presenceMap.end(); - it++) { - (*it).second->changeMyIcon(picture); - } - } else { - //Find the desired Protocol - PresenceMap::iterator it = _presenceMap.find(imAccount->getUUID()); - - if (it != _presenceMap.end()) { - (*it).second->changeMyIcon(picture); - } - } -} - -void PresenceHandler::presenceStateChangedEventHandler(IMPresence & sender, - EnumPresenceState::PresenceState state, std::string alias, std::string from) { - -/* - typedef ThreadEvent4 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&PresenceHandler::presenceStateChangedEventHandlerThreadSafe, this, _1, _2, _3, _4), &sender.getIMAccount(), state, alias, from); - - _modelThread.postEvent(event); - FIXME: crashes when trying to change UserProfile -*/ - presenceStateChangedEventHandlerThreadSafe(sender.getIMAccountId(), state, alias, from); -} - -void PresenceHandler::presenceStateChangedEventHandlerThreadSafe(std::string imAccountId, - EnumPresenceState::PresenceState state, std::string note, std::string from) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - LOG_DEBUG("presence of=" + imAccount->getLogin() + " changed=" + EnumPresenceState::toString(state)); - if (!imAccount->isConnected()) { - state = EnumPresenceState::PresenceStateUnknown; - } - presenceStateChangedEvent(*this, state, note, IMContact(*imAccount, from)); - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::myPresenceStatusEventHandler(IMPresence & sender, - EnumPresenceState::MyPresenceStatus status) { -/* - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&PresenceHandler::myPresenceStatusEventHandlerThreadSafe, this, _1, _2), &sender.getIMAccount(), status); - - _modelThread.postEvent(event); - FIXME: crashes when trying to change UserProfile -*/ - if ((status == EnumPresenceState::MyPresenceStatusOk) || (status == EnumPresenceState::MyPresenceStatusError)) { - myPresenceStatusEventHandlerThreadSafe(sender.getIMAccountId(), status); - } else { - LOG_WARN("bad EnumPresenceState::MyPresenceStatus" + String::fromNumber(status)); - } -} - -void PresenceHandler::myPresenceStatusEventHandlerThreadSafe(std::string imAccountId, - EnumPresenceState::MyPresenceStatus status) { - - myPresenceStatusEvent(*this, imAccountId, status); -} - -void PresenceHandler::authorizationRequestEventHandler(IMPresence & sender, - std::string contactId, std::string message) { - - typedef ThreadEvent3 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&PresenceHandler::authorizationRequestEventHandlerThreadSafe, this, _1, _2, _3), sender.getIMAccountId(), contactId, message); - - WengoPhone::getInstance().postEvent(event); -} - -void PresenceHandler::authorizationRequestEventHandlerThreadSafe(std::string imAccountId, - std::string contactId, std::string message) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - authorizationRequestEvent(*this, IMContact(*imAccount, contactId), message); - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccout not found!"); - } -} - - -void PresenceHandler::incomingSubscribeEventHandler(IMPresence & sender, - int sid, const std::string& from, const std::string& evtType) { - - typedef ThreadEvent4 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&PresenceHandler::incomingSubscribeEventHandlerThreadSafe, this, _1, _2, _3, _4),sender, sid, from, evtType); - - WengoPhone::getInstance().postEvent(event); -} - -void PresenceHandler::incomingSubscribeEventHandlerThreadSafe(IMPresence & sender,int sid,std::string from, std::string evtType) -{ - /*IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - authorizationRequestEvent(*this, IMContact(*imAccount, contactId), message); - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccout not found!"); - }*/ - incomingSubscribeEvent(*this,sender.getIMAccountId(),sid,from,evtType); -} - -void PresenceHandler::acceptSubscription(int sid,std::string imaccountId) -{ - IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(imaccountId); - if (imAccount) - { - PresenceMap::iterator it = _presenceMap.find(imaccountId); - if (it != _presenceMap.end()) - { - (*it).second->acceptSubscription(sid); - } - else - { - LOG_FATAL("unknown IMAccount"); - } - - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::rejectSubscription(int sid,std::string imaccountId) -{ - IMAccount * imAccount = _userProfile.getIMAccountManager().getIMAccount(imaccountId); - if (imAccount) - { - PresenceMap::iterator it = _presenceMap.find(imaccountId); - if (it != _presenceMap.end()) - { - (*it).second->rejectSubscription(sid); - } - else - { - LOG_FATAL("unknown IMAccount"); - } - - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::subscribeStatusEventHandler(IMPresence & sender, - std::string contactId, IMPresence::SubscribeStatus status) { -/* - typedef ThreadEvent3 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&PresenceHandler::subscribeStatusEventHandlerThreadSafe, this, _1, _2, _3), &sender.getIMAccount(), contactId, status); - - _modelThread.postEvent(event); -*/ - subscribeStatusEventHandlerThreadSafe(sender.getIMAccountId(), contactId, status); -} - -void PresenceHandler::subscribeStatusEventHandlerThreadSafe(std::string imAccountId, - std::string contactId, IMPresence::SubscribeStatus status) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - subscribeStatusEvent(*this, IMContact(*imAccount, contactId), status); - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount not found!"); - } -} - -void PresenceHandler::imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imAccountId); - if (it == _presenceMap.end()) { - //Presence for this IMAccount has not yet been created - Presence * presence = new Presence(*imAccount); - _presenceMap.insert(std::pair(imAccountId, presence)); - - presence->presenceStateChangedEvent += - boost::bind(&PresenceHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - presence->myPresenceStatusEvent += - boost::bind(&PresenceHandler::myPresenceStatusEventHandler, this, _1, _2); - presence->subscribeStatusEvent += - boost::bind(&PresenceHandler::subscribeStatusEventHandler, this, _1, _2, _3); - presence->authorizationRequestEvent += - boost::bind(&PresenceHandler::authorizationRequestEventHandler, this, _1, _2, _3); - presence->incomingSubscribeEvent += - boost::bind(&PresenceHandler::incomingSubscribeEventHandler, this, _1, _2, _3, _4); - presence->contactIconChangedEvent += - boost::bind(&PresenceHandler::contactIconChangedEventHandler, this, _1, _2, _3); - } else { - LOG_ERROR("this IMAccount has already been added=" + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) { - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imAccountId); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imAccountId); - if (it != _presenceMap.end()) { - setPresenceStateToUnknown((*it).second); - delete (*it).second; - _presenceMap.erase(it); - } else { - LOG_ERROR("this IMAccount has not been added=" + imAccount->getLogin()); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::authorizeContact(const IMContact & imContact, bool authorized, - const std::string & message) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - PresenceMap::iterator it = _presenceMap.find(imContact.getIMAccountId()); - if (it != _presenceMap.end()) { - return (*it).second->authorizeContact(imContact.getContactId(), authorized, message); - } else { - LOG_FATAL("unknown IMAccount"); - } - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::contactIconChangedEventHandler(IMPresence & sender, - std::string contactId, OWPicture icon) { - - IMAccount * imAccount = - _userProfile.getIMAccountManager().getIMAccount(sender.getIMAccountId()); - if (imAccount) { - contactIconChangedEvent(*this, IMContact(*imAccount, contactId), icon); - OWSAFE_DELETE(imAccount); - } -} - -void PresenceHandler::unregisterAllEvents() { - _userProfile.getConnectHandler().connectedEvent -= - boost::bind(&PresenceHandler::connectedEventHandler, this, _1, _2); - _userProfile.getConnectHandler().disconnectedEvent -= - boost::bind(&PresenceHandler::disconnectedEventHandler, this, _1, _2); - - _userProfile.getIMAccountManager().imAccountAddedEvent -= - boost::bind(&PresenceHandler::imAccountAddedEventHandler, this, _1, _2); - _userProfile.getIMAccountManager().imAccountRemovedEvent -= - boost::bind(&PresenceHandler::imAccountRemovedEventHandler, this, _1, _2); - - for (PresenceMap::const_iterator it = _presenceMap.begin(); - it != _presenceMap.end(); - ++it) { - (*it).second->unregisterAllEvents(); - - (*it).second->presenceStateChangedEvent -= - boost::bind(&PresenceHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - (*it).second->myPresenceStatusEvent -= - boost::bind(&PresenceHandler::myPresenceStatusEventHandler, this, _1, _2); - (*it).second->subscribeStatusEvent -= - boost::bind(&PresenceHandler::subscribeStatusEventHandler, this, _1, _2, _3); - (*it).second->authorizationRequestEvent -= - boost::bind(&PresenceHandler::authorizationRequestEventHandler, this, _1, _2, _3); - (*it).second->incomingSubscribeEvent -= - boost::bind(&PresenceHandler::incomingSubscribeEventHandler, this, _1, _2, _3, _4); - (*it).second->contactIconChangedEvent -= - boost::bind(&PresenceHandler::contactIconChangedEventHandler, this, _1, _2, _3); - } -} - -void PresenceHandler::setPresenceStateToUnknown(Presence * presence) { - if (presence) { - for (MyIMContactList::const_iterator subIt = _subscribedContacts.begin(); - subIt != _subscribedContacts.end(); - ++subIt) { - if ((*subIt).getIMAccountId() == presence->getIMAccountId()) { - LOG_DEBUG("unsubscribing to presence of=" + (*subIt).getContactId()); - presence->unsubscribeToPresenceOf((*subIt).getContactId()); - presenceStateChangedEvent(*this, - EnumPresenceState::PresenceStateUnknown, String::null, *subIt); - } - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/PresenceHandler.h qutecom-2.2+dfsg1/wengophone/src/model/presence/PresenceHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/presence/PresenceHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/presence/PresenceHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,274 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PRESENCEHANDLER_H -#define PRESENCEHANDLER_H - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -class Connect; -class ConnectHandler; -class ContactList; -class IMAccountManager; -class IMContact; -class Presence; -class Thread; -class UserProfile; - -/** - * - * @ingroup model - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class PresenceHandler : NonCopyable, public Trackable { -public: - - /** - * @see IMPresence::presenceStateChangedEvent - * @param imContact the IMContact for wich the state has changed - */ - Event presenceStateChangedEvent; - - /** - * @see IMPresence::presenceStatusEvent - */ - Event myPresenceStatusEvent; - - /** - * @see IMPresence::subscribeStatusEvent - */ - Event subscribeStatusEvent; - - /** - * @see IMPresence::authorizationRequestEvent - */ - Event authorizationRequestEvent; - - /** - * @see IMPresence::incomingSubscribeEvent - */ - Event incomingSubscribeEvent; - - /** - * @see IMPresence::contactIconChangedEvent - */ - Event< void (PresenceHandler & sender, const IMContact & imContact, - OWPicture icon) > contactIconChangedEvent; - - - PresenceHandler(UserProfile & userProfile); - - ~PresenceHandler(); - - /** - * Changes my presence on desired protocol. - * - * @param state my state - * @param note used by PresenceStateUserDefined - * @param imAccount the IMAccount that we want the presence changed. If NULL - * presence state of all accounts is changed. - */ - void changeMyPresenceState(EnumPresenceState::PresenceState state, - const std::string & note, IMAccount * imAccount = NULL); - - /** - * Changes my alias. - * - * @param alias the desired alias - * @param imAccount the IMAccount that we want the alias changed. If NULL - * alias of all accounts is changed. - */ - void changeMyAlias(const std::string & alias, IMAccount * imAccount = NULL); - - /** - * Changes my icon. - * - * @param picture the desired icon - * @param imAccount the IMAccount that we want the icon changed. If NULL - * icon of all accounts is changed. - */ - void changeMyIcon(const OWPicture & picture, IMAccount * imAccount = NULL); - - /** - * Subscribes to the presence of an IMContact. - * - * @param imContact the IMContact - */ - void subscribeToPresenceOf(const IMContact & imContact); - - /** - * Unsubscribes to the presence of an IMContact. - * - * @param imContact the IMContact - */ - void unsubscribeToPresenceOf(const IMContact & imContact); - - /** - * @see IMPresence::blockContact - */ - void blockContact(const IMContact & imContact); - - /** - * @see IMPresence::unblockContact - */ - void unblockContact(const IMContact & imContact); - - /** - * @see IMPresence::authorizeContact - */ - void authorizeContact(const IMContact & imContact, bool authorized, - const std::string & message); - - void acceptSubscription(int sid,std::string imaccountId); - void rejectSubscription(int sid,std::string imaccountId); - - /** - * Tells PresenceHandler to unregister to all registered Events. - */ - void unregisterAllEvents(); - -private: - - /** - * @see ConnectHandler::connectedEvent - */ - void connectedEventHandler(ConnectHandler & sender, std::string imAccountId); - - /** - * @see ConnectHandler::disconnectedEvent - */ - void disconnectedEventHandler(ConnectHandler & sender, std::string imAccountId); - - /** - * @see IMPresence::presenceStateChangedEvent - */ - void presenceStateChangedEventHandler(IMPresence & sender, - EnumPresenceState::PresenceState state, std::string note, std::string from); - - /** - * @see presenceStateChangedEventHandler - */ - void presenceStateChangedEventHandlerThreadSafe(std::string imAccountId, - EnumPresenceState::PresenceState state, std::string note, std::string from); - - /** - * @see IMPresence::myPresenceStatusEvent - */ - void myPresenceStatusEventHandler(IMPresence & sender, - EnumPresenceState::MyPresenceStatus status); - - /** - * @see myPresenceStatusEventHandler - */ - void myPresenceStatusEventHandlerThreadSafe(std::string imAccountId, - EnumPresenceState::MyPresenceStatus status); - - /** - * @see IMPresence::subscribeStatusEvent - */ - void subscribeStatusEventHandler(IMPresence & sender, - std::string contactId, IMPresence::SubscribeStatus status); - - /** - * @see subscribeStatusEventHandler - */ - void subscribeStatusEventHandlerThreadSafe(std::string imAccountId, - std::string contactId, IMPresence::SubscribeStatus status); - - /** - * @see IMPresence::authorizationRequestEvent - */ - void authorizationRequestEventHandler(IMPresence & sender, - std::string contactId, std::string message); - - /** - * @see authorizationRequestEventHandler - */ - void authorizationRequestEventHandlerThreadSafe(std::string imAccountId, - std::string contactId, std::string message); - - /** - * @see IMPresence::incomingSubscribeEventHandler - */ - void incomingSubscribeEventHandler(IMPresence & sender, - int sid, const std::string& from, const std::string& evtType); - - /** - * @see incomingSubscribeEventHandlerThreadSafe - */ - void incomingSubscribeEventHandlerThreadSafe(IMPresence & sender,int sid, std::string from, std::string evtType); - - /** - * @see IMAccountManager::imAccountAddedEvent - */ - void imAccountAddedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMAccountManager::imAccountRemovedEvent - */ - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - /** - * @see IMPresence::contactIconChangedEvent - */ - void contactIconChangedEventHandler(IMPresence & sender, - std::string contactId, OWPicture icon); - - /** - * Sets the presence state of associated Contacts to unknown. - */ - void setPresenceStateToUnknown(Presence * presence); - - typedef std::map PresenceMap; - - PresenceMap _presenceMap; - - typedef std::list MyIMContactList; - /** - * List of IMContact waiting for presence subscriptions. This - * can happend when someone tries to subscribe to a contact presence - * and if the associated IMAccount is not connected. - */ - MyIMContactList _pendingSubscriptions; - - /** List of Contact for which Presence State has been subsribed. */ - MyIMContactList _subscribedContacts; - - UserProfile & _userProfile; -}; - -#endif //PRESENCEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Avatar.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/Avatar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Avatar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/Avatar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Avatar.h" - -#include - -Avatar::Avatar(std::string fullpath) - : _fullpath(fullpath) { -} - -Avatar::Avatar(const Avatar & avatar) - : _fullpath(avatar._fullpath) { -} - -Avatar::~Avatar() { -} - -std::string Avatar::getName() const { - File file(_fullpath); - return file.getFileName(); -} - -std::string Avatar::getFullPath() const { - return _fullpath; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Avatar.h qutecom-2.2+dfsg1/wengophone/src/model/profile/Avatar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Avatar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/Avatar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWAVATAR_H -#define OWAVATAR_H - -#include - -/** - * Represents an Avatar. - * - * @author Philippe Bernery - */ -class Avatar { -public: - - /** - * @param fullpath Fullpath to the avatar file. - */ - Avatar(std::string fullpath); - - Avatar(const Avatar & avatar); - - ~Avatar(); - - /** - * @return the name of the Avatar. Usually the last part - * of the path to the Avatar. - */ - std::string getName() const; - - /** - * @return the full path to the Avatar. - */ - std::string getFullPath() const; - -protected: - - std::string _fullpath; - -}; - -#endif //OWAVATAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/AvatarList.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/AvatarList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/AvatarList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/AvatarList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include - -#include -#include - -#include "AvatarList.h" - -AvatarList::AvatarList() { - Avatar avatar = getDefaultAvatar(); - _defaultAvatarPicture = OWPicture::pictureFromFile(avatar.getFullPath()); -} - -AvatarList::~AvatarList() { -} - -Avatar AvatarList::getDefaultAvatar() const { - return Avatar(getAvatarPath() + "default-avatar.png"); -} - -std::string AvatarList::getAvatarPath() const { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getResourcesDir() + "pics/avatars/"); -} - -OWPicture AvatarList::getDefaultAvatarPicture() const { - return _defaultAvatarPicture; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/AvatarList.h qutecom-2.2+dfsg1/wengophone/src/model/profile/AvatarList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/AvatarList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/AvatarList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWAVATARLIST_H -#define OWAVATARLIST_H - -#include -#include - -#include "Avatar.h" - -/** - * Provides service to get the list of avatar available in $RESOURCES_DIR/pics/avatars - */ -class AvatarList : public Singleton { - friend class Singleton; -public: - - /** - * Get the Default Avatar. - * - * Thread-safety: reentrant. - */ - Avatar getDefaultAvatar() const; - - /** - * Get the Default Avatar picture. - * - * Thread-safety: reentrant. - */ - OWPicture getDefaultAvatarPicture() const; - -private: - - AvatarList(); - - ~AvatarList(); - - /** - * Get the path to the Avatars. - * - * Thread-safety: reentrant. - */ - std::string getAvatarPath() const; - - OWPicture _defaultAvatarPicture; -}; - -#endif //OWAVATARLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/EnumSex.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/EnumSex.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/EnumSex.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/EnumSex.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "EnumSex.h" - -#include - -using namespace std; - -string EnumSex::toString(EnumSex::Sex sex) { - string result; - - switch (sex) { - case SexUnknown: - result = "unknown"; - break; - case SexFemale: - result = "female"; - break; - case SexMale: - result = "male"; - break; - default: - LOG_FATAL("unknown case"); - } - - return result; -} - -EnumSex::Sex EnumSex::toSex(const string & sex) { - if (sex == "male") { - return SexMale; - } else if (sex == "female") { - return SexFemale; - } else { - return SexUnknown; - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/EnumSex.h qutecom-2.2+dfsg1/wengophone/src/model/profile/EnumSex.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/EnumSex.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/EnumSex.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef SEX_H -#define SEX_H - -#include - -#include - -/** - * Sex: male or female. - * - * @author Philippe Bernery - */ -class EnumSex : NonCopyable { -public: - - enum Sex { - SexUnknown, - SexMale, - SexFemale - }; - - /** - * Gets a string represencation of the sex. - * - * @param sex the sex to transform - * @result the string representing the sex - */ - static std::string toString(Sex sex); - - /** - * Gets the sex from a string representation. - * - * @param sex the string to transform. - * @return the sex represented by the string - */ - static Sex toSex(const std::string & sex); -}; - -#endif //SEX_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/IMAccountManager.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/IMAccountManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/IMAccountManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/IMAccountManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,189 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "IMAccountManager.h" - -#include - -class IMAccountEqualsPredicate : public std::binary_function { -public: - bool operator () (IMAccount c1, IMAccount c2) const { - return ((c1.getLogin() == c2.getLogin()) - && (c1.getProtocol() == c2.getProtocol())); - } -}; - -IMAccountManager::IMAccountManager() { -} - -IMAccountManager::~IMAccountManager() { -} - -IMAccountList IMAccountManager::getIMAccountsOfProtocol(EnumIMProtocol::IMProtocol protocol) const { - RecursiveMutex::ScopedLock lock(_mutex); - - IMAccountList result; - - for (IMAccountList::const_iterator it = _imAccountList.begin(); - it != _imAccountList.end(); - ++it) { - - // FIXME: line 50 and 51 should not be there. - // There are here for compatibility with previous version of WengoPhone. - EnumIMProtocol::IMProtocol accountProtocol = (*it).getProtocol(); - if ((accountProtocol == protocol) || - ((protocol == EnumIMProtocol::IMProtocolSIPSIMPLE) && - (accountProtocol == EnumIMProtocol::IMProtocolSIP)) || - ((accountProtocol == EnumIMProtocol::IMProtocolSIPSIMPLE) && - (protocol == EnumIMProtocol::IMProtocolSIP))) - { - result.push_back(*it); - } - } - - return result; -} - -IMAccountList IMAccountManager::getIMAccountsOfProtocolVector(std::vector protocols) const { - RecursiveMutex::ScopedLock lock(_mutex); - - IMAccountList result; - - for (IMAccountList::const_iterator it = _imAccountList.begin(); - it != _imAccountList.end(); - ++it) { - - for(std::vector::const_iterator itv = protocols.begin(); - itv != protocols.end(); - ++itv) { - - if ((*it).getProtocol() == (*itv)) { - result.push_back(*it); - break; - } - - } - - } - return result; -} - -IMAccountList IMAccountManager::getIMAccountListCopy() const { - return _imAccountList; -} - -IMAccount * IMAccountManager::getIMAccount(const std::string & imAccountId) const { - RecursiveMutex::ScopedLock lock(_mutex); - - IMAccount * result = NULL; - - for (IMAccountList::const_iterator it = _imAccountList.begin(); - it != _imAccountList.end(); - ++it) { - if ((*it).getUUID() == imAccountId) { - result = (*it).clone(); - break; - } - } - - return result; -} - -bool IMAccountManager::contains(const std::string & imAccountId) { - RecursiveMutex::ScopedLock lock(_mutex); - - bool result = false; - - for (IMAccountList::const_iterator it = _imAccountList.begin(); - it != _imAccountList.end(); - ++it) { - if ((*it).getUUID() == imAccountId) { - result = true; - break; - } - } - - return result; -} - -bool IMAccountManager::addIMAccount(const IMAccount & imAccount) { - RecursiveMutex::ScopedLock lock(_mutex); - - bool result = false; - - IMAccountList::const_iterator it = - std::find_if(_imAccountList.begin(), _imAccountList.end(), - std::bind2nd(IMAccountEqualsPredicate(), imAccount)); - if (it == _imAccountList.end()) { - _imAccountList.push_back(imAccount); - imAccountAddedEvent(*this, imAccount.getUUID()); - result = true; - } - - return result; -} - -bool IMAccountManager::removeIMAccount(const IMAccount & imAccount) { - RecursiveMutex::ScopedLock lock(_mutex); - - bool result = false; - - IMAccountList::iterator it = - std::find(_imAccountList.begin(), _imAccountList.end(), imAccount); - if (it != _imAccountList.end()) { - - // TODO: Hack. See IMWrapperFactory::removeIMAccount doc - IMWrapperFactory::getFactory().removeIMAccount(imAccount); - - imAccountRemovedEvent(*this, imAccount.getUUID()); - _imAccountList.erase(it); - - result = true; - } - - return result; -} - -bool IMAccountManager::updateIMAccount(const IMAccount & imAccount) { - RecursiveMutex::ScopedLock lock(_mutex); - - bool result = false; - - IMAccountList::iterator it = - std::find(_imAccountList.begin(), _imAccountList.end(), imAccount); - if (it != _imAccountList.end()) { - (*it) = imAccount; - IMWrapperFactory::getFactory().imAccountUpdated(imAccount); - imAccountUpdatedEvent(*this, imAccount.getUUID()); - result = true; - } - - return result; - -} - -void IMAccountManager::emitIMAccountAddedEvent() { - RecursiveMutex::ScopedLock lock(_mutex); - - for (IMAccountList::const_iterator it = _imAccountList.begin(); - it != _imAccountList.end(); - ++it) { - imAccountAddedEvent(*this, (*it).getUUID()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/IMAccountManager.h qutecom-2.2+dfsg1/wengophone/src/model/profile/IMAccountManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/IMAccountManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/IMAccountManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIMACCOUNTMANAGER_H -#define OWIMACCOUNTMANAGER_H - -#include - -#include -#include - -#include - -class UserProfile; - -/** - * Manage the IMAccountList. - * - * This class access the given IMAccountList in a thread-safe. - * - * @author Philippe Bernery - */ -class IMAccountManager : NonCopyable { - - friend class UserProfile; - friend class UserProfileFileStorage; - friend class UserProfileFileStorage1; - -public: - - /** - * A new IMAccount has been added. - * - * @param sender this class - * @param imAccountId the id of the added IMAccount. - */ - Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountAddedEvent; - - /** - * Emitted when an IMAccount has been removed. - * - * @param sender this class - * @param imAccountId the id of the removed IMAccount. - */ - Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountRemovedEvent; - - /** - * Emitted when an IMAccount has been updated. - * - * @param sender this class - * @param imAccountId the id of the updates IMAccount. - */ - Event< void (IMAccountManager & sender, std::string imAccountId) > imAccountUpdatedEvent; - - /** - * @param protocol the desired protocol - * @return IMAccountList list of IMAccount with protocol 'protocol' - */ - IMAccountList getIMAccountsOfProtocol(EnumIMProtocol::IMProtocol protocol) const; - - /** - * @param protocol vector of desired protocols - * @return IMAccountList list of IMAccount with protocols from 'protocol' - */ - IMAccountList getIMAccountsOfProtocolVector(std::vector protocols) const; - - /** - * @return a copy of the IMAccountList - */ - IMAccountList getIMAccountListCopy() const; - - /** - * Gets a clone of the IMAccount with id 'imAccountId'. - * @return the IMAccount or NULL if not found - */ - IMAccount * getIMAccount(const std::string & imAccountId) const; - - /** - * @return true if the IMAccountList contains the IMAccount with id 'imAccountId' - */ - bool contains(const std::string & imAccountId); - -private: - - IMAccountManager(); - ~IMAccountManager(); - - /** - * @name Method used by UserProfile - * @{ - */ - - /** - * Adds an IMAccount. - * - * @return true if actually added - */ - bool addIMAccount(const IMAccount & imAccount); - - /** - * Removes an IMAccount. - * - * @return true if actually removed - */ - bool removeIMAccount(const IMAccount & imAccount); - - /** - * Updates an IMAccount. - * - * @return true if actually updated - */ - bool updateIMAccount(const IMAccount & imAccount); - - /** - * Reemits imAccountAddedEvent for all IMAccounts. - */ - void emitIMAccountAddedEvent(); - - /** - * @} - */ - - IMAccountList _imAccountList; - - mutable RecursiveMutex _mutex; -}; - -#endif //OWIMACCOUNTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Profile.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/Profile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Profile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/Profile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "Profile.h" - -#include -#include - -Profile::Profile() { - _sex = EnumSex::SexUnknown; - _firstName = String::null; - _lastName = String::null; - _website = String::null; - _company = String::null; - _mobilePhone = String::null; - _homePhone = String::null; - _workPhone = String::null; - _wengoPhoneNumber = String::null; - _otherPhone = String::null; - _fax = String::null; - _personalEmail = String::null; - _workEmail = String::null; - _otherEmail = String::null; - _notes = String::null; - _alias = String::null; - _wengoPhoneId = String::null; - _smsSignature = String::null; -} - -Profile::Profile(const Profile & profile) - : Interface() { - copy(profile); -} - -void Profile::copy(const Profile & profile) { - _firstName = profile._firstName; - _lastName = profile._lastName; - _sex = profile._sex; - _birthdate = profile._birthdate; - _website = profile._website; - _company = profile._company; - _mobilePhone = profile._mobilePhone; - _homePhone = profile._homePhone; - _workPhone = profile._workPhone; - _wengoPhoneNumber = profile._wengoPhoneNumber; - _otherPhone = profile._otherPhone; - _fax = profile._fax; - _personalEmail = profile._personalEmail; - _workEmail = profile._workEmail; - _otherEmail = profile._otherEmail; - _streetAddress = profile._streetAddress; - _notes = profile._notes; - _wengoPhoneId = profile._wengoPhoneId; - _alias = profile._alias; - _icon = profile._icon; - _smsSignature = profile._smsSignature; -} - -bool Profile::operator==(const Profile & profile) const { - return ((_firstName == profile._firstName) - && (_lastName == profile._lastName) - && (_sex == profile._sex) - && (_birthdate == profile._birthdate) - && (_website == profile._website) - && (_company == profile._company) - && (_mobilePhone == profile._mobilePhone) - && (_homePhone == profile._homePhone) - && (_workPhone == profile._workPhone) - && (_wengoPhoneNumber == profile._wengoPhoneNumber) - && (_otherPhone == profile._otherPhone) - && (_fax == profile._fax) - && (_personalEmail == profile._personalEmail) - && (_workEmail == profile._workEmail) - && (_otherEmail == profile._otherEmail) - && (_streetAddress == profile._streetAddress) - && (_notes == profile._notes) - && (_wengoPhoneId == profile._wengoPhoneId) - && (_smsSignature == profile._smsSignature)); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Profile.h qutecom-2.2+dfsg1/wengophone/src/model/profile/Profile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/Profile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/Profile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,188 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PROFILE_H -#define PROFILE_H - -#include "EnumSex.h" -#include "StreetAddress.h" - -#include - -#include -#include -#include -#include -#include - -/** - * Handle common data between a Contact a UserProfile. - * - * @author Philippe Bernery - * @author Mathieu Stute - */ -class Profile : Interface { - friend class ProfileXMLSerializer; -public: - - /** - * Emitted when a property has been changed. - * - * @param sender this class - */ - Event< void(Profile & sender) > profileChangedEvent; - - Profile(); - - Profile(const Profile & profile); - - bool operator==(const Profile & profile) const; - - virtual ~Profile() {} - - void setFirstName(const std::string & firstName) { _firstName = firstName; profileChangedEvent(*this); } - std::string getFirstName() const { return _firstName; } - - void setLastName(const std::string & lastName) { _lastName = lastName; profileChangedEvent(*this); } - std::string getLastName() const { return _lastName; } - - std::string getCompleteName() const { return _firstName + " " + _lastName; } - - void setSex(EnumSex::Sex sex) { _sex = sex; profileChangedEvent(*this); } - EnumSex::Sex getSex() const { return _sex; } - - void setBirthdate(const Date & birthdate) { _birthdate = birthdate; profileChangedEvent(*this); } - Date getBirthdate() const { return _birthdate; } - - void setWebsite(const std::string & website) { _website = website; profileChangedEvent(*this); } - std::string getWebsite() const { return _website; } - - void setCompany(const std::string & company) { _company = company; profileChangedEvent(*this); } - std::string getCompany() const { return _company; } - - virtual void setMobilePhone(const std::string & mobilePhone) { _mobilePhone = mobilePhone; profileChangedEvent(*this); } - std::string getMobilePhone() const { return _mobilePhone; } - - virtual void setHomePhone(const std::string & homePhone) { _homePhone = homePhone; profileChangedEvent(*this); } - std::string getHomePhone() const { return _homePhone; } - - virtual void setWorkPhone(const std::string & workPhone) { _workPhone = workPhone; profileChangedEvent(*this); } - std::string getWorkPhone() const { return _workPhone; } - - virtual void setOtherPhone(const std::string & otherPhone) { _otherPhone = otherPhone; profileChangedEvent(*this); } - std::string getOtherPhone() const { return _otherPhone; } - - void setWengoPhoneNumber(const std::string & wengoPhoneNumber) { _wengoPhoneNumber = wengoPhoneNumber; profileChangedEvent(*this); } - std::string getWengoPhoneNumber() const { return _wengoPhoneNumber; } - - void setFax(const std::string & fax) { _fax = fax; profileChangedEvent(*this); } - std::string getFax() const { return _fax; } - - void setPersonalEmail(const std::string & personalEmail) { _personalEmail = personalEmail; profileChangedEvent(*this); } - std::string getPersonalEmail() const { return _personalEmail; } - - void setWorkEmail(const std::string & workEmail) { _workEmail = workEmail; profileChangedEvent(*this); } - std::string getWorkEmail() const { return _workEmail; } - - void setOtherEmail(const std::string & otherEmail) { _otherEmail = otherEmail; profileChangedEvent(*this); } - std::string getOtherEmail() const { return _otherEmail; } - - void setStreetAddress(const StreetAddress & streetAddress) { _streetAddress = streetAddress; profileChangedEvent(*this); } - StreetAddress getStreetAddress() const { return _streetAddress; } - - void setNotes(const std::string & notes) { _notes = notes; profileChangedEvent(*this); } - std::string getNotes() const { return _notes; } - - void setSmsSignature(const std::string & signature) { _smsSignature = signature; profileChangedEvent(*this); } - std::string getSmsSignature() const { return _smsSignature; } - - bool hasPhoneNumber() const { - return (!_workPhone.empty() || !_homePhone.empty() || !_mobilePhone.empty() || !_otherPhone.empty()); - } - - virtual void setAlias(const std::string & alias) { _alias = alias; profileChangedEvent(*this); } - virtual std::string getAlias() const { return _alias; } - - virtual void setWengoPhoneId(const std::string & wengoPhoneId) { _wengoPhoneId = wengoPhoneId; profileChangedEvent(*this); } - virtual std::string getWengoPhoneId() const { return _wengoPhoneId; } - - virtual void setIcon(const OWPicture & icon) { _icon = icon; profileChangedEvent(*this); } - virtual OWPicture getIcon() const { return _icon; } - - /** - * Gets the PresenceState of this Profile. - * - * @return the PresenceState - */ - virtual EnumPresenceState::PresenceState getPresenceState() const = 0; - -protected: - - /** - * Copy a Profile. - * - * @param profile the Profile to copy - */ - virtual void copy(const Profile & profile); - - std::string _firstName; - - std::string _lastName; - - EnumSex::Sex _sex; - - Date _birthdate; - - std::string _website; - - std::string _company; - - std::string _mobilePhone; - - std::string _homePhone; - - std::string _workPhone; - - std::string _wengoPhoneNumber; - - std::string _otherPhone; - - std::string _fax; - - std::string _personalEmail; - - std::string _workEmail; - - std::string _otherEmail; - - StreetAddress _streetAddress; - - std::string _notes; - - std::string _alias; - - std::string _wengoPhoneId; - - OWPicture _icon; - - std::string _smsSignature; - -}; - -#endif //PROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,325 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ProfileXMLSerializer.h" - -#include "Profile.h" - -#include -#include - -#include - -#include - -#include - -using namespace std; - -ProfileXMLSerializer::ProfileXMLSerializer(Profile & profile) - : _profile(profile) { -} - -string ProfileXMLSerializer::serialize() { - string result; - - // Serializing Wengo ID - if (!_profile._wengoPhoneId.empty()) { - result += ("" + _profile._wengoPhoneId + "\n"); - } - //// - - // Serializing names - result += "\n"; - if (!_profile._firstName.empty()) { - result += ("\n"); - } - if (!_profile._lastName.empty()) { - result += ("\n"); - } - result += "\n"; - //// - - //Serializing sex - if (_profile._sex != EnumSex::SexUnknown) { - result += ("" + EnumSex::toString(_profile._sex) + "\n"); - } - //// - - // Serializing alias - if (!_profile._alias.empty()) { - result += (""); - } - //// - - // Serializing urls - if (!_profile._website.empty()) { - //result += ("" + _profile._website + "\n"); - result += ("\n"); - } - //// - - // Serializing birthday - result += "\n"; - - DateXMLSerializer serializer(_profile._birthdate); - result += serializer.serialize(); - - result += "\n"; - //// - - // Serializing organization - /* - result += "\n"; - - result += "\n"; - */ - //// - - // Serializing phone numbers - if (!_profile._mobilePhone.empty()) { - result += ("" + _profile._mobilePhone + "\n"); - } - - if (!_profile._workPhone.empty()) { - result += ("" + _profile._workPhone + "\n"); - } - - if (!_profile._homePhone.empty()) { - result += ("" + _profile._homePhone + "\n"); - } - - if (!_profile._wengoPhoneNumber.empty()) { - result += ("" + _profile._wengoPhoneNumber + ""); - } - //// - - // Serializing street address - StreetAddressXMLSerializer streetSerializer(_profile._streetAddress); - result += streetSerializer.serialize(); - //// - - // Serializing emails - if (!_profile._personalEmail.empty()) { - result += ("" + _profile._personalEmail + "\n"); - } - - if (!_profile._workEmail.empty()) { - result += ("" + _profile._workEmail + "\n"); - } - - if (!_profile._otherEmail.empty()) { - result += ("" + _profile._otherEmail + "\n"); - } - //// - - // Serializing SMS signature - if (!_profile._smsSignature.empty()) { - result += ("" + _profile._smsSignature + "\n"); - } - //// - - // Serializing photo - if (!_profile._icon.getData().empty()) { - result += (""); - } - //// - - // Serializing notes - if (!_profile._notes.empty()) { - result += (""); - } - //// - - return result; -} - -bool ProfileXMLSerializer::unserialize(const std::string & data) { - return false; -} - -bool ProfileXMLSerializer::unserializeContent(TiXmlHandle & rootElt) { - // Retrieving Wengo ID - TiXmlNode * wengoPhoneId = rootElt.FirstChild("wengoid").FirstChild().Node(); - if (wengoPhoneId) { - // Here we need to call setWengoPhoneId because each class inherited - // from Profile handles the wengophone ID differently. - _profile.setWengoPhoneId(wengoPhoneId->Value()); - } - //// - - // Retrieving names - TiXmlNode * firstName = rootElt.FirstChild("name").FirstChild("first").FirstChild().Node(); - if (firstName) { - _profile._firstName = firstName->Value(); - } - TiXmlNode * lastName = rootElt.FirstChild("name").FirstChild("last").FirstChild().Node(); - if (lastName) { - _profile._lastName = lastName->Value(); - } - //// - - // Retrieving alias - TiXmlNode * alias = rootElt.FirstChild("alias").FirstChild().Node(); - if (alias) { - _profile._alias = alias->Value(); - } - //// - - // Retrieving SMS Signature - TiXmlNode * smsSignature = rootElt.FirstChild("smssignature").FirstChild().Node(); - if (smsSignature) { - _profile._smsSignature = smsSignature->Value(); - } - //// - - // Retrieving sex - TiXmlNode * sex = rootElt.FirstChild("sex").FirstChild().Node(); - if (sex) { - _profile._sex = EnumSex::toSex(sex->Value()); - } - //// - - // Retrieving URLs - if (rootElt.Node()) { - TiXmlNode * url = NULL; - while ((url = rootElt.Node()->IterateChildren("url", url))) { - TiXmlElement * urlElt = url->ToElement(); - string typeAttr = string(urlElt->Attribute("type")); - if (typeAttr == "website") { - TiXmlNode * website = url->FirstChild(); - if (website) { - _profile._website = website->Value(); - } - } - } - } - //// - - // Retrieving birthday - TiXmlNode * birthday = rootElt.FirstChild("birthday").FirstChild("date").Node(); - if (birthday) { - TiXmlElement * birthdayElt = birthday->ToElement(); - string birthdayData; - birthdayData << *birthdayElt; - Date date; - DateXMLSerializer dateSerializer(date); - dateSerializer.unserialize(birthdayData); - _profile._birthdate = date; - } - ///// - - // Retrieving organization - //// - - // Retrieving address - TiXmlNode * address = rootElt.FirstChild("address").Node(); - if (address) { - TiXmlElement * addressElt = address->ToElement(); - string addressData; - addressData << *addressElt; - StreetAddress streetAddress; - StreetAddressXMLSerializer addressSerializer(streetAddress); - addressSerializer.unserialize(addressData); - _profile._streetAddress = streetAddress; - } - //// - - // Retrieving phone numbers - TiXmlNode * tel = NULL; - while ((rootElt.Node()) && (tel = rootElt.Node()->IterateChildren("tel", tel))) { - TiXmlElement * telElt = tel->ToElement(); - string typeAttr = string(telElt->Attribute("type")); - if (typeAttr == "home") { - TiXmlNode * homePhone = tel->FirstChild(); - if (homePhone) { - _profile._homePhone = homePhone->Value(); - } - } else if (typeAttr == "work") { - TiXmlNode * workPhone = tel->FirstChild(); - if (workPhone) { - _profile._workPhone = workPhone->Value(); - } - } else if (typeAttr == "cell") { - TiXmlNode * mobilePhone = tel->FirstChild(); - if (mobilePhone) { - _profile._mobilePhone = mobilePhone->Value(); - } - } else if (typeAttr == "wengo") { - TiXmlNode * wengoPhoneNumber = tel->FirstChild(); - if (wengoPhoneNumber) { - _profile._wengoPhoneNumber = wengoPhoneNumber->Value(); - } - } - } - //// - - // Retrieving emails - TiXmlNode * email = NULL; - while ((rootElt.Node()) && (email = rootElt.Node()->IterateChildren("email", email))) { - TiXmlElement * emailElt = email->ToElement(); - string typeAttr = string(emailElt->Attribute("type")); - if (typeAttr == "home") { - TiXmlNode * personalEmail = email->FirstChild(); - if (personalEmail) { - _profile._personalEmail = personalEmail->Value(); - } - } else if (typeAttr == "work") { - TiXmlNode * workEmail = email->FirstChild(); - if (workEmail) { - _profile._workEmail = workEmail->Value(); - } - } else if (typeAttr == "other") { - TiXmlNode * otherEmail = email->FirstChild(); - if (otherEmail) { - _profile._otherEmail = otherEmail->Value(); - } - } - } - //// - - // Retrieving icon - TiXmlNode * photo = rootElt.FirstChild("photo").Node(); - if (photo) { - TiXmlElement * photoElt = photo->ToElement(); - string filename; - const char * filenameAttr = photoElt->Attribute("filename"); - if (filenameAttr) { - filename = string(filenameAttr); - } - - TiXmlNode * photoNode = photo->FirstChild(); - if (photoNode) { - OWPicture picture = OWPicture::pictureFromData(Base64::decode(photoNode->Value())); - picture.setFilename(filename); - _profile._icon = picture; - } - } - //// - - // Retrieving notes - TiXmlNode * notes = rootElt.FirstChild("notes").FirstChild().Node(); - if (notes) { - _profile._notes = notes->Value(); - } - //// - - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/ProfileXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PROFILEXMLSERIALIZER_H -#define PROFILEXMLSERIALIZER_H - -#include - -#include - -class Profile; -class TiXmlHandle; - -/** - * Serialize a Profile object. - * - * @author Philippe Bernery - */ -class ProfileXMLSerializer : public Serializable { -public: - - ProfileXMLSerializer(Profile & profile); - - virtual std::string serialize(); - - bool unserializeContent(TiXmlHandle & rootElt); - -protected: - - virtual bool unserialize(const std::string & data); - - Profile & _profile; - -}; - -#endif //PROFILEXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddress.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddress.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddress.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddress.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "StreetAddress.h" - -using namespace std; - -StreetAddress::StreetAddress() { -} - -StreetAddress::StreetAddress(const StreetAddress & streetAddress) { - initialize(streetAddress); -} - -StreetAddress::~StreetAddress() { -} - -StreetAddress & StreetAddress::operator = (const StreetAddress & streetAddress) { - if (&streetAddress != this) { - initialize(streetAddress); - } - - return *this; -} - -bool StreetAddress::operator == (const StreetAddress & streetAddress) const { - return ((_street == streetAddress._street) - && (_stateProvince == streetAddress._stateProvince) - && (_city == streetAddress._city) - && (_zipCode == streetAddress._zipCode) - && (_country == streetAddress._country)); -} - -void StreetAddress::initialize(const StreetAddress & streetAddress) { - _street = streetAddress._street; - _stateProvince = streetAddress._stateProvince; - _city = streetAddress._city; - _zipCode = streetAddress._zipCode; - _country = streetAddress._country; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddress.h qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddress.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddress.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddress.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef STREETADDRESS_H -#define STREETADDRESS_H - -#include - -/** - * Class for the living address of a Contact. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class StreetAddress { - friend class StreetAddressXMLSerializer; -public: - - StreetAddress(); - - StreetAddress(const StreetAddress & streetAddress); - - ~StreetAddress(); - - StreetAddress & operator=(const StreetAddress & streetAddress); - - bool operator == (const StreetAddress & streetAddress) const; - - void setStreet(const std::string & street) { _street = street; } - const std::string & getStreet() const { return _street; } - - void setStateProvince(const std::string & stateProvince) { _stateProvince = stateProvince; } - const std::string & getStateProvince() const { return _stateProvince; } - - void setCity(const std::string & city) { _city = city; } - const std::string & getCity() const { return _city; } - - void setZipCode(const std::string & zipCode) { _zipCode = zipCode; } - const std::string & getZipCode() const { return _zipCode; } - - void setCountry(const std::string & country) { _country = country; } - const std::string & getCountry() const { return _country; } - -private: - - /** Factorizes code between contructor and copy contructor. */ - void initialize(const StreetAddress & streetAddress); - - std::string _street; - std::string _stateProvince; - std::string _city; - std::string _zipCode; - std::string _country; -}; - -#endif //STREETADDRESS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "StreetAddressXMLSerializer.h" - -#include "StreetAddress.h" - -#include - -using namespace std; - -StreetAddressXMLSerializer::StreetAddressXMLSerializer(StreetAddress & streetAddress) -: _streetAddress(streetAddress) { - -} - -std::string StreetAddressXMLSerializer::serialize() { - string result; - - result += "
\n"; - - if (!_streetAddress._street.empty()) { - result += ("\n"); - } - - if (!_streetAddress._city.empty()) { - result += ("\n"); - } - - if (!_streetAddress._stateProvince.empty()) { - result += ("\n"); - } - - if (!_streetAddress._zipCode.empty()) { - result += ("\n"); - } - - if (!_streetAddress._country.empty()) { - result += ("\n"); - } - - result += "
\n"; - - return result; -} - -bool StreetAddressXMLSerializer::unserialize(const std::string & data) { - TiXmlDocument doc; - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(& doc); - - TiXmlNode * street = docHandle.FirstChild("address").FirstChild("street").FirstChild().Node(); - if (street) { - _streetAddress._street = street->Value(); - } - - TiXmlNode * locality = docHandle.FirstChild("address").FirstChild("locality").FirstChild().Node(); - if (locality) { - _streetAddress._city = locality->Value(); - } - - TiXmlNode * region = docHandle.FirstChild("address").FirstChild("region").FirstChild().Node(); - if (region) { - _streetAddress._stateProvince = region->Value(); - } - - TiXmlNode * postcode = docHandle.FirstChild("address").FirstChild("postcode").FirstChild().Node(); - if (postcode) { - _streetAddress._zipCode = postcode->Value(); - } - - TiXmlNode * country = docHandle.FirstChild("address").FirstChild("country").FirstChild().Node(); - if (country) { - _streetAddress._country = country->Value(); - } - - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/StreetAddressXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef STREETADDRESSXMLSERIALIZER_H -#define STREETADDRESSXMLSERIALIZER_H - -#include - -class StreetAddress; - -/** - * Serialize a StreetAddress object. - * - * @author Philippe Bernery - */ -class StreetAddressXMLSerializer : public Serializable { -public: - - StreetAddressXMLSerializer(StreetAddress & streetAddress); - - std::string serialize(); - - bool unserialize(const std::string & data); - -private: - - StreetAddress & _streetAddress; - -}; - -#endif //STREETADDRESSXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfile.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,641 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "UserProfile.h" - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include - -using namespace std; - -UserProfile::UserProfile() { - _wsSms = NULL; - _wsInfo = NULL; - _wsCallForward = NULL; - _wsSoftUpdate = NULL; - _activePhoneLine = NULL; - _activePhoneCall = NULL; - _sipAccount = NULL; - - _imAccountManager = new IMAccountManager(); - _imContactListHandler = new IMContactListHandler(*this); - _connectHandler = new ConnectHandler(this); - _presenceHandler = new PresenceHandler(*this); - _chatHandler = new ChatHandler(*this); - _contactList = new ContactList(*this); - _coIpManager = new CoIpManager(*this); - - _sipAccountMustConnectAfterInit = false; - _sipAccountReadyToConnect = false; - _historyLoaded = false; - - // Settings Avatar to default - _icon = AvatarList::getInstance().getDefaultAvatarPicture(); - //// - - _history = new History(*this); -} - -UserProfile::~UserProfile() { - RecursiveMutex::ScopedLock lock(_mutex); - - // Disconnect events to prevent some crashes (call on deleted objects) - if (_sipAccount) { - _sipAccount->loginStateChangedEvent -= - boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); - _sipAccount->networkDiscoveryStateChangedEvent -= - boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); - } - - // Prevent some synchronization crashes by unregistering to these Events. - _connectHandler->unregisterAllEvents(); - _imContactListHandler->unregisterAllEvents(); - _chatHandler->unregisterAllEvents(); - _presenceHandler->unregisterAllEvents(); - - OWSAFE_DELETE(_activePhoneCall); - OWSAFE_DELETE(_wsSms); - OWSAFE_DELETE(_wsSoftUpdate); - OWSAFE_DELETE(_wsInfo); - OWSAFE_DELETE(_wsCallForward); - OWSAFE_DELETE(_history); - - OWSAFE_DELETE(_coIpManager); - OWSAFE_DELETE(_contactList); - OWSAFE_DELETE(_imContactListHandler); - OWSAFE_DELETE(_chatHandler); - OWSAFE_DELETE(_presenceHandler); - - disconnect(); - - if (_activePhoneLine) { - Thread::sleep(5); // Sleep for PhApi: lets time to it to unregister - _activePhoneLine->getSipWrapper().terminate(); - } - - _phoneLineList.clear(); - OWSAFE_DELETE(_activePhoneLine); - OWSAFE_DELETE(_connectHandler); - OWSAFE_DELETE(_imAccountManager); - - // HACK haaaack if _sipAccount is detroy when user try to - // connect with a bad password the softphone freeze.... - if (_sipAccount && (_sipAccount->getLastLoginState() != EnumSipLoginState::SipLoginStatePasswordError)) { - OWSAFE_DELETE(_sipAccount); - } - //// -} - -void UserProfile::init() { - // Emits IMAccountManager::imAccountAddedEvent - _imAccountManager->emitIMAccountAddedEvent(); - //// - - // Connect sip account - _sipAccountMustConnectAfterInit = true; - sipAccountInit(); - //// - - // IMAccounts are now connected later ; - // when SIPAccount is OK -} - -std::string UserProfile::getProfileDirectory() const { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + "profiles/" + _name + "/"); -} - -void UserProfile::connect() { - connectIMAccounts(); -} - -void UserProfile::connectIMAccounts() { - // Connects all IMAccounts - // This will also connect the Wengo IMAccount. This will actually - // call UserProfile::connectSipAccounts after being through the Connect class. - IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); - for (IMAccountList::const_iterator it = imAccountList.begin(); - it != imAccountList.end(); ++it) { - if ((*it).getPresenceState() != EnumPresenceState::PresenceStateOffline) { - _connectHandler->connect((*it).getUUID()); - } - } - //// -} - -bool UserProfile::connectSipAccounts() { - RecursiveMutex::ScopedLock lock(_mutex); - - // This method is called by the Connect class. - - // Connect the SipAccount if not connected - LOG_DEBUG ("SIP_ In connectSipAccounts"); - if (_activePhoneLine && !_sipAccount->isConnected()) - { - loginStateChangedEvent(*_sipAccount,EnumSipLoginState::SipLoginStateProgress ); - - if (!_activePhoneLine->connect()) { - LOG_ERROR("Couldn't connect phoneline"); - return false; - } - - LOG_DEBUG("SIP connection OK"); - return true; - } - return false; - //// -} - -void UserProfile::disconnect() { - disconnectIMAccounts(); -} - -void UserProfile::disconnectIMAccounts() { - IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); - for (IMAccountList::const_iterator it = imAccountList.begin(); - it != imAccountList.end(); ++it) { - _connectHandler->disconnect((*it).getUUID()); - } -} - -void UserProfile::disconnectSipAccounts(bool force) { - RecursiveMutex::ScopedLock lock(_mutex); - - // This method is called by the Connect class. - - if (_activePhoneLine && _sipAccount->isConnected()) { - _activePhoneLine->disconnect(force); - } -} - -EnumMakeCallError::MakeCallError UserProfile::makeCall(Contact & contact) { - if (_activePhoneLine) { - return _activePhoneLine->makeCall(contact.getPreferredNumber()); - } else { - return EnumMakeCallError::NotConnected; - } -} - -EnumMakeCallError::MakeCallError UserProfile::makeCall(const std::string & phoneNumber) { - if (_activePhoneLine) { - return _activePhoneLine->makeCall(phoneNumber); - } else { - return EnumMakeCallError::NotConnected; - } -} - -void UserProfile::startIM(Contact & contact) { - IMContactSet imContactSet; - IMContact * imContact = contact.getPreferredIMContact(); - - if (imContact) { - imContactSet.insert(*imContact); - _chatHandler->createSession(imContact->getIMAccountId(), imContactSet); - } else { - LOG_ERROR("There is no IMContact available"); - } -} - -void UserProfile::setSipAccount(const SipAccount & sipAccount, bool needInitialization) { - if (_sipAccount) { - IPhoneLine * phoneLine = findWengoPhoneLine(); - if (phoneLine) { - phoneLine->disconnect(); - //TODO remove the PhoneLine from _phoneLines & destroy it - } - - std::vector protocols; - protocols.push_back(EnumIMProtocol::IMProtocolWengo); - protocols.push_back(EnumIMProtocol::IMProtocolSIP); - protocols.push_back(EnumIMProtocol::IMProtocolSIPSIMPLE); - IMAccountList imAccountList = _imAccountManager->getIMAccountsOfProtocolVector(protocols); - if (imAccountList.size() > 0) { - _removeIMAccount(*imAccountList.begin()); - } - OWSAFE_DELETE(_sipAccount); - } - - if (sipAccount.getType() == SipAccount::SipAccountTypeWengo) { - const WengoAccount & wengoAccount = dynamic_cast(sipAccount); - //Empty login or password - if (wengoAccount.getWengoLogin().empty() || wengoAccount.getWengoPassword().empty()) { - loginStateChangedEvent(*_sipAccount, EnumSipLoginState::SipLoginStatePasswordError); - return; - } - - _sipAccount = new WengoAccount(wengoAccount); - } else { - if (sipAccount.getIdentity().empty()) { - loginStateChangedEvent(*_sipAccount, EnumSipLoginState::SipLoginStatePasswordError); - return; - } - - _sipAccount = new SipAccount(sipAccount); - } - - computeName(); - _sipAccount->networkDiscoveryStateChangedEvent += - boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); - _sipAccount->loginStateChangedEvent += - boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); - - if (needInitialization) { - // Discovers network. - // Sends the HTTP request to the SSO if _sipAccount is a Wengo account. - _sipAccountMustConnectAfterInit = false; - _sipAccountReadyToConnect = false; - _sipAccount->init(); - } -} - -void UserProfile::addIMAccount(const IMAccount & imAccount) { - /* - This code is not used anymore because of ConfigImporter update. - if (imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo) { - LOG_FATAL("cannot add directly a Wengo IMAccount. Must use setWengoAccount"); - return; - } - */ - - - _addIMAccount(imAccount); -} - -void UserProfile::_addIMAccount(const IMAccount & imAccount) { - LOG_DEBUG("adding an IMAccount"); - - _imAccountManager->addIMAccount(imAccount); -} - -void UserProfile::removeIMAccount(const IMAccount & imAccount) { - if (imAccount.getProtocol() == EnumIMProtocol::IMProtocolWengo) { - LOG_FATAL("cannot remove directly a Wengo IMAccount. Must use setWengoAccount"); - return; - } - - _removeIMAccount(imAccount); -} - -void UserProfile::_removeIMAccount(const IMAccount & imAccount) { - LOG_DEBUG("removing an IMAccount"); - - if (_imAccountManager->contains(imAccount.getUUID())) { - //_connectHandler->disconnect(imAccount.getUUID()); - _imAccountManager->removeIMAccount(imAccount); - } else { - LOG_ERROR("IMAccount not in IMAccountManager"); - } -} - -void UserProfile::updateIMAccount(const IMAccount & imAccount) { - LOG_DEBUG("updating IMAccount"); - - _imAccountManager->updateIMAccount(imAccount); -} - -EnumPresenceState::PresenceState UserProfile::getPresenceState() const { - IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); - - IMAccountList::const_iterator - it = imAccountList.begin(), - end = imAccountList.end(); - - // There is no account - if (it == end) { - return EnumPresenceState::PresenceStateUnavailable; - } - - // Check whether all states are the same - EnumPresenceState::PresenceState state = it->getPresenceState(); - ++it; - - for (; it!= end; ++it) { - if ((*it).getPresenceState() != state) { - // They are not - return EnumPresenceState::PresenceStateMulti; - } - } - - // All states are the same - return state; -} - -void UserProfile::setPresenceState(EnumPresenceState::PresenceState presenceState, std::string imAccountId) { - IMAccount * realIMAccount = _imAccountManager->getIMAccount(imAccountId); - if (realIMAccount) { - if (!realIMAccount->isConnected()) { - _connectHandler->connect(imAccountId); - } - - _presenceHandler->changeMyPresenceState(presenceState, getAlias(), realIMAccount); - OWSAFE_DELETE(realIMAccount); - } -} - -void UserProfile::setAllPresenceState(EnumPresenceState::PresenceState presenceState) { - if (!isConnected()) { - connect(); - } - - _presenceHandler->changeMyPresenceState(presenceState, getAlias(), NULL); -} - -void UserProfile::setAlias(const string & alias, IMAccount * imAccount) { - _alias = alias; - _presenceHandler->changeMyAlias(_alias, imAccount); -} - -bool UserProfile::addPhoneLine(SipAccount & account) { - //Creates new a PhoneLine associated with the account just added - PhoneLine * phoneLine = new PhoneLine(account, *this); - if (!phoneLine->init()) { - LOG_ERROR("PhoneLine initialisation failed"); - return false; - } - - //Adds the PhoneLine to the list of PhoneLine - _phoneLineList += phoneLine; - - //Sets the active PhoneLine - //FIXME should the last added PhoneLine be the active one all the time? - if (!_activePhoneLine) { - _activePhoneLine = phoneLine; - } - - return true; -} - -void UserProfile::sipAccountInit() { - if (_sipAccount) { - _sipAccount->networkDiscoveryStateChangedEvent += - boost::bind(&UserProfile::networkDiscoveryStateChangedEventHandler, this, _1, _2); - _sipAccount->loginStateChangedEvent += - boost::bind(&UserProfile::loginStateChangedEventHandler, this, _1, _2); - - // Detect network and launch SSO request if needed WengoAccount - _sipAccountReadyToConnect = false; - _sipAccount->init(); - } -} - -void UserProfile::loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state) { - // FIXME: due to a threads synchronization problem, it's better to comment this part of code temporarily - - typedef ThreadEvent2 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&UserProfile::loginStateChangedEventHandlerThreadSafe, this, _1, _2), - dynamic_cast(sender), state); - - WengoPhone::getInstance().postEvent(event); - - //loginStateChangedEvent(sender, state); - //loginStateChangedEventHandlerThreadSafe(sender, state); -} - -void UserProfile::loginStateChangedEventHandlerThreadSafe(SipAccount & sender, EnumSipLoginState::SipLoginState state) { - RecursiveMutex::ScopedLock lock(_mutex); - - LOG_DEBUG("SIP_ " + _name); - - switch (state) { - case EnumSipLoginState::SipLoginStateReady: { - LOG_DEBUG("SIP_ READY"); - - // if no sip account (generic or wengo) is set : create one !! - IMAccountList imAccountList; - if (_sipAccount->getType() == SipAccount::SipAccountTypeWengo) { - imAccountList = _imAccountManager->getIMAccountsOfProtocol(EnumIMProtocol::IMProtocolWengo); - if (imAccountList.size() == 0) { - IMAccount imAccount(_sipAccount->getIdentity(), _sipAccount->getPassword(), EnumIMProtocol::IMProtocolWengo,_sipAccount->getDisplayName()); - imAccount.setConnected(false); - _addIMAccount(imAccount); - } - else - { - IMAccount imAccount = *imAccountList.begin(); - if(imAccount.getDisplayName() != _sipAccount->getDisplayName()) - { - imAccount.setDisplayName(_sipAccount->getDisplayName()); - updateIMAccount(imAccount); - } - } - } else { - std::vector protocols; - protocols.push_back(EnumIMProtocol::IMProtocolSIP); - protocols.push_back(EnumIMProtocol::IMProtocolSIPSIMPLE); - imAccountList = _imAccountManager->getIMAccountsOfProtocolVector(protocols); - if (imAccountList.size() == 0) { - IMAccount imAccount(_sipAccount->getIdentity(), _sipAccount->getPassword(), EnumIMProtocol::IMProtocolSIP,_sipAccount->getDisplayName()); - imAccount.setConnected(false); - _addIMAccount(imAccount); - } - else - { - IMAccount imAccount = *imAccountList.begin(); - if(imAccount.getDisplayName() != _sipAccount->getDisplayName()) - { - imAccount.setDisplayName(_sipAccount->getDisplayName()); - updateIMAccount(imAccount); - } - } - } - //// - - if (_sipAccountMustConnectAfterInit) { - _sipAccountMustConnectAfterInit = false; - - if (!addPhoneLine(*_sipAccount)) { - LOG_ERROR("Couldn't add phoneline"); - sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStateNetworkError); - break; - } - - if (_sipAccount->getType() == SipAccount::SipAccountTypeWengo) { - - WengoAccount * wengoAccount = dynamic_cast(_sipAccount); - - //Creates SMS, SMS needs a WengoAccount - _wsSms = new WsSms(wengoAccount, *this); - wsSmsCreatedEvent(*this, *_wsSms); - LOG_DEBUG("SMS created"); - - _wsInfo = new WsInfo(wengoAccount); - wsInfoCreatedEvent(*this, *_wsInfo); - LOG_DEBUG("WsInfo created"); - - //callforward - _wsCallForward = new WsCallForward(wengoAccount); - wsCallForwardCreatedEvent(*this, *_wsCallForward); - _wsCallForward->wsCallForwardEvent += boost::bind(&UserProfile::wsCallForwardEventHandler, this, _1, _2, _3); - } - - //Creates SoftUpdate, SoftUpdate needs a WengoAccount - _wsSoftUpdate = new WsSoftUpdate(); - wsSoftUpdateCreatedEvent(*this, *_wsSoftUpdate); - LOG_DEBUG("SoftUpdate created"); - - phoneLineCreatedEvent(*this, *_activePhoneLine); - - loadHistory(getProfileDirectory()); - - //Connect SipAccounts and IMAccounts; - connect(); - } - - sipAccountConnectedEvent(); - - _sipAccountReadyToConnect = true; - - break; - } - - case EnumSipLoginState::SipLoginStatePasswordError: { - LOG_DEBUG("SIP_ PASSWORD ERROR"); - if (!_sipAccountReadyToConnect) { - sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStatePasswordError); - } - break; - } - - case EnumSipLoginState::SipLoginStateConnected: { - LOG_DEBUG("SIP_ CONNECTED"); - break; - } - - case EnumSipLoginState::SipLoginStateDisconnected: { - LOG_DEBUG("SIP_ DISCONNECTED"); - break; - } - - case EnumSipLoginState::SipLoginStateNetworkError: { - LOG_DEBUG("SIP_ NetworkError"); - sipAccountConnectionFailedEvent(EnumSipLoginState::SipLoginStateNetworkError); - break; - } - - default: - ; - } -} - -void UserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state) { - networkDiscoveryStateChangedEvent(sender, state); -} - -IPhoneLine * UserProfile::findWengoPhoneLine() { - for (unsigned i = 0; i != _phoneLineList.size() ; i++) { - const SipAccount & sipAccount = _phoneLineList[i]->getSipAccount(); - - if (sipAccount.getType() == SipAccount::SipAccountTypeWengo) { - return _phoneLineList[i]; - } else { - LOG_DEBUG("this SipAccount is not a WengoAccount"); - } - } - return NULL; -} - -void UserProfile::setIcon(const OWPicture & icon, IMAccount * imAccount) { - Profile::setIcon(icon); - _presenceHandler->changeMyIcon(icon, imAccount); -} - -bool UserProfile::loadHistory(const std::string & path) { - bool toReturn = _history->load(path + "history.xml"); - _historyLoaded = true; - historyLoadedEvent(*this, *_history); - return toReturn; -} - -bool UserProfile::saveHistory(const std::string & path) { - return _history->save(path + "history.xml"); -} - -bool UserProfile::hasWengoAccount() const { - return (hasSipAccount() && (_sipAccount->getType() == SipAccount::SipAccountTypeWengo)); -} - -bool UserProfile::hasSipAccount() const { - return _sipAccount != NULL; -} - -void UserProfile::wsCallForwardEventHandler(WsCallForward & sender, - int id, WsCallForward::WsCallForwardStatus status) { - - if (status == WsCallForward::WsCallForwardStatusOk) { - _wsInfo->getWengosCount(false); - _wsInfo->getSmsCount(false); - _wsInfo->getActiveMail(false); - _wsInfo->getUnreadVoiceMail(false); - _wsInfo->getLandlineNumber(false); - _wsInfo->getCallForwardInfo(true); - _wsInfo->execute(); - } -} - -void UserProfile::computeName() { - _name = _sipAccount->getFullIdentity(); -} - -bool UserProfile::isConnected() const { - //Checks all IMAccounts - IMAccountList imAccountList = _imAccountManager->getIMAccountListCopy(); - - for (IMAccountList::const_iterator it = imAccountList.begin(); - it != imAccountList.end(); ++it) { - - if ((*it).isConnected()) { - return true; - } - } - - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "UserProfileFileStorage1.h" - -#include -#include -#include -#include -#include - -#include - -#include -#include - -using namespace std; - -static const std::string USERPROFILE_FILENAME = "userprofile.xml"; -static const std::string PROFILES_DIR = "profiles/"; -static const std::string BACKUPS_DIR = "backups/"; - -UserProfileFileStorage1::UserProfileFileStorage1(UserProfile & userProfile) - : UserProfileStorage(userProfile) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - File::createPath(File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR)); -} - -UserProfileFileStorage1::~UserProfileFileStorage1() { -} - -std::string UserProfileFileStorage1::getProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + "/"); -} - -std::string UserProfileFileStorage1::getTempProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".new/"); -} - -std::string UserProfileFileStorage1::getOldProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".old/"); -} - -std::string UserProfileFileStorage1::getBackupProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR + profileName + "/"); -} - -bool UserProfileFileStorage1::load(const std::string & profileName) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (profileName.empty()) { - LOG_DEBUG("empty profileName given"); - return false; - } - - bool result = false; - - if (!loadFromProfiles(profileName)) { - LOG_ERROR("cannot load profile " + profileName + " from 'profiles'." - " Trying from 'backups'."); - File profileDir(getProfilePath(profileName)); - profileDir.remove(); - if (!loadFromBackups(profileName)) { - LOG_ERROR("cannot load profile " + profileName + " from 'backups'."); - profileCannotBeLoadedEvent(*this, profileName); - File backupDir(getBackupProfilePath(profileName)); - backupDir.remove(); - } else { - LOG_INFO("backup recovery successful"); - save(profileName); - profileLoadedFromBackupsEvent(*this, profileName); - result = true; - } - } else { - LOG_DEBUG("profile " + profileName + " loaded successfully"); - result = true; - } - - return result; -} - -bool UserProfileFileStorage1::loadFromProfiles(const std::string & profileName) { - return loadFromDir(getProfilePath(profileName)); -} - -bool UserProfileFileStorage1::loadFromBackups(const std::string & profileName) { - return loadFromDir(getBackupProfilePath(profileName)); -} - -bool UserProfileFileStorage1::loadFromDir(const std::string & path) { - if (!loadProfile(path)) { - LOG_ERROR("cannot loadProfile: " + path); - return false; - } - - IMAccountListFileStorage imAccountListFileStorage(_userProfile.getIMAccountManager()._imAccountList); - if (!imAccountListFileStorage.load(path)) { - LOG_ERROR("cannot load IMAccountList: " + path); - return false; - } - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - ContactListFileStorage1 contactListFileStorage1(*_userProfile._contactList, imAccountList); - if (!contactListFileStorage1.load(path)) { - LOG_ERROR("cannot load ContactList: " + path); - return false; - } - - if (!_userProfile.loadHistory(path)) { - return false; - } - - return true; -} - -bool UserProfileFileStorage1::save(const std::string & profileName) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (profileName.empty()) { - LOG_DEBUG("empty profileName given"); - return false; - } - - std::string path = getProfilePath(profileName); - std::string newPath = getTempProfilePath(profileName); - std::string oldPath = getOldProfilePath(profileName); - - // Backuping the last saved profile - if (File::exists(path)) { - // Copying the profile in a .old folder - File curProfDir(path); - curProfDir.copy(oldPath); - - // Moving the copy in backups/ - File oldProfFile(oldPath); - oldProfFile.move(getBackupProfilePath(profileName), true); - } - //// - - // Removing a possible .new dir in profiles/ - if (File::exists(newPath)) { - File newProfDir(newPath); - newProfDir.remove(); - } - //// - - // Saving profile to .new dir - File::createPath(newPath); - - if (!saveProfile(newPath)) { - return false; - } - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - - IMAccountListFileStorage imAccountListFileStorage(imAccountList); - if (!imAccountListFileStorage.save(newPath)) { - return false; - } - - ContactListFileStorage1 contactListFileStorage1(*_userProfile._contactList, imAccountList); - if (!contactListFileStorage1.save(newPath)) { - return false; - } - - if (!_userProfile.saveHistory(newPath)) { - return false; - } - //// - - // If successful, move the 'dir.new' to 'dir' (overwrite it if exists) - File newProfDir(newPath); - newProfDir.move(path, true); - //// - - return true; -} - -bool UserProfileFileStorage1::loadProfile(const std::string & url) { - bool result = false; - - FileReader file(url + USERPROFILE_FILENAME); - if (file.open()) { - string data = file.read(); - - UserProfileXMLSerializer serializer(_userProfile); - result = serializer.unserialize(data); - } - - return result; -} - -bool UserProfileFileStorage1::saveProfile(const std::string & url) { - FileWriter file(url + USERPROFILE_FILENAME); - UserProfileXMLSerializer serializer(_userProfile); - - file.write(serializer.serialize()); - return true; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage1.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWUSERPROFILEFILESTORAGE1_H -#define OWUSERPROFILEFILESTORAGE1_H - -#include "UserProfileStorage.h" - -#include -#include - -/** - * Saves the UserProfile object, its IMAccountHandler and its ContactList. - * If the save is successful, a backup is made to recover the profile in case - * of problem while saving it. - * - * @ingroup model - * @author Philippe Bernery - */ -class UserProfileFileStorage1 : public UserProfileStorage { -public: - - /** - * Gets the full path to the profile named 'profileName'. - */ - static std::string getProfilePath(const std::string & profileName); - - UserProfileFileStorage1(UserProfile & userProfile); - - virtual ~UserProfileFileStorage1(); - - /** - * Will load the profile named 'profileName'. - * - * If an error occured while trying the profile, - * the method will try to load the profile from - * the backup directory. - * If it works a profileLoadedFromBackupsEvent - * will be emitted. - * If the backup cannot be loaded, it will be erased if it - * exists and a profileCannotBeLoadedEvent will be emitted. - */ - virtual bool load(const std::string & profileName); - - virtual bool save(const std::string & profileName); - -private: - - /** - * Gets the temporary save profile dir. - */ - static std::string getTempProfilePath(const std::string & profileName); - - /** - * Gets the old profile save dir. - */ - static std::string getOldProfilePath(const std::string & profileName); - - /** - * Gets the full path to the backup profile named 'profileName'. - */ - static std::string getBackupProfilePath(const std::string & profileName); - - /** - * Tries to load a profile from the 'profiles' dir. - * - * @return false if error, true otherwise - */ - bool loadFromProfiles(const std::string & profileName); - - /** - * Tries to load a profile from the 'backups' dir. - * - * @return false if error, true otherwise - */ - bool loadFromBackups(const std::string & profileName); - - /** - * Loads a profile from a dir. - * - * @return false if error, true otherwise - */ - bool loadFromDir(const std::string & path); - - /** - * Loads the UserProfile object from url/userprofile.xml - * - * @return false if error, true otherwise - */ - bool loadProfile(const std::string & url); - - /** - * Saves the UserProfile object in url/userprofile.xml - * - * @return false if error, true otherwise - */ - bool saveProfile(const std::string & url); - - /** For thread-safe operations. */ - RecursiveMutex _mutex; - -}; - -#endif //OWUSERPROFILEFILESTORAGE1_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "UserProfileFileStorage.h" - -#include -#include -#include -#include -#include -#include - -#include -#include - -using namespace std; - -static const std::string USERPROFILE_FILENAME = "userprofile.xml"; -static const std::string PROFILES_DIR = "profiles/"; -static const std::string BACKUPS_DIR = "backups/"; - -static const std::string IMACCOUNTPARAMETERS_FILENAME = "imaccountparameters.xml"; - -UserProfileFileStorage::UserProfileFileStorage(UserProfile & userProfile) - : UserProfileStorage(userProfile) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - File::createPath(File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR)); -} - -UserProfileFileStorage::~UserProfileFileStorage() { -} - -std::string UserProfileFileStorage::getProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + "/"); -} - -std::string UserProfileFileStorage::getTempProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".new/"); -} - -std::string UserProfileFileStorage::getOldProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + PROFILES_DIR + profileName + ".old/"); -} - -std::string UserProfileFileStorage::getBackupProfilePath(const std::string & profileName) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return File::convertPathSeparators(config.getConfigDir() + BACKUPS_DIR + profileName + "/"); -} - -bool UserProfileFileStorage::load(const std::string & profileName) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (profileName.empty()) { - LOG_DEBUG("empty profileName given"); - return false; - } - - bool result = false; - - if (!loadFromProfiles(profileName)) { - LOG_ERROR("cannot load profile " + profileName + " from 'profiles'." - " Trying from 'backups'."); - File profileDir(getProfilePath(profileName)); - profileDir.remove(); - if (!loadFromBackups(profileName)) { - LOG_ERROR("cannot load profile " + profileName + " from 'backups'."); - profileCannotBeLoadedEvent(*this, profileName); - File backupDir(getBackupProfilePath(profileName)); - backupDir.remove(); - } else { - LOG_INFO("backup recovery successful"); - save(profileName); - profileLoadedFromBackupsEvent(*this, profileName); - result = true; - } - } else { - LOG_DEBUG("profile " + profileName + " loaded successfully"); - result = true; - } - - return result; -} - -std::string UserProfileFileStorage::loadSystemIMAccountParametersData() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string configDir = config.getResourcesDir() + "/config/"; - std::string imAccountParametersFileName = configDir + "/" + IMACCOUNTPARAMETERS_FILENAME; - FileReader imAccountParametersFile(imAccountParametersFileName); - - if (!imAccountParametersFile.open()) { - LOG_ERROR("Couldn't open " + imAccountParametersFileName); - return std::string(); - } - - return imAccountParametersFile.read(); -} - -bool UserProfileFileStorage::loadFromProfiles(const std::string & profileName) { - return loadFromDir(getProfilePath(profileName)); -} - -bool UserProfileFileStorage::loadFromBackups(const std::string & profileName) { - return loadFromDir(getBackupProfilePath(profileName)); -} - -bool UserProfileFileStorage::loadFromDir(const std::string & path) { - if (!loadProfile(path)) { - LOG_ERROR("cannot loadProfile: " + path); - return false; - } - - IMAccountListFileStorage imAccountListFileStorage(_userProfile.getIMAccountManager()._imAccountList); - imAccountListFileStorage.setIMAccountParametersData(loadSystemIMAccountParametersData()); - if (!imAccountListFileStorage.load(path)) { - LOG_ERROR("cannot load IMAccountList: " + path); - return false; - } - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - ContactListFileStorage contactListFileStorage(*_userProfile._contactList, imAccountList); - if (!contactListFileStorage.load(path)) { - LOG_ERROR("cannot load ContactList: " + path); - return false; - } - - if (!_userProfile.loadHistory(path)) { - return false; - } - - return true; -} - -bool UserProfileFileStorage::save(const std::string & profileName) { - RecursiveMutex::ScopedLock lock(_mutex); - - if (profileName.empty()) { - LOG_DEBUG("empty profileName given"); - return false; - } - - std::string path = getProfilePath(profileName); - std::string newPath = getTempProfilePath(profileName); - std::string oldPath = getOldProfilePath(profileName); - - // Backuping the last saved profile - if (File::exists(path)) { - // Copying the profile in a .old folder - File curProfDir(path); - curProfDir.copy(oldPath); - - // Moving the copy in backups/ - File oldProfFile(oldPath); - oldProfFile.move(getBackupProfilePath(profileName), true); - } - //// - - // Removing a possible .new dir in profiles/ - if (File::exists(newPath)) { - File newProfDir(newPath); - newProfDir.remove(); - } - //// - - // Saving profile to .new dir - File::createPath(newPath); - - if (!saveProfile(newPath)) { - return false; - } - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - - IMAccountListFileStorage imAccountListFileStorage(imAccountList); - if (!imAccountListFileStorage.save(newPath)) { - return false; - } - - ContactListFileStorage contactListFileStorage(*_userProfile._contactList, imAccountList); - if (!contactListFileStorage.save(newPath)) { - return false; - } - - if (!_userProfile.saveHistory(newPath)) { - return false; - } - //// - - // If successful, move the 'dir.new' to 'dir' (overwrite it if exists) - File newProfDir(newPath); - newProfDir.move(path, true); - //// - - return true; -} - -bool UserProfileFileStorage::loadProfile(const std::string & url) { - bool result = false; - - FileReader file(url + USERPROFILE_FILENAME); - if (file.open()) { - string data = file.read(); - - UserProfileXMLSerializer serializer(_userProfile); - result = serializer.unserialize(data); - } - - return result; -} - -bool UserProfileFileStorage::saveProfile(const std::string & url) { - FileWriter file(url + USERPROFILE_FILENAME); - UserProfileXMLSerializer serializer(_userProfile); - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - - file.write(serializer.serialize()); - return true; -} - -bool UserProfileFileStorage::deleteProfile() { - RecursiveMutex::ScopedLock lock(_mutex); - - //find path to profile files - std::string profDirPath = getProfilePath(_userProfile.getName()); - std::string profBackupDirPath = getBackupProfilePath(_userProfile.getName()); - - File profDir(profDirPath); - File profBackupDir(profBackupDirPath); - - //delete profile files (also from backups) - if (!profDir.remove()) - return false; - if (!profBackupDir.remove()) - return false; - - return true; -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileFileStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileFileStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,132 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef USERPROFILEFILESTORAGE_H -#define USERPROFILEFILESTORAGE_H - -#include "UserProfileStorage.h" - -#include -#include - -class UserProfileStorage; - -/** - * Saves the UserProfile object, its IMAccountHandler and its ContactList. - * If the save is successful, a backup is made to recover the profile in case - * of problem while saving it. - * - * @ingroup model - * @author Philippe Bernery - */ -class UserProfileFileStorage : public UserProfileStorage { -public: - - /** - * Gets the full path to the profile named 'profileName'. - */ - static std::string getProfilePath(const std::string & profileName); - - UserProfileFileStorage(UserProfile & userProfile); - - virtual ~UserProfileFileStorage(); - - /** - * Will load the profile named 'profileName'. - * - * If an error occured while trying the profile, - * the method will try to load the profile from - * the backup directory. - * If it works a profileLoadedFromBackupsEvent - * will be emitted. - * If the backup cannot be loaded, it will be erased if it - * exists and a profileCannotBeLoadedEvent will be emitted. - */ - virtual bool load(const std::string & profileName); - - virtual bool save(const std::string & profileName); - - /** - *deletes profile files from both "profiles" and "backups" directory - */ - virtual bool deleteProfile(); - /** - * Loads the system IMAccountParameters data, this is used internally and - * when creating a new IMAccount - */ - static std::string loadSystemIMAccountParametersData(); - -private: - - /** - * Gets the temporary save profile dir. - */ - static std::string getTempProfilePath(const std::string & profileName); - - /** - * Gets the old profile save dir. - */ - static std::string getOldProfilePath(const std::string & profileName); - - /** - * Gets the full path to the backup profile named 'profileName'. - */ - static std::string getBackupProfilePath(const std::string & profileName); - - /** - * Tries to load a profile from the 'profiles' dir. - * - * @return false if error, true otherwise - */ - bool loadFromProfiles(const std::string & profileName); - - /** - * Tries to load a profile from the 'backups' dir. - * - * @return false if error, true otherwise - */ - bool loadFromBackups(const std::string & profileName); - - /** - * Loads a profile from a dir. - * - * @return false if error, true otherwise - */ - bool loadFromDir(const std::string & path); - - /** - * Loads the UserProfile object from url/userprofile.xml - * - * @return false if error, true otherwise - */ - bool loadProfile(const std::string & url); - - /** - * Saves the UserProfile object in url/userprofile.xml - * - * @return false if error, true otherwise - */ - bool saveProfile(const std::string & url); - - /** For thread-safe operations. */ - RecursiveMutex _mutex; - -}; - -#endif //USERPROFILEFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfile.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,557 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWUSERPROFILE_H -#define OWUSERPROFILE_H - -#include "Profile.h" -#include "IMAccountManager.h" - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include - -class ChatHandler; -class CoIpManager; -class ConnectHandler; -class Contact; -class ContactList; -class History; -class IMAccount; -class IMAccountManager; -class IMContactListHandler; -class IPhoneLine; -class NetworkObserver; -class PhoneCall; -class PresenceHandler; -class WsInfo; -class WsSms; -class WsSoftUpdate; - -/** - * Handle the profile of a User. - * - * @author Philippe Bernery - */ -class UserProfile : public Profile, public Trackable { - friend class UserProfileFileStorage; - friend class UserProfileFileStorage1; - friend class UserProfileXMLSerializer; - friend class Connect; -public: - /** - * Login procedure is done, event with the procedure result. - * - * @see SipAccount::loginStateChangedEvent - */ - Event loginStateChangedEvent; - - /** - * Network event while trying to connect a SipAccount. - * - * @see SipAccount::networkDiscoveryStateChangedEvent - */ - Event< void (SipAccount & sender, SipAccount::NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; - - /** - * Emitted when SipAccount has been connected - */ - Event sipAccountConnectedEvent; - - /** - * Emitted when SipAccount failed to connect - */ - Event sipAccountConnectionFailedEvent; - - /** - * The history has been loaded. - * - * @param sender this class - * @param History History loaded - */ - Event historyLoadedEvent; - - /** - * A PhoneLine has been created. - * - * @param sender this class - * @param phoneLine PhoneLine created - */ - Event phoneLineCreatedEvent; - - /** - * Sms has been created. - * - * @param sender this class - * @param sms Sms created - */ - Event wsSmsCreatedEvent; - - /** - * SoftUpdate has been created. - * - * @param sender this class - * @param sms Sms created - */ - Event wsSoftUpdateCreatedEvent; - - /** - * WsInfo has been created. - * - * @param sender this class - * @param wsInfo WsInfo created - */ - Event wsInfoCreatedEvent; - - /** - * WsCallForward has been created. - * - * @param sender this class - * @param wsCallForward WsCallForward created - */ - Event wsCallForwardCreatedEvent; - - UserProfile(); - - virtual ~UserProfile(); - - /** - * Initializes the UserProfile. - */ - void init(); - - /** - * Return the profile directory - * @return profile directory. - */ - std::string getProfileDirectory() const; - - /** - * Connects all this UserProfile accounts (SipAccount and IMAccount) set - * to be automatically connected. - */ - void connect(); - - /** - * Disconnects all accounts. - */ - void disconnect(); - - /** List of IPhoneLine. */ - typedef List < IPhoneLine * > PhoneLines; - - /** - * Gets the list of PhoneLine. - * - * Only one PhoneLine is active at a time. - * - * @return the list of PhoneLine - */ - const PhoneLines & getPhoneLineList() const { - return _phoneLineList; - } - - /** - * Gets the active/current PhoneLine. - * - * Only one PhoneLine is active at a time - * - * @return the active PhoneLine - */ - IPhoneLine * getActivePhoneLine() const { - return _activePhoneLine; - } - - /** - * Gets the active phone call. - * - * Used for playing DTMF. - * - * @return active phone call or NULL - */ - PhoneCall * getActivePhoneCall() const; - - /** Gets the ConnectHandler reference. */ - ConnectHandler & getConnectHandler() { return *_connectHandler; } - - /** Gets the PresenceHandler reference. */ - PresenceHandler & getPresenceHandler() { return *_presenceHandler; } - - /** Gets the ChatHandler reference. */ - ChatHandler & getChatHandler() { return *_chatHandler; } - - /** - * Gets the IMAccountManager reference. Here we can safely derefence - * the pointer as the IMAccountHandler is constructed in - * the UserProfile constructor. - */ - IMAccountManager & getIMAccountManager() { return *_imAccountManager; } - - /** Gets the IMContactListHandler reference. */ - IMContactListHandler & getIMContactListHandler() { return *_imContactListHandler; } - - /** Gets the ContactList reference. */ - ContactList & getContactList() { return *_contactList; } - - /** - * Gets the History reference. Here we can safely derefence the pointer - * as the History is constructed in the UserProfile constructor. - */ - History & getHistory() { return *_history; } - - /** Gets the WsInfo pointer. */ - WsInfo * getWsInfo() { return _wsInfo; } - - /** Gets the WengoPhone update WebService pointer. */ - WsSoftUpdate * getWsSoftUpdate() { return _wsSoftUpdate; } - - /** Gets the SMS WebService pointer. */ - WsSms * getWsSms() { return _wsSms; } - - /** Gets the WsCallForward WebService pointer. */ - WsCallForward * getWsCallForward() { return _wsCallForward; } - - /** Gets the CoIpManager. */ - CoIpManager & getCoIpManager() { return *_coIpManager; } - - /** True if history has been loaded. */ - bool isHistoryLoaded() const { - return _historyLoaded; - } - - /** - * Loads the history. - */ - bool loadHistory(const std::string & path); - - /** - * Saves the history. - */ - bool saveHistory(const std::string & path); - - /** - * Sets the SipAccount of this UserProfile. - * - * The SipAccount os copied internally. - * - * @param SipAccount the SipAccount to set - */ - void setSipAccount(const SipAccount & sipAccount, bool needInitialization = true); - - /** - * Return true if a WengoAccount is active. - * - * @return true if a WengoAccount is active - */ - bool hasWengoAccount() const; - - /** - * Return true if a SipAccount is active. - * - * @return true if a SipAccount is active - */ - bool hasSipAccount() const; - - /** - * Gets the SipAccount. - * - * @return the SipAccount - */ - SipAccount * getSipAccount() const { - return _sipAccount; - } - - /** - * Gets the WengoAccount. - * - * @return the WengoAccount - */ - WengoAccount * getWengoAccount() const { - if (hasWengoAccount()) { - return dynamic_cast(_sipAccount); - } else { - return NULL; - } - } - - /** - * Adds an IMAccount to this UserProfile. - * This method should currently not be called to add a Wengo - * IMAccount. A Wengo IMAccount is created internally when setWengoAccount - * is called. There is an assert to prevent that. - * - * The IMAccount is copied internally. - * - * @param imAccount the IMAccount to add - */ - void addIMAccount(const IMAccount & imAccount); - - /** - * Removes an IMAccount from this UserProfile. - * - * An IMAccount of type Wengo must currently not be removed by this method. - * setWengoAccount must be used for this purpose. - * There is an assert to prevent that. - * - * @param imAccount the IMAccount to remove - */ - void removeIMAccount(const IMAccount & imAccount); - - /** - * Updates an IMAccount from this UserProfile. - * - * An IMAccount of type Wengo must currently not be removed by this method. - * setWengoAccount must be used for this purpose. - * There is an assert to prevent that. - * - * @param imAccount the IMAccount to remove - */ - void updateIMAccount(const IMAccount & imAccount); - - /** - * @see IPhoneLine::makeCall() - */ - EnumMakeCallError::MakeCallError makeCall(Contact & contact); - - /** - * @see IPhoneLine::makeCall() - */ - EnumMakeCallError::MakeCallError makeCall(const std::string & phoneNumber); - - /** - * Start a instant messaging with a Contact. - * - * @param contact the Contact to talk to - */ - void startIM(Contact & contact); - - /** - * Changes alias of this user. - * - * @param alias the alias to set - * @param imAccount the IMAccount to apply the alias to; - * pass NULL to set the alias to all IMAccount - */ - void setAlias(const std::string & alias, IMAccount * imAccount); - - /** - * Changes icon of this user. - * - * @param icon the icon to set - * @param imAccount the IMAccount to apply the icon to - * pass NULL to set the icon to all IMAccount - */ - void setIcon(const OWPicture & icon, IMAccount * account); - - /** - * Gets the PresenceState of this UserProfile. - */ - EnumPresenceState::PresenceState getPresenceState() const; - - /** - * Checks if at least one IMAccount is in connected state. - * - * @return true if at least 1 IMAccount is connected; false otherwise - */ - bool isConnected() const; - - /** - * Changes the PresenceState of an IMAccount. - * - * @param presenceState the PresenceState to set - * @param imAccountId the id of the IMAccount to apply the PresenceState. - */ - void setPresenceState(EnumPresenceState::PresenceState presenceState, std::string imAccountId); - - /** - * Changes the PresenceState of all IMAccount. - * - * @param presenceState the PresenceState to set - */ - void setAllPresenceState(EnumPresenceState::PresenceState presenceState); - - /** - * Gets the name of this UserProfile. - * - * The name is computed from the SipAccount. "Default" is returned if no - * SipAccount is set. There should be only one Default UserProfile at - * a time. - */ - std::string getName() const { - return _name; - } - -private: - - // Inherited from Profile - virtual void setWengoPhoneId(const std::string & /*wengoPhoneId*/) {} - virtual std::string getWengoPhoneId() const { return String::null; } - //// - - /** - * @see WsCallForward::wsCallForwardEvent - */ - void wsCallForwardEventHandler(WsCallForward & sender, int id, WsCallForward::WsCallForwardStatus status); - - /** - * Handles SipAccount::loginStateChangedEvent. - */ - void loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state); - void loginStateChangedEventHandlerThreadSafe(SipAccount & sender, EnumSipLoginState::SipLoginState state); - - /** - * Handles SipAccount::networkDiscoveryStateChangedEvent - */ - void networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state); - - /** - * Compute the name of the UserProfile from the SipAccount - * and set the _name variable. - */ - void computeName(); - - /* Inherited from Profile */ - void setAlias(const std::string & alias) { _alias = alias; }; - - void setIcon(const OWPicture & icon) { setIcon(icon, NULL); }; - /**/ - - /** - * Actually adds an IMAccount. Used internally and by addIMAccount after - * checking the given IMAccount. - */ - void _addIMAccount(const IMAccount & imAccount); - - /** - * Actually removes an IMAccount. Used internally and by removeIMAccount after - * checking the given IMAccount. - */ - void _removeIMAccount(const IMAccount & imAccount); - - /** - * Connect all IMAccounts. - */ - void connectIMAccounts(); - - /** - * Disconnect all IMAccounts. - */ - void disconnectIMAccounts(); - - /** - * Connect all SipAccounts. - */ - bool connectSipAccounts(); - - /** - * Disconnect all SipAccounts. - * - * @param force if true, disconnect without doing any transactions - */ - void disconnectSipAccounts(bool force = false); - - /** - * Initializes the SipAccount. - */ - void sipAccountInit(); - - /** - * Creates and adds a new PhoneLine given a SipAccount. - * - * This is a helper method. - * - * @param account SipAccount associated with the newly created PhoneLine - */ - bool addPhoneLine(SipAccount & account); - - /** - * find the wengo phone line - */ - IPhoneLine * findWengoPhoneLine(); - - /** The active/current PhoneLine. */ - IPhoneLine * _activePhoneLine; - - /** The active PhoneCall. */ - PhoneCall * _activePhoneCall; - - /** List of PhoneLine. */ - PhoneLines _phoneLineList; - - /** History. */ - History * _history; - - /** WengoPhone update system. */ - WsSoftUpdate * _wsSoftUpdate; - - /** SMS. */ - WsSms * _wsSms; - - /** WsInfo. */ - WsInfo * _wsInfo; - - /** WsCallForward. */ - WsCallForward * _wsCallForward; - - //TODO: create a list of SipAccount - SipAccount * _sipAccount; - - RecursiveMutex _mutex; - - /** - * True if the UserProfile must connect after intialization of the - * SipAccount - */ - bool _sipAccountMustConnectAfterInit; - - bool _sipAccountReadyToConnect; - - bool _historyLoaded; - - IMAccountManager * _imAccountManager; - - IMContactListHandler * _imContactListHandler; - - ConnectHandler * _connectHandler; - - PresenceHandler * _presenceHandler; - - ChatHandler * _chatHandler; - - ContactList * _contactList; - - CoIpManager * _coIpManager; - - /** Name of the UserProfile. */ - std::string _name; -}; - -#endif //OWUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileHandler.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,382 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "UserProfileHandler.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -UserProfileHandler::UserProfileHandler() { - _currentUserProfile = NULL; - _desiredUserProfile = NULL; - - cleanupUserProfileDirectories(); - - _saveTimerRunning = false; - _autoSave = true; - _saveTimer.lastTimeoutEvent += - boost::bind(&UserProfileHandler::saveTimerLastTimeoutEventHandler, this, _1); -} - -UserProfileHandler::~UserProfileHandler() { -} - -void UserProfileHandler::uninit() { - OWSAFE_DELETE(_desiredUserProfile); - - { - RecursiveMutex::ScopedLock lock(_mutex); - _saveTimerRunning = false; - _saveTimer.stop(); - } - - if (_currentUserProfile) { - saveUserProfile(*_currentUserProfile); - setLastUsedUserProfile(*_currentUserProfile); - WsUrl::setWengoAccount(NULL); - - OWSAFE_DELETE(_currentUserProfile); - - uninitExtLibraries(); - } -} - -StringList UserProfileHandler::getUserProfileNames(bool onlyRealDir) { - StringList result; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - File path(File::convertPathSeparators(config.getConfigDir() + "profiles/")); - result = path.getDirectoryList(); - - if (onlyRealDir) { - StringList::iterator begin = result.begin(); - for (int interator = result.size(); --interator >= 0; ) { - if (String(result[interator]).endsWith(".new") || String(result[interator]).endsWith(".old")) { - result.erase(begin + interator); - } - } - } - - return result; -} - -UserProfile * UserProfileHandler::getUserProfile(const std::string & name) { - UserProfile * result = new UserProfile(); - UserProfileFileStorage userProfileStorage(*result); - userProfileStorage.profileLoadedFromBackupsEvent += profileLoadedFromBackupsEvent; - userProfileStorage.profileCannotBeLoadedEvent += profileCannotBeLoadedEvent; - if (!userProfileStorage.load(name)) { - OWSAFE_DELETE(result); - } - - return result; -} - -bool UserProfileHandler::LoadUserProfileFromName(UserProfile * userprofile, const std::string & name) { - UserProfileFileStorage userProfileStorage(*userprofile); - if (userProfileStorage.load(name)) { - return true; - } - return false; -} - -bool UserProfileHandler::userProfileExists(const std::string & name) { - bool result = false; - - if (!name.empty() && File::exists(UserProfileFileStorage::getProfilePath(name))) { - result = true; - } - - return result; -} - -void UserProfileHandler::setCurrentUserProfile(const std::string & name, const SipAccount & sipAccount) { - - RecursiveMutex::ScopedLock lock(_mutex); - - UserProfile * result = getUserProfile(name); - - // Check if the desired UserProfile is different from the current UserProfile - // and check if the WengoAccount of the current UserProfile is different from the given WengoAccount - // (if so the WengoAccount (only 'password' and 'keep password' members) will be updated). - if (!_currentUserProfile || - (_currentUserProfile && - ((_currentUserProfile->getName() != name) || - ((sipAccount.getUserPassword() != result->getSipAccount()->getUserPassword()) || - (sipAccount.isPasswordRemembered() != result->getSipAccount()->isPasswordRemembered()))))) { - - if (result) { - // If the SipAccount is not empty, we update the one in UserProfile - // This can happen if the password has been changed - - if (!sipAccount.isEmpty() ) { - - // to be virtual ? - switch(sipAccount.getType()) { - case SipAccount::SipAccountTypeBasic: { - - SipAccount * actSipAccount = result->getSipAccount(); - if (actSipAccount) { - - actSipAccount->setRegisterServerHostname(sipAccount.getRegisterServerHostname()); - actSipAccount->setRegisterServerPort(sipAccount.getRegisterServerPort()); - actSipAccount->setSIPProxyServerHostname(sipAccount.getSIPProxyServerHostname()); - actSipAccount->setSIPProxyServerPort(sipAccount.getSIPProxyServerPort()); - actSipAccount->setDisplayName(sipAccount.getDisplayName()); - actSipAccount->setIdentity(sipAccount.getIdentity()); - actSipAccount->setUsername(sipAccount.getUsername()); - actSipAccount->setPassword(sipAccount.getPassword()); - actSipAccount->setRealm(sipAccount.getRealm()); - actSipAccount->setVisibleName(sipAccount.getVisibleName()); - actSipAccount->enablePIM(sipAccount.isPIMEnabled()); - } else { - SipAccount mySipAccount = sipAccount; - result->setSipAccount(mySipAccount, false); - } - } - break; - case SipAccount::SipAccountTypeWengo: { - - const WengoAccount & refWengoAccount = dynamic_cast(sipAccount); - WengoAccount * actWengoAccount = result->getWengoAccount(); - - if (actWengoAccount) { - actWengoAccount->setWengoLogin(refWengoAccount.getWengoLogin()); - actWengoAccount->setWengoPassword(refWengoAccount.getWengoPassword()); - } else { - WengoAccount myWengoAccount = refWengoAccount; - result->setSipAccount(myWengoAccount, false); - } - } - break; - } - } - - if (_currentUserProfile) { - LOG_DEBUG("UserProfile will change"); - _desiredUserProfile = result; - currentUserProfileWillDieEvent(*this); - } else { - LOG_DEBUG("No current UserProfile set. Change now"); - _currentUserProfile = result; - initializeCurrentUserProfile(); - } - } else { - // log off - if (_currentUserProfile && name.empty()) { - - _saveTimerRunning = false; - _saveTimer.stop(); - - _desiredUserProfile = NULL; - currentUserProfileWillDieEvent(*this); - // when name is empty or do not match any profile - } else { - noCurrentUserProfileSetEvent(*this); - } - } - } -} - -void UserProfileHandler::setLastUsedUserProfile(const UserProfile & userProfile) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::PROFILE_LAST_USED_NAME_KEY, userProfile.getName()); -} - -void UserProfileHandler::currentUserProfileReleased() { - if (_currentUserProfile) { - saveUserProfile(*_currentUserProfile); - WsUrl::setWengoAccount(NULL); - OWSAFE_DELETE(_currentUserProfile); - - uninitExtLibraries(); - } - - if (_desiredUserProfile) { - // If we want to change the UserProfile - LOG_DEBUG("Old UserProfile killed. Setting the new one"); - _currentUserProfile = _desiredUserProfile; - _desiredUserProfile = NULL; - initializeCurrentUserProfile(); - } -} - -void UserProfileHandler::initializeCurrentUserProfile() { - _currentUserProfile->profileChangedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - - History& history = _currentUserProfile->getHistory(); - history.mementoUpdatedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - history.mementoAddedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - history.mementoRemovedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - - ContactList& contactList = _currentUserProfile->getContactList(); - contactList.contactGroupAddedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactGroupRemovedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactGroupRenamedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactAddedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactRemovedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactMovedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - contactList.contactChangedEvent += - boost::bind(&UserProfileHandler::profileChangedEventHandler, this); - - _currentUserProfile->sipAccountConnectedEvent += - boost::bind(&UserProfileHandler::sipAccountConnectedEventHandler, this); - _currentUserProfile->sipAccountConnectionFailedEvent += - boost::bind(&UserProfileHandler::sipAccountConnectionFailedEventHandler, this, _1); - _currentUserProfile->networkDiscoveryStateChangedEvent += networkDiscoveryStateChangedEvent; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - initExtLibraries(File::convertPathSeparators(config.getConfigDir() + "profiles/") + _currentUserProfile->getName()); - _currentUserProfile->init(); -} - -void UserProfileHandler::init() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string profileName = config.getProfileLastUsedName(); - - setCurrentUserProfile(profileName, SipAccount::empty); -} - -void UserProfileHandler::saveUserProfile(UserProfile & userProfile) { - if (_autoSave && &userProfile) { - UserProfileFileStorage userProfileStorage(userProfile); - userProfileStorage.save(userProfile.getName()); - } -} - -void UserProfileHandler::profileChangedEventHandler() { - RecursiveMutex::ScopedLock lock(_mutex); - - if (!_saveTimerRunning) { - _saveTimerRunning = true; - _saveTimer.start(5000, 5000, 1); - } -} - -void UserProfileHandler::saveTimerLastTimeoutEventHandler(Timer & sender) { - { - RecursiveMutex::ScopedLock lock(_mutex); - if (!_saveTimerRunning) { - LOG_WARN("Intercepted saveTimerLastTimeoutEventHandler"); - return; - } - } - - if (_currentUserProfile) { - saveUserProfile(*_currentUserProfile); - } - - { - RecursiveMutex::ScopedLock lock(_mutex); - _saveTimerRunning = false; - } -} - -void UserProfileHandler::sipAccountConnectedEventHandler() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&UserProfileHandler::sipAccountConnectedEventHandlerThreadSafe, this)); - - WengoPhone::getInstance().postEvent(event); -} - -void UserProfileHandler::sipAccountConnectedEventHandlerThreadSafe() { - if(_currentUserProfile) - { - saveUserProfile(*_currentUserProfile); - - if (_currentUserProfile->hasWengoAccount()) { - WsUrl::setWengoAccount(_currentUserProfile->getWengoAccount()); - } - - userProfileInitializedEvent(*this, *_currentUserProfile); - - setLastUsedUserProfile(*_currentUserProfile); - } -} - -void UserProfileHandler::sipAccountConnectionFailedEventHandler(EnumSipLoginState::SipLoginState error) { - typedef ThreadEvent1 MyThreadEvent; - MyThreadEvent * event = - new MyThreadEvent(boost::bind(&UserProfileHandler::sipAccountConnectionFailedEventHandlerThreadSafe, this, _1), - error); - - WengoPhone::getInstance().postEvent(event); -} - -void UserProfileHandler::sipAccountConnectionFailedEventHandlerThreadSafe(EnumSipLoginState::SipLoginState error) { - LOG_ERROR("error: %d", error); - SipAccount * sipaccount = _currentUserProfile->getSipAccount()->clone(); - OWSAFE_DELETE(_currentUserProfile); - uninitExtLibraries(); - sipAccountConnectionFailedEvent(*sipaccount, error); - OWSAFE_DELETE(sipaccount); -} - -void UserProfileHandler::cleanupUserProfileDirectories() { - - StringList userProfiles = getUserProfileNames(); - StringList::iterator it; - for (it = userProfiles.begin(); it != userProfiles.end(); it++) { - - if (String(*it).endsWith(".new") || String(*it).endsWith(".old")) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - File profileDirectory(File::convertPathSeparators(config.getConfigDir() + "profiles/") + (*it)); - profileDirectory.remove(); - } - } -} - -void UserProfileHandler::initExtLibraries(const std::string & pathToProfile) { - IMWrapperFactory::getFactory().init(pathToProfile); -} - -void UserProfileHandler::uninitExtLibraries() { - IMWrapperFactory::getFactory().terminate(); -} - -void UserProfileHandler::deleteUserProfile(UserProfile & userProfile) { - if (&userProfile) { - UserProfileFileStorage userProfileFileStorage(userProfile); - userProfileFileStorage.deleteProfile(); - } -} \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileHandler.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,258 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWUSERPROFILEHANDLER_H -#define OWUSERPROFILEHANDLER_H - -#include - -#include -#include -#include -#include -#include - -class Profile; -class UserProfile; -class UserProfileStorage; -class WengoAccount; -class SipAccount; -class WengoPhone; - -/** - * Manages the UserProfiles. - * - * @author Philippe Bernery - */ -class UserProfileHandler : public Trackable { -public: - - /** - * No current UserProfile has been set. This can happen at the first launch - * of the softphone when no UserProfile has been set. - * - * @param sender this class - */ - Event noCurrentUserProfileSetEvent; - - /** - * Emitted when a UserProfile will be destroyed. - * - * After the event, the old UserProfile reference will be invalidated. - * - * @param sender this class - */ - Event currentUserProfileWillDieEvent; - - /** - * A UserProfile has been set. - * - * @param sender this class - * @param userProfile the set UserProfile - */ - Event userProfileInitializedEvent; - - /** - * Emitted when the requested SipAccount connection failed. - * - * @param account SipAccount - * @param state Error type - */ - Event sipAccountConnectionFailedEvent; - - /** - * @see UserProfile::networkDiscoveryStateChangedEvent - */ - Event< void (SipAccount & sender, SipAccount::NetworkDiscoveryState state) > networkDiscoveryStateChangedEvent; - - /** - * @see UserProfileStorage::profileLoadedFromBackupsEvent - */ - Event < void (UserProfileStorage &sender, std::string profileName) > profileLoadedFromBackupsEvent; - - /** - * @see UserProfileStorage::profileCannotBeLoadedEvent - */ - Event < void (UserProfileStorage &sender, std::string profileName) > profileCannotBeLoadedEvent; - - /** - * Gets the names of existing user profiles. - * - * These UserProfiles can then be loaded with getUserProfile. - * - * @param onlyRealDir if false can return directoru=y ending with ".new" or ".old" - * - * @return vector of UserProfiles - */ - static StringList getUserProfileNames(bool onlyRealDir = false); - - UserProfileHandler(); - - ~UserProfileHandler(); - - /** - * Initializes the UserPofileHandler. - * - * During initialization, the UserProfileHandler will check for the last - * used UserProfile. If no UserProfile has been used, the - * noCurrentUserProfileSetEvent will be emitted. - */ - void init(); - - /** - * Sets the current UserProfile. - * - * A non empty SipAccount can be given in parameter. It will be used - * to update password and remember Password attributes of the UserProfile. - * - * @param name the name of the current UserProfile to set - * @param wengoAccount the WengoAccount that will update the UserProfile - */ - void setCurrentUserProfile(const std::string & name, const SipAccount & sipAccount); - - /** - * @return the current userProfile - */ - UserProfile * getCurrentUserProfile() const { - return _currentUserProfile; - } - - /** - * Check if a UserProfile exists. - * - * @param name name of the UserProfile to check - * @return true if a UserProfile with the given name exists - */ - bool userProfileExists(const std::string & name); - - /** - * Must be called when the current UserProfile is released and can be - * destroyed. - */ - void currentUserProfileReleased(); - - /** - * Gets a UserProfile. - * - * Used by model and control. Must not be used by presentation - * - * @param name the name of the desired UserProfile - * @return the UserProfile or NULL if no UserProfile with the given found - */ - UserProfile * getUserProfile(const std::string & name); - - /** - * Loads an UserProfile - * - * @param userprofile the UserProfile that is to be loaded - * @param name the name of the desired UserProfile - * @return true if the UserProfile have been correctly loadded - */ - bool LoadUserProfileFromName(UserProfile * userprofile, const std::string & name); - - /** - * Enable/disable autosave. - * @param enable if True autosave if activated. - */ - void enableAutoSave(bool enable) { - _autoSave = enable; - } - - /** - * Destroy the UserProfile and uninitialize external libraries - */ - void uninit(); - - /** - * Deletes UserProfile - *@param userProfile the UserProfile to delete - */ - void deleteUserProfile(UserProfile & userProfile); - -private: - - /** - * Initializes the current UserProfile. - */ - void initializeCurrentUserProfile(); - - /** - * Sets the last used UserProfile. - * - * @param the last used UserProfile - */ - void setLastUsedUserProfile(const UserProfile & userProfile); - - /** - * Saves the UserProfile. - * - * @param userProfile the UserProfile to save - */ - void saveUserProfile(UserProfile & userProfile); - - /* - * @see Profile::profileChangedEvent - */ - void profileChangedEventHandler(); - - /** - * @see Timer::lastTimeoutEvent - */ - void saveTimerLastTimeoutEventHandler(Timer & sender); - - /** - * @see UserProfile::sipAccountValidityEvent - */ - void sipAccountConnectedEventHandler(); - void sipAccountConnectedEventHandlerThreadSafe(); - void sipAccountConnectionFailedEventHandler(EnumSipLoginState::SipLoginState); - void sipAccountConnectionFailedEventHandlerThreadSafe(EnumSipLoginState::SipLoginState); - - /** - * Remove temporary profiles (.new directories) - */ - void cleanupUserProfileDirectories(); - - /** - * Initializes external libraries (PhApi and Gaim). - */ - void initExtLibraries(const std::string & pathToProfile); - - /** - * Uninitializes external libraries (PhApi and Gaim). - */ - void uninitExtLibraries(); - - RecursiveMutex _mutex; - - UserProfile * _currentUserProfile; - - UserProfile * _desiredUserProfile; - - /** True if _saveTimer is running. */ - bool _saveTimerRunning; - - /** True if autosave is enabled (default) */ - bool _autoSave; - - Timer _saveTimer; -}; - -#endif //OWUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileStorage.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileStorage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileStorage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileStorage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef USERPROFILESTORAGE_H -#define USERPROFILESTORAGE_H - -#include - -#include - -class UserProfile; - -/** - * UserProfile storage. - * - * @ingroup model - * @author Philippe Bernery - */ -class UserProfileStorage : public Storage { -public: - - /** - * Emitted when loading the profile failed and getting the backup - * worked. - */ - Event < void (UserProfileStorage & sender, std::string profileName) > profileLoadedFromBackupsEvent; - - /** - * Emitted when loading the profile failed with both normal and backup way. - */ - Event < void (UserProfileStorage & sender, std::string profileName) > profileCannotBeLoadedEvent; - - UserProfileStorage(UserProfile & userProfile) - : _userProfile(userProfile) { } - - virtual ~UserProfileStorage() { } - -protected: - - UserProfile & _userProfile; -}; - -#endif //USERPROFILESTORAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.cpp qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "UserProfileXMLSerializer.h" - -#include -#include -#include -#include - -#include "UserProfile.h" - -#include - -UserProfileXMLSerializer::UserProfileXMLSerializer(UserProfile & userProfile) -: ProfileXMLSerializer(userProfile), _userProfile(userProfile) { -} - -std::string UserProfileXMLSerializer::serialize() { - std::string result; - - result += "\n"; - - result += ProfileXMLSerializer::serialize(); - - if (_userProfile.hasWengoAccount()) { - WengoAccountXMLSerializer wserializer(*(dynamic_cast(_userProfile.getSipAccount()))); - result += wserializer.serialize(); - } else { - //for now only a "generic" sip account - SipAccountXMLSerializer sserializer(*_userProfile.getSipAccount()); - result += sserializer.serialize(); - } - - result += "\n"; - - return result; -} - -bool UserProfileXMLSerializer::unserialize(const std::string & data) { - - bool result = false; - TiXmlDocument doc; - - doc.Parse(data.c_str()); - - TiXmlHandle docHandle(&doc); - TiXmlHandle userprofile = docHandle.FirstChild("userprofile"); - - result = ProfileXMLSerializer::unserializeContent(userprofile); - if (result) { - // Retrieving wengoaccount - TiXmlNode * wengoaccount = userprofile.FirstChild("wengoaccount").Node(); - if (wengoaccount) { - TiXmlElement * wengoaccountElt = wengoaccount->ToElement(); - std::string wengoaccountData; - wengoaccountData << *wengoaccountElt; - WengoAccount wengoAccount; - WengoAccountXMLSerializer wserializer(wengoAccount); - result = wserializer.unserialize(wengoaccountData); - //if (result && !wengoAccount.getWengoLogin().empty()) { - if (result && !wengoAccount.isEmpty()) { - _userProfile._sipAccount = new WengoAccount(wengoAccount); - _userProfile.computeName(); - _userProfile._sipAccount->setUserProfileName(_userProfile.getName()); - } - return result; - } - ///// - - // Retrieving "generic" sipaccount - TiXmlNode * sipaccount = userprofile.FirstChild("sipaccount").Node(); - if (sipaccount) { - TiXmlElement * sipaccountElt = sipaccount->ToElement(); - std::string sipaccountData; - sipaccountData << *sipaccountElt; - SipAccount sipAccount; - SipAccountXMLSerializer sserializer(sipAccount); - result = sserializer.unserialize(sipaccountData); - if (result && !sipAccount.isEmpty()) { - _userProfile._sipAccount = new SipAccount(sipAccount); - _userProfile.computeName(); - _userProfile._sipAccount->setUserProfileName(_userProfile.getName()); - } - return result; - } - ///// - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.h qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/profile/UserProfileXMLSerializer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef USERPROFILEXMLSERIALIZER_H -#define USERPROFILEXMLSERIALIZER_H - -#include - -#include - -class UserProfile; - -/** - * Serialize a UserProfile object. - * - * @author Philippe Bernery - */ -class UserProfileXMLSerializer : public ProfileXMLSerializer { -public: - - UserProfileXMLSerializer(UserProfile & userProfile); - - virtual std::string serialize(); - - virtual bool unserialize(const std::string & data); - -private: - - UserProfile & _userProfile; - -}; - -#endif //USERPROFILEXMLSERIALIZER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/SipCallbacks.cpp qutecom-2.2+dfsg1/wengophone/src/model/SipCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/SipCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/SipCallbacks.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "SipCallbacks.h" - -#include -#include -#include -#include - -#include - -#include -#include - -SipCallbacks::SipCallbacks(SipWrapper & sipWrapper, UserProfile & userProfile) - : _sipWrapper(sipWrapper), - _userProfile(userProfile) { - - _sipWrapper.phoneCallStateChangedEvent += - boost::bind(&SipCallbacks::phoneCallStateChangedEventHandler, this, _1, _2, _3, _4); - _sipWrapper.phoneLineStateChangedEvent += - boost::bind(&SipCallbacks::phoneLineStateChangedEventHandler, this, _1, _2, _3); - _sipWrapper.videoFrameReceivedEvent += - boost::bind(&SipCallbacks::videoFrameReceivedEventHandler, this, _1, _2, _3, _4); -} - -SipCallbacks::~SipCallbacks() { -} - -void SipCallbacks::phoneCallStateChangedEventHandler(SipWrapper & sender, int callId, - EnumPhoneCallState::PhoneCallState state, const std::string & from) { - - LOG_DEBUG("callProgress: callId=" + String::fromNumber(callId) + - " state=" + String::fromNumber(state) + - " from=" + from); - - const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); - for (unsigned i = 0; i < lines.size(); i++) { - IPhoneLine * line = lines[i]; - line->setPhoneCallState(callId, state, SipAddress(from)); - } -} - -void SipCallbacks::phoneLineStateChangedEventHandler(SipWrapper & sender, int lineId, - EnumPhoneLineState::PhoneLineState state) { - - LOG_DEBUG("registerProgress: lineId=" + String::fromNumber(lineId) + - " state=" + String::fromNumber(state)); - - const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); - for (unsigned i = 0; i < lines.size(); i++) { - IPhoneLine * line = lines[i]; - LOG_DEBUG("lineId=" + String::fromNumber(line->getLineId())); - if (lineId == 0) { - // change state of all lines - line->setState(state); - } else if (line->getLineId() == lineId) { - line->setState(state); - break; - } - } -} - -void SipCallbacks::videoFrameReceivedEventHandler(SipWrapper & sender, int callId, - piximage* remoteVideoFrame, piximage* localVideoFrame) { - - //LOG_DEBUG("videoFrameReceived: callId=" + String::fromNumber(callId)); - - const UserProfile::PhoneLines & lines = _userProfile.getPhoneLineList(); - for (unsigned i = 0; i < lines.size(); i++) { - IPhoneLine * line = lines[i]; - - PhoneCall * call = line->getPhoneCall(callId); - if (call) { - //The correct PhoneCall has been found given its callId - call->videoFrameReceived(remoteVideoFrame, localVideoFrame); - break; - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/SipCallbacks.h qutecom-2.2+dfsg1/wengophone/src/model/SipCallbacks.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/SipCallbacks.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/SipCallbacks.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef SIPCALLBACKS_H -#define SIPCALLBACKS_H - -#include -#include - -#include -#include - -#include - -#include - -class UserProfile; -class SipWrapper; -class WebcamVideoFrame; - -/** - * Callbacks for SIP stacks. - * - * Handles events/callbacks from SipWrapper. - * - * phApi states: [INCOMING], [ACCEPTING], [OUTGOING], [ESTABLISHED], [ONHOLD], [CLOSED] - * phApi call events (in the right order): - * phDIALING, phRINGING, phNOANSWER, phCALLBUSY, phCALLREDIRECTED, - * phCALLOK, phCALLHELD, phCALLRESUMED, phHOLDOK, phRESUMEOK, - * phINCALL, phCALLCLOSED, phCALLERROR, phDTMF, phXFERPROGRESS, - * phXFEROK, phXFERFAIL, phXFERREQ, phCALLREPLACED - * - * @ingroup model - * @author Tanguy Krotoff - */ -class SipCallbacks : NonCopyable, public Trackable { -public: - - SipCallbacks(SipWrapper & sipWrapper, UserProfile & userProfile); - - virtual ~SipCallbacks(); - -private: - - void phoneCallStateChangedEventHandler(SipWrapper & sender, int callId, - EnumPhoneCallState::PhoneCallState state, const std::string & from); - - void phoneLineStateChangedEventHandler(SipWrapper & sender, int lineId, - EnumPhoneLineState::PhoneLineState state); - - void videoFrameReceivedEventHandler(SipWrapper & sender, int callId, - piximage* remoteVideoFrame, piximage* localVideoFrame); - - SipWrapper & _sipWrapper; - - /** WengoPhone instance in order to access the phone lines and the phone calls. */ - UserProfile & _userProfile; -}; - -#endif //SIPCALLBACKS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WsCallForward.h" - -#include -#include - -#include - -#include - -WsCallForward::WsCallForward(WengoAccount * wengoAccount) : WengoWebService(wengoAccount) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //setup call forward service - setHostname(config.getWengoServerHostname()); - setGet(true); - setHttps(true); - setServicePath(config.getWengoCirpackPath()); - setPort(443); - setWengoAuthentication(true); -} - -void WsCallForward::disableCallForward() { - - std::string query = "action=callforward"; - query += "&activate=0"; - - setParameters(query); - call(this); -} - -void WsCallForward::forwardToVoiceMail() { - - std::string query = "action=callforward"; - query += "&activate=1"; - query += "&num1=voicemail"; - - setParameters(query); - call(this); -} - -void WsCallForward::forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3) { - - std::string query = "action=callforward"; - query += "&activate=1"; - - query += "&num1=" + number1; - query += "&num2=" + number2; - query += "&num3=" + number3; - - setParameters(query); - call(this); -} - -void WsCallForward::answerReceived(const std::string & answer, int requestId) { - - TiXmlDocument doc; - doc.Parse(answer.c_str()); - - TiXmlHandle docHandle(& doc); - - TiXmlElement * response = docHandle.FirstChild("response").Element(); - if (!response) { - wsCallForwardEvent(*this, requestId, WsCallForwardStatusUrlError); - return; - } - - TiXmlElement * elt = response->FirstChildElement("code"); - if (elt && (elt->FirstChild())) { - - std::string r = elt->FirstChild()->ToText()->Value(); - - //TODO: change when the ws doc will be updated - if (r == "OK") { - wsCallForwardEvent(*this, requestId, WsCallForwardStatusOk); - } else if (r == "401") { - wsCallForwardEvent(*this, requestId, WsCallForwardStatusAuthenticationError); - } else if (r == "404") { - wsCallForwardEvent(*this, requestId, WsCallForwardStatusUrlError); - } else { - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/callforward/WsCallForward.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWSCALLFORWARD_H -#define OWWSCALLFORWARD_H - -#include - -class Settings; - -/** - * Call forward web service. - * - * Sets the call forward method on the server the user wants. - * - * @author Mathieu Stute - */ -class WsCallForward : public WengoWebService { -public: - - enum WsCallForwardStatus { - /** The information could not be set. */ - WsCallForwardStatusAuthenticationError, - - /** The information could not be set. */ - WsCallForwardStatusUrlError, - - /** Set information successfully. */ - WsCallForwardStatusOk - }; - - /** - * Default constructor. - * - * @param wengoAccount the WengoAccount used for authentication - */ - WsCallForward(WengoAccount * wengoAccount); - - /** - * A anwser about unread voice mail has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - */ - Event wsCallForwardEvent; - - /** - * Disables call forward. - */ - void disableCallForward(); - - /** - * Forwards all calls to voicemail. - */ - void forwardToVoiceMail(); - - /** - * Forwards calls to number or nickname. - * - * @param number1 first forward number. - * @param number2 second forward number. - * @param number3 third forward number. - */ - void forwardToNumber(const std::string & number1, const std::string & number2, const std::string & number3); - -private: - - /** - * @see WengoWebService - */ - void answerReceived(const std::string & answer, int requestId); -}; - -#endif //OWWSCALLFORWARD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/info/WsInfo.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/info/WsInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/info/WsInfo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/info/WsInfo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,306 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WsInfo.h" - -#include -#include - -#include - -#include - -#include - -const char * getValueFromKey(TiXmlElement * element, const std::string & key); - -const std::string WsInfo::WENGOSCOUNT_TAG = "contract.counter.wengos"; -const std::string WsInfo::SMSCOUNT_TAG = "contract.counter.sms"; -const std::string WsInfo::ACTIVEMAIL_TAG = "ucf.email.isactive"; -const std::string WsInfo::UNREADVOICEMAILCOUNT_TAG = "tph.mbox.unseencount"; -const std::string WsInfo::ACTIVEVOICEMAIL_TAG = "tph.mbox.isactive"; -const std::string WsInfo::CALLFORWARD_TAG = "tph.callforward"; -const std::string WsInfo::LANDLINENUMBER_TAG = "contract.option.pstnnum"; - -const std::string WsInfo::CALLFORWARD_MODE_TAG = "tph.callforward.mode"; -const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST1_TAG = "tph.callforward.destination1"; -const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST2_TAG = "tph.callforward.destination2"; -const std::string WsInfo::CALLFORWARD_TO_LANDLINE_DEST3_TAG = "tph.callforward.destination3"; - -WsInfo::WsInfo(WengoAccount * wengoAccount) - : WengoWebService(wengoAccount) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _wengosCount = false; - _smsCount = false; - _activeMail = false; - _unreadVoiceMail = false; - _callForward = false; - _landlineNumber = false; - - //setup info web service - setHostname(config.getWengoServerHostname()); - setGet(true); - setHttps(true); - setServicePath(config.getWengoInfoPath()); - setPort(443); - setWengoAuthentication(true); - - getCallForwardInfo(true); -} - -void WsInfo::getWengosCount(bool wengosCount) { - _wengosCount = wengosCount; -} - -void WsInfo::getSmsCount(bool smsCount) { - _smsCount = smsCount; -} - -void WsInfo::getActiveMail(bool activeMail) { - _activeMail = activeMail; -} - -void WsInfo::getUnreadVoiceMail(bool unreadVoiceMail) { - _unreadVoiceMail = unreadVoiceMail; -} - -void WsInfo::getCallForwardInfo(bool callForward) { - _callForward = callForward; -} - -void WsInfo::getLandlineNumber(bool landlineNumber) { - _landlineNumber = landlineNumber; -} - -int WsInfo::execute() { - - //build the query - std::string query = "query="; - if (_wengosCount) { - query += WENGOSCOUNT_TAG + "|"; - } - if (_smsCount) { - query += SMSCOUNT_TAG + "|"; - } - if (_activeMail) { - query += ACTIVEMAIL_TAG + "|"; - } - if (_unreadVoiceMail) { - query += UNREADVOICEMAILCOUNT_TAG + "|"; - query += ACTIVEVOICEMAIL_TAG + "|"; - } - if (_landlineNumber) { - query += LANDLINENUMBER_TAG + "|"; - } - if (_callForward) { - query += CALLFORWARD_TAG + "|"; - query += ACTIVEVOICEMAIL_TAG + "|"; - } - - //remove the last pipe if any - if (query != "query=") { - query = query.substr(0, query.length() - 1); - } - - setParameters(query); - - return call(this); -} - -void WsInfo::answerReceived(const std::string & answer, int id) { - - const char * value = NULL; - std::string forwardMode; - std::string voiceMailNumber; - std::string dest1; - std::string dest2; - std::string dest3; - bool forward2VoiceMail = false; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - TiXmlDocument document; - document.Parse(answer.c_str()); - - TiXmlElement * root = document.FirstChildElement("output"); - if (root) { - - //iterate over "o" element - TiXmlElement * element = root->FirstChildElement("o"); - while (element) { - - //find the key - const char * key = element->Attribute("k"); - if (key) { - - //wengos count - if (std::string(key) == WENGOSCOUNT_TAG) { - float wengos = 0.0; - value = getValueFromKey(element, WENGOSCOUNT_TAG); - if (value) { - std::stringstream ss(value); - ss >> wengos; - wsInfoWengosEvent(*this, id, WsInfoStatusOk, wengos); - } - - //sms count - } else if (key == SMSCOUNT_TAG) { - int sms = 0; - value = getValueFromKey(element, SMSCOUNT_TAG); - if (value) { - std::stringstream ss( value ); - ss >> sms; - wsInfoSmsCountEvent(*this, id, WsInfoStatusOk, sms); - } - - //active mail - } else if (key == ACTIVEMAIL_TAG) { - int activeMail = 0; - value = getValueFromKey(element, ACTIVEMAIL_TAG); - if (value) { - std::stringstream ss(value); - ss >> activeMail; - wsInfoActiveMailEvent(*this, id, WsInfoStatusOk, activeMail); - } - - //unread voice mail - } else if (key == UNREADVOICEMAILCOUNT_TAG) { - int voiceMail = 0; - value = getValueFromKey(element, UNREADVOICEMAILCOUNT_TAG); - if (value) { - std::stringstream ss(value); - ss >> voiceMail; - wsInfoVoiceMailEvent(*this, id, WsInfoStatusOk, voiceMail); - } - - //active voice mail - } else if (key == ACTIVEVOICEMAIL_TAG) { - bool voiceMailActive = false; - value = getValueFromKey(element, UNREADVOICEMAILCOUNT_TAG); - if (value) { - if (std::string(value) == "true") { - voiceMailActive = true; - } - config.set(Config::VOICE_MAIL_ACTIVE_KEY, voiceMailActive); - } - wsInfoActiveVoiceMailEvent(*this, id, WsInfoStatusOk, voiceMailActive); - - //call forward - } else if (key == CALLFORWARD_MODE_TAG) { - value = getValueFromKey(element, CALLFORWARD_MODE_TAG); - if (value) { - forwardMode = std::string(value); - } - - //call forward - } else if (key == CALLFORWARD_TO_LANDLINE_DEST1_TAG) { - value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST1_TAG); - if (value) { - dest1 = std::string(value); - } - - //call forward - } else if (key == CALLFORWARD_TO_LANDLINE_DEST2_TAG) { - value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST2_TAG); - if (value) { - dest2 = std::string(value); - } - - //call forward - } else if (key == CALLFORWARD_TO_LANDLINE_DEST3_TAG) { - value = getValueFromKey(element, CALLFORWARD_TO_LANDLINE_DEST3_TAG); - if (value) { - dest3 = std::string(value); - } - - //landline number - } else if (key == LANDLINENUMBER_TAG) { - value = getValueFromKey(element, LANDLINENUMBER_TAG); - if (value) { - wsInfoLandlineNumberEvent(*this, id, WsInfoStatusOk, std::string(value)); - } - - } - } - element = element->NextSiblingElement("o"); - } - } - - //emit call forward event - if (_callForward) { - - //remove XXX coming from the ws - if (dest1 == "XXX") { - dest1 = ""; - } - if (dest2 == "XXX") { - dest2 = ""; - } - if (dest3 == "XXX") { - dest3 = ""; - } - - if (forwardMode == "enable") { - - if ((dest1 == "voicemail")) { - config.set(Config::CALL_FORWARD_MODE_KEY, std::string("voicemail")); - wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeVoicemail, forward2VoiceMail, dest1, dest2, dest3); - } else { - config.set(Config::CALL_FORWARD_MODE_KEY, std::string("number")); - wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeNumber, forward2VoiceMail, dest1, dest2, dest3); - } - - } else if (forwardMode == "disable") { - config.set(Config::CALL_FORWARD_MODE_KEY, forwardMode); - wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeDisabled, forward2VoiceMail, dest1, dest2, dest3); - } else if (forwardMode == "unauthorized") { - config.set(Config::CALL_FORWARD_MODE_KEY, forwardMode); - wsCallForwardInfoEvent(*this, id, WsInfoStatusOk, WsInfoCallForwardModeUnauthorized, forward2VoiceMail, dest1, dest2, dest3); - } - - //write info to the Config - config.set(Config::CALL_FORWARD_PHONENUMBER1_KEY, dest1); - config.set(Config::CALL_FORWARD_PHONENUMBER2_KEY, dest2); - config.set(Config::CALL_FORWARD_PHONENUMBER3_KEY, dest3); - } -} - -const char * getValueFromKey(TiXmlElement * element, const std::string & key) { - - //find value - TiXmlElement * elt = element->FirstChildElement("v"); - if (elt) { - const char * type = elt->Attribute("t"); - - //check for error - if ((type) && (std::string(type) != "e")) { - - //extract value text - if (elt->FirstChild()) { - TiXmlText * text = elt->FirstChild()->ToText(); - if (text) { - return text->Value(); - } - } - } - } - return NULL; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/info/WsInfo.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/info/WsInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/info/WsInfo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/info/WsInfo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,237 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWSINFO_H -#define OWWSINFO_H - -#include - -/** - * Wengo information web service. - * - * Retrieves general information about the user and its server configuration: - * - the call forward method used - * - the amount of credits - * - the land line number associated with the user - * - * @author Mathieu Stute - */ -class WsInfo : public WengoWebService { -public: - - enum WsInfoStatus { - /** The information could not be retrieved. */ - WsInfoStatusError, - - /** Retrieve information successfully. */ - WsInfoStatusOk - }; - - enum WsInfoCallForwardMode { - /** callforward is enabled & forward to voicemail. */ - WsInfoCallForwardModeVoicemail, - - /** callforward is enabled & forward to given PSTN numbers. */ - WsInfoCallForwardModeNumber, - - /** callforward is disabled. */ - WsInfoCallForwardModeDisabled, - - /** callforward is unauthorized. */ - WsInfoCallForwardModeUnauthorized, - }; - - /** - * Default constructor. - * - * @param wengoAccount the WengoAccount used for web services - */ - WsInfo(WengoAccount * wengoAccount); - - /** - * An anwser about wengo's has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param wengos wengo's count - */ - Event wsInfoWengosEvent; - - /** - * An anwser about sms count has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param sms sms count - */ - Event wsInfoSmsCountEvent; - - /** - * An anwser about active mail has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param activeMail 1 if active, 0 if not - */ - Event wsInfoActiveMailEvent; - - /** - * An anwser about unread voice mail has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param voicemail unread voice mail count - */ - Event wsInfoVoiceMailEvent; - - /** - * An anwser about the landline number has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param number landline number - */ - Event wsInfoLandlineNumberEvent; - - /** - * An anwser about unread voice mail has been received. - * - * @param sender this class - * @param id unique identifier of the request - * @param status the request status (ok or error) - * @param voicemail if true forward to voice mail else to the given number - * @param dest1 first forward number - * @param dest2 second forward number (meaningfull only if voicemail is true) - * @param dest3 third forward number (meaningfull only if voicemail is true) - */ - Event wsCallForwardInfoEvent; - - /** - * An anwser active voice mail has been received. - * - * @param sender this class - * @param status the request status (ok or error) - * @param voicemail true if a voice mail is active - */ - Event wsInfoActiveVoiceMailEvent; - - /** - * Sets/unsets wengo's request. - * - * @param wengos if true enable wengo's request - */ - void getWengosCount(bool wengos); - - /** - * Sets/unsets sms count request. - * - * @param sms if true enable sms count request - */ - void getSmsCount(bool sms); - - /** - * Sets/unsets active mail request. - * - * @param mail if true enable active mail request - */ - void getActiveMail(bool mail); - - /** - * Sets/unsets voice mail count request. - * - * @param voicemail if true enable voice mail count request - */ - void getUnreadVoiceMail(bool voicemail); - - /** - * Sets/unsets call forward request. - * - * @param callForward if true enable call forward request - */ - void getCallForwardInfo(bool callForward); - - /** - * Sets/unsets landline number request. - * - * @param landlineNumber if true enable landline number request - */ - void getLandlineNumber(bool landlineNumber); - - /** - * Sends the request. - * - * @return unique request ID - */ - int execute(); - -private: - - /** - * @see WengoWebService - */ - void answerReceived(const std::string & answer, int id); - - /** Activates wengos count. */ - bool _wengosCount; - - /** Activates sms count. */ - bool _smsCount; - - /** Activates active mail request. */ - bool _activeMail; - - /** Activates unread voice mail count. */ - bool _unreadVoiceMail; - - /** Activates unread voice mail count. */ - bool _callForward; - - /** Activates landline number request. */ - bool _landlineNumber; - - static const std::string WENGOSCOUNT_TAG; - - static const std::string SMSCOUNT_TAG; - - static const std::string ACTIVEMAIL_TAG; - - static const std::string UNREADVOICEMAILCOUNT_TAG; - - static const std::string ACTIVEVOICEMAIL_TAG; - - static const std::string LANDLINENUMBER_TAG; - - static const std::string CALLFORWARD_TAG; - - static const std::string CALLFORWARD_MODE_TAG; - - static const std::string CALLFORWARD_TO_LANDLINE_DEST1_TAG; - - static const std::string CALLFORWARD_TO_LANDLINE_DEST2_TAG; - - static const std::string CALLFORWARD_TO_LANDLINE_DEST3_TAG; -}; - -#endif //OWWSINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/EnumSmsState.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/EnumSmsState.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/EnumSmsState.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/EnumSmsState.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWENUMSMSSTATE_H -#define OWENUMSMSSTATE_H - -#include - -/** - * SMS states. - * - * @author Mathieu Stute - */ -class EnumSmsState : public NonCopyable { -public: - - enum SmsState { - /** The SMS was not sent. */ - SmsStateError, - - /** The SMS was sent. */ - SmsStateOk - }; -}; - -#endif //OWENUMSMSSTATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/WsSms.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/WsSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/WsSms.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/WsSms.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WsSms.h" - -#include -#include -#include -#include -#include - -#include - -WsSms::WsSms(WengoAccount * wengoAccount, UserProfile & userProfile) - : WengoWebService(wengoAccount), - _userProfile(userProfile) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //Setup SMS web service - setHostname(config.getWengoServerHostname()); - setGet(true); - setHttps(true); - setServicePath(config.getWengoSMSPath()); - setPort(443); - setWengoAuthentication(true); -} - -int WsSms::sendSMS(const std::string & phoneNumber, const std::string & message) { - //Encode the message - String message2 = String::encodeUrl(message); - message2.replace("%2e", ".", false); - - String numbers = String::encodeUrl(phoneNumber); - setParameters("message=" + message2 + "&target=" + numbers); - - //Call the web service - int requestId = call(this); - - //History: create a History Memento for this outgoing SMS - HistoryMemento * memento = new HistoryMemento( - HistoryMemento::OutgoingSmsNok, phoneNumber, requestId, message); - _userProfile.getHistory().addMemento(memento); - - return requestId; -} - -void WsSms::answerReceived(const std::string & answer, int requestId) { - //TODO: replace this ugly "parsing" with a real XML parsing - static const std::string STATUS_UNAUTHORIZED = "401"; - static const std::string STATUS_OK = "200"; - - String tmp(answer); - - if (!tmp.empty()) { - if (tmp.contains(STATUS_OK) && !tmp.contains(STATUS_UNAUTHORIZED)) { - - //SMS sent - smsStatusEvent(*this, requestId, EnumSmsState::SmsStateOk); - - //History: retrieve the HistoryMemento & update its state to Ok - _userProfile.getHistory().updateSMSState(requestId, HistoryMemento::OutgoingSmsOk); - - WsInfo * wsInfo = _userProfile.getWsInfo(); - if (wsInfo) { - wsInfo->getWengosCount(true); - wsInfo->execute(); - } - return; - } - } - - //SMS unsent - smsStatusEvent(*this, requestId, EnumSmsState::SmsStateError); - - //History: retrieve the HistoryMemento & update its state to Nok - _userProfile.getHistory().updateSMSState(requestId, HistoryMemento::OutgoingSmsNok); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/WsSms.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/WsSms.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/sms/WsSms.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/sms/WsSms.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWSSMS_H -#define OWWSSMS_H - -#include "EnumSmsState.h" - -#include - -class UserProfile; - -/** - * Wengo SMS web service. - * - * Permits to send SMS. - * - * @author Mathieu Stute - */ -class WsSms : public WengoWebService { -public: - - /** Maximum SMS length = 150 characters. */ - static const unsigned SMS_MAX_LENGTH = 150; - - /** - * Default constructor. - * - * @param wengoAccount the WengoAccount used for web services - */ - WsSms(WengoAccount * wengoAccount, UserProfile & userProfile); - - virtual ~WsSms() {} - - /** - * Callback to check if the SMS was received or not. - * - * @param sender this class - * @param smsId SMS unique identifier - * @param state SMS status (ok or error) - */ - Event smsStatusEvent; - - /** - * Sends a SMS given a destination phone number and a message. - * - * @param phoneNumber phone that will receive the SMS - * @param message SMS message - * @return unique SMS ID - */ - int sendSMS(const std::string & phoneNumber, const std::string & message); - -private: - - void answerReceived(const std::string & answer, int requestId); - - UserProfile & _userProfile; -}; - -#endif //OWWSSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,136 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WsSoftUpdate.h" - -#include -#include - -#include - -#include -#include - -#include - -#include - -WsSoftUpdate::WsSoftUpdate(WengoAccount * wengoAccount) - : WengoWebService(wengoAccount) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //Setup the web service - setHostname(config.getWengoServerHostname()); - setGet(true); - setHttps(false); - - std::string path = config.getWengoSoftUpdatePath(); - -#ifdef OS_WINDOWS - path += "/windows.xml"; -#elif defined (OS_MACOSX) -#if defined (__BIG_ENDIAN__) - path += "/osx_ppc.xml"; -#else - path += "/osx_x86.xml"; -#endif -#elif defined (OS_LINUX) - path += "/linux.xml"; -#endif - - setServicePath(path); - setPort(80); - setWengoAuthentication(false); -} - -void WsSoftUpdate::checkForUpdate() { - /*std::string operatingSystem; - -#ifdef OS_WINDOWS - operatingSystem = "windows"; -#elif defined (OS_MACOSX) - #if defined (__BIG_ENDIAN__) - operatingSystem = "osx_ppc"; - #else - operatingSystem = "osx_x86"; - #endif -#elif defined (OS_LINUX) - operatingSystem = "linux"; -#endif - - setParameters(std::string("aro=qutecom") + - std::string("&installer_type=") + operatingSystem);*/ - - //Calls the web service - call(this); -} - -void WsSoftUpdate::answerReceived(const std::string & answer, int requestId) { - if (answer.empty()) { - return; - } - - unsigned long long buildId = 0; - std::string downloadUrl; - std::string version; - unsigned fileSize = 0; - - TiXmlDocument doc; - doc.Parse(answer.c_str()); - - TiXmlHandle docHandle(&doc); - - TiXmlHandle root = docHandle.FirstChild("softphone").FirstChild("version"); - - TiXmlText * text = root.FirstChild("build").FirstChild().Text(); - if (text) { - std::stringstream ss(std::string(text->Value())); - ss >> buildId; - } - - text = root.FirstChild("url").FirstChild().Text(); - if (text) { - downloadUrl = text->Value(); - } - - text = root.FirstChild("version_marketing").FirstChild().Text(); - if (text) { - version = text->Value(); - } - - text = root.FirstChild("filesize").FirstChild().Text(); - if (text) { - std::stringstream ss(std::string(text->Value())); - ss >> fileSize; - } - - - if ((WengoPhoneBuildId::getBuildId() != 0) && (buildId > WengoPhoneBuildId::getBuildId())) { - //A new version of WengoPhone is available and we don't have a developer version with buildid=0 - LOG_DEBUG("new WengoPhone version available=" + version + " buildid=" + String::fromUnsignedLongLong(buildId)); - - //File size in megabytes - fileSize = fileSize / 1000 / 1000; - - updateWengoPhoneEvent(*this, downloadUrl, buildId, version, fileSize); - } else { - LOG_DEBUG("WengoPhone is up-to-date"); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/softupdate/WsSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWSSOFTUPDATE_H -#define OWWSSOFTUPDATE_H - -#include - -/** - * WengoPhone update web service. - * - * Checks for the availability of WengoPhone updates. - * - * @author Tanguy Krotoff - */ -class WsSoftUpdate : public WengoWebService { -public: - - /** - * Default constructor. - * - * @param wengoAccount the WengoAccount used for web services - */ - WsSoftUpdate(WengoAccount * wengoAccount = 0); - - virtual ~WsSoftUpdate() {} - - /** - * Event WengoPhone should be updated. - * - * @param sender this class - * @param downloadUrl WengoPhone update download URL - * @param buildId WengoPhone update build ID - * @param version WengoPhone update version number - * @param fileSize WengoPhone update file size in kil bytes - */ - Event updateWengoPhoneEvent; - - /** - * Checks if a WengoPhone update is available. - */ - void checkForUpdate(); - -private: - - /** - * @see WengoWebService - */ - void answerReceived(const std::string & answer, int id); -}; - -#endif //OWWSSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/url/WsUrl.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/url/WsUrl.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/url/WsUrl.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/url/WsUrl.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WsUrl.h" - -#include - -#include -#include -#include - -#include -#include - -#include - -WengoAccount * WsUrl::_wengoAccount = NULL; - -static const char KEYWORD_DELIMITER = '@'; - -class KeywordMap { -public: - void addKeyword(const std::string& keyword, const std::string& value) { - _map[KEYWORD_DELIMITER + keyword + KEYWORD_DELIMITER] = value; - } - - std::string replaceKeywords(const std::string& text) { - String tmp = text; - Map::const_iterator - it = _map.begin(), - end = _map.end(); - for (; it!=end; ++it) { - tmp.replace(it->first, it->second); - } - return tmp; - } - -private: - typedef std::map Map; - Map _map; -}; - -static std::string keyFromPage(WsUrl::Page page) { - static std::map map; - if (map.empty()) { - map[WsUrl::Account] = Config::URL_ACCOUNT_KEY; - map[WsUrl::AccountCreation] = Config::URL_ACCOUNTCREATION_KEY; - map[WsUrl::FAQ] = Config::URL_FAQ_KEY; - map[WsUrl::Forum] = Config::URL_FORUM_KEY; - map[WsUrl::SmartDirectory] = Config::URL_INTERNALDIRECTORY_KEY; - map[WsUrl::CallOut] = Config::URL_CALLOUT_KEY; - map[WsUrl::SMS] = Config::URL_SMS_KEY; - map[WsUrl::VoiceMail] = Config::URL_VOICEMAIL_KEY; - map[WsUrl::BuyWengos] = Config::URL_BUYWENGOS_KEY; - map[WsUrl::PhoneNumber] = Config::URL_PHONENUMBER_KEY; - map[WsUrl::Wiki] = Config::URL_WIKI_KEY; - map[WsUrl::LostPassword] = Config::URL_LOSTPASSWORD_KEY; - map[WsUrl::Launchpad] = Config::URL_LAUNCHPAD_KEY; - map[WsUrl::Directory] = Config::URL_EXTERNALDIRECTORY_KEY; - } - return map[page]; -} - -std::string WsUrl::getPageUrl(Page page) { - std::string key = keyFromPage(page); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return config.getStringKeyValue(key); -} - -bool WsUrl::hasPage(Page page) { - std::string url = getPageUrl(page); - return !url.empty(); -} - -std::string WsUrl::getUrlWithoutAuth(const std::string & url) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - KeywordMap map; - map.addKeyword("lang", config.getLanguage()); - - std::string finalUrl = map.replaceKeywords(url); - return finalUrl; -} - -std::string WsUrl::getUrlWithAuth(const std::string & url) { - if (!_wengoAccount) { - LOG_WARN("no WengoAccount set, this method should not be called"); - return url; - } - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - KeywordMap map; - map.addKeyword("lang", config.getLanguage()); - map.addKeyword("login", _wengoAccount->getWengoLogin()); - map.addKeyword("password", _wengoAccount->getWengoPassword()); - - std::string finalUrl = map.replaceKeywords(url); - return finalUrl; -} - -void WsUrl::openWengoUrlWithoutAuth(const std::string & url) { - WebBrowser::openUrl(getUrlWithoutAuth(url)); -} - -void WsUrl::openWengoUrlWithAuth(const std::string & url) { - WebBrowser::openUrl(getUrlWithAuth(url)); -} - -std::string WsUrl::getWengoDirectoryUrl() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return getUrlWithoutAuth(config.getInternalDirectoryUrl()); -} - -void WsUrl::showWengoAccount() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithAuth(config.getAccountUrl()); -} - -void WsUrl::showWengoFAQ() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getFaqUrl()); -} - -void WsUrl::showWengoForum() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getForumUrl()); -} - -void WsUrl::showWengoSmartDirectory() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getExternalDirectoryUrl()); -} - -void WsUrl::showWengoAccountCreation() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getAccountCreationUrl()); -} - -void WsUrl::showWengoCallOut() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getCalloutUrl()); -} - -void WsUrl::showWengoSMS() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getSmsUrl()); -} - -void WsUrl::showWengoVoiceMail() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getVoiceMailUrl()); -} - -void WsUrl::showWengoBuyWengos() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithAuth(config.getBuyWengosUrl()); -} - -void WsUrl::showWengoDownload() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithAuth(config.getDownloadUrl()); -} - -void WsUrl::showWengoPhoneNumber() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithAuth(config.getPhoneNumberUrl()); -} - -void WsUrl::showWikiPage() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getWikiUrl()); -} - -void WsUrl::showLostPasswordPage() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - openWengoUrlWithoutAuth(config.getLostPasswordUrl()); -} - -void WsUrl::showLauchpadPage() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - WebBrowser::openUrl(config.getLaunchpadUrl()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/url/WsUrl.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/url/WsUrl.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/url/WsUrl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/url/WsUrl.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,184 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWSURL_H -#define OWWSURL_H - -#include - -#include - -class WengoAccount; - -/** - * Helper class that stores all the url related to Wengo. - * - * FIXME - * This class does not take a WengoAccount, it uses WengoPhone::instance - * which is a big hack. A real solution must be find for the implementation - * of openWengoUrlWithAuth(). Check WengoPhone::instance. - * It has been done in order to keep WsUrl methods static thus easier to use, - * I would like to keep them static since it is easier to use. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class WsUrl : NonCopyable { - friend class UserProfileHandler; -public: - enum Page { - Account, - AccountCreation, - FAQ, - Forum, - SmartDirectory, - CallOut, - SMS, - VoiceMail, - BuyWengos, - PhoneNumber, - Wiki, - LostPassword, - Launchpad, - Directory - }; - - static std::string getPageUrl(Page); - - static bool hasPage(Page); - - /** - * Opens a web browser and shows the Wengo account informations inside. - */ - static void showWengoAccount(); - - /** - * Opens a web browser and shows the Wengo account creation page. - */ - static void showWengoAccountCreation(); - - /** - * Opens a web browser and shows the Wengo help center page. - */ - static void showWengoFAQ(); - - /** - * Opens a web browser and shows the Wengo forum page. - */ - static void showWengoForum(); - - /** - * Opens a web browser and shows the Wengo smart directory page. - */ - static void showWengoSmartDirectory(); - - /** - * Opens a web browser and shows the Wengo callout page. - */ - static void showWengoCallOut(); - - /** - * Opens a web browser and shows the Wengo SMS page. - */ - static void showWengoSMS(); - - /** - * Opens a web browser and shows the Wengo voice mail page. - */ - static void showWengoVoiceMail(); - - /** - * Opens a web browser and shows the Wengo buy page. - */ - static void showWengoBuyWengos(); - - /** - * Opens a web browser and shows the Wengo download page. - */ - static void showWengoDownload(); - - /** - * Opens a web browser and shows the Wengo phone number associated with the Wengo account. - */ - static void showWengoPhoneNumber(); - - /** - * Opens a web browser and shows the Wengo wiki page. - */ - static void showWikiPage(); - - /** - * Opens a web browser and shows the lost password page. - */ - static void showLostPasswordPage(); - - /** - * Opens a web browser and shows launchpad OpenWengo page. - */ - static void showLauchpadPage(); - - /** - * Gets the Wengo directory url. - * - * @return Wengo directory url - */ - static std::string getWengoDirectoryUrl(); - -private: - - /** - * Opens a web browser with the given url. - * - * @param url the url to open - */ - static void openWengoUrlWithoutAuth(const std::string & url); - - /** - * Opens a web browser with the given url. - * - * @param url the url to open - */ - static void openWengoUrlWithAuth(const std::string & url); - - /** - * Gets url without authentication. - * - * @param url the url to transform - */ - static std::string getUrlWithoutAuth(const std::string & url); - - /** - * Gets url with authentication. - * - * @param url the url to transform - */ - static std::string getUrlWithAuth(const std::string & url); - - /** - * Sets the value of _wengoAccount. - */ - static void setWengoAccount(WengoAccount * wengoAccount) { - _wengoAccount = wengoAccount; - } - - /** Link to the current WengoAccount. */ - static WengoAccount * _wengoAccount; -}; - -#endif //OWWSURL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/WengoWebService.cpp qutecom-2.2+dfsg1/wengophone/src/model/webservices/WengoWebService.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/WengoWebService.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/WengoWebService.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoWebService.h" - -#include -#include -#include -#include - -#include - -WengoWebService::WengoWebService(WengoAccount * wengoAccount) - : _wengoAccount(wengoAccount) { - - _https = false; - _get = false; - _auth = false; - _port = 0; -} - -WengoWebService::~WengoWebService() { - -} - -void WengoWebService::setHttps(bool https) { - _https = https; -} - -void WengoWebService::setGet(bool get) { - _get = get; -} - -void WengoWebService::setHostname(const std::string & hostname) { - _hostname= hostname; -} - -void WengoWebService::setPort(int port) { - _port = port; -} - -void WengoWebService::setServicePath(const std::string & servicePath) { - _servicePath = servicePath; -} - -void WengoWebService::setParameters(const std::string & parameters) { - _parameters = parameters; -} - -void WengoWebService::setWengoAuthentication(bool auth) { - _auth = auth; -} - -int WengoWebService::sendRequest() { - HttpRequest * httpRequest = new HttpRequest(); - httpRequest->answerReceivedEvent += boost::bind(&WengoWebService::answerReceivedEventHandler, this, _1, _2, _3, _4); - return httpRequest->sendRequest(_https, _hostname, _port, _servicePath, _parameters, _get); -} - -int WengoWebService::call(WengoWebService * caller) { - //Set caller - _caller = caller; - - //Add wengo parameters - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string language = config.getLanguage(); - - std::string data = "lang=" + language; - data += "&wl=" + std::string(WengoPhoneBuildId::getSoftphoneName()); - - //Add authentication parameters - if ((_auth) && (_wengoAccount)) { - String login = String::encodeUrl(_wengoAccount->getWengoLogin()); - login.replace("%2e", ".", false); - String password = String::encodeUrl(_wengoAccount->getWengoPassword()); - password.replace("%2e", ".", false); - data += "&login=" + login + "&password=" + password; - } - - if (!_parameters.empty()) { - _parameters = data + "&" + _parameters; - } else { - _parameters = data; - } - - return sendRequest(); -} - -void WengoWebService::answerReceivedEventHandler(IHttpRequest * sender, int requestId, const std::string & answer, HttpRequest::Error error) { - if (_caller) { - if (error == HttpRequest::NoError) { - _caller->answerReceived(answer, requestId); - } else { - _caller->answerReceived(String::null, requestId); - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/WengoWebService.h qutecom-2.2+dfsg1/wengophone/src/model/webservices/WengoWebService.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/webservices/WengoWebService.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/webservices/WengoWebService.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOWEBSERVICE_H -#define OWWENGOWEBSERVICE_H - -#include -#include - -class WengoAccount; - -/** - * WengoWebService. - * - * Class helper to create web services easily. - * - * @author Mathieu Stute - */ -class WengoWebService : public Trackable { -public: - - /** - * Callback to check if the SMS was received or not. - * - * @param sender this class - * @param requestId request unique identifier - * @param answer the response returned by the web service - */ - Event answerReceivedEvent; - - /** - * Default constructor. - * - * @param wengoAccount the WengoAccount used for web services - */ - WengoWebService(WengoAccount * wengoAccount = NULL); - - virtual ~WengoWebService(); - - /** - * Set/unset https mode. - * - * @param https if true https else http - */ - void setHttps(bool https); - - /** - * Set/unset get mode - * @param get if true GET else POST - */ - void setGet(bool get); - - /** - * Set hostname - * @param hostname hostname - */ - void setHostname(const std::string & hostname); - - /** - * Set port - * @param port port - */ - void setPort(int port); - - /** - * Set service path - * @param servicePath the path to the service - */ - void setServicePath(const std::string & servicePath); - - /** - * Sets additionnal parameter. - * - * A string like : "name=toto&city=paris", - * no '?' at the begining of the string - * - * @param servicePath the path to the service - */ - void setParameters(const std::string & param); - - /** - * Set/unset wengo authentication. - * - * @param auth activate authentication if true - */ - void setWengoAuthentication(bool auth); - - /** - * Calls the web service. - * - * @param caller caller - */ - int call(WengoWebService * caller); - -protected: - - /** - * Sends a request to a web service. - * - * @param https if true this is a https request - * @param get if true this is a get request - * @param hostname hostname of the webservice - * @param port port - * @param servicePath path to the service - * @param additionalParameters additional parameters to the request - * @return unique request ID - */ - int sendRequest(); - - /** - * @see IHttpRequest::answerReceivedEvent - */ - void answerReceivedEventHandler(IHttpRequest * sender, int requestId, const std::string & answer, HttpRequest::Error error); - -private: - - /** - * Answer received callback. - * - * @param answer the answer to the request - * @param requestId the request id - */ - virtual void answerReceived(const std::string & answer, int requestId) = 0; - - /** WengoAccount: to get login & password */ - WengoAccount * _wengoAccount; - - /** https/http mode */ - bool _https; - - /** GET/POST mode */ - bool _get; - - /** use authentication mode */ - bool _auth; - - /** hostname of the web service */ - std::string _hostname; - - /** port of the web service */ - int _port; - - /** path of the web service */ - std::string _servicePath; - - /** parameters of the web service */ - std::string _parameters; - - /** caller */ - WengoWebService * _caller; -}; - -#endif //OWWENGOWEBSERVICE_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/WengoPhone.cpp qutecom-2.2+dfsg1/wengophone/src/model/WengoPhone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/WengoPhone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/WengoPhone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,175 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoPhone.h" - -#include -#include - -#include "commandserver/CommandServer.h" -#include "config/Config.h" -#include "config/ConfigManager.h" -#include "config/ConfigManagerFileStorage.h" -#include "dtmf/DtmfThemeManager.h" -#include "network/NetworkObserver.h" -#include "network/NetworkProxyDiscovery.h" - -#include "WengoPhoneBuildId.h" - -#include -#include -#include -#include -#include -#include - -#include - -WengoPhone::WengoPhone() { - - _enableSerialization = true; - - //set HttpRequest User Agent - std::stringstream ss; - ss << WengoPhoneBuildId::getSoftphoneName(); - ss << "-"; - ss << WengoPhoneBuildId::getVersion(); - ss << "-"; - ss << WengoPhoneBuildId::getBuildId(); - ss << "-"; - ss << WengoPhoneBuildId::getSvnRevision(); - HttpRequest::setUserAgent(ss.str()); - //// - - //Creating instance of NetworkObserver - NetworkObserver::getInstance(); - //// - - //Creating instance of NetworkProxyDiscovery - NetworkProxyDiscovery::getInstance(); - //// - - //Initialize libwebcam for the model thread. - WebcamDriver::apiInitialize(); - //// - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //Binding events - config.valueChangedEvent += boost::bind(&WengoPhone::valueChangedEventHandler, this, _1); - //// - - //Creating the UserProfileHandler instance - _userProfileHandler = new UserProfileHandler(); - //// - - //Creating instance of CommandServer - CommandServer::getInstance(*this); - //// -} - -void WengoPhone::exitAfterTimeout() { - exitEvent(*this); -} - -WengoPhone::~WengoPhone() { - // make sure WengoPhone::run() has terminated - Thread::terminate(); // should not be needed, but let's avoid potential deadlock - Thread::join(); - - //Deleting created objects - OWSAFE_DELETE(_userProfileHandler); - OWSAFE_DELETE(_dtmfThemeManager); - //// - saveConfiguration(); -} - -void WengoPhone::init() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //DTMFThemeManager - _dtmfThemeManager = new DtmfThemeManager(*this, config.getAudioSmileysDir()); - //Sends the DtmfThemeManager creation event - dtmfThemeManagerCreatedEvent(*this, *_dtmfThemeManager); - - _userProfileHandler->init(); - - //initFinishedEvent - initFinishedEvent(*this); -} - -void WengoPhone::run() { - init(); - - LOG_DEBUG("model thread is ready for events"); - - runEvents(); - - _userProfileHandler->uninit(); -} - -void WengoPhone::terminate() { - Thread::terminate(); -} - -void WengoPhone::prepareToTerminate() { - /** - * Set up a timeout triggered if SIP registering is too long - * so that closing WengoPhone is not too long. - */ - static Timer shutdownTimeout; - shutdownTimeout.timeoutEvent += boost::bind(&WengoPhone::exitAfterTimeout, this); - shutdownTimeout.start(3000, 3000); -} - -void WengoPhone::saveConfiguration() { - - if (_enableSerialization) { - ConfigManagerFileStorage configManagerStorage(ConfigManager::getInstance()); - configManagerStorage.save(); - } -} - -void WengoPhone::valueChangedEventHandler(const std::string & key) { - saveConfiguration(); -} - -CoIpManager * WengoPhone::getCoIpManager() const { - CoIpManager *result = NULL; - UserProfile *userProfile = _userProfileHandler->getCurrentUserProfile(); - - if (userProfile) { - result = &userProfile->getCoIpManager(); - } - - return result; -} - -void WengoPhone::enableSerialization(bool enable) { - _enableSerialization = enable; - _userProfileHandler->enableAutoSave(enable); -} - -void WengoPhone::setStartupCall(const std::string& call) { - _startupCall = call; -} - -std::string WengoPhone::getStartupCall() const { - return _startupCall; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/WengoPhone.h qutecom-2.2+dfsg1/wengophone/src/model/WengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/model/WengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/model/WengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,177 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOPHONE_H -#define OWWENGOPHONE_H - -#include - -#include -#include -#include - -#include - -class CoIpManager; -class ConfigImporter; -class DtmfThemeManager; -class UserProfile; -class UserProfileHandler; - -/** - * @defgroup model Model Component - * - * The model component is the heart of WengoPhone, it implements all the basic functionnalities - * above the SIP stack like the ContactList, the History, it handles SIP accounts and more. - * It contains all the 'intelligence' of WengoPhone. - * The model is developped in pure C++ inside libraries like LibUtil, Boost, TinyXML and Curl. - * - * The model component communicates only with the control component via the desgin - * pattern observer implemented inside LibUtil with the class Event. - */ - -/** - * Entry point of the application. - * - * Design Pattern Mediator. - * - * This class starts the model thread. - * 2 threads are running: the model (including the control) and the presentation. - * Thus the presentation component can be loaded and showed to the user - * even before everything is ready. - * - * @ingroup model - * @author Tanguy Krotoff - */ -class WengoPhone : public Singleton, public Thread, public Trackable { - friend class Singleton; -public: - - /** - * Initialization step is finished (i.e we exit the init() method. - * - * @param sender this class - */ - Event initFinishedEvent; - - /** - * Application should be closed. - * - * This event goes to the presentation layer and the presentation layer - * should exit the application. - * - * @param sender this class - */ - Event exitEvent; - - /** - * Dtmf Theme Manager has been created. - * - * @param sender this class - * @param dtfmThemeManager DtfmThemeManager created - */ - Event dtmfThemeManagerCreatedEvent; - - /** - * Gets the UserProfileHandler. - */ - UserProfileHandler & getUserProfileHandler() { - return *_userProfileHandler; - } - - /** - * Gets the CoIpManager. - */ - CoIpManager * getCoIpManager() const; - - /** - * Prepares the model to terminate. - * - * Starts a 3 seconds timer that will launch exitEvent. - * - * @see terminate() - */ - void prepareToTerminate(); - - /** - * Terminates the model component thread i.e this thread. - * - * This method should be called when you exit definitly WengoPhone. - * You cannot call start() then terminate() several times. - */ - void terminate(); - - /** - * Starts the thread of the model component. - */ - virtual void run(); - - /** - * Enable/disable data serialization. - * @param enable if True serialization is activated. - */ - void enableSerialization(bool enable); - - /** - * Store the phone number/sip address for a call which was requested on - * startup (for example from the command line) - */ - void setStartupCall(const std::string& call); - - std::string getStartupCall() const; - -private: - - WengoPhone(); - - virtual ~WengoPhone(); - - /** - * Entry point of the application, equivalent to main(). - */ - void init(); - - /** - * Saves the Configuration. - */ - void saveConfiguration(); - - /** - * @see Settings::valueChangedEvent - */ - void valueChangedEventHandler(const std::string & key); - - /** - * Emergency timeout handler called when SIP unregistering - * is not quick enough or timed out. - */ - void exitAfterTimeout(); - - UserProfileHandler * _userProfileHandler; - - /** DtmfThemeManager. */ - DtmfThemeManager * _dtmfThemeManager; - - /** configuration serialization and UserProfileHandler autosave. */ - bool _enableSerialization; - - std::string _startupCall; -}; - -#endif //OWWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkFactory.h qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef GTKFACTORY_H -#define GTKFACTORY_H - -#include "presentation/PFactory.h" -#include "GtkWengoPhone.h" -#include "control/CWengoPhone.h" -#include "phoneline/GtkPhoneLine.h" -#include "control/phoneline/CPhoneLine.h" - -#include - -class GtkFactory : public PFactory { -public: - - GtkFactory(int argc, char * argv[]) { - gtk_init(& argc, & argv); - } - - int exec() { - gtk_main(); - return EXIT_SUCCESS; - } - - PWengoPhone * createPresentationWengoPhone(CWengoPhone * cWengoPhone) { - return new GtkWengoPhone(cWengoPhone); - } - - PPhoneLine * createPresentationPhoneLine(CPhoneLine * cPhoneLine) { - return new GtkPhoneLine(cPhoneLine); - } - - PPhoneCall * createPresentationPhoneCall(CPhoneCall * cPhoneCall) { - //return new GtkPhoneCall(cPhoneCall); - return NULL; - } - - PWengoPhoneLogger * createPresentationLogger(CWengoPhoneLogger * cWengoPhoneLogger) { - return NULL; - } - - PContactList * createPresentationContactList(CContactList * cContactList) { - return NULL; - } - - PContactGroup * createPresentationContactGroup(CContactGroup * cContactGroup) { - return NULL; - } - - PContact * createPresentationContact(CContact * cContact) { - return NULL; - } -}; - -#endif //GTKFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "GtkWengoPhone.h" - -#include "control/CWengoPhone.h" - -#include "WidgetFactory.h" - -static bool delete_event(GtkWidget *, GdkEvent *, gpointer) { - return false; -} - -static void destroy(GtkWidget *, gpointer) { - gtk_main_quit(); -} - -GtkWengoPhone::GtkWengoPhone(CWengoPhone * cWengoPhone) { - _cWengoPhone = cWengoPhone; - - WidgetFactory factory("wengophone.glade"); - factory.signalAutoConnect(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.h qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef GTKWENGOPHONE_H -#define GTKWENGOPHONE_H - -#include "presentation/PWengoPhone.h" - -#include - -class CWengoPhone; -class PPhoneLine; - -class GtkWengoPhone : public PWengoPhone { -public: - - GtkWengoPhone(CWengoPhone * cWengoPhone); - - void addPhoneLine(PPhoneLine * phoneLine) { - } - - void showCreateAccountWindow() { - } - - void updatePresentation() { - } - -private: - - void initThreadSafe() { - } - - void updatePresentationThreadSafe() { - } - - void addPhoneLineThreadSafe(PPhoneLine * pPhoneLine) { - } - - CWengoPhone * _cWengoPhone; - - GtkWidget * _mainWindow; -}; - -#endif //GTKWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "GtkWengoPhoneLogger.h" - -#include "GtkWengoPhone.h" -#include "control/CWengoPhone.h" - -GtkWengoPhoneLogger::GtkWengoPhoneLogger(CWengoPhoneLogger * cWengoPhoneLogger) { - _cWengoPhoneLogger = cWengoPhoneLogger; - - initThreadSafe(); -} - -void GtkWengoPhoneLogger::initThreadSafe() { - _loggerWidget = WidgetFactory::create(":/forms/WengoPhoneLoggerWidget.ui", NULL); - - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cWengoPhoneLogger->getCWengoPhone()->getPresentation(); - qtWengoPhone->setLogger(this); -} - -void GtkWengoPhoneLogger::addMessage(const std::string & message) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtWengoPhoneLogger::addMessageThreadSafe, this, _1), message); - postEvent(event); -} - -void GtkWengoPhoneLogger::addMessageThreadSafe(std::string message) { - static QListWidget * listWidget = Object::findChild(_loggerWidget, "listWidget"); - - listWidget->addItem(message.c_str()); - listWidget->scrollToItem(listWidget->item(listWidget->count() - 1)); -} - -void GtkWengoPhoneLogger::updatePresentation() { -} - -void GtkWengoPhoneLogger::updatePresentationThreadSafe() { -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.h qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/GtkWengoPhoneLogger.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef GTKWENGOPHONELOGGER_H -#define GTKWENGOPHONELOGGER_H - -#include "control/CWengoPhoneLogger.h" -#include "presentation/PWengoPhoneLogger.h" - -/** - * GTK+ Presentation component for WengoPhoneLogger. - * - * @author Tanguy Krotoff - */ -class GtkWengoPhoneLogger : public PWengoPhoneLogger { -public: - - GtkWengoPhoneLogger(CWengoPhoneLogger * cWengoPhoneLogger); - - void updatePresentation(); - - void addMessage(const std::string & message); - -private: - - void initThreadSafe(); - - void updatePresentationThreadSafe(); - - void addMessageThreadSafe(std::string message); - - CWengoPhoneLogger * _cWengoPhoneLogger; -}; - -#endif //GTKWENGOPHONELOGGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "GtkPhoneLine.h" - -#include "control/phoneline/CPhoneLine.h" - -GtkPhoneLine::GtkPhoneLine(CPhoneLine* cPhoneLine) { - _cPhoneLine = cPhoneLine; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/phoneline/GtkPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef GTKPHONELINE_H -#define GTKPHONELINE_H - -#include "presentation/PPhoneLine.h" - -class CPhoneLine; - -class GtkPhoneLine : public PPhoneLine { -public: - - GtkPhoneLine(CPhoneLine* cPhoneLine); - - void updatePresentation() { - } - - void setState(const std::string & status) { - } - -private: - - void initThreadSafe() { - } - - void updatePresentationThreadSafe() { - } - - CPhoneLine * _cPhoneLine; -}; - -#endif //GTKPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/wengophone.glade qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/wengophone.glade --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/wengophone.glade 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/wengophone.glade 1970-01-01 00:00:00.000000000 +0000 @@ -1,518 +0,0 @@ - - - - - - - True - WengoPhone - GTK_WINDOW_TOPLEVEL - GTK_WIN_POS_NONE - False - True - False - True - False - False - GDK_WINDOW_TYPE_HINT_NORMAL - GDK_GRAVITY_NORTH_WEST - True - - - - True - False - 0 - - - - True - True - True - True - GTK_POS_TOP - False - False - - - - True - label6 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - False - True - - - - - - True - Home - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - True - GTK_POLICY_ALWAYS - GTK_POLICY_ALWAYS - GTK_SHADOW_IN - GTK_CORNER_TOP_LEFT - - - - True - True - True - False - False - True - False - False - False - - - - - False - True - - - - - - True - Debug - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - label7 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - False - True - - - - - - True - Contacts - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - 4 - 3 - False - 0 - 0 - - - - True - True - 1 - True - GTK_RELIEF_NORMAL - True - - - 0 - 1 - 0 - 1 - fill - - - - - - - True - True - 2 abc - True - GTK_RELIEF_NORMAL - True - - - 1 - 2 - 0 - 1 - fill - - - - - - - True - True - 3 def - True - GTK_RELIEF_NORMAL - True - - - 2 - 3 - 0 - 1 - fill - - - - - - - True - True - 4 ghi - True - GTK_RELIEF_NORMAL - True - - - 0 - 1 - 1 - 2 - fill - - - - - - - True - True - 5 jkl - True - GTK_RELIEF_NORMAL - True - - - 1 - 2 - 1 - 2 - fill - - - - - - - True - True - 6 mno - True - GTK_RELIEF_NORMAL - True - - - 2 - 3 - 1 - 2 - fill - - - - - - - True - True - 7 pqrs - True - GTK_RELIEF_NORMAL - True - - - 0 - 1 - 2 - 3 - fill - - - - - - - True - True - 8 tuv - True - GTK_RELIEF_NORMAL - True - - - 1 - 2 - 2 - 3 - fill - - - - - - - True - True - 9 wxyz - True - GTK_RELIEF_NORMAL - True - - - 2 - 3 - 2 - 3 - fill - - - - - - - True - True - * - True - GTK_RELIEF_NORMAL - True - - - 0 - 1 - 3 - 4 - fill - - - - - - - True - True - 0 + - True - GTK_RELIEF_NORMAL - True - - - 1 - 2 - 3 - 4 - fill - - - - - - - True - True - # - True - GTK_RELIEF_NORMAL - True - - - 2 - 3 - 3 - 4 - fill - - - - - - False - True - - - - - - True - Dialpad - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - - True - label8 - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - False - True - - - - - - True - History - False - False - GTK_JUSTIFY_LEFT - False - False - 0.5 - 0.5 - 0 - 0 - PANGO_ELLIPSIZE_NONE - -1 - False - 0 - - - tab - - - - - 0 - True - True - - - - - - True - True - - - 0 - False - False - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/WidgetFactory.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/WidgetFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/WidgetFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/WidgetFactory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,38 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WidgetFactory.h" - -#include - -WidgetFactory::WidgetFactory(const std::string & gladeFile) { - _xml = glade_xml_new(gladeFile.c_str(), NULL, NULL); - assert(_xml && "libglade error: can't load the .glade file"); -} - -GtkWidget * WidgetFactory::getWidget(const std::string & widgetName) { - GtkWidget * widget = glade_xml_get_widget(_xml, widgetName.c_str()); - assert(widget && "libglade error: can't get the widget"); - - return widget; -} - -void WidgetFactory::signalAutoConnect() { - glade_xml_signal_autoconnect(_xml); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/WidgetFactory.h qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/WidgetFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/gtk/WidgetFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/gtk/WidgetFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef WIDGETFACTORY_H -#define WIDGETFACTORY_H - -#include - -#include -#include - -#include - -class WidgetFactory { -public: - - WidgetFactory(const std::string & gladeFile); - - /** - * Gets a widget (useful if you want to change something). - * - * @param widgetName name of the widget to retrieve - * @return GtkWidget (never NULL: it makes an assert) - */ - GtkWidget * getWidget(const std::string & widgetName); - - /** - * Connects signal handlers. - */ - void signalAutoConnect(); - -private: - - GladeXML * _xml; -}; - -#endif //WIDGETFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/main.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,374 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#ifdef GTKINTERFACE - #include -#else - #include - #include -#endif - -#include -#include -#include - -#include - -#ifdef PHAPIWRAPPER - #include - #include <../src/null/NullIMFactory.h> -#elif defined(SIPXWRAPPER) - #include - #include -#elif defined (MULTIIMWRAPPER) - #include - #include - #include -#else - #include - #include -#endif - -#include -#include -#include -#include -#include - -#include - -#include - -#include - -#if defined(ENABLE_CRASHREPORT) -#if defined(CC_MSVC) - #include -#elif defined(CC_MINGW) - #include -#elif defined(OS_LINUX) - #include -#elif defined(OS_MACOSX) - #include -#endif -#endif // ENABLE_CRASHREPORT - -#if defined(OS_MACOSX) || defined(OS_LINUX) - #include - #include -#endif - -#include - -#include - -#include - -#if defined(OS_LINUX) - #include -#endif - -static const char* CONFIG_SUBDIR = "/config/"; - - -/** - * Helper class to instantiate and delete factories based on the compilation - * flags. - */ -struct FactoryHelper { - FactoryHelper() { - #ifdef SIPXWRAPPER - _sipFactory = new SipXFactory(); - _imFactory = new NullIMFactory(); - - #elif defined(PHAPIWRAPPER) - _sipFactory = new PhApiFactory(); - _imFactory = new NullIMFactory(); - - #elif defined(MULTIIMWRAPPER) - PhApiFactory* phApiFactory = new PhApiFactory(); - _sipFactory = phApiFactory; - _purpleIMFactory = new PurpleIMFactory(); - _imFactory = new MultiIMFactory(*phApiFactory, *_purpleIMFactory); - - #else - _sipFactory = new NullSipFactory(); - _imFactory = new NullIMFactory(); - #endif - - SipWrapperFactory::setFactory(_sipFactory); - IMWrapperFactory::setFactory(_imFactory); - } - - ~FactoryHelper() { - OWSAFE_DELETE(_sipFactory); - OWSAFE_DELETE(_imFactory); - - #ifdef MULTIIMWRAPPER - OWSAFE_DELETE(_purpleIMFactory); - #endif - } - - IMWrapperFactory * _imFactory; - SipWrapperFactory * _sipFactory; - -#if defined(MULTIIMWRAPPER) - PurpleIMFactory* _purpleIMFactory; -#endif - -}; - - -/** - * Stub function to make GCC silent. - * - * @see http://www-eleves-isia.cma.fr/documentation/BoostDoc/boost_1_29_0/libs/test/doc/minimal.htm - */ -int test_main(int argc, char *argv[]) { - return 1; -} - -static void initLogger(const std::string& userConfigDir) { - std::string logFileName = userConfigDir + BINARY_NAME + ".log"; - // create directory if it doesn't exist - if (!File::exists(userConfigDir)) { - File::createPath(userConfigDir); - } - if (!File::isDirectory(userConfigDir)) { - LOG_FATAL("User configuration dir '" + userConfigDir + "' does not exist or is not a directory"); - } - - Logger::getInstance()->setLogFileName(logFileName); -} - -static void initConfig(const CommandLineParser& cmdLineParser) { - ConfigManagerFileStorage configManagerStorage(ConfigManager::getInstance()); - - std::string resourcesDir = cmdLineParser.getResourcesDir(); - if (!File::isDirectory(resourcesDir)) { - LOG_FATAL("Resources dir '" + resourcesDir + "' does not exist or is not a directory"); - } - - std::string userConfigDir = cmdLineParser.getUserConfigDir(); - configManagerStorage.loadSystemConfig(resourcesDir + CONFIG_SUBDIR); - Config::setConfigDir(userConfigDir); - ConfigImporter importer; - importer.importConfig(); - configManagerStorage.loadUserConfig(userConfigDir); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.setResourcesDir(resourcesDir); - WebBrowser::setBrowser(config.getLinuxPreferedBrowser()); -} - -static void registerHyperlinkProtocol(const Config& config, const std::string& executableName) { - RegisterProtocol registerProtocol(config.getHyperlinkProtocol()); - std::string executableFullName = Path::getApplicationDirPath() + executableName; - registerProtocol.bind(executableFullName + " -c %1", executableFullName + ",0", config.getCompanyWebSiteUrl()); -} - -/** - * Callback additional info for MemoryDump. - */ -std::string getAdditionalInfo() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::stringstream stream; - stream - << "User: " << config.getProfileLastUsedName() << std::endl - << "buildid: " << WengoPhoneBuildId::getBuildId() << std::endl - << "revision: " << WengoPhoneBuildId::getSvnRevision() << std::endl; - return stream.str(); -} - -#if defined(OS_MACOSX) || defined(OS_LINUX) -static void sigpipe_catcher(int sig) { -#ifndef NDEBUG - // Do not use LOG_DEBUG. There is only a limited set of functions you are - // allowed to call from withing a signal catcher. See signal man page. - static char msg[] = "Caught signal: SIGPIPE\n"; - write(2, msg, sizeof(msg)); -#endif -} -#endif - -int main(int argc, char * argv[]) { - //Init presentation factories before parsing the command line so that Qt or - //Gtk get a chance to parse their command line options ('-style' for Qt for - //example) - int nocrashreport = 0; -#if defined(OS_MACOSX) - std::locale lc; -#else - std::locale lc(""); -#endif - std::locale::global(lc); - - PFactory * pFactory = NULL; -#if defined(OS_LINUX) - XInitThreads(); -#endif - -#ifdef GTKINTERFACE - pFactory = new GtkFactory(argc, argv); -#else - pFactory = new QtFactory(argc, argv); -#endif - -#if defined(OS_MACOSX) - QDir dir(QApplication::applicationDirPath()); - dir.cdUp(); - dir.cd("plugins"); - QApplication::setLibraryPaths(QStringList(dir.absolutePath())); -#endif - - PFactory::setFactory(pFactory); - - CommandLineParser cmdLineParser(BINARY_NAME, argc, argv); - initLogger(cmdLineParser.getUserConfigDir()); - LOG_DEBUG("Started"); - -#if defined(OS_MACOSX) || defined(OS_LINUX) - signal(SIGPIPE, sigpipe_catcher); -#endif - - // Setup factories. These must be initialized before loading config because - // it's used when importing configuration from the Classic version. - FactoryHelper factoryHelper; - - initConfig(cmdLineParser); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - SipWrapper* w = factoryHelper._sipFactory->createSipWrapper(); - - w->setSipOptions("sip.register_timeout", QString::number(config.getSipRegisterTimeOut()).toStdString()); - w->setSipOptions("sip.publish_timeout", QString::number(config.getSipPublishTimeOut()).toStdString()); - if(config.getSipUseOptions()) - w->setSipOptions("sip.use_options_request", "true"); - else - w->setSipOptions("sip.use_options_request", "false"); - - if(config.getSipP2pPresence()) - w->setSipOptions("sip.p2p_presence", "true"); - else - w->setSipOptions("sip.p2p_presence", "false"); - - if(config.getSipChatWithoutPresence()) - w->setSipOptions("sip.chat.without.presence", "true"); - else - w->setSipOptions("sip.chat.without.presence", "false"); - - if(config.getSipUseTypingState()) - w->setSipOptions("sip.use_typing_state", "true"); - else - w->setSipOptions("sip.use_typing_state", "false"); - - - //Remove WengoPhone Classic from startup registry - ClassicExterminator::killClassicExecutable(); - - //Remove WengoPhone Classic from startup registry - ClassicExterminator::removeClassicFromStartup(); - -#ifdef ENABLE_CRASHREPORT - for(int i = 1; i < argc; i++) { - if (!strcmp(argv[i], "-nocrash")) { - nocrashreport = 1; - break; - } - } - - if (!nocrashreport) { - #if defined(CC_MSVC) - MSVCMemoryDump * memoryDump = new MSVCMemoryDump("QuteCom", WengoPhoneBuildId::getSvnRevision()); - // This is needed for CRT to not show dialog for invalid param - // failures and instead let the code handle it. - _CrtSetReportMode(_CRT_ASSERT, 0); - #endif - - #if defined(OS_MACOSX) - MACMemoryDump * memoryDump = new MACMemoryDump("QuteCom", WengoPhoneBuildId::getSvnRevision()); - #endif - - #if defined(OS_LINUX) - UNIXMemoryDump * memoryDump = new UNIXMemoryDump("QuteCom", WengoPhoneBuildId::getSvnRevision()); - #endif - - memoryDump->setGetAdditionalInfo(getAdditionalInfo); - } - -#endif // ENABLE_CRASHREPORT - - // Uncomment to test crash report - - /*int* pointer; - pointer = 0; - *pointer = 12;*/ - - - //No 2 qtwengophone at the same time - if (Processes::isRunning(BINARY_NAME) && !cmdLineParser.isSeveralWengoPhoneAllowed()) { - const std::string callFromCommandLine = cmdLineParser.getCommand(); - CommandClient client; - client.connect(); - if (!callFromCommandLine.empty()) { - client.call(callFromCommandLine); - } else { - client.bringToFront(); - } - return EXIT_SUCCESS; - } - - // Register protocol used to associate the application in HTML links - registerHyperlinkProtocol(config, cmdLineParser.getExecutableName()); - - // Make the application starts when user logs on computer - StartupSettingListener settingListener(cmdLineParser.getExecutableName()); - - // Init file system resource engine - FSResourceFileEngineHandler handler(QString::fromStdString(config.getResourcesDir())); - - // CWengoPhone creates PWengoPhone (QtWengoPhone, GtkWengoPhone...) - // and then starts the model thread. This way the gui is shown as soon as - // possible - WengoPhone & wengoPhone = WengoPhone::getInstance(); - wengoPhone.setStartupCall(cmdLineParser.getCommand()); - CWengoPhone cWengoPhone(wengoPhone, cmdLineParser.getRunInBackground()||config.getGeneralStartBackgroundMode()); - pFactory->exec(); - - WengoPhone::deleteInstance(); - LOG_DEBUG("Ended"); - - return EXIT_SUCCESS; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PChatHandler.h qutecom-2.2+dfsg1/wengophone/src/presentation/PChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PChatHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PChatHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPCHATHANDLER_H -#define OWPCHATHANDLER_H - -#include - -class IMChatSession; - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class PChatHandler : public Presentation { -public: - - /** - * @see ChatHandler::newIMChatSessionCreatedEvent - */ - virtual void newIMChatSessionCreatedEvent(IMChatSession & imChatSession) = 0; - - virtual void deletePresentation() = 0; -}; - -#endif //OWPCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PConferenceCall.h qutecom-2.2+dfsg1/wengophone/src/presentation/PConferenceCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PConferenceCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PConferenceCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPCONFERENCECALL_H -#define OWPCONFERENCECALL_H - -#include "Presentation.h" - -#include - -class CConferenceCall; - -/** - * Graphical representation of a ConferenceCall. - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PConferenceCall : public Presentation { -public: - - virtual CConferenceCall & getCConferenceCall() const = 0; - - /** - * @see ConferenceCall::stateChangedEvent - */ - virtual void stateChangedEvent(EnumConferenceCallState::ConferenceCallState state) = 0; - - /** - * @see ConferenceCall::phoneCallAddedEvent - */ - virtual void phoneCallAddedEvent(CPhoneCall & cPhoneCall) = 0; - - /** - * @see ConferenceCall::phoneCallRemovedEvent - */ - virtual void phoneCallRemovedEvent(CPhoneCall & cPhoneCall) = 0; -}; - -#endif //OWPCONFERENCECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PContactList.h qutecom-2.2+dfsg1/wengophone/src/presentation/PContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PContactList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPCONTACTLIST_H -#define OWPCONTACTLIST_H - -#include "Presentation.h" - -#include - -/** - * - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PContactList : public Presentation { -public: - - /** - * A toaster must be showed with a contact description inside. - * - * FIXME not finished yet - * - * @param contactId contact UUID to show - */ - //Event showToaster; - - /** - * Called by the control when a group has been added. - * - * @param contactGroupId the contact group UUID - */ - virtual void contactGroupAddedEvent(const std::string & groupId) = 0; - - /** - * Called by the control when a group has been removed. - * - * @param contactGroupId the contact group UUID - */ - virtual void contactGroupRemovedEvent(const std::string & groupId) = 0; - - /** - * Called by the control when a group has been renamed. - * - * @param contactGroupId the contact group UUID - */ - virtual void contactGroupRenamedEvent(const std::string & groupId) = 0; - - /** - * Called by the control when a contact has been added. - * - * @param contactId the contact UUID - */ - virtual void contactAddedEvent(const std::string & contactId) = 0; - - /** - * Called by the control when a contact has been removed. - * - * @param contactId the contact UUID - */ - virtual void contactRemovedEvent(const std::string & contactId) = 0; - - /** - * Called by the control when a contact has moved. - * - * @param dstGroupId the contact group UUID - * @param srcGroupId the contact group UUID - * @param contactId the contact UUID - */ - virtual void contactMovedEvent(const std::string & dstGroupId, - const std::string & srcGroupId, const std::string & contactId) = 0; - - /** - * Called by the control when a contact has changed. - * - * @param contactId the UUID of the changed Contact - */ - virtual void contactChangedEvent(const std::string & contactId) = 0; -}; - -#endif //OWPCONTACTLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PFactory.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/PFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PFactory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,22 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "PFactory.h" - -PFactory * PFactory::_factory = 0; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PFactory.h qutecom-2.2+dfsg1/wengophone/src/presentation/PFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPFACTORY_H -#define OWPFACTORY_H - -class CWengoPhone; -class PWengoPhone; -class CPhoneLine; -class PPhoneLine; -class CPhoneCall; -class PPhoneCall; -class CContactList; -class PContactList; -class CContactGroup; -class PContactGroup; -class CContact; -class PContact; -class CConnectHandler; -class PConnectHandler; -class CPresenceHandler; -class PPresenceHandler; -class CChatHandler; -class PChatHandler; -class PSms; -class CSms; -class PHistory; -class CHistory; -class PSoftUpdate; -class CSoftUpdate; -class PUserProfile; -class CUserProfile; -class PUserProfileHandler; -class CUserProfileHandler; -class PConferenceCall; -class CConferenceCall; -class CDtmfThemeManager; - -class IThreadEvent; - -/** - * Factories for the presentation component. - * - * Depending on the factory instanciated, the presentation component will use Qt, GTK+ - * or what ever you prefer. - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PFactory { -public: - - /** - * Sets the PresentationFactory to use (Qt or GTK+ in this case). - * - * @param factory factory to create the presentation component - */ - static void setFactory(PFactory * factory) { - _factory = factory; - } - - static PFactory & getFactory() { - return * _factory; - } - - virtual ~PFactory() { - delete _factory; - } - - virtual PWengoPhone * createPresentationWengoPhone(CWengoPhone & cWengoPhone, bool runInBackground) = 0; - - virtual PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile) = 0; - - virtual PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) = 0; - - virtual PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine) = 0; - - virtual PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall) = 0; - - virtual PContactList * createPresentationContactList(CContactList & cContactList) = 0; - - virtual PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler) = 0; - - virtual PSms * createPresentationSms(CSms & cSms) = 0; - - virtual PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) = 0; - - virtual PHistory * createPresentationHistory(CHistory & cHistory) = 0; - - virtual PConferenceCall * createPresentationConferenceCall(CConferenceCall & cConferenceCall) = 0; - - //DtmfThemeManager - virtual void createPresentationDtmfThemeManager(CDtmfThemeManager & _dtmfThemeManager) = 0; - - /** - * Because of the presentation event loop. - * - * @see QApplication::exec() - */ - virtual int exec() = 0; - - /** Processes all pending events of the presentation. */ - virtual void processEvents() = 0; - - /** Reset the factory. */ - virtual void reset() = 0; - - /** @see QApplication::postEvent() */ - static void postEvent(IThreadEvent * event) { - _factory->postEventImpl(event); - } - -protected: - - virtual void postEventImpl(IThreadEvent * event) = 0; - -private: - - static PFactory * _factory; -}; - -#endif //OWPFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PHistory.h qutecom-2.2+dfsg1/wengophone/src/presentation/PHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PHistory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PHistory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPHISTORY_H -#define OWPHISTORY_H - -#include "Presentation.h" - -/** - * - * @ingroup presentation - * @author Mathieu Stute - */ -class PHistory : public Presentation { -public: - - virtual void historyLoadedEvent() = 0; - - virtual void mementoAddedEvent(unsigned id) = 0; - - virtual void mementoUpdatedEvent(unsigned id) = 0; - - virtual void mementoRemovedEvent(unsigned id) = 0; - - virtual void unseenMissedCallsChangedEvent(int count) = 0; -}; - -#endif //OWPHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PPhoneCall.h qutecom-2.2+dfsg1/wengophone/src/presentation/PPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PPhoneCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPPHONECALL_H -#define OWPPHONECALL_H - -#include "Presentation.h" - -#include - -#include - -class CPhoneCall; - -/** - * Graphical representation of a PhoneCall. - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PPhoneCall : public Presentation { -public: - - virtual CPhoneCall & getCPhoneCall() const = 0; - - /** - * @see PhoneCall::stateChangedEvent - */ - virtual void stateChangedEvent(EnumPhoneCallState::PhoneCallState state) = 0; - - /** - * @see PhoneCall::videoFrameReceivedEvent - */ - virtual void videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame) = 0; - - /** - * The phone call has been closed, widget must be closed/destroyed. - */ - virtual void close() = 0; -}; - -#endif //OWPPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/presentation/PPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PPHONELINE_H -#define PPHONELINE_H - -#include "Presentation.h" - -#include - -#include - -#include - -class CPhoneCall; - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PPhoneLine : public Presentation { -public: - - /** - * @see PhoneLine::stateChangedEvent - */ - Event stateChangedEvent; - - /** - * @see PhoneLine::phoneCallCreatedEvent - */ - Event phoneCallCreatedEvent; - - /** - * @see PhoneLine::phoneCallClosedEvent - */ - Event phoneCallClosedEvent; -}; - -#endif //PPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/Presentation.h qutecom-2.2+dfsg1/wengophone/src/presentation/Presentation.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/Presentation.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/Presentation.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPRESENTATION_H -#define OWPRESENTATION_H - -#include - -/** - * @defgroup presentation Presentation Component - * - * The presentation includes all the classes implementing the graphical interface. - * Different graphical interfaces can be implemented (Qt, GTK+...). - * - * The control component dialogs with the presentation via interfaces. - * On the other hand the presentation dialogs directly with the control component. - * - * All classes inside the presentation component are named using a leading 'P' letter and - * are inside the subdirectory presentation. - * - * Classes specific to the Qt graphical interface are inside the directory qt, - * classes specific to the GTK+ graphical interface are inside the directory gtk ect... - */ - -/** - * Interface between the control component and the presentation component. - * - * The control component deals with the presentation component only via - * this interface and its subclass. Thus control and presentation - * are totally separated. - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class Presentation : Interface { -public: - - virtual ~Presentation() { - } - - /** - * Updates the presentation component. - * - * Cannot call this method update() since QWidget also - * contains a method update() - */ - virtual void updatePresentation() = 0; -}; - -#endif //OWPRESENTATION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSms.h qutecom-2.2+dfsg1/wengophone/src/presentation/PSms.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSms.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PSms.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PSMS_H -#define PSMS_H - -#include "Presentation.h" - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PSms : public Presentation { -public: - -}; - -#endif //PSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSoftUpdate.h qutecom-2.2+dfsg1/wengophone/src/presentation/PSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSoftUpdate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PSOFTUPDATE_H -#define PSOFTUPDATE_H - -#include "Presentation.h" - -#include - -#include - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - */ -class PSoftUpdate : public Presentation { -public: - - /** - * @see SoftUpdate::updateWengoPhoneEvent - */ - Event updateWengoPhoneEvent; -}; - -#endif //PSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSubscribe.h qutecom-2.2+dfsg1/wengophone/src/presentation/PSubscribe.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PSubscribe.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PSubscribe.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PSUBSCRIBE_H -#define PSUBSCRIBE_H - -#include "Presentation.h" - -/** - * - * @ingroup presentation - * @author Mathieu Stute - */ -class PSubscribe : public Presentation { -public: - -}; - -#endif //PSUBSCRIBE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PUserProfile.h qutecom-2.2+dfsg1/wengophone/src/presentation/PUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PUserProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PUserProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPUSERPROFILE_H -#define OWPUSERPROFILE_H - -#include "Presentation.h" - -#include - -#include - -class IMContact; -class PresenceHandler; - -/** - * Presentation layer of UserProfile. - * - * @ingroup presentation - * @author Philippe Bernery - */ -class PUserProfile : public Presentation { -public: - - /** - * @see UserProfile::loginStateChangedEvent - */ - virtual void loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state) = 0; - - /** - * @see UserProfile::networkDiscoveryStateChangedEvent - */ - virtual void networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state) = 0; - - /** - * @see PresenceHandler::authorizationRequestEvent - */ - virtual void authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message) = 0; - - /** - * @see PresenceHandler::incomingSubscribeEvent - */ - virtual void incomingSubscribeEventHandler(PresenceHandler & sender, - const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType) = 0; -}; - -#endif //OWPUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PUserProfileHandler.h qutecom-2.2+dfsg1/wengophone/src/presentation/PUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PUserProfileHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PUSERPROFILEHANDLER_H -#define PUSERPROFILEHANDLER_H - -#include "Presentation.h" - -#include - -#include - -class WengoAccount; - -/** - * Presentation layer of UserProfileHandler - * @ingroup presentation - * @author Philippe Bernery - */ -class PUserProfileHandler : public Presentation { -public: - - virtual void setCurrentUserProfileEventHandler() = 0; - /** - * @see UserProfileHandler::noCurrentUserProfileSetEvent - */ - virtual void noCurrentUserProfileSetEventHandler() = 0; - - /** - * @see UserProfileHandler::currentUserProfileWillDieEvent - */ - virtual void currentUserProfileWillDieEventHandler() = 0; - - /** - * @see UserProfileHandler::userProfileInitializedEvent - */ - virtual void userProfileInitializedEventHandler() = 0; - - /** - * @see UserProfileHandler::sipAccountConnectionFailedEvent - */ - virtual void sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState) = 0; - - /** - * @see UserProfileStorage::profileLoadedFromBackupsEvent - */ - virtual void profileLoadedFromBackupsEventHandler(std::string profileName) = 0; - - /** - * @see UserProfileStorage::profileCannotBeLoadedEvent - */ - virtual void profileCannotBeLoadedEventHandler(std::string profileName) = 0; - - /** - * @see CUserProfileHandler::networkDiscoveryStateChangedEventHandler - */ - virtual void networkErrorEventHandler(const SipAccount & sipAccount) = 0; -}; - -#endif //PUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PWengoPhone.h qutecom-2.2+dfsg1/wengophone/src/presentation/PWengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PWengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PWengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWPWENGOPHONE_H -#define OWPWENGOPHONE_H - -#include "Presentation.h" - -class ContactInfo; - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class PWengoPhone : public Presentation { -public: - - virtual void showHistory() = 0; - - virtual void showAddContact(ContactInfo contactInfo) = 0; - - virtual void bringMainWindowToFront() = 0; - - /** - * @see WengoPhone::exitEvent - */ - virtual void exitEvent() = 0; -}; - -#endif //OWPWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PWsDirectory.h qutecom-2.2+dfsg1/wengophone/src/presentation/PWsDirectory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/PWsDirectory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/PWsDirectory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef PWSDIRECTORY_H -#define PWSDIRECTORY_H - -#include "Presentation.h" - -/** - * - * @ingroup presentation - * @author Mathieu Stute - */ -class PWsDirectory : public Presentation { -public: - -}; - -#endif //PWSDIRECTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/AboutWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/AboutWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/AboutWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/AboutWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,226 +0,0 @@ - - AboutWindow - - - - 0 - 0 - 460 - 367 - - - - @product@ - About - - - true - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - :/pics/about_logo.png - - - Qt::AlignHCenter - - - - - - - - About - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - false - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - @product@, a voice over Internet phone - - - - - - - Copyright (C)2008 Mbdsys - - - - - - - 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. - - - - - - - - Authors - - - - 9 - - - 9 - - - 9 - - - 9 - - - 6 - - - 6 - - - - - true - - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - false - - - - - - - Qt::Horizontal - - - - 301 - 26 - - - - - - - - Close - - - - - - - - - tabWidget - closeButton - authorsTextEdit - - - - - - - closeButton - clicked() - AboutWindow - reject() - - - 453 - 498 - - - 212 - 262 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/buildconfig.h.cmake qutecom-2.2+dfsg1/wengophone/src/presentation/qt/buildconfig.h.cmake --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/buildconfig.h.cmake 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/buildconfig.h.cmake 1970-01-01 00:00:00.000000000 +0000 @@ -1 +0,0 @@ -#define BINARY_NAME "${BINARY_NAME}" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,163 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtCallBar.h" -#include "QtPhoneComboBox.h" - -#include -#include -#include -#include - -#include - -QtCallBar::QtCallBar(QWidget * parent) - : QFrame(parent) { - - init(); -} - -QtCallBar::~QtCallBar() { -} - -void QtCallBar::init() { - //callButton - _callButton = new WengoStyleLabel(this); - _callButton->setPixmaps( - QPixmap(":/pics/callbar/call_bar_button.png"), //Start - QPixmap(), //End - QPixmap(), //Fill - - QPixmap(":/pics/callbar/call_bar_button_on.png"), //Start - QPixmap(), //End - QPixmap() //Fill - ); - _callButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - connect(_callButton, SIGNAL(clicked()), SLOT(callButtonClickedSlot())); - - //hangUpButton - _hangUpButton = new WengoStyleLabel(this); - _hangUpButton->setPixmaps( - QPixmap(":/pics/callbar/call_bar_button_hangup.png"), //Start - QPixmap(), //End - QPixmap(), //Fill - - QPixmap(":/pics/callbar/call_bar_button_hangup_on.png"), //Start - QPixmap(), //End - QPixmap() //Fill - ); - _hangUpButton->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - connect(_hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonClickedSlot())); - - //phoneComboBoxContainerLabel - WengoStyleLabel * phoneComboBoxContainerLabel = new WengoStyleLabel(this); - phoneComboBoxContainerLabel->setPixmaps( - QPixmap(), //Start - QPixmap(), //End - QPixmap(":/pics/callbar/call_bar_fill.png"), //Fill - - QPixmap(), //Start - QPixmap(), //End - QPixmap(":/pics/callbar/call_bar_fill.png") //Fill - ); - QHBoxLayout * comboLayout = new QHBoxLayout(phoneComboBoxContainerLabel); - - //phoneComboBox - _phoneComboBox = new QtPhoneComboBox(phoneComboBoxContainerLabel); - _phoneComboBox->setEditable(true); - _phoneComboBox->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - languageChanged(); - _phoneComboBox->setAutoCompletion(false); - SAFE_CONNECT(_phoneComboBox->lineEdit(), SIGNAL(returnPressed()), SLOT(phoneComboBoxReturnPressedSlot())); - SAFE_CONNECT(_phoneComboBox, SIGNAL(editTextChanged(const QString &)), SLOT(phoneComboBoxEditTextChangedSlot(const QString &))); - MousePressEventFilter * leftMouseFilter = new MousePressEventFilter(this, SLOT(phoneComboBoxClickedSlot()), Qt::LeftButton); - _phoneComboBox->installEventFilter(leftMouseFilter); - - comboLayout->addWidget(_phoneComboBox); - - QHBoxLayout * layout = new QHBoxLayout(this); - layout->setMargin(0); - layout->setSpacing(0); - - layout->addWidget(phoneComboBoxContainerLabel); - layout->addWidget(_hangUpButton); - layout->addWidget(_callButton); - - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - LANGUAGE_CHANGE(this); -} - -void QtCallBar::setEnabledCallButton(bool enable) { - _callButton->setEnabled(enable); -} - -void QtCallBar::setEnabledHangUpButton(bool enable) { - _hangUpButton->setEnabled(enable); -} - -std::string QtCallBar::getPhoneComboBoxCurrentText() const { - return _phoneComboBox->currentText().toStdString(); -} - -void QtCallBar::clearPhoneComboBox() { - _phoneComboBox->clear(); -} - -void QtCallBar::clearPhoneComboBoxEditText() { - _phoneComboBox->clearEditText(); -} - -void QtCallBar::setPhoneComboBoxEditText(const std::string & text) { - _phoneComboBox->setEditText(QString::fromStdString(text)); -} - -void QtCallBar::addPhoneComboBoxItem(const std::string & text) { - _phoneComboBox->insertItem(0, QString::fromStdString(text)); -} - -void QtCallBar::callButtonClickedSlot() { - callButtonClicked(); -} - -void QtCallBar::hangUpButtonClickedSlot() { - hangUpButtonClicked(); -} - -void QtCallBar::phoneComboBoxReturnPressedSlot() { - phoneComboBoxReturnPressed(); -} - -void QtCallBar::phoneComboBoxEditTextChangedSlot(const QString & text) { - phoneComboBoxEditTextChanged(text); -} - -void QtCallBar::phoneComboBoxClickedSlot() { - phoneComboBoxClicked(); -} - -void QtCallBar::languageChanged() { - _phoneComboBox->languageChanged(); - _phoneComboBox->setEditText(tr("+(country code) number or nickname")); -} - -QtPhoneComboBox * QtCallBar::getQtPhoneComboBox() { - return _phoneComboBox; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtCallBar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCALLBAR_H -#define OWQTCALLBAR_H - -#include - -#include - -class WengoStyleLabel; -class QtPhoneComboBox; - -class QString; -class QIcon; - -/** - * Call bar inside the main window. - * - * The call bas is composed with: - * - a call button - * - a hang up button - * - a phone number combo box - * - * @author Tanguy Krotoff - */ -class QtCallBar : public QFrame { - Q_OBJECT -public: - - QtCallBar(QWidget * parent); - - ~QtCallBar(); - - void setEnabledCallButton(bool enable); - - void setEnabledHangUpButton(bool enable); - - std::string getPhoneComboBoxCurrentText() const; - - void clearPhoneComboBox(); - - void clearPhoneComboBoxEditText(); - - void setPhoneComboBoxEditText(const std::string & text); - - /** - * Prepends an item to the combo box. - * - * @param text item to prepend - */ - void addPhoneComboBoxItem(const std::string & text); - - /** - * accessor to QtPhoneComboBox - * - * @return a pointor on the QtPhoneComboBox - */ - QtPhoneComboBox * getQtPhoneComboBox(); - -Q_SIGNALS: - - void callButtonClicked(); - - void hangUpButtonClicked(); - - void phoneComboBoxReturnPressed(); - - void phoneComboBoxEditTextChanged(const QString & text); - - void phoneComboBoxClicked(); - -private Q_SLOTS: - - void callButtonClickedSlot(); - - void hangUpButtonClickedSlot(); - - void phoneComboBoxReturnPressedSlot(); - - void phoneComboBoxEditTextChangedSlot(const QString & text); - - void phoneComboBoxClickedSlot(); - - void languageChanged(); - -private: - - void init(); - - WengoStyleLabel * _callButton; - - WengoStyleLabel * _hangUpButton; - - QtPhoneComboBox * _phoneComboBox; -}; - -#endif //OWQTCALLBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,317 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPhoneComboBox.h" -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include - -QtPhoneComboBox::QtPhoneComboBox(QWidget * parent) - : UpQComboBox(parent) { - - setLineEdit(new QtPhoneComboBoxLineEdit(this)); - - SAFE_CONNECT(this, SIGNAL(activated(const QString &)), SLOT(comboBoxActivated())); - SAFE_CONNECT(this, SIGNAL(popupDisplayed()), SLOT(popupDisplayedSlot())); - SAFE_CONNECT(this, SIGNAL(popupHidden()), SLOT(popupHiddenSlot())); - SAFE_CONNECT(this, SIGNAL(highlighted(const QString &)), SLOT(itemhighlighted(const QString &))); - - init(); -} - -void QtPhoneComboBox::init() { - _cleared = false; - _toolTipTextDone = false; - _originalPalette = palette(); - - //Grey color - _greyPalette.setColor(QPalette::Text, Qt::gray); - - setAutoCompletion(false); -} - -QtPhoneComboBox::~QtPhoneComboBox() { -} - -void QtPhoneComboBox::setEditText(const QString & text) { - - if (!_toolTipTextDone) { - _toolTipTextDone = true; - _toolTip = text; - setToolTipText(); - } else { - clearLineEdit(); - QComboBox::setEditText(text); - } -} - -QString QtPhoneComboBox::currentText() const { - if (QComboBox::currentText() == _toolTip) { - return QString::null; - } else { - return QComboBox::currentText(); - } -} - -void QtPhoneComboBox::setToolTipText() { - //Text color is grey - lineEdit()->setPalette(_greyPalette); - - _cleared = false; - QComboBox::setEditText(_toolTip); -} - -void QtPhoneComboBox::clearLineEdit() { - //Text color back to original color - lineEdit()->setPalette(_originalPalette); - - clearEditText(); - _cleared = true; -} - -void QtPhoneComboBox::insertPhoneNumber(QStringList * phoneList, std::string toBeAdded) { - if (!toBeAdded.empty()) { - QString phone(toBeAdded.c_str()); - (*phoneList) << phone; - } -} - -void QtPhoneComboBox::clearList() { - //Text color back to original color - lineEdit()->setPalette(_originalPalette); - - QStringList tobeinserted = QStringList(); - clear(); - _totalCompletionList.clear(); - _restrainedCompletionList.clear(); - - //completion of contact - CUserProfile* cuserprofile = _qtWengoPhone->getCWengoPhone().getCUserProfileHandler().getCUserProfile(); - if(cuserprofile) { - UserProfile & userProfile = cuserprofile->getUserProfile(); - for ( std::list::const_iterator it = userProfile.getContactList().getContacts().begin(); - it != userProfile.getContactList().getContacts().end(); - ++it) { - insertPhoneNumber(&tobeinserted, it->getFirstAvailableWengoIMContact().getDisplayContactId()); - insertPhoneNumber(&tobeinserted, it->getFirstAvailableSIPNumber()); - insertPhoneNumber(&tobeinserted, it->getMobilePhone()); - insertPhoneNumber(&tobeinserted, it->getHomePhone()); - insertPhoneNumber(&tobeinserted, it->getWorkPhone()); - insertPhoneNumber(&tobeinserted, it->getOtherPhone()); - } - } - //// - - if (tobeinserted.size() != 0) { - tobeinserted.sort(); - - //no duplicated entries - _totalCompletionList << tobeinserted[0]; - for (int i = 1; i < tobeinserted.size(); ++i) { - if( tobeinserted[i] != tobeinserted[i-1] ) { - _totalCompletionList << tobeinserted[i]; - } - } - } - _restrainedCompletionList.clear(); - - clearEditText(); - _cleared = true; -} - -void QtPhoneComboBox::mousePressEvent(QMouseEvent * event) { - QComboBox::mousePressEvent(event); -} - -void QtPhoneComboBox::keyPressEvent(QKeyEvent * event) { - if (!_cleared) { - clearList(); - } - QComboBox::keyPressEvent(event); -} - -void QtPhoneComboBox::focusOutEvent(QFocusEvent * event) { - if (currentText().isEmpty()) { - setToolTipText(); - } - QComboBox::focusOutEvent(event); -} - -void QtPhoneComboBox::comboBoxActivated() { - //Text color back to original color - lineEdit()->setPalette(_originalPalette); -} - -void QtPhoneComboBox::popupDisplayedSlot() { - QStringList tobeinserted = QStringList(); - clear(); - - CUserProfile * cUserProfile = - _qtWengoPhone->getCWengoPhone().getCUserProfileHandler().getCUserProfile(); - if (!cUserProfile) { - return; - } - - //completion of history - //if _qtHistoryWidget is set it means that History has been created - - bool isWengoAccountConnected = cUserProfile->getUserProfile().hasWengoAccount(); - - CHistory* chistory = cUserProfile->getCHistory(); - if (chistory) { - HistoryMementoCollection * mementos = chistory->getMementos(HistoryMemento::OutgoingCall, 10); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString wengoSuffix = "@" + QString::fromStdString( config.getWengoRealm() ); - for (HistoryMap::iterator it = mementos->begin(); it != mementos->end(); it++) { - HistoryMemento * memento = (*it).second; - SipAddress sipAddress(memento->getPeer()); - - QString username(sipAddress.getSipAddress().c_str()); - if (isWengoAccountConnected) { - username.remove(wengoSuffix); - } - username.remove("sip:"); - - if( !username.isEmpty() && (memento->getState()==HistoryMemento::OutgoingCall) && !tobeinserted.contains(username) ) { - tobeinserted << username; - } - } - OWSAFE_DELETE(mementos); - } - //// - - tobeinserted.sort(); - insertItems(0, tobeinserted); - clearLineEdit(); -} - -void QtPhoneComboBox::popupHiddenSlot() { - insertItem(0,_lastHighlighted); -} - -void QtPhoneComboBox::itemhighlighted(const QString & text) { - _lastHighlighted = text; -} - -void QtPhoneComboBox::languageChanged() { - init(); -} - -void QtPhoneComboBox::setQtWengoPhone(QtWengoPhone* newQtWengoPhone) { - _qtWengoPhone = newQtWengoPhone; -} - -void QtPhoneComboBox::setTextWithCompletion(const QString & newText) { - - if (newText.isEmpty()) { - return; - } - - // compute new restrained list - _restrainedCompletionList.clear(); - QStringList::const_iterator i; - for (i = _totalCompletionList.constBegin(); i != _totalCompletionList.constEnd(); ++i) { - if (i->startsWith(newText)) { - break; - } - } - for (; i != _totalCompletionList.constEnd(); ++i) { - if (i->startsWith(newText)) { - _restrainedCompletionList << (*i); - } else { - break; - } - } - //// - - if (_restrainedCompletionList.isEmpty()) { - return; - } - - // use the restrained list - clear(); - addItems(_restrainedCompletionList); - //// - - // selected added text - lineEdit()->setSelection(newText.length(), _restrainedCompletionList[0].length()); - //// -} - -////////////////////////////////////////////////////////////////////////////////// -////////// QtPhoneComboBoxLineEdit ////////////////// -////////////////////////////////////////////////////////////////////////////////// - -QtPhoneComboBoxLineEdit::QtPhoneComboBoxLineEdit(QtPhoneComboBox * qtPhoneComboBox) { - _qtPhoneComboBox = qtPhoneComboBox; - - SAFE_CONNECT(this, SIGNAL(textEdited(QString)), SLOT(textEditedSlot(QString))); -} - -void QtPhoneComboBoxLineEdit::mousePressEvent(QMouseEvent * event) { - if (!_qtPhoneComboBox->_cleared) { - _qtPhoneComboBox->clearList(); - } - QLineEdit::mousePressEvent(event); -} - -void QtPhoneComboBoxLineEdit::keyPressEvent(QKeyEvent * event) { - if (!_qtPhoneComboBox->_cleared) { - _qtPhoneComboBox->clearList(); - } - QChar key = event->key(); - - if(strchr("0123456789#*", key.toAscii())) - { - char str[2] = { key.toAscii(), 0 }; - - _qtPhoneComboBox->getQtWengoPhone()->getCWengoPhone().getCDtmfThemeManager().playTone("default", str); - } - - QLineEdit::keyPressEvent(event); -} - - -void QtPhoneComboBoxLineEdit::textEditedSlot(const QString & newText) { - if (newText != _enteredText) { - _enteredText = newText; - _qtPhoneComboBox->setTextWithCompletion(_enteredText); - } -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/callbar/QtPhoneComboBox.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTPHONECOMBOBOX_H -#define OWQTPHONECOMBOBOX_H - -#include - -#include -#include -#include - -class QtPhoneComboBoxLineEdit; -class QtWengoPhone; - -class QWidget; -class QMouseEvent; -class QKeyEvent; -class QFocusEvent; -class QString; -class QStringList; -class QMenu; - -/** - * QComboBox based on ToolTipLineEdit. - * - * Permits to add a message like: - * "Please enter a phone number" - * - * FIXME factorize code with ToolTipLineEdit - * - * @author Tanguy Krotoff - */ -class QtPhoneComboBox : public UpQComboBox { - Q_OBJECT - friend class QtPhoneComboBoxLineEdit; -public: - - QtPhoneComboBox(QWidget * parent); - - ~QtPhoneComboBox(); - - QString currentText() const; - - void setQtWengoPhone(QtWengoPhone* newQtWengoPhone); - - QtWengoPhone * getQtWengoPhone() - { - return _qtWengoPhone; - } - -public Q_SLOTS: - - void setEditText(const QString & text); - - void languageChanged(); - -public : - - void setTextWithCompletion(const QString & newText); - -private Q_SLOTS: - - void comboBoxActivated(); - - void popupDisplayedSlot(); - - void popupHiddenSlot(); - - void itemhighlighted(const QString & text); - -private: - - void init(); - - void setToolTipText(); - - void clearLineEdit(); - - void clearList(); - - void insertPhoneNumber(QStringList * phoneList, std::string toBeAdded); - - void mousePressEvent(QMouseEvent * event); - - void keyPressEvent(QKeyEvent * event); - - void focusOutEvent(QFocusEvent * event); - - bool _cleared; - - /** Tool tip text already set? */ - bool _toolTipTextDone; - - QString _toolTip; - - QString _lastHighlighted; - - QPalette _originalPalette; - - QPalette _greyPalette; - - QtWengoPhone * _qtWengoPhone; - - QStringList _totalCompletionList; - - QStringList _restrainedCompletionList; -}; - -#include - -class QtPhoneComboBoxLineEdit : public QLineEdit { - Q_OBJECT -public: - - QtPhoneComboBoxLineEdit(QtPhoneComboBox * qtPhoneComboBox); - -private Q_SLOTS: - - void textEditedSlot(const QString & newText); - -private: - - void mousePressEvent(QMouseEvent * event); - - void keyPressEvent(QKeyEvent * event); - - QtPhoneComboBox * _qtPhoneComboBox; - - QString _enteredText; -}; - -#endif //OWQTPHONECOMBOBOX_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/AvatarFrame.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/AvatarFrame.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/AvatarFrame.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/AvatarFrame.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ - - AvatarFrame - - - - 0 - 0 - 88 - 300 - - - - Form - - - - 9 - - - 6 - - - - - - 5 - 5 - 0 - 0 - - - - - 70 - 16 - - - - - 70 - 16777215 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 70 - 70 - - - - - 70 - 70 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - 70 - 70 - - - - - 70 - 70 - - - - - - - - - - true - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/AvatarWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/AvatarWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/AvatarWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/AvatarWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ - - - - - AvatarWidget - - - - 0 - 0 - 120 - 126 - - - - - 70 - 70 - - - - Form - - - - 0 - - - 4 - - - - - - 5 - 0 - 0 - 0 - - - - - - - Qt::AlignCenter - - - - - - - - 1 - 1 - 0 - 0 - - - - - - - false - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatLogViewer.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatLogViewer.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatLogViewer.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatLogViewer.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,224 +0,0 @@ - - - - - ChatLogViewer - - - - 0 - 0 - 351 - 543 - - - - Chat History - - - Qt::ToolButtonIconOnly - - - - - 6 - - - 3 - - - - - - - - - - 0 - 0 - 351 - 21 - - - - - &Contact - - - - - - - @company@ - - - - - - - - - - &Tools - - - - - - &Help - - - - - - - &Actions - - - - - - - - - - - - - - - - false - - - - - Main Toolbar - - - false - - - Qt::Horizontal - - - - 32 - 32 - - - - 4 - - - - - - - - - - - - - - - - - - - - - :/pics/contact/call.png - - - Call Contact - - - Call Contact - - - Call Contact - - - - - :/pics/filetransfer/send-file.png - - - Send a File - - - Send a File - - - Send a File - - - - - :/pics/chat/chat-room.png - - - createChatConf - - - - - :/pics/chat/contact-details.png - - - Show Contact Info - - - Show Contact Info - - - Show Contact Info - - - - - :/pics/chat/block-a.png - - - blockContact - - - - - - - - - - - - - &Save History As... - - - - - :/pics/chat/new_chat.png - - - actionRestartChat - - - - - - - QtChatHistoryWidget - QTextEdit -
chat/QtChatHistoryWidget.h
- 0 - -
-
- - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatMainWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatMainWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatMainWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatMainWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ - - ChatMainWindow - - - - 0 - 0 - 351 - 542 - - - - MainWindow - - - Qt::ToolButtonIconOnly - - - - - 6 - - - 3 - - - - - - - 0 - 0 - 351 - 29 - - - - - &Edit - - - - - - - - &Contact - - - - - - - @company@ - - - - - - - - - - &Actions - - - - - - - - - &Tools - - - - - - - - - - - - false - - - - - Main Toolbar - - - false - - - Qt::Horizontal - - - - 32 - 32 - - - - 4 - - - - - - - - - - - - - &Close - - - - - - - - - :/pics/contact/call.png - - - Call Contact - - - Call Contact - - - Call Contact - - - - - :/pics/filetransfer/send-file.png - - - Send a File - - - Send a File - - - Send a File - - - - - :/pics/chat/chat-room.png - - - Start Chat Conference - - - Conference - - - - - :/pics/chat/contact-details.png - - - Show Contact Info - - - Show Contact Info - - - Show Contact Info - - - - - :/pics/chat/block-a.png - - - blockContact - - - - - - - - - - - - - &Save History As... - - - - - Cu&t - - - Ctrl+X - - - - - &Copy - - - Ctrl+C - - - - - &Paste - - - Ctrl+V - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/ChatRoomInviteWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,193 +0,0 @@ - - - - - ChatRoomInviteWidget - - - - 0 - 0 - 569 - 350 - - - - Chat room - - - - 9 - - - 6 - - - - - QAbstractItemView::MultiSelection - - - - - - - 0 - - - 6 - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - (Conference participants) - - - - - - - - - 0 - - - 6 - - - - - &Remove - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 171 - 20 - - - - - - - - &Start - - - - - - - - - 0 - - - 6 - - - - - QAbstractItemView::MultiSelection - - - - Group Name - - - - - - - - 0 - - - 6 - - - - - &Add - - - - - - - Qt::Horizontal - - - - 170 - 20 - - - - - - - - - - - - - contactListTreeWidget - addPushButton - inviteListWidget - removePushButton - startPushButton - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,184 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo - * -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#include "QtChatRoomInviteDlg.h" -#include "QtChatRoomTreeWidgetItem.h" -#include "QtChatRoomListWidgetItem.h" - -#include "ui_ChatRoomInviteWidget.h" - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -QtChatRoomInviteDlg::QtChatRoomInviteDlg(IMChatSession & chatSession, CContactList & cContactList, QWidget * parent , Qt::WFlags f ) : -QDialog(parent,f), _cContactList(cContactList), _chatSession(chatSession) { - - _chatRoomInviteWidget = new QWidget(this); - _ui = new Ui::ChatRoomInviteWidget(); - _ui->setupUi(_chatRoomInviteWidget); - - QGridLayout * layout = new QGridLayout(); - layout->addWidget(_chatRoomInviteWidget); - layout->setMargin(0); - setLayout(layout); - setupGui(); -} - -QtChatRoomInviteDlg::~QtChatRoomInviteDlg() { - OWSAFE_DELETE(_ui); - OWSAFE_DELETE(_chatRoomInviteWidget); -} - -void QtChatRoomInviteDlg::setupGui() { - _contactListTreeWidget = _ui->contactListTreeWidget; - _inviteListWidget = _ui->inviteListWidget; - _addPushButton = _ui->addPushButton; - _removePushButton = _ui->removePushButton; - _startPushButton = _ui->startPushButton; - - SAFE_CONNECT (_addPushButton, SIGNAL(clicked()), SLOT(addToConference())); - SAFE_CONNECT (_removePushButton, SIGNAL(clicked()), SLOT(removeFromConference())); - SAFE_CONNECT (_startPushButton, SIGNAL(clicked()), SLOT(startConference())); - // Remove the column header - _contactListTreeWidget->header()->hide(); - fillContact(); -} - -void QtChatRoomInviteDlg::startConference() { - // _chatSession - QListselectList = _inviteListWidget->findItems("*",Qt::MatchWildcard); - QList::iterator it; - for (it = selectList.begin(); it!= selectList.end(); it++) { - QtChatRoomListWidgetItem * item = dynamic_cast (*it); - _chatSession.addIMContact(*(item->getContact().getFirstAvailableIMContact(_chatSession))); - _selectedContact.append((item->getContact())); - } - accept(); - } - -void QtChatRoomInviteDlg::addToConference() { - // Get list of selected item in the treeview - QList selectList = _contactListTreeWidget->selectedItems (); - QList::iterator it; - - for (it = selectList.begin(); it!= selectList.end(); it++) { - if ( (*it)->childCount() == 0 ) { - QtChatRoomTreeWidgetItem * item = dynamic_cast((*it)); - _contactListTreeWidget->setItemSelected(item,false); - if (_inviteListWidget->findItems(item->text(0),Qt::MatchExactly).isEmpty()) { - QtChatRoomListWidgetItem * listItem = new QtChatRoomListWidgetItem(item->getContact(), _inviteListWidget); - listItem->setText(item->text(0)); - listItem->setIcon(item->icon(0)); - } - } - } -} - -void QtChatRoomInviteDlg::removeFromConference() { - QListselectList = _inviteListWidget->selectedItems(); - QList::iterator it; - - for (it= selectList.begin(); it!= selectList.end(); it++ ) { - _inviteListWidget->takeItem(_inviteListWidget->row((*it))); - delete (*it); - } -} - -void QtChatRoomInviteDlg::fillContact() { - std::vector< std::pair >groupList=_cContactList.getContactGroups(); - std::vector< std::pair >::iterator it; - - for (it = groupList.begin(); it != groupList.end(); it++) { - QTreeWidgetItem * groupItem = new QTreeWidgetItem( _contactListTreeWidget); - groupItem->setFlags(Qt::ItemIsEnabled); - QString groupName = QString::fromUtf8((*it).second.c_str()); - QString groupId = QString::fromStdString((*it).first); - groupItem->setText(0,groupName); - fillGroup(groupItem, groupId); - } -} - -void QtChatRoomInviteDlg::fillGroup(QTreeWidgetItem * group, const QString & groupId) { - - QStringList contactsIdList = getContactsInGroup(groupId); - QStringList::iterator it; - - QtContactPixmap::ContactPixmap status; - - for (it=contactsIdList.begin();it!=contactsIdList.end();it++) { - //(*it) is a contactId - ContactProfile contactProfile = _cContactList.getContactProfile((*it).toStdString()); - if (contactProfile.getFirstAvailableIMContact(_chatSession) != NULL) { - QtChatRoomTreeWidgetItem * item = new QtChatRoomTreeWidgetItem (contactProfile,group ); - item->setText(0, QString::fromStdString (contactProfile.getDisplayName())); - switch ( contactProfile.getPresenceState()) { - case EnumPresenceState::PresenceStateOnline: - status = QtContactPixmap::ContactOnline; - break; - case EnumPresenceState::PresenceStateOffline: - status = QtContactPixmap::ContactOffline; - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - status = QtContactPixmap::ContactDND; - break; - case EnumPresenceState::PresenceStateAway: - status = QtContactPixmap::ContactAway; - break; - case EnumPresenceState::PresenceStateInvisible: - status = QtContactPixmap::ContactInvisible; - break; - case EnumPresenceState::PresenceStateUserDefined: - status = QtContactPixmap::ContactOnline; - break; - case EnumPresenceState::PresenceStateUnknown: - status = QtContactPixmap::ContactUnknown; - break; - default: - status = QtContactPixmap::ContactUnknown; - } - item->setIcon(0,QIcon(QtContactPixmap::getInstance()->getPixmap(status))); - } - } -} - -QStringList QtChatRoomInviteDlg::getContactsInGroup(const QString & groupId) const { - StringList contactIdList = _cContactList.getContactIds(); - StringList::iterator it; - QStringList tmp; - - for (it=contactIdList.begin();it!=contactIdList.end();it++) { - ContactProfile contactProfile = _cContactList.getContactProfile((*it)); - if (contactProfile.getGroupId() == groupId.toStdString()) { - tmp << QString::fromStdString((*it)); - } - } - return tmp; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomInviteDlg.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo -* -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#ifndef OWQTCHATROOMINVITEDLG_H -#define OWQTCHATROOMINVITEDLG_H - -#include - -#include -#include - -#include -#include -#include - -namespace Ui { class ChatRoomInviteWidget; } - -class QListWidget; -class QTreeWidget; -class QTreeWidgetItem; - -class Contact; - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class QtChatRoomInviteDlg : public QDialog -{ - Q_OBJECT -public: - - typedef QList SelectedContact; - - QtChatRoomInviteDlg(IMChatSession & chatSession,ContactList & contactList, QWidget * parent = 0, Qt::WFlags f = 0); - - QtChatRoomInviteDlg(IMChatSession & chatSession,CContactList & cContactList, QWidget * parent = 0, Qt::WFlags f = 0); - - ~QtChatRoomInviteDlg(); - - SelectedContact getSelectedContact() const; - -protected: - - void setupGui(); - - Ui::ChatRoomInviteWidget * _ui; - - QWidget * _chatRoomInviteWidget; - - QTreeWidget * _contactListTreeWidget; - - QListWidget * _inviteListWidget; - - QPushButton * _addPushButton; - - QPushButton * _removePushButton; - - QPushButton * _startPushButton; - -// ContactList & _contactList; - CContactList & _cContactList; - - IMChatSession & _chatSession; - - void fillContact(); - -// void fillGroup(QTreeWidgetItem * group, const ContactGroup * cgroup); - void fillGroup(QTreeWidgetItem * group, const QString & groupId); - - QStringList getContactsInGroup(const QString & groupId) const; - - SelectedContact _selectedContact; - -protected Q_SLOTS: - - void startConference(); - - void addToConference(); - - void removeFromConference(); -}; - -#endif //OWQTCHATROOMINVITEDLG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,33 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo -* -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#include "QtChatRoomListWidgetItem.h" -#include - -QtChatRoomListWidgetItem::QtChatRoomListWidgetItem (ContactProfile contact, QListWidget * parent) : -QListWidgetItem(parent) -{ - _contact = contact; -} - -ContactProfile QtChatRoomListWidgetItem::getContact() const { - return _contact; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomListWidgetItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo -* -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ - -#ifndef OWQTCHATROOMLISTWIDGETITEM_H -#define OWQTCHATROOMLISTWIDGETITEM_H - -#include - -#include - -class ContactProfile; - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class QtChatRoomListWidgetItem : public QListWidgetItem -{ -public: - - QtChatRoomListWidgetItem (ContactProfile contact, QListWidget * parent); - - ContactProfile getContact() const; - -protected: - - ContactProfile _contact; -}; - -#endif //OWQTCHATROOMLISTWIDGETITEM_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,31 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo -* -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ -#include "QtChatRoomTreeWidgetItem.h" -#include - -QtChatRoomTreeWidgetItem::QtChatRoomTreeWidgetItem(ContactProfile contact, QTreeWidgetItem * parent) : -QTreeWidgetItem(parent) -{ - _contact = contact; -} - -ContactProfile QtChatRoomTreeWidgetItem::getContact() const { - return _contact; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/chatroom/QtChatRoomTreeWidgetItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,50 +0,0 @@ -/* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2006 Wengo - * -* 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - -*/ -#ifndef OWQTCHATROOMTREEWIDGETITEM_H -#define OWQTCHATROOMTREEWIDGETITEM_H - -#include - -#include - -class ContactProfile; - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class QtChatRoomTreeWidgetItem : public QTreeWidgetItem -{ - -public: - - QtChatRoomTreeWidgetItem(ContactProfile contact, QTreeWidgetItem * parent); - - ContactProfile getContact() const; - -protected: - - ContactProfile _contact; -}; - - -#endif //OWQTCHATROOMTREEWIDGETITEM_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/ChatWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/ChatWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,157 +0,0 @@ - - - ChatWidget - - - - 0 - 0 - 446 - 447 - - - - Form - - - - 0 - - - 0 - - - - - - 0 - - - 0 - - - - - Qt::StrongFocus - - - - - - - true - - - - - - - - 0 - 0 - - - - - 16 - 56 - - - - - 16777215 - 56 - - - - true - - - QFrame::NoFrame - - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - - - - - - - - - 56 - 56 - - - - - - - - :/pics/chat/chat_send.png:/pics/chat/chat_send.png - - - - 50 - 50 - - - - true - - - - - - - - - - - - - - QtWengoStyleBar - QFrame -
chat/QtWengoStyleBar.h
- 1 -
- - QtChatEditWidget - QTextEdit -
chat/QtChatEditWidget.h
-
- - QtChatHistoryWidget - QTextBrowser -
chat/QtChatHistoryWidget.h
-
-
- - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEmoticonButton.h" - -#include - -#include - -QtEmoticonButton::QtEmoticonButton(QWidget * parent) - : QToolButton(parent) { - - setAutoRaise(true); - SAFE_CONNECT(this, SIGNAL(clicked()), SLOT(buttonClickedSlot())); -} - -void QtEmoticonButton::buttonClickedSlot() { - buttonClicked(_emoticon); -} - -void QtEmoticonButton::setEmoticon(QtEmoticon emoticon) { - _emoticon = emoticon; - setIcon(QIcon(emoticon.getButtonPixmap())); - setIconSize(emoticon.getButtonPixmap().size()); - if (!emoticon.getText().isEmpty()) { - setToolTip(emoticon.getText()[0]); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonButton.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,57 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTEMOTICONBUTTON_H -#define OWQTEMOTICONBUTTON_H - -#include "QtEmoticon.h" - -#include - -class QWidget; -class QString; -class QIcon; - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class QtEmoticonButton : public QToolButton { - Q_OBJECT -public: - - QtEmoticonButton(QWidget * parent); - - void setEmoticon(QtEmoticon emoticon); - -Q_SIGNALS: - - void buttonClicked(QtEmoticon emoticon); - -private Q_SLOTS: - - void buttonClickedSlot(); - -private: - - QtEmoticon _emoticon; -}; - -#endif //OWQTEMOTICONBUTTON_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEmoticon.h" - -#include - -#include - -QtEmoticon::QtEmoticon() { -} - -QtEmoticon::QtEmoticon(const QtEmoticon & source) { - _path = source._path; - _text = QStringList(source._text); - _pixmap = source._pixmap; - _regExp = source._regExp; - _buttonPixmap = source._buttonPixmap; -} - -QtEmoticon::~QtEmoticon() { -} - -QString QtEmoticon::getHtml() const { - return QString("").arg(_path); -} - -QString QtEmoticon::getHtmlRegExp() const { - return QString("").arg(_path); -} - -bool QtEmoticon::isNull() const { - return _text.isEmpty(); -} - -void QtEmoticon::setRegExp(const QString & regExp) { - _regExp = regExp; -} - -QtEmoticon & QtEmoticon::operator=(const QtEmoticon & source) { - _path = source._path; - _text = source._text; - _regExp = source._regExp; - _pixmap = source._pixmap; - _buttonPixmap = source._buttonPixmap; - return *this; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticon.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTEMOTICON_H -#define OWQTEMOTICON_H - -#include -#include -#include - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class QtEmoticon { -public: - - QtEmoticon(); - - QtEmoticon(const QtEmoticon & source); - - ~QtEmoticon(); - - void setText(const QStringList & text) { _text = text; } - - void setPath(const QString & path) { _path = path; } - - void setPixmap(const QPixmap & pixmap) { _pixmap = pixmap; } - - void setButtonPixmap(const QPixmap & pixmap) { _buttonPixmap = pixmap; } - - void setRegExp(const QString & regExp); - - QString getRegExp() const { return _regExp; } - - QStringList getText() const { return _text;} - - QString getDefaultText() const { return _text[0]; } - - QPixmap getPixmap() const { return _pixmap; } - - QPixmap getButtonPixmap() const { return _buttonPixmap; } - - QString getPath() const { return _path; } - - QString getHtmlRegExp() const; - - QString getHtml() const; - - bool isNull() const; - - QtEmoticon & operator=(const QtEmoticon & source); - -private: - - QString _path; - - QStringList _text; - - QString _regExp; - - QPixmap _pixmap; - - QPixmap _buttonPixmap; -}; - -#endif //OWQTEMOTICON_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,241 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEmoticonsManager.h" - -#include -#include - -#include -#include - -QtEmoticonsManager * QtEmoticonsManager::_instance = NULL; - -QtEmoticonsManager::QtEmoticonsManager() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - loadFromFile(QString::fromStdString(config.getResourcesDir() + "pics/emoticons/icondef.xml")); -} - -QtEmoticonsManager * QtEmoticonsManager::getInstance() { - if (!_instance) { - _instance = new QtEmoticonsManager(); - } - return _instance; -} - -int QtEmoticonsManager::getProtocolCount() { - return _protocolList.size(); -} - -int QtEmoticonsManager::getEmoticonCount(const QString & protocol) { - if (_protocolList.find(protocol) == _protocolList.end()) { - return 0; - } - return _protocolList[protocol].size(); -} - -QtEmoticon QtEmoticonsManager::getEmoticon(const QString & text, const QString & protocol) { - QtEmoticon emoticon; - - if (_protocolList.find(protocol) == _protocolList.end()) { - return emoticon; - } - QtEmoticonList emoticonList = _protocolList[protocol]; - - for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { - QStringList stringList = (*it).getText(); - for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { - if ((*it2).toUpper() == text.toUpper()) { - return (*it); - } - } - } - return emoticon; -} - -QtEmoticonsManager::QtEmoticonList QtEmoticonsManager::getQtEmoticonList(const QString & protocol) { - QtEmoticonList emoticonList; - if (_protocolList.find(protocol) == _protocolList.end()) { - return emoticonList; - } - emoticonList = _protocolList[protocol]; - return emoticonList; -} - -void QtEmoticonsManager::loadFromFile(const QString & filename) { - QFile file(filename); - QString ErrorMsg; - int ErrorLine = 0; - int ErrorCol = 0; - QDomDocument doc("wengoIcons"); - - if (!file.open(QIODevice::ReadOnly)) { - return; - } - - if (!doc.setContent(&file, &ErrorMsg, &ErrorLine, &ErrorCol)) { - file.close(); - return; - } - file.close(); - - QDomElement tmpElement; - QDomElement docElem = doc.documentElement(); - QDomNode n = docElem.firstChild(); - QString tagName; - - while (!n.isNull()) { - tmpElement = n.toElement(); - if (!tmpElement.isNull()) { - tagName = tmpElement.tagName(); - if (tagName == "protocol") { - readProtocol(n); - } - } - n = n.nextSibling(); - } -} - -void QtEmoticonsManager::readProtocol(const QDomNode & node) { - QDomNode n = node.firstChild(); - QDomElement element; - QString attributeName; - while (!n.isNull()) { - if (!n.toElement().isNull()) { - if (n.toElement().tagName() == "icon") { - element = node.toElement(); - if (!element.isNull()) { - attributeName = element.attribute("name"); - readIcon(n, attributeName); - readIcon(n, "all"); - } - } - } - n = n.nextSibling(); - } -} - -void QtEmoticonsManager::readIcon(const QDomNode & node, const QString & protocol) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - QDomNode n1 = node.firstChild(); - QStringList textList; - QtEmoticon emoticon; - while (!n1.isNull()) { - QDomElement e1 = n1.toElement(); - if (!e1.isNull()) { - if (e1.tagName() == "text") { - textList << e1.text(); - } - if (e1.tagName() == "object") { - QString resources_path = QString::fromStdString(config.getResourcesDir()); - #if defined (OS_WINDOWS) - resources_path = resources_path.replace("\\","/"); - #endif - QString emoticonPath = resources_path + "pics/emoticons/" + e1.text(); - emoticon.setPath(emoticonPath); - QPixmap emoticonPix = QPixmap(emoticonPath); - emoticon.setPixmap(emoticonPix); - emoticon.setButtonPixmap(emoticonPix); - } - } - n1 = n1.nextSibling(); - } - emoticon.setText(textList); - _protocolList[protocol] << emoticon; -} - -QString QtEmoticonsManager::text2Emoticon(const QString & text, const QString & protocol) { - if (_protocolList.find(protocol) == _protocolList.end()) { - return text; - } - - QtEmoticonList emoticonList = _protocolList[protocol]; - QString result; - - // Match full tags () or text - QRegExp rx("([^><]+|<[^>]+>)"); - int pos = 0; - while (true) { - pos = rx.indexIn(text, pos); - if (pos == -1) { - break; - } - - QString token = rx.cap(0); - if (token[0] != '<') { - // Not a tag, replace smileys in it - for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { - QStringList stringList = it->getText(); - for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { - token.replace(*it2, it->getHtml(), Qt::CaseInsensitive); - } - } - } - - result += token; - pos += rx.matchedLength(); - } - - return result; -} - -QString QtEmoticonsManager::emoticons2Text(const QString & text, const QString & protocol) { - QString ret = text; - - if (_protocolList.find(protocol) == _protocolList.end()) { - return text; - } - QtEmoticonList emoticonList = _protocolList[protocol]; - - for (QtEmoticonList::iterator it = emoticonList.begin(); it != emoticonList.end(); it++) { - QStringList stringList = (*it).getText(); - for (QStringList::iterator it2 = stringList.begin(); it2 != stringList.end(); it2++) { - ret.replace((*it).getHtml(), encode((*it2)), Qt::CaseInsensitive); - } - } - return ret; -} - -QString QtEmoticonsManager::encode(const QString & text) const { - QByteArray ba; - - for (int i = 0; i < text.size(); i++) { - switch(text[i].toAscii()) { - case '<': - ba += "<"; - break; - case '>': - ba += ">"; - break; - case '&': - ba += "&"; - break; - case '\'': - ba += "'"; - break; - case '"': - ba += "'"; - break; - default: - ba += text[i]; - } - } - return QString(ba); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTEMOTICONSMANAGER_H -#define OWQTEMOTICONSMANAGER_H - -#include "QtEmoticon.h" - -#include - -class QDomNode; -class QString; - -/** - * - * @ingroup presentation - * @author Mathieu Stute - */ -class QtEmoticonsManager { -public: - - typedef QList QtEmoticonList; - - static QtEmoticonsManager * getInstance(); - - QtEmoticonsManager(); - - QtEmoticon getEmoticon(const QString & text, const QString & protocol); - - void loadFromFile(const QString & filename); - - QString text2Emoticon(const QString & text, const QString & protocol); - - QString emoticons2Text(const QString & text, const QString & protocol); - - QtEmoticonList getQtEmoticonList(const QString & protocol); - - int getProtocolCount(); - - int getEmoticonCount(const QString & protocol); - -private: - - void readProtocol(const QDomNode & node); - - void readIcon(const QDomNode & node, const QString & protocol); - - QString encode(const QString & text) const; - - typedef QHash ProtocolList; - - ProtocolList _protocolList; - - static QtEmoticonsManager * _instance; -}; - -#endif //OWQTEMOTICONSMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEmoticonsWidget.h" - -#include "QtEmoticon.h" -#include "QtEmoticonButton.h" -#include "QtEmoticonsManager.h" - -#include -#include -#include - -#include - -#include -#include - -EmoticonsWidget::EmoticonsWidget(QWidget * parent) - : QFrame(parent, Qt::Popup) { - - setFrameStyle(QFrame::Box | QFrame::Plain); - - _layout = NULL; - _state = Popup; - _buttonX = 0; - _buttonY = 0; -} - -void EmoticonsWidget::buttonClicked(const QtEmoticon & emoticon) { - if (_state == Popup) { - close(); - } - emoticonClicked(emoticon); -} - -void EmoticonsWidget::changeState() { - if (_state == Popup) { - close(); - setWindowFlags(Qt::Window); - _state = Window; - show(); - } else { - close(); - setWindowFlags(Qt::Popup); - _state = Popup; - } -} - -void EmoticonsWidget::initButtons(const QString & protocol) { - OWSAFE_DELETE(_layout); - - _layout = new QGridLayout(this); - _layout->setMargin(0); - _layout->setSpacing(0); - _buttonX = 0; - _buttonY = 0; - QtEmoticonsManager * qtEmoticonsManager = QtEmoticonsManager::getInstance(); - QtEmoticonsManager::QtEmoticonList emoticonList = qtEmoticonsManager->getQtEmoticonList(protocol); - QtEmoticonsManager::QtEmoticonList::iterator it; - for (it = emoticonList.begin(); it != emoticonList.end(); it++) { - addButton((*it)); - } -} - -void EmoticonsWidget::addButton(const QtEmoticon & emoticon) { - if (_buttonX == 10) { - _buttonX = 0; - _buttonY += 1; - } - QtEmoticonButton * button = new QtEmoticonButton(this); - button->setEmoticon(emoticon); - QSize buttonSize = emoticon.getButtonPixmap().size(); - button->setIconSize(buttonSize); - _layout->addWidget(button, _buttonY, _buttonX); - SAFE_CONNECT(button, SIGNAL(buttonClicked(QtEmoticon)), SLOT(buttonClicked(QtEmoticon))); - _buttonX++; -} - -void EmoticonsWidget::closeEvent(QCloseEvent * event) { - closed(); - event->accept(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/emoticons/QtEmoticonsWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTEMOTICONSWIDGET_H -#define OWQTEMOTICONSWIDGET_H - -#include - -class QtEmoticon; -class QString; -class QStringList; -class QGridLayout; - -/** - * - * @ingroup presentation - * @author Mr K. - */ -class EmoticonsWidget : public QFrame { - Q_OBJECT -public: - - EmoticonsWidget(QWidget * parent); - - void initButtons(const QString & protocol); - -public Q_SLOTS: - - void changeState(); - - void buttonClicked(const QtEmoticon & emoticon); - -Q_SIGNALS: - - void emoticonClicked(const QtEmoticon & emoticon); - - void closed(); - -private: - - void closeEvent(QCloseEvent * event); - - void addButton(const QtEmoticon & emoticon); - - enum EmoticonsWidgetState { - Window, - Popup - }; - - QWidget * _widget; - - QStringList _iconName; - - EmoticonsWidgetState _state; - - int _buttonX; - - int _buttonY; - - QGridLayout * _layout; -}; - -#endif //OWQTEMOTICONSWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,90 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatAvatarFrame.h" -#include "QtChatAvatarWidget.h" - -#include - -#include - -#include - -QtChatAvatarFrame::QtChatAvatarFrame(QWidget * parent) - : QFrame(parent) { - - _ui.setupUi(this); - setMinimumWidth(70); - _layout = new QVBoxLayout(_ui.remoteAvatarFrame); - _layout->setMargin(0); - _layout->setSpacing(0); -} - -void QtChatAvatarFrame::setUserPixmap(QPixmap pixmap) { - - QPixmap background = QPixmap(":pics/avatar_background.png"); - - if (!pixmap.isNull()) { - QPainter painter(&background); - painter.drawPixmap(5, 5, pixmap.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - painter.end(); - _ui.userAvatar->setPixmap(background); - } else { - _ui.userAvatar->setPixmap(background); - } -} - -void QtChatAvatarFrame::addRemoteContact(const QString & id, const QString & displayName, const QString & contactId, QPixmap avatar) { - - _contactIdList.append(id); - - QtChatAvatarWidget * avatarWidget = new QtChatAvatarWidget( - _ui.remoteAvatarFrame, id, avatar, displayName, contactId, QtChatAvatarWidget::BIG); - avatarWidget->setupPixmap(avatar); - - _widgetList.append(avatarWidget); - _layout->addWidget(avatarWidget); - - //_ui.remoteAvatarFrame->setMinimumSize(0, glayout->count() * 70); -} - -void QtChatAvatarFrame::removeRemoteContact(const QString & contactId) { - - for (int i = 0; i < _widgetList.size(); i++) { - if (_widgetList[i]->getContactId() == contactId) { - delete _widgetList[i]; - _widgetList.removeAt(i); - } - } - _contactIdList.removeAll(contactId); -} - -void QtChatAvatarFrame::updateContact(const QString & id, QPixmap avatar, const QString & displayName) { - for(int i = 0; i < _widgetList.size(); i++) { - QtChatAvatarWidget * chatAvatarWidget = _widgetList[i]; - if (chatAvatarWidget->getContactId() == id) { - chatAvatarWidget->setupPixmap(avatar); - chatAvatarWidget->setToolTip(displayName); - } - } -} - -QStringList QtChatAvatarFrame::getContactIDList() { - return _contactIdList; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarFrame.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATAVATARFRAME_H -#define OWQTCHATAVATARFRAME_H - -#include "ui_AvatarFrame.h" - -#include -#include -#include - -class QVBoxLayout; -class QtChatAvatarWidget; - -/** - * Avatar frame widget. - * - * @author Mathieu Stute - */ -class QtChatAvatarFrame : public QFrame { - Q_OBJECT -public: - - QtChatAvatarFrame(QWidget * parent); - - void setUserPixmap(QPixmap pixmap); - - void addRemoteContact(const QString & id, const QString & displayName, const QString & contactId, QPixmap avatar); - - void removeRemoteContact(const QString & contactId); - - void updateContact(const QString & id, QPixmap avatar, const QString & displayName); - - QStringList getContactIDList(); - -private: - - typedef QList WidgetList; - - WidgetList _widgetList; - - QVBoxLayout * _layout; - - Ui::AvatarFrame _ui; - - QStringList _contactIdList; -}; - -#endif //OWQTCHATAVATARFRAME_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include - -#include -#include - -#include - -#include "QtChatAvatarWidget.h" - -QtChatAvatarWidget::QtChatAvatarWidget(QWidget * parent, const QString & id, - QPixmap picture, const QString & nickname, const QString & contactId, PictureMode pmode, NicknameMode nmode) - : QWidget(parent), _pictureMode(pmode), _nicknameMode(nmode), _contactId(id) { - - _ui.setupUi(this); - //setupPixmap(picture); - setToolTip(nickname); - //setupNickname(contactId); - /* - if (_nicknameMode != NONE) { - setupNickname(nickname); - } else { - _ui.nicknameLabel->hide(); - }*/ -} - -void QtChatAvatarWidget::setupPixmap(QPixmap pixmap) { - - //TODO:: resize fond_avatar.png - QPixmap background = QPixmap(":/pics/avatar_background.png"); - std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); - QPixmap defaultAvatar; - defaultAvatar.loadFromData((uchar*) data.c_str(), data.size()); - QPainter painter(&background); - - if (!pixmap.isNull()) { - switch (_pictureMode) { - case HUGE: - painter.drawPixmap(0, 0, pixmap.scaled(96, 96, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(96, 96); - setMinimumSize(96, 96); - break; - case BIG: - painter.drawPixmap(5, 5, pixmap.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(70, 70); - setMinimumSize(70, 70); - break; - case MEDIUM: - painter.drawPixmap(0, 0, pixmap.scaled(48, 48, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(48, 48); - setMinimumSize(48, 48); - break; - case SMALL: - painter.drawPixmap(0, 0, pixmap.scaled(24, 24, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(24, 24); - setMinimumSize(24, 24); - break; - case TINY: - painter.drawPixmap(0, 0, pixmap.scaled(12, 12, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(12, 12); - setMinimumSize(12, 12); - break; - default: - LOG_WARN("unknown picture mode: " + String::fromNumber(_pictureMode)); - } - } else { - painter.drawPixmap(5, 5, defaultAvatar.scaled(60, 60, Qt::IgnoreAspectRatio, Qt::SmoothTransformation)); - _ui.pictureLabel->resize(70, 70); - setMinimumSize(70, 70); - } - - painter.end(); - _ui.pictureLabel->setPixmap(background); -} - -void QtChatAvatarWidget::setupNickname(const QString & nickname) { - //TODO: limit string length - QFontMetrics fontMetrics(_ui.nicknameLabel->font()); - int width = 60; - QString temp; - for(int i = 0; i < nickname.length(); i++) { - if (fontMetrics.width(temp) > width) { - break; - } - temp += nickname[i]; - } - _ui.nicknameLabel->setText(temp); -} - -void QtChatAvatarWidget::setToolTip(const QString & nickname) { - _ui.pictureLabel->setToolTip(nickname); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatAvatarWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATAVATARWIDGET_H -#define OWQTCHATAVATARWIDGET_H - -#include "ui_AvatarWidget.h" - -#include - -/** - * Chat contact list. - * - * @author Mathieu Stute - */ -class QtChatAvatarWidget : public QWidget { - Q_OBJECT -public: -#ifdef HUGE -#undef HUGE -#endif - enum PictureMode { - HUGE, // 96x96 - BIG, // 60x60 - MEDIUM, // 48x48 - SMALL, // 24x24 - TINY, // 12x12 - }; - - enum NicknameMode { - RIGHT, - LEFT, - TOP, - BOTTOM, - NONE, - }; - - QtChatAvatarWidget(QWidget * parent, const QString & id, QPixmap picture, - const QString & nickname, const QString & contactId, PictureMode pmode = SMALL, NicknameMode nmode = NONE); - - const QString getContactId() { - return _contactId; - } - - void setupPixmap(QPixmap pixmap); - - void setToolTip(const QString & nickname); - -private: - - void setupNickname(const QString & nickname); - - PictureMode _pictureMode; - - NicknameMode _nicknameMode; - - QString _contactId; - - Ui::AvatarWidget _ui; -}; - -#endif //OWQTCHATAVATARWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatEditWidget.h" - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include - -QtChatEditWidget::QtChatEditWidget(QWidget *parent) -: QTextEdit(parent) { - setFrameStyle(QFrame::NoFrame | QFrame::Plain); - setAcceptDrops(true); - setLineWrapMode(QTextEdit::WidgetWidth); -} - -void QtChatEditWidget::dragEnterEvent(QDragEnterEvent *event) { - if(event->mimeData()->hasFormat("text/uri-list")) { - event->acceptProposedAction(); - } -} - -void QtChatEditWidget::dragMoveEvent(QDragMoveEvent *event) { - event->acceptProposedAction(); -} - -void QtChatEditWidget::dragLeaveEvent(QDragLeaveEvent * event) { - event->accept(); -} - -void QtChatEditWidget::dropEvent(QDropEvent *event) { - const QMimeData *mimeData = event->mimeData(); - if(mimeData->hasUrls()) { - QList urls = mimeData->urls(); - for(QList::iterator i(urls.begin()); i != urls.end(); i++){ - QString fileName; - qint64 fileSize; - QString fileType; - LOG_DEBUG((*i).toLocalFile().toStdString()); - QFile fileToSend((*i).toLocalFile()); - QFileInfo fileInfo(fileToSend); - if(fileInfo.exists() && fileInfo.isReadable()) { - fileName = fileInfo.absoluteFilePath(); - fileSize = fileInfo.size(); - fileType = fileInfo.completeSuffix(); - LOG_DEBUG( - "filename: " + fileName.toStdString() + - "size: " + String::fromLongLong((long long)fileSize) + - "type: " + fileType.toStdString() - ); - // TODO add the contact name (wengo_id) - // TODO make a call to send it all to a file transfer plugin (via a controller) - fileDragged(fileName); - } - } - } - event->acceptProposedAction(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatEditWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATEDITWIDGET_H -#define OWQTCHATEDITWIDGET_H - -#include - -class QDragEnterEvent; -class QDropEvent; -class QDragMoveEvent; -class QDragLeaveEvent; - -/** - * Subclass a QTextEdit with drag and drop support for file transfer. - * - * @author Nicolas Couturier - */ -class QtChatEditWidget : public QTextEdit { - Q_OBJECT -public: - - QtChatEditWidget(QWidget *parent); - -Q_SIGNALS: - - void fileDragged(const QString & filename); - -protected: - - void dragEnterEvent(QDragEnterEvent * event); - - void dragMoveEvent(QDragMoveEvent * event); - - void dropEvent(QDropEvent * event); - - void dragLeaveEvent(QDragLeaveEvent * event); -}; - -#endif //OWQTCHATEDITWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatHandler.h" - -#include "QtChatWindow.h" -#include "emoticons/QtEmoticonsManager.h" - -#include - -#include - -#include - -QtChatHandler::QtChatHandler(CChatHandler & cChatHandler, QtWengoPhone & qtWengoPhone) - : QObject(NULL), - _cChatHandler(cChatHandler), - _qtWengoPhone(qtWengoPhone) { - - _qtChatWindow = NULL; -} - -QtChatHandler::~QtChatHandler() { - if (_qtChatWindow) { - _qtChatWindow->hide(); - delete _qtChatWindow; - } -} - -void QtChatHandler::newIMChatSessionCreatedEvent(IMChatSession & imChatSession) { - if (!_qtChatWindow) { - _qtChatWindow = new QtChatWindow(0, _cChatHandler, imChatSession, _qtWengoPhone); - } else { - _qtChatWindow->imChatSessionCreatedHandler(&imChatSession); - } -} - -void QtChatHandler::createSession(const QString & imAccountId, IMContactSet & imContactSet) { - _cChatHandler.createSession(imAccountId.toStdString(), imContactSet); -} - -void QtChatHandler::updatePresentation() { -} - -void QtChatHandler::deletePresentation() { - // we should delete the QtChatWindow - // but it crashes in QtEmoticonsManager::getQtEmoticonList - /* delete(this); */ - if (_qtChatWindow) { - //_qtChatWindow->closeWindow(); - _qtChatWindow->close(); - _qtWengoPhone.setChatWindow(NULL); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATHANDLER_H -#define OWQTCHATHANDLER_H - -#include - -#include - -class CChatHandler; -class IMAccount; -class IMContactSet; -class QtChatWindow; -class QtWengoPhone; - -/** - * - * @ingroup presentation - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class QtChatHandler : public QObject, public PChatHandler { - Q_OBJECT -public: - - QtChatHandler(CChatHandler & cChatHandler, QtWengoPhone & qtWengoPhone); - - ~QtChatHandler(); - - void createSession(const QString & imAccountId, IMContactSet & imContactSet); - - void newIMChatSessionCreatedEvent(IMChatSession & imChatSession); - - void updatePresentation(); - - void deletePresentation(); - -private: - - CChatHandler & _cChatHandler; - - QtChatWindow * _qtChatWindow; - - QtWengoPhone & _qtWengoPhone; -}; - -#endif //OWQTCHATHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,310 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatHistoryWidget.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -// If previous message from last sender is more than MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES -// old, don't group new message with it. -static int MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES = 3 * 60; - -QtChatHistoryWidget::QtChatHistoryWidget(QWidget * parent) -: QWebView(parent) -{ - _translate = true; - //connect (this, SIGNAL(anchorClicked(const QUrl &)), this, SLOT(urlClicked(const QUrl &))); - setContextMenuPolicy(Qt::NoContextMenu); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _theme = new QtChatTheme(); - - QWebFrame * frame = page()->mainFrame (); - frame->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); - - QString path = QString::fromStdString(config.getResourcesDir()) + "pics/avatars/default-avatar.png"; -#if defined(OS_WINDOWS) - path = path.replace("\\","/"); - _avatarMap["defaut"] = path; -#else - _avatarMap["defaut"] = "file://"+path; -#endif - - page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); - connect(this,SIGNAL(linkClicked(const QUrl &)),this,SLOT(urlClicked(const QUrl &))); - - //load(QUrl("/Users/laurent/Desktop/qutecom-2.2/debug/debug/QuteCom.app/Contents/Resources/chat/base.html")); -} - -QtChatHistoryWidget::~QtChatHistoryWidget() { - delete _theme; -} - -void QtChatHistoryWidget::setTheme(const QString& themeDir,const QString & variant) { - _theme->load(themeDir); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - QString Resources_path; - -#if defined(OS_WINDOWS) - Resources_path = _theme->getCurrentThemePath(); -#else - Resources_path = "file://"+_theme->getCurrentThemePath(); -#endif - - Resources_path += "Contents/Resources/"; - - page()->mainFrame()->addToJavaScriptWindowObject("parent",this); - QFile file_base(QString::fromStdString(config.getResourcesDir())+"chat/base.html"); - file_base.open(QIODevice::ReadOnly); - - QString base = file_base.readAll(); - - if (variant.isEmpty()) - base.replace("%cssPath%",""); - else - base.replace("%cssPath%","Variants/"+variant+".css"); - - setHtml(base,QUrl(Resources_path)); -} - -void QtChatHistoryWidget::saveHistoryAsHtml() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString contentToSave =_data; - - QString filePath = QFileDialog::getSaveFileName(this, tr("Save As"), - QString::fromStdString(config.getLastChatHistorySaveDir()), "HTML (*.htm *.html)"); - - if(filePath.length() > 0) { - - if(!filePath.endsWith(QString(".htm"), Qt::CaseInsensitive) && - !filePath.endsWith(QString(".html"), Qt::CaseInsensitive)) { - - filePath.append(QString(".html")); - } - - QFile fileToSave(filePath); - config.set(Config::LAST_CHAT_HISTORY_SAVE_DIR_KEY, QFileInfo(fileToSave).absolutePath().toStdString()); - fileToSave.open(QIODevice::WriteOnly); - fileToSave.write(contentToSave.toStdString().c_str(), (long long)contentToSave.length()); - fileToSave.close(); - } -} - -void QtChatHistoryWidget::urlClicked(const QUrl & link) { - //setSource(QUrl(QString::null)); - QString url = link.toString(); - if(url.contains(_theme->getCurrentThemePath())) - url = url.remove(_theme->getCurrentThemePath()); - - WebBrowser::openUrl(url.toStdString()); -} - -void QtChatHistoryWidget::insertMessage(const QString & contactId, const QString & senderName, const QString & message, const QTime & time) { - if (contactId == "self" || !_translate) - insertMessage2(contactId,senderName,message,time); - else - { - QString text = message; - text = text.replace("\"","\\\""); - text = text.replace("\'","\\\'"); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString lang = QString::fromStdString(config.getTranslationReceived()); - QString script = QString("translate(\"%1\",\"%2\",\"%3\",\"%4\",\"%5\")").arg(contactId).arg(senderName).arg(text).arg(time.toString()).arg(lang); - page ()->currentFrame ()->evaluateJavaScript(script); - } -} - -void QtChatHistoryWidget::insertMessage2(const QString & contactId, const QString & senderName, const QString & message, const QTime & time) { - // Prepare message - QString htmlMessage = QtChatUtils::decodeMessage(_protocol, message); - - - // Get html - QtChatTheme::Position position; - int timeDelta = _lastMessageTime.secsTo(time); - if (_lastSenderName == senderName && timeDelta < MAX_SECONDS_BETWEEN_CONSECUTIVE_MESSAGES) - { - position = QtChatTheme::Next; - } - else - { - if (!_lastSenderName.isEmpty()) - { - QString footer = _theme->getFooter(); - footer = footer.replace("\n",""); - footer = footer.replace("\r",""); - footer = footer.replace("\t",""); - footer = footer.replace("\"","\\\""); - footer = footer.replace("\'","\\\'"); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+footer+"\")"); - } - position = QtChatTheme::First; - _lastSenderName = senderName; - } - _lastMessageTime = time; - - QtChatTheme::Direction direction; - - if (contactId == "self") { // FIXME: do not duplicate "self" - direction = QtChatTheme::Outgoing; - } else { - direction = QtChatTheme::Incoming; - - } - - QString html = _theme->getContent(direction, position); - QtChatTheme::setKeywordValue(html, "senderId", contactId); - QtChatTheme::setKeywordValue(html, "sender", senderName); - QtChatTheme::setKeywordValue(html, "message", "
"+htmlMessage+"
"); - - QRegExp reg("\\%(time|shortTime)(\\%|\\{.*\\}\\%)"); - html = html.replace(reg,time.toString("HH:mm")); - - QRegExp reg2("\\%timeOpened(\\%|\\{.*\\}\\%)"); - html = html.replace(reg2,QTime::currentTime().toString("HH:mm")); - - QtChatTheme::setKeywordValue(html, "service", ""); - - QString avatar_path = _avatarMap["defaut"]; - if(_avatarMap.contains(contactId)) - avatar_path = _avatarMap[contactId]; - QtChatTheme::setKeywordValue(html, "userIconPath", avatar_path); - - //updateHtml(); - - html = html.replace("\n",""); - html = html.replace("\r",""); - html = html.replace("\t",""); - html = html.replace("\"","\\\""); - html = html.replace("\'","\\\'"); - - if(position == QtChatTheme::First) - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); - - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+html+"\")"); - - //delay for QWebView to update itself - QTimer::singleShot(200,this,SLOT(scrollToBottom())); -} - -void QtChatHistoryWidget::translationFinishedSlot(const QVariant & traduction, const QVariant & contactId, const QVariant & senderName, const QVariant & message, const QVariant & time) -{ - QString tmp = traduction.toString().replace("'","'"); - if(tmp.isEmpty()) - { - insertMessage2(contactId.toString(),senderName.toString(),message.toString(),time.toTime()); - } - else - { - - QTextDocument doc; - doc.setHtml(message.toString()); - - QString str = "
"+tmp+"
"+doc.toPlainText()+"
"; - insertMessage2(contactId.toString(),senderName.toString(),str,time.toTime()); - } -} - -void QtChatHistoryWidget::insertStatusMessage(const QString & message, const QTime& time) { - // Make sure we close any opened message group - if (!_lastSenderName.isEmpty()) { - QString footer = _theme->getFooter(); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+footer+"\")"); - _lastSenderName = ""; - } - QString html = _theme->getStatusMessage(); - QtChatTheme::setKeywordValue(html, "message", message); - QtChatTheme::setKeywordValue(html, "time", time.toString("HH:mm")); - - html = html.replace("\n",""); - html = html.replace("\r",""); - html = html.replace("\t",""); - html = html.replace("\"","\\\""); - html = html.replace("\'","\\\'"); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\"\")"); - page ()->currentFrame ()->evaluateJavaScript("insertMessage(\""+html+"\")"); - - //_data += html; - -} - -void QtChatHistoryWidget::setAvatarPixmap(const QString& name, const QPixmap& pixmap) -{ - QDir dir(QString::fromStdString(Config::getConfigDir())); - - if(!dir.exists("cache")) - dir.mkdir("cache"); - dir.cd("cache"); - - //QString path = dir.absolutePath()+QDir::separator()+name+".png"; - QString path = dir.absolutePath()+"/"+name+".png"; - - pixmap.save(path,"PNG"); - -#if defined(OS_WINDOWS) - _avatarMap[name] = path; -#else - _avatarMap[name] = "file://"+path; -#endif -} - -void QtChatHistoryWidget::scrollToBottom() { - - QWebFrame * frame = page()->mainFrame (); - frame->setScrollBarValue(Qt::Vertical,frame->scrollBarMaximum(Qt::Vertical)); -} - -void QtChatHistoryWidget::clear() -{ - _data = ""; - _lastSenderName = ""; -} - - -void QtChatHistoryWidget::updateHtml() -{ -#if defined(OS_WINDOWS) - setHtml(_data,QUrl(_theme->getCurrentThemePath())); -#else - setHtml(_data,QUrl("file://"+_theme->getCurrentThemePath())); -#endif -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatHistoryWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATHISTORYWIDGET_H -#define OWQTCHATHISTORYWIDGET_H - -#include - -#include -#include -#include -#include - -class QtChatTheme; - -/** - * Implements the chat text zone with a custom context menu. - * - * @author Nicolas Couturier - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtChatHistoryWidget : public QWebView -{ - Q_OBJECT -public: - - void clear(); - - QtChatHistoryWidget(QWidget * parent); - - ~QtChatHistoryWidget(); - - void setTheme(const QString& themeDir , const QString& variant = ""); - - void insertMessage(const QString & contactId, const QString & senderName, const QString & str, const QTime & time); - - void insertMessage2(const QString & contactId, const QString & senderName, const QString & message, const QTime & time); - - void insertStatusMessage(const QString & statusMessage, const QTime& time); - - void setProtocol(EnumIMProtocol::IMProtocol newProtocol) { - _protocol = newProtocol; - } - - void saveHistoryAsHtml(); - - void setTranslate(bool val) - { - _translate = val; - } - /** - * Overloaded to implement avatar loading - */ - //virtual QVariant loadResource(int type, const QUrl& url); - - void setAvatarPixmap(const QString& name, const QPixmap& pixmap); - -private Q_SLOTS: - - /** - * An URL has been clicked we must open a web browser - * - * @param link the clicked url - */ - void urlClicked(const QUrl & link); - -public Q_SLOTS: - void scrollToBottom(); - - void translationFinishedSlot(const QVariant & , const QVariant &, const QVariant &, const QVariant &, const QVariant &); - -private: - void updateHtml(); - - QString _data; - - EnumIMProtocol::IMProtocol _protocol; - - QString _lastSenderName; - - QTime _lastMessageTime; - - QMap _avatarMap; - - QMap _scaledAvatarCache; - - QtChatTheme* _theme; - - bool _translate; -}; - -#endif //OWQTCHATHISTORYWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,447 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatLogViewer.h" -#include "ui_ChatLogViewer.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -QtChatLogViewer::QtChatLogViewer(QWidget * parent, QtWengoPhone & qtWengoPhone, QString log) - : QMainWindow(parent), - _qtWengoPhone(qtWengoPhone),_log(log) { - - _ui = new Ui::ChatLogViewer(); - _ui->setupUi(this); - connect(_ui->historyLog,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished(bool))); - - setupMenuBarActions(); - setupToolBarActions(); - - #if defined(OS_MACOSX) - setUnifiedTitleAndToolBarOnMac(true); -#endif - - SAFE_CONNECT(qtWengoPhone.getQtContactList(), SIGNAL(contactChangedEventSignal(QString )), SLOT(contactChangedEventSlot(QString))); - - updateToolBarActions(); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _ui->historyLog->setTranslate(false); - _ui->historyLog->setTheme(QString::fromStdString(config.getChatTheme()),QString::fromStdString(config.getChatThemeVariant())); - - _ui->actionSearchWengoContact->setVisible(false); - _ui->menuWengo->setTitle(tr("Account")); -} - -void QtChatLogViewer::loadFinished(bool) -{ - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - - UserProfile * userProfile = _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userProfile) { - // Setup user avatar - QPixmap pixmap; - std::string myData = userProfile->getIcon().getData(); - pixmap.loadFromData((uchar *)myData.c_str(), myData.size()); - _ui->historyLog->setAvatarPixmap("self", pixmap); - - // Read history - std::string userlogin; - HistoryMementoCollection hmc; - StringList cuuidList; - userProfile->getHistory().loadChatLog(_log.toStdString(), &hmc, &userlogin, &cuuidList); - _cuuidList = StringListConvert::toQStringList(cuuidList); - - bool isWengoAccountConnected = userProfile->hasWengoAccount(); - - QString selfContactName = QString::fromUtf8(userlogin.c_str()); - - // Set remote user avatars - Q_FOREACH(QString uuid, _cuuidList) { - ContactProfile profile = cContactList.getContactProfile(uuid.toStdString()); - - std::string data = profile.getIcon().getData(); - if (data.size() != 0) { - QPixmap pixmap; - pixmap.loadFromData((uchar *)data.c_str(), data.size()); - _ui->historyLog->setAvatarPixmap(uuid, pixmap); - } - } - - // parses HistoryMementoCollection to find messages and inserts them in historyLog - _ui->historyLog->setProtocol (EnumIMProtocol::IMProtocolAll); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString wengoSuffix = "@" + QString::fromStdString( config.getWengoRealm() ); - QDate previousDate; - for (HistoryMap::iterator it = hmc.begin(); it != hmc.end(); it++) { - - HistoryMemento * memento = it->second; - - // Read date and time - Date mementoDate = memento->getDate(); - QDate date(mementoDate.getYear(), mementoDate.getMonth(), mementoDate.getDay()); - Time mementoTime = memento->getTime(); - QTime time = QTime(mementoTime.getHour(), mementoTime.getMinute()); - - // Insert date line if necessary - if (date != previousDate) { - QString txt = QLocale::system().toString(date); - _ui->historyLog->insertStatusMessage(txt, time); - previousDate = date; - } - - // Insert message - QString contactName = QString::fromUtf8(memento->getPeer().c_str()); - if (isWengoAccountConnected) { - contactName.remove(wengoSuffix); - } - contactName.remove("sip:"); - - QString contactId; - if (contactName == selfContactName) { - contactId = "self"; - } else { - contactId = _cuuidList[0]; - // FIXME: History format is broken: it does not store the uuid - // associated with a peer. Using the first uid will work for - // all one-to-one chat, but will fail for chat conference. - } - - _ui->historyLog->insertMessage( - contactId, - contactName, - QString::fromUtf8(memento->getData().c_str()), - time - ); - } - } -} - -QtChatLogViewer::~QtChatLogViewer() { - OWSAFE_DELETE(_ui); -} - -void QtChatLogViewer::copyQAction(QObject * actionParent, QAction * action) { - QAction * tmp = actionParent->findChild(action->objectName()); - if (!tmp) { - LOG_FATAL("QAction is null, cannot copy it"); - } - action->setIcon(tmp->icon()); - action->setIconText(tmp->iconText()); - action->setText(tmp->text()); - action->setToolTip(tmp->toolTip()); - action->setShortcut(tmp->shortcut()); -} - -void QtChatLogViewer::setupMenuBarActions() { - QtToolBar * qtToolBar = &_qtWengoPhone.getQtToolBar(); - QWidget * toolBar = qtToolBar->getWidget(); - - // setup "Wengo" menu - copyQAction(toolBar, _ui->actionShowWengoAccount); - SAFE_CONNECT_RECEIVER(_ui->actionShowWengoAccount, SIGNAL(triggered()), qtToolBar, SLOT(showWengoAccount())); - copyQAction(toolBar, _ui->actionEditMyProfile); - SAFE_CONNECT_RECEIVER(_ui->actionEditMyProfile, SIGNAL(triggered()), qtToolBar, SLOT(editMyProfile())); - copyQAction(toolBar, _ui->actionWengoServices); - SAFE_CONNECT_RECEIVER(_ui->actionWengoServices, SIGNAL(triggered()), qtToolBar, SLOT(showWengoServices())); - copyQAction(toolBar, _ui->actionClose); - SAFE_CONNECT(_ui->actionClose, SIGNAL(triggered()), SLOT(close())); - //// - - // setup "contact" menubar - copyQAction(toolBar, _ui->actionAddContact); - SAFE_CONNECT_RECEIVER(_ui->actionAddContact, SIGNAL(triggered()), qtToolBar, SLOT(addContact())); - copyQAction(toolBar, _ui->actionSearchWengoContact); - SAFE_CONNECT_RECEIVER(_ui->actionSearchWengoContact, SIGNAL(triggered()), qtToolBar, SLOT(searchWengoContact())); - //// - - // setup "actions" menu - copyQAction(toolBar, _ui->actionCreateConferenceCall); - SAFE_CONNECT_RECEIVER(_ui->actionCreateConferenceCall, SIGNAL(triggered()), qtToolBar, SLOT(createConferenceCall())); - -#if defined (DISABLE_SMS) - _ui->actionSendSms->setVisible(false); -#else - copyQAction(toolBar, _ui->actionSendSms); - SAFE_CONNECT_RECEIVER(_ui->actionSendSms, SIGNAL(triggered()), qtToolBar, SLOT(sendSms())); -#endif - - SAFE_CONNECT(_ui->actionSaveHistoryAs, SIGNAL(triggered()), SLOT(saveChatHistory())); - SAFE_CONNECT(_ui->actionActionRestartChat, SIGNAL(triggered()), SLOT(restartChat())); - //// - -#if defined (DISABLE_FILETRANSFER) - _ui->actionSendFile->setVisible(false); - _ui->actionShowFileTransfer->setVisible(false); -#else - // setup "tools" menu - copyQAction(toolBar, _ui->actionShowFileTransfer); - SAFE_CONNECT_RECEIVER(_ui->actionShowFileTransfer, SIGNAL(triggered()), qtToolBar, SLOT(showFileTransferWindow())); - //// -#endif - - // setup "help" menu - copyQAction(toolBar, _ui->actionShowWengoForum); - SAFE_CONNECT_RECEIVER(_ui->actionShowWengoForum, SIGNAL(triggered()), qtToolBar, SLOT(showWengoForum())); - copyQAction(toolBar, _ui->actionWengoFAQ); - SAFE_CONNECT_RECEIVER(_ui->actionWengoFAQ, SIGNAL(triggered()), qtToolBar, SLOT(showWengoFAQ())); - //// -} - -void QtChatLogViewer::setupToolBarActions() { - SAFE_CONNECT(_ui->actionCallContact, SIGNAL(triggered()), SLOT(callContact())); - SAFE_CONNECT(_ui->actionSendSms, SIGNAL(triggered()), SLOT(sendSmsToContact())); - SAFE_CONNECT(_ui->actionSendFile, SIGNAL(triggered()), SLOT(sendFileToContact())); - SAFE_CONNECT(_ui->actionCreateChatConf, SIGNAL(triggered()), SLOT(createChatConference())); - SAFE_CONNECT(_ui->actionContactInfo, SIGNAL(triggered()), SLOT(showContactInfo())); -} - -bool QtChatLogViewer::canDoFileTransfer(const ContactProfile & contactProfile) { - if (!contactProfile.getFirstWengoId().empty() && contactProfile.isAvailable()) { - IMContact imContact = contactProfile.getFirstAvailableWengoIMContact(); - if ( (imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { - return true; - } - } - return false; -} - -void QtChatLogViewer::updateToolBarActions() { - - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - ContactProfile contactProfile; - - //call'n chat - if (_cuuidList.size() <= 0) { - //no contact to call - _ui->actionCallContact->setEnabled(false); - _ui->actionActionRestartChat->setEnabled(false); - } else if (_cuuidList.size() > 1) { - //TO DO - _ui->actionCallContact->setEnabled(false); - _ui->actionActionRestartChat->setEnabled(false); - } else { - std::string cuuid = _cuuidList[0].toStdString(); - contactProfile = qtContactList->getCContactList().getContactProfile(cuuid); - _ui->actionCallContact->setEnabled(contactProfile.hasCall() && contactProfile.isAvailable()); - - _ui->actionActionRestartChat->setEnabled(contactProfile.hasIM()); - } - //// - - // depending on sip account type ( SMS, File Transfert ) - bool sendSMS = false; - bool sendFile = false; - UserProfile * userProfile = _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userProfile->hasWengoAccount()) { - for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - contactProfile = qtContactList->getCContactList().getContactProfile(it->toStdString()); - sendSMS |= !contactProfile.getMobilePhone().empty(); - sendFile |= canDoFileTransfer(contactProfile); - } - } else if (userProfile->hasSipAccount()) { - sendSMS = true; // a pop up - //sendFile = false; //useless - } - _ui->actionSendSms->setEnabled(sendSMS); - _ui->actionSendFile->setEnabled(sendFile); - //// - - if (_cuuidList.size() <= 0) { - _ui->actionContactInfo->setEnabled(false); - _ui->actionCreateChatConf->setEnabled(false); - } else { - _ui->actionContactInfo->setEnabled(true); - _ui->actionCreateChatConf->setEnabled(false); - } - -} - -void QtChatLogViewer::sendSmsToContact() { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - ContactProfile contactProfile; - UserProfile * userProfile = _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - - if (userProfile->hasWengoAccount()) { - QtSms * sms = _qtWengoPhone.getQtSms(); - if (sms) { - sms->clear(); - for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - contactProfile = qtContactList->getCContactList().getContactProfile(it->toStdString()); - sms->addPhoneNumber(QString::fromStdString(contactProfile.getMobilePhone())); - } - sms->getWidget()->show(); - } - } else { - QtNoWengoAlert alert(this, _qtWengoPhone); - alert.getQDialog()->exec(); - } -} - -void QtChatLogViewer::sendFileToContact() { - - QtFileTransfer * qtFileTransfer = _qtWengoPhone.getFileTransfer(); - if (!qtFileTransfer) { - return; - } - - // gets a filename - QString filename = qtFileTransfer->getChosenFile(); - if (filename.isEmpty()) { - return; - } - QFileInfo fileInfo(filename); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY, fileInfo.dir().absolutePath().toStdString()); - //// - - // sends this file to all available contacts - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - IMContactSet contactSet; - ContactProfile contactProfile; - - for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - contactProfile = qtContactList->getCContactList().getContactProfile(it->toStdString()); - - if (contactProfile.hasAvailableWengoId()) { - contactSet.insert(contactProfile.getFirstAvailableWengoIMContact()); - } - } - qtFileTransfer->createSendFileSession(contactSet, filename, cContactList); - //// -} - -void QtChatLogViewer::callContact() { - if ((_cuuidList.size() > 0) && (!_cuuidList[0].isEmpty())) { - QtContactListManager::getInstance()->startCall(_cuuidList[0]); - if (_qtWengoPhone.getWidget()->isMinimized()) { - _qtWengoPhone.getWidget()->showNormal(); - } - } -} - -void QtChatLogViewer::showContactInfo() { - - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - ContactProfile contactProfile; - - for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - contactProfile = cContactList.getContactProfile(it->toStdString()); - - QtProfileDetails qtProfileDetails( - *_qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getCUserProfile(), - contactProfile, this, tr("Edit Contact")); - if (qtProfileDetails.show()) { - _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getCUserProfile()->getCContactList().updateContact(contactProfile); - } - } -} - -void QtChatLogViewer::saveChatHistory() { - _ui->historyLog->saveHistoryAsHtml(); -} - -void QtChatLogViewer::restartChat() { - - // starts a "normal" chat - if (_cuuidList.size() > 0) { - _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getCUserProfile()->startIM(_cuuidList[0].toStdString()); - } - //// - - //// TO DO allow to start a multi-chat - // launches a confchat - //if (_cuuidList.size() > 1) { - // for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - // - // } - //} - ////// -} - -void QtChatLogViewer::createChatConference() { - - //// TO DO allow to start a multi-chat - - //QtChatWidget * widget = getActiveTabWidget(); - //if (widget) { - // widget->showInviteDialog(); - //} - - //if (canDoMultiChat()) { - // QtChatRoomInviteDlg dlg(*_imChatSession, - // _cChatHandler.getCUserProfile().getCContactList(), this); - // dlg.exec(); - //} -} - -void QtChatLogViewer::contactChangedEventSlot(QString contactid) { - - bool updateNeeded = false; - - for (QStringList::const_iterator it = _cuuidList.begin(); it != _cuuidList.end(); it++) { - if ((*it) == contactid) { - updateNeeded = true; - } - } - - if (updateNeeded && isVisible()) { - updateToolBarActions(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatLogViewer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATLOGVIEWER_H -#define OWQTCHATLOGVIEWER_H - -#include - -class ContactProfile; - -class QtWengoPhone; - -class QAction; -class QString; -class QStringList; -namespace Ui { class ChatLogViewer; } - -/** - * Shows saved chat logs - * - * @ingroup presentation - * @author Xavier Desjardins - */ -class QtChatLogViewer : public QMainWindow { - Q_OBJECT -public: - - QtChatLogViewer(QWidget * parent, QtWengoPhone & qtWengoPhone, QString log); - - ~QtChatLogViewer(); - -public Q_SLOTS: - - void contactChangedEventSlot(QString contactId); - - void callContact(); - - void sendSmsToContact(); - - void sendFileToContact(); - - void createChatConference(); - - void showContactInfo(); - - void restartChat(); - - void saveChatHistory(); - -private Q_SLOTS: - void loadFinished(bool); - -private: - - bool canDoFileTransfer(const ContactProfile & contactProfile); - - void setupMenuBarActions(); - - void setupToolBarActions(); - - void updateToolBarActions(); - - /** - * Finds an QAction and copies its properties to another QAction. - * Code factorization. - * - * @param actionParent where to find the original QAction - * @param action QAction to modify - */ - static void copyQAction(QObject * actionParent, QAction * action); - - QtWengoPhone & _qtWengoPhone; - - QStringList _cuuidList; - - Ui::ChatLogViewer * _ui; - - QString _log; -}; - -#endif //OWQTCHATLOGVIEWER_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "QtChatTabWidget.h" - -#include -#include -#include -#include - -#include -#include - -static const int BLINK_OVERLAY_ALPHA = 128; - -QtChatTabWidget::QtChatTabWidget(QWidget * parent) : QTabWidget (parent) { - _normalColor = palette().color(QPalette::Foreground); - _blinkingColor = Qt::red; - _currentColor = _normalColor; - _timerId = startTimer(500); - -//#if !defined(OS_MACOSX) - // On MacOS X, QtCloseChatTabWidget is used in QtChatWindow - QToolButton * closeTabButton = new QToolButton(this); - QIcon closeIcon(QPixmap(":/pics/close_normal.png")); - closeIcon.addPixmap(QPixmap(":/pics/close_on.png"), QIcon::Normal, QIcon::On); - closeTabButton->setIcon(closeIcon); - closeTabButton->setToolTip(tr("Close chat")); - closeTabButton->setAutoRaise(true); - - setCornerWidget(closeTabButton, Qt::TopRightCorner); - connect(closeTabButton, SIGNAL(clicked()), SIGNAL(closeButtonClicked())); -//#endif - setDocumentMode(true); -} - -void QtChatTabWidget::setBlinkingTab(int index) { - if (_blinkingTabIcons.contains(index)) { - return; - } - QIcon icon = tabBar()->tabIcon(index); - - _blinkingTabIcons[index].normal = icon; - - // Create blinking icon - QImage img = icon.pixmap(tabBar()->iconSize()).toImage(); - - QPainter painter(&img); - painter.setCompositionMode(QPainter::CompositionMode_SourceAtop); - - QPixmap overlay(img.size()); - overlay.fill(QColor(255, 255, 255, BLINK_OVERLAY_ALPHA)); - painter.drawPixmap(0, 0, overlay); - painter.end(); - - _blinkingTabIcons[index].blinking = QIcon(QPixmap::fromImage(img)); -} - -void QtChatTabWidget::stopBlinkingTab(int index) { - tabBar()->setTabTextColor(index, _normalColor); - - if (_blinkingTabIcons.contains(index)) { - tabBar()->setTabIcon(index,_blinkingTabIcons[index].normal); - _blinkingTabIcons.remove(index); - } -} - -void QtChatTabWidget::timerEvent(QTimerEvent * event) { - if ( _currentColor == _normalColor) { - _currentColor = _blinkingColor; - } else { - _currentColor = _normalColor; - } - - Q_FOREACH(int index, _blinkingTabIcons.keys()) { - tabBar()->setTabTextColor(index, _currentColor); - - if (_currentColor == _blinkingColor) { - tabBar()->setTabIcon(index, _blinkingTabIcons[index].blinking); - } else { - tabBar()->setTabIcon(index, _blinkingTabIcons[index].normal); - } - } -} - -void QtChatTabWidget::keyPressEvent(QKeyEvent* event) { - if (event->key() == Qt::Key_Tab && (event->modifiers() & Qt::ControlModifier)) { - goToNextTab(); - event->accept(); - } else { - event->ignore(); - } -} - -void QtChatTabWidget::goToNextTab() { - //ctrlTabPressed(); - if (count() <= 1) { - return; - } - - int i = currentIndex(); - i++; - if (i ==count()) { - i = 0; - } - setCurrentIndex(i); - -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTabWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATTABWIDGET_H -#define OWQTCHATTABWIDGET_H - -#include -#include -#include - -class QKeyEvent; - -/** - * Subclass QTabWidget in order to blink them - * and to deal with CTRL+TAB - * - * @ingroup presentation - * @author Mr K. - * @author Mathieu Stute. - */ -class QtChatTabWidget : public QTabWidget { - Q_OBJECT -public: - - QtChatTabWidget(QWidget * parent = 0); - - void setBlinkingTab(int index); - - void stopBlinkingTab(int index); - -public Q_SLOTS: - - void goToNextTab(); - -Q_SIGNALS: - - void ctrlTabPressed(); - - void closeButtonClicked(); - -private: - struct BlinkingIcon { - QIcon normal; - QIcon blinking; - }; - typedef QHash BlinkingTabIcons; - - virtual void timerEvent(QTimerEvent * event); - - virtual void keyPressEvent(QKeyEvent * event); - - BlinkingTabIcons _blinkingTabIcons; - - QColor _currentColor; - - QColor _normalColor; - - QColor _blinkingColor; - - int _timerId; -}; - -#endif //OWQTCHATTABWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "QtChatTheme.h" - -#include -#include - -#include -#include -#include -#include - -#include - -static const char KEYWORD_CHAR = '%'; - -QString QtChatTheme::getFooter() const { - return _footer; -} - -QString QtChatTheme::getStatusMessage() const { - return _statusMessage; -} - -QString QtChatTheme::getContent(Direction direction, Position position) const { - QString html; - if (direction == Incoming && position == First) { - html = _incomingContent; - } else if (direction == Outgoing && position == First) { - html = _outgoingContent; - } else if (direction == Incoming && position == Next) { - html = _incomingNextContent; - } else if (direction == Outgoing && position == Next) { - html = _outgoingNextContent; - } else { - LOG_FATAL("Unknown combination of direction and position"); - } - - return html; -} - -QString QtChatTheme::getStyleSheet() const { - return _styleSheet; -} - -static QString loadFile(const QString& path) { - QFile file(path); - file.open(QIODevice::ReadOnly); - QString data = QString::fromUtf8(file.readAll()); - return data.trimmed(); -} - -static QString themeBaseDir() { - static QString baseDir; - if (baseDir.isEmpty()) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - baseDir = QString::fromUtf8(config.getResourcesDir().c_str()); - -#if defined(OS_WINDOWS) - baseDir = baseDir.replace("\\","/"); -#endif - baseDir += "/chat/"; - } - return baseDir; -} - -QString QtChatTheme::getCurrentThemePath() -{ - return _currentThemePath; -} - -void QtChatTheme::load(const QString & themeDir) { - QStringList themeList = getThemeList(); - - if(themeList.contains(themeDir)) - _currentThemePath = themeBaseDir() + themeDir + "/"; - else if(themeList.count()) - _currentThemePath = themeBaseDir() + themeList.at(0) + "/"; - - _incomingContent = loadFile(_currentThemePath + "Contents/Resources/Incoming/Content.html"); - _incomingNextContent = loadFile(_currentThemePath + "Contents/Resources/Incoming/NextContent.html"); - _outgoingContent = loadFile(_currentThemePath + "Contents/Resources/Outgoing/Content.html"); - _outgoingNextContent = loadFile(_currentThemePath + "Contents/Resources/Outgoing/NextContent.html"); - _footer = loadFile(_currentThemePath + "Contents/Resources/Footer.html"); - _statusMessage = loadFile(_currentThemePath + "Contents/Resources/Status.html"); - _styleSheet = loadFile(_currentThemePath + "Contents/Resources/main.css"); -} - -void QtChatTheme::setKeywordValue(QString & html, const QString & keyword, const QString & value) { - html.replace(KEYWORD_CHAR + keyword + KEYWORD_CHAR, value); -} - -QStringList QtChatTheme::getThemeList() { - QDir dir(themeBaseDir()); - - QStringList list; - Q_FOREACH(QFileInfo info, dir.entryInfoList()) { - if (info.isDir()) { - QString name = info.fileName(); - if (name[0] != '.') { - list << name; - } - } - } - - return list; -} - -QStringList QtChatTheme::getThemeListVariant(const QString & theme) { - QDir dir(themeBaseDir() +theme+ "/Contents/Resources/Variants"); - - QStringList result; - QStringList filters; - filters << "*.css"; - - dir.setNameFilters(filters); - QFileInfoList infoList = dir.entryInfoList(); - for(int i = 0 ; i < infoList.count() ; i ++) - result.append(infoList.at(i).baseName()); - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatTheme.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTCHATUTILS_H -#define QTCHATUTILS_H - -#include - -/** - * Embryonic implementation of theme support. Severely limited by Qt HTML - * renderer for now. Hope WebKit will save us. - */ -class QtChatTheme { -public: - enum Direction { - Incoming, Outgoing - }; - - enum Position { - First, Next - }; - - QString getFooter() const; - - QString getStatusMessage() const; - - QString getContent(Direction, Position) const; - - QString getStyleSheet() const; - - void load(const QString & themeDir); - - static void setKeywordValue(QString & html, const QString & keyword, const QString & value); - - static QStringList getThemeList(); - static QStringList getThemeListVariant(const QString &); - - QString getCurrentThemePath(); - -private: - QString _currentThemePath; - QString _incomingContent; - QString _incomingNextContent; - QString _outgoingContent; - QString _outgoingNextContent; - QString _footer; - QString _statusMessage; - QString _styleSheet; -}; - -#endif // QTCHATUTILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatUtils.h" - -#include "emoticons/QtEmoticonsManager.h" - -#include - -const QString QtChatUtils::replaceUrls(const QString & str, const QString & htmlstr) { - int beginPos = 0; - QString tmp = htmlstr; - int endPos; - int repCount = 0; - - QStringList urls; - QStringList reps; - while (true) { - - beginPos = str.indexOf(QRegExp("(http://|https://|ftp://|^www.)", Qt::CaseInsensitive), beginPos); - if (beginPos == -1) { - break; - } - - for (endPos = beginPos; endPos < str.size(); endPos++) { - if ((str[endPos] == ' ') || (str[endPos] == '\r') || (str[endPos] == '\n')) { - break; - } - } - QString url = str.mid(beginPos, endPos - beginPos); - urls << url; - QString r = QString("$$_$$*_WENGOSTRUTILS_|KB|%1").arg(repCount); - reps << r; - repCount++; - tmp.replace(url, r); - beginPos = endPos; - } - for (int i = 0; i < reps.size(); i++) { - QString url = QString("" + urls[i] + ""); - tmp.replace(reps[i], url); - } - return tmp; -} - -const QString QtChatUtils::text2Emoticon(const QString & htmlstr, const QString & protocol) { - QtEmoticonsManager * emoticonsManager = QtEmoticonsManager::getInstance(); - return emoticonsManager->text2Emoticon(htmlstr, protocol); -} - -const QString QtChatUtils::emoticons2Text(const QString & htmlstr, const QString & protocol) { - QtEmoticonsManager * emoticonsManager = QtEmoticonsManager::getInstance(); - return emoticonsManager->emoticons2Text(htmlstr, protocol); -} - -const QString QtChatUtils::getProtocol(EnumIMProtocol::IMProtocol protocol) { - switch (protocol) { - case EnumIMProtocol::IMProtocolMSN: - return "msn"; - case EnumIMProtocol::IMProtocolYahoo: - return "yahoo"; - case EnumIMProtocol::IMProtocolWengo: - return "wengo"; - case EnumIMProtocol::IMProtocolAll: - return "all"; - case EnumIMProtocol::IMProtocolJabber: - case EnumIMProtocol::IMProtocolAIM: - case EnumIMProtocol::IMProtocolICQ: - case EnumIMProtocol::IMProtocolUnknown: - default: - return "default"; - } -} - -const QString QtChatUtils::encodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message) { - return emoticons2Text(message, getProtocol(protocol)); -} - -const QString QtChatUtils::decodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message) { - QTextDocument tmp; - tmp.setHtml(message); - QString toReturn = text2Emoticon( - replaceUrls(tmp.toPlainText(), message), - getProtocol(protocol) - ); - return toReturn; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatUtils.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATUTILS_H -#define OWQTCHATUTILS_H - -#include - -class QColor; -class QFont; -class QString; - -/** - * Helper class that format message - * - * @ingroup presentation - * @author Mr K. - * @author Mathieu Stute - */ -class QtChatUtils { -public: - /** - * Gets a string representing the given protocol. - * - * @param protocol the protocol. - * @return a string representing the protocol. - */ - static const QString getProtocol(EnumIMProtocol::IMProtocol protocol); - - /** - * Prepares a message to be sent to the network. - * - * @param font the font to use. - * @param protocol used protocol. - * @param message the message to prepare. - * @return the prepared message. - */ - static const QString encodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message); - - /** - * Decodes a message from the network. - * - * @param protocol used protocol. - * @param message the message to decode. - * @return the prepared message. - */ - static const QString decodeMessage(EnumIMProtocol::IMProtocol protocol, const QString & message); - -private: - - /** - * Replaces urls by href html code. - * - * @param str the message in plain text. - * @param htmlstr the message in html. - * @return the changed message. - */ - static const QString replaceUrls(const QString & str, const QString & htmlstr); - - /** - * @see QtEmoticonsManager::text2Emoticon. - */ - static const QString text2Emoticon(const QString & htmlstr, const QString & protocol); - - /** - * @see QtEmoticonsManager::emoticon2Text. - */ - static const QString emoticons2Text(const QString & htmlstr, const QString & protocol); -}; - -#endif //OWQTCHATUTILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,659 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatWidget.h" -#include "QtChatUtils.h" -#include "chatroom/QtChatRoomInviteDlg.h" -#include "emoticons/QtEmoticonsWidget.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include - -static const int CHAT_STOPPED_TYPING_DELAY = 1000; - -static const int EMOTICON_OFFSET_X = 13; -static const int EMOTICON_OFFSET_Y = 30; - -QString clearHtml( const QString & str) -{ - QString html = str; - - QRegExp htmlDocumentToHtmlSnippet(".*]*>\\s*]*>(.*)

\\s*\\s*"); - QRegExp pTag("]*>"); - - // toHtml() returns an HTML document, complete with html and body tags. - // This regexp strip those to produce an HTML snippet, which can be - // concatenated to the existing history - html.replace(htmlDocumentToHtmlSnippet, "\\1"); - html.replace(pTag, "
"); - html.replace("

", "
"); - - return html; -} - -QtChatWidget::QtChatWidget(CChatHandler & cChatHandler, - QtWengoPhone * qtWengoPhone, int sessionId, - QWidget * parent) : - QWidget(parent), - _cChatHandler(cChatHandler), - _qtWengoPhone(qtWengoPhone) { - - //Default nickname for testing purpose - _nickName = "Wengo"; - _sessionId = sessionId; - _imChatSession = NULL; - - _bold = false; - _italic = false; - _underline = false; - - _isContactConnected = true; - - //setup ui - _ui.setupUi(this); - QPixmap pix = _ui.sendButton->icon().pixmap(50,50); - QPainter painter(&pix); - painter.setPen(Qt::white); - painter.drawText(pix.rect(),Qt::AlignCenter,tr("send")); - painter.end(); - _ui.sendButton->setIcon(QIcon(pix)); - _ui.editActionBar->setBackgroundRole(QPalette::Base); - _ui.editFrame->setBackgroundRole(QPalette::Base); - //// - - //creates sub widgets - _emoticonsWidget = new EmoticonsWidget(this); - //// - - //install event filters - _ui.chatHistory->installEventFilter(this); - _ui.chatEdit->installEventFilter(this); - //// - - //timer - _isTyping = false; - _stoppedTypingTimer = new QTimer(this); - _stoppedTypingTimer->setSingleShot(true); - SAFE_CONNECT_RECEIVER(_stoppedTypingTimer, SIGNAL(timeout()), this, SLOT(stoppedTypingSlot())); - //// - - //signal connection - SAFE_CONNECT(_ui.sendButton, SIGNAL(clicked()), SLOT(sendMessage())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(fontLabelClicked()), SLOT(changeFont())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(emoticonsLabelClicked()), SLOT(chooseEmoticon())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(fontColorLabelClicked()), SLOT(changeFontColor())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(boldLabelClicked()), SLOT(boldClickedSlot())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(italicLabelClicked()), SLOT(italicClickedSlot())); - SAFE_CONNECT(_ui.editActionBar, SIGNAL(underlineLabelClicked()), SLOT(underlineClickedSlot())); - SAFE_CONNECT(_emoticonsWidget, SIGNAL(emoticonClicked(QtEmoticon)), SLOT(emoticonSelected(QtEmoticon))); - SAFE_CONNECT_RECEIVER(_emoticonsWidget, SIGNAL(closed()), _ui.chatEdit, SLOT(setFocus())); - SAFE_CONNECT(_ui.chatEdit, SIGNAL(textChanged()), SLOT(chatEditTextChanged())); - SAFE_CONNECT(_ui.chatEdit, SIGNAL(fileDragged(const QString &)), SLOT(sendFileToSession(const QString &))); - SAFE_CONNECT(this, SIGNAL(contactAddedEventSignal(const IMContact &)), - SLOT(contactAddedEventSlot(const IMContact &))); - SAFE_CONNECT(this, SIGNAL(contactRemovedEventSignal(const IMContact &)), - SLOT(contactRemovedEventSlot(const IMContact &))); - //SAFE_CONNECT(_ui.avatarFrameButton, SIGNAL(clicked()), SLOT(avatarFrameButtonClicked())); - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - SAFE_CONNECT(qtContactList, SIGNAL(contactChangedEventSignal(QString)), SLOT(contactChangedSlot(QString))); - - _cChatHandler.getCUserProfile().getUserProfile().profileChangedEvent += - boost::bind(&QtChatWidget::profileChangedEventHandler, this); - SAFE_CONNECT_TYPE(this, SIGNAL(profileChangedEventHandlerSignal()), - SLOT(updateUserAvatar()), Qt::QueuedConnection); - - //send translate message - _webView = new QWebView; - _webView->page()->mainFrame()->addToJavaScriptWindowObject("parent",this); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QFile file(QString::fromStdString(config.getResourcesDir())+"chat/base.html"); - file.open(QIODevice::ReadOnly); - _webView->setHtml(file.readAll()); - - //load theme - connect(_ui.chatHistory,SIGNAL(loadFinished(bool)),this,SLOT(htmlLoadFinished(bool))); - _ui.chatHistory->setTheme(QString::fromStdString(config.getChatTheme()),QString::fromStdString(config.getChatThemeVariant())); -} - -QtChatWidget::~QtChatWidget() { - _imChatSession->close(); - - _stoppedTypingTimer->stop(); - - delete _webView; -} - -void QtChatWidget::profileChangedEventHandler() { - profileChangedEventHandlerSignal(); -} - -void QtChatWidget::changeFont() { - bool ok; - QFont font = QFontDialog::getFont(&ok, _ui.chatEdit->currentFont(), this); - if (ok) { - _currentFont = font; - _ui.chatEdit->setCurrentFont(font); - } - _ui.chatEdit->setFocus(); -} - -void QtChatWidget::changeFontColor() { - bool ok; - QRgb color = QColorDialog::getRgba(_ui.chatEdit->textColor().rgba(), &ok, this); - if (ok) { - _currentColor = QColor(color); - _ui.chatEdit->setTextColor(_currentColor); - } - _ui.chatEdit->setFocus(); -} - -void QtChatWidget::boldClickedSlot() { - _bold = !_bold; - if (_bold) { - _ui.chatEdit->setFontWeight(QFont::Bold); - } else { - _ui.chatEdit->setFontWeight(QFont::Normal); - } -} - -void QtChatWidget::italicClickedSlot() { - _italic = !_italic; - _ui.chatEdit->setFontItalic(_italic); -} - -void QtChatWidget::underlineClickedSlot() { - _underline = !_underline; - _ui.chatEdit->setFontUnderline(_underline); -} - -void QtChatWidget::translate(const QString & html) -{ - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString lang = QString::fromStdString(config.getTranslationSent()); - QString text = html; - - if(text.isEmpty()) - return; - - text = text.replace("\"","\\\""); - text = text.replace("\'","\\\'"); - - QString script = QString("translate(\"\",\"\",\"%1\",\"\",\"%2\")").arg(text).arg(lang);; - _webView->page ()->mainFrame ()->evaluateJavaScript(script); -} - -void QtChatWidget::chooseEmoticon() { - QPoint p = _ui.editActionBar->pos(); - QPoint offset(EMOTICON_OFFSET_X, EMOTICON_OFFSET_Y); - p += offset; - _emoticonsWidget->move(mapToGlobal(p)); - _emoticonsWidget->show(); -} - -void QtChatWidget::setVisible(bool visible) { - QWidget::setVisible(visible); - if (visible) { - _ui.chatEdit->setFocus(); - } -} - -void QtChatWidget::showInviteDialog() { - if (canDoMultiChat()) { - QtChatRoomInviteDlg dlg(*_imChatSession, - _cChatHandler.getCUserProfile().getCContactList(), this); - dlg.exec(); - } -} - -void QtChatWidget::contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact) { - contactAddedEventSignal(imContact); -} - -void QtChatWidget::contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact) { - contactRemovedEventSignal(imContact); -} - -void QtChatWidget::contactAddedEventSlot(const IMContact & imContact) { - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - std::string contactId = cContactList.findContactThatOwns(imContact); - - /*if (_ui.avatarFrame->getContactIDList().contains(QString::fromStdString(contactId))) { - LOG_DEBUG("" + imContact.getContactId() + " deja dans la session !"); - return; - } - - ContactProfile profile = cContactList.getContactProfile(contactId); - - std::string data = profile.getIcon().getData(); - QPixmap pixmap; - pixmap.loadFromData((uchar *)data.c_str(), data.size()); - _ui.avatarFrame->addRemoteContact( - QString::fromStdString(contactId), - QString::fromUtf8(profile.getDisplayName().c_str()), - QString::fromStdString(imContact.getContactId()), - pixmap - );*/ - - QString imContactId = QString::fromStdString(imContact.getContactId()); - addStatusMessage(tr("%1 has joined the chat").arg(imContactId)); -} - -void QtChatWidget::contactRemovedEventSlot(const IMContact & imContact) { - QString imContactId = QString::fromStdString(imContact.getContactId()); - addStatusMessage(tr("%1 has left the chat").arg(imContactId)); - - /*QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - std::string contactId = cContactList.findContactThatOwns(imContact); - _ui.avatarFrame->removeRemoteContact(QString::fromStdString(contactId));*/ -} - -void QtChatWidget::emoticonSelected(QtEmoticon emoticon) { - _ui.chatEdit->insertHtml(emoticon.getHtml()); - _ui.chatEdit->ensureCursorVisible(); -} - -void QtChatWidget::avatarFrameButtonClicked() { - /*if (_ui.avatarFrame->isVisible()) { - hideAvatarFrame(); - } else { - showAvatarFrame(); - }*/ -} - -void QtChatWidget::hideAvatarFrame() { - //_ui.avatarFrame->hide(); - //_ui.avatarFrameButton->setIcon(QIcon(":pics/chat/show_avatar_frame.png")); -} - -void QtChatWidget::showAvatarFrame() { - //_ui.avatarFrame->show(); - //_ui.avatarFrameButton->setIcon(QIcon(":pics/chat/hide_avatar_frame.png")); -} - -void QtChatWidget::addToHistory(const QString & contactId, const QString & senderName, const QString & str, const QTime & time) { - QTime tmp; - if (time.isNull()) { - tmp = QTime::currentTime(); - } else { - tmp = time; - } - _ui.chatHistory->insertMessage(contactId, senderName, str, tmp); -} - -void QtChatWidget::addStatusMessage(const QString & statusMessage) { - _ui.chatHistory->insertStatusMessage(statusMessage, QTime::currentTime()); -} - -void QtChatWidget::sendMessage() -{ - if(_ui.chatEdit->toPlainText().isEmpty()) - return; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString lang = QString::fromStdString(config.getTranslationSent()); - QString html = clearHtml(_ui.chatEdit->toHtml()); - - translate(html); -} - -void QtChatWidget::setIMChatSession(IMChatSession * imChatSession) { - IMAccount * imAccount = - _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(imChatSession->getIMChat().getIMAccountId()); - - _imChatSession = imChatSession; - _emoticonsWidget->initButtons(QtChatUtils::getProtocol(imAccount->getProtocol())); - - _ui.chatHistory->setProtocol(imAccount->getProtocol()); - - OWSAFE_DELETE(imAccount); - - updateAvatarFrame(); - updateUserAvatar(); - if (_imChatSession->getIMContactSet().size() == 1) { - // It's useless to show the avatar frame if there is only one contact, - // since we can see its avatar when he talks. - hideAvatarFrame(); - } - - _imChatSession->contactAddedEvent += - boost::bind(&QtChatWidget::contactAddedEventHandler, this, _1, _2); - _imChatSession->contactRemovedEvent += - boost::bind(&QtChatWidget::contactRemovedEventHandler, this, _1, _2); - _imChatSession->changeTypingState(IMChat::TypingStateNotTyping); -} - -void QtChatWidget::chatEditTextChanged() { - // change typing state to Typing - if (!_isTyping) { - _imChatSession->changeTypingState(IMChat::TypingStateTyping); - _isTyping = true; - } - //// - - // manage timers - _stoppedTypingTimer->start(CHAT_STOPPED_TYPING_DELAY); - //// -} - -void QtChatWidget::stoppedTypingSlot() { - _imChatSession->changeTypingState(IMChat::TypingStateStopTyping); - _isTyping = false; -} - -void QtChatWidget::translationFinishedSlot(const QVariant & traduction, const QVariant &, const QVariant &, const QVariant & message, const QVariant & ) -{ - QString tmp = traduction.toString().replace("'","'"); - IMAccount * imAccount = _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(_imChatSession->getIMChat().getIMAccountId()); - QString msg; - - if(tmp.isEmpty()) - { - msg = message.toString(); - _imChatSession->sendMessage(QtChatUtils::encodeMessage(imAccount->getProtocol(), msg).toUtf8().constData()); - } - else - { - QTextDocument doc; - doc.setHtml(tmp); - msg = "
"+message.toString()+"
"+doc.toPlainText()+"
"; - _imChatSession->sendMessage(QtChatUtils::encodeMessage(imAccount->getProtocol(), tmp).toUtf8().constData()); - } - - addToHistory("self", _nickName, msg); - - - OWSAFE_DELETE(imAccount); - - _isTyping = true; - _ui.chatEdit->clear(); - _ui.chatEdit->setFocus(); - _ui.chatEdit->ensureCursorVisible(); - - //Not typing anymore - _imChatSession->changeTypingState(IMChat::TypingStateStopTyping); - _isTyping = false; - _stoppedTypingTimer->stop(); -} - -void QtChatWidget::updateAvatarFrame() { - QMutexLocker locker(&_mutex); - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - - IMContactSet imContactSet = _imChatSession->getIMContactSet(); - IMContactSet::iterator it; - for (it = imContactSet.begin(); it != imContactSet.end(); it++) { - - std::string contactId = cContactList.findContactThatOwns(*it); - ContactProfile profile = cContactList.getContactProfile(contactId); - - std::string data = profile.getIcon().getData(); - QPixmap pixmap; - if (data.size() > 0) { - pixmap.loadFromData((uchar *)data.c_str(), data.size()); - _ui.chatHistory->setAvatarPixmap(QString::fromStdString(contactId), pixmap); - } - } -} - -void QtChatWidget::updateUserAvatar() { - - QPixmap pixmap; - UserProfile& userProfile = _cChatHandler.getCUserProfile().getUserProfile(); - std::string myData = userProfile.getIcon().getData(); - pixmap.loadFromData((uchar *)myData.c_str(), myData.size()); - - _ui.chatHistory->setAvatarPixmap("self", pixmap); - //_ui.avatarFrame->setUserPixmap(pixmap); -} - -void QtChatWidget::sendFileToSession(const QString & filename) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - if (!canDoFileTransfer()) { - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - ContactProfile contactProfile = cContactList.getContactProfile(_contactId.toStdString()); - - if (contactProfile.getFirstWengoId().empty()) { - - QString myMess = tr("Your file can not be sent: your contact must be connected on the @company@ network. "); - //myMess += tr("An automatic message has been sent to him"); - addStatusMessage(myMess); - - QString hisMess = ""; - QString url = QString::fromStdString(config.getCompanyWebSiteUrl()); - hisMess += tr("Your contact wishes to send a file with @company@. "); - hisMess += tr("Go to %1 to install it").arg(url); - hisMess += ""; - _imChatSession->sendMessage(hisMess.toStdString()); - } - return; - } - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - QtFileTransfer * qtFileTransfer = _qtWengoPhone->getFileTransfer(); - if (qtFileTransfer) { - qtFileTransfer->createSendFileSession(_imChatSession->getIMContactSet(), filename, cContactList); - } -} - -void QtChatWidget::saveHistoryAsHtml() { - _ui.chatHistory->saveHistoryAsHtml(); -} - -void QtChatWidget::setContactConnected(bool connected) { - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - ContactProfile profile = cContactList.getContactProfile(_contactId.toStdString()); - - QString contactName; - if (!profile.getShortDisplayName().empty()) { - contactName = QString::fromUtf8(profile.getShortDisplayName().c_str()); - } else { - contactName = QString::fromUtf8(profile.getDisplayName().c_str()); - } - - if (connected && !_isContactConnected) { - addStatusMessage(QString(tr("%1 is connected.")).arg(contactName)); - } else if (!connected && _isContactConnected) { - addStatusMessage(QString(tr("%1 is disconnected.")).arg(contactName)); - } - - _isContactConnected = connected; -} - -void QtChatWidget::contactChangedSlot(QString contactId) { - - /*QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - ContactProfile profile = cContactList.getContactProfile(contactId.toStdString()); - std::string data = profile.getIcon().getData(); - QPixmap pixmap; - pixmap.loadFromData((uchar *)data.c_str(), data.size()); - _ui.avatarFrame->updateContact(contactId, pixmap, QString::fromStdString(profile.getDisplayName()));*/ -} - -bool QtChatWidget::canDoFileTransfer() { - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - ContactProfile contactProfile = cContactList.getContactProfile(_contactId.toStdString()); - - if (!contactProfile.getFirstWengoId().empty() && contactProfile.isAvailable()) { - IMContact imContact = contactProfile.getFirstAvailableWengoIMContact(); - if ( (imContact.getPresenceState() != EnumPresenceState::PresenceStateOffline) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnknown) && - (imContact.getPresenceState() != EnumPresenceState::PresenceStateUnavailable)) { - - return true; - } - } - return false; -} - -/** - * Helper method to clone a key event, so that it can be send to another widget - */ -static QKeyEvent* cloneKeyEvent(QKeyEvent* event) { - return new QKeyEvent(event->type(), event->key(), event->modifiers(), event->text()); -} - -bool QtChatWidget::eventFilter(QObject* object, QEvent* event) { - if (object == _ui.chatHistory && event->type() == QEvent::KeyPress) { - return historyKeyPressEventFilter(static_cast(event)); - } - if (object == _ui.chatEdit && event->type() == QEvent::KeyPress) { - return editKeyPressEventFilter(static_cast(event)); - } - return false; -} - -bool QtChatWidget::historyKeyPressEventFilter(QKeyEvent* event) { - // Set focus on edit widget if the user types a "printable" character - if (event->text().size() > 0 && event->text().at(0).isPrint() && _ui.chatEdit->isEnabled()) { - _ui.chatEdit->setFocus(); - QKeyEvent* newEvent = cloneKeyEvent(event); - QApplication::postEvent(_ui.chatEdit, newEvent); - return true; - } - return false; -} - -bool QtChatWidget::editKeyPressEventFilter(QKeyEvent* event) { - int key = event->key(); - - if (key == Qt::Key_PageUp || key == Qt::Key_PageDown) { - QKeyEvent* newEvent = cloneKeyEvent(event); - QApplication::postEvent(_ui.chatHistory, newEvent); - return true; - } - - // Send message with Enter key, unless a modifier is pressed - if ((key == Qt::Key_Enter || key == Qt::Key_Return) && - (event->modifiers() == Qt::NoModifier || event->modifiers() == Qt::KeypadModifier)) - { - sendMessage(); - return true; - } - -#ifdef OS_MACOSX - static const int REAL_CTRL_MODIFIER = Qt::MetaModifier; -#else - static const int REAL_CTRL_MODIFIER = Qt::ControlModifier; -#endif - bool realCtrlPressed = event->modifiers() & REAL_CTRL_MODIFIER; - - if (key == Qt::Key_Tab && realCtrlPressed) { - // We use realCtrlPressed because on MacOS, Qt::ControlModifier - // corresponds to the Command key and Command + Tab is used to switch - // between applications, (like Alt + Tab on Windows) - ctrlTabPressed(); - return true; - } - - return false; -} - -void QtChatWidget::readyToLoadHistory() -{ - - HistoryMementoCollection * hmc = _cChatHandler.getCUserProfile().getUserProfile().getHistory().getSessionCollection(_imChatSession->getId()); - - - if(hmc) - for (HistoryMap::iterator it = hmc->begin(); it != hmc->end(); it++) { - - HistoryMemento * memento = it->second; - - Time mementoTime = memento->getTime(); - QTime time = QTime(mementoTime.getHour(), mementoTime.getMinute()); - - - QString contactName; - - - if(memento->getAlias().size()) - contactName = QString::fromUtf8(memento->getAlias().c_str()); - else - { - contactName = QString::fromUtf8(memento->getPeer().c_str()); - contactName.remove("sip:"); - } - - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - QString contactId = QString::fromStdString(cContactList.findContactThatOwns(contactName.toStdString())); - - _ui.chatHistory->insertMessage( - contactId, - contactName, - QString::fromUtf8(memento->getData().c_str()), - time - ); - } -} - -void QtChatWidget::htmlLoadFinished(bool) -{ - //WebKit need a little time to load resources ... - QTimer::singleShot(500, this, SLOT(readyToLoadHistory())); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,238 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATWIDGET_H -#define OWQTCHATWIDGET_H - -#include "ui_ChatWidget.h" - -#include "emoticons/QtEmoticon.h" - -#include - -#include -#include -#include - -#include - -#include -#include - -class Profile; -class QtWengoPhone; -class QtWengoStyleLabel; -class EmoticonsWidget; -class QFont; -class QUrl; -class QTimer; - -#include - -/** - * - * @ingroup presentation - * @author Mr K. - * @author Mathieu Stute - */ -class QtChatWidget : public QWidget, public Trackable { - Q_OBJECT -public: - - QtChatWidget(CChatHandler & cChatHandler, QtWengoPhone * qtWengoPhone, - int sessionId, QWidget * parent); - - virtual ~QtChatWidget(); - - void setNickName(const QString & nickname) {_nickName = nickname;} - - const QString & nickName() const {return _nickName;} - - bool canDoMultiChat() {return _imChatSession->canDoMultiChat();} - - void setContactId(QString contactId) {_contactId = contactId;} - - int getSessionId() const {return _sessionId;} - - IMChatSession * getIMChatSession() {return _imChatSession;} - - QString getContactId() const {return _contactId;} - - // called from the model's thread - void contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact); - - // called from the model's thread - void contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact); - - void setIMChatSession(IMChatSession * imChatSession); - - /** - * Adds a message to the history and display it. - * - * @param contactId id of the contact who sends the message, or "self" if the sender is the local user - * @param senderName name of the contact who sends the message - * @param str the message - * @param time the time of the message, will use the current time if empty - */ - void addToHistory(const QString & contactId, const QString & senderName, const QString & str, const QTime & time = QTime()); - - /** - * Displays a satus message. - * - * Behaves same as addToHistory but set the text color to the status message - * color and does not display a contact name. - */ - void addStatusMessage(const QString & statusMessage); - - void saveHistoryAsHtml(); - - /** - * Sets the Contact state. - * - * If not connected and the last status was connected, - * the ChatEditWidget will be disabled and a status message - * will be displayed saying the contact went offline. - * - * If connect and the last status was disconnected, - * the ChatEditWidget will be enabled and a status message - * will be displayed saying the contact when online. - **/ - void setContactConnected(bool connected); - - bool canDoFileTransfer(); - -public Q_SLOTS: - - /** - * QtChatEditWidget text has changed - */ - void chatEditTextChanged(); - - void changeFont(); - - void chooseEmoticon(); - - void emoticonSelected(QtEmoticon emoticon); - - void showInviteDialog(); - - void contactAddedEventSlot(const IMContact & imContact); - - void contactRemovedEventSlot(const IMContact & imContact); - - virtual void setVisible(bool visible); - - void sendFileToSession(const QString & filename); - - void translationFinishedSlot(const QVariant & , const QVariant &, const QVariant &, const QVariant &, const QVariant &); - -Q_SIGNALS: - - void newMessage(IMChatSession* session,const QString & msg); - - void contactAddedEventSignal(const IMContact & imContact); - - void contactRemovedEventSignal(const IMContact & imContact); - - void ctrlTabPressed(); - - void profileChangedEventHandlerSignal(); - -protected: - virtual bool eventFilter(QObject* object, QEvent* event); - -private Q_SLOTS: - - void avatarFrameButtonClicked(); - - void changeFontColor(); - - void boldClickedSlot(); - - void italicClickedSlot(); - - void underlineClickedSlot(); - - void contactChangedSlot(QString contactId); - - void sendMessage(); - - void stoppedTypingSlot(); - - void updateUserAvatar(); - - void translate(const QString &); - - void htmlLoadFinished(bool); - - void readyToLoadHistory(); - -private: - void profileChangedEventHandler(); - - void updateAvatarFrame(); - - void showAvatarFrame(); - - void hideAvatarFrame(); - - bool historyKeyPressEventFilter(QKeyEvent* event); - - bool editKeyPressEventFilter(QKeyEvent* event); - - CChatHandler & _cChatHandler; - - QtWengoPhone * _qtWengoPhone; - - IMChatSession * _imChatSession; - - QWidget * _widget; - - QString _contactId; - - int _sessionId; - - QString _nickName; - - mutable QMutex _mutex; - - EmoticonsWidget * _emoticonsWidget; - - Ui::ChatWidget _ui; - - /** True if the Contact in this Widget is connected. */ - bool _isContactConnected; - - // font style settings - QFont _currentFont; - QColor _currentColor; - bool _bold; - bool _italic; - bool _underline; - //// - - /** stopped typing timer */ - QTimer * _stoppedTypingTimer; - - bool _isTyping; - - QWebView * _webView; -}; - -#endif //OWQTCHATWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,904 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatWindow.h" -#include "QtChatWidget.h" -#include "QtChatTabWidget.h" -#include "ui_ChatMainWindow.h" -#include "emoticons/QtEmoticonsManager.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include - -#if defined(OS_WINDOWS) - #include -#endif - -#include -#include - -#include - -/** - * Finds an QAction and copies its properties to another QAction. - * - * @param actionParent where to find the original QAction - * @param action QAction to modify - */ -static void copyQAction(QObject * actionParent, QAction * action) { - QString name = action->objectName(); - QAction * tmp = actionParent->findChild(name); - if (!tmp) { - LOG_ERROR("Couldn't find action named '" + name.toStdString() + "', cannot copy it"); - return; - } - action->setIcon(tmp->icon()); - action->setIconText(tmp->iconText()); - action->setText(tmp->text()); - action->setToolTip(tmp->toolTip()); - action->setShortcut(tmp->shortcut()); -} - -/** - * Connect an action to show a web page to its slot if the web page has been - * defined - */ -static void connectOrHide(WsUrl::Page page, QMenu* menu, QAction* action, QtToolBar* qtToolBar, const char* slot) { - if (WsUrl::hasPage(page)) { - copyQAction(qtToolBar->getWidget(), action); - SAFE_CONNECT_RECEIVER(action, SIGNAL(triggered()), qtToolBar, slot); - } else { - menu->removeAction(action); - } -} - -QtChatWindow::QtChatWindow(QWidget * parent, CChatHandler & cChatHandler, IMChatSession & imChatSession, QtWengoPhone & qtWengoPhone) - : QMainWindow(parent), - _cChatHandler(cChatHandler), - _qtWengoPhone(qtWengoPhone) { - - _imChatSession = &imChatSession; - -#if defined(OS_MACOSX) - setUnifiedTitleAndToolBarOnMac(true); -#endif - - _ui = new Ui::ChatMainWindow(); - _ui->setupUi(this); - setupMenuBarActions(); - setupToolBarActions(); - - // bind to IMChatSession events - _imChatSession->messageReceivedEvent += - boost::bind(&QtChatWindow::messageReceivedEventHandler, this, _1); - _imChatSession->imChatSessionWillDieEvent += - boost::bind(&QtChatWindow::imChatSessionWillDieEventHandler, this, _1); - _imChatSession->typingStateChangedEvent += - boost::bind(&QtChatWindow::typingStateChangedEventHandler, this, _1, _2, _3); - //// - - _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile()->getIMAccountManager().imAccountRemovedEvent += - boost::bind(&QtChatWindow::imAccountRemovedEventHandler, this, _1, _2); - - // create the tab widget and connect to its signals - _tabWidget = new QtChatTabWidget(this); - _tabWidget->removeTab(0); - setCentralWidget(_tabWidget); - SAFE_CONNECT(_tabWidget, SIGNAL(closeButtonClicked()), SLOT(closeActiveTab())); - SAFE_CONNECT(_tabWidget, SIGNAL(currentChanged(int)), SLOT(activeTabChanged(int))); - //// - - // create instance of QtEmoticonsManager - QtEmoticonsManager::getInstance(); - - // thread safe code - SAFE_CONNECT_TYPE(this, SIGNAL(typingStateChangedSignal(const IMChatSession *, const IMContact *, const IMChat::TypingState *)), - SLOT(typingStateChangedThreadSafe(const IMChatSession *, const IMContact *, const IMChat::TypingState *)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(messageReceivedSignal(IMChatSession *)), - SLOT(messageReceivedSlot(IMChatSession *)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(imAccountRemovedEventSignal(const QString &)), - SLOT(imAccountRemovedEventThreadSafe(const QString &)), Qt::QueuedConnection); - //// - - // Clipboard actions - SAFE_CONNECT(_ui->actionCut, SIGNAL(triggered()), - SLOT(cut()) ); - SAFE_CONNECT(_ui->actionCopy, SIGNAL(triggered()), - SLOT(copy()) ); - SAFE_CONNECT(_ui->actionPaste, SIGNAL(triggered()), - SLOT(paste()) ); - SAFE_CONNECT(QApplication::clipboard(), SIGNAL(dataChanged()), - SLOT(updateClipboardActions()) ); - updateClipboardActions(); - //// - - _qtWengoPhone.setChatWindow(this); - resize(490, 470); - setWindowTitle(tr("@product@ Chat")); - -#ifdef OS_LINUX - const std::string & applicationIconPath = ConfigManager::getInstance().getCurrentConfig().getApplicationIconPath(); - setWindowIcon(QIcon(QString::fromStdString(applicationIconPath))); -#endif - - // add a tab widget - IMContact from = *_imChatSession->getIMContactSet().begin(); - addChatWidgetTab(_imChatSession, from); - //// - - _ui->actionSearchWengoContact->setVisible(false); - _ui->menuWengo->setTitle(tr("Account")); -} - -QtChatWindow::~QtChatWindow() { - - //destroyed tabWidget so that chat are saved - while(_tabWidget->count()>0) { - closeActiveTab(); - } - //// - QtEmoticonsManager * m = QtEmoticonsManager::getInstance(); - OWSAFE_DELETE(m); - - OWSAFE_DELETE(_ui); -} - -QtChatWidget * QtChatWindow::getActiveTabWidget() { - return dynamic_cast(_tabWidget->widget(_tabWidget->currentIndex())); -} - -void QtChatWindow::activeTabChanged(int index) { - _tabWidget->stopBlinkingTab(index); - setWindowTitle(_tabWidget->tabText(_tabWidget->currentIndex())); - updateToolBarActions(); - updateClipboardActions(); - statusBar()->showMessage(QString::null); -} - -const QString QtChatWindow::getActiveTabContactId() { - QString contactId; - QtChatWidget * widget = getActiveTabWidget(); - if (widget) { - contactId = widget->getContactId(); - } - return contactId; -} - -ContactProfile QtChatWindow::getContactProfileFromContactId(const QString & contactId) { - return _qtWengoPhone.getQtContactList()->getCContactList().getContactProfile(contactId.toStdString()); -} - -void QtChatWindow::closeActiveTab() { - QtChatWidget * widget = getActiveTabWidget(); - _mapSession.remove(_mapSession.key(widget),widget); - _tabWidget->removeTab(_tabWidget->indexOf(widget)); - OWSAFE_DELETE(widget); - if (_tabWidget->count() == 0) { - close(); - _qtWengoPhone.setChatWindow(NULL); - } - activeTabChanged(_tabWidget->currentIndex()); -} - -void QtChatWindow::showMinimized() { -#if !defined(OS_MACOSX) - -#ifdef OS_WINDOWS - HWND topWindow = GetForegroundWindow(); -#endif - QMainWindow::showMinimized(); -#ifdef OS_WINDOWS - SetForegroundWindow(topWindow); -#endif - -#else - showNormal(); -#endif -} - -void QtChatWindow::show() { - showNormal(); - activateWindow(); - raise(); -} - -void QtChatWindow::createChatConference() { - QtChatWidget * widget = getActiveTabWidget(); - if (widget) { - widget->showInviteDialog(); - } -} - -void QtChatWindow::typingStateChangedEventHandler(IMChatSession & sender, const IMContact & imContact, IMChat::TypingState state) { - IMChat::TypingState * tmpState = new IMChat::TypingState; - *tmpState = state; - typingStateChangedSignal(&sender,&imContact,tmpState); -} - -void QtChatWindow::typingStateChangedThreadSafe(const IMChatSession * sender, const IMContact * from,const IMChat::TypingState * state) { - int tabs = _tabWidget->count(); - for (int i = 0; i < tabs; i++) { - QtChatWidget * widget = (QtChatWidget *) _tabWidget->widget(i); - if (widget->getSessionId() == sender->getId()) { - - //only display mssage if IMChatSessio is active - if (!widget->isVisible()) { - return; - } - - QString remoteName; - if(from->getAlias().size()) - remoteName = QString::fromUtf8(from->getAlias().c_str()); - else - remoteName = QString::fromUtf8(from->getDisplayContactId().c_str()); - switch (*state) { - case IMChat::TypingStateNotTyping: - statusBar()->showMessage(QString::null); - break; - case IMChat::TypingStateTyping: - statusBar()->showMessage(tr("%1 is typing").arg(remoteName)); - break; - case IMChat::TypingStateStopTyping: - statusBar()->showMessage(QString::null); - break; - default: - break; - } - } - } - OWSAFE_DELETE(state); -} - -void QtChatWindow::messageReceivedEventHandler(IMChatSession & sender) { - messageReceivedSignal(&sender); -} - -void QtChatWindow::imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId) -{ - imAccountRemovedEventSignal(QString::fromStdString(imAccountId)); -} - -void QtChatWindow::imAccountRemovedEventThreadSafe(const QString & imAccountId) -{ - QList list = _mapSession.values(imAccountId); - _mapSession.remove(imAccountId); - - for(QList::iterator it = list.begin() ; it != list.end() ; it ++) - { - _tabWidget->removeTab(_tabWidget->indexOf(*it)); - - if (_tabWidget->count() == 0) { - close(); - _qtWengoPhone.setChatWindow(NULL); - return; - } - } - activeTabChanged(_tabWidget->currentIndex()); -} - -QString QtChatWindow::getShortDisplayName(const QString & contactId, const QString & defaultName) const { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - std::string tmpSendername = cContactList.getContactProfile(contactId.toStdString()).getShortDisplayName(); - if (tmpSendername.empty()) { - tmpSendername = defaultName.toStdString(); - } - - return QString::fromUtf8(tmpSendername.c_str()); -} - -void QtChatWindow::statusChangedSlot(QString contactId) { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - std::string sdname = qtContactList->getCContactList().getContactProfile(contactId.toStdString()).getDisplayName(); - EnumPresenceState::PresenceState pstate = qtContactList->getCContactList().getContactProfile(contactId.toStdString()).getPresenceState(); - QString displayName = QString::fromStdString(sdname); - - // search for the tab that contain sender - // FIXME: the contact could be in several tabs: for instance when - // we do a single-chat and a multi-chat with this contact - for (int i = 0; i < _tabWidget->count(); i++) { - QtChatWidget * widget = (QtChatWidget *) _tabWidget->widget(i); - if (widget) { - if (widget->getContactId() == contactId) { - switch(pstate) { - case EnumPresenceState::PresenceStateOnline: - _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/online.png"))); - widget->setContactConnected(true); - break; - case EnumPresenceState::PresenceStateOffline: - _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/offline.png"))); - widget->setContactConnected(false); - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/donotdisturb.png"))); - widget->setContactConnected(true); - break; - case EnumPresenceState::PresenceStateAway: - _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/status/away.png"))); - widget->setContactConnected(true); - break; - default: - _tabWidget->setTabIcon(i, QIcon(QPixmap(":/pics/contact/chat.png"))); - if (!displayName.isEmpty()) { - // If Display name is empty, it means that the Contact is not in the ContactList. - // Thus we should not say that the contact is offline as we don't really know its - // status. - widget->setContactConnected(false); - } - break; - } - break; - } - } - } - - updateToolBarActions(); -} - -void QtChatWindow::setupMenuBarActions() { - QtToolBar * qtToolBar = &_qtWengoPhone.getQtToolBar(); - QWidget * toolBar = qtToolBar->getWidget(); - - // setup "Wengo" menu - connectOrHide(WsUrl::Account, _ui->menuWengo, _ui->actionShowWengoAccount, qtToolBar, SLOT(showWengoAccount())); - - copyQAction(toolBar, _ui->actionEditMyProfile); - SAFE_CONNECT_RECEIVER(_ui->actionEditMyProfile, SIGNAL(triggered()), qtToolBar, SLOT(editMyProfile())); - connectOrHide(WsUrl::CallOut, _ui->menuWengo, _ui->actionWengoServices, qtToolBar, SLOT(showWengoServices())); - - copyQAction(toolBar, _ui->actionClose); - SAFE_CONNECT(_ui->actionClose, SIGNAL(triggered()), SLOT(close())); - //// - - // setup "contact" menubar - copyQAction(toolBar, _ui->actionAddContact); - SAFE_CONNECT_RECEIVER(_ui->actionAddContact, SIGNAL(triggered()), qtToolBar, SLOT(addContact())); - copyQAction(toolBar, _ui->actionSearchWengoContact); - SAFE_CONNECT_RECEIVER(_ui->actionSearchWengoContact, SIGNAL(triggered()), qtToolBar, SLOT(searchWengoContact())); - //// - - // setup "actions" menu - copyQAction(toolBar, _ui->actionCreateConferenceCall); - SAFE_CONNECT_RECEIVER(_ui->actionCreateConferenceCall, SIGNAL(triggered()), qtToolBar, SLOT(createConferenceCall())); - copyQAction(toolBar, _ui->actionSendSms); - SAFE_CONNECT_RECEIVER(_ui->actionSendSms, SIGNAL(triggered()), qtToolBar, SLOT(sendSms())); - SAFE_CONNECT(_ui->actionSaveHistoryAs, SIGNAL(triggered()), SLOT(saveActiveTabChatHistory())); - //// - - // setup "tools" menu - copyQAction(toolBar, _ui->actionShowFileTransfer); - SAFE_CONNECT_RECEIVER(_ui->actionShowFileTransfer, SIGNAL(triggered()), qtToolBar, SLOT(showFileTransferWindow())); - - // clone "help" menu - QMenu* menuHelp = _qtWengoPhone.getWidget()->findChild("menuHelp"); - if (menuHelp) { - menuBar()->addMenu(menuHelp); - } else { - LOG_ERROR("Couldn't find a menu named 'menuHelp' in main window"); - } - //// -} - -void QtChatWindow::setupToolBarActions() { - SAFE_CONNECT(_ui->actionCallContact, SIGNAL(triggered()), SLOT(callActiveTabContact())); - SAFE_CONNECT(_ui->actionSendSms, SIGNAL(triggered()), SLOT(sendSmsToActiveTabContact())); - SAFE_CONNECT(_ui->actionSendFile, SIGNAL(triggered()), SLOT(sendFileToActiveTabContact())); - SAFE_CONNECT(_ui->actionCreateChatConf, SIGNAL(triggered()), SLOT(createChatConference())); - SAFE_CONNECT(_ui->actionContactInfo, SIGNAL(triggered()), SLOT(showActiveTabContactInfo())); - SAFE_CONNECT(_ui->actionBlockContact, SIGNAL(triggered()), SLOT(blockActiveTabContact())); - -/*#if defined(OS_MACOSX) - // Add a stretch, so that the close tab button is aligned on the right - QWidget* dummyWidget = new QWidget(); - dummyWidget->setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Preferred); - _ui->toolBar->addWidget(dummyWidget); - - // Add the close tab button - QIcon icon(":/pics/chat/chat_close.png"); - QAction* action = _ui->toolBar->addAction(icon, tr("Close Chat")); - SAFE_CONNECT(action, SIGNAL(triggered()), SLOT(closeActiveTab())); - - // For some unknown reason the close tab button is a bit off the screen. - // Adding some fixed spacing fixes this. - dummyWidget = new QWidget(); - dummyWidget->setFixedHeight(10); - _ui->toolBar->addWidget(dummyWidget); -#endif*/ -} - -void QtChatWindow::updateToolBarActions() { - //FIXME: this code assume that there is only one contact in the session - - QtChatWidget * widget = getActiveTabWidget(); - QString contactId; - QtContactList * qtContactList; - ContactProfile contactProfile; - - if (widget) { - contactId = widget->getContactId(); - qtContactList = _qtWengoPhone.getQtContactList(); - if (qtContactList) - { - contactProfile = qtContactList->getCContactList().getContactProfile(contactId.toStdString()); - - _ui->actionCallContact->setEnabled(contactProfile.hasCall() - && contactProfile.isAvailable()); - - _ui->actionSendSms->setEnabled(!contactProfile.getMobilePhone().empty()); - #ifdef DISABLE_SMS - _ui->actionSendSms->setVisible(false); - #endif - - _ui->actionSendFile->setEnabled(widget->canDoFileTransfer()); - #ifdef DISABLE_FILETRANSFER - _ui->actionSendFile->setVisible(false); - _ui->actionShowFileTransfer->setVisible(false); - _ui->menuTools->menuAction()->setVisible(false); - #endif - - _ui->actionCreateChatConf->setEnabled(widget->canDoMultiChat()); - _ui->actionContactInfo->setEnabled(true); - //TODO: uncomment when block a contact will be implemented - //_ui->actionBlockContact->setEnabled(!contactProfile.isBlocked()); - _ui->actionBlockContact->setEnabled(false); - //// - } - else - { - _ui->actionCallContact->setEnabled(false); - _ui->actionSendSms->setEnabled(false); - _ui->actionSendFile->setEnabled(false); - - _ui->actionCreateChatConf->setEnabled(false); - _ui->actionContactInfo->setEnabled(false); - _ui->actionBlockContact->setEnabled(false); - } - - } -} - -void QtChatWindow::messageReceivedSlot(IMChatSession * sender) { - if (!isActiveWindow()) { - if (!isVisible()) { - // Make sure the window appears on the taskbar, - // otherwise it won't flash... - showMinimized(); - } - WidgetUtils::flashWindow(this); - } - - // new way to get messages - IMChatSession::IMChatMessageList imChatMessageList = sender->getReceivedMessage(_lastReceivedMessageIndex[sender->getId()] + 1); - if (imChatMessageList.size() > 0) { - _lastReceivedMessageIndex[sender->getId()] += imChatMessageList.size(); - IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); - while (imChatMessageListIterator < imChatMessageList.end()) { - IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; - const IMContact & from = imChatMessage->getIMContact(); - std::string message = imChatMessage->getMessage(); - QString senderName = QString::fromStdString(from.getContactId()); - - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - CContactList & cContactList = qtContactList->getCContactList(); - QString contactId = QString::fromStdString(cContactList.findContactThatOwns(from)); - QString senderDisplayName; - if(from.getAlias().size()) - senderDisplayName = QString::fromUtf8(from.getAlias().c_str()); - else - senderDisplayName = getShortDisplayName(contactId, QString::fromStdString(from.getDisplayContactId())); - QString msg = QString::fromUtf8(message.c_str()); - - int tabs = _tabWidget->count(); - for (int i = 0; i < tabs; i++) { - QtChatWidget * widget = dynamic_cast(_tabWidget->widget(i)); - if (widget->getSessionId() == sender->getId()) { - _chatWidget = qobject_cast(_tabWidget->widget(i)); - _chatWidget->addToHistory(contactId, senderDisplayName, msg); - if (_tabWidget->currentWidget() != _chatWidget) { - if (isMinimized()) { - _tabWidget->setCurrentIndex(i); - } else { - _tabWidget->setBlinkingTab(i); - } - } - break; - } - } - imChatMessageListIterator++; - } - } - //// -} - -void QtChatWindow::imChatSessionCreatedHandler(IMChatSession * imChatSession) { - // If this chat session already exists, display the tab - int tabs = _tabWidget->count(); - for (int i = 0; i < tabs; i++) { - QtChatWidget * widget = dynamic_cast(_tabWidget->widget(i)); - if (widget->getSessionId() == imChatSession->getId()) { - _tabWidget->setCurrentIndex(i); - show(); - return; - } - } - - // bind to IMChatSession events - imChatSession->messageReceivedEvent += - boost::bind(&QtChatWindow::messageReceivedEventHandler, this, _1); - imChatSession->imChatSessionWillDieEvent += - boost::bind(&QtChatWindow::imChatSessionWillDieEventHandler, this, _1); - imChatSession->typingStateChangedEvent += - boost::bind(&QtChatWindow::typingStateChangedEventHandler, this, _1, _2, _3); - //// - - if (imChatSession->getIMContactSet().size() != 0 ) { - IMContact from = *imChatSession->getIMContactSet().begin(); - addChatWidgetTab(imChatSession, from); - } else { - LOG_FATAL("New chat session is empty!"); - } - _qtWengoPhone.setChatWindow(this); -} - -void QtChatWindow::addChatWidgetTab(IMChatSession * imChatSession, const IMContact & from) { - - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - if (qtContactList) { - CContactList & cContactList = qtContactList->getCContactList(); - - QString contactId = QString::fromStdString(cContactList.findContactThatOwns(from)); - std::string tmpNickName; - IMAccount * imAccount = - _cChatHandler.getCUserProfile().getUserProfile().getIMAccountManager().getIMAccount(imChatSession->getIMChat().getIMAccountId()); - if (imAccount) - { - if(imAccount->getDisplayName() != "") - tmpNickName = imAccount->getDisplayName(); - else - tmpNickName = imAccount->getLogin(); - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("cannot get associated IMAccount"); - } - - QString nickName = QString::fromUtf8(tmpNickName.c_str()); - - QString senderName; - if(from.getAlias().size()) - senderName = QString::fromUtf8(from.getAlias().c_str()); - else - senderName = getShortDisplayName(contactId, QString::fromStdString(from.getDisplayContactId())); - - _chatWidget = new QtChatWidget(_cChatHandler, &_qtWengoPhone, imChatSession->getId(), 0 /*parent*/); - SAFE_CONNECT_RECEIVER(_chatWidget, SIGNAL(ctrlTabPressed()), _tabWidget, SLOT(goToNextTab())); - _chatWidget->setNickName(nickName); - _chatWidget->setIMChatSession(imChatSession); - _chatWidget->setContactId(QString::fromStdString(qtContactList->getCContactList().findContactThatOwns(from))); - Q_FOREACH(QTextEdit* textEdit, _chatWidget->findChildren()) { - SAFE_CONNECT(textEdit, SIGNAL(selectionChanged()), - SLOT(updateClipboardActions()) ); - textEdit->installEventFilter(this); - } - - SAFE_CONNECT(qtContactList, SIGNAL(contactChangedEventSignal(QString )), SLOT(statusChangedSlot(QString))); - - int tabNumber; - if (_tabWidget->count() > 0) { - tabNumber = _tabWidget->insertTab(_tabWidget->count(), _chatWidget, senderName); - } else { - tabNumber = _tabWidget->insertTab(0, _chatWidget, senderName); - } - - _mapSession.insertMulti(QString::fromStdString(imChatSession->getIMChat().getIMAccountId()),_chatWidget); - - if (imChatSession->isUserCreated()) { - _tabWidget->setCurrentIndex(tabNumber); - updateClipboardActions(); - } - - statusChangedSlot(QString::fromStdString(cContactList.findContactThatOwns(from))); - - activeTabChanged(_tabWidget->currentIndex()); - - // Adding probably missed message - _lastReceivedMessageIndex[imChatSession->getId()] = -1; - IMChatSession::IMChatMessageList imChatMessageList = - imChatSession->getReceivedMessage(_lastReceivedMessageIndex[imChatSession->getId()] + 1); - if (imChatMessageList.size() > 0) { - _lastReceivedMessageIndex[imChatSession->getId()] += imChatMessageList.size(); - IMChatSession::IMChatMessageList::iterator imChatMessageListIterator = imChatMessageList.begin(); - while (imChatMessageListIterator != imChatMessageList.end()){ - IMChatSession::IMChatMessage * imChatMessage = * imChatMessageListIterator; - - //history chat message are reconstructed with no protocol - QString displayName; - QTime time; - if(imChatMessage->getIMContact().getProtocol() != EnumIMProtocol::IMProtocolUnknown) { - if(from.getAlias().size()) - displayName = QString::fromStdString(from.getAlias()); - else - displayName = getShortDisplayName(contactId, QString::fromStdString(from.getDisplayContactId())); - - } else { - if(imChatMessage->getIMContact().getAlias().size()) - displayName = QString::fromStdString(imChatMessage->getIMContact().getAlias()); - else - displayName = QString::fromStdString(imChatMessage->getIMContact().cleanContactId()); - Time messageTime = imChatMessage->getTime(); - time = QTime(messageTime.getHour(), messageTime.getMinute()); - } - _chatWidget->addToHistory(contactId, displayName, - QString::fromUtf8(imChatMessage->getMessage().c_str()), - time); - - imChatMessageListIterator++; - } - } - //// - - if (imChatSession->isUserCreated()) { - show(); - } else { - if (isActiveWindow() || _qtWengoPhone.getWidget()->isActiveWindow()) { - if (tabNumber != _tabWidget->currentIndex()) { - _tabWidget->setBlinkingTab(tabNumber); - } - show(); - } else { - if (!isVisible()) { - // Make sure the window appears on the taskbar, - // otherwise it won't flash... - showMinimized(); - } - - if (isMinimized()) { - _tabWidget->setCurrentIndex(tabNumber); - } else if (tabNumber != _tabWidget->currentIndex()) { - _tabWidget->setBlinkingTab(tabNumber); - } - - WidgetUtils::flashWindow(this); - showToaster(imChatSession); - } - } - - updateToolBarActions(); - } -} - -void QtChatWindow::showToaster(IMChatSession * imChatSession) { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - if (qtContactList) { - CContactList & cContactList = qtContactList->getCContactList(); - QPixmap avatar; - QtChatToaster * toaster = new QtChatToaster(); - - if (imChatSession->getIMContactSet().size() > 0) { - QString message; - for (IMContactSet::const_iterator it = imChatSession->getIMContactSet().begin(); - it != imChatSession->getIMContactSet().end(); ++it) { - - if (it != imChatSession->getIMContactSet().begin()) { - message += ", "; - } - QString contactId = QString::fromStdString(cContactList.findContactThatOwns((*it))); - if((*it).getAlias().size()) - message += QString::fromStdString((*it).getAlias()); - else - message += getShortDisplayName(contactId, QString::fromStdString((*it).getDisplayContactId())); - - std::string contact = _cChatHandler.getCUserProfile().getCContactList().findContactThatOwns((*it)); - if (!contact.empty()) { - ContactProfile contactProfile = _cChatHandler.getCUserProfile().getCContactList().getContactProfile(contact); - OWPicture picture = contactProfile.getIcon(); - std::string data = picture.getData(); - if (!data.empty()) { - avatar.loadFromData((uchar *) data.c_str(), data.size()); - } - } - } - toaster->setMessage(message); - } - - if (avatar.isNull()) { - std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); - avatar.loadFromData((uchar*)data.c_str(), data.size()); - } - - toaster->setPixmap(avatar); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - Sound::play(config.getAudioIncomingChatFile()); - SAFE_CONNECT(toaster, SIGNAL(chatButtonClicked()), SLOT(show())); - toaster->show(); - } -} - -void QtChatWindow::imChatSessionWillDieEventHandler(IMChatSession & sender) { - _lastReceivedMessageIndex.erase(sender.getId()); -} - -void QtChatWindow::sendSmsToActiveTabContact() { - // retrieve mobile phone number. - QString phoneNumber; - const QString contactId = getActiveTabContactId(); - if (!contactId.isEmpty()) { - ContactProfile contactProfile = getContactProfileFromContactId(contactId); - phoneNumber = QString::fromStdString(contactProfile.getMobilePhone()); - } - //// - - // configure & show the sms widget - QtSms * sms = _qtWengoPhone.getQtSms(); - if (sms) { - sms->setPhoneNumber(phoneNumber); - sms->getWidget()->show(); - } - //// -} - -void QtChatWindow::sendFileToActiveTabContact() { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QtFileTransfer * qtFileTransfer = _qtWengoPhone.getFileTransfer(); - if (!qtFileTransfer) { - return; - } - - QString filename = qtFileTransfer->getChosenFile(); - if (!filename.isEmpty()) { - QFileInfo fileInfo(filename); - config.set(Config::FILETRANSFER_LASTUPLOADEDFILE_FOLDER_KEY, fileInfo.dir().absolutePath().toStdString()); - } - - if (!filename.isEmpty()) { - QtChatWidget * widget = getActiveTabWidget(); - if (widget) { - widget->sendFileToSession(filename); - } - } -} - -void QtChatWindow::callActiveTabContact() { - const QString contactId = getActiveTabContactId(); - if (!contactId.isEmpty()) { - QtContactListManager::getInstance()->startCall(contactId); - if (_qtWengoPhone.getWidget()->isMinimized()) { - _qtWengoPhone.getWidget()->showNormal(); - } -#if defined(OS_WINDOWS) - SetForegroundWindow(_qtWengoPhone.getWidget()->winId()); -#endif - } -} - -void QtChatWindow::showActiveTabContactInfo() { - const QString contactId = getActiveTabContactId(); - if (!contactId.isEmpty()) { - ContactProfile contactProfile = getContactProfileFromContactId(contactId); - QtProfileDetails qtProfileDetails( - *_qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getCUserProfile(), - contactProfile, this, tr("Edit Contact")); - if (qtProfileDetails.show()) { - _qtWengoPhone.getCWengoPhone().getCUserProfileHandler().getCUserProfile()->getCContactList().updateContact(contactProfile); - } - } -} - -void QtChatWindow::saveActiveTabChatHistory() { - QtChatWidget * chatWidget = getActiveTabWidget(); - if (chatWidget) { - chatWidget->saveHistoryAsHtml(); - } -} - -void QtChatWindow::closeEvent(QCloseEvent *event) { - //closeAllTabs(); -} - -void QtChatWindow::closeAllTabs() { - LOG_DEBUG("closing all Chat tabs"); - while(_tabWidget->count()>0) { - closeActiveTab(); - } -} - -static QTextEdit* getActiveTextEdit() { - return qobject_cast(QApplication::focusWidget()); -} - -void QtChatWindow::updateClipboardActions() { - QTextEdit* textEdit = getActiveTextEdit(); - bool modifiable = false; - bool hasSelection = false; - if (textEdit) { - hasSelection = !textEdit->textCursor().selectedText().isEmpty(); - modifiable = !textEdit->isReadOnly(); - } - bool clipboardFilled = !QApplication::clipboard()->text().isEmpty(); - _ui->actionCut->setEnabled(modifiable && hasSelection); - _ui->actionCopy->setEnabled(hasSelection); - _ui->actionPaste->setEnabled(modifiable && clipboardFilled); -} - -void QtChatWindow::cut() { - QTextEdit* textEdit = getActiveTextEdit(); - if (textEdit) { - textEdit->cut(); - } -} - -void QtChatWindow::copy() { - QTextEdit* textEdit = getActiveTextEdit(); - if (textEdit) { - textEdit->copy(); - } -} - -void QtChatWindow::paste() { - QTextEdit* textEdit = getActiveTextEdit(); - if (textEdit) { - textEdit->paste(); - } -} - -bool QtChatWindow::eventFilter(QObject* object, QEvent* event) { - if (!qobject_cast(object)) { - return false; - } - - if (event->type() == QEvent::FocusIn || event->type() == QEvent::FocusOut) { - updateClipboardActions(); - } - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtChatWindow.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATWINDOW_H -#define OWQTCHATWINDOW_H - -#include -#include - -#include - -#include -#include - -#include - -#include -#include - -class QtChatTabWidget; -class QtWengoPhone; -class QtChatWidget; -class IMContact; -class IMChatSession; -class ContactProfile; - -class QAction; -namespace Ui { class ChatMainWindow; } - -/** - * - * @ingroup presentation - * @author Mathieu Stute. - */ -class QtChatWindow : public QMainWindow, public Trackable { - Q_OBJECT -public: - - QtChatWindow(QWidget * parent, CChatHandler & cChatHandler, IMChatSession & imChatSession, QtWengoPhone & qtWengoPhone); - - ~QtChatWindow(); - - void imChatSessionCreatedHandler(IMChatSession * imChatSession); - - void closeEvent(QCloseEvent *event); - -Q_SIGNALS: - - void messageReceivedSignal(IMChatSession * sender); - - void typingStateChangedSignal(const IMChatSession * sender, const IMContact * imContact, const IMChat::TypingState * state); - - void imAccountRemovedEventSignal(const QString &); - -public Q_SLOTS: - - void activeTabChanged(int index); - - void messageReceivedSlot(IMChatSession * sender); - - void show(); - - void typingStateChangedThreadSafe(const IMChatSession * sender, const IMContact * imContact, const IMChat::TypingState * state); - - void imAccountRemovedEventThreadSafe(const QString &); - - void callActiveTabContact(); - - void sendSmsToActiveTabContact(); - - void sendFileToActiveTabContact(); - - void createChatConference(); - - void showActiveTabContactInfo(); - - //TODO - void blockActiveTabContact() {} - - void closeActiveTab(); - - void closeAllTabs(); - - void statusChangedSlot(QString contactId); - - void saveActiveTabChatHistory(); - -protected: - /** - * Installed on QTextEdit widgets. Used to update clipboard actions. - */ - virtual bool eventFilter(QObject* object, QEvent* event); - -private Q_SLOTS: - void cut(); - - void copy(); - - void paste(); - - void updateClipboardActions(); - -private: - - void addChatWidgetTab(IMChatSession * session, const IMContact & from); - - void showToaster(IMChatSession * imChatSession); - - QtChatWidget * getActiveTabWidget(); - - const QString getActiveTabContactId(); - - ContactProfile getContactProfileFromContactId(const QString & contactId); - - void setupMenuBarActions(); - - void setupToolBarActions(); - - void updateToolBarActions(); - - void messageReceivedEventHandler(IMChatSession & sender); - - void typingStateChangedEventHandler(IMChatSession & sender, const IMContact & imContact, IMChat::TypingState state); - - void imChatSessionWillDieEventHandler(IMChatSession & sender); - - void imAccountRemovedEventHandler(IMAccountManager & sender, std::string imAccountId); - - void flashWindow(); - - void showMinimized(); - - QString getShortDisplayName(const QString & contactId, const QString & defaultName) const; - - QtChatWidget * _chatWidget; - - QtChatTabWidget * _tabWidget; - - CChatHandler & _cChatHandler; - - IMChatSession * _imChatSession; - - QtWengoPhone & _qtWengoPhone; - - Ui::ChatMainWindow * _ui; - - /** Index of the last message printed on screen for ecah sessionID **/ - std::map _lastReceivedMessageIndex; - - QMultiMap _mapSession; -}; - -#endif //OWQTCHATWINDOW_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtWengoStyleBar.h" - -#include - -#include - -QtWengoStyleBar::QtWengoStyleBar(QWidget * parent) : - QWidget(parent) { - - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - - // create layout - _layout = new QHBoxLayout(this); - _layout->setMargin(0); - _layout->setSpacing(0); - //// - - // add emoticon label - addLabel( - QPixmap(":/pics/chat/chat_emoticon_button.png"), - QPixmap(":/pics/chat/chat_emoticon_button_on.png"), - SIGNAL(emoticonsLabelClicked()), - WengoStyleLabel::Normal - ); - //// - - // add bold label - addLabel( - QPixmap(":/pics/chat/font_bold.png"), - QPixmap(":/pics/chat/font_bold_on.png"), - SIGNAL(boldLabelClicked()) - ); - //// - - // add italic label - addLabel( - QPixmap(":/pics/chat/font_italic.png"), - QPixmap(":/pics/chat/font_italic_on.png"), - SIGNAL(italicLabelClicked()) - ); - //// - - // add underline label - addLabel( - QPixmap(":/pics/chat/font_underline.png"), - QPixmap(":/pics/chat/font_underline_on.png"), - SIGNAL(underlineLabelClicked()) - ); - //// - - // configure end label - QPixmap fillPixmap = QPixmap(":/pics/chat/bar_fill.png"); - WengoStyleLabel* endLabel = new WengoStyleLabel(this); - endLabel->setPixmaps( - QPixmap(), - QPixmap(":/pics/chat/bar_end.png"), - fillPixmap, - QPixmap(), - QPixmap(":/pics/chat/bar_end.png"), - fillPixmap - ); - int height = fillPixmap.height(); - endLabel->setMinimumSize(QSize(16, height)); - _layout->addWidget(endLabel); - //// - - setFixedHeight(height); - -} - -void QtWengoStyleBar::addLabel( - const QPixmap & normalPixmap, const QPixmap & pressedPixmap, - const char* signal, - WengoStyleLabel::Mode mode) { - - WengoStyleLabel * label = new WengoStyleLabel(this, mode); - - label->setPixmaps( - normalPixmap, - QPixmap(), - QPixmap(), - pressedPixmap, - QPixmap(), - QPixmap() - ); - label->setFixedSize(normalPixmap.size()); - - _layout->addWidget(label); - - connect(label, SIGNAL(clicked()), signal); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/QtWengoStyleBar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTWENGOSTYLEBAR_H -#define OWQTWENGOSTYLEBAR_H - -#include -#include -#include -#include - -#include - -class QHBoxLayout; - -/** - * - * @author Nicolas Couturier - * @author Mathieu Stute - */ -class QtWengoStyleBar : public QWidget { - Q_OBJECT -public: - - /** - * Constructor. - */ - QtWengoStyleBar(QWidget * parent); - -Q_SIGNALS: - - /** - * Emoticon label has been clicked. - */ - void emoticonsLabelClicked(); - - /** - * Font label has been clicked. - */ - void fontLabelClicked(); - - /** - * Font color label has been clicked. - */ - void fontColorLabelClicked(); - - /** - * Bold label has been clicked. - */ - void boldLabelClicked(); - - /** - * Italic label has been clicked. - */ - void italicLabelClicked(); - - /** - * Underline label has been clicked. - */ - void underlineLabelClicked(); - -private: - /** - * Adds a new button in the action bar - * - * @param normalPixmap : the image to be used for the button. - * @param pressedPixmap : the image to be used when the button is pressed. - * @param size : the size of the button. - * @param signal : the signal to emit on click. - * @param mode : the label mode. Set to WengoStyleLabel::Toggled by - * default. - */ - void addLabel(const QPixmap & normalPixmap, const QPixmap & pressedPixmap, - const char* signal, WengoStyleLabel::Mode mode = WengoStyleLabel::Toggled); - - QHBoxLayout* _layout; -}; - -#endif //OWQTWENGOSTYLEBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/UserFrame.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/UserFrame.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/chat/UserFrame.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/chat/UserFrame.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ - - - - - UserFrame - - - - 0 - 0 - 120 - 116 - - - - - 60 - 60 - - - - Form - - - - 0 - - - 0 - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists-install-linux.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,92 +0,0 @@ -# vim: filetype=cmake -set_target_properties( - ${BINARY_NAME} - PROPERTIES - INSTALL_RPATH - ${CMAKE_INSTALL_PREFIX}/lib${LIB_SUFFIX}/qutecom - INSTALL_RPATH_USE_LINK_PATH - ON -) - -install(TARGETS - ${BINARY_NAME} - RUNTIME DESTINATION bin) - -install(PROGRAMS - ${TMP_BUILD_DIR}/libwebcam.so - ${TMP_BUILD_DIR}/libphapi.so - ${TMP_BUILD_DIR}/libphapiutil.so - ${TMP_BUILD_DIR}/phapi-plugins/libphspeexplugin.so - ${TMP_BUILD_DIR}/libsfp-plugin.so - ${TMP_BUILD_DIR}/libowbase.so - ${TMP_BUILD_DIR}/libowsl.so - ${TMP_BUILD_DIR}/libowutil.so - ${TMP_BUILD_DIR}/libpsiidle.so - DESTINATION lib${LIB_SUFFIX}/qutecom - ) - -if (PHAPI_CODEC_AMR_SUPPORT) - install(PROGRAMS - ${TMP_BUILD_DIR}/phapi-plugins/libphamrplugin.so - DESTINATION lib${LIB_SUFFIX}/qutecom) -endif (PHAPI_CODEC_AMR_SUPPORT) - -if (PHAPI_CODEC_ILBC_SUPPORT) - install(PROGRAMS - ${TMP_BUILD_DIR}/phapi-plugins/libphilbcplugin.so - DESTINATION lib${LIB_SUFFIX}/qutecom) -endif (PHAPI_CODEC_ILBC_SUPPORT) - - -if (ENABLE_CRASHREPORT) - install(PROGRAMS - ${TMP_BUILD_DIR}/libowmemorydump.so - DESTINATION lib${LIB_SUFFIX}/qutecom - ) -endif (ENABLE_CRASHREPORT) - -if (CURL_INTERNAL) - install(PROGRAMS - ${TMP_BUILD_DIR}/libcurl.so - DESTINATION lib${LIB_SUFFIX}/qutecom) -endif (CURL_INTERNAL) - -if (LIBPURPLE_INTERNAL) - install(PROGRAMS - ${TMP_BUILD_DIR}/liblibpurple.so - DESTINATION lib${LIB_SUFFIX}/qutecom) -endif (LIBPURPLE_INTERNAL) - -install(DIRECTORY - ${TMP_BUILD_DIR}/lang - DESTINATION ${DATA_INSTALL_DIR} - PATTERN "*.qm") - -install(DIRECTORY - # Keep trailing slash here. See 'install' doc. - ${CMAKE_SOURCE_DIR}/wengophone/resources/ - DESTINATION ${DATA_INSTALL_DIR} - PATTERN "qutecom.css" EXCLUDE - PATTERN ".svn" EXCLUDE - PATTERN "CMakeLists.txt" EXCLUDE) - -install(FILES - ${CMAKE_SOURCE_DIR}/wengophone/res/70QuteCom - DESTINATION lib${LIB_SUFFIX}/pm-utils/sleep.d - PERMISSIONS OWNER_EXECUTE GROUP_EXECUTE WORLD_EXECUTE) - -install(FILES - ${CMAKE_SOURCE_DIR}/wengophone/res/qutecom.desktop - DESTINATION share/applications) - -foreach(size 16 32 48 64) - install(FILES - ${CMAKE_SOURCE_DIR}/wengophone/res/qutecom_${size}x${size}.png - DESTINATION share/icons/hicolor/${size}x${size}/apps/ - RENAME qutecom.png) -endforeach(size) - -install(FILES - ${CMAKE_SOURCE_DIR}/wengophone/COPYING - ${CMAKE_SOURCE_DIR}/wengophone/AUTHORS - DESTINATION ${DATA_INSTALL_DIR}) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,688 +0,0 @@ -set(BINARY_NAME ${APPLICATION_NAME}) -string(REPLACE " " "" BINARY_NAME ${BINARY_NAME}) -if (LINUX) - string(TOLOWER ${BINARY_NAME} BINARY_NAME) -endif (LINUX) -ow_create_executable(${BINARY_NAME}) - -configure_file(buildconfig.h.cmake ${CMAKE_CURRENT_BINARY_DIR}/buildconfig.h) - -subdirs( - lang -) - -ow_use_private_libraries( - owphone - owbuildid - owqtutil - pixertool - webcam - psiidle - owsoftupdater -) - -if (SIPWRAPPER_BACKEND_SIPX) - ow_add_private_definitions( - -DSIPXWRAPPER - ) - - ow_use_private_libraries( - sipxwrapper - ) -else (SIPWRAPPER_BACKEND_SIPX) -if (SIPWRAPPER_BACKEND_PHAPI) - ow_add_private_definitions( - -DPHAPIWRAPPER - ) - - ow_use_private_libraries( - owphapiwrapper - ) -else (SIPWRAPPER_BACKEND_PHAPI) -if (IMWRAPPER_BACKEND_MULTI) - ow_add_private_definitions( - -DMULTIIMWRAPPER - ) - - ow_use_private_libraries( - owmultiimwrapper - ) -endif (IMWRAPPER_BACKEND_MULTI) -endif (SIPWRAPPER_BACKEND_PHAPI) -endif (SIPWRAPPER_BACKEND_SIPX) - -ow_add_private_include_dirs( - ${CMAKE_CURRENT_BINARY_DIR} - ${CMAKE_CURRENT_SOURCE_DIR} -) - -qt4_wrap_cpp(${PROJECT_NAME}_SRCS - QtWengoPhone.h - QtDialpad.h - QtSVGDialpad.h - QtHttpProxyLogin.h - QtIdle.h - QtLanguage.h - QtToolBar.h - QtSystray.h - QtFactory.h - QtPresenceMenuManager.h - QtBrowserWidget.h - QtIMAccountMonitor.h - QtNoWengoAlert.h - - phoneline/QtPhoneLine.h - - phonecall/QtPhoneCall.h - phonecall/QtVideoQt.h - phonecall/QtContactCallListWidget.h - phonecall/QtPhoneCallEventFilter.h - phonecall/QtAudioSmileysWindow.h - - toaster/QtChatToaster.h - toaster/QtCallToaster.h - toaster/QtToaster.h - - login/ILogin.h - login/QtLoginDialog.h - login/QtLogAccount.h - login/QtAddAccount.h - login/QtAddWengoAccount.h - login/QtAddSIPAccount.h - - profile/QtProfileDetails.h - profile/QtUserProfile.h - profile/QtUserProfileHandler.h - - imcontact/QtAdvancedIMContactManager.h - imcontact/QtAddIMContact.h - imcontact/QtSimpleIMContactManager.h - imcontact/QtIMContactManagerInterface.h - - imaccount/QtIMAccountManager.h - imaccount/QtIMAccountSettings.h - imaccount/QtIMAccountPlugin.h - imaccount/QtMSNSettings.h - imaccount/QtYahooSettings.h - imaccount/QtAIMSettings.h - imaccount/QtICQSettings.h - imaccount/QtJabberSettings.h - imaccount/QtGoogleTalkSettings.h - - imaccount/QtFaceBookSettings.h - imaccount/QtMySpaceSettings.h - imaccount/QtSkypeSettings.h - imaccount/QtTwitterSettings.h - - contactlist/QtContactList.h - contactlist/ContactGroupPopupMenu.h - contactlist/QtContactWidget.h - contactlist/QtContactTreeMouseFilter.h - contactlist/QtContactManager.h - contactlist/QtContact.h - contactlist/QtTreeViewDelegate.h - contactlist/QtContactTreeKeyFilter.h - contactlist/QtRenameGroup.h - contactlist/QtConferenceAction.h - - conference/QtConferenceCallWidget.h - - chat/emoticons/QtEmoticonsWidget.h - chat/emoticons/QtEmoticonButton.h - chat/chatroom/QtChatRoomInviteDlg.h - chat/QtChatTabWidget.h - chat/QtChatAvatarFrame.h - chat/QtChatAvatarWidget.h - chat/QtChatHandler.h - chat/QtChatWidget.h - chat/QtChatWindow.h - chat/QtChatEditWidget.h - chat/QtChatHistoryWidget.h - chat/QtWengoStyleBar.h - chat/QtChatLogViewer.h - - webservices/sms/QtSms.h - webservices/softupdate/QtSoftUpdate.h - webservices/softupdate/QtBrowserSoftUpdate.h - - callbar/QtCallBar.h - callbar/QtPhoneComboBox.h - - statusbar/QtStatusBar.h - - config/QtAdvancedConfig.h - config/QtAccountSettings.h - config/QtAdvancedSettings.h - config/QtAppearanceSettings.h - config/QtAudioSettings.h - config/QtCallForwardSettings.h - config/QtGeneralSettings.h - config/QtNotificationSettings.h - config/QtPrivacySettings.h - config/QtVideoSettings.h - config/QtLanguagesSettings.h - config/QtWengoConfigDialog.h - config/QtVoicemailSettings.h - config/QtSecuritySettings.h - - profilebar/QtEventWidget.h - profilebar/QtIMProfileWidget.h - profilebar/QtProfileBar.h - profilebar/QtCreditWidget.h - profilebar/QtIMAccountPresenceMenuManager.h - - history/QtHistoryWidget.h - history/QtHistory.h - - filetransfer/QtFileTransfer.h - filetransfer/QtFileTransferAcceptDialog.h - filetransfer/QtFileTransferWidget.h - filetransfer/QtFileTransferItem.h - filetransfer/QtFileTransferDownloadItem.h - filetransfer/QtFileTransferUploadItem.h - filetransfer/QtFileTransferNotifyDialog.h - - webdirectory/QtWebDirectory.h -) - -ow_add_sources( - ../main.cpp - QtWengoPhone.cpp - QtDialpad.cpp - QtSVGDialpad.cpp - QtAbout.cpp - QtHttpProxyLogin.cpp - QtIdle.cpp - QtEnumIMProtocol.cpp - QtLanguage.cpp - QtToolBar.cpp - QtSystray.cpp - QtFactory.cpp - QtPresenceMenuManager.cpp - QtWengoStyle.cpp - QtBrowserWidget.cpp - QtIMAccountMonitor.cpp - QtPresencePixmapHelper.cpp - QtIMAccountHelper.cpp - QtNoWengoAlert.cpp - - phoneline/QtPhoneLine.cpp - - phonecall/QtPhoneCall.cpp - phonecall/QtVideo.cpp - phonecall/QtVideoQt.cpp - phonecall/QtContactCallListWidget.cpp - phonecall/QtPhoneCallEventFilter.cpp - phonecall/QtAudioSmileysWindow.cpp - - toaster/QtChatToaster.cpp - toaster/QtCallToaster.cpp - toaster/QtToaster.cpp - - login/ILogin.cpp - login/QtLoginDialog.cpp - login/QtLogAccount.cpp - login/QtAddAccount.cpp - login/QtAddWengoAccount.cpp - login/QtAddSIPAccount.cpp - login/QtAddAccountUtils.cpp - - imcontact/QtAdvancedIMContactManager.cpp - imcontact/QtAddIMContact.cpp - imcontact/QtIMContactItem.cpp - imcontact/QtSimpleIMContactManager.cpp - imcontact/QtIMContactManagerInterface.cpp - - profile/QtProfileDetails.cpp - profile/QtUserProfile.cpp - profile/QtUserProfileHandler.cpp - - imaccount/QtIMAccountManager.cpp - imaccount/QtIMAccountSettings.cpp - imaccount/QtIMAccountPlugin.cpp - imaccount/QtMSNSettings.cpp - imaccount/QtYahooSettings.cpp - imaccount/QtAIMSettings.cpp - imaccount/QtICQSettings.cpp - imaccount/QtJabberSettings.cpp - imaccount/QtGoogleTalkSettings.cpp - - imaccount/QtFaceBookSettings.cpp - imaccount/QtMySpaceSettings.cpp - imaccount/QtSkypeSettings.cpp - imaccount/QtTwitterSettings.cpp - - contactlist/QtContactList.cpp - contactlist/ContactGroupPopupMenu.cpp - contactlist/QtContactWidget.cpp - contactlist/QtContactTreeMouseFilter.cpp - contactlist/QtContactManager.cpp - contactlist/QtContactListManager.cpp - contactlist/QtContact.cpp - contactlist/QtTreeViewDelegate.cpp - contactlist/QtContactPixmap.cpp - contactlist/QtContactInfo.cpp - contactlist/QtContactTreeKeyFilter.cpp - contactlist/QtRenameGroup.cpp - contactlist/QtConferenceAction.cpp - contactlist/QtContactMenu.cpp - - conference/QtConferenceCallWidget.cpp - - chat/emoticons/QtEmoticonsWidget.cpp - chat/emoticons/QtEmoticon.cpp - chat/emoticons/QtEmoticonButton.cpp - chat/emoticons/QtEmoticonsManager.cpp - chat/chatroom/QtChatRoomInviteDlg.cpp - chat/chatroom/QtChatRoomTreeWidgetItem.cpp - chat/chatroom/QtChatRoomListWidgetItem.cpp - chat/QtChatTabWidget.cpp - chat/QtChatAvatarFrame.cpp - chat/QtChatAvatarWidget.cpp - chat/QtChatHandler.cpp - chat/QtChatWidget.cpp - chat/QtChatWindow.cpp - chat/QtChatEditWidget.cpp - chat/QtChatHistoryWidget.cpp - chat/QtWengoStyleBar.cpp - chat/QtChatUtils.cpp - chat/QtChatLogViewer.cpp - chat/QtChatTheme.cpp - - webservices/sms/QtSms.cpp - webservices/softupdate/QtSoftUpdate.cpp - webservices/softupdate/QtBrowserSoftUpdate.cpp - - callbar/QtCallBar.cpp - callbar/QtPhoneComboBox.cpp - - statusbar/QtStatusBar.cpp - - config/QtAdvancedConfig.cpp - config/QtAccountSettings.cpp - config/QtAdvancedSettings.cpp - config/QtAppearanceSettings.cpp - config/QtAudioSettings.cpp - config/QtCallForwardSettings.cpp - config/QtGeneralSettings.cpp - config/QtNotificationSettings.cpp - config/QtPrivacySettings.cpp - config/QtVideoSettings.cpp - config/QtLanguagesSettings.cpp - config/QtWengoConfigDialog.cpp - config/QtVoicemailSettings.cpp - config/QtSecuritySettings.cpp - - profilebar/QtEventWidget.cpp - profilebar/QtIMProfileWidget.cpp - profilebar/QtCreditWidget.cpp - profilebar/QtProfileBar.cpp - profilebar/QtIMAccountPresenceMenuManager.cpp - - history/QtHistoryWidget.cpp - history/QtHistory.cpp - - filetransfer/QtFileTransfer.cpp - filetransfer/QtFileTransferAcceptDialog.cpp - filetransfer/QtFileTransferWidget.cpp - filetransfer/QtFileTransferItem.cpp - filetransfer/QtFileTransferDownloadItem.cpp - filetransfer/QtFileTransferUploadItem.cpp - filetransfer/QtFileTransferNotifyDialog.cpp - - webdirectory/QtWebDirectory.cpp -) - -if (WIN32) - qt4_wrap_cpp(${PROJECT_NAME}_SRCS - WinApp.h - ) - - # Create a 4 digit, comma separated, version of the APPLICATION_VERSION - # variable. That is, from x.y.z to x,y,z,0. - string(REPLACE "." "," APPLICATION_VERSION_4DIGITS ${APPLICATION_VERSION}) - set(APPLICATION_VERSION_4DIGITS "${APPLICATION_VERSION_4DIGITS},0,0,0") - string(REGEX REPLACE "([0-9]+,[0-9]+,[0-9]+,[0-9]+).*" "\\1" APPLICATION_VERSION_4DIGITS "${APPLICATION_VERSION_4DIGITS}") - - configure_file( - win32/application.rc - ${BUILD_DIR}/application.rc - ) - - ow_add_sources( - ${BUILD_DIR}/application.rc - WinApp.cpp - ) - ow_add_private_libraries( - qtmain.lib - ) -endif (WIN32) - -if (UNIX AND NOT WIN32) - if (APPLE) - set_source_files_properties(macosx/QtMacApplication.cpp - PROPERTIES - COMPILE_FLAGS "-x objective-c++" - ) - - qt4_wrap_cpp(${PROJECT_NAME}_SRCS - macosx/QtMacApplication.h - ) - - ow_add_sources( - macosx/QtMacApplication.cpp - ) - else (APPLE) - ow_use_private_libraries( - x11 - ) - - if (WENGOPHONE_XV_SUPPORT) - if (X11_XV_FOUND) - ow_add_private_definitions( - -DXV_HWACCEL - ) - - qt4_wrap_cpp(${PROJECT_NAME}_SRCS - phonecall/XVWindow.h - phonecall/QtVideoXV.h - ) - - ow_add_sources( - phonecall/XVWindow.cpp - phonecall/QtVideoXV.cpp - ) - endif (X11_XV_FOUND) - endif (WENGOPHONE_XV_SUPPORT) - endif (APPLE) -endif (UNIX AND NOT WIN32) - -qt4_wrap_ui(${PROJECT_NAME}_SRCS - WengoPhoneWindow.ui - AboutWindow.ui - HttpProxyLoginWindow.ui - DialpadWidget.ui - NoWengoAlert.ui - - login/LogAccount.ui - login/AddAccount.ui - login/AddWengoAccount.ui - login/AddSIPAccount.ui - - imaccount/IMAccountTemplate.ui - imaccount/AIMSettings.ui - imaccount/ICQSettings.ui - imaccount/GoogleTalkSettings.ui - imaccount/IMAccountManager.ui - imaccount/JabberSettings.ui - imaccount/MSNSettings.ui - imaccount/YahooSettings.ui - - imaccount/FaceBookSettings.ui - imaccount/MySpaceSettings.ui - imaccount/SkypeSettings.ui - imaccount/TwitterSettings.ui - - profile/ProfileDetails.ui - - imcontact/IMContactManager.ui - imcontact/AddIMContact.ui - imcontact/SimpleIMContactManager.ui - - webservices/sms/SmsWindow.ui - webservices/softupdate/SoftUpdateWindow.ui - webservices/softupdate/BrowserSoftUpdateWindow.ui - - conference/ConferenceCallWidget.ui - - config/AccountSettings.ui - config/AdvancedConfigWindow.ui - config/GeneralSettings.ui - config/AdvancedSettings.ui - config/AppearanceSettings.ui - config/AudioSettings.ui - config/CallForwardSettings.ui - config/LanguagesSettings.ui - config/ManageBlockedUsersSettings.ui - config/NotificationSettings.ui - config/NotificationSettingsItem.ui - config/PrivacySettings.ui - config/VideoSettings.ui - config/WengoConfigDialog.ui - config/VoicemailSettings.ui - config/SecuritySettings.ui - - - chat/ChatMainWindow.ui - chat/ChatWidget.ui - chat/UserFrame.ui - chat/AvatarFrame.ui - chat/AvatarWidget.ui - chat/ChatLogViewer.ui - - chat/chatroom/ChatRoomInviteWidget.ui - - contactlist/RenameGroupDialog.ui - contactlist/ContactWidget.ui - contactlist/ContactList.ui - - profilebar/CreditWidget.ui - profilebar/EventWidget.ui - profilebar/IMProfileWidget.ui - - toaster/QtChatToaster.ui - toaster/QtCallToaster.ui - - phonecall/PhoneCallWidget.ui - phonecall/VideoWindow.ui - - filetransfer/AcceptDialog.ui - filetransfer/FileTransferDialog.ui - filetransfer/FileTransferItem.ui - filetransfer/NotifyDialog.ui - - history/HistoryWidget.ui - - statusbar/StatusBarWidget.ui -) - -if (ENABLE_CRASHREPORT) - ow_use_private_libraries( - owmemorydump - ) - ow_add_private_definitions( - -DENABLE_CRASHREPORT - ) -endif (ENABLE_CRASHREPORT) - -if (CUSTOM_ACCOUNT) - ow_add_private_definitions( - -DCUSTOM_ACCOUNT - ) - message(STATUS "Custom account activated") -endif (CUSTOM_ACCOUNT) - -if (DISABLE_CALL_FORWARD) - ow_add_private_definitions( - -DDISABLE_CALL_FORWARD - ) - message(STATUS "Call forward deactivated") -endif (DISABLE_CALL_FORWARD) - -if (DISABLE_MANUAL_CALL_FORWARD) - ow_add_private_definitions( - -DDISABLE_MANUAL_CALL_FORWARD - ) - message(STATUS "Manual call forwarding deactivated") -endif (DISABLE_MANUAL_CALL_FORWARD) - -if (DISABLE_SMS) - ow_add_private_definitions( - -DDISABLE_SMS - ) - message(STATUS "Sms deactivated") -endif (DISABLE_SMS) - -if (DISABLE_VOICE_MAIL) - ow_add_private_definitions( - -DDISABLE_VOICE_MAIL - ) - message(STATUS "Voice mail deactivated") -endif (DISABLE_VOICE_MAIL) - -if (DISABLE_FILETRANSFER) - ow_add_private_definitions( - -DDISABLE_FILETRANSFER - ) - message(STATUS "Filetransfer deactivated") -endif (DISABLE_FILETRANSFER) - -if (ENABLE_MYSPACE) - ow_add_private_definitions( - -DENABLE_MYSPACE - ) - message(STATUS "Myspace support activated") -endif(ENABLE_MYSPACE) - -if (ENABLE_FACEBOOK) - ow_add_private_definitions( - -DENABLE_FACEBOOK - ) - message(STATUS "FaceBook support activated") -endif(ENABLE_FACEBOOK) - -if (ENABLE_TWITTER) - ow_add_private_definitions( - -DENABLE_TWITTER - ) - message(STATUS "Twitter support activated") -endif(ENABLE_TWITTER) - -if (ENABLE_SKYPE) - ow_add_private_definitions( - -DENABLE_SKYPE - ) - message(STATUS "Skype support activated") -endif(ENABLE_SKYPE) - - -if (APPLE) - ow_use_private_frameworks( - Cocoa - Carbon - ) - ow_add_private_include_dirs( - /Developer/Headers/FlatCarbon/ - ) - ow_use_private_libraries( - glib2 #comes from gaimimwrapper <- gaim - ) -endif (APPLE) - -if (LINUX) - # Define QT_TRANSLATION_DIR, this is used on Linux to load Qt translations - EXEC_PROGRAM(${QT_QMAKE_EXECUTABLE} - ARGS "-query QT_INSTALL_PREFIX" - OUTPUT_VARIABLE QT_INSTALL_PREFIX) - ow_add_private_definitions( - -DQT_TRANSLATION_DIR='"${QT_INSTALL_PREFIX}/translations"' - ) -endif (LINUX) - -if (WIN32) - if (ENABLE_CONSOLE) - ow_create_project_binary() - else(ENABLE_CONSOLE) - ow_create_project_binary(WIN32) - - endif(ENABLE_CONSOLE) - -else (WIN32) - ow_create_project_binary(MACOSX_BUNDLE) -endif (WIN32) - -ow_locale_release( - ${CMAKE_CURRENT_SOURCE_DIR}/lang -) - -add_dependencies(${BINARY_NAME} lrelease) - -# Bugfix, spaces don't work with install target -string(REPLACE " " "CMAKEBUGWITHSPACES" TMP_BUILD_DIR ${BUILD_DIR}) -string(REPLACE " " "CMAKEBUGWITHSPACES" TMP_SOURCE_DIR ${CMAKE_SOURCE_DIR}) - -# Passes variables to the install script -if (APPLE) - ow_declare_install_script() -else (APPLE) - install( - CODE " - set(SOURCE_DIR ${TMP_SOURCE_DIR}) - set(APPLICATION_NAME ${APPLICATION_NAME}) - set(APPLICATION_VERSION ${APPLICATION_VERSION}) - set(APPLICATION_VERSION_1 ${APPLICATION_VERSION_1}) - set(APPLICATION_VERSION_2 ${APPLICATION_VERSION_2}) - set(APPLICATION_VERSION_3 ${APPLICATION_VERSION_3}) - set(APPLICATION_VERSION_4 ${APPLICATION_VERSION_4}) - set(BUILD_DIR ${TMP_BUILD_DIR}) - set(BUILD_TYPE ${CMAKE_BUILD_TYPE}) - set(DATA_INSTALL_DIR ${DATA_INSTALL_DIR}) - set(INSTALLER_WITH_PDB ${INSTALLER_WITH_PDB}) - set(SVN_REVISION ${SVN_REVISION}) - set(BINARY_NAME ${BINARY_NAME}) - " - ) -endif (APPLE) - -if (LINUX) - include(CMakeLists-install-linux.txt) -endif (LINUX) - -if (WIN32) - # NSIS installer script - install(SCRIPT ../../../nsis/CMakeLists.txt) -endif (WIN32) - - -# zip target: zip ${BUILD_DIR} -string(TOLOWER ${CMAKE_BUILD_TYPE} BUILD_TYPE) -set(ZIP_NAME - ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE} -) - -# Because BuildBot cannot handle random zip names -# Generates 2 zip: one with the -revnumber.tar.bz2 and one with -${SVN_REVISION}.tar.bz2 -set(ZIP_NAME_REVNUMBER - ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE}-revnumber -) -if (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) - set(ZIP_NAME ${ZIP_NAME}-norev) -else (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) - set(ZIP_NAME ${ZIP_NAME}-${SVN_REVISION}) -endif (NOT SVN_REVISION OR SVN_REVISION EQUAL 0) - -set(ZIP_DIR_NAME - ${CMAKE_BINARY_DIR}/${APPLICATION_NAME}-${APPLICATION_VERSION}-${BUILD_TYPE} -) - -if (NOT WIN32) -configure_file( - ${CMAKE_SOURCE_DIR}/scripts/wengophone.sh - ${BUILD_DIR}/${BINARY_NAME}.sh - @ONLY -) -endif (NOT WIN32) - -add_custom_target(zip - COMMAND - "${CMAKE_COMMAND}" - -DSOURCE_DIR="${CMAKE_SOURCE_DIR}" - -DBUILD_DIR="${BUILD_DIR}" - -DZIP_NAME="${ZIP_NAME}" - -DZIP_NAME_REVNUMBER="${ZIP_NAME_REVNUMBER}" - -DZIP_DIR_NAME="${ZIP_DIR_NAME}" - -DBINARY_NAME="${BINARY_NAME}" - -P "${CMAKE_CURRENT_SOURCE_DIR}/CMakeLists-zip.txt" - WORKING_DIRECTORY - ${CMAKE_BINARY_DIR} -) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists-zip.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists-zip.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/CMakeLists-zip.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/CMakeLists-zip.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -# vim: filetype=cmake -include(${SOURCE_DIR}/owbuild/owbuild/OWZipDirectory.cmake) -include(${SOURCE_DIR}/owbuild/owbuild/OWCopyFile.cmake) -include(${SOURCE_DIR}/owbuild/owbuild/OWCopyDirRecursive.cmake) - -if (UNIX) - message(STATUS "Copying shared libraries for ${BINARY_NAME}") - execute_process( - COMMAND ${SOURCE_DIR}/scripts/copy_gnulinux_libs.py ${BUILD_DIR}/${BINARY_NAME} - RESULT_VARIABLE RESULT - ) - if (NOT RESULT EQUAL 0) - message(FATAL_ERROR "Copying shared libraries failed") - endif (NOT RESULT EQUAL 0) -endif (UNIX) - -# Create a new directory with a proper name (for example WengoPhone-2.1-minsizerel rather than just minsizerel) -ow_copy_dir_recursive("${BUILD_DIR}/*" "${ZIP_DIR_NAME}/.") - -ow_zip_directory(${ZIP_DIR_NAME} "${ZIP_NAME}") - -if (UNIX) - # Because BuildBot cannot handle random zip names - # Generates 2 zip: one with the -revnumber.tar.bz2 and one with -${SVN_REVISION}.tar.bz2 - ow_copy_file("${ZIP_NAME}.tar.bz2" "${ZIP_NAME_REVNUMBER}.tar.bz2") -endif (UNIX) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/ConferenceCallWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/ConferenceCallWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/ConferenceCallWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/ConferenceCallWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,491 +0,0 @@ - - - - - ConferenceCallWidget - - - - 0 - 0 - 387 - 257 - - - - @product@ - Create a Conference - - - true - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 369 - 16 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Start - - - - - - - Cancel - - - - - - - - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - 100 - - - - - - - 0 - - - 6 - - - - - - 212 - 0 - - - - - 212 - 16777215 - - - - - - - - - 212 - 0 - - - - - 212 - 16777215 - - - - - - - - Phone number 2: - - - - - - - Phone number 1: - - - - - - - - 28 - 28 - - - - - - - :/pics/iconbar/add_contact.png - - - - 22 - 22 - - - - true - - - - - - - - 28 - 28 - - - - ... - - - :/pics/iconbar/add_contact.png - - - - 22 - 22 - - - - true - - - - - - - - - - phoneNumber1LineEdit - phoneNumber2LineEdit - peer1ToolButton - peer2ToolButton - startButton - cancelButton - - - - - - - cancelButton - clicked() - ConferenceCallWidget - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/ConferenceInviteWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/ConferenceInviteWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/ConferenceInviteWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/ConferenceInviteWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,438 +0,0 @@ - - - - - ConferenceInviteWidget - - - - 0 - 0 - 400 - 300 - - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - true - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - 100 - - - - - - - 0 - - - 6 - - - - - &Add >> - - - - - - - << &Remove - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - QAbstractItemView::MultiSelection - - - - Available Contacts - - - - - - - - QAbstractItemView::MultiSelection - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - &Start - - - - - - - Cancel - - - - - - - - - - contactListTreeWidget - addButton - removeButton - conferenceListWidget - startButton - closeButton - - - - - - - closeButton - clicked() - ConferenceInviteWidget - close() - - - 366 - 278 - - - 397 - 274 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,149 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtConferenceCallWidget.h" - -#include "ui_ConferenceCallWidget.h" - -#include - -#include -#include - -#include -#include -#include -#include - -#include - -QtConferenceCallWidget::QtConferenceCallWidget(QWidget * parent, CWengoPhone & cWengoPhone, IPhoneLine * phoneLine , bool startConference) - : QDialog(parent), _phoneLine(phoneLine), _cWengoPhone(cWengoPhone),_startConference(startConference) { - - _currentPeer = 1; - - _ui = new Ui::ConferenceCallWidget(); - _ui->setupUi(this); - - _menu = new QMenu(this); - _wengoMenu = new QMenu(_menu); - _wengoMenu->setTitle(tr("Call @company@")); - _sipMenu = new QMenu(_menu); - _sipMenu->setTitle(tr("Call SIP")); - _landLineMenu = new QMenu(_menu); - _landLineMenu->setTitle(tr("Call land line")); - _mobileMenu = new QMenu(_menu); - _mobileMenu->setTitle(tr("Call Mobile")); - _menu->addMenu(_wengoMenu); - _menu->addMenu(_landLineMenu); - _menu->addMenu(_mobileMenu); - _menu->addMenu(_sipMenu); - - WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/conference.png", WidgetBackgroundImage::AdjustSize); - - SAFE_CONNECT(_ui->startButton, SIGNAL(clicked()), SLOT(startClicked())); - SAFE_CONNECT(_ui->cancelButton, SIGNAL(clicked()), SLOT(reject())); - SAFE_CONNECT(_ui->peer1ToolButton, SIGNAL(clicked()), SLOT(peer1ToolButtonClicked())); - SAFE_CONNECT(_ui->peer2ToolButton, SIGNAL(clicked()), SLOT(peer2ToolButtonClicked())); - - SAFE_CONNECT(_wengoMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); - SAFE_CONNECT(_landLineMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); - SAFE_CONNECT(_mobileMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); - SAFE_CONNECT(_sipMenu, SIGNAL(triggered(QAction *)), SLOT(updateLineEdit(QAction *))); -} - -QtConferenceCallWidget::~QtConferenceCallWidget() { - OWSAFE_DELETE(_ui); -} - -void QtConferenceCallWidget::setFirstPeer(std::string peer) { - _ui->phoneNumber1LineEdit->setText(QString::fromStdString(peer)); - _ui->phoneNumber1LineEdit->setReadOnly(true); -} - -void QtConferenceCallWidget::startClicked() { - - if ((!_ui->phoneNumber1LineEdit->text().isEmpty()) && (!_ui->phoneNumber2LineEdit->text().isEmpty())) - { - - if(_startConference) - { - ConferenceCall * confCall = new ConferenceCall(*_phoneLine); - confCall->addPhoneNumber(_ui->phoneNumber1LineEdit->text().toStdString()); - confCall->addPhoneNumber(_ui->phoneNumber2LineEdit->text().toStdString()); - } - accept(); - - } else { - if (_ui->phoneNumber1LineEdit->text().isEmpty()) { - _ui->phoneNumber1LineEdit->setFocus(); - } else { - _ui->phoneNumber2LineEdit->setFocus(); - } - } -} - -QString QtConferenceCallWidget::getSecondPeer() -{ - return _ui->phoneNumber2LineEdit->text(); -} - -void QtConferenceCallWidget::peer1ToolButtonClicked() { - _currentPeer = 1; - showMenu(_ui->peer1ToolButton->pos()); -} - -void QtConferenceCallWidget::peer2ToolButtonClicked() { - _currentPeer = 2; - showMenu(_ui->peer2ToolButton->pos()); -} - -void QtConferenceCallWidget::showMenu(QPoint point) { - point.setX(point.x() + _ui->peer2ToolButton->rect().width()); - populateMenus(); - _menu->popup(mapToGlobal(point)); -} - -void QtConferenceCallWidget::populateMenus() { - _sipMenu->clear(); - _wengoMenu->clear(); - _landLineMenu->clear(); - _mobileMenu->clear(); - - QtContactMenu::populateMobilePhoneMenu(_mobileMenu, _cWengoPhone); - QtContactMenu::populateWengoCallMenu(_wengoMenu, _cWengoPhone); - QtContactMenu::populateHomePhoneMenu(_landLineMenu, _cWengoPhone); - QtContactMenu::populateSipCallMenu(_sipMenu, _cWengoPhone); -} - -void QtConferenceCallWidget::updateLineEdit(QAction * action) { - if (action) { - QString data = action->data().toString(); - switch (_currentPeer) { - case 1: - _ui->phoneNumber1LineEdit->setText(data); - break; - case 2: - _ui->phoneNumber2LineEdit->setText(data); - break; - default: - LOG_FATAL("Unknown _currentPeer"); - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/conference/QtConferenceCallWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONFERENCECALLWIDGET_H -#define OWQTCONFERENCECALLWIDGET_H - -#include - -class IPhoneLine; -class CWengoPhone; -class QMenu; -class QPoint; - -namespace Ui { class ConferenceCallWidget; } - -/** - * - * @author Mathieu Stute - */ -class QtConferenceCallWidget : public QDialog { - Q_OBJECT - -public: - - /** - * Constructor. - */ - QtConferenceCallWidget(QWidget * parent, CWengoPhone & cWengoPhone, IPhoneLine * phoneLine , bool startConference = true); - - /** - * Destructor. - */ - virtual ~QtConferenceCallWidget(); - - void setFirstPeer(std::string peer); - - QString getSecondPeer(); - -private Q_SLOTS: - - /** - * The user has clicked the start button. - */ - void startClicked(); - - void peer1ToolButtonClicked(); - - void peer2ToolButtonClicked(); - - void updateLineEdit(QAction * action); - -private: - - bool _startConference; - - void populateMenus(); - - void showMenu(QPoint point); - - IPhoneLine * _phoneLine; - - QMenu * _menu; - - QMenu * _wengoMenu; - - QMenu * _sipMenu; - - QMenu * _landLineMenu; - - QMenu * _mobileMenu; - - CWengoPhone & _cWengoPhone; - - int _currentPeer; - - Ui::ConferenceCallWidget * _ui; -}; - -#endif //OWQTCONFERENCECALLWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AccountSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AccountSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AccountSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AccountSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - AccountSettings - - - - 0 - 0 - 441 - 308 - - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - &Edit my profile - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AdvancedConfigWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AdvancedConfigWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AdvancedConfigWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AdvancedConfigWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ - - - - - AdvancedConfigWindow - - - - 0 - 0 - 523 - 426 - - - - @product@ - Advanced Configuration - - - - 9 - - - 6 - - - - - QAbstractItemView::SelectRows - - - - Preference Name - - - - - Status - - - - - Type - - - - - Value - - - - - Default Value - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 251 - 26 - - - - - - - - Close - - - - - - - Save - - - - - - - - - - tableWidget - saveButton - closeButton - - - - - - - closeButton - clicked() - AdvancedConfigWindow - reject() - - - 416 - 463 - - - 237 - 455 - - - - - saveButton - clicked() - AdvancedConfigWindow - accept() - - - 330 - 466 - - - 136 - 458 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AdvancedSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AdvancedSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AdvancedSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AdvancedSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ - - AdvancedSettings - - - - 0 - 0 - 444 - 447 - - - - - 9 - - - 6 - - - - - false - - - Advanced Settings - - - - 9 - - - 6 - - - - - Automatically answer incoming calls from - - - true - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - Add - - - - - - - Remove - - - - - - - - - - - - - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - Qt::AlignCenter - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Advanced Configuration Window - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 21 - 32 - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AppearanceSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AppearanceSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AppearanceSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AppearanceSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ - - - AppearanceSettings - - - - 0 - 0 - 525 - 587 - - - - Form - - - - - - Toolbar - - - - - - &Icons && Text - - - true - - - - - - - Icons &Only - - - - - - - &Hidden - - - - - - - - - - Chat Theme - - - - - - - 0 - 0 - - - - - - - - - - - - - - - - - - QtChatHistoryWidget - QTextBrowser -
chat/QtChatHistoryWidget.h
-
-
- - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AudioSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AudioSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/AudioSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/AudioSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,365 +0,0 @@ - - - AudioSettings - - - - 0 - 0 - 476 - 633 - - - - - - - - - - - - - 0 - 0 - - - - &Input device: - - - inputDeviceComboBox - - - - - - - - 0 - 0 - - - - &Output device: - - - outputDeviceComboBox - - - - - - - - 0 - 0 - - - - :/pics/audio/speaker.png - - - - - - - - 0 - 0 - - - - :/pics/audio/speaker.png - - - - - - - - 0 - 0 - - - - &Ringing device: - - - ringingDeviceComboBox - - - - - - - - - - - - - - 0 - 0 - - - - :/pics/audio/microphone.png - - - - - - - - - &Make a test call - - - - - - - Qt::Horizontal - - - - 181 - 20 - - - - - - - - - - Test - - - - - - - Test - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 125 - 16 - - - - - - - - - - &Half Duplex - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 125 - 16 - - - - - - - - - - &Advanced >> - - - - :/pics/config/advanced.png:/pics/config/advanced.png - - - false - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Audio Codecs - - - false - - - - - - Reset - - - - - - - - - - - - - - :/pics/up.png:/pics/up.png - - - - - - - - - - - :/pics/down.png:/pics/down.png - - - - - - - Qt::Vertical - - - - 75 - 141 - - - - - - - - - - - 0 - 0 - - - - - - - :/pics/important.png - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - 0 - - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - true - - - - - - - - - - - - Qt::Vertical - - - - 452 - 16 - - - - - - - - inputDeviceComboBox - outputDeviceComboBox - testOutputDeviceButton - ringingDeviceComboBox - testRingingDeviceButton - makeTestCallButton - AdvButton - audioCodecListWidget - UpButton - DownButton - ResetButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/CallForwardSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/CallForwardSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/CallForwardSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/CallForwardSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,215 +0,0 @@ - - CallForwardSettings - - - - 0 - 0 - 462 - 403 - - - - - 9 - - - 6 - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - true - - - - - - - Disable call forwarding - - - - - - - Forward all unanswered calls to message box - - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - - 0 - - - 6 - - - - - 3rd: - - - - - - - 1st: - - - - - - - 2nd: - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - false - - - (+ country code) phone number - - - - - - - false - - - (+ country code) phone number - - - - - - - false - - - (+ country code) phone number - - - - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - true - - - - - - - Qt::Vertical - - - - 400 - 16 - - - - - - - - - ToolTipLineEdit - QLineEdit -
ToolTipLineEditProxy.h
-
-
- - disableRadioButton - forwardToVoiceMailRadioButton - forwardToNumberRadioButton - phoneNumber1Edit - phoneNumber2Edit - phoneNumber3Edit - - - - - forwardToNumberRadioButton - toggled(bool) - phoneNumber1Edit - setEnabled(bool) - - - 287 - 193 - - - 187 - 223 - - - - - forwardToNumberRadioButton - toggled(bool) - phoneNumber2Edit - setEnabled(bool) - - - 287 - 193 - - - 187 - 254 - - - - - forwardToNumberRadioButton - toggled(bool) - phoneNumber3Edit - setEnabled(bool) - - - 287 - 193 - - - 187 - 285 - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/GeneralSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/GeneralSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/GeneralSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/GeneralSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,219 +0,0 @@ - - - GeneralSettings - - - - 0 - 0 - 485 - 494 - - - - - 6 - - - 9 - - - - - When I start my computer - - - - 9 - - - 6 - - - - - Automatically start @product@ - - - - - - - Start in background mode - - - - - - - - - - When I double-click on a contact - - - - 9 - - - 6 - - - - - Prefere start a free call if applicable - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 41 - 21 - - - - - - - - Call cell phone or land line if contact not online - - - - - - - - - - 0 - 0 - - - - :/pics/contact/chat.png - - - - - - - - 0 - 0 - - - - :/pics/contact/call.png - - - - - - - Prefere start a chat - - - - - - - - - - Idle status - - - - 9 - - - 6 - - - - - - 0 - 0 - - - - :/pics/status/away.png - - - - - - - minutes - - - - - - - - 40 - 16777215 - - - - 1 - - - - - - - Show me as "Away" when I am inactive for: - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - startWengoPhoneCheckBox - startFreeCallRadioButton - callCellPhoneCheckBox - startChatOnlyRadioButton - showAwayCheckBox - awaySpinBox - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/LanguagesSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/LanguagesSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/LanguagesSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/LanguagesSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ - - - LanguagesSettings - - - - 0 - 0 - 535 - 493 - - - - - - - - - - Google Translate - - - - - - language to convert the messages received - - - - - - - true - - - - - - - language to convert the messages sent - - - - - - - - - - - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - true - - - - - - - More information here. - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/ManageBlockedUsersSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/ManageBlockedUsersSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/ManageBlockedUsersSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/ManageBlockedUsersSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ - - - - - ManageBlockedUsersSettings - - - - 0 - 0 - 357 - 247 - - - - @product@ - Manage blocked users - - - - 9 - - - 6 - - - - - - - - 0 - - - 6 - - - - - Unblock User - - - - - - - Qt::Vertical - - - - 20 - 141 - - - - - - - - Close - - - - - - - - - Manage blocked users - - - - - - - - listView - unblockUserButton - closeButton - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/NotificationSettingsItem.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/NotificationSettingsItem.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/NotificationSettingsItem.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/NotificationSettingsItem.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,159 +0,0 @@ - - - - - NotificationSettingsItem - - - - 0 - 0 - 400 - 69 - - - - - 0 - - - 6 - - - - - - - - - - - - - 5 - 1 - 0 - 0 - - - - QFrame::Raised - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - Sound file - - - - - - - Find a sound file - - - - - - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 10 - 20 - - - - - - - - Play sound file - - - Play - - - :/pics/play.png - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 12 - - - - - - - - - soundLineEdit - browseButton - playButton - - - - - - - checkBox - toggled(bool) - frame - setEnabled(bool) - - - 41 - 53 - - - 46 - 105 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/NotificationSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/NotificationSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/NotificationSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/NotificationSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ - - NotificationSettings - - - - 0 - 0 - 389 - 243 - - - - - 9 - - - 6 - - - - - Select the events for which a sound should be played. - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/PrivacySettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/PrivacySettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/PrivacySettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/PrivacySettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,206 +0,0 @@ - - - - - PrivacySettings - - - false - - - - 0 - 0 - 346 - 327 - - - - - 0 - - - 0 - - - - - Privacy Rules - - - - 9 - - - 6 - - - - - When I sign into @company@ - - - - 9 - - - 6 - - - - - - 0 - 5 - 0 - 0 - - - - :/pics/status/invisible.png - - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - - - - - Allow chats from - - - - 9 - - - 6 - - - - - - 0 - 5 - 0 - 0 - - - - :/pics/contact/chat.png - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - - - - - Allow calls from - - - - 9 - - - 6 - - - - - Only people from my contact list - - - - - - - Anyone - - - - - - - - 0 - 5 - 0 - 0 - - - - :/pics/contact/call.png - - - - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - 16777215 - 16777215 - - - - Manage blocked users - - - - - - - - allowCallsFromAnyoneRadioButton - allowCallsOnlyFromContactListRadioButton - allowChatsFromAnyoneRadioButton - allowChatsFromOnlyContactListRadioButton - alwaysSignAsInvisible - manageBlockedUsersButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAccountSettings.h" - -#include "ui_AccountSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -#include - -QtAccountSettings::QtAccountSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::AccountSettings(); - _ui->setupUi(this); - - // Edit profile button - QtWengoPhone *qtWengoPhone = dynamic_cast(cWengoPhone.getPresentation()); - QtToolBar *toolbar = &qtWengoPhone->getQtToolBar(); - SAFE_CONNECT_RECEIVER(_ui->editProfileButton, SIGNAL(clicked()), - toolbar, SLOT(editMyProfile())); - - // IM Account list - QtIMAccountManager * imAccountManager = new QtIMAccountManager(cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile(), - false, NULL); - - QWidget* widget = imAccountManager->getWidget(); - widget->setParent(_ui->imAccountFrame); - QVBoxLayout* layout = new QVBoxLayout(_ui->imAccountFrame); - layout->setMargin(0); - layout->addWidget(widget); -} - -QtAccountSettings::~QtAccountSettings() { - delete _ui; -} - -QString QtAccountSettings::getName() const { - return tr("Accounts"); -} - -QString QtAccountSettings::getTitle() const { - return tr("Accounts Settings"); -} - -QString QtAccountSettings::getIconName() const { - return "imaccounts"; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAccountSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTACCOUNTSETTINGS_H -#define QTACCOUNTSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; - -class QString; -class QWidget; -namespace Ui { class AccountSettings; } - -/** - * Handles SIP and IM accounts. - * - * @author Tanguy Krotoff - */ -class QtAccountSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtAccountSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtAccountSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig() { } - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig() { } - - Ui::AccountSettings * _ui; -}; - -#endif //QTACCOUNTSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAdvancedConfig.h" - -#include "ui_AdvancedConfigWindow.h" - -#include - -#include -#include - -#include - -static const int KEY_NAME_COLUMN = 0; -static const int STATUS_COLUMN = 1; -static const int TYPE_COLUMN = 2; -static const int VALUE_COLUMN = 3; -static const int DEFAULT_VALUE_COLUMN = 4; - -static const QString TYPE_STRING = "string"; -static const QString TYPE_STRINGLIST = "stringlist"; -static const QString TYPE_BOOLEAN = "boolean"; -static const QString TYPE_INTEGER = "integer"; - -QtAdvancedConfig::QtAdvancedConfig(QWidget * parent) - : QDialog(parent) { - - _ui = new Ui::AdvancedConfigWindow(); - _ui->setupUi(this); - - connect(_ui->saveButton, SIGNAL(clicked()), SLOT(saveConfig())); -} - -QtAdvancedConfig::~QtAdvancedConfig() { - delete _ui; -} - -void QtAdvancedConfig::populate() { - //_ui->tableWidget->clear(); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - StringList keys = config.getAllKeys(); - for ( unsigned i = 0; i < keys.size(); i++) { - if (i >= (unsigned int) _ui->tableWidget->rowCount()) { - _ui->tableWidget->insertRow(i); - } - - std::string key = keys[i]; - QTableWidgetItem * itemKey = new QTableWidgetItem(QString::fromStdString(key)); - _ui->tableWidget->setItem(i, KEY_NAME_COLUMN, itemKey); - - boost::any value = config.getAny(key); - if (!value.empty()) { - setItem(value, i, VALUE_COLUMN); - } - - boost::any defaultValue = config.getDefaultValue(key); - if (!defaultValue.empty()) { - setItem(defaultValue, i, DEFAULT_VALUE_COLUMN); - } - - } -} - -void QtAdvancedConfig::setItem(boost::any value, int row, int column) { - QTableWidgetItem * itemValue = NULL; - QTableWidgetItem * itemType = NULL; - if (Settings::isBoolean(value)) { - itemType = new QTableWidgetItem(TYPE_BOOLEAN); - bool tmp = boost::any_cast(value); - if (tmp) { - itemValue = new QTableWidgetItem("true"); - } else { - itemValue = new QTableWidgetItem("false"); - } - } else if (Settings::isInteger(value)) { - itemType = new QTableWidgetItem(TYPE_INTEGER); - int tmp = boost::any_cast(value); - itemValue = new QTableWidgetItem(QString::fromStdString(String::fromNumber(tmp))); - } else if (Settings::isString(value)) { - itemType = new QTableWidgetItem(TYPE_STRING); - std::string tmp = boost::any_cast(value); - itemValue = new QTableWidgetItem(QString::fromStdString(tmp)); - } else if (Settings::isStringList(value)) { - itemType = new QTableWidgetItem(TYPE_STRINGLIST); - StringList tmp = boost::any_cast(value); - //itemValue = new QTableWidgetItem(QString::fromStdString(tmp)); - } else { - LOG_FATAL("unknown type"); - } - - _ui->tableWidget->setItem(row, column, itemValue); - _ui->tableWidget->setItem(row, TYPE_COLUMN, itemType); -} - -void QtAdvancedConfig::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - const int tableSize = _ui->tableWidget->rowCount(); - for (int row = 0; row < tableSize; row++) { - - QTableWidgetItem * itemKey = _ui->tableWidget->item(row, KEY_NAME_COLUMN); - if (!itemKey) { - continue; - } - std::string key = itemKey->text().toStdString(); - - QTableWidgetItem * itemValue = _ui->tableWidget->item(row, VALUE_COLUMN); - if (!itemValue) { - continue; - } - - QTableWidgetItem * itemType = _ui->tableWidget->item(row, TYPE_COLUMN); - if (!itemType) { - continue; - } - - if (itemType->text() == TYPE_BOOLEAN) { - String tmp = itemValue->text().toStdString(); - config.set(key, tmp.toBoolean()); - } else if (itemType->text() == TYPE_INTEGER) { - String tmp = itemValue->text().toStdString(); - config.set(key, tmp.toInteger()); - } else if (itemType->text() == TYPE_STRING) { - std::string tmp = itemValue->text().toStdString(); - config.set(key, tmp); - } else if (itemType->text() == TYPE_STRINGLIST) { - //std::string tmp = itemValue->text().toStdString(); - //config.set(key, tmp); - } else { - LOG_FATAL("unknown type"); - } - } - WebBrowser::setBrowser(config.getLinuxPreferedBrowser()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedConfig.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTADVANCEDCONFIG_H -#define QTADVANCEDCONFIG_H - -#include - -#include - -#include - -class QWidget; -class QDialog; -namespace Ui { class AdvancedConfigWindow; } - -/** - * Firefox' about:config like window. - * - * Shows the key/value settings. - * - * @author Tanguy Krotoff - */ -class QtAdvancedConfig : public QDialog, NonCopyable { - Q_OBJECT -public: - - QtAdvancedConfig(QWidget * parent); - - ~QtAdvancedConfig(); - - void populate(); - -private Q_SLOTS: - - void saveConfig(); - -private: - - void setItem(boost::any value, int row, int column); - - Ui::AdvancedConfigWindow * _ui; -}; - -#endif //QTADVANCEDCONFIG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAdvancedSettings.h" - -#include "ui_AdvancedSettings.h" - -#include "QtAdvancedConfig.h" - -#include - -QtAdvancedSettings::QtAdvancedSettings(QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::AdvancedSettings(); - _ui->setupUi(this); - _ui->advancedGroupBox->hide(); - - connect(_ui->advancedConfigWindowButton, SIGNAL(clicked()), SLOT(showAdvancedConfigWindow())); - - readConfig(); -} - -QtAdvancedSettings::~QtAdvancedSettings() { - delete _ui; -} - -QString QtAdvancedSettings::getName() const { - return tr("Advanced"); -} - -QString QtAdvancedSettings::getTitle() const { - return tr("Advanced Settings"); -} - -QString QtAdvancedSettings::getIconName() const { - return "advanced"; -} - -void QtAdvancedSettings::readConfig() { -} - -void QtAdvancedSettings::saveConfig() { -} - -void QtAdvancedSettings::showAdvancedConfigWindow() { - QtAdvancedConfig * configWindow = new QtAdvancedConfig(this); - - configWindow->populate(); - configWindow->exec(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAdvancedSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTADVANCEDSETTINGS_H -#define QTADVANCEDSETTINGS_H - -#include "QtISettings.h" - -#include - -namespace Ui { class AdvancedSettings; } - -/** - * Advanced configuration panel. - * - * @author Tanguy Krotoff - */ -class QtAdvancedSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtAdvancedSettings(QWidget * parent); - - virtual ~QtAdvancedSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private Q_SLOTS: - - void showAdvancedConfigWindow(); - -private: - - virtual void readConfig(); - - Ui::AdvancedSettings * _ui; -}; - -#endif //QTADVANCEDSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,187 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAppearanceSettings.h" - -#include "ui_AppearanceSettings.h" - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -static const int THEMELIST_MINIMUM_WIDTH = 150; - -QtAppearanceSettings::QtAppearanceSettings(QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::AppearanceSettings(); - _ui->setupUi(this); - _ui->themePreviewBrowser->setTranslate(false); - -#if defined(OS_MACOSX) - _ui->groupBox->hide(); -#endif - - SAFE_CONNECT(_ui->themeListWidget,SIGNAL(itemClicked(QListWidgetItem *)),SLOT(updatePreview()) ); - - connect(_ui->themePreviewBrowser,SIGNAL(loadFinished(bool)),this,SLOT(loadFinished(bool))); - connect(_ui->comboBox,SIGNAL(activated(const QString & )),this,SLOT(activatedVariant( const QString &))); - - readConfig(); - updatePreview(); -} - -QtAppearanceSettings::~QtAppearanceSettings() { - OWSAFE_DELETE(_ui); -} - -void QtAppearanceSettings::activatedVariant ( const QString & variant ) -{ - QListWidgetItem* item = _ui->themeListWidget->currentItem(); - if (!item) { - return; - } - - int row = _ui->themeListWidget->row(item); - QString theme = _themeList[row]; - - _ui->themePreviewBrowser->setTheme(theme,variant); -} - -void QtAppearanceSettings::updatePreview() { - _ui->themePreviewBrowser->clear(); - _ui->comboBox->clear(); - - QListWidgetItem* item = _ui->themeListWidget->currentItem(); - if (!item) { - return; - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - int row = _ui->themeListWidget->row(item); - QString theme = _themeList[row]; - - _ui->comboBox->addItems(QtChatTheme::getThemeListVariant(theme)); - _ui->themePreviewBrowser->setTheme(theme,_ui->comboBox->currentText ()); - -} - -void QtAppearanceSettings::loadFinished ( bool ok ) -{ - _ui->themePreviewBrowser->insertMessage("self", tr("Me"), tr("Hello"), QTime(12, 34)); - _ui->themePreviewBrowser->insertMessage("self", tr("Me"), tr("How are you?"), QTime(12, 34)); - _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("I am fine"), QTime(12, 40)); - _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("Have to go"), QTime(12, 50)); - _ui->themePreviewBrowser->insertMessage("other", tr("Other"), tr("Bye"), QTime(12, 51)); - _ui->themePreviewBrowser->insertStatusMessage("Other has left", QTime(12, 51)); -} - -QString QtAppearanceSettings::getName() const { - return tr("Appearance"); -} - -QString QtAppearanceSettings::getTitle() const { - return tr("Appearance Settings"); -} - -QString QtAppearanceSettings::getIconName() const { - return "appearance"; -} - -void QtAppearanceSettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - // Toolbar -#ifndef OS_MACOSX - EnumToolBarMode::ToolBarMode mode; - if (_ui->hiddenRadioButton->isChecked()) { - mode = EnumToolBarMode::ToolBarModeHidden; - } else if (_ui->iconsOnlyRadioButton->isChecked()) { - mode = EnumToolBarMode::ToolBarModeIconsOnly; - } else { - mode = EnumToolBarMode::ToolBarModeTextUnderIcons; - } - std::string text = EnumToolBarMode::toString(mode); - config.set(Config::GENERAL_TOOLBARMODE_KEY, text); -#endif - - // Theme - QListWidgetItem* item = _ui->themeListWidget->currentItem(); - if (item) { - int row = _ui->themeListWidget->row(item); - QString theme = _themeList[row]; - config.set(Config::APPEARANCE_CHATTHEME_KEY, theme.toStdString()); - config.set(Config::APPEARANCE_CHATTHEMEVARIANT_KEY, _ui->comboBox->currentText ().toStdString()); - } else { - LOG_WARN("No current chat theme"); - } -} - -void QtAppearanceSettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string text = config.getToolBarMode(); - EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::toToolBarMode(text); - - // Toolbar - if (toolBarMode == EnumToolBarMode::ToolBarModeHidden) { - _ui->hiddenRadioButton->setChecked(true); - } else if (toolBarMode == EnumToolBarMode::ToolBarModeIconsOnly) { - _ui->iconsOnlyRadioButton->setChecked(true); - } else { - _ui->textUnderIconsRadioButton->setChecked(true); - } - - // Theme - QString currentTheme = QString::fromUtf8(config.getChatTheme().c_str()); - _themeList = QtChatTheme::getThemeList(); - Q_FOREACH(QString themeDir, _themeList) { - QListWidgetItem* item = new QListWidgetItem(_ui->themeListWidget); - - QString name = themeDir; - // Prettify the name a bit - name[0] = name[0].toUpper(); - item->setText(name); - - _ui->themeListWidget->addItem(item); - if (themeDir == currentTheme) { - _ui->comboBox->addItems(QtChatTheme::getThemeListVariant(themeDir)); - _ui->comboBox->setCurrentIndex(_ui->comboBox->findText (QString::fromStdString(config.getChatThemeVariant()))); - - _ui->themeListWidget->setCurrentItem(item); - _ui->themePreviewBrowser->setTheme(currentTheme,_ui->comboBox->currentText ()); - } - } - - int width = WidgetUtils::computeListViewMinimumWidth(_ui->themeListWidget); - if (width < THEMELIST_MINIMUM_WIDTH) { - width = THEMELIST_MINIMUM_WIDTH; - } - _ui->themeListWidget->setFixedWidth(width); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAppearanceSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTAPPEARANCESETTINGS_H -#define QTAPPEARANCESETTINGS_H - -#include "QtISettings.h" - -#include - -namespace Ui { class AppearanceSettings; } - -/** - * Appearance configuration panel. - * - * @author Aurelien Gateau - */ -class QtAppearanceSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtAppearanceSettings(QWidget * parent); - - virtual ~QtAppearanceSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private Q_SLOTS: - void updatePreview(); - void loadFinished ( bool ok ); - void activatedVariant ( const QString & variant ); - -private: - - virtual void readConfig(); - - Ui::AppearanceSettings * _ui; - - QStringList _themeList; -}; - -#endif //QTAPPEARANCESETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,373 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAudioSettings.h" - -#include "ui_AudioSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include - -static AudioDevice getAudioDeviceFromComboBox(QComboBox* comboBox, const std::list deviceList) { - std::string concatString = comboBox->itemData(comboBox->currentIndex()).toString().toStdString(); - for (std::list::const_iterator it = deviceList.begin(); - it != deviceList.end(); - ++it) { - if (it->getData().toString() == concatString) { - return *it; - } - } - return AudioDevice(); -} - -QtAudioSettings::QtAudioSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - - _ui = new Ui::AudioSettings(); - _ui->setupUi(this); - - SAFE_CONNECT(_ui->makeTestCallButton, SIGNAL(pressed()), SLOT(makeTestCallClicked())); - SAFE_CONNECT(_ui->testOutputDeviceButton, SIGNAL(pressed()), SLOT(testOutputDevice())); - SAFE_CONNECT(_ui->testRingingDeviceButton, SIGNAL(pressed()), SLOT(testRingingDevice())); - SAFE_CONNECT(_ui->AdvButton, SIGNAL(pressed()), SLOT(AdvPressed())); - SAFE_CONNECT(_ui->UpButton, SIGNAL(pressed()), SLOT(UpPressed())); - SAFE_CONNECT(_ui->DownButton, SIGNAL(pressed()), SLOT(DownPressed())); - SAFE_CONNECT(_ui->ResetButton, SIGNAL(pressed()), SLOT(ResetPressed())); - _ui->AdvGroupBox->setVisible(false); - - readConfig(); -} - -QtAudioSettings::~QtAudioSettings() { - OWSAFE_DELETE(_ui); -} - -QString QtAudioSettings::getName() const { - return tr("Audio"); -} - -QString QtAudioSettings::getTitle() const { - return tr("Audio Settings"); -} - -QString QtAudioSettings::getIconName() const { - return "audio"; -} - -void QtAudioSettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - AudioDevice device = getAudioDeviceFromComboBox(_ui->inputDeviceComboBox, AudioDeviceManager::getInstance().getInputDeviceList()); - config.set(Config::AUDIO_INPUT_DEVICEID_KEY, device.getData()); - - device = getAudioDeviceFromComboBox(_ui->outputDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); - config.set(Config::AUDIO_OUTPUT_DEVICEID_KEY, device.getData()); - - device = getAudioDeviceFromComboBox(_ui->ringingDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); - config.set(Config::AUDIO_RINGER_DEVICEID_KEY, device.getData()); - - // advanced - StringList saveCodec; - int nbCodec = _ui->audioCodecListWidget->count(); - for (int i = 0; i < nbCodec; ++i) { - std::string audioCodec = _ui->audioCodecListWidget->item(i)->text().toStdString(); - // HACK: PHAPI_SPEEXWB_REPLACES_G726WB_HACK - #ifdef PH_SPEEXWB_REPLACES_G726WB - if (audioCodec == "SPEEX/16000") - audioCodec = "G726-64wb/16000"; - #endif - //// - saveCodec += audioCodec; - } - config.set(Config::AUDIO_CODEC_LIST_KEY, saveCodec); - //// - - config.set(Config::AUDIO_HALFDUPLEX_KEY, _ui->halfDuplexCheckBox->isChecked()); -} - -void QtAudioSettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //inputDeviceList - _ui->inputDeviceComboBox->clear(); - -#ifdef OS_LINUX - bool savedSettingsFound = false; - AudioDevice tmpDev(config.getAudioInputDeviceId()); -#endif - - std::list inputDeviceList = AudioDeviceManager::getInstance().getInputDeviceList(); - for (std::list::const_iterator it = inputDeviceList.begin(); - it != inputDeviceList.end(); - ++it) { - _ui->inputDeviceComboBox->addItem( -#ifdef OS_MACOSX - QString::fromUtf8((*it).getName().c_str()), -#else - (*it).getName().c_str(), -#endif - QString::fromStdString((*it).getData().toString()) - ); -#ifdef OS_LINUX - if ((*it).getData() == tmpDev.getData()) { - savedSettingsFound = true; - } -#endif - } - -#ifdef OS_LINUX - if (!savedSettingsFound) { - _ui->outputDeviceComboBox->addItem( - //QString::fromUtf8(tmpDev.getName().c_str()), - QString(tmpDev.getName().c_str()), - QString::fromStdString(tmpDev.getData().toString()) - ); - } -#endif - QString currentInputDeviceId = -#ifdef OS_MACOSX - QString::fromUtf8(config.getAudioInputDeviceId().toString().c_str()); -#else - QString(config.getAudioInputDeviceId().toString().c_str()); -#endif - _ui->inputDeviceComboBox->setCurrentIndex( - _ui->inputDeviceComboBox->findData(currentInputDeviceId) - ); - //// - - //outputDeviceList - _ui->outputDeviceComboBox->clear(); - -#ifdef OS_LINUX - savedSettingsFound = false; - tmpDev = AudioDevice(config.getAudioOutputDeviceId()); -#endif - std::list outputDeviceList = AudioDeviceManager::getInstance().getOutputDeviceList(); - for (std::list::const_iterator it = outputDeviceList.begin(); - it != outputDeviceList.end(); - ++it) { - _ui->outputDeviceComboBox->addItem( -#ifdef OS_MACOSX - QString::fromUtf8((*it).getName().c_str()), -#else - (*it).getName().c_str(), -#endif - QString::fromStdString((*it).getData().toString()) - ); -#ifdef OS_LINUX - if ((*it).getData() == tmpDev.getData()) { - savedSettingsFound = true; - } -#endif - } - -#ifdef OS_LINUX - if (!savedSettingsFound) { - _ui->outputDeviceComboBox->addItem( - //QString::fromUtf8(tmpDev.getName().c_str()), - QString(tmpDev.getName().c_str()), - QString::fromStdString(tmpDev.getData().toString()) - ); - } -#endif - QString currentOutputDeviceId = -#ifdef OS_MACOSX - QString::fromUtf8(config.getAudioOutputDeviceId().toString().c_str()); -#else - QString(config.getAudioOutputDeviceId().toString().c_str()); -#endif - _ui->outputDeviceComboBox->setCurrentIndex( - _ui->outputDeviceComboBox->findData(currentOutputDeviceId) - ); - //// - - //ringingDeviceList = outputDeviceList - _ui->ringingDeviceComboBox->clear(); -#ifdef OS_LINUX - savedSettingsFound = false; - tmpDev = AudioDevice(config.getAudioOutputDeviceId()); -#endif - for (std::list::const_iterator it = outputDeviceList.begin(); - it != outputDeviceList.end(); - ++it) { - _ui->ringingDeviceComboBox->addItem( -#ifdef OS_MACOSX - QString::fromUtf8((*it).getName().c_str()), -#else - (*it).getName().c_str(), -#endif - QString::fromStdString((*it).getData().toString()) - ); -#ifdef OS_LINUX - if ((*it).getData() == tmpDev.getData()) { - savedSettingsFound = true; - } -#endif - } - -#ifdef OS_LINUX - if (!savedSettingsFound) { - _ui->ringingDeviceComboBox->addItem( - //QString::fromUtf8(tmpDev.getName().c_str()), - QString(tmpDev.getName().c_str()), - QString::fromStdString(tmpDev.getData().toString()) - ); - } -#endif - QString currentRingerDeviceId = -#ifdef OS_MACOSX - QString::fromUtf8(config.getAudioRingerDeviceId().toString().c_str()); -#else - QString(config.getAudioRingerDeviceId().toString().c_str()); -#endif - _ui->ringingDeviceComboBox->setCurrentIndex( - _ui->ringingDeviceComboBox->findData(currentRingerDeviceId) - ); - //// - - // advanced - fillAudioCodecList(); - - _ui->halfDuplexCheckBox->setChecked(config.getAudioHalfDuplex()); -} - -void QtAudioSettings::makeTestCallClicked() { - CUserProfile * cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if ((cUserProfile) && (cUserProfile->getUserProfile().getActivePhoneLine())) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string testnumber = config.getSipAudioTestCall (); - cUserProfile->getUserProfile().getActivePhoneLine()->makeCall(testnumber); - QtWengoPhone* qWengoPhone = static_cast(_cWengoPhone.getPresentation()); - qWengoPhone->getWidget()->raise(); - } -} - -void QtAudioSettings::testOutputDevice() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - Sound* testSound = new Sound(config.getAudioCallClosedFile()); - AudioDevice device = getAudioDeviceFromComboBox(_ui->outputDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); - testSound->setWaveOutDevice(device); - //Play the sound 4 times - testSound->setLoops(4); - testSound->play(); -} - -void QtAudioSettings::testRingingDevice() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - Sound* testSound = new Sound(config.getAudioCallClosedFile()); - AudioDevice device = getAudioDeviceFromComboBox(_ui->ringingDeviceComboBox, AudioDeviceManager::getInstance().getOutputDeviceList()); - testSound->setWaveOutDevice(device); - //Play the sound 4 times - testSound->setLoops(4); - testSound->play(); -} - -void QtAudioSettings::AdvPressed() { - if (_ui->AdvGroupBox->isVisible()) { - _ui->AdvGroupBox->setVisible(false); - _ui->AdvButton->setText(tr("Advanced") + " >>"); - } else { - _ui->AdvGroupBox->setVisible(true); - _ui->AdvButton->setText(tr("Advanced") + " <<"); - } -} - -void QtAudioSettings::UpPressed() { - - //extracts current Item - int currentrow = _ui->audioCodecListWidget->currentRow(); - - //if an item is selected - if (currentrow < 0) { - return; - } - - QListWidgetItem * mover = _ui->audioCodecListWidget->takeItem(currentrow); - - //inserts it to its new place - _ui->audioCodecListWidget->insertItem(currentrow - 1,mover); - - //sets focus on mover - _ui->audioCodecListWidget->setCurrentItem(mover); -} - -void QtAudioSettings::DownPressed() { - - //extracts current Item - int currentrow = _ui->audioCodecListWidget->currentRow(); - - //if an item is selected - if (currentrow < 0) { - return; - } - - QListWidgetItem * mover = _ui->audioCodecListWidget->takeItem(currentrow); - - //inserts it to its new place - _ui->audioCodecListWidget->insertItem(currentrow + 1,mover); - - //sets focus on mover - _ui->audioCodecListWidget->setCurrentItem(mover); -} - -void QtAudioSettings::ResetPressed() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //resets saved audio codec list - config.resetToDefaultValue(Config::AUDIO_CODEC_LIST_KEY); - - fillAudioCodecList(); -} - -void QtAudioSettings::fillAudioCodecList() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - //resets displayed audio codec list - StringList audioCodecList = config.getAudioCodecList(); - _ui->audioCodecListWidget->clear(); - for (StringList::const_iterator it = audioCodecList.begin(); it != audioCodecList.end(); ++it) { - QString audioCodec = QString(it->c_str()); - // HACK: PHAPI_SPEEXWB_REPLACES_G726WB_HACK - if (audioCodec == "G726-64wb/16000") { - audioCodec = "SPEEX/16000"; - } - //// - _ui->audioCodecListWidget->addItem(audioCodec); - } - //// -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtAudioSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTAUDIOSETTINGS_H -#define QTAUDIOSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; -namespace Ui { class AudioSettings; } - -/** - * Audio configuration panel. - * - * @author Tanguy Krotoff - * @author Xavier Desjardins - */ -class QtAudioSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtAudioSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtAudioSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private Q_SLOTS: - - void makeTestCallClicked(); - - void testOutputDevice(); - - void testRingingDevice(); - - void AdvPressed(); - - void UpPressed(); - - void DownPressed(); - - void ResetPressed(); - -private: - - virtual void readConfig(); - void fillAudioCodecList(); - - Ui::AudioSettings * _ui; - - CWengoPhone & _cWengoPhone; -}; - -#endif //QTAUDIOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtCallForwardSettings.h" - -#include "ui_CallForwardSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -QtCallForwardSettings::QtCallForwardSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - - _ui = new Ui::CallForwardSettings(); - _ui->setupUi(this); - - readConfig(); -} - -QtCallForwardSettings::~QtCallForwardSettings() { - OWSAFE_DELETE(_ui); -} - -QString QtCallForwardSettings::getName() const { - return tr("Call Forward"); -} - -QString QtCallForwardSettings::getTitle() const { - return tr("Call Forward Settings"); -} - -QString QtCallForwardSettings::getIconName() const { - return "call-forward"; -} - -void QtCallForwardSettings::saveConfig() { - - std::string mode; - if (_ui->forwardToVoiceMailRadioButton->isChecked()) { - mode = "voicemail"; - } else if (_ui->disableRadioButton->isChecked()) { - mode = "disable"; - } else if (_ui->forwardToNumberRadioButton->isChecked()) { - mode = "number"; - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - std::string number1 = _ui->phoneNumber1Edit->text().toStdString(); - std::string number2 = _ui->phoneNumber2Edit->text().toStdString(); - std::string number3 = _ui->phoneNumber3Edit->text().toStdString(); - bool mustCallTheWs = false; - - //if the mode has changed - if (config.getCallForwardMode() != mode) { - config.set(Config::CALL_FORWARD_MODE_KEY, mode); - mustCallTheWs = true; - } else { - //if numbers have changed - if ((mode == "number") && - (config.getCallForwardPhoneNumber1() != number1) || - (config.getCallForwardPhoneNumber2() != number2) || - (config.getCallForwardPhoneNumber3() != number3)) { - config.set(Config::CALL_FORWARD_PHONENUMBER1_KEY, number1); - config.set(Config::CALL_FORWARD_PHONENUMBER2_KEY, number2); - config.set(Config::CALL_FORWARD_PHONENUMBER3_KEY, number3); - mustCallTheWs = true; - } - } - - if (mustCallTheWs) { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()) { - if (mode == "voicemail") { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->forwardToVoiceMail(); - } else if (mode == "disable") { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->disableCallForward(); - } else if (mode == "number") { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCWsCallForward()->forwardToNumber(number1, number2, number3); - } - } - } - } -} - -void QtCallForwardSettings::readConfig() { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - if (config.getCallForwardMode() == "voicemail") { - _ui->forwardToVoiceMailRadioButton->setChecked(true); - - } else if (config.getCallForwardMode() == "number") { - _ui->forwardToNumberRadioButton->setChecked(true); - - } else if (config.getCallForwardMode() == "disable") { - _ui->disableRadioButton->setChecked(true); - - } else if (config.getCallForwardMode() == "unauthorized") { - setEnabled(false); - } - - _ui->forwardToVoiceMailRadioButton->setEnabled(config.getVoiceMailActive()); - QString tmp = QString::fromStdString(config.getCallForwardPhoneNumber1()); - if (!tmp.isEmpty()) { - _ui->phoneNumber1Edit->setText(tmp); - } - tmp = QString::fromStdString(config.getCallForwardPhoneNumber2()); - if (!tmp.isEmpty()) { - _ui->phoneNumber2Edit->setText(tmp); - } - tmp = QString::fromStdString(config.getCallForwardPhoneNumber3()); - if (!tmp.isEmpty()) { - _ui->phoneNumber3Edit->setText(tmp); - } - - CUserProfile * cuserprofile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cuserprofile && cuserprofile->getUserProfile().hasWengoAccount()) { - setEnabled(true); - } else { - setEnabled(false); - } -} - -void QtCallForwardSettings::postInitialize() { - if (!isEnabled()) { - QtWengoPhone * qtWengoPhone = static_cast(_cWengoPhone.getPresentation()); - QtNoWengoAlert noWengoAlert(NULL, *qtWengoPhone, - tr("Call Forward"), - tr("To configure call forward settings you need to
\ - be logged in with a @company@ account.")); - noWengoAlert.getQDialog()->exec(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtCallForwardSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTCALLFORWARDSETTINGS_H -#define QTCALLFORWARDSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; -namespace Ui { class CallForwardSettings; } - -/** - * Call forward configuration panel. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class QtCallForwardSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtCallForwardSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtCallForwardSettings(); - - QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual void postInitialize(); - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - Ui::CallForwardSettings * _ui; - - CWengoPhone & _cWengoPhone; -}; - -#endif //QTCALLFORWARDSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtGeneralSettings.h" - -#include "ui_GeneralSettings.h" - -#include -#include - -#include - -#include - -QtGeneralSettings::QtGeneralSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::GeneralSettings(); - _ui->setupUi(this); - -#ifdef OS_LINUX - _ui->autoStartGroupBox->hide(); -#endif - - readConfig(); -} - -QtGeneralSettings::~QtGeneralSettings() { - delete _ui; -} - -QString QtGeneralSettings::getName() const { - return tr("General"); -} - -QString QtGeneralSettings::getTitle() const { - return tr("General Settings"); -} - -QString QtGeneralSettings::getIconName() const { - return "general"; -} - -void QtGeneralSettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _ui->startWengoPhoneCheckBox->setChecked(config.getGeneralAutoStart()); - _ui->startBackgroundMode->setChecked(config.getGeneralStartBackgroundMode()); - _ui->startFreeCallRadioButton->setChecked(config.getGeneralClickStartFreeCall()); - _ui->callCellPhoneCheckBox->setChecked(config.getGeneralClickCallCellPhone()); - _ui->startChatOnlyRadioButton->setChecked(config.getGeneralClickStartChat()); - - int awayTimer = config.getGeneralAwayTimer(); - if (awayTimer != Config::NO_AWAY_TIMER) { - _ui->showAwayCheckBox->setChecked(true); - _ui->awaySpinBox->setValue(awayTimer); - } else { - _ui->showAwayCheckBox->setChecked(false); - } -} - -void QtGeneralSettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - config.set(Config::GENERAL_AUTOSTART_KEY, _ui->startWengoPhoneCheckBox->isChecked()); - config.set(Config::GENERAL_STARTBACKGROUNDMODE_KEY, _ui->startBackgroundMode->isChecked()); - config.set(Config::GENERAL_CLICK_START_FREECALL_KEY, _ui->startFreeCallRadioButton->isChecked()); - config.set(Config::GENERAL_CLICK_CALL_CELLPHONE_KEY, _ui->callCellPhoneCheckBox->isChecked()); - config.set(Config::GENERAL_CLICK_START_CHAT_KEY, _ui->startChatOnlyRadioButton->isChecked()); - - int awayTimer = _ui->awaySpinBox->value(); - if (_ui->showAwayCheckBox->isChecked()) { - config.set(Config::GENERAL_AWAY_TIMER_KEY, awayTimer); - } else { - config.set(Config::GENERAL_AWAY_TIMER_KEY, Config::NO_AWAY_TIMER); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtGeneralSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTGENERALSETTINGS_H -#define QTGENERALSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; -namespace Ui { class GeneralSettings; } - -/** - * General WengoPhone configuration panel. - * - * @author Tanguy Krotoff - */ -class QtGeneralSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtGeneralSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtGeneralSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - Ui::GeneralSettings * _ui; -}; - -#endif //QTGENERALSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtISettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtISettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtISettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtISettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTISETTINGS_H -#define QTISETTINGS_H - -#include - -class QWidget; -class QString; - -/** - * Interface for settings panel from the configuration window. - * - * @author Tanguy Krotoff - */ -class QtISettings : Interface { -public: - - virtual ~QtISettings() { } - - virtual QWidget * getWidget() const = 0; - - virtual QString getName() const = 0; - - virtual QString getTitle() const = 0; - - virtual QString getIconName() const = 0; - - virtual void saveConfig() = 0; - - virtual void postInitialize() { } - -protected: - - virtual void readConfig() = 0; -}; - -#endif //QTISETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,115 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtLanguagesSettings.h" - -#include "ui_LanguagesSettings.h" - -#include - -#include -#include -#include -#include - -#include - -#include - -#include - -QtLanguagesSettings::QtLanguagesSettings(QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::LanguagesSettings(); - _ui->setupUi(this); - - SAFE_CONNECT(_ui->launchpadLink, - SIGNAL(linkActivated(const QString &)), - SLOT(launchpadLinkClicked(const QString &)) - ); - - _ui->listWidget->addItems(QtLanguage::getAvailableLanguages()); - - QStringList list; - list << "unknown" << "sq" <<"ar" <<"bg" <<"ca" - <<"zh-CN" <<"zh-TW" <<"hr" - <<"cs" <<"da" <<"nl" <<"en" - <<"et" <<"tl" <<"fi" <<"fr" - <<"gl" <<"de" <<"el" <<"iw" - <<"hi" <<"hu" <<"id" <<"it" - <<"ja" <<"ko" <<"lv" <<"lt" - <<"mt" <<"no" <<"pl" <<"pt" - <<"ro" <<"ru" <<"sr" <<"sk" - <<"sl" <<"es" <<"sv" <<"th" - <<"tr" <<"uk" <<"vi"; - - _ui->comboBox_received->addItems (list); - _ui->comboBox_sent->addItems (list); - - readConfig(); -} - -QtLanguagesSettings::~QtLanguagesSettings() { - OWSAFE_DELETE(_ui); -} - -QString QtLanguagesSettings::getName() const { - return tr("Language"); -} - -QString QtLanguagesSettings::getTitle() const { - return tr("Language Settings"); -} - -QString QtLanguagesSettings::getIconName() const { - return "languages"; -} - -void QtLanguagesSettings::saveConfig() { - QListWidgetItem * item = _ui->listWidget->currentItem(); - - std::string language; - if (item) { - language = item->text().toUtf8().constData(); - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::LANGUAGE_KEY, LanguageList::getISO639Code(language)); - - config.set(Config::TRANSLATION_SENT_KEY, _ui->comboBox_sent->currentText().toStdString()); - config.set(Config::TRANSLATION_RECEIVED_KEY, _ui->comboBox_received->currentText().toStdString()); -} - -void QtLanguagesSettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string language = LanguageList::getLanguageName(config.getLanguage()); - - QList list = _ui->listWidget->findItems(QString::fromUtf8(language.c_str()), Qt::MatchExactly); - if (!list.isEmpty()) { - _ui->listWidget->setCurrentItem(list[0]); - } - - _ui->comboBox_sent->setCurrentIndex(_ui->comboBox_sent->findText(QString::fromStdString(config.getTranslationSent()))); - _ui->comboBox_received->setCurrentIndex(_ui->comboBox_received->findText(QString::fromStdString(config.getTranslationReceived()))); -} - -void QtLanguagesSettings::launchpadLinkClicked(const QString & /*link*/) { - WsUrl::showLauchpadPage(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtLanguagesSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTLANGUAGESSETTINGS_H -#define QTLANGUAGESSETTINGS_H - -#include "QtISettings.h" - -#include - -namespace Ui { class LanguagesSettings; } - -class QtLanguagesSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtLanguagesSettings(QWidget * parent); - - virtual ~QtLanguagesSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget * getWidget() const { - return (QWidget*) this; - } - -private Q_SLOTS: - - void launchpadLinkClicked(const QString & link); - -private: - - virtual void readConfig(); - - Ui::LanguagesSettings * _ui; -}; - -#endif //QTLANGUAGESSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,188 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtNotificationSettings.h" - -#include "ui_NotificationSettings.h" -#include "ui_NotificationSettingsItem.h" - -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -QtNotificationSettingsItem::QtNotificationSettingsItem(const std::string& configKey, - const std::string& soundFile, const QString& caption) - : QWidget() - , _configKey(configKey) - , _soundFile(QString::fromStdString(soundFile)) - , _caption(caption) { - _ui = new Ui::NotificationSettingsItem; -} - -QtNotificationSettingsItem::~QtNotificationSettingsItem() { - OWSAFE_DELETE(_ui); -} - -void QtNotificationSettingsItem::init(QWidget* parent) { - setParent(parent); - _ui->setupUi(this); - - // add an icon to browseButton - QPixmap pixBrowse = DesktopService::getInstance()->desktopIconPixmap(DesktopService::FolderIcon, 16); - _ui->browseButton->setIcon(pixBrowse); - //// - - SAFE_CONNECT(_ui->browseButton, SIGNAL(clicked()), SLOT(browseSounds())); - SAFE_CONNECT(_ui->playButton, SIGNAL(clicked()), SLOT(playSound())); - SAFE_CONNECT(_ui->soundLineEdit, SIGNAL(textChanged(const QString&)), SLOT(updatePlayButton())); - SAFE_CONNECT(_ui->checkBox, SIGNAL(toggled(bool)), SLOT(updatePlayButton())); - - _ui->checkBox->setText(_caption); - _ui->checkBox->setChecked(!_soundFile.isEmpty()); - _ui->frame->setEnabled(_ui->checkBox->isChecked()); - _ui->soundLineEdit->setText(_soundFile); -} - -void QtNotificationSettingsItem::browseSounds() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - QString file = QFileDialog::getOpenFileName(this, - tr("Choose a sound file"), - QString::fromStdString(config.getResourcesDir()) + "sounds", - tr("Sounds") + " (*.wav)"); - - std::string tmp = file.toStdString(); - tmp = File::convertPathSeparators(tmp); - file = QString::fromStdString(tmp); - - if (!file.isEmpty()) { - _ui->soundLineEdit->setText(file); - } -} - -void QtNotificationSettingsItem::playSound() { - std::string soundFile = _ui->soundLineEdit->text().toStdString(); - Sound::play(soundFile, AudioDeviceManager::getInstance().getDefaultOutputDevice()); -} - -void QtNotificationSettingsItem::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - std::string name; - if (_ui->checkBox->isChecked()) { - name = _ui->soundLineEdit->text().toStdString(); - } - config.setResource(_configKey, name); -} - -void QtNotificationSettingsItem::updatePlayButton() { - _ui->playButton->setEnabled(!_ui->soundLineEdit->text().isEmpty()); -} - -QtNotificationSettings::QtNotificationSettings(QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::NotificationSettings(); - _ui->setupUi(this); - - QVBoxLayout* layout = new QVBoxLayout(_ui->contentFrame); - layout->setMargin(0); - layout->setSpacing(0); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _list - << new QtNotificationSettingsItem( - Config::AUDIO_INCOMINGCALL_FILE_KEY, - config.getAudioIncomingCallFile(), - tr("Incoming call (ringtone)")) - - << new QtNotificationSettingsItem( - Config::AUDIO_OUTGOINGCALL_FILE_KEY, - config.getAudioOutgoingCallFile(), - tr("Outgoing call (ringtone)")) - - << new QtNotificationSettingsItem( - Config::AUDIO_CALLCLOSED_FILE_KEY, - config.getAudioCallClosedFile(), - tr("Call closed (hang up tone)")) - - << new QtNotificationSettingsItem( - Config::AUDIO_INCOMINGCHAT_FILE_KEY, - config.getAudioIncomingChatFile(), - tr("Incoming chat")) - - << new QtNotificationSettingsItem( - Config::AUDIO_IMACCOUNTCONNECTED_FILE_KEY, - config.getAudioIMAccountConnectedFile(), - tr("IM account connected")) - - << new QtNotificationSettingsItem( - Config::AUDIO_IMACCOUNTDISCONNECTED_FILE_KEY, - config.getAudioIMAccountDisconnectedFile(), - tr("IM account disconnected")) - - << new QtNotificationSettingsItem( - Config::AUDIO_CONTACTONLINE_FILE_KEY, - config.getAudioContactOnlineFile(), - tr("Contact online")) - ; - - Q_FOREACH(QtNotificationSettingsItem* item, _list) { - item->init(_ui->contentFrame); - layout->addWidget(item); - } -} - -QtNotificationSettings::~QtNotificationSettings() { - OWSAFE_DELETE(_ui); -} - -void QtNotificationSettings::readConfig() { - // Nothing to do, all done in CTor -} - -QString QtNotificationSettings::getName() const { - return tr("Notifications"); -} - -QString QtNotificationSettings::getTitle() const { - return tr("Notifications Settings"); -} - -QString QtNotificationSettings::getIconName() const { - return "notifications"; -} - -void QtNotificationSettings::saveConfig() { - Q_FOREACH(QtNotificationSettingsItem* item, _list) { - item->saveConfig(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtNotificationSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTNOTIFICATIONSETTINGS_H -#define QTNOTIFICATIONSETTINGS_H - -#include "QtISettings.h" - -#include - -#include - -namespace Ui { - class NotificationSettings; - class NotificationSettingsItem; -} - -/** - * An item in the "list" of notification events - * - * @author Aurelien Gateau - */ -class QtNotificationSettingsItem : public QWidget { - Q_OBJECT -public: - QtNotificationSettingsItem(const std::string& key, const std::string& soundFile, const QString& caption); - ~QtNotificationSettingsItem(); - void init(QWidget*); - void saveConfig(); - -private Q_SLOTS: - void browseSounds(); - void playSound(); - void updatePlayButton(); - -private: - Ui::NotificationSettingsItem* _ui; - std::string _configKey; - QString _soundFile; - QString _caption; -}; - -/** - * Loads and display the notification settings configuration page. - * - * @author Tanguy Krotoff - * @author Aurelien Gateau - */ -class QtNotificationSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtNotificationSettings(QWidget * parent); - - virtual ~QtNotificationSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual QString getIconName() const; - - virtual void saveConfig(); - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - void setSounds(const QString & soundFile); - - Ui::NotificationSettings* _ui; - - typedef QList QtNotificationSettingsItemList; - QtNotificationSettingsItemList _list; -}; - -#endif //QTNOTIFICATIONSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPrivacySettings.h" - -#include "ui_PrivacySettings.h" - -#include -#include - -#include - -QtPrivacySettings::QtPrivacySettings(QWidget * parent) - : QWidget(parent) { - - _ui = new Ui::PrivacySettings(); - _ui->setupUi(this); - - readConfig(); -} - -QtPrivacySettings::~QtPrivacySettings() { - delete _ui; -} - -QString QtPrivacySettings::getName() const { - return tr("Privacy"); -} - -QString QtPrivacySettings::getTitle() const { - return tr("Privacy Settings"); -} - -QString QtPrivacySettings::getIconName() const { - return "privacy"; -} - -void QtPrivacySettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _ui->allowCallsFromAnyoneRadioButton->setChecked(config.getPrivacyAllowCallFromAnyone()); - _ui->allowCallsOnlyFromContactListRadioButton->setChecked(config.getPrivacyAllowCallOnlyFromContactList()); - _ui->allowChatsFromAnyoneRadioButton->setChecked(config.getPrivacyAllowChatsFromAnyone()); - _ui->allowChatsFromOnlyContactListRadioButton->setChecked(config.getPrivacyAllowChatOnlyFromContactList()); - _ui->alwaysSignAsInvisible->setChecked(config.getPrivacySignAsInvisible()); -} - -void QtPrivacySettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - config.set(Config::PRIVACY_ALLOW_CALL_FROM_ANYONE_KEY, _ui->allowCallsFromAnyoneRadioButton->isChecked()); - config.set(Config::PRIVACY_ALLOW_CALL_ONLY_FROM_CONTACT_LIST_KEY, _ui->allowCallsOnlyFromContactListRadioButton->isChecked()); - config.set(Config::PRIVACY_ALLOW_CHAT_FROM_ANYONE_KEY, _ui->allowChatsFromAnyoneRadioButton->isChecked()); - config.set(Config::PRIVACY_ALLOW_CHAT_ONLY_FROM_CONTACT_LIST_KEY, _ui->allowChatsFromOnlyContactListRadioButton->isChecked()); - config.set(Config::PRIVACY_SIGN_AS_INVISIBLE_KEY, _ui->alwaysSignAsInvisible->isChecked()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtPrivacySettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTPRIVACYSETTINGS_H -#define QTPRIVACYSETTINGS_H - -#include "QtISettings.h" - -#include - -namespace Ui { class PrivacySettings; } - -/** - * Privacy settings. - * - * @author Tanguy Krotoff - */ -class QtPrivacySettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtPrivacySettings(QWidget * parent); - - virtual ~QtPrivacySettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - Ui::PrivacySettings * _ui; -}; - -#endif //QTPRIVACYSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSecuritySettings.h" - -#include "ui_SecuritySettings.h" - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -QtSecuritySettings::QtSecuritySettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - - _ui = new Ui::SecuritySettings(); - _ui->setupUi(this); - readConfig(); -} - -QtSecuritySettings::~QtSecuritySettings() { - OWSAFE_DELETE(_ui); -} - -QString QtSecuritySettings::getName() const { - return tr("Security"); -} - -QString QtSecuritySettings::getTitle() const { - return tr("Security Settings") + " - " + tr("BETA"); -} - -QString QtSecuritySettings::getIconName() const { - return "privacy"; -} - -void QtSecuritySettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _ui->callEncryptionCheckBox->setChecked(config.getCallEncryptionMode()); -} - -void QtSecuritySettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::CALL_ENCRYPTION_MODE_KEY, _ui->callEncryptionCheckBox->isChecked()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtSecuritySettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTSECURITYSETTINGS_H -#define QTSECURITYSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; -namespace Ui { class SecuritySettings; } - -/** - * @author Mathieu Stute - */ -class QtSecuritySettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtSecuritySettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtSecuritySettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - Ui::SecuritySettings * _ui; - - CWengoPhone & _cWengoPhone; -}; - -#endif //QTSECURITYSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,235 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtVideoSettings.h" - -#include "ui_VideoSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include - -static const int VIDEO_QUALITY_COLUMN = 0; -static const char * VIDEO_TEST_CALL = "335"; - -QtVideoSettings::QtVideoSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(NULL), - _cWengoPhone(cWengoPhone) { - - _ui = new Ui::VideoSettings(); - _ui->setupUi(this); - - _webcamDriver = WebcamDriver::getInstance(); - _previewStarted = false; - - SAFE_CONNECT_TYPE(this, SIGNAL(newWebcamImage()), SLOT(newWebcamImageCaptured()), Qt::QueuedConnection); - SAFE_CONNECT(_ui->webcamDeviceComboBox, SIGNAL(activated(const QString &)), SLOT(startWebcamPreview(const QString &))); - SAFE_CONNECT(_ui->makeTestVideoCallButton, SIGNAL(clicked()), SLOT(makeTestCallClicked())); - SAFE_CONNECT(_ui->webcamPreviewButton, SIGNAL(clicked()), SLOT(webcamPreview())); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - //No webcam driver - if (_webcamDriver->getDeviceList().empty()) { - config.set(Config::VIDEO_ENABLE_KEY, false); - _ui->enableVideoCheckBox->setChecked(false); - _ui->enableVideoCheckBox->setEnabled(false); - } - - // set all columns to the same size - _ui->videoQualityTreeWidget->header()->setResizeMode(2, QHeaderView::Stretch); - _ui->videoQualityTreeWidget->header()->setResizeMode(1, QHeaderView::Stretch); - _ui->videoQualityTreeWidget->header()->setResizeMode(0, QHeaderView::Stretch); - //// - - readConfig(); -} - -QtVideoSettings::~QtVideoSettings() { - OWSAFE_DELETE(_ui); -} - -QString QtVideoSettings::getName() const { - return tr("Video"); -} - -QString QtVideoSettings::getTitle() const { - return tr("Video Settings"); -} - -QString QtVideoSettings::getIconName() const { - return "video"; -} - -void QtVideoSettings::saveConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - config.set(Config::VIDEO_ENABLE_KEY, _ui->enableVideoCheckBox->isChecked()); - config.set(Config::VIDEO_WEBCAM_DEVICE_KEY, std::string(_ui->webcamDeviceComboBox->currentText().toUtf8().constData())); - - QTreeWidgetItem * item = _ui->videoQualityTreeWidget->currentItem(); - if (item) { - EnumVideoQuality::VideoQuality videoQuality = EnumVideoQuality::VideoQualityNormal; - QString text = item->text(VIDEO_QUALITY_COLUMN); - if (tr("Normal") == text) { - videoQuality = EnumVideoQuality::VideoQualityNormal; - } - else if (tr("Good") == text) { - videoQuality = EnumVideoQuality::VideoQualityGood; - } - else if (tr("Very good") == text) { - videoQuality = EnumVideoQuality::VideoQualityVeryGood; - } - else if (tr("Excellent") == text) { - videoQuality = EnumVideoQuality::VideoQualityExcellent; - } - else { - LOG_FATAL("unknown video quality=" + text.toStdString()); - } - config.set(Config::VIDEO_QUALITY_KEY, EnumVideoQuality::toString(videoQuality)); - } -} - -void QtVideoSettings::readConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - _ui->enableVideoCheckBox->setChecked(config.getVideoEnable()); - - _ui->webcamDeviceComboBox->clear(); - - StringList list = _webcamDriver->getDeviceList(); - for(StringList::iterator it = list.begin() ; it != list.end() ; it++) - _ui->webcamDeviceComboBox->addItem(QString::fromUtf8((*it).c_str())); - - _ui->webcamDeviceComboBox->setCurrentIndex(_ui->webcamDeviceComboBox->findText(QString::fromUtf8(config.getVideoWebcamDevice().c_str()))); - - EnumVideoQuality::VideoQuality videoQuality = EnumVideoQuality::toVideoQuality(config.getVideoQuality()); - QString videoQualityText; - - switch (videoQuality) { - case EnumVideoQuality::VideoQualityNormal: - videoQualityText = tr("Normal"); - break; - - case EnumVideoQuality::VideoQualityGood: - videoQualityText = tr("Good"); - break; - - case EnumVideoQuality::VideoQualityVeryGood: - videoQualityText = tr("Very good"); - break; - - case EnumVideoQuality::VideoQualityExcellent: - videoQualityText = tr("Excellent"); - break; - - default: - LOG_FATAL("unknown video quality=" + String::fromNumber(videoQuality)); - } - - QList items = _ui->videoQualityTreeWidget->findItems(videoQualityText, Qt::MatchExactly, VIDEO_QUALITY_COLUMN); - if (items.size() > 0) { - _ui->videoQualityTreeWidget->setItemSelected(items[0], true); - } -} - -void QtVideoSettings::frameCapturedEventHandler(IWebcamDriver * sender, piximage * image) { - - if (!_ui->webcamSelectionGroupBox->isEnabled()) { - return; - } - QSize qs(_ui->webcamPreviewLabel->width(), _ui->webcamPreviewLabel->height()); - - QImage tmpRgbImage(qs, QImage::Format_RGB32); - QtVideoQt::convertPixImageToQImage(image, qs, &tmpRgbImage); - - QPixmap tmp = QPixmap::fromImage(tmpRgbImage); - { - Mutex::ScopedLock lock(_mutex); - - _lastWebcamPixmap = tmp; - } - - newWebcamImage(); -} - -void QtVideoSettings::newWebcamImageCaptured() { - Mutex::ScopedLock lock(_mutex); - - if (_lastWebcamPixmap.isNull()) - return; - - _ui->webcamPreviewLabel->setPixmap(_lastWebcamPixmap); -} - -void QtVideoSettings::startWebcamPreview(const QString & deviceName) { - if (!_previewStarted) { - _webcamDriver->frameCapturedEvent += boost::bind(&QtVideoSettings::frameCapturedEventHandler, this, _1, _2); - _webcamDriver->setDevice(deviceName.toStdString()); - _webcamDriver->setResolution(320, 240); - _webcamDriver->setPalette(PIX_OSI_YUV420P); - _webcamDriver->startCapture(); - - _previewStarted = true; - } -} - -void QtVideoSettings::stopWebcamPreview() { - if (_previewStarted) { - _webcamDriver->frameCapturedEvent -= boost::bind(&QtVideoSettings::frameCapturedEventHandler, this, _1, _2); - _webcamDriver->stopCapture(); - - _previewStarted = false; - } -} - -void QtVideoSettings::webcamPreview() { - startWebcamPreview(_ui->webcamDeviceComboBox->currentText()); -} - -void QtVideoSettings::hideEvent(QHideEvent * event) { - stopWebcamPreview(); -} - -void QtVideoSettings::makeTestCallClicked() { - CUserProfile * cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if ((cUserProfile) && (cUserProfile->getUserProfile().getActivePhoneLine())) { - cUserProfile->getUserProfile().getActivePhoneLine()->makeCall(VIDEO_TEST_CALL); - QtWengoPhone* qWengoPhone = static_cast(_cWengoPhone.getPresentation()); - qWengoPhone->getWidget()->raise(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVideoSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,109 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTVIDEOSETTINGS_H -#define QTVIDEOSETTINGS_H - -#include "QtISettings.h" - -#include - -#include -#include - -#include -#include - -class IWebcamDriver; - -class QImage; -class QHideEvent; -class QString; -class CWengoPhone; -namespace Ui { class VideoSettings; } - -/** - * Video configuration panel. - * - * Inherits from QWidget so we can overwrite QWidget::hideEvent() and - * QWidget::showEvent() that are protected methods from QWidget. - * - * @author Tanguy Krotoff - */ -class QtVideoSettings : public QWidget, public QtISettings, public Trackable { - Q_OBJECT -public: - - QtVideoSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtVideoSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private Q_SLOTS: - - void webcamPreview(); - - void newWebcamImageCaptured(); - - void startWebcamPreview(const QString & deviceName); - - void makeTestCallClicked(); - -Q_SIGNALS: - - void newWebcamImage(); - -private: - - virtual void readConfig(); - - void stopWebcamPreview(); - - void frameCapturedEventHandler(IWebcamDriver * sender, piximage * image); - - void hideEvent(QHideEvent * event); - - Ui::VideoSettings * _ui; - - IWebcamDriver * _webcamDriver; - - /** Contains the converted picture from the Webcam. */ - QImage _rgbImage; - - QPixmap _lastWebcamPixmap; - - Mutex _mutex; - - CWengoPhone & _cWengoPhone; - - bool _previewStarted; -}; - -#endif //QTVIDEOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtVoicemailSettings.h" - -#include "ui_VoicemailSettings.h" - -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -QtVoicemailSettings::QtVoicemailSettings(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - - _ui = new Ui::VoicemailSettings(); - _ui->setupUi(this); - - readConfig(); -} - -QtVoicemailSettings::~QtVoicemailSettings() { - OWSAFE_DELETE(_ui); -} - -QString QtVoicemailSettings::getName() const { - return tr("Voicemail"); -} - -QString QtVoicemailSettings::getTitle() const { - return tr("Voicemail Settings"); -} - -QString QtVoicemailSettings::getIconName() const { - return "voicemail"; -} - -void QtVoicemailSettings::saveConfig() { - UserProfile * userprofile = _cWengoPhone.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userprofile) { - SipAccount * sipaccount = userprofile->getSipAccount(); - if (sipaccount) { - sipaccount->setVoicemailNumber(_ui->voicemailNumber->text().toStdString()); - } - } -} - -void QtVoicemailSettings::readConfig() { - std::string number = "123"; - - UserProfile * userprofile = _cWengoPhone.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userprofile) { - SipAccount * sipaccount = userprofile->getSipAccount(); - if (sipaccount) { - number = sipaccount->getVoicemailNumber(); - } - } else { - setEnabled(false); - } - - _ui->voicemailNumber->setText(QString::fromStdString(number)); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtVoicemailSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,62 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTVOICEMAILSETTINGS_H -#define QTVOICEMAILSETTINGS_H - -#include "QtISettings.h" - -#include - -class CWengoPhone; -namespace Ui { class VoicemailSettings; } - -/** - * @author Xavier Desjardins - */ -class QtVoicemailSettings : public QWidget, public QtISettings { - Q_OBJECT -public: - - QtVoicemailSettings(CWengoPhone & cWengoPhone, QWidget * parent); - - virtual ~QtVoicemailSettings(); - - virtual QString getName() const; - - virtual QString getTitle() const; - - virtual void saveConfig(); - - virtual QString getIconName() const; - - virtual QWidget *getWidget() const { - return (QWidget*)this; - } - -private: - - virtual void readConfig(); - - Ui::VoicemailSettings * _ui; - - CWengoPhone & _cWengoPhone; -}; - -#endif //QTVOICEMAILSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,189 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtWengoConfigDialog.h" - -#include "ui_WengoConfigDialog.h" - -#include "QtNotificationSettings.h" -#include "QtGeneralSettings.h" -#include "QtAccountSettings.h" -#include "QtPrivacySettings.h" -#include "QtAppearanceSettings.h" -#include "QtAudioSettings.h" -#include "QtVideoSettings.h" -#include "QtAdvancedSettings.h" -#include "QtCallForwardSettings.h" -#include "QtLanguagesSettings.h" -#include "QtVoicemailSettings.h" -#include "QtSecuritySettings.h" - -#include -#include - -#include - -#include - -#include - -#include - -QtWengoConfigDialog::QtWengoConfigDialog(CWengoPhone & cWengoPhone) - : QDialog(0) { - - _ui = new Ui::WengoConfigDialog(); - _ui->setupUi(this); - _ui->retranslateUi(this); - - // Set bold ourself: if we do it from Designer it alters the font name (at - // least with Qt 4.1) - QFont font(_ui->titleLabel->font()); - font.setBold(true); - _ui->titleLabel->setFont(font); - - _settingsList += new QtGeneralSettings(cWengoPhone, 0); - if (cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - _settingsList += new QtAccountSettings(cWengoPhone, 0); - } - _settingsList += new QtLanguagesSettings(0); - _settingsList += new QtAppearanceSettings(0); - _settingsList += new QtAudioSettings(cWengoPhone, 0); - _settingsList += new QtVideoSettings(cWengoPhone, 0); -#ifndef DISABLE_CALL_FORWARD - _settingsList += new QtCallForwardSettings(cWengoPhone, 0); -#endif - _settingsList += new QtNotificationSettings(0); -#ifndef DISABLE_VOICE_MAIL - _settingsList += new QtVoicemailSettings(cWengoPhone, 0); -#endif -#if 0 - _settingsList += new QtSecuritySettings(cWengoPhone, 0); -#endif - _settingsList += new QtAdvancedSettings(0); - - //stackedWidget - Q_FOREACH(QtISettings* settings, _settingsList) { - QString iconName = QString(":pics/config/%1.png").arg(settings->getIconName()); - QIcon icon = QPixmap(iconName); - new QListWidgetItem(icon, settings->getName(), _ui->listWidget); - QWidget* widget = settings->getWidget(); - widget->layout()->setMargin(0); - _ui->stackedWidget->addWidget(widget); - } - _ui->listWidget->setCurrentRow(0); - showSettingPage(0); - - int minWidth = WidgetUtils::computeListViewMinimumWidth(_ui->listWidget); - _ui->listWidget->setFixedWidth(minWidth); - - //listWidget - connect(_ui->listWidget, SIGNAL(currentRowChanged(int)), SLOT(showSettingPage(int))); - - //saveButton - connect(_ui->saveButton, SIGNAL(clicked()), SLOT(save())); -} - -QtWengoConfigDialog::~QtWengoConfigDialog() { - delete _ui; -} - -void QtWengoConfigDialog::showSettingPage(int row) { - if (row<0 || row >= _settingsList.size()) { - return; - } - QtISettings* settings = _settingsList.at(row); - _ui->titleLabel->setText(settings->getTitle()); - QWidget* widget = settings->getWidget(); - _ui->stackedWidget->setCurrentWidget(widget); - settings->postInitialize(); -} - -void QtWengoConfigDialog::save() { - Q_FOREACH(QtISettings* settings, _settingsList) { - settings->saveConfig(); - } -} - -void QtWengoConfigDialog::showPage(const QString & pageName) { - int count = _settingsList.count(); - for (int row = 0; row < count; ++row) { - if (_settingsList[row]->getName() == pageName) { - _ui->listWidget->setCurrentRow(row); - return; - } - } - LOG_WARN("unknown page name=" + pageName.toStdString()); -} - -void QtWengoConfigDialog::showGeneralPage() { - showPage(tr("General")); -} - -void QtWengoConfigDialog::showLanguagePage() { - showPage(tr("Language")); -} - -void QtWengoConfigDialog::showAccountsPage() { - showPage(tr("Accounts")); -} - -void QtWengoConfigDialog::showPrivacyPage() { - showPage(tr("Privacy")); -} - -void QtWengoConfigDialog::showAudioPage() { - showPage(tr("Audio")); -} - -void QtWengoConfigDialog::showVideoPage() { - showPage(tr("Video")); -} - -void QtWengoConfigDialog::showNotificationsPage() { - showPage(tr("Notifications")); -} - -void QtWengoConfigDialog::showCallForwardPage() { - showPage(tr("Call Forward")); -} - -void QtWengoConfigDialog::showAdvancedPage() { - showPage(tr("Advanced")); -} - -void QtWengoConfigDialog::showVoicemailPage() { - showPage(tr("Voicemail")); -} - -void QtWengoConfigDialog::showSecurityPage() { - showPage(tr("security")); -} - -QtWengoConfigDialog* QtWengoConfigDialog::showInstance(CWengoPhone& cWengoPhone) { - static QPointer instance; - if (!instance) { - instance = new QtWengoConfigDialog(cWengoPhone); - instance->setAttribute(Qt::WA_DeleteOnClose); - instance->show(); - } else { - instance->raise(); - } - return instance; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/QtWengoConfigDialog.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTWENGOCONFIGDIALOG_H -#define OWQTWENGOCONFIGDIALOG_H - -#include - -#include - -#include - -class CWengoPhone; -class QtISettings; -namespace Ui { class WengoConfigDialog; } - -/** - * Main configuration window. - * - * @author Tanguy Krotoff - */ -class QtWengoConfigDialog : public QDialog, NonCopyable { - Q_OBJECT -public: - - ~QtWengoConfigDialog(); - - /** - * Shows the config dialog or raise it if it already exists. - * @return the config dialog instance, so that caller can show a particular - * page - */ - static QtWengoConfigDialog* showInstance(CWengoPhone & cWengoPhone); - -public Q_SLOTS: - - void save(); - - void showGeneralPage(); - - void showLanguagePage(); - - void showAccountsPage(); - - void showPrivacyPage(); - - void showAudioPage(); - - void showVideoPage(); - - void showNotificationsPage(); - - void showCallForwardPage(); - - void showAdvancedPage(); - - void showVoicemailPage(); - - void showSecurityPage(); - -private Q_SLOTS: - - void showSettingPage(int row); - -private: - - QtWengoConfigDialog(CWengoPhone & cWengoPhone); - - void showPage(const QString & pageName); - - Ui::WengoConfigDialog * _ui; - - typedef QList SettingsList; - SettingsList _settingsList; -}; - -#endif //OWQTWENGOCONFIGDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/SecuritySettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/SecuritySettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/SecuritySettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/SecuritySettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ - - - - - SecuritySettings - - - - 0 - 0 - 572 - 171 - - - - Form - - - - 9 - - - 6 - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - true - - - - - - - Enable call encryption - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - QSizePolicy::Fixed - - - - 10 - 20 - - - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - true - - - - - - - - - Qt::Vertical - - - - 482 - 31 - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/VideoSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/VideoSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/VideoSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/VideoSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,378 +0,0 @@ - - VideoSettings - - - - 0 - 0 - 602 - 517 - - - - - 9 - - - 6 - - - - - Enable video - - - true - - - - - - - Webcam Selection - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 356 - 51 - - - - - - - - Webcam device: - - - - - - - - - - Webcam Preview - - - - - - - - 0 - 0 - 0 - 0 - - - - - 176 - 144 - - - - - 176 - 144 - - - - :/pics/iconbar/webcam.png - - - Qt::AlignCenter - - - - - - - - - - Connection Type - - - - 9 - - - 6 - - - - - Video quality depends on your Internet connection bandwidth - - - - - - - - 7 - 1 - 0 - 0 - - - - - 0 - 100 - - - - false - - - false - - - - Video quality - - - - - Down (kbit/s) - - - - - Up (kbit/s) - - - - - Normal - - - 0 to 512 - - - 0 to 128 - - - - - Good - - - 512 to 2048 - - - 128 to 256 - - - - - Very good - - - 2048+ - - - 256+ - - - - - Excellent - - - 8192+ - - - 1024+ - - - - - - - - 0 - - - 6 - - - - - - 0 - 5 - 0 - 0 - - - - - - - :/pics/help.png - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - Qt::RichText - - - true - - - true - - - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Make a test video call - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 574 - 40 - - - - - - - - webcamDeviceComboBox - webcamPreviewButton - videoQualityTreeWidget - makeTestVideoCallButton - - - - - - - enableVideoCheckBox - toggled(bool) - webcamSelectionGroupBox - setEnabled(bool) - - - 72 - 22 - - - 130 - 48 - - - - - enableVideoCheckBox - toggled(bool) - groupBox_3 - setEnabled(bool) - - - 38 - 18 - - - 78 - 277 - - - - - enableVideoCheckBox - toggled(bool) - makeTestVideoCallButton - setEnabled(bool) - - - 61 - 19 - - - 279 - 528 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/VoicemailSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/VoicemailSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/VoicemailSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/VoicemailSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,56 +0,0 @@ - - VoicemailSettings - - - - 0 - 0 - 464 - 146 - - - - Form - - - - 9 - - - 6 - - - - - Phone number of your voicemail: - - - - - - - - - - Please fill in here the information about your voicemail - - - - - - - Qt::Vertical - - - - 446 - 161 - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/WengoConfigDialog.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/WengoConfigDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/config/WengoConfigDialog.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/config/WengoConfigDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,157 +0,0 @@ - - WengoConfigDialog - - - - 0 - 0 - 538 - 458 - - - - @product@ - Configuration - - - true - - - - 9 - - - 6 - - - - - Qt::Horizontal - - - - - - - Title - - - Qt::PlainText - - - 0 - - - - - - - - 7 - 5 - 0 - 0 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Save - - - - - - - Cancel - - - - - - - - - QAbstractItemView::SelectRows - - - - 32 - 32 - - - - - - - - Qt::Horizontal - - - - - - - saveButton - cancelButton - - - - - - - saveButton - clicked() - WengoConfigDialog - accept() - - - 457 - 448 - - - 344 - 449 - - - - - cancelButton - clicked() - WengoConfigDialog - reject() - - - 530 - 441 - - - 249 - 437 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ContactGroupPopupMenu.h" -#include "QtRenameGroup.h" - -#include - -#include - -#include -#include - -#include - -#include - -using namespace std; - -ContactGroupPopupMenu::ContactGroupPopupMenu(CContactList & cContactList, QWidget * parent) - : QMenu(parent), - _cContactList(cContactList) { - - addAction(tr("Remove Contact Group"), this, SLOT(removeContactGroup())); - addAction(tr("Rename Contact Group"), this, SLOT(renameContactGroup())); - //addAction(tr("Send SMS to group"), this, SLOT(sendSms())); -} - -void ContactGroupPopupMenu::showMenu(const QString & groupId) { - _groupId = groupId; - exec(QCursor::pos()); -} - -void ContactGroupPopupMenu::removeContactGroup() const { - if (QMessageBox::question(qobject_cast(parent()), - tr("Delete group"), - tr("Do you really want to delete this group?"), - tr("&Yes"), - tr("&No"), - QString(), 0, 1) == 0) { - _cContactList.removeContactGroup(_groupId.toStdString()); - } -} - -void ContactGroupPopupMenu::renameContactGroup() const { - std::string tmp = _cContactList.getContactGroupName(_groupId.toStdString()); - QString groupName = QString::fromUtf8(tmp.c_str()); - QtRenameGroup dialog(groupName, qobject_cast(parent())); - if (dialog.exec()) { - _cContactList.renameContactGroup(_groupId.toStdString(), dialog.getGroupName().toUtf8().data()); - } -} - -void ContactGroupPopupMenu::sendSms() { -/* - StringList list = _contactGroup->getMobilePhoneList(); - for(unsigned int i = 0; i < list.size(); i++) { - LOG_DEBUG("mobile number: " + list[i] + "\n"); - } -*/ -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactGroupPopupMenu.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTGROUPPOPUPMENU_H -#define OWCONTACTGROUPPOPUPMENU_H - -#include - -#include - -class CContactList; -class QTreeWidgetItem; -class QModelIndex; - -/** - * Menu of a contact group, popped each time a user clicks on a contact group using - * the right button of the mouse. - * - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class ContactGroupPopupMenu : public QMenu, NonCopyable { - Q_OBJECT -public: - - /** - * Constructs a ContactGroupPopupMenu. - * - * @param parent parent widget - */ - ContactGroupPopupMenu(CContactList & cContactList, QWidget * parent); - -public Q_SLOTS: - - /** - * The popup menu is being showed. - * - * @param groupId the UUID of the group to diplay the menu - */ - void showMenu(const QString & groupId); - -private Q_SLOTS: - - /** - * Removes a contact group from ContactList. - * - * The user clicks on "remove contact group" in the menu. - */ - void removeContactGroup() const; - - /** - * Rename a contact group. - * - * The user clicks on "rename contact group" in the menu. - */ - void renameContactGroup() const; - - /** - * Sends a SMS to a contact group. - * - * The user clicks on "Send SMS" in the menu. - */ - void sendSms(); - -private: - - QString _groupId; - - CContactList & _cContactList; -}; - -#endif //OWCONTACTGROUPPOPUPMENU_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactList.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactList.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactList.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactList.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,76 +0,0 @@ - - ContactList - - - - 0 - 0 - 393 - 210 - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - true - - - QAbstractItemView::NoEditTriggers - - - true - - - true - - - QAbstractItemView::ExtendedSelection - - - QAbstractItemView::SelectItems - - - 0 - - - false - - - true - - - - Contact List - - - - - goupname - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/ContactWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/ContactWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,237 +0,0 @@ - - ContactWidget - - - - 0 - 0 - 336 - 98 - - - - - 5 - 0 - 0 - 0 - - - - true - - - - 0 - - - 0 - - - - - No landline phone number set - - - :/pics/contact/landline.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - No mobile phone number set - - - :/pics/contact/mobile.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - 0 - - - 0 - - - - - - 24 - 24 - - - - :/pics/contact/call.png - - - true - - - - - - - - 24 - 24 - - - - :/pics/contact/chat.png - - - true - - - - - - - - 24 - 24 - - - - :/pics/contact/sms.png - - - - 16 - 16 - - - - true - - - - - - - - 24 - 24 - - - - - - - :/pics/actions/send_file.png - - - - 16 - 16 - - - - true - - - - - - - Qt::Horizontal - - - - 119 - 15 - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 20 - 20 - - - - - - - - - 0 - 0 - 0 - 7 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - :/pics/avatar_background.png - - - - 70 - 70 - - - - true - - - - - - - callButton - chatButton - smsButton - avatarButton - mobileButton - landlineButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtConferenceAction.h" - -#include - -QtConferenceAction::QtConferenceAction(const QString & text, QObject * parent) - : QAction(text, parent) { -} - -QtConferenceAction::QtConferenceAction(QObject * parent) - : QAction(parent) { -} - -QtConferenceAction::QtConferenceAction(const QIcon & icon, const QString & text, QObject * parent) - : QAction(icon, text, parent) { -} - -void QtConferenceAction::setPhoneCall(PhoneCall * phoneCall) { - _phoneCall = phoneCall; -} - -PhoneCall * QtConferenceAction::getPhoneCall() const { - return _phoneCall; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtConferenceAction.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,54 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONFERENCEACTION_H -#define OWQTCONFERENCEACTION_H - -#include -#include - -class PhoneCall; -class QString; -class QIcon; - -/** - * Default action for conference - * - * @author Mr K - */ -class QtConferenceAction : public QAction { - Q_OBJECT -public: - - QtConferenceAction(const QString & text, QObject * parent); - - QtConferenceAction(QObject * parent); - - QtConferenceAction(const QIcon & icon, const QString & text, QObject * parent); - - void setPhoneCall(PhoneCall * phoneCall); - - PhoneCall * getPhoneCall() const; - -private: - - PhoneCall * _phoneCall; -}; - -#endif //OWQTCONFERENCEACTION_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,352 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContact.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include - -QtContact::QtContact(const ContactProfile * contactProfile, CWengoPhone & cWengoPhone, QObject * parent) - : QObject(parent), - _cWengoPhone(cWengoPhone) { - - _contactProfile = *contactProfile; - _contactId = _contactProfile.getUUID(); - _mouseOn = false; - _openStatus = false; -} - -QtContact::QtContact(const std::string & contactId, CWengoPhone & cWengoPhone, QObject * parent) - : QObject(parent), - _cWengoPhone(cWengoPhone) { - - _contactId = contactId; - contactUpdated(); - _mouseOn = false; - _openStatus = false; -} - -void QtContact::paint(QPainter * painter, const QStyleOptionViewItem & option) { - if ((option.state & QStyle::State_Selected) == QStyle::State_Selected) { - painter->fillRect(option.rect, option.palette.highlight()); - } - paintForeground(painter, option); -} - -void QtContact::paintForeground(QPainter * painter, const QStyleOptionViewItem & option) { - QMutexLocker locker(&_mutex); - - QtContactPixmap * spx = QtContactPixmap::getInstance(); - - if ((option.state & QStyle::State_Selected) == QStyle::State_Selected) { - painter->setPen(option.palette.highlightedText().color()); - } else { - painter->setPen(option.palette.text().color()); - } - - // Draw the status pixmap - QtContactPixmap::ContactPixmap status = getStatus(); - - QPixmap px = spx->getPixmap(status); - QRect painterRect = option.rect; - painter->drawPixmap(painterRect.left(), painterRect.top() + 2, px); - - painterRect.setLeft(painterRect.left() + px.width() + 5); - - // Draw the text - painter->setFont(option.font); - // Center the text vertically - QRect textRect = painterRect; - int textY = (UserSize - QFontMetrics(option.font).height()) / 2; - textRect.setTop(textY + textRect.top()); - - QString text = QString::fromUtf8(_contactProfile.getDisplayName().c_str()); - painter->drawText(textRect, Qt::AlignLeft, text, 0); -} - -QString QtContact::getId() const { - return QString::fromStdString(_contactId); -} - -QString QtContact::getUserName() const { - return QString::fromUtf8(_contactProfile.getDisplayName().c_str()); -} - -QString QtContact::getGroupName() const { - std::string groupId = _contactProfile.getGroupId(); - std::string groupName = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(groupId); - return QString::fromUtf8(groupName.c_str()); -} - -bool QtContact::isTestCall() const { - std::string sipAddress = _contactProfile.getFirstFreePhoneNumber(); - if (sipAddress.empty()) { - return false; - } - - // Check if the sipAddress is one of the test calls. We check all test - // calls because we don't have the information about whether we are - // connected with a SIP or a Wengo account here. - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (sipAddress == config.getWengoAudioTestCall()) { - return true; - } - if (sipAddress == config.getWengoVideoTestCall()) { - return true; - } - if (sipAddress == config.getSipAudioTestCall()) { - return true; - } - if (sipAddress == config.getSipVideoTestCall()) { - return true; - } - return false; -} - -QtContactPixmap::ContactPixmap QtContact::getStatus() const { - // Rules are defined here: - // http://dev.openwengo.org/trac/openwengo/trac.cgi/wiki/ContactPresenceGrid - // version 9 - if (getGroupName() == "WDeal") { - return QtContactPixmap::ContactWDeal; - } - - if (isTestCall()) { - return QtContactPixmap::ContactTestCall; - } - - QtContactPixmap::ContactPixmap status; - bool hasPSTNCall = _contactProfile.hasCall() && !_contactProfile.hasFreeCall(); - - switch (_contactProfile.getPresenceState()) { - case EnumPresenceState::PresenceStateUnavailable: - LOG_INFO("Received PresenceStateUnavailable state"); - // Fall through intended - case EnumPresenceState::PresenceStateUnknown: - if (_contactProfile.hasAvailableSIPNumber()) { - // SIP - status = QtContactPixmap::ContactNoStatusSIP; - } else if (hasPSTNCall) { - status = QtContactPixmap::ContactNoStatus; - } else { - status = QtContactPixmap::ContactUnknown; - } - break; - case EnumPresenceState::PresenceStateOnline: - status = QtContactPixmap::ContactOnline; - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - status = QtContactPixmap::ContactDND; - break; - case EnumPresenceState::PresenceStateAway: - status = QtContactPixmap::ContactAway; - break; - case EnumPresenceState::PresenceStateInvisible: - status = QtContactPixmap::ContactInvisible; - break; - case EnumPresenceState::PresenceStateOffline: - if (hasPSTNCall) { - status = QtContactPixmap::ContactNoStatus; - } else { - status = QtContactPixmap::ContactOffline; - } - break; - default: - status = QtContactPixmap::ContactUnknown; - LOG_FATAL("unknown state=" + String::fromNumber(_contactProfile.getPresenceState())); - } - return status; -} - -void QtContact::startChat() { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->startIM(_contactId); -} - -void QtContact::startSMS() { - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cWengoPhone.getPresentation(); - UserProfile * userprofile = _cWengoPhone.getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userprofile && userprofile->hasWengoAccount()) { - QtSms * sms = qtWengoPhone->getQtSms(); - if (sms) { - sms->setPhoneNumber(getMobilePhone()); - sms->setText(QString::null); - sms->setSignature(QString::null); - sms->getWidget()->show(); - } - } else { - QtNoWengoAlert alert(qtWengoPhone->getWidget(), *qtWengoPhone); - alert.getQDialog()->exec(); - } -} - -void QtContact::setButton(const Qt::MouseButton button) { - _mouseButton = button; -} - -Qt::MouseButton QtContact::getButton() const { - return _mouseButton; -} - -void QtContact::setOpenStatus(bool value) { - _openStatus = value; -} - -int QtContact::getHeight() const { - if (_openStatus) { - return 95; - } - return UserSize; -} - -QString QtContact::getMobilePhone() const { - return QString::fromStdString(_contactProfile.getMobilePhone()); -} - -QString QtContact::getHomePhone() const { - return QString::fromStdString(_contactProfile.getHomePhone()); -} - -QString QtContact::getWebsite() const { - return QString::fromStdString(_contactProfile.getWebsite()); -} - -QString QtContact::getWorkPhone() const { - return QString::fromStdString(_contactProfile.getWorkPhone()); -} - -QString QtContact::getWengoPhoneNumber() const { - return QString::fromStdString(_contactProfile.getFirstAvailableWengoId()); -} - -QString QtContact::getPreferredNumber() const { - return QString::fromStdString(_contactProfile.getPreferredNumber()); -} - -QString QtContact::getFirstFreePhoneNumber() const { - return QString::fromStdString(_contactProfile.getFirstFreePhoneNumber()); -} - -bool QtContact::hasPhoneNumber() const { - if (!getMobilePhone().isEmpty()) { - return true; - } - if (!getHomePhone().isEmpty()) { - return true; - } - if (!getWorkPhone().isEmpty()) { - return true; - } - if (!getWengoPhoneNumber().isEmpty()) { - return true; - } - if(!getFirstFreePhoneNumber().isEmpty()) { - return true; - } - return false; -} - -bool QtContact::hasIM() const { - return _contactProfile.hasIM(); -} - -bool QtContact::hasFreeCall() const { - return _contactProfile.hasFreeCall(); -} - -bool QtContact::hasCall() const { - return _contactProfile.hasCall(); -} - -bool QtContact::hasVideo() const { - return _contactProfile.hasVideo(); -} - -bool QtContact::hasFileTransfer() const { - return _contactProfile.hasFileTransfer(); -} - -void QtContact::startCall(const QString & number) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->makeCall(number.toStdString()); -} - -void QtContact::startCall() { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->makeContactCall(_contactId); -} - -void QtContact::sendFile() { - - if (_contactProfile.hasAvailableWengoId()) { - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cWengoPhone.getPresentation(); - IMContactSet contactList; - - IMContact imContact = _contactProfile.getFirstAvailableWengoIMContact(); - contactList.insert(imContact); - - QtFileTransfer * qtFileTransfer = qtWengoPhone->getFileTransfer(); - if (qtFileTransfer) { - - QString filename = qtFileTransfer->getChosenFile(); - if (!filename.isEmpty()) { - - qtFileTransfer->createSendFileSession(contactList, filename, - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList()); - } - } - } -} - -void QtContact::contactUpdated() { - _contactProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactProfile(_contactId); -} - -void QtContact::startFreeCall() { - std::string phoneNumber = _contactProfile.getFirstFreePhoneNumber(); - if (phoneNumber.empty()) { - phoneNumber = _contactProfile.getFirstVoiceMailNumber(); - } - if (phoneNumber.empty()) { - LOG_WARN("Couldn't find neither a free phone number, nor a voice mail number"); - return; - } - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->makeCall(phoneNumber); -} - -QString QtContact::getDisplayName() const { - return QString::fromStdString(_contactProfile.getDisplayName()); -} - -EnumPresenceState::PresenceState QtContact::getPresenceState() const { - return _contactProfile.getPresenceState(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContact.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACT_H -#define OWQTCONTACT_H - -#include - -#include "QtContactPixmap.h" - -#include -#include -#include -#include - -class QPainter; -class CWengoPhone; -class QModelIndex; -class QStyleOptionViewItem; -class QPainter; -class QRect; - -/** - * Qt Presentation component for Contact - * - * @author Mr K - */ -class QtContact : QObject { - Q_OBJECT -public: - - enum SizeHint { UserSize = 22 }; - - QtContact(const ContactProfile * contactProfile, CWengoPhone & cWengoPhone, QObject * parent); - QtContact(const std::string & contactId, CWengoPhone & wengoPhone, QObject * parent); - - virtual void paint(QPainter * painter, const QStyleOptionViewItem & option); - void paintForeground(QPainter * painter, const QStyleOptionViewItem & option); - - QString getId() const; - - QString getUserName() const; - - QString getGroupName() const; - - bool hasIM() const; - - bool hasCall() const; - - bool hasFreeCall() const; - - bool hasVideo() const; - - bool hasFileTransfer() const; - - void setMouseOn(bool value) { _mouseOn = value; } - - /** - * Returns the pixmap to draw for this contact. - */ - QtContactPixmap::ContactPixmap getStatus() const; - - void setButton(const Qt::MouseButton button); - - void setOpenStatus(bool value); - - bool isOpen() const { - return _openStatus; - } - - int getHeight() const; - - Qt::MouseButton getButton() const; - - void setAvatar(QString path) { _avatarPath = path; } - - QString getAvatar() const { return _avatarPath; } - - void startChat(); - - void startSMS(); - - void startCall(const QString & number); - - void startCall(); - - void startFreeCall(); - - void sendFile(); - - QString getMobilePhone() const; - - QString getHomePhone() const; - - QString getWorkPhone() const; - - QString getWengoPhoneNumber() const; - - QString getPreferredNumber() const; - - QString getFirstFreePhoneNumber() const; - - QString getWebsite() const; - - bool hasPhoneNumber() const; - - QString getDisplayName() const; - - EnumPresenceState::PresenceState getPresenceState() const; - -public Q_SLOTS: - - void contactUpdated(); - -Q_SIGNALS: - - void clicked(QtContact * qtContact, int prt); - -private: - bool isTestCall() const; - - QString _userName; - - QPixmap _imPixmap; - - QPixmap _callPixmap; - - QPixmap _videoPixmap; - - QtContactPixmap::ContactPixmap _status; - - bool _mouseOn; - - bool _openStatus; - - Qt::MouseButton _mouseButton; - - QString _avatarPath; - - /** - * The UUID of the Contact associated with this QtContact. - */ - std::string _contactId; - - ContactProfile _contactProfile; - - CWengoPhone & _cWengoPhone; - - QMutex _mutex; -}; - -#endif //OWQTCONTACT diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactInfo.h" - -#include "QtContactListManager.h" -#include "QtContact.h" - -#include - -QtContactInfo::QtContactInfo(QTreeWidgetItem * item, QTreeWidgetItem * parentItem, const QString & contactId, int index) { - _contactId = contactId; - _item = item; - _parentItem = parentItem; - _index = index; - _clear = false; -} - -QtContactInfo::QtContactInfo(const QtContactInfo & other) { - _contactId = other._contactId; - _item = other._item; - _parentItem = other._parentItem; - _index = other._index; - _clear = other._clear; -} - -QtContactInfo::~QtContactInfo() { -} - -void QtContactInfo::clear() { - _clear = true; -} - -bool QtContactInfo::isCleared() const { - return _clear; -} - -QTreeWidgetItem * QtContactInfo::getItem() const { - return _item; -} - -QTreeWidgetItem * QtContactInfo::getParentItem() const { - return _parentItem; -} - -QString QtContactInfo::getContactId() const { - return _contactId; -} - -int QtContactInfo::getIndex() const { - return _index; -} - -bool QtContactInfo::operator<(const QtContactInfo & other) const { - QtContactListManager * ul = QtContactListManager::getInstance(); - QtContact * qtContact = ul->getContact(_contactId); - QtContact * otherQtContact = ul->getContact(other._contactId); - if (qtContact && otherQtContact) { - return qtContact->getUserName().toUpper() < otherQtContact->getUserName().toUpper(); - } - return false; -} - -QtContactInfo & QtContactInfo::operator=(const QtContactInfo & other) { - _contactId = other._contactId; - _item = other._item; - _parentItem = other._parentItem; - _index = other._index; - _clear = other._clear; - return *this; -} - -QtContactPixmap::ContactPixmap QtContactInfo::getStatus() const { - QtContactListManager * ul = QtContactListManager::getInstance(); - QtContact * qtContact = ul->getContact(_contactId); - return qtContact->getStatus(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactInfo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTINFO_H -#define OWCONTACTINFO_H - -#include "QtContactPixmap.h" - -class QTreeWidgetItem; -class QtContact; - -/** - * Store contact informations for sorting - * - * @author Mr K - */ -class QtContactInfo { -public: - - QtContactInfo(QTreeWidgetItem * item, QTreeWidgetItem * parentItem, const QString & contactId, int index); - - QtContactInfo(const QtContactInfo & other); - - ~QtContactInfo(); - - QTreeWidgetItem * getItem() const; - - QTreeWidgetItem * getParentItem() const; - - QString getContactId() const; - - int getIndex() const; - - void clear(); - - bool isCleared() const; - - QtContactPixmap::ContactPixmap getStatus() const; - - bool operator<(const QtContactInfo & other) const; - - QtContactInfo & operator=(const QtContactInfo & other); - -private: - - QTreeWidgetItem * _item; - - QTreeWidgetItem * _parentItem; - - QString _contactId; - - int _index; - - bool _clear; -}; - -#endif //OWCONTACTINFO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,257 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactList.h" - -#include "ui_ContactList.h" - -#include "ContactGroupPopupMenu.h" -#include "QtContactListManager.h" -#include "QtContactManager.h" -#include "QtContactPixmap.h" -#include "QtContactTreeMouseFilter.h" -#include "QtTreeViewDelegate.h" - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include - -const QString QtContactList::DEFAULT_GROUP_NAME = "WENGO2006CLISTHIDE"; -const QString QtContactList::STATUS_NOSTATUS_PIXMAP = ":/pics/status/unknown-wengo.png"; -const QString QtContactList::STATUS_NOSTATUS_SIP_PIXMAP = ":/pics/status/unknown-sip.png"; -const QString QtContactList::STATUS_UNKNOW_PIXMAP = ":/pics/status/unknown.png"; -const QString QtContactList::STATUS_ONLINE_PIXMAP = ":/pics/status/online.png"; -const QString QtContactList::STATUS_OFFLINE_PIXMAP = ":/pics/status/offline.png"; -const QString QtContactList::STATUS_DND_PIXMAP = ":/pics/status/donotdisturb.png"; -const QString QtContactList::STATUS_INVISIBLE_PIXMAP = ":/pics/status/invisible.png"; -const QString QtContactList::STATUS_AWAY_PIXMAP = ":/pics/status/away.png"; -const QString QtContactList::STATUS_WDEAL_PIXMAP = ":/pics/status/wdeal.png"; -const QString QtContactList::STATUS_TESTCALL_PIXMAP = ":/pics/status/testcall.png"; -const QString QtContactList::STATUS_GROUP_OPEN_PIXMAP = ":/pics/group_open.png"; -const QString QtContactList::STATUS_GROUP_CLOSE_PIXMAP = ":/pics/group_close.png"; - -static inline QPixmap scalePixmap(const QString name) { - return QPixmap(name).scaled(QSize(16, 16), Qt::KeepAspectRatio, Qt::SmoothTransformation); -} - -QtContactList::QtContactList(CContactList & cContactList, CWengoPhone & cWengoPhone) - : QObject(NULL), - _cContactList(cContactList), - _cWengoPhone(cWengoPhone) { - - _waitingForModel = false; - - _contactListWidget = new QWidget(NULL); - - _ui = new Ui::ContactList(); - _ui->setupUi(_contactListWidget); - -//#if defined(OS_MACOSX) -// _contactListWidget->layout()->setMargin(10); -//#endif - - //treeWidget - _ui->treeWidget->setAcceptDrops(true); - _ui->treeWidget->setEditTriggers(QAbstractItemView::NoEditTriggers); - _ui->treeWidget->setProperty("showDropIndicator", QVariant(true)); - _ui->treeWidget->setDragEnabled(true); - _ui->treeWidget->setAlternatingRowColors(false); - _ui->treeWidget->setSelectionMode(QAbstractItemView::ExtendedSelection); - _ui->treeWidget->setSelectionBehavior(QAbstractItemView::SelectItems); - _ui->treeWidget->setIndentation(0); - _ui->treeWidget->setRootIsDecorated(false); - _ui->treeWidget->sortByColumn(1,Qt::AscendingOrder); - _ui->treeWidget->setColumnHidden(1,true); - - //icons - QtContactPixmap * spx = QtContactPixmap::getInstance(); - spx->setPixmap(QtContactPixmap::ContactUnknown, scalePixmap(STATUS_UNKNOW_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactNoStatus, scalePixmap(STATUS_NOSTATUS_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactNoStatusSIP, scalePixmap(STATUS_NOSTATUS_SIP_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactOnline, scalePixmap(STATUS_ONLINE_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactOffline, scalePixmap(STATUS_OFFLINE_PIXMAP )); - spx->setPixmap(QtContactPixmap::ContactDND, scalePixmap(STATUS_DND_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactInvisible, scalePixmap(STATUS_INVISIBLE_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactAway, scalePixmap(STATUS_AWAY_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactWDeal, scalePixmap(STATUS_WDEAL_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactTestCall, scalePixmap(STATUS_TESTCALL_PIXMAP)); - - //Group icons - spx->setPixmap(QtContactPixmap::ContactGroupOpen, QPixmap(STATUS_GROUP_OPEN_PIXMAP)); - spx->setPixmap(QtContactPixmap::ContactGroupClose, QPixmap(STATUS_GROUP_CLOSE_PIXMAP)); - - _contactManager = new QtContactManager(*_cWengoPhone.getCUserProfileHandler().getCUserProfile(), - _cWengoPhone, *this, _ui->treeWidget, _ui->treeWidget); - - QtContactTreeMouseFilter * qtContactTreeMouseFilter = - new QtContactTreeMouseFilter(_cContactList, _ui->treeWidget, _ui->treeWidget); - SAFE_CONNECT_RECEIVER(qtContactTreeMouseFilter, SIGNAL(mouseClicked(Qt::MouseButton)), - _contactManager, SLOT(setMouseButton(Qt::MouseButton))); - SAFE_CONNECT(qtContactTreeMouseFilter, SIGNAL(mergeContacts(QString, QString)), - SLOT(mergeContactsSlot(QString, QString))); - - QtTreeViewDelegate * delegate = new QtTreeViewDelegate(_cWengoPhone, - _contactManager, _ui->treeWidget); - delegate->setParent(_ui->treeWidget->viewport()); - - _ui->treeWidget->setItemDelegate(delegate); - _ui->treeWidget->setUniformRowHeights(false); - _ui->treeWidget->header()->hide(); - - //Popup Menus - _contactGroupPopupMenu = new ContactGroupPopupMenu(_cContactList, _ui->treeWidget); - SAFE_CONNECT(_contactManager, SIGNAL(groupRightClicked(const QString &)), - SLOT(groupRightClickedSlot(const QString &))); - - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cWengoPhone.getPresentation(); - qtWengoPhone->setQtContactList(this); - _ui->treeWidget->viewport()->setFocus(); - - initContent(); -} - -QtContactList::~QtContactList() { - QtContactListManager::getInstance()->clear(); - OWSAFE_DELETE(_contactListWidget); - OWSAFE_DELETE(_ui); -} - -void QtContactList::initContent() { - StringList contacts = _cContactList.getContactIds(); - StringList::const_iterator it; - - for (it = contacts.begin(); it != contacts.end(); ++it) { - contactAddedEvent(*it); - } -} - -void QtContactList::updatePresentation() { - _contactManager->userStateChanged(); - _ui->treeWidget->viewport()->update(); -} - -void QtContactList::contactGroupAddedEvent(const std::string & groupId) { - QString tmp = QString::fromStdString(groupId); - if (_contactManager->groupsAreHidden()) { - tmp = DEFAULT_GROUP_NAME; - } - addGroup(tmp); -} - -void QtContactList::contactGroupRemovedEvent(const std::string & groupId) { - QList list = _ui->treeWidget->findItems(QString::fromStdString(groupId), Qt::MatchExactly); - if (!list.isEmpty()) { - _ui->treeWidget->takeTopLevelItem(_ui->treeWidget->indexOfTopLevelItem(list[0])); - } -} - -void QtContactList::contactGroupRenamedEvent(const std::string & groupId) { - updatePresentation(); -} - -void QtContactList::contactAddedEvent(const std::string & contactId) { - _contactManager->updateContact(contactId); -} - -void QtContactList::contactRemovedEvent(const std::string & contactId) { - _contactManager->removeContact(QString::fromStdString(contactId)); - updatePresentation(); - _waitingForModel = false; -} - -void QtContactList::contactMovedEvent(const std::string & dstGroupId, - const std::string & srcGroupId, const std::string & contactId) { - - _contactManager->moveContact(dstGroupId, srcGroupId, contactId); -} - -void QtContactList::contactChangedEvent(const std::string & contactId) { - _contactManager->updateContact(contactId); - contactChangedEventSignal(QString::fromStdString(contactId)); -} - -void QtContactList::addGroup(QString contactGroupId) { - QList list; - - list = _ui->treeWidget->findItems(contactGroupId, Qt::MatchExactly); - if (list.isEmpty()) - { - bool group_has_contact = false; - std::list contacts = _cContactList.getContactList().getContacts(); - for (std::list::iterator it = contacts.begin();it != contacts.end() ; it++ ) - { - if ( (*it).getGroupId() == contactGroupId.toStdString()) - { - group_has_contact = true; - break; - } - } - - if(group_has_contact) - { - QTreeWidgetItem * group = new QTreeWidgetItem(_ui->treeWidget); - group->setText(0, contactGroupId); - group->setText(1, QString::fromStdString(_cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(contactGroupId.toStdString()))); - _ui->treeWidget->setItemExpanded(group, true); - } - } -} - -CContactList & QtContactList::getCContactList() const { - return _cContactList; -} - -void QtContactList::groupRightClickedSlot(const QString & groupId) { - _contactGroupPopupMenu->showMenu(groupId); -} - -void QtContactList::mergeContactsSlot(QString dstContact, QString srcContact) { - if (!_waitingForModel) { - _waitingForModel = true; - - ContactProfile dstContactProfile = _cContactList.getContactProfile(dstContact.toStdString()); - ContactProfile srcContactProfile = _cContactList.getContactProfile(srcContact.toStdString()); - if (QMessageBox::question(_contactListWidget, - tr("@product@ - Merge Contacts"), - tr("Merge %1 with %2?") - .arg(QString::fromStdString(dstContactProfile.getDisplayName())) - .arg(QString::fromStdString(srcContactProfile.getDisplayName())), - tr("&Yes"), tr("&No"), - QString(), 0, 1) == 0) { - _cContactList.merge(dstContact.toStdString(), srcContact.toStdString()); - } else { - _waitingForModel = false; - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTLIST_H -#define OWQTCONTACTLIST_H - -#include - -#include -#include - -class CContactList; -class Contact; -class ContactPopupMenu; -class ContactGroupPopupMenu; -class CWengoPhone; -class QtContactManager; - -class QTreeWidgetItem; -namespace Ui { class ContactList; } - -/** - * Qt Presentation component for ContactList. - * - * @author Tanguy Krotoff - * @author Philippe Bernery - */ -class QtContactList : public QObject, public PContactList { - Q_OBJECT -public: - - static const QString DEFAULT_GROUP_NAME; - static const QString STATUS_UNKNOW_PIXMAP; - static const QString STATUS_NOSTATUS_PIXMAP; - static const QString STATUS_NOSTATUS_SIP_PIXMAP; - static const QString STATUS_ONLINE_PIXMAP; - static const QString STATUS_OFFLINE_PIXMAP; - static const QString STATUS_DND_PIXMAP; - static const QString STATUS_INVISIBLE_PIXMAP; - static const QString STATUS_AWAY_PIXMAP; - static const QString STATUS_WDEAL_PIXMAP; - static const QString STATUS_TESTCALL_PIXMAP; - static const QString STATUS_CONTACT_IM_PIXMAP; - static const QString STATUS_CONTACT_CALL_PIXMAP; - static const QString STATUS_CONTACT_VIDEO_PIXMAP; - static const QString STATUS_GROUP_OPEN_PIXMAP; - static const QString STATUS_GROUP_CLOSE_PIXMAP; - - QtContactList(CContactList & cContactList, CWengoPhone & cWenghoPhone); - - virtual ~QtContactList(); - - QWidget * getWidget() const { - return _contactListWidget; - } - - QtContactManager * getContactManager() const { - return _contactManager; - } - - void updatePresentation(); - - void contactGroupAddedEvent(const std::string & groupId); - - void contactGroupRemovedEvent(const std::string & groupId); - - void contactGroupRenamedEvent(const std::string & groupId); - - void contactAddedEvent(const std::string & contactId); - - void contactRemovedEvent(const std::string & contactId); - - void contactMovedEvent(const std::string & dstGroupId, - const std::string & srcGroupId, const std::string & contactId); - - void contactChangedEvent(const std::string & contactId); - - CContactList & getCContactList() const; - -Q_SIGNALS: - - void contactChangedEventSignal(QString contactId); - -private Q_SLOTS: - - void groupRightClickedSlot(const QString & groupName); - - void mergeContactsSlot(QString dstContact, QString srcContact); - -private: - - /** - * Initializes the Content of the QtContactList. - */ - void initContent(); - - void addGroup(QString contactGroupId); - - QtContactManager * _contactManager; - - CContactList & _cContactList; - - Ui::ContactList * _ui; - - QWidget * _contactListWidget; - - ContactPopupMenu * _contactPopupMenu; - - ContactGroupPopupMenu * _contactGroupPopupMenu; - - /** True when model is doing some things on contacts. */ - bool _waitingForModel; - - CWengoPhone & _cWengoPhone; -}; - -#endif //OWQTCONTACTLIST_H - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,303 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactListManager.h" - -#include - -#include - -QtContactListManager * QtContactListManager::_instance = NULL; - -QtContactListManager * QtContactListManager::getInstance() { - if (!_instance) { - _instance = new QtContactListManager; - } - return _instance; -} - -QtContactListManager::QtContactListManager() { - _mutex = new QMutex(QMutex::Recursive); -} - -QtContactListManager::~QtContactListManager() { - delete _mutex; -} - -void QtContactListManager::paintContact(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) { - QMutexLocker locker(_mutex); - QtContact * qtContact; - if (contains(index.data().toString())) { - qtContact = _contactList[index.data().toString()]; - qtContact->paint(painter, option); - } -} - -void QtContactListManager::addContact(QtContact * qtContact) { - QMutexLocker locker(_mutex); - if (qtContact) { - _contactList[qtContact->getId()] = qtContact; - } -} - -void QtContactListManager::removeContact(QtContact * qtContact) { - QMutexLocker locker(_mutex); - if (qtContact) { - _contactList.remove(qtContact->getId()); - delete qtContact; - } -} - -void QtContactListManager::mouseOn(const QString & contactId) { - QMutexLocker locker(_mutex); - QtContact * qtContact; - if (contains(contactId)) { - qtContact = _contactList[contactId]; - if (qtContact) { - qtContact->setMouseOn(true); - } - qtContact = _contactList[_lastMouseOn]; - if (qtContact) { - qtContact->setMouseOn(false); - } - _lastMouseOn = contactId; - } -} - -QtContact * QtContactListManager::getContact(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]; - } - return NULL; -} - -QString QtContactListManager::getPreferredNumber(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getPreferredNumber(); - } - return QString::null; -} - -QString QtContactListManager::getMobilePhone(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getMobilePhone(); - } - return QString::null; -} - -QString QtContactListManager::getHomePhone(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getHomePhone(); - } - return QString::null; -} - -QString QtContactListManager::getWorkPhone(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getHomePhone(); - } - return QString::null; -} - -QString QtContactListManager::getWebsite(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getWebsite(); - } - return QString::null; -} - -bool QtContactListManager::contains(const QString & contactId) const { - QMutexLocker locker(_mutex); - return _contactList.contains(contactId); -} - -void QtContactListManager::contactUpdated(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - _contactList[contactId]->contactUpdated(); - } -} - -QString QtContactListManager::getFirstFreePhoneNumber(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getFirstFreePhoneNumber(); - } - return QString::null; -} - -QString QtContactListManager::getWengoPhoneNumber(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getWengoPhoneNumber(); - } - return QString::null; -} - -bool QtContactListManager::hasIM(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->hasIM(); - } - return false; -} - -bool QtContactListManager::hasFileTransfer(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->hasFileTransfer(); - } - return false; -} - -bool QtContactListManager::hasCall(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->hasCall(); - } - return false; -} - -bool QtContactListManager::hasVideo(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->hasVideo(); - } - return false; -} - -bool QtContactListManager::hasPhoneNumber(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->hasPhoneNumber(); - } - return false; -} - -void QtContactListManager::setButton(const QString & contactId, const Qt::MouseButton button) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - _contactList[contactId]->setButton(button); - } -} - -Qt::MouseButton QtContactListManager::getButton(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getButton(); - } - return Qt::NoButton; -} - -void QtContactListManager::setOpenStatus(const QString & contactId, bool value) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - _contactList[contactId]->setOpenStatus(value); - } -} - -int QtContactListManager::getHeight(const QString & contactId) const { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - return _contactList[contactId]->getHeight(); - } - else { - return 0; - } -} - -void QtContactListManager::resetMouseStatus() { - QMutexLocker locker(_mutex); - QHash ::iterator it; - for (it = _contactList.begin(); it != _contactList.end(); it++) { - QtContact * qtContact = it.value(); - if (qtContact) { - qtContact->setButton(Qt::NoButton); - } - } -} - -void QtContactListManager::startChat(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->startChat(); - locker.relock(); - } -} - -void QtContactListManager::startSMS(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->startSMS(); - locker.relock(); - } -} - -void QtContactListManager::startCall(const QString & contactId, const QString & number) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->startCall(number); - locker.relock(); - } -} - -void QtContactListManager::startCall(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->startCall(); - locker.relock(); - } -} - -void QtContactListManager::startFreeCall(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->startFreeCall(); - locker.relock(); - } -} - -void QtContactListManager::sendFile(const QString & contactId) { - QMutexLocker locker(_mutex); - if (contains(contactId)) { - locker.unlock(); - _contactList[contactId]->sendFile(); - locker.relock(); - } -} - -void QtContactListManager::clear() { - QMutexLocker locker(_mutex); - QHash ::iterator it; - for (it = _contactList.begin(); it != _contactList.end(); it++) { - delete((*it)); - } - _contactList.clear(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactListManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,138 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCONTACTLISTMANAGER_H -#define OWCONTACTLISTMANAGER_H - -#include "QtContact.h" -#include "QtContactPixmap.h" - -#include - -class CContact; -class QMutex; -class QTreeWidget; - -/** - * QtContact storage class for fast lookup - * - * @author Mr K. - */ -class QtContactListManager { -public: - - static QtContactListManager * getInstance(); - - ~QtContactListManager(); - - void addContact(QtContact * qtContact); - - void removeContact(QtContact * qtContact); - - void paintContact(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index); - - void mouseOn(const QString & contactId); - - bool contains(const QString & contactId) const; - - void contactUpdated(const QString & contactId); - - bool hasIM(const QString & contactId) const; - - bool hasCall(const QString & contactId) const; - - bool hasVideo(const QString & contactId) const; - - bool hasPhoneNumber(const QString & contactId) const; - - bool hasFileTransfer(const QString & contactId) const; - - QtContact * getContact(const QString & contactId) const; - - QString getPreferredNumber(const QString & contactId) const; - - QString getMobilePhone(const QString & contactId) const; - - QString getHomePhone(const QString & contactId) const; - - QString getWorkPhone(const QString & contactId) const; - - QString getWebsite(const QString & contactId) const; - - void setButton(const QString & contactId, const Qt::MouseButton button); - - void setOpenStatus(const QString & contactId, bool value); - - Qt::MouseButton getButton(const QString & contactId) const; - - int getHeight(const QString & contactId) const; - - QString getFirstFreePhoneNumber(const QString & contactId) const; - - QString getWengoPhoneNumber(const QString & contactId) const; - - QTreeWidget * getTreeWidget() const { return _tree; } - - void setTreeWidget(QTreeWidget * tree) { _tree = tree; } - - void resetMouseStatus(); - - void startChat(const QString & contactId); - - void startSMS(const QString & contactId); - - void startCall(const QString & contactId, const QString & number); - - void startCall(const QString & contactId); - - void sendFile(const QString & contactId); - - void clear(); - - /** - * Will start a call with a free phone number. - */ - void startFreeCall(const QString & contactId); - -private: - - QtContactListManager(); - - QtContactListManager(const QtContactListManager & other) - : _tree(other._tree), - _contactList(other._contactList) { } - - QtContactListManager & operator=(const QtContactListManager & other) { - _tree = other._tree; - _contactList = other._contactList; - return *this; - } - - QTreeWidget * _tree; - - QHash _contactList; - - static QtContactListManager * _instance; - - QString _lastMouseOn; - - mutable QMutex * _mutex; -}; - -#endif //OWCONTACTLISTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,879 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactManager.h" - -#include "QtContactWidget.h" -#include "QtContactList.h" -#include "QtContactPixmap.h" -#include "QtContactInfo.h" -#include "QtContactListManager.h" -#include "QtContactTreeKeyFilter.h" -#include "QtConferenceAction.h" - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include - -#include - -QtContactManager::QtContactManager(CUserProfile & cUserProfile, CWengoPhone & cWengoPhone, - QtContactList & qtContactList, QObject * parent, QTreeWidget * target) - : QObject(parent), - _cWengoPhone(cWengoPhone), - _cUserProfile(cUserProfile), - _qtContactList(qtContactList) { - - LANGUAGE_CHANGE(this); - languageChanged(); - - _tree = target; - _previous = NULL; - _lastClicked = NULL; - _sortContacts = true; - _menu = NULL; - _timerId = -1; - _sortTimerId = -1; - _showTimerId = -1; - _waitForDoubleClick = false; - _canSort = true; - _wantSort = false; - _canShow = true; - _wantShow = false; - - QtContactListManager::getInstance()->setTreeWidget(target); - target->setMouseTracking(true); - QtContactTreeKeyFilter * keyFilter = new QtContactTreeKeyFilter(this, target); - - SAFE_CONNECT(target, SIGNAL(itemSelectionChanged()), SLOT(treeViewSelectionChanged())); - SAFE_CONNECT(target, SIGNAL(itemClicked(QTreeWidgetItem *, int)), SLOT(itemClicked(QTreeWidgetItem *, int))); - - SAFE_CONNECT(keyFilter, SIGNAL(openItem(QTreeWidgetItem *)), SLOT(openContactInfo(QTreeWidgetItem *))); - SAFE_CONNECT(keyFilter, SIGNAL(closeItem(QTreeWidgetItem *)), SLOT(closeContactInfo())); - SAFE_CONNECT(keyFilter, SIGNAL(deleteItem(QTreeWidgetItem *)), SLOT(deleteContact())); - SAFE_CONNECT(keyFilter, SIGNAL(enterPressed(QTreeWidgetItem *)),SLOT(defaultAction(QTreeWidgetItem *))); - - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cWengoPhone.getPresentation(); - - SAFE_CONNECT_RECEIVER(this, SIGNAL(inviteToConferenceClicked(QString, PhoneCall *)), - qtWengoPhone, SLOT(addToConference(QString, PhoneCall *))); -} - -void QtContactManager::startSMS() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - ul->startSMS(item->text(0)); - } -} - -void QtContactManager::startChat() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - ul->startChat(item->text(0)); - } -} - -void QtContactManager::sendFile() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - ul->sendFile(item->text(0)); - } -} - -void QtContactManager::editContact() { - QTreeWidgetItem * item = _tree->currentItem(); - if (item) { - editContact(item->text(0)); - } -} - -void QtContactManager::editContact(QString contactId) { - ContactProfile contactProfile = _cUserProfile.getCContactList().getContactProfile(contactId.toStdString()); - QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _tree, tr("Edit Contact")); - if (qtProfileDetails.show()) { - _cUserProfile.getCContactList().updateContact(contactProfile); - } -} - -void QtContactManager::deleteContact() { - QTreeWidgetItem * item = _tree->currentItem(); - if (!item) { - return; - } - - if (QMessageBox::question(_tree, - tr("Delete contact"), - tr("Do you really want to delete this contact?"), - tr("&Yes"), - tr("&No"), - QString(), - 0, 1) == 0) { - - _cUserProfile.getCContactList().removeContact(item->text(0).toStdString()); - } -} - -void QtContactManager::treeViewSelectionChanged() { - if (_button == Qt::NoButton) { - closeContactInfo(); - } -} - -void QtContactManager::closeContactInfo() { - if (_previous) { - if (!_previous->parent()) { - //It's a group - return; - } - - _tree->closePersistentEditor(_previous); - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->setOpenStatus(_previous->text(0), false); - _previous->setSizeHint(0, QSize(-1, ul->getHeight(_previous->text(0)))); - _previous = NULL; - - _tree->viewport()->update(); - _tree->doItemsLayout(); - } -} - -void QtContactManager::openContactInfo(QTreeWidgetItem * item) { - if (_previous) { - closeContactInfo(); - } - - if (!item) { - return; - } - - if (item->parent()) { - - QtContactListManager * ul = QtContactListManager::getInstance(); - - //Does not expand if contact is part of the WDeal contact group - QtContact * qtContact = ul->getContact(item->text(0)); - if (qtContact->getGroupName() == "WDeal") { - return; - } - /// - - _previous = item; - ul->setOpenStatus(_previous->text(0), true); - item->setSizeHint(0, QSize(-1, ul->getHeight(item->text(0)))); - _tree->openPersistentEditor(item); - _tree->viewport()->update(); - _tree->doItemsLayout(); - _tree->scrollToItem (item); - } -} - -void QtContactManager::itemClicked(QTreeWidgetItem * item, int) { - if ((_lastClicked == item) && (_waitForDoubleClick)) { - defaultAction(item); - _button = Qt::NoButton; - return; - } - - _waitForDoubleClick = true; - if (_timerId != -1) { - killTimer(_timerId); - } - _timerId = startTimer(qApp->doubleClickInterval ()); - _lastClicked = item; - QRect widgetSize = _tree->rect(); - QPoint mousepos = _tree->mapFromGlobal(QCursor::pos()); - - if (!item->parent()) { - groupClicked(item); - return; - } - - QtContactListManager * ul = QtContactListManager::getInstance(); - if (ul->getButton(item->text(0)) == Qt::RightButton) { - itemRightClicked(item); - return; - } - - if (item->parent()) { - if (_previous == item) { - closeContactInfo(); - } else { - openContactInfo(item); - } - } - - _tree->viewport()->update(); - _button = Qt::NoButton; -} - -void QtContactManager::itemRightClicked(QTreeWidgetItem * item) { - OWSAFE_DELETE(_menu); - _menu = createMenu(); - _menu->popup(QCursor::pos()); - - //clearSelection () is bugged ! We have to clear the selection ourself - clearTreeSelection(); - _tree->setItemSelected(item, true); - _button = Qt::NoButton; -} - -void QtContactManager::groupClicked(QTreeWidgetItem * item) { - if (_button == Qt::RightButton) { - groupRightClicked(item->text(0)); - return; - } - - if (_tree->isItemExpanded(item)) { - _tree->collapseItem(item); - } else { - _tree->expandItem(item); - } -} - -void QtContactManager::clearTreeSelection() { - QList selectedList = _tree->selectedItems(); - QList ::iterator it; - for (it = selectedList.begin(); it != selectedList.end(); it ++) { - _tree->setItemSelected((*it), false); - } -} - -void QtContactManager::defaultAction(QTreeWidgetItem * item) { - _button = Qt::NoButton; - if (!item) { - return; - } - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QtContactListManager * ul = QtContactListManager::getInstance(); - QString userId = item->text(0); - ContactProfile contactProfile = _qtContactList.getCContactList().getContactProfile(userId.toStdString()); - - if (config.getGeneralClickStartChat() ) - { - if(contactProfile.getPreferredIMContact()) - { - ul->startChat(userId); - return; - } - } - - // Start free call by default - if (contactProfile.hasFreeCall() || contactProfile.hasVoiceMail()) - { - ul->startFreeCall(userId); - return; - } - else if (config.getGeneralClickCallCellPhone() && contactProfile.hasCall()) - { - ul->startCall(userId); - return; - } - - if(contactProfile.getPreferredIMContact()) - { - ul->startChat(userId); - return; - } -} - -void QtContactManager::safeUserStateChanged() { - OWSAFE_DELETE(_menu); - redrawContacts(); -} - -void QtContactManager::userStateChanged() { - safeUserStateChanged(); -} - -void QtContactManager::sortContacts(bool bypassTimer) { - safeSortContacts(bypassTimer); -} - -void QtContactManager::safeSortContacts(bool bypassTimer) { - if (!_sortContacts) { - return; - } - - if (!bypassTimer) { - if (_canSort) { - _canSort = false; - if (_sortTimerId != -1) { - killTimer(_sortTimerId); - } - _sortTimerId = startTimer(1000); - _wantSort = false; - } else { - _wantSort = true; - return; - } - } - - int topCount = _tree->topLevelItemCount(); - for (int topIndex = 0; topIndex < topCount; ++topIndex) { - QTreeWidgetItem* groupItem = _tree->topLevelItem(topIndex); - int count = groupItem->childCount(); - QtContactInfoList contactInfoList; - for (int index = 0; index < count; ++index) { - QTreeWidgetItem* item = groupItem->child(index); - QtContactInfo info = QtContactInfo(item, groupItem, item->text(0), index); - contactInfoList.append(info); - } - - qSort(contactInfoList); - - Q_FOREACH(QtContactInfo info, contactInfoList) { - QTreeWidgetItem* item = info.getItem(); - groupItem->takeChild(groupItem->indexOfChild(item)); - groupItem->insertChild(groupItem->childCount(), item); - } - } -} - -bool QtContactManager::canShowUser(const ContactProfile * cprofile) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (config.getShowOfflineContacts()) { - return true; - } - - // Enforce rules from http://dev.openwengo.org/trac/openwengo/trac.cgi/wiki/ContactPresenceGrid - // version 9 - EnumPresenceState::PresenceState presenceState = cprofile->getPresenceState(); - if (presenceState == EnumPresenceState::PresenceStateOffline - || presenceState == EnumPresenceState::PresenceStateUnavailable - || presenceState == EnumPresenceState::PresenceStateUnknown) - { - QtContact qtContact(cprofile, _cWengoPhone, 0); - - QtContactPixmap::ContactPixmap pixmap = qtContact.getStatus(); - switch (pixmap) { - case QtContactPixmap::ContactNoStatusSIP: - case QtContactPixmap::ContactNoStatus: - case QtContactPixmap::ContactWDeal: - case QtContactPixmap::ContactTestCall: - return true; - case QtContactPixmap::ContactUnknown: - case QtContactPixmap::ContactOffline: - return false; - default: - LOG_WARN("Contact status for user '%s' should not be %d (presenceState=%s)", - cprofile->getDisplayName().c_str(), - pixmap, - EnumPresenceState::toString(presenceState).c_str()); - return true; - } - } - return true; -} - -void QtContactManager::redrawContacts() { - if (_canShow) { - _canShow = false; - if (_showTimerId != -1) { - killTimer(_showTimerId); - } - _showTimerId = startTimer(500); - _wantShow = false; - } else { - _wantShow = true; - return; - } - - ContactProfile cprofile; - QtContactListManager * ul = QtContactListManager::getInstance(); - std::vector contactIds = _qtContactList.getCContactList().getContactIds(); - std::vector::iterator it; - //First, remove all item from the treeview and all users from userlist - _tree->clear(); - ul->clear(); - _previous = 0; - - for (it = contactIds.begin(); it != contactIds.end(); it++) { - cprofile = _qtContactList.getCContactList().getContactProfile((*it)); - if (canShowUser(&cprofile)) { - //Create new group if needed - QTreeWidgetItem * group = createGroupItem(QString::fromStdString(cprofile.getGroupId())); - - //We have the group, now add users to the group - QTreeWidgetItem * newContact = NULL; - QtContact * qtContact = NULL; - QString contactName; - newContact = new QTreeWidgetItem(group); - newContact->setText(0, QString::fromStdString((*it))); - newContact->setFlags(newContact->flags() | Qt::ItemIsEditable); - qtContact = new QtContact((*it), _cWengoPhone, _tree); - ul->addContact(qtContact); - } - } - - safeSortContacts(true); -} - -QMenu * QtContactManager::createConferenceMenu() { - PhoneLine * phoneLine = dynamic_cast - (_cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine()); - QMenu * menu = new QMenu(_trStringInviteToConference); - if (phoneLine) { - PhoneLine::PhoneCallList phoneCallList = phoneLine->getPhoneCallList(); - PhoneLine::PhoneCallList::iterator it; - for (it = phoneCallList.begin(); it != phoneCallList.end(); it++) { - if ((*it)->getState() != EnumPhoneCallState::PhoneCallStateClosed) { - QtConferenceAction * action = new - QtConferenceAction(QString::fromStdString((*it)->getPeerSipAddress().getUserName()), menu); - action->setPhoneCall((*it)); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(inviteToConference())); - menu->addAction(action); - } - } - } - return menu; -} - -void QtContactManager::inviteToConference() { - QObject * source = sender(); - if (source) { - QtConferenceAction * action = dynamic_cast < QtConferenceAction * > (source); - QtContactListManager * ul = QtContactListManager::getInstance(); - //The current selected item - QTreeWidgetItem * item = _tree->currentItem(); - QString contactId = item->text(0); - if (ul->contains(contactId)) { - QString phone = ul->getPreferredNumber(contactId); - inviteToConferenceClicked(phone, action->getPhoneCall()); - } - } else { - LOG_FATAL("don't call this function directly"); - } -} - -QMenu * QtContactManager::createMenu() { - QAction * action = NULL; - QString contactId = _tree->currentItem()->text(0); - QMenu * menu = new QMenu(dynamic_cast (parent())); - QtContactListManager * ul = QtContactListManager::getInstance(); - - //Call menu - QMenu * callMenu = menu->addMenu(QIcon(":/pics/actions/accept-phone.png"), _trStringCall); - - if (!ul->getFirstFreePhoneNumber(contactId).isEmpty()) { - action = callMenu->addAction( _trStringFreePhone); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startFreeCall())); - } - - if (!ul->getMobilePhone(contactId).isEmpty()) { - action = callMenu->addAction( _trStringMobilePhone); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startMobileCall())); - } - - if (!ul->getHomePhone(contactId).isEmpty()) { - action = callMenu->addAction(_trStringHomePhone); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startHomeCall())); - } - - /* - if (!ul->getWorkPhone(contactId).isEmpty()) { - action = callMenu->addAction(_trStringWorkPhone); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startWorkCall())); - } - */ - - if (!ul->getWengoPhoneNumber(contactId).isEmpty()) { - action = callMenu->addAction(_trStringWengoPhone); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startWengoCall())); - } - - if (!ul->hasPhoneNumber(contactId)) { - callMenu->setEnabled(false); - } - - action = menu->addAction(QIcon(":/pics/actions/chat.png"), _trStringStartChat); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startChat())); - if (!ul->hasIM(contactId)) { - action->setEnabled(false); - } - - action = menu->addAction(QIcon(":/pics/actions/send-sms-16.png"), _trStringSendSMS); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(startSMS())); - if (ul->getMobilePhone(contactId).isEmpty()) { - action->setEnabled(false); - } - -#ifdef DISABLE_SMS - action ->setVisible(false); -#endif - - action = menu->addAction(QIcon(":/pics/actions/send_file.png"), _trStringSendFile); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(sendFile())); - if (!ul->hasFileTransfer(contactId)) { - action->setEnabled(false); - } -#ifdef DISABLE_FILETRANSFER - action ->setVisible(false); -#endif - - //FIXME Desactivated for the moment due to a crash - //menu->addMenu(createConferenceMenu()); - - menu->addSeparator(); - - QString website = ul->getWebsite(contactId); - action = menu->addAction(QIcon(":/pics/contact/home.png"), _trStringWebsite); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(goToWebsite())); - if (website.isEmpty()) { - action->setEnabled(false); - } - - menu->addSeparator(); - - action = menu->addAction(_trStringEditContact); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(editContact())); - - action = menu->addAction(_trStringDeleteContact); - SAFE_CONNECT(action, SIGNAL(triggered(bool)), SLOT(deleteContact())); - - //menu->addSeparator(); - //menu->addAction(_trStringBlockContact); - //menu->addAction(_trStringForwardToCellPhone); - - return menu; -} - -void QtContactManager::startFreeCall() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - qtContact->startCall(qtContact->getFirstFreePhoneNumber()); - } -} - -void QtContactManager::startMobileCall() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - qtContact->startCall(qtContact->getMobilePhone()); - } -} - -void QtContactManager::startHomeCall() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - qtContact->startCall(qtContact->getHomePhone()); - } -} - -void QtContactManager::startWorkCall() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - qtContact->startCall(qtContact->getWorkPhone()); - } -} - -void QtContactManager::startWengoCall() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - qtContact->startCall(qtContact->getWengoPhoneNumber()); - } -} - -void QtContactManager::goToWebsite() { - QtContactListManager * ul = QtContactListManager::getInstance(); - QTreeWidgetItem * item = _tree->currentItem(); - if (ul && item) { - QtContact * qtContact = ul->getContact(item->text(0)); - QString website = qtContact->getWebsite(); - if (!website.contains("http://")) { - website = "http://" + website; - } - WebBrowser::openUrl(website.toStdString()); - } -} - -QTreeWidgetItem* QtContactManager::createGroupItem(const QString & contactGroupId) { - QTreeWidgetItem* item; - QList < QTreeWidgetItem * > list; - if (groupsAreHidden()) { - list = _tree->findItems(QtContactList::DEFAULT_GROUP_NAME, Qt::MatchExactly); - } else { - list =_tree->findItems(contactGroupId, Qt::MatchExactly); - } - //If no group exists, create the group - if (list.isEmpty()) { - item = new QTreeWidgetItem(_tree); - if (groupsAreHidden()) { - item->setText(0, QtContactList::DEFAULT_GROUP_NAME); - } else { - item->setText(0, contactGroupId); - } - item->setText(1, QString::fromStdString(_cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(contactGroupId.toStdString()))); - _tree->setItemExpanded(item, true); - } else { - item = list[0]; - } - - return item; -} - -void QtContactManager::addContact(const QString & contactId) { - QtContactListManager * ul = QtContactListManager::getInstance(); - QtContact * qtContact = new QtContact(contactId.toStdString(), _cWengoPhone, _tree); - ul->addContact(qtContact); - - ContactProfile contactProfile = _qtContactList.getCContactList().getContactProfile(contactId.toStdString()); - QTreeWidgetItem * groupItem = createGroupItem(QString::fromStdString(contactProfile.getGroupId())); - - int contactCount = groupItem->childCount(); - - QString userName = qtContact->getUserName().toUpper(); - - int contactIndex; - for (contactIndex = 0; contactIndex < contactCount; ++contactIndex) { - QTreeWidgetItem * childItem = groupItem->child(contactIndex); - QtContact* childQtContact = ul->getContact(childItem->text(0)); - if (childQtContact->getUserName().toUpper() > userName) { - break; - } - } - - QTreeWidgetItem * item = new QTreeWidgetItem(); - item->setText(0, contactId); - item->setFlags(item->flags() | Qt::ItemIsEditable); - groupItem->insertChild(contactIndex, item); -} - -void QtContactManager::removeContact(const QString & contactId) { - QtContactListManager * ul = QtContactListManager::getInstance(); - - QTreeWidgetItem* contactItem = findContactItem(contactId); - if (!contactItem) { - // Already removed - return; - } - - if (_previous == contactItem) { - _previous = 0; - } - - QTreeWidgetItem* groupItem = contactItem->parent(); - - QtContact* qtContact = ul->getContact(contactId); - if (qtContact) { - ul->removeContact(qtContact); - } else { - LOG_WARN("Could not find contact to remove in QtContactListManager"); - } - delete contactItem; -#if QT_VERSION < 0x40300 - // This is needed on Qt 4.2 and lower to workaround this bug: - // Assuming the list looks like this: - // ( ) A - // ( ) B - // +---+ ... - // | | ... - // +---+ - // - // if 'A' gets hidden, the 'B' line moves up, but its QtContactWidget stays - // were it was. - _tree->doItemsLayout(); -#endif - - if (groupItem->childCount() == 0) { - delete groupItem; - } -} - -void QtContactManager::setMouseButton(Qt::MouseButton button) { - _button = button; -} - -void QtContactManager::moveContact(const std::string & dstGroupId, - const std::string & srcGroupId, const std::string & contactId) { - - LOG_DEBUG("moving contact=" + contactId + - " from=" + srcGroupId + - " to=" + dstGroupId); - - //If groups are hidden, there is nothing to move... - if (groupsAreHidden()) { - return; - } - - //Looking for the contact in the destination group - //If it is inside this group nothing is done - QTreeWidgetItem * group = findGroupItem(QString::fromStdString(dstGroupId)); - if (!group) { - return; - } - if (findContactInGroup(group, QString::fromStdString(contactId))) { - return; - } - - removeContact(QString::fromStdString(contactId)); - addContact(QString::fromStdString(contactId)); -} - -QTreeWidgetItem * QtContactManager::findGroupItem(const QString & groupId) const { - QList < QTreeWidgetItem * > list = _tree->findItems(groupId, Qt::MatchExactly); - if (list.isEmpty()) { - return NULL; - } - - return list[0]; -} - -QTreeWidgetItem * QtContactManager::findContactItem(const QString & contactId) const { - QList < QTreeWidgetItem * > list = _tree->findItems(contactId, Qt::MatchExactly | Qt::MatchRecursive); - if (list.isEmpty()) { - return 0; - } - - return list[0]; -} - -QtContact * QtContactManager::findContactInGroup(const QTreeWidgetItem * group, const QString & contactId) const { - QtContactListManager * ul = QtContactListManager::getInstance(); - - int count = group->childCount(); - for (int i = 0; i < count; i++) { - QtContact * qtContact = ul->getContact(group->child(i)->text(0)); - if (qtContact->getId() == contactId) { - return qtContact; - } - } - - return NULL; -} - -void QtContactManager::timerEvent(QTimerEvent * event) { - if (event->timerId() == _sortTimerId) { - killTimer(_sortTimerId); - _sortTimerId = -1; - _canSort = true; - if (_wantSort) { - safeSortContacts(true); - _wantSort = false; - } - return; - } - - if (event->timerId() == _showTimerId) { - killTimer(_showTimerId); - _showTimerId = -1; - _canShow = true; - if (_wantShow) { - redrawContacts(); - _wantShow = false; - } - return; - } - - if (event->timerId() == _timerId) { - _waitForDoubleClick = false; - killTimer(_timerId); - return; - } - - QObject::timerEvent(event); -} - -bool QtContactManager::groupsAreHidden() const { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - return !config.getShowGroups(); -} - -void QtContactManager::languageChanged() { - _trStringCall = tr("Call"); - _trStringFreePhone = tr("Free call"); - _trStringMobilePhone = tr("Mobile phone"); - _trStringHomePhone = tr("Home phone"); - _trStringWorkPhone = tr("Work phone"); - _trStringWengoPhone = tr("@product@"); - _trStringSendSMS = tr("Send SMS"); - _trStringWebsite = tr("Go to website"); - _trStringSendFile = tr("Send file"); - _trStringEditContact = tr("Edit contact"); - _trStringDeleteContact = tr("Delete contact"); - _trStringBlockContact = tr("Block contact"); - _trStringForwardToCellPhone = tr("Forward to mobile phone"); - _trStringStartChat = tr("Start chat"); - _trStringInviteToConference = tr("Invite to conference"); -} - -void QtContactManager::updateContact(const std::string& contactId) { - QtContactListManager * ul = QtContactListManager::getInstance(); - - QTreeWidgetItem* item = findContactItem(QString::fromStdString(contactId)); - bool oldVisible = item != 0; - - ContactProfile profile = _qtContactList.getCContactList().getContactProfile(contactId); - bool newVisible = canShowUser(&profile); - - if (oldVisible && !newVisible) { - // Remove - removeContact(QString::fromStdString(contactId)); - } else if (!oldVisible && newVisible) { - // Add - addContact(QString::fromStdString(contactId)); - } else if (oldVisible && newVisible) { - // Update - ul->contactUpdated(QString::fromStdString(contactId)); - - // Repaint only the item. We adjust the rect to avoid repainting - // neighbour items. It does not matter because QtContact::paint repaint - // the whole item, regardless of the area to update. - QRect rect = _tree->visualItemRect(item); - rect.adjust(0, 1, 0, -1); - _tree->viewport()->update(rect); - //// - - QtContactWidget* widget = _tree->findChild(); - if (widget) { - widget->updateButtons(); - widget->update(); - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,229 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTMANAGER_H -#define OWQTCONTACTMANAGER_H - -#include -#include - -class ContactProfile; -class CUserProfile; -class CWengoPhone; -class PhoneCall; -class QtContactList; -class QtContactInfo; -class QtContact; - -class QString; -class QTreeWidgetItem; -class QTimerEvent; -class QMenu; -class QTreeWidget; -class QSize; -class QAction; - -/** - * Qt Presentation manager for the ContactList. - * - * @author Philippe Bernery - */ -class QtContactManager : public QObject { - Q_OBJECT -public: - - QtContactManager(CUserProfile & cUserProfile, CWengoPhone & cWengoPhone, - QtContactList & qtContactList, QObject * parent, QTreeWidget * target); - - /** - * Removes a Contact from the QtContactManager. - * - * @param contactId the Id of the Contact to remove - */ - void removeContact(const QString & contactId); - - /** - * Moves a Contact from one group to another. - * - * @param dstGroupId the Id of the destination group - * @param srcGroupId the Id of the source group - * @param contactId the Id of the Contact to move - */ - void moveContact(const std::string & dstGroupId, - const std::string & srcGroupId, const std::string & contactId); - - /** - * @return true if groups are hidden (not displayed) - */ - bool groupsAreHidden() const; - - void updateContact(const std::string& contactId); - -public Q_SLOTS: - void setMouseButton(Qt::MouseButton button); - - void userStateChanged(); - - void editContact(QString contactId); - -private Q_SLOTS: - - void defaultAction(QTreeWidgetItem * item); - - void deleteContact(); - - void editContact(); - - void inviteToConference(); - - void itemClicked(QTreeWidgetItem * item, int column); - - /** - * Opens the contact panel inside the contact list. - */ - void openContactInfo(QTreeWidgetItem * item); - - /** - * Closes the contact panel inside the contact list. - */ - void closeContactInfo(); - - void redrawContacts(); - - void sortContacts(bool bypassTimer = false); - - void startChat(); - - void sendFile(); - - void startFreeCall(); - - void startHomeCall(); - - void startMobileCall(); - - void startSMS(); - - void startWengoCall(); - - void startWorkCall(); - - void goToWebsite(); - - void treeViewSelectionChanged(); - - void languageChanged(); - -Q_SIGNALS: - - void groupRightClicked(const QString & groupName); - - void inviteToConferenceClicked(QString phone, PhoneCall * target); - -private: - - typedef QList QtContactInfoList; - - void safeSortContacts(bool bypassTimer); - - void safeUserStateChanged(); - - void clearTreeSelection(); - - void groupClicked(QTreeWidgetItem * item); - - void itemRightClicked(QTreeWidgetItem * item); - - bool canShowUser(const ContactProfile * cprofile); - - QTreeWidgetItem * findGroupItem(const QString & groupId) const; - - QTreeWidgetItem * findContactItem(const QString & contactId) const; - - QtContact * findContactInGroup(const QTreeWidgetItem * group, const QString & contactId) const; - - QTreeWidgetItem* createGroupItem(const QString & contactGroupId); - - void addContact(const QString & contactId); - - QMenu * createConferenceMenu(); - - QMenu * createMenu(); - - void timerEvent(QTimerEvent * event); - - bool _sortContacts; - - QTreeWidget * _tree; - - QTreeWidgetItem * _previous; - - QTreeWidgetItem * _lastClicked; - - QSize * _itemSize; - - QMenu * _menu; - - QAction * _callAction; - - Qt::MouseButton _button; - - int _timerId; - - bool _waitForDoubleClick; - - int _sortTimerId; - - int _showTimerId; - - bool _canSort; - - bool _wantSort; - - bool _canShow; - - bool _wantShow; - - CWengoPhone & _cWengoPhone; - - CUserProfile & _cUserProfile; - - QtContactList & _qtContactList; - - /** - * Translated strings - */ - QString _trStringCall; - QString _trStringFreePhone; - QString _trStringMobilePhone; - QString _trStringHomePhone; - QString _trStringWorkPhone; - QString _trStringWengoPhone; - QString _trStringSendSMS; - QString _trStringWebsite; - QString _trStringSendFile; - QString _trStringEditContact; - QString _trStringDeleteContact; - QString _trStringBlockContact; - QString _trStringForwardToCellPhone; - QString _trStringStartChat; - QString _trStringInviteToConference; -}; - -#endif //OWQTCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactMenu.h" - -#include -#include -#include - -#include -#include - -#include - -#include - -void QtContactMenu::populateMobilePhoneMenu(QMenu * menu, CWengoPhone & cWengoPhone) { - - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getCompleteName().c_str()); - - if (!tmpContactProfile.getMobilePhone().empty()) { - QString mobilePhone = QString::fromStdString(tmpContactProfile.getMobilePhone()); - //Call mobile action - QAction * tmpAction; - if (displayName == " ") { - tmpAction = menu->addAction(mobilePhone); - } else { - tmpAction = menu->addAction(displayName + ": " + mobilePhone); - } - tmpAction->setData(QVariant(mobilePhone)); - } - } - } -} - -void QtContactMenu::populateWengoCallMenu(QMenu * menu, CWengoPhone & cWengoPhone) { - - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); - - if (tmpContactProfile.hasAvailableWengoId() && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateOffline && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnknown && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnavailable) { - - QString freePhoneNumber = - QString::fromStdString(tmpContactProfile.getFirstAvailableWengoIMContact().getDisplayContactId()); - QAction * tmpAction; - tmpAction = menu->addAction(displayName); - tmpAction->setData(QVariant(freePhoneNumber)); - EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); - setPresenceIcon(tmpAction, presenceState); - } - } - } -} - -void QtContactMenu::populateSipCallMenu(QMenu * menu, CWengoPhone & cWengoPhone) { - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); - - if (tmpContactProfile.hasAvailableSIPNumber() ) { - - QString freePhoneNumber = QString::fromStdString(tmpContactProfile.getFirstFreePhoneNumber()); - QAction * tmpAction; - tmpAction = menu->addAction(displayName); - tmpAction->setData(QVariant(freePhoneNumber)); - EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); - //setPresenceIcon(tmpAction, presenceState); - - if (presenceState == EnumPresenceState::PresenceStateUnknown) { - setPresenceIcon(tmpAction, QIcon(":/pics/status/unknown-sip.png")); - } else { - setPresenceIcon(tmpAction, presenceState); - } - } - } - } -} - -void QtContactMenu::populateHomePhoneMenu(QMenu * menu, CWengoPhone & cWengoPhone) { - - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getCompleteName().c_str()); - - if (!tmpContactProfile.getHomePhone().empty()) { - QString homePhone = QString::fromStdString(tmpContactProfile.getHomePhone()); - QAction * tmpAction; - if (displayName == " ") { - tmpAction = menu->addAction(homePhone); - } else { - tmpAction = menu->addAction(displayName + ": " + homePhone); - } - tmpAction->setData(QVariant(homePhone)); - } - } - } -} - -void QtContactMenu::populateChatMenu(QMenu * menu, CWengoPhone & cWengoPhone) { - - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); - - if (tmpContactProfile.getPreferredIMContact() != NULL && - tmpContactProfile.hasIM()) { - - QAction * tmpAction = menu->addAction(displayName); - tmpAction->setData(QVariant(QString::fromStdString(*it))); - EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); - setPresenceIcon(tmpAction, presenceState); - } - } - } -} - -void QtContactMenu::setPresenceIcon(QAction * action, QIcon icon) { - action->setIcon(icon); -} - -void QtContactMenu::setPresenceIcon(QAction * action, EnumPresenceState::PresenceState presenceState) { - - switch (presenceState) { - case EnumPresenceState::PresenceStateOnline: - action->setIcon(QIcon(":/pics/status/online.png")); - break; - case EnumPresenceState::PresenceStateOffline: - action->setIcon(QIcon(":/pics/status/offline.png")); - break; - case EnumPresenceState::PresenceStateInvisible: - action->setIcon(QIcon(":/pics/status/invisible.png")); - break; - case EnumPresenceState::PresenceStateAway: - action->setIcon(QIcon(":/pics/status/away.png")); - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - action->setIcon(QIcon(":/pics/status/donotdisturb.png")); - break; - case EnumPresenceState::PresenceStateUnknown: - action->setIcon(QIcon(":/pics/status/unknown.png")); - break; - case EnumPresenceState::PresenceStateUnavailable: - action->setIcon(QIcon(":/pics/status/unknown-wengo.png")); - break; - default: - LOG_FATAL("unknown presenceState=" + String::fromNumber(presenceState)); - break; - } -} - -void QtContactMenu::populateWengoUsersContactId(QMenu * menu, CWengoPhone & cWengoPhone) { - - CUserProfile * currentCUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (currentCUserProfile) { - - CContactList & currentCContactList = currentCUserProfile->getCContactList(); - StringList currentContactsIds = currentCContactList.getContactIds(); - - for (StringList::const_iterator it = currentContactsIds.begin(); it != currentContactsIds.end(); ++it) { - - ContactProfile tmpContactProfile = currentCContactList.getContactProfile(*it); - QString displayName = QString::fromUtf8(tmpContactProfile.getDisplayName().c_str()); - - if (tmpContactProfile.hasAvailableWengoId() && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateOffline && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnknown && - tmpContactProfile.getPresenceState() != EnumPresenceState::PresenceStateUnavailable) { - - QAction * tmpAction = menu->addAction(displayName); - tmpAction->setData(QVariant(QString::fromStdString(*it))); - EnumPresenceState::PresenceState presenceState = tmpContactProfile.getPresenceState(); - setPresenceIcon(tmpAction, presenceState); - } - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactMenu.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,59 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTMENU_H -#define OWQTCONTACTMENU_H - -#include - -class CWengoPhone; -class QMenu; -class QAction; -class QIcon; -class StringList; - -/** - * Contact list QMenu builder. - * - * @author Mathieu Stute - */ -class QtContactMenu { - -public: - - static void populateMobilePhoneMenu(QMenu * menu, CWengoPhone & cWengoPhone); - - static void populateWengoCallMenu(QMenu * menu, CWengoPhone & cWengoPhone); - - static void populateSipCallMenu(QMenu * menu, CWengoPhone & cWengoPhone); - - static void populateHomePhoneMenu(QMenu * menu, CWengoPhone & cWengoPhone); - - static void populateChatMenu(QMenu * menu, CWengoPhone & cWengoPhone); - - static void populateWengoUsersContactId(QMenu * menun, CWengoPhone & cWengoPhone); - -private: - - static void setPresenceIcon(QAction * action, QIcon icon); - - static void setPresenceIcon(QAction * action, EnumPresenceState::PresenceState presenceState); -}; - -#endif //OWQTCONTACTMENU_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,40 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactPixmap.h" - -QtContactPixmap * QtContactPixmap::_instance = NULL; - -QtContactPixmap::QtContactPixmap() { -} - -QtContactPixmap * QtContactPixmap::getInstance() { - if (_instance == 0) { - _instance = new QtContactPixmap; - } - return _instance; -} - -void QtContactPixmap::setPixmap(ContactPixmap status, const QPixmap & px) { - _contactPixmap[status] = px; -} - -QPixmap & QtContactPixmap::getPixmap(ContactPixmap status) { - return _contactPixmap[status]; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactPixmap.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTPIXMAP_H -#define OWQTCONTACTPIXMAP_H - -#include -#include - -/** - * Store status pixmaps - * - * @author Mr K - */ -class QtContactPixmap { -public: - - enum ContactPixmap { - ContactUnknown, - ContactNoStatus, - ContactOnline, - ContactOffline, - ContactDND, - ContactInvisible, - ContactAway, - ContactGroupOpen, - ContactGroupClose, - ContactWDeal, - ContactNoStatusSIP, - ContactTestCall - }; - - static QtContactPixmap * getInstance(); - - void setPixmap(ContactPixmap status, const QPixmap & px); - - QPixmap & getPixmap(ContactPixmap status); - -private: - - QtContactPixmap(); - - QtContactPixmap(const QtContactPixmap & other) - : _contactPixmap(other._contactPixmap) { } - - QtContactPixmap & operator=(const QtContactPixmap & other) { - _contactPixmap = other._contactPixmap; - return * this; - } - - QHash < ContactPixmap, QPixmap > _contactPixmap; - - static QtContactPixmap * _instance; -}; - -#endif //OWQTCONTACTPIXMAP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactTreeKeyFilter.h" - -#include - -QtContactTreeKeyFilter::QtContactTreeKeyFilter(QObject * parent, QTreeWidget * target) { - _tree = target; - target->installEventFilter(this); -} - -bool QtContactTreeKeyFilter::eventFilter(QObject * obj, QEvent * event) { - - switch (event->type()) { - case QEvent::KeyPress: - keyPress((QKeyEvent *) event); - return false; - - default: - return QObject::eventFilter(obj, event); - } -} - -void QtContactTreeKeyFilter::keyPress(QKeyEvent * event) { - QTreeWidgetItem * item = _tree->currentItem(); - switch (event->key()) { - case Qt::Key_Left: - closeItem(item); - break; - case Qt::Key_Right: - openItem(item); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - enterPressed(item); - break; - case Qt::Key_Delete: - deleteItem(item); - break; - case Qt::Key_C: - cPressed(item); - break; - case Qt::Key_W: - wPressed(item); - break; - case Qt::Key_S: - sPressed(item); - break; - - default: - break; - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeKeyFilter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,66 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTTREEKEYFILTER_H -#define OWQTCONTACTTREEKEYFILTER_H - -#include - -class QKeyEvent; -class QTreeWidget; -class QTreeWidgetItem; - -/** - * Qt Key filter for Contact list - * - * @author Mr K - * @author Mathieu Stute - */ -class QtContactTreeKeyFilter : public QObject { - Q_OBJECT -public: - - QtContactTreeKeyFilter(QObject * parent, QTreeWidget * target); - -Q_SIGNALS: - - void openItem(QTreeWidgetItem * item); - - void closeItem(QTreeWidgetItem * item); - - void enterPressed(QTreeWidgetItem * item); - - void cPressed(QTreeWidgetItem * item); - - void wPressed(QTreeWidgetItem * item); - - void sPressed(QTreeWidgetItem * item); - - void deleteItem(QTreeWidgetItem * item); - -private: - - bool eventFilter(QObject * obj, QEvent * event); - - void keyPress(QKeyEvent * event); - - QTreeWidget * _tree; -}; - -#endif //OWQTCONTACTTREEKEYFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,211 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactTreeMouseFilter.h" -#include "QtContactListManager.h" - -#include - -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include -#include - -const QString QtContactTreeMouseFilter::WENGO_MIME_TYPE = "application/x-wengo-user-data"; - -QtContactTreeMouseFilter::QtContactTreeMouseFilter(CContactList & cContactList, QObject * parent, QTreeWidget * treeWidget) - : QObject(parent), - _cContactList(cContactList) { - _tree = treeWidget; - - //The event filter must be installed in the viewport of the QTreeWidget - _tree->viewport()->installEventFilter(this); - _dropDestinationItem = 0; -} - -bool QtContactTreeMouseFilter::eventFilter(QObject * obj, QEvent * event) { - switch (event->type()) { - case QEvent::MouseButtonPress: - mousePressEvent((QMouseEvent *) event); - return false; - case QEvent::MouseButtonRelease: - mouseReleaseEvent((QMouseEvent *) event); - return false; - case QEvent::MouseMove: - mouseMoveEvent((QMouseEvent *) event); - event->accept(); - return true; - case QEvent::DragEnter: - dragEnterEvent((QDragEnterEvent *) event); - event->accept(); - return true; - case QEvent::Drop: - dropEvent((QDropEvent *) event); - event->accept(); - return true; - case QEvent::DragMove: - dragMoveEvent((QDragMoveEvent *) event); - event->accept(); - return true; - default: - return QObject::eventFilter(obj, event); - } -} - -void QtContactTreeMouseFilter::mousePressEvent(QMouseEvent * event) { - - mouseClicked(event->button()); - QTreeWidgetItem * item = _tree->itemAt(event->pos()); - QtContactListManager * ul = QtContactListManager::getInstance(); - if (item) { - if (!item->parent()) { - return; - } - ul->resetMouseStatus(); - _selectedContactId = item->text(0); - ul->setButton(_selectedContactId, event->button()); - if (event->button() == Qt::LeftButton) { - _dstart = event->pos(); - } - } -} - -void QtContactTreeMouseFilter::mouseReleaseEvent(QMouseEvent * event) { - if (event->button() == Qt::RightButton) { - mouseClicked(Qt::RightButton); - } else { - mouseClicked(Qt::NoButton); - } -} - -void QtContactTreeMouseFilter::mouseMoveEvent(QMouseEvent * event) { - if (_selectedContactId.isNull()) { - return; - } - - if (!(event->buttons() & Qt::LeftButton)) { - return; - } - - if ((event->pos() - _dstart).manhattanLength() < QApplication::startDragDistance()) { - return; - } - - //Define a new empty custom data - QByteArray custom; - QDrag * drag = new QDrag(_tree); - QMimeData * mimeData = new QMimeData; - QtContactListManager * ul = QtContactListManager::getInstance(); - - QtContact * contact = ul->getContact(_selectedContactId); - if (contact) { - mimeData->setText(contact->getUserName()); - mimeData->setData(WENGO_MIME_TYPE, custom); - drag->setMimeData(mimeData); - drag->start(Qt::MoveAction); - } -} - -void QtContactTreeMouseFilter::dragEnterEvent(QDragEnterEvent * event) { - if (event->mimeData()->hasFormat(WENGO_MIME_TYPE)) { - event->acceptProposedAction(); - } -} - -void QtContactTreeMouseFilter::dropEvent(QDropEvent * event) { - QTreeWidgetItem * item = _tree->itemAt(event->pos()); - - if (!event->mimeData()->hasFormat(WENGO_MIME_TYPE)) { - return; - } - event->acceptProposedAction(); - - if (_selectedContactId.isNull()) { - // No contact selected. Should not happen. - LOG_WARN("No contact selected. This should not happen."); - return; - } - - if (item) { - if (_selectedContactId == item->text(0)) { - //Dropped on same item. Nothing to do. - _selectedContactId = QString::null; - return; - } - - _dropSourceContactId = _selectedContactId; - _dropDestinationItem = item; - - // Call handleDrop() through a QTimer::singleShot, so that we are out - // of the event loop. This is necessary because code in handleDrop() - // can show dialog messages, causing crashes under X11. - QTimer::singleShot(0, this, SLOT(handleDrop())); - } - - _selectedContactId = QString::null; -} - -void QtContactTreeMouseFilter::handleDrop() { - Q_ASSERT(_dropDestinationItem); - QString destinationContactId = _dropDestinationItem->text(0); - - ContactProfile sourceProfile = _cContactList.getContactProfile(_dropSourceContactId.toStdString()); - ContactProfile destinationProfile = _cContactList.getContactProfile(destinationContactId.toStdString()); - - if ( sourceProfile.getGroupId() == destinationProfile.getGroupId() || _tree->topLevelItemCount() == 1 ) { - //The destination and the source groups are the same - //This is a contact combination - mergeContacts(_dropSourceContactId, destinationContactId); - } else { - //This is a Contact move - QString groupId; - if (_dropDestinationItem->parent()) { - //The destination is a contact, move the contact to the destination - //group - groupId = _dropDestinationItem->parent()->text(0); - } else { - //The destination is a group - groupId = destinationContactId; - } - sourceProfile.setGroupId(groupId.toStdString()); - _cContactList.updateContact(sourceProfile); - } - - _dropDestinationItem = 0; -} - -void QtContactTreeMouseFilter::dragMoveEvent(QDragMoveEvent * event) { - QTreeWidgetItem * item = _tree->itemAt(event->pos()); - event->setDropAction(Qt::IgnoreAction); - if (item) { - event->setDropAction(Qt::MoveAction); - if (event->mimeData()->hasFormat(WENGO_MIME_TYPE)) { - event->acceptProposedAction(); - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactTreeMouseFilter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCONTACTTREEMOUSEFILTER_H -#define OWQTCONTACTTREEMOUSEFILTER_H - -#include -#include - -class CContactList; -class QTreeWidgetItem; -class QMouseEvent; -class QDragEnterEvent; -class QDropEvent; -class QTreeWidget; -class QDragMoveEvent; - -/** - * Mouse events manager for QTreeWidget - * - * @author Mr K - */ -class QtContactTreeMouseFilter : public QObject { - Q_OBJECT -public : - - static const QString WENGO_MIME_TYPE; - - QtContactTreeMouseFilter(CContactList & cContactList, QObject * parent, QTreeWidget * treeWidget); - -Q_SIGNALS: - - void mouseClicked(Qt::MouseButton button); - - void mergeContacts(QString dstContact, QString srcContact); - -private Q_SLOTS: - void handleDrop(); - -private: - - bool eventFilter(QObject * obj, QEvent * event); - - void mousePressEvent(QMouseEvent * event); - - void mouseMoveEvent(QMouseEvent * event); - - void dragEnterEvent(QDragEnterEvent * event); - - void dropEvent(QDropEvent * event); - - void dragMoveEvent(QDragMoveEvent * event); - - void mouseReleaseEvent(QMouseEvent * event); - - QTreeWidget * _tree; - - QPoint _dstart; - - QString _selectedContactId; - - CContactList & _cContactList; - - QString _dropSourceContactId; - QTreeWidgetItem* _dropDestinationItem; -}; - -#endif //OWQTCONTACTTREEMOUSEFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,246 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactWidget.h" - -#include "ui_ContactWidget.h" - -#include "QtContact.h" -#include "QtContactListManager.h" -#include "QtContactManager.h" - -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -static const std::string AVATAR_BACKGROUND = ":/pics/avatar_background.png"; - -QtContactWidget::QtContactWidget(const std::string & contactId, CWengoPhone & cWengoPhone, - QtContactManager * qtContactManager, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - _contactId = contactId; - - _ui = new Ui::ContactWidget(); - _ui->setupUi(this); - - QColor bgColor = palette().highlight().color(); - QColor fgColor = palette().highlightedText().color(); - - QPalette pal(bgColor); - pal.setColor(QPalette::Text, fgColor); - pal.setColor(QPalette::ButtonText, fgColor); - - setPalette(pal); - Q_FOREACH(QToolButton* button, findChildren()) { - button->setPalette(pal); - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (!config.getSmsFeatureEnabled()) { - _ui->smsButton->hide(); - } - updateButtons(); - - SAFE_CONNECT(_ui->callButton, SIGNAL(clicked()), SLOT(callButtonClicked())); - SAFE_CONNECT(_ui->chatButton, SIGNAL(clicked()), SLOT(chatButtonClicked())); - SAFE_CONNECT(_ui->smsButton, SIGNAL(clicked()), SLOT(smsButtonClicked())); - SAFE_CONNECT(_ui->landlineButton, SIGNAL(clicked()), SLOT(landlineButtonClicked())); - SAFE_CONNECT(_ui->mobileButton, SIGNAL(clicked()), SLOT(mobileButtonClicked())); - SAFE_CONNECT(_ui->avatarButton, SIGNAL(clicked()), SLOT(avatarButtonClicked())); - SAFE_CONNECT(_ui->sendFileButton, SIGNAL(clicked()), SLOT(sendFileButtonClicked())); - SAFE_CONNECT_RECEIVER_TYPE(this, SIGNAL(editContact(QString)), - qtContactManager, SLOT(editContact(QString)), Qt::QueuedConnection); - -#ifdef DISABLE_SMS - _ui->smsButton->hide(); -#endif - -#ifdef DISABLE_FILETRANSFER - _ui->sendFileButton->hide(); -#endif -} - -QtContactWidget::~QtContactWidget() { - delete _ui; -} - -void QtContactWidget::resizeEvent(QResizeEvent* event) { - QWidget::resizeEvent(event); - QPalette pal = palette(); - - QRect r = rect(); - QLinearGradient lg(QPointF(1, r.top()), QPointF(1, r.bottom())); - QColor color = pal.highlight().color(); - lg.setColorAt(0, color); - lg.setColorAt(1, color.dark(150)); - - pal.setBrush(backgroundRole(), QBrush(lg)); - setPalette(pal); -} - -void QtContactWidget::updateButtons() { - ContactProfile contactProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactProfile(_contactId); - std::string foregroundPixmapData = contactProfile.getIcon().getData(); - _ui->avatarButton->setIcon(PixmapMerging::merge(foregroundPixmapData, AVATAR_BACKGROUND)); - - QString str = QString::fromUtf8(contactProfile.getHomePhone().c_str()); - if (str.isEmpty()) { - _ui->landlineButton->setText(tr("No landline phone number set")); - } else { - _ui->landlineButton->setText(str); - } - - str = QString::fromUtf8(contactProfile.getMobilePhone().c_str()); - if (str.isEmpty()) { - _ui->mobileButton->setText(tr("No mobile phone number set")); - _ui->smsButton->setEnabled(false); - } else { - _ui->mobileButton->setText(str); - _ui->smsButton->setEnabled(true); - } - - _ui->callButton->setEnabled(contactProfile.hasFreeCall() || contactProfile.hasVoiceMail()); - - _ui->chatButton->setEnabled(contactProfile.hasIM()); - - _ui->sendFileButton->setEnabled(contactProfile.hasFileTransfer()); -} - -void QtContactWidget::callButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->startFreeCall(QString::fromStdString(_contactId)); -} - -void QtContactWidget::smsButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->startSMS(QString::fromStdString(_contactId)); -} - -void QtContactWidget::chatButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->startChat(QString::fromStdString(_contactId)); -} - -void QtContactWidget::sendFileButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->sendFile(QString::fromStdString(_contactId)); -} - -void QtContactWidget::updateToolTips() { - - QtContactListManager * ul = QtContactListManager::getInstance(); - - if (!ul->getMobilePhone(QString::fromStdString(_contactId)).isEmpty()) { - _ui->mobileButton->setToolTip(tr("Click here to call")); - } else { - _ui->mobileButton->setToolTip(tr("Click here to set a phone number")); - } - - if (!ul->getHomePhone(QString::fromStdString(_contactId)).isEmpty()) { - _ui->landlineButton->setToolTip(tr("Click here to call")); - } else { - _ui->landlineButton->setToolTip(tr("Click here to set a phone number")); - } - - _ui->avatarButton->setToolTip(tr("Click here to edit the contact")); - - if (_ui->smsButton->isEnabled()) { - _ui->smsButton->setToolTip(tr("Click here to send a SMS")); - } else { - _ui->smsButton->setToolTip(QString::null); - } - - if (_ui->chatButton->isEnabled()) { - _ui->chatButton->setToolTip(tr("Click here to start a chat")); - } else { - _ui->chatButton->setToolTip(QString::null); - } - - if (_ui->callButton->isEnabled()) { - _ui->callButton->setToolTip(tr("Click here to start a free call")); - } else { - _ui->callButton->setToolTip(QString::null); - } - - if (_ui->sendFileButton->isEnabled()) { - _ui->sendFileButton->setToolTip(tr("Click here to send a file")); - } else { - _ui->sendFileButton->setToolTip(QString::null); - } -} - -void QtContactWidget::mobileButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - if (!ul->getMobilePhone(QString::fromStdString(_contactId)).isEmpty()) { - ul->startCall(QString::fromStdString(_contactId), _ui->mobileButton->text()); - } else { - editContact(_text); - } -} - -void QtContactWidget::landlineButtonClicked() { - QtContactListManager * ul = QtContactListManager::getInstance(); - if (!ul->getHomePhone(QString::fromStdString(_contactId)).isEmpty()) { - ul->startCall(QString::fromStdString(_contactId), _ui->landlineButton->text()); - } else { - editContact(_text); - } -} - -void QtContactWidget::avatarButtonClicked() { - editContact(_text); -} - -void QtContactWidget::paintEvent(QPaintEvent *) { - QPainter painter(this); - paintContact(&painter, rect()); - painter.end(); -} - -void QtContactWidget::paintContact(QPainter * painter, const QRect & rect) { - QtContactListManager * ul = QtContactListManager::getInstance(); - - QtContact * qtContact = ul->getContact(QString::fromStdString(_contactId)); - if (!qtContact) { - return; - } - - QStyleOptionViewItem option; - option.initFrom(ul->getTreeWidget()); - option.state = QStyle::State_Selected; - qtContact->paintForeground(painter, option); - updateToolTips(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtContactWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTCONTACTWIDGET_H -#define QTCONTACTWIDGET_H - -#include - -#include -#include - -class CContact; -class CWengoPhone; -class QLabel; -class QPushButton; -class QResizeEvent; -class QtContactManager; -namespace Ui { class ContactWidget; } - -/** - * Qt user widget. - * Represents a contact info in the contact list. - * - * @author Mr K - * @author Mathieu Stute - * @author Philippe Bernery - */ -class QtContactWidget : public QWidget { - Q_OBJECT -public: - - QtContactWidget(const std::string & contactId, CWengoPhone & cWengoPhone, - QtContactManager * qtContactManager, QWidget * parent); - - ~QtContactWidget(); - - void setText(const QString & text) { - _text = text; - } - - QString text() const { - return _text; - } - - void updateButtons(); - - - virtual void resizeEvent(QResizeEvent* event); - -Q_SIGNALS: - - /** - * Emitted when a the contact icon has been clicked and so the - * user wants to edit the contact. - */ - void editContact(QString contact); - -private Q_SLOTS: - - void callButtonClicked(); - - void smsButtonClicked(); - - void chatButtonClicked(); - - void mobileButtonClicked(); - - void landlineButtonClicked(); - - void avatarButtonClicked(); - - void sendFileButtonClicked(); - -private: - - void updateToolTips(); - - void paintEvent(QPaintEvent *); - - void paintContact(QPainter * painter, const QRect & rect); - - std::string _contactId; - - CWengoPhone & _cWengoPhone; - - QString _text; - - Ui::ContactWidget * _ui; -}; - -#endif //QTCONTACTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtRenameGroup.h" - -#include "ui_RenameGroupDialog.h" - -#include - -QtRenameGroup::QtRenameGroup(const QString & groupName, QWidget * parent) - : QDialog(parent) { - _ui = new Ui::RenameGroupDialog(); - _ui->setupUi(this); - _ui->groupName->setText(groupName); -} - -QtRenameGroup::~QtRenameGroup() { - delete _ui; -} - -QString QtRenameGroup::getGroupName() const { - return _ui->groupName->text(); -} - -void QtRenameGroup::accept() { - QString tmp; - tmp = _ui->groupName->text().trimmed(); - if (tmp.isEmpty()) { - QMessageBox::warning(this, tr("Bad group name"), tr("Group name cannot be empty"), 1, 0, 0); - return; - } - QDialog::accept(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtRenameGroup.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTRENAMEGROUP_H -#define OWQTRENAMEGROUP_H - -#include -#include - -class QWidget; -namespace Ui { class RenameGroupDialog; } - -/** - * Dialog to rename a group. - * - * @author Mr K - */ -class QtRenameGroup : public QDialog { - Q_OBJECT -public: - - QtRenameGroup(const QString & groupName, QWidget * parent); - - ~QtRenameGroup(); - - QString getGroupName() const; - -public Q_SLOTS: - - void accept(); - -private: - - Ui::RenameGroupDialog * _ui; -}; - -#endif //OWQTRENAMEGROUP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtTreeViewDelegate.h" - -#include "QtContactWidget.h" -#include "QtContactListManager.h" -#include "QtContactPixmap.h" -#include "QtContactList.h" - -#include -#include -#include - -#include -#include - -#include - -static int GROUP_WIDGET_FRAME_HEIGHT = 22; - -QtTreeViewDelegate::QtTreeViewDelegate(CWengoPhone & cWengoPhone, - QtContactManager * qtContactManager, QObject * parent) - : QItemDelegate(parent), - _qtContactManager(qtContactManager), - _cWengoPhone(cWengoPhone) { -} - -void QtTreeViewDelegate::setParent(QWidget * parent) { - _parent = parent; -} - -QWidget * QtTreeViewDelegate::createEditor(QWidget * parent, - const QStyleOptionViewItem &, const QModelIndex & index) const { - - QtContactListManager * ul = QtContactListManager::getInstance(); - QtContact * qtContact = ul->getContact(index.data().toString()); - QtContactWidget * widget = - new QtContactWidget(qtContact->getId().toStdString(), _cWengoPhone, - _qtContactManager, parent); - return widget; -} - -void QtTreeViewDelegate::setEditorData(QWidget * editor, const QModelIndex & index) const { - QtContactWidget * widget = qobject_cast(editor); - if (!widget) { - return; - } - widget->setText(index.model()->data(index).toString()); -} - -void QtTreeViewDelegate::setModelData(QWidget * editor, QAbstractItemModel * model, - const QModelIndex & index) const { - - QtContactWidget * widget = qobject_cast(editor); - - if (!widget) { - return; - } - model->setData(index, widget->text()); -} - -void QtTreeViewDelegate::paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { - if (!index.parent().isValid()) { - drawGroup(painter, option, index); - } else { - QtContactListManager * ul = QtContactListManager::getInstance(); - ul->paintContact(painter, option, index); - } -} - -QSize QtTreeViewDelegate::sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const { - QSize orig = QItemDelegate::sizeHint(option, index); - QtContactListManager * ul = QtContactListManager::getInstance(); - QtContact * qtContact = ul->getContact(index.data().toString()); - - if (qtContact) { - return QSize(orig.width(), ul->getContact(index.data().toString())->getHeight()); - } else { - if (!index.parent().isValid()) { - return (QSize(orig.width(), GROUP_WIDGET_FRAME_HEIGHT)); - } - } - return orig; -} - -void QtTreeViewDelegate::drawGroup(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const { - painter->setPen(option.palette.text().color()); - painter->drawPixmap(option.rect.left(),option.rect.top(),getGroupBackGround(option.rect)); - - QFont font = option.font; - font.setBold(true); - painter->setFont(font); - - QtContactPixmap * spx = QtContactPixmap::getInstance(); - QPixmap px; - if (option.state & QStyle::State_Open) { - px = spx->getPixmap(QtContactPixmap::ContactGroupOpen); - } else { - px = spx->getPixmap(QtContactPixmap::ContactGroupClose); - } - int x = option.rect.left(); - QRect r = option.rect; - painter->drawPixmap(x, r.top() + 3, px); - x += px.width() + 3; - r.setLeft(x); - int y = ((r.bottom()-r.top())-QFontMetrics(font).height())/2; - r.setTop(y + r.top()); - r.setLeft(r.left() + 10); - QString groupName; - std::string groupId; - std::string groupNameTmp; - if (index.data().toString() == QtContactList::DEFAULT_GROUP_NAME) { - groupName = tr("Contacts list"); - groupNameTmp=std::string(groupName.toUtf8().data()); - } else { - groupName = index.data().toString(); - groupId = groupName.toStdString(); - groupNameTmp = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().getContactGroupName(groupId); - } - groupName = QString::fromUtf8(groupNameTmp.c_str(), groupNameTmp.size()); - QString str = groupName; - painter->drawText(r, Qt::AlignLeft, str, 0); -} - -QPixmap QtTreeViewDelegate::getGroupBackGround(const QRect & rect) const { - if (_groupBackground.isNull() || _groupBackground.width() != rect.width()) { - QLinearGradient lg(QPointF(1.0, 0.0), QPointF(1.0, GROUP_WIDGET_FRAME_HEIGHT)); - lg.setColorAt(0.8, QColor(212, 208, 200)); - lg.setColorAt(0.0, QColor(255, 255, 255)); - _groupBackground = QPixmap(rect.width(),GROUP_WIDGET_FRAME_HEIGHT); - QPainter painter(&_groupBackground); - painter.fillRect(_groupBackground.rect(),QBrush(lg)); - painter.end(); - } - return _groupBackground; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/QtTreeViewDelegate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTTREEVIEWDELEGATE_H -#define OWQTTREEVIEWDELEGATE_H - -#include -#include -#include - -class CWengoPhone; -class QAbstractItemModel; -class QModelIndex; -class QPainter; -class QRect; -class QStyleOptionViewItem; -class QWidget; -class QtContactManager; -class QtUserWidget; - -/** - * Qt Presentation component for ContactList. - * - * @author Mr K - */ -class QtTreeViewDelegate : public QItemDelegate { - Q_OBJECT -public: - - QtTreeViewDelegate(CWengoPhone & cWengoPhone, - QtContactManager * qtContactManager, QObject * parent = 0); - - QWidget * createEditor(QWidget * parent, const QStyleOptionViewItem & option, const QModelIndex & index) const; - - void setEditorData(QWidget * editor, const QModelIndex & index) const; - - void setModelData(QWidget * editor, QAbstractItemModel * model, const QModelIndex & index) const; - - void paint(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; - - void setParent(QWidget * parent); - - QSize sizeHint(const QStyleOptionViewItem & option, const QModelIndex & index) const; - -private: - - void drawGroup(QPainter * painter, const QStyleOptionViewItem & option, const QModelIndex & index) const; - - QPixmap getGroupBackGround(const QRect & rect) const; - - const QWidget * _parent; - - QPixmap _menuIcon; - - mutable QPixmap _groupBackground; - - QtContactManager * _qtContactManager; - - CWengoPhone & _cWengoPhone; -}; - -#endif //OWQTTREEVIEWDELEGATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/RenameGroupDialog.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/RenameGroupDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/contactlist/RenameGroupDialog.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/contactlist/RenameGroupDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ - - - - - RenameGroupDialog - - - - 0 - 0 - 382 - 123 - - - - @product@ - Rename Contact Group - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - Enter the new group name: - - - - - - - - - - Qt::Vertical - - - - 364 - 16 - - - - - - - - - groupName - okButton - cancelButton - - - - - okButton - clicked() - RenameGroupDialog - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - RenameGroupDialog - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/DialpadWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/DialpadWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/DialpadWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/DialpadWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,475 +0,0 @@ - - DialpadWidget - - - - 0 - 0 - 400 - 300 - - - - - 6 - - - 9 - - - 9 - - - 9 - - - 9 - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 127 - 20 - - - - - - - - - 100 - 0 - - - - - - - - Qt::Horizontal - - - - 127 - 20 - - - - - - - - - - - - - - 150 - 198 - - - - 0 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - :/pics/dialpad/12_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/1_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/10_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/7_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/2_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/3_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/6_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/5_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/9_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/4_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/11_on.png - - - - 50 - 50 - - - - true - - - - - - - :/pics/dialpad/8_on.png - - - - 50 - 50 - - - - true - - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 0 - - - - - - - - - - 6 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - 0 - 0 - - - - - - - - Click on the various color changing items to send sounds to your interlocutor. - - - Qt::AlignCenter - - - true - - - - - - - - - - - - UpQComboBox - QComboBox -
qtutil/UpQComboBox.h
-
- - QtSVGDialpad - QFrame -
QtSVGDialpad.h
- 1 -
-
- - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/AcceptDialog.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/AcceptDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/AcceptDialog.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/AcceptDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,459 +0,0 @@ - - - - - AcceptDialog - - - - 0 - 0 - 328 - 166 - - - - File Transfer - - - true - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - toto@wengo.fr - - - - - - - test.bmp - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 111 - - - - - - - - - - - 0 - 0 - 0 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 239 - 239 - 239 - - - 0 - 0 - 0 - - - 103 - 141 - 178 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 239 - 239 - 239 - - - 0 - 0 - 0 - - - 103 - 141 - 178 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - 128 - 128 - 128 - - - 221 - 223 - 228 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 85 - 85 - 85 - - - 199 - 199 - 199 - - - 199 - 199 - 199 - - - 255 - 255 - 255 - - - 128 - 128 - 128 - - - 239 - 239 - 239 - - - 239 - 239 - 239 - - - 0 - 0 - 0 - - - 86 - 117 - 148 - - - 255 - 255 - 255 - - - 0 - 0 - 238 - - - 82 - 24 - 139 - - - 232 - 232 - 232 - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - Qt::AlignCenter - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - &Accept - - - - - - - &Cancel - - - - - - - - - - okButton - cancelButton - - - - - okButton - clicked() - AcceptDialog - accept() - - - 278 - 253 - - - 96 - 254 - - - - - cancelButton - clicked() - AcceptDialog - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferDialog.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferDialog.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ - - - - - FileTransferDialog - - - - 0 - 0 - 447 - 328 - - - - @product@ - File Transfer Manager - - - true - - - - 9 - - - 6 - - - - - Qt::StrongFocus - - - QTabWidget::North - - - QTabWidget::Rounded - - - 1 - - - - Download - - - - 9 - - - 6 - - - - - QAbstractItemView::NoEditTriggers - - - true - - - QAbstractItemView::NoSelection - - - - - - - - Upload - - - - 9 - - - 6 - - - - - QAbstractItemView::NoEditTriggers - - - true - - - QAbstractItemView::NoSelection - - - - - - - - - - - Qt::Horizontal - - - - 101 - 29 - - - - - - - - Click here to change your download folder - - - ... - - - :/pics/filetransfer/download_folder.png - - - false - - - false - - - - - - - Download folder: - - - - - - - Clean all items in the list - - - &Clean - - - :/pics/filetransfer/cleanup.png - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferItem.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferItem.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferItem.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/FileTransferItem.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ - - - - - FileTransferItem - - - - 0 - 0 - 310 - 87 - - - - Form - - - - 9 - - - 6 - - - - - 0 - - - 0 - - - - - - - - - - - - <i>From:</i> - - - - - - - - 0 - 16 - - - - - 16777215 - 16 - - - - 0 - - - Qt::Horizontal - - - false - - - - - - - - - - - - - - - - 0 - - - 0 - - - - - - 84 - 20 - - - - Cancel - - - - - - - - 84 - 20 - - - - Pause - - - - - - - - - - cancelOpenButton - removePauseResumeButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/NotifyDialog.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/NotifyDialog.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/NotifyDialog.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/NotifyDialog.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,389 +0,0 @@ - - - - - NotifyDialog - - - - 0 - 0 - 435 - 284 - - - - File Transfer - - - true - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 411 - 68 - - - - - - - - &Ok - - - - - - - Qt::Horizontal - - - - 61 - 27 - - - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - true - - - - - - - - 0 - 126 - - - - - 16777215 - 126 - - - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - Qt::AlignCenter - - - true - - - 100 - - - - - - - - okButton - - - - - okButton - clicked() - NotifyDialog - accept() - - - 278 - 253 - - - 96 - 254 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferAcceptDialog.h" -#include "ui_AcceptDialog.h" - -#include -#include - -QtFileTransferAcceptDialog::QtFileTransferAcceptDialog(QWidget * parent) - : QDialog(parent) { - - _ui = new Ui::AcceptDialog(); - _ui->setupUi(this); - - //install header image - WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/file-transfer.png", WidgetBackgroundImage::AdjustSize); - //// -} - -QtFileTransferAcceptDialog::~QtFileTransferAcceptDialog() { - OWSAFE_DELETE(_ui); -} - -void QtFileTransferAcceptDialog::setFileName(const QString & fileName) { - _ui->filenameLabel->setText(fileName); -} - -void QtFileTransferAcceptDialog::setContactName(const QString & contactName) { - _ui->contactLabel->setText(contactName); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferAcceptDialog.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERACCEPTDIALOG_H -#define OWQTFILETRANSFERACCEPTDIALOG_H - -#include - -#include - -namespace Ui { class AcceptDialog; } - -/** - * Qt file transfer accept dialog. - * - * @author Mathieu Stute - * @author Philippe Bernery - */ -class QtFileTransferAcceptDialog : public QDialog { - Q_OBJECT -public: - - /** - * Constructor. - * @param parent the parent widget - */ - QtFileTransferAcceptDialog(QWidget * parent); - - /** - * Destructor. - */ - ~QtFileTransferAcceptDialog(); - - /** - * Sets the file name label. - */ - void setFileName(const QString & fileName); - - /** - * Sets the Contact name label. - */ - void setContactName(const QString & contactName); - -private: - - Ui::AcceptDialog * _ui; -}; - -#endif //OWQTFILETRANSFERACCEPTDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,248 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransfer.h" -#include "QtFileTransferAcceptDialog.h" -#include "QtFileTransferNotifyDialog.h" -#include "QtFileTransferWidget.h" - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include - -QtFileTransfer::QtFileTransfer(QObject * parent, CoIpManager * coIpManager) - : QObject(parent), _coIpManager(coIpManager) { - - _qtFileTransferWidget = new QtFileTransferWidget(NULL); - - SAFE_CONNECT(this, SIGNAL(newReceiveFileSessionCreatedEventHandlerSignal(ReceiveFileSession *)), - SLOT(newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession *))); - _coIpManager->getFileSessionManager().newReceiveFileSessionCreatedEvent += - boost::bind(&QtFileTransfer::newReceiveFileSessionCreatedEventHandler, this, _1, _2); - - SAFE_CONNECT(this, SIGNAL(needUpgradeEventHandlerSignal()), - SLOT(needUpgradeEventHandlerSlot())); - _coIpManager->getFileSessionManager().needUpgradeEvent += - boost::bind(&QtFileTransfer::needUpgradeEventHandler, this, _1); - - SAFE_CONNECT(this, SIGNAL(peerNeedsUpgradeEventHandlerSignal(const QString &)), - SLOT(peerNeedsUpgradeEventHandlerSlot(const QString &))); - _coIpManager->getFileSessionManager().peerNeedsUpgradeEvent += - boost::bind(&QtFileTransfer::peerNeedsUpgradeEventHandler, this, _1, _2); -} - -QtFileTransfer::~QtFileTransfer() { - _qtFileTransferWidget->hide(); - OWSAFE_DELETE(_qtFileTransferWidget); -} - -void QtFileTransfer::newReceiveFileSessionCreatedEventHandler( - FileSessionManager & sender, ReceiveFileSession fileSession) { - - ReceiveFileSession * newFileSession = new ReceiveFileSession(fileSession); - newReceiveFileSessionCreatedEventHandlerSignal(newFileSession); -} - -void QtFileTransfer::newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession * fileSession) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString downloadFolder; - QString filename = QString::fromUtf8(fileSession->getFileName().c_str()); - QString contact = QString::fromStdString(fileSession->getIMContact().getDisplayContactId()); - - LOG_DEBUG("incoming file: " + fileSession->getFileName() + - "from: " + fileSession->getIMContact().getDisplayContactId()); - - _qtFileTransferWidget->showAndRaise(); - QtFileTransferAcceptDialog qtFileTransferAcceptDialog(_qtFileTransferWidget); - qtFileTransferAcceptDialog.setFileName(filename); - qtFileTransferAcceptDialog.setContactName(contact); - - // the user accept the file transfer - if (qtFileTransferAcceptDialog.exec() == QDialog::Accepted) { - - QDir dir(QString::fromUtf8(config.getFileTransferDownloadFolder().c_str())); - // if no download folder set then choose one - // or if the choosen folder does not exists anymore. - if ((config.getFileTransferDownloadFolder().empty()) || (!dir.exists())) { - - downloadFolder = QFileDialog::getExistingDirectory( - _qtFileTransferWidget, - tr("Choose a directory"), - QString::null, - QFileDialog::ShowDirsOnly | QFileDialog::DontResolveSymlinks - ); - - if (!downloadFolder.isEmpty()) { - config.set(Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY, std::string(downloadFolder.toUtf8().constData())); - } else { - //TODO: warn the user is has set no download folder. - fileSession->stop(); - OWSAFE_DELETE(fileSession); - return; - } - } else { - downloadFolder = QString::fromUtf8(config.getFileTransferDownloadFolder().c_str()); - } - - // here we're sure to have a download folder, - // but we must check if the file already exists. - QFile file(downloadFolder + QString(QDir::separator()) + filename); - if (file.exists()) { - - if (QMessageBox::question(_qtFileTransferWidget, tr("Overwrite File?"), - tr("A file called %1 already exists." - "Do you want to overwrite it?").arg(filename), - tr("&Yes"), tr("&No"), QString(), 0, 1)) { - - fileSession->stop(); - OWSAFE_DELETE(fileSession); - return; - } - } - - _qtFileTransferWidget->setDownloadFolder(downloadFolder); - _qtFileTransferWidget->addReceiveItem(fileSession); - fileSession->setFilePath(std::string(downloadFolder.toUtf8().constData())); - fileSession->start(); - - // the user refuse the file transfer. - } else { - fileSession->stop(); - OWSAFE_DELETE(fileSession); - return; - } -} - -void QtFileTransfer::createSendFileSession(IMContactSet imContactSet, const QString & filename, CContactList & cContactList) { - - QFileInfo fileinfo(QString(filename.toUtf8().constData())); - File file(std::string(filename.toUtf8().constData()), File::EncodingUTF8); - - // check the fileinfo - if (fileinfo.isDir()) { - //~ if (QMessageBox::question(_qtFileTransferWidget, - //~ tr("%1 is a directory.").arg(fileinfo.fileName()), - //~ tr("Do you want to send all files included in %1 ?").arg(fileinfo.filePath()), - //~ QMessageBox::No, QMessageBox::Yes, 0) - //~ == QMessageBox::Yes) { - - //~ //gets all files in directory and sends them - //~ QDir rep(fileinfo.filePath()); - //~ QFileInfoList tobesent = rep.entryInfoList(QDir::NoDotAndDotDot | QDir::Files | QDir::Dirs,QDir::Unsorted); - //~ for (int i = 0; i < tobesent.size(); ++i) { - //~ createSendFileSession(imContactSet, tobesent.at(i).filePath(), cContactList); - //~ } - //~ //// - //~ } - QMessageBox::warning(_qtFileTransferWidget, - tr("%1 is a directory.").arg(fileinfo.fileName()), - tr("You can not send a directory."), - QMessageBox::Ok, 0, 0 - ); - } -#if defined(OS_WINDOWS) - else if (fileinfo.suffix() == QString::fromStdString("lnk")) { - QMessageBox::warning(_qtFileTransferWidget, - tr("%1 is a shortcut.").arg(fileinfo.fileName()), - tr("You can not send a shortcut."), - QMessageBox::Ok, 0, 0 - ); - } -#endif - else if (file.getSize() > INT_MAX) { - QMessageBox::warning(_qtFileTransferWidget, tr("File size error"), - tr("%1 exceeds the maximum authorized size.").arg(fileinfo.filePath()), - QMessageBox::Ok, 0, 0 - ); - } else if (file.getSize() <= 0) { - QMessageBox::warning(_qtFileTransferWidget, tr("File size error"), - tr("%1 has size 0.").arg(fileinfo.filePath()), - QMessageBox::Ok, 0, 0 - ); - } else { - File file(std::string(filename.toUtf8().constData()), File::EncodingUTF8); - SendFileSession * fileSession = _coIpManager->getFileSessionManager().createSendFileSession(); - fileSession->addFile(file); - - for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); ++it) { - - std::string contactId = cContactList.findContactThatOwns(*it); - fileSession->addContact(contactId); - _qtFileTransferWidget->addSendItem(fileSession, filename.toStdString(), (*it).getDisplayContactId()); - } - - // HACK : Unique file transfer hack - _coIpManager->getFileSessionManager().queueSession(fileSession); - } -} - -void QtFileTransfer::needUpgradeEventHandler(FileSessionManager & sender) { - needUpgradeEventHandlerSignal(); -} - -void QtFileTransfer::peerNeedsUpgradeEventHandler(FileSessionManager & sender, const std::string contactID) { - peerNeedsUpgradeEventHandlerSignal(QString::fromStdString(contactID)); -} - -void QtFileTransfer::needUpgradeEventHandlerSlot() { - - QtFileTransferNotifyDialog qtFileTransferNotifyDialog(_qtFileTransferWidget); - qtFileTransferNotifyDialog.setTitle(tr("Please upgrade
your @product@")); - qtFileTransferNotifyDialog.setMessage(tr("The file cannot be received:" - "you must upgrade your @product@ in order to receive it.")); - - qtFileTransferNotifyDialog.exec(); -} - -void QtFileTransfer::peerNeedsUpgradeEventHandlerSlot(const QString & contactID) { - - QtFileTransferNotifyDialog qtFileTransferNotifyDialog(_qtFileTransferWidget); - qtFileTransferNotifyDialog.setTitle(tr("Tell your contact
to upgrade
his @product@")); - QString message = contactID + " " + QString(tr("is trying to send you a file " - "but his @product@ must be upgraded in order to receive it." - "Tell him to download the latest version.")); - qtFileTransferNotifyDialog.setMessage(message); - - qtFileTransferNotifyDialog.exec(); -} - -const QString QtFileTransfer::getChosenFile() const { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString startDir = QString::fromStdString(config.getLastUploadedFileFolder()); - - QString filename = QFileDialog::getOpenFileName( - _qtFileTransferWidget, - "Choose a file", - startDir, - tr("All Files (*.* *)") - ); - return filename; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferDownloadItem.h" - -#include -#include - -#include -#include -#include - -#include - -QtFileTransferDownloadItem::QtFileTransferDownloadItem(QWidget * parent, ReceiveFileSession * fileSession, const QString & path) - : QtFileTransferItem(parent, QtFileTransferItem::Download), _receiveFileSession(fileSession) { - - _filename = path + QString(QDir::separator()) + QString::fromUtf8(fileSession->getFileName().c_str()); - - setFilename(QString::fromUtf8(fileSession->getFileName().c_str())); - setContact(QString::fromStdString(_receiveFileSession->getIMContact().getDisplayContactId())); - - // bind to fileSession events - _receiveFileSession->fileTransferProgressionEvent += - boost::bind(&QtFileTransferDownloadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - _receiveFileSession->fileTransferEvent += - boost::bind(&QtFileTransferDownloadItem::fileTransferEventHandler, this, _1, _2, _3, _4); - _receiveFileSession->moduleFinishedEvent += - boost::bind(&QtFileTransferDownloadItem::moduleFinishedEventHandler, this, _1); - //// - - //TODO: check if the fileSession has been cancelled, if yes call updateState - if (_receiveFileSession->getLastEvent() == IFileSession::IFileSessionEventFileTransferCancelledByPeer) { - updateStateEvent((int)IFileSession::IFileSessionEventFileTransferCancelledByPeer); - } -} - -void QtFileTransferDownloadItem::pause() { - _receiveFileSession->pause(); -} - -void QtFileTransferDownloadItem::resume() { - _receiveFileSession->resume(); -} - -void QtFileTransferDownloadItem::stop() { - _receiveFileSession->stop(); -} - -void QtFileTransferDownloadItem::fileTransferProgressionEventHandler( - ReceiveFileSession & sender, IMContact imContact, File sentFile, int percentage) { - - LOG_DEBUG("progress: " + String::fromNumber(percentage)); - progressChangeEvent(percentage); -} - -void QtFileTransferDownloadItem::fileTransferEventHandler(ReceiveFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { - - LOG_DEBUG("filetransfer event: " + String::fromNumber(event)); - - updateStateEvent((int)event); -} - -void QtFileTransferDownloadItem::moduleFinishedEventHandler(CoIpModule & sender) { - LOG_DEBUG("module receiveFileSession has finished, delete it"); - - // prevent multiple calls - if (!_receiveFileSession) { - return; - } - //// - - // unbind to fileSession events - _receiveFileSession->fileTransferProgressionEvent -= - boost::bind(&QtFileTransferDownloadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - _receiveFileSession->fileTransferEvent -= - boost::bind(&QtFileTransferDownloadItem::fileTransferEventHandler, this, _1, _2, _3, _4); - _receiveFileSession->moduleFinishedEvent -= - boost::bind(&QtFileTransferDownloadItem::moduleFinishedEventHandler, this, _1); - //// - - OWSAFE_DELETE(_receiveFileSession); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferDownloadItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERDOWNLOADITEM_H -#define OWQTFILETRANSFERDOWNLOADITEM_H - -#include "QtFileTransferItem.h" - -#include - -class ReceiveFileSession; -class SendFileSession; -class File; -class IMContact; -class CoIpModule; - -/** - * A QtFileTransferItem dedicate to upload. - * @author Mathieu Stute - */ -class QtFileTransferDownloadItem : public QtFileTransferItem { - Q_OBJECT -public: - - /** - * Default constructor. - */ - QtFileTransferDownloadItem(QWidget * parent, ReceiveFileSession * fileSession, const QString & path); - - /** - * @see QtFileTransferItem::isRunning(). - */ - bool isRunning() const { - return (_receiveFileSession != NULL); - } - -private Q_SLOTS: - - /** - * @see ReceiveFileSession::pause(). - */ - void pause(); - - /** - * @see ReceiveFileSession::resume(). - */ - void resume(); - - /** - * @see ReceiveFileSession::stop(). - */ - void stop(); - -private: - - /** - * @see ReceiveFileSession::fileTransferProgressionEvent - */ - void fileTransferProgressionEventHandler(ReceiveFileSession & sender, - IMContact imContact, File sentFile, int percentage); - - /** - * @see ReceiveFileSession::fileTransferEvent - */ - void fileTransferEventHandler(ReceiveFileSession & sender, - IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile); - - /** - * The module has finished its job, it can be released. - * @see CoIpModule::moduleFinishedEvent - */ - void moduleFinishedEventHandler(CoIpModule & sender); - - /** - * Direct link to the ReceiveFileSession. - */ - ReceiveFileSession * _receiveFileSession; -}; - -#endif //OWQTFILETRANSFERDOWNLOADITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransfer.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFER_H -#define OWQTFILETRANSFER_H - -#include - -#include -#include - -#include -#include - -class CoIpManager; -class FileSessionManager; -class QtFileTransferWidget; -class IMContactSet; -class CContactList; - -/** - * Qt file transfer object. - * - * @author Mathieu Stute - * @author Philippe Bernery - */ -class QtFileTransfer : public QObject, public Trackable { - Q_OBJECT -public: - - /** - * Constructor. - */ - QtFileTransfer(QObject * parent, CoIpManager * coIpManager); - - /** - * Destructor. - */ - ~QtFileTransfer(); - - /** - * Creates a SendFileSession. - * @param imContactSet the set of contacts. - * @param filename the file to upload. - * @param cContactList a reference to the CContactList. - */ - void createSendFileSession(IMContactSet imContactSet, const QString & filename, CContactList & cContactList); - - /** - * Return a pointer to the File Transfer Widget. - * @return a pointer to the QtFileTransferWidget. - */ - QtFileTransferWidget * getFileTransferWidget() { return _qtFileTransferWidget; } - - /** - * Open a file chooser and return the chosen one. - * @return the chosen file. - */ - const QString getChosenFile() const; - -Q_SIGNALS: - - /** - * @brief Thread safe code - */ - void newReceiveFileSessionCreatedEventHandlerSignal(ReceiveFileSession * fileSession); - - /** - * @brief Thread safe code - */ - void needUpgradeEventHandlerSignal(); - - /** - * @brief Thread safe code - */ - void peerNeedsUpgradeEventHandlerSignal(const QString & contactID); - -private Q_SLOTS: - - /** - * @brief Thread safe code - */ - void newReceiveFileSessionCreatedEventHandlerSlot(ReceiveFileSession * fileSession); - - /** - * @brief Thread safe code - */ - void needUpgradeEventHandlerSlot(); - - /** - * @brief Thread safe code - */ - void peerNeedsUpgradeEventHandlerSlot(const QString & contactID); - -private: - - /** - * @see FileSessionManager::newReceiveFileSessionCreatedEvent - */ - void newReceiveFileSessionCreatedEventHandler(FileSessionManager & sender, ReceiveFileSession fileSession); - - /** - * @see FileSessionManager::needUpgradeEvent - */ - void needUpgradeEventHandler(FileSessionManager & sender); - - /** - * @see FileSessionManager::peerNeedsUpgradeEvent - */ - void peerNeedsUpgradeEventHandler(FileSessionManager & sender, const std::string contactID); - - /** - * Direct link to the transfer widget. - */ - QtFileTransferWidget * _qtFileTransferWidget; - - /** - * Direct link to CoIpManager. - */ - CoIpManager * _coIpManager; -}; - -#endif //OWQTFILETRANSFER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferItem.h" -#include "QtFileTransferNotifyDialog.h" -#include "ui_FileTransferItem.h" - -#include -#include -#include -#include - -#include -#include - -#include - -QtFileTransferItem::QtFileTransferItem(QWidget * parent, Type type) - : QWidget(parent), - _type(type) { - - _removeClicked = false; - - // init main widget - _ui = new Ui::FileTransferItem(); - _ui->setupUi(this); - _ui->progressBar->setMaximum(100); - setProgress(0); - - // configure initial state - if (_type == Download) { - setState(tr("Downloading...")); - } else { - setState(tr("Waiting for peer...")); - } - updateButtonsInProgress(); - //// - - // SIGNAL/SLOT for thread safe - SAFE_CONNECT(this, SIGNAL(progressChangeEvent(int)), - SLOT(setProgress(int))); - SAFE_CONNECT(this, SIGNAL(stateChangeEvent(const QString &)), - SLOT(setState(const QString &))); - SAFE_CONNECT(this, SIGNAL(updateStateEvent(int)), - SLOT(updateState(int))); - //// -} - -QtFileTransferItem::~QtFileTransferItem() { - OWSAFE_DELETE(_ui); -} - -void QtFileTransferItem::setFilename(const QString & filename) { - _ui->filenameLabel->setText("" + filename + ""); -} - -void QtFileTransferItem::setState(const QString & state) { - _ui->statusLabel->setText(state); -} - -void QtFileTransferItem::setContact(const QString & contact) { - _contact = contact; - if (_type == Download) { - _ui->contactLabel->setText(" " + tr("From: ") + contact + ""); - } else { - _ui->contactLabel->setText(" " + tr("To: ") + contact + ""); - } -} - -void QtFileTransferItem::setFileSize(int size) { -} - -void QtFileTransferItem::setProgress(int progress) { - _ui->progressBar->setValue(progress); - //HACK: IFileSessionEventFileTransferFinished is not always sent - if (progress != 100) { - stateChangeEventDownUp(); - } else { - updateButtonsFinished(); - } -} - -void QtFileTransferItem::updateButtonsFinished() { - disconnectButtons(); - SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(open())); - SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(remove())); - _ui->cancelOpenButton->setText(tr("Open")); - _ui->removePauseResumeButton->setText(tr("Remove")); - _ui->removePauseResumeButton->setEnabled(true); - _ui->cancelOpenButton->setEnabled(true); - //FIXME: remove the status bar from its layout - //_ui->progressBar->hide(); -} - -void QtFileTransferItem::updateButtonsPaused() { - disconnectButtons(); - SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); - SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(resume())); - _ui->cancelOpenButton->setText(tr("Cancel")); - _ui->removePauseResumeButton->setText(tr("Resume")); - _ui->removePauseResumeButton->setEnabled(true); - _ui->cancelOpenButton->setEnabled(false); -} - -void QtFileTransferItem::updateButtonsPausedByPeer() { - disconnectButtons(); - SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); - SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(pause())); - _ui->cancelOpenButton->setText(tr("Cancel")); - _ui->removePauseResumeButton->setText(tr("Pause")); - _ui->removePauseResumeButton->setEnabled(false); - _ui->cancelOpenButton->setEnabled(false); -} - -void QtFileTransferItem::updateButtonsInProgress() { - disconnectButtons(); - SAFE_CONNECT(_ui->cancelOpenButton, SIGNAL(clicked()), SLOT(stop())); - SAFE_CONNECT(_ui->removePauseResumeButton, SIGNAL(clicked()), SLOT(pause())); - _ui->cancelOpenButton->setText(tr("Cancel")); - _ui->removePauseResumeButton->setText(tr("Pause")); - _ui->removePauseResumeButton->setEnabled(true); - _ui->cancelOpenButton->setEnabled(true); -} - -void QtFileTransferItem::disconnectButtons() { - _ui->cancelOpenButton->disconnect(SIGNAL(clicked())); - _ui->removePauseResumeButton->disconnect(SIGNAL(clicked())); -} - -void QtFileTransferItem::remove() { - _removeClicked = true; - removeClicked(); -} - -void QtFileTransferItem::open() { - LOG_DEBUG("open from file transfer manager: " + _filename.toStdString()); -#ifdef OS_WINDOWS - //TODO: other systems - WebBrowser::openUrl(_filename.toStdString()); -#endif -} - -void QtFileTransferItem::updateState(int e) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString companyWebSiteUrl = QString::fromStdString(config.getCompanyWebSiteUrl()); - - IFileSession::IFileSessionEvent event = (IFileSession::IFileSessionEvent) e; - QtFileTransferNotifyDialog * qtFileTransferNotifyDialog; - - switch(event) { - case IFileSession::IFileSessionEventInviteToTransfer: - stateChangeEvent(tr("Starting")); - updateButtonsInProgress(); - break; - case IFileSession::IFileSessionEventWaitingForAnswer: - stateChangeEvent(tr("Waiting for anwser...")); - updateButtonsInProgress(); - break; - case IFileSession::IFileSessionEventFileTransferFinished: - stateChangeEvent(tr("Done")); - updateButtonsFinished(); - break; - case IFileSession::IFileSessionEventFileTransferFailed: - stateChangeEvent(tr("Failed")); - updateButtonsFinished(); - qtFileTransferNotifyDialog = new QtFileTransferNotifyDialog(this); - qtFileTransferNotifyDialog->setTitle(tr("An error occured during the file transfer")); - qtFileTransferNotifyDialog->setMessage(tr("This may be caused by :") + "
" + - "
    " + - "
  • " + tr("Your @product@ is not up to date. Please download the latest version on") + - " " + companyWebSiteUrl + "
    " + - "
  • " + tr("The @company@ network may be temporarily unavailable. Please try later.") + - "
"); - qtFileTransferNotifyDialog->exec(); - OWSAFE_DELETE(qtFileTransferNotifyDialog); - break; - case IFileSession::IFileSessionEventFileTransferPaused: - stateChangeEvent(tr("Paused")); - updateButtonsPaused(); - break; - case IFileSession::IFileSessionEventFileTransferPausedByPeer: - stateChangeEvent(tr("Paused by peer")); - updateButtonsPausedByPeer(); - break; - case IFileSession::IFileSessionEventFileTransferResumed: - stateChangeEventDownUp(); - updateButtonsInProgress(); - break; - case IFileSession::IFileSessionEventFileTransferResumedByPeer: - stateChangeEventDownUp(); - updateButtonsInProgress(); - break; - case IFileSession::IFileSessionEventFileTransferCancelled: - stateChangeEvent(tr("Cancelled")); - updateButtonsFinished(); - break; - case IFileSession::IFileSessionEventFileTransferCancelledByPeer: - stateChangeEvent(tr("Cancelled by peer")); - updateButtonsFinished(); - break; - case IFileSession::IFileSessionEventFileTransferBegan: - stateChangeEventDownUp(); - updateButtonsInProgress(); - break; - default: - LOG_FATAL("unknonw IFileSessionEvent: " + String::fromNumber(event)); - } -} - -void QtFileTransferItem::stateChangeEventDownUp() { - - if (_type == Download) { - stateChangeEvent(tr("Downloading...")); - } else { - stateChangeEvent(tr("Uploading...")); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,212 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERITEM_H -#define OWQTFILETRANSFERITEM_H - -#include -#include - -#include - -#include - -namespace Ui { class FileTransferItem; } - -/** - * Qt file transfer item widget. - * Represents graphically one file transfer. - * Auto adapt its appearance to its state. - * - * @author Mathieu Stute - */ -class QtFileTransferItem : public QWidget, public Trackable { - Q_OBJECT -public: - - enum Type { - /** Download type */ - Download, - - /** Upload type */ - Upload - }; - - /** - * Constructor. - * @param parent the parent widget - * @param type type of QtFileTransferItem (Download or Upload) - */ - QtFileTransferItem(QWidget * parent, Type type); - - /** - * Destructor. - */ - ~QtFileTransferItem(); - - /** - * Returns true if the transfer is not finished. - * @return true if finished otherwise false. - */ - virtual bool isRunning() const = 0; - - /** - * @return true if the remove button has been clicked. - */ - bool removeHasBeenClicked() { - return _removeClicked; - } - -Q_SIGNALS: - - /** - * The state has changed. - * @param state the new state. - */ - void stateChangeEvent(const QString & state); - - /** - * Progression change (thread safe) - * @param progress total progress. - */ - void progressChangeEvent(int progress); - - // the int is a IFileSession::IFileSessionEvent - void updateStateEvent(int event); - - /** - * Remove has been clicked. - */ - void removeClicked(); - -private Q_SLOTS: - - /** - * Set the progress of the transfer. - * @param progress progress. - */ - void setProgress(int progress); - - /** - * Set the state of the transfer. - * @param state state. - */ - void setState(const QString & state); - - /** - * Update state. - * @param event a IFileSession::IFileSessionEvent - */ - void updateState(int event); - -protected Q_SLOTS: - - /** - * TODO: - */ - void remove(); - - /** - * Open the file with the associated application. - */ - void open(); - - /** - * @see ReceiveFileSession::pause(). - */ - virtual void pause() = 0; - - /** - * @see ReceiveFileSession::resume(). - */ - virtual void resume() = 0; - - /** - * @see ReceiveFileSession::stop(). - */ - virtual void stop() = 0; - -protected: - - /** - * Set the tranfer filename. - * @param filename filename. - */ - void setFilename(const QString & filename); - - /** - * Set the total size of the file. - * @param size size of the file. - */ - void setFileSize(int size); - - /** - * Set contact name. - * @param contact contact name. - */ - void setContact(const QString & contact); - - /** - * Disconnect buttons. - */ - void disconnectButtons(); - - /** - * Update gui to state finished. - */ - void updateButtonsFinished(); - - /** - * Update gui to state paused. - */ - void updateButtonsPaused(); - - /** - * Update gui to state paused by peer. - */ - void updateButtonsPausedByPeer(); - - /** - * Update gui to state downloading/uploading. - */ - void updateButtonsInProgress(); - - /** - * Emits stateChangeEvent for uploading and downloading. - */ - void stateChangeEventDownUp(); - - /** - * Type (Upload or Download). - */ - Type _type; - - /** complete filename */ - QString _filename; - - /** the peer contact */ - QString _contact; - - /** remove button clicked handler */ - bool _removeClicked; - - Ui::FileTransferItem * _ui; -}; - -#endif //OWQTFILETRANSFERITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferNotifyDialog.h" -#include "ui_NotifyDialog.h" - -#include -#include - -QtFileTransferNotifyDialog::QtFileTransferNotifyDialog(QWidget * parent) - : QDialog(parent) { - - _ui = new Ui::NotifyDialog(); - _ui->setupUi(this); - - //install header image - WidgetBackgroundImage::setBackgroundImage(_ui->headerLabel, ":pics/headers/file-transfer.png", WidgetBackgroundImage::AdjustSize); - //// -} - -QtFileTransferNotifyDialog::~QtFileTransferNotifyDialog() { - OWSAFE_DELETE(_ui); -} - -void QtFileTransferNotifyDialog::setTitle(const QString & title) { - - QString temp = QString("" - "

" - "%1" - "

").arg(title); - _ui->headerLabel->setText(temp); -} - -void QtFileTransferNotifyDialog::setMessage(const QString & message) { - - QString temp = QString("" - "

" - "%1

").arg(message); - _ui->statusLabel->setText(temp); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferNotifyDialog.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERNOTIFYDIALOG_H -#define OWQTFILETRANSFERNOTIFYDIALOG_H - -#include - -#include - -namespace Ui {class NotifyDialog;} - -/** - * Qt file transfer upgrade dialog. - * - * @author Nicolas Couturier - * @author Mathieu Stute - */ -class QtFileTransferNotifyDialog : public QDialog { - Q_OBJECT -public: - - /** - * Constructor. - * @param parent the parent widget - */ - QtFileTransferNotifyDialog(QWidget * parent); - - /** - * Destructor. - */ - ~QtFileTransferNotifyDialog(); - - /** - * Sets the header label. - */ - void setTitle(const QString & title); - - /** - * Sets the status label. - */ - void setMessage(const QString & message); - -private: - - Ui::NotifyDialog * _ui; -}; - -#endif //OWQTFILETRANSFERNOTIFYDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,97 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferUploadItem.h" - -#include - -#include -#include -#include -#include - -#include - -QtFileTransferUploadItem::QtFileTransferUploadItem(QWidget * parent, SendFileSession * fileSession, - const QString & filename, const std::string & contact) - : QtFileTransferItem(parent, QtFileTransferItem::Upload), - _sendFileSession(fileSession) { - - _filename = filename; - - File f(filename.toStdString()); - setFilename(QString::fromStdString(f.getFileName())); - setContact(QString::fromStdString(contact)); - - // bind to fileSession events - _sendFileSession->fileTransferProgressionEvent += - boost::bind(&QtFileTransferUploadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - _sendFileSession->fileTransferEvent += - boost::bind(&QtFileTransferUploadItem::fileTransferEventHandler, this, _1, _2, _3, _4); - _sendFileSession->moduleFinishedEvent += - boost::bind(&QtFileTransferUploadItem::moduleFinishedEventHandler, this, _1); - //// -} - -void QtFileTransferUploadItem::pause() { - _sendFileSession->pause(); -} - -void QtFileTransferUploadItem::resume() { - _sendFileSession->resume(); -} - -void QtFileTransferUploadItem::stop() { - _sendFileSession->stop(); -} - -void QtFileTransferUploadItem::fileTransferProgressionEventHandler( - SendFileSession & sender, IMContact imContact, File sentFile, int percentage) { - - LOG_DEBUG("fileTransferProgressionEventHandler: " + String::fromNumber(percentage) + "%"); - progressChangeEvent(percentage); -} - -void QtFileTransferUploadItem::fileTransferEventHandler( - SendFileSession & sender, IFileSession::IFileSessionEvent event, IMContact imContact, File sentFile) { - - LOG_DEBUG("fileTransferProgressionEventHandler: " + String::fromNumber((int)event)); - updateStateEvent((int)event); -} - -void QtFileTransferUploadItem::moduleFinishedEventHandler(CoIpModule & sender) { - LOG_DEBUG("module sendFileSession has finished, delete it"); - - // prevent multiple calls - if (!_sendFileSession) { - return; - } - //// - - // unbind to fileSession events - _sendFileSession->fileTransferProgressionEvent -= - boost::bind(&QtFileTransferUploadItem::fileTransferProgressionEventHandler, this, _1, _2, _3, _4); - _sendFileSession->fileTransferEvent -= - boost::bind(&QtFileTransferUploadItem::fileTransferEventHandler, this, _1, _2, _3, _4); - _sendFileSession->moduleFinishedEvent -= - boost::bind(&QtFileTransferUploadItem::moduleFinishedEventHandler, this, _1); - //// - - OWSAFE_DELETE(_sendFileSession); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferUploadItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERUPLOADITEM_H -#define OWQTFILETRANSFERUPLOADITEM_H - -#include "QtFileTransferItem.h" - -#include - -class SendFileSession; -class File; -class IMContact; -class CoIpModule; - -/** - * A QtFileTransferItem dedicate to upload. - * @author Mathieu Stute - */ -class QtFileTransferUploadItem : public QtFileTransferItem { - Q_OBJECT -public: - - /** - * Constructor. - */ - QtFileTransferUploadItem(QWidget * parent, SendFileSession * fileSession, - const QString & filename, const std::string & contact); - - /** - * @see QtFileTransferItem::isRunning(). - */ - bool isRunning() const { - return (_sendFileSession != NULL); - } - -private Q_SLOTS: - - /** - * @see ReceiveFileSession::pause(). - */ - void pause(); - - /** - * @see ReceiveFileSession::resume(). - */ - void resume(); - - /** - * @see ReceiveFileSession::stop(). - */ - void stop(); - -private: - - /** - * @see SendFileSession::fileTransferProgressionEvent. - */ - void fileTransferProgressionEventHandler(SendFileSession & sender, IMContact imContact, - File sentFile, int percentage); - - /** - * @see SendFileSession::fileTransferEvent. - */ - void fileTransferEventHandler(SendFileSession & sender, IFileSession::IFileSessionEvent event, - IMContact imContact, File sentFile); - - /** - * The module has finished its job, it can be released. - * @see CoIpModule::moduleFinishedEvent - */ - void moduleFinishedEventHandler(CoIpModule & sender); - - /** - * Direct link to SendFileSession. - */ - SendFileSession * _sendFileSession; -}; - -#endif //OWQTFILETRANSFERUPLOADITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,182 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFileTransferWidget.h" -#include "QtFileTransferDownloadItem.h" -#include "QtFileTransferUploadItem.h" -#include "ui_FileTransferDialog.h" - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -static int DOWNLOAD_TAB_INDEX = 0; -static int UPLOAD_TAB_INDEX = 1; - -QtFileTransferWidget::QtFileTransferWidget(QWidget * parent) - : QDialog(parent) { - - //init main widget - _ui = new Ui::FileTransferDialog(); - _ui->setupUi(this); - //// - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - -#ifdef OS_LINUX - const std::string &applicationIconPath = config.getApplicationIconPath(); - setWindowIcon(QIcon(QString::fromStdString(applicationIconPath))); -#endif - - if (!config.getFileTransferDownloadFolder().empty()) { - setDownloadFolder(QString::fromUtf8(config.getFileTransferDownloadFolder().c_str())); - } - - //connect signals to slots - SAFE_CONNECT(_ui->cleanButton, SIGNAL(pressed()), SLOT(cleanButtonClicked())); - SAFE_CONNECT(_ui->pathButton, SIGNAL(pressed()), SLOT(pathButtonClicked())); - //// -} - -QtFileTransferWidget::~QtFileTransferWidget() { - OWSAFE_DELETE(_ui); -} - -void QtFileTransferWidget::cleanButtonClicked() { - clean(true); -} - -void QtFileTransferWidget::clean(bool cleanButton) { - - if (_ui->tabWidget->currentIndex() == DOWNLOAD_TAB_INDEX) { - - int count = _ui->downloadTransferListWidget->count(); - for (int i = count - 1; i >= 0; i--) { - - QListWidgetItem * item = _ui->downloadTransferListWidget->item(i); - QtFileTransferDownloadItem * widgetItem = (QtFileTransferDownloadItem*)_ui->downloadTransferListWidget->itemWidget(item); - - if (cleanButton) { - if (!widgetItem->isRunning()) { - _ui->downloadTransferListWidget->takeItem(i); - OWSAFE_DELETE(widgetItem); - } - } else { - if ((widgetItem->removeHasBeenClicked()) && (!widgetItem->isRunning())) { - _ui->downloadTransferListWidget->takeItem(i); - OWSAFE_DELETE(widgetItem); - } - } - } - - } else { - - int count = _ui->uploadTransferListWidget->count(); - for (int i = count - 1; i >= 0; i--) { - - QListWidgetItem * item = _ui->uploadTransferListWidget->item(i); - QtFileTransferUploadItem * widgetItem = (QtFileTransferUploadItem*)_ui->uploadTransferListWidget->itemWidget(item); - - if (cleanButton) { - if (!widgetItem->isRunning()) { - _ui->uploadTransferListWidget->takeItem(i); - OWSAFE_DELETE(widgetItem); - } - } else { - if ((widgetItem->removeHasBeenClicked()) && (!widgetItem->isRunning())) { - _ui->uploadTransferListWidget->takeItem(i); - OWSAFE_DELETE(widgetItem); - } - } - } - } - -} - -void QtFileTransferWidget::pathButtonClicked() { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString startFolder = QString::fromUtf8(config.getFileTransferDownloadFolder().c_str()); - QString dirName = QFileDialog::getExistingDirectory(this, "Select a directory", startFolder); - if (!dirName.isEmpty()) { - setDownloadFolder(dirName); - } -} - -void QtFileTransferWidget::addReceiveItem(ReceiveFileSession * fileSession) { - - QtFileTransferDownloadItem * fileTransferItem = new QtFileTransferDownloadItem(this, fileSession, _downloadFolder); - SAFE_CONNECT(fileTransferItem, SIGNAL(removeClicked()), SLOT(itemRemoveClicked())); - QListWidgetItem * item = new QListWidgetItem(/*_ui->downloadTransferListWidget*/); - item->setSizeHint(fileTransferItem->minimumSizeHint()); - _ui->downloadTransferListWidget->insertItem(0, item); - _ui->downloadTransferListWidget->setItemWidget(item, fileTransferItem); - showDownloadTab(); - showAndRaise(); -} - -void QtFileTransferWidget::addSendItem(SendFileSession * fileSession, - const std::string & filename, const std::string & contact) { - - QtFileTransferUploadItem * fileTransferItem = new QtFileTransferUploadItem(this, fileSession, - QString::fromStdString(filename), contact); - SAFE_CONNECT(fileTransferItem, SIGNAL(removeClicked()), SLOT(itemRemoveClicked())); - QListWidgetItem * item = new QListWidgetItem(/*_ui->uploadTransferListWidget*/); - item->setSizeHint(fileTransferItem->minimumSizeHint()); - _ui->uploadTransferListWidget->insertItem(0, item); - _ui->uploadTransferListWidget->setItemWidget(item, fileTransferItem); - showUploadTab(); - showAndRaise(); -} - -void QtFileTransferWidget::setDownloadFolder(const QString & folder) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::FILETRANSFER_DOWNLOAD_FOLDER_KEY, std::string(folder.toUtf8().constData())); - QDir dir(folder); - _ui->pathButton->setText(dir.dirName()); - _downloadFolder = folder; -} - -void QtFileTransferWidget::showDownloadTab() { - _ui->tabWidget->setCurrentIndex(DOWNLOAD_TAB_INDEX); - _ui->downloadTransferListWidget->scrollToTop(); -} - -void QtFileTransferWidget::showUploadTab() { - _ui->tabWidget->setCurrentIndex(UPLOAD_TAB_INDEX); - _ui->uploadTransferListWidget->scrollToTop(); -} - -void QtFileTransferWidget::itemRemoveClicked() { - clean(false); -} - -void QtFileTransferWidget::showAndRaise() { - activateWindow(); - showNormal(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/filetransfer/QtFileTransferWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFILETRANSFERWIDGET_H -#define OWQTFILETRANSFERWIDGET_H - -#include -#include - -#include - -class ReceiveFileSession; -class SendFileSession; - -namespace Ui { class FileTransferDialog; } - -/** - * Qt file transfer widget. - * - * @author Mathieu Stute - */ -class QtFileTransferWidget : public QDialog { - Q_OBJECT -public: - - /** - * Default constructor. - * @param parent the parent widget - */ - QtFileTransferWidget(QWidget * parent); - - /** - * Destructor. - */ - ~QtFileTransferWidget(); - - /** - * Set (graphically and in Config) the download folder. - * @param folder the path to the download folder. - */ - void setDownloadFolder(const QString & folder); - - /** - * Add a download item in the widget. - * @param fileSession the fileSession - */ - void addReceiveItem(ReceiveFileSession * fileSession); - - /** - * Add an upload item in the widget - * @param fileSession the file session - * @param filename the filename - * @param contact the contact - */ - void addSendItem(SendFileSession * fileSession, const std::string & filename, - const std::string & contact); - - /** - * Show and raise the widget. - */ - void showAndRaise(); - -private Q_SLOTS: - - /** - * Clean button has been clicked. - */ - void cleanButtonClicked(); - - /** - * Path button has been clicked. - */ - void pathButtonClicked(); - - /** - * A remove button has been clicked. - */ - void itemRemoveClicked(); - -private: - - void clean(bool cleanButton); - - /** - * Set the upload tab active. - */ - void showUploadTab(); - - /** - * Set the download tab active. - */ - void showDownloadTab(); - - /** a cache for the path to the download folder */ - QString _downloadFolder; - - Ui::FileTransferDialog * _ui; -}; - -#endif //OWQTFILETRANSFERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/HistoryWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/HistoryWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/HistoryWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/HistoryWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ - - HistoryWidget - - - - 0 - 0 - 400 - 575 - - - - - 0 - - - 6 - - - - - - - - Qt::CustomContextMenu - - - QAbstractItemView::NoEditTriggers - - - false - - - true - - - - - - - - ClearLineEdit - QLineEdit -
qtutil/ClearLineEdit.h
-
-
- - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistory.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,436 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtHistory.h" - -#include "QtHistoryWidget.h" - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - - -QString QtHistory::formatName(const std::string& name) const -{ - QString tmpUserName = QString::fromStdString(name)/*.remove("sip:")*/; - - CWengoPhone & cWengoPhone = _cHistory.getCWengoPhone(); - CUserProfile* cUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if(cUserProfile) - { - std::string uuid = cUserProfile->getCContactList().findContactThatOwns(name); - if(!uuid.empty()) - { - ContactProfile contactProfile = cUserProfile->getCContactList().getContactProfile(uuid); - if(!contactProfile.getShortDisplayName().empty()) - tmpUserName = QString::fromStdString(contactProfile.getShortDisplayName()); - } - } - return tmpUserName; - -} - -static QDateTime qDateTimeForMemento(HistoryMemento* memento) { - Date dt = memento->getDate(); - QDate date(dt.getYear(), dt.getMonth(), dt.getDay()); - Time tm = memento->getTime(); - QTime time(tm.getHour(), tm.getMinute(), tm.getSecond()); - return QDateTime(date, time); -} - -QString QtHistory::formatDate(const QDateTime& dateTime) { - return dateTime.toString(Qt::SystemLocaleDate); -} - -QString QtHistory::formatDuration(const QTime& time) { - return time.toString(Qt::TextDate); -} - -QString QtHistory::textForMementoState(const HistoryMemento::State& state) const { - switch (state) { - case HistoryMemento::IncomingCall: - return tr("Incoming call"); - case HistoryMemento::OutgoingCall: - return tr("Outgoing call"); - case HistoryMemento::MissedCall: - return tr("Missed call"); - case HistoryMemento::RejectedCall: - return tr("Rejected call"); - case HistoryMemento::OutgoingSmsOk: - return tr("Outgoing SMS"); - case HistoryMemento::ChatSession: - return tr("Chat session"); - case HistoryMemento::OutgoingSmsNok: - case HistoryMemento::None: - case HistoryMemento::Any: - case HistoryMemento::FileTransferUploaded: - case HistoryMemento::FileTransferInProgress: - case HistoryMemento::FileTransferDownloaded: - case HistoryMemento::FileTransferCancelled: - case HistoryMemento::FileTransferPaused: - break; - } - return QString(); -} - -static QIcon iconForMementoState(HistoryMemento::State state) { - static QMap iconMap; - if (iconMap.isEmpty()) { - iconMap[HistoryMemento::IncomingCall] = QIcon(":/pics/history/call_incoming.png"); - iconMap[HistoryMemento::OutgoingCall] = QIcon(":/pics/history/call_outgoing.png"); - iconMap[HistoryMemento::MissedCall] = QIcon(":/pics/history/call_missed.png"); - iconMap[HistoryMemento::RejectedCall] = QIcon(":/pics/history/call_missed.png"); - iconMap[HistoryMemento::OutgoingSmsOk] = QIcon(":/pics/history/sms_sent.png"); - iconMap[HistoryMemento::ChatSession] = QIcon(":/pics/history/chat.png"); - } - QMap::ConstIterator it = iconMap.find(state); - if (it != iconMap.end()) { - return it.value(); - } else { - return QIcon(); - } -} - -static QTime qTimeForDuration(int duration) { - if (duration == -1) { - duration = 0; - } - QTime time; - return time.addSecs(duration); -} - -/** - * This helper class is used to sort history by date - */ -class HistoryMementoSorter { -public: - HistoryMementoSorter(HistoryMementoCollection* collection) - : _collection(collection) {} - - bool operator()(int id1, int id2) { - HistoryMemento* m1 = _collection->getMemento(id1); - Q_ASSERT(m1); - HistoryMemento* m2 = _collection->getMemento(id2); - Q_ASSERT(m2); - QDateTime dt1 = qDateTimeForMemento(m1); - QDateTime dt2 = qDateTimeForMemento(m2); - return dt1 > dt2; - } - -private: - HistoryMementoCollection* _collection; -}; - -QtHistory::QtHistory(CHistory & cHistory) - : QAbstractTableModel(NULL), - _cHistory(cHistory) { - - _mutex = new QMutex(QMutex::Recursive); - - _stateFilter = HistoryMemento::Any; - - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cHistory.getCWengoPhone().getPresentation(); - _historyWidget = new QtHistoryWidget(qtWengoPhone->getWidget(), this); - SAFE_CONNECT(_historyWidget, - SIGNAL(replayItemRequested(int)), - SLOT(replayItem(int)) - ); - SAFE_CONNECT(_historyWidget, - SIGNAL(removeItemRequested(int)), - SLOT(removeItem(int)) - ); - SAFE_CONNECT(_historyWidget, - SIGNAL(missedCallsSeen()), - SLOT(resetUnseenMissedCalls()) - ); - qtWengoPhone->setQtHistoryWidget(_historyWidget); - - // define user use a Wengo or a SIP account - UserProfile * userProfile = _cHistory.getCWengoPhone().getCUserProfileHandler().getUserProfileHandler().getCurrentUserProfile(); - if (userProfile) { - _isWengoAccountConnected = userProfile->hasWengoAccount(); - } else { - _isWengoAccountConnected = false; - } - //// - - updatePresentation(); -} - -QtHistory::~QtHistory() { - delete _mutex; - - OWSAFE_DELETE(_chatLogViewer); - OWSAFE_DELETE(_historyWidget); -} - -QWidget * QtHistory::getWidget() const { - return _historyWidget->getWidget(); -} - -void QtHistory::historyLoadedEvent() { -} - -void QtHistory::updatePresentation() { - - reset(); - _mementoIdList.clear(); - - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - HistoryMap::const_iterator - it = collection->begin(), - end = collection->end(); - for (; it != end; ++it) { - _mementoIdList << it->first; - } - - HistoryMementoSorter sorter(collection); - qSort(_mementoIdList.begin(), _mementoIdList.end(), sorter); -} - -void QtHistory::replayItem(int id) { - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - HistoryMemento* memento = collection->getMemento(id); - - if(!memento) - return; - - if(!memento) - return; - - QtWengoPhone * qtWengoPhone = (QtWengoPhone *) _cHistory.getCWengoPhone().getPresentation(); - - QMessageBox mb(tr("@product@ - Call History"), - tr("Do you want to call %1?").arg(formatName(memento->getPeer())), - QMessageBox::Question, - QMessageBox::Yes | QMessageBox::Default, - QMessageBox::No | QMessageBox::Escape, - QMessageBox::NoButton, _historyWidget->getWidget()); - - switch (memento->getState()) { - case HistoryMemento::OutgoingSmsOk: - case HistoryMemento::OutgoingSmsNok: { - //Retrieve info & configure the Sms widget - std::string data = _cHistory.getMementoData(id); - QString text = QString::fromUtf8(data.c_str(), data.size()); - QString phoneNumber = QString::fromStdString(_cHistory.getMementoPeer(id)); - - //Test existance of Sms (available only if a WengoAccount has been created) - QtSms * sms = qtWengoPhone->getQtSms(); - if (sms) { - sms->setText(text); - sms->setPhoneNumber(phoneNumber); - sms->getWidget()->show(); - } - break; - } - - case HistoryMemento::OutgoingCall: - case HistoryMemento::IncomingCall: - case HistoryMemento::MissedCall: - case HistoryMemento::RejectedCall: - if (mb.exec() == QMessageBox::Yes) { - _cHistory.replay(id); - } - break; - - case HistoryMemento::ChatSession: - _chatLogViewer = new QtChatLogViewer(NULL, *qtWengoPhone, QString::fromStdString(memento->getData())); - _chatLogViewer->show(); - break; - - default: - break; - } -} - -void QtHistory::removeItem(int id) { - int firstRow = _mementoIdList.indexOf(id); - if (firstRow == -1) { - return; - } - beginRemoveRows(QModelIndex(), firstRow, firstRow); - _cHistory.removeHistoryMemento(id); - _mementoIdList.removeAll(id); - endRemoveRows(); -} - -void QtHistory::mementoAddedEvent(unsigned id) { - beginInsertRows(QModelIndex(), 0, 0); - _mementoIdList.insert(0, id); - endInsertRows(); -} - -void QtHistory::mementoUpdatedEvent(unsigned id) { -} - -void QtHistory::mementoRemovedEvent(unsigned id) { - int firstRow = _mementoIdList.indexOf(id); - if (firstRow == -1) { - if(id == 0) - updatePresentation(); - return; - } - LOG_WARN("We should not reach this code"); - // We should not reach this code because the memento has probably been - // removed by removeItem, which should have removed the id from our list - beginRemoveRows(QModelIndex(), firstRow, firstRow); - _mementoIdList.removeAll(id); - endRemoveRows(); -} - -void QtHistory::unseenMissedCallsChangedEvent(int count) { -} - -void QtHistory::resetUnseenMissedCalls() { - _cHistory.resetUnseenMissedCalls(); -} - -void QtHistory::clearAllEntries() { - _cHistory.clear(HistoryMemento::Any); -} - -void QtHistory::clearSmsEntries() { - _cHistory.clear(HistoryMemento::OutgoingSmsOk); -} - -void QtHistory::clearChatEntries() { - _cHistory.clear(HistoryMemento::ChatSession); -} - -void QtHistory::clearIncomingCallEntries() { - _cHistory.clear(HistoryMemento::IncomingCall); -} - -void QtHistory::clearOutgoingCallEntries() { - _cHistory.clear(HistoryMemento::OutgoingCall); -} - -void QtHistory::clearMissedCallEntries() { - _cHistory.clear(HistoryMemento::MissedCall); -} - -void QtHistory::clearRejectedCallEntries() { - _cHistory.clear(HistoryMemento::RejectedCall); -} - -CHistory & QtHistory::getCHistory() const { - return _cHistory; -} - -int QtHistory::rowCount(const QModelIndex& parent) const { - if (parent.isValid()) { - return 0; - } - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - return collection->size(); -} - -int QtHistory::columnCount(const QModelIndex&) const { - return 4; -} - -QVariant QtHistory::data(const QModelIndex& index, int role) const { - if (index.row() < 0 || index.row() >= _mementoIdList.size()) { - return QVariant(); - } - int id = _mementoIdList[index.row()]; - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - HistoryMemento* memento = collection->getMemento(id); - if (!memento) { - LOG_ERROR("Couldn't get memento for id " + String::fromNumber(id)); - return QVariant(); - } - - if (role == Qt::DisplayRole) { - switch (index.column()) { - case 0: - return textForMementoState(memento->getState()); - - case 1: - if(memento->getAlias().size()) - return QVariant(formatName(memento->getAlias())); - return QVariant(formatName(memento->getPeer())); - - case 2: - return QVariant(formatDate(qDateTimeForMemento(memento))); - - case 3: - return QVariant(formatDuration(qTimeForDuration(memento->getDuration()))); - - default: - return QVariant(); - } - } else if (role == Qt::DecorationRole) { - if (index.column() == 0) { - return QVariant(iconForMementoState(memento->getState())); - } else { - return QVariant(); - } - } else if (role == Qt::UserRole) { - return QVariant(id); - } - return QVariant(); -} - -QVariant QtHistory::headerData(int section, Qt::Orientation orientation, int role) const { - if (role != Qt::DisplayRole) { - return QVariant(); - } - - if (orientation == Qt::Vertical) { - return QVariant(); - } - - switch (section) { - case 0: - return tr("Type"); - - case 1: - return tr("Name/ID"); - - case 2: - return tr("Date"); - - case 3: - return tr("Duration"); - - default: - return QVariant(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistory.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTHISTORY_H -#define QTHISTORY_H - -#include - -#include - -#include -#include -#include - -class CHistory; -class QtChatLogViewer; -class QtHistoryWidget; - -/** - * Qt Presentation component for history. - * - * It presents the history as a Qt model. - * - * One can get the memento id of a row using data(index, Qt::UserRole). - * - * @author Mathieu Stute - * @author Aurelien Gateau - */ -class QtHistory : public QAbstractTableModel, public PHistory { - Q_OBJECT -public: - - QtHistory(CHistory & cHistory); - - ~QtHistory(); - - virtual void updatePresentation(); - - void clearAllEntries(); - - void historyLoadedEvent(); - - void mementoAddedEvent(unsigned id); - - void mementoUpdatedEvent(unsigned id); - - void mementoRemovedEvent(unsigned id); - - void unseenMissedCallsChangedEvent(int count); - - void clearSmsEntries(); - - void clearChatEntries(); - - void clearIncomingCallEntries(); - - void clearOutgoingCallEntries(); - - void clearMissedCallEntries(); - - void clearRejectedCallEntries(); - - QWidget * getWidget() const; - - CHistory & getCHistory() const; - - /** - * @name QAbstractTableModel implementation - * @{ - */ - virtual int rowCount(const QModelIndex& parent = QModelIndex()) const; - - virtual int columnCount(const QModelIndex& parent = QModelIndex()) const; - - virtual QVariant data(const QModelIndex&, int role = Qt::DisplayRole) const; - - virtual QVariant headerData(int section, Qt::Orientation orientation, int role = Qt::DisplayRole) const; - /** @} */ - - QString formatName(const std::string& name) const; - - /** - * Format a date in the date column - * Public so that QtHistoryWidget can compute reasonable column widths - */ - static QString formatDate(const QDateTime&); - - /** - * Format the duration column - */ - static QString formatDuration(const QTime&); - - /** - * Return the text for the memento state. Not static because it uses tr() - */ - QString textForMementoState(const HistoryMemento::State& state) const; - -private Q_SLOTS: - - void replayItem(int id); - - void removeItem(int id); - - void resetUnseenMissedCalls(); - -private: - - QtHistoryWidget * _historyWidget; - - QtChatLogViewer * _chatLogViewer; - - HistoryMemento::State _stateFilter; - - CHistory & _cHistory; - - mutable QMutex * _mutex; - - bool _isWengoAccountConnected; - - QList _mementoIdList; -}; - -#endif //QTHISTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,208 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtHistoryWidget.h" - -#include "ui_HistoryWidget.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -QtHistoryWidget::QtHistoryWidget(QWidget * parent, QtHistory * qtHistory) - : QObject(parent), - _cHistory(qtHistory->getCHistory()), - _qtHistory(qtHistory) { - - _qtToolBar = NULL; - _qtCallBar = NULL; - _historyWidget = new QWidget(parent); - - _ui = new Ui::HistoryWidget(); - _ui->setupUi(_historyWidget); - - QIcon filterIcon(":/pics/history/filter.png"); - _ui->lineEdit->createLeftButton(filterIcon); - - _proxyModel = new QSortFilterProxyModel(this); - _proxyModel->setSourceModel(qtHistory); - _proxyModel->setFilterKeyColumn(1); - _ui->treeView->setModel(_proxyModel); - SAFE_CONNECT_RECEIVER(_ui->lineEdit, SIGNAL(textChanged(const QString&)), - _proxyModel, SLOT(setFilterFixedString(const QString&)) ); - -//#if defined(OS_MACOSX) -// _historyWidget->layout()->setMargin(10); -//#endif - - computeTreeViewColumnSizes(); - - //treeView - SAFE_CONNECT(_ui->treeView, - SIGNAL(doubleClicked(const QModelIndex&)), - SLOT(emitReplayItemRequested(const QModelIndex&)) - ); - SAFE_CONNECT(_ui->treeView, - SIGNAL(clicked(const QModelIndex&)), - SIGNAL(missedCallsSeen()) ); - - SAFE_CONNECT(_ui->treeView->selectionModel(), - SIGNAL(currentChanged(const QModelIndex&, const QModelIndex&)), - SLOT(updateCallBarFromIndex(const QModelIndex&)) - ); - - SAFE_CONNECT(_ui->treeView, - SIGNAL(customContextMenuRequested(const QPoint&)), - SLOT(showPopupMenuForCurrentIndex()) - ); -} - -QtHistoryWidget::~QtHistoryWidget() { - OWSAFE_DELETE(_ui); - OWSAFE_DELETE(_historyWidget); -} - -QWidget * QtHistoryWidget::getWidget() const { - return _historyWidget; -} - -int QtHistoryWidget::idFromIndex(const QModelIndex& proxyIndex) { - QModelIndex sourceIndex = _proxyModel->mapToSource(proxyIndex); - return _qtHistory->data(sourceIndex, Qt::UserRole).toInt(); -} - -void QtHistoryWidget::emitReplayItemRequested(const QModelIndex& index) { - int id = idFromIndex(index); - replayItemRequested(id); -} - -void QtHistoryWidget::updateCallBarFromIndex(const QModelIndex& index) { - if (!index.isValid()) { - return; - } - - int id = idFromIndex(index); - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - HistoryMemento* memento = collection->getMemento(id); - if (!memento || !_qtCallBar) { - return; - } - - if (memento->getState() != HistoryMemento::ChatSession) { - SipAddress sipAddress = memento->getPeer(); - _qtCallBar->setPhoneComboBoxEditText(sipAddress.toString()); - } -} - -void QtHistoryWidget::showPopupMenuForCurrentIndex() { - QModelIndex index = _ui->treeView->selectionModel()->currentIndex(); - if (!index.isValid()) { - return; - } - - int id = idFromIndex(index); - HistoryMementoCollection * collection = _cHistory.getHistory().getHistoryMementoCollection(); - HistoryMemento* memento = collection->getMemento(id); - Q_ASSERT(memento); - - QMenu menu(_ui->treeView); - QAction * replayAction; - switch (memento->getState()) { - case HistoryMemento::OutgoingSmsOk: - case HistoryMemento::OutgoingSmsNok: - replayAction = menu.addAction(QIcon(":/pics/actions/send-sms-16.png"), tr("Open in SMS window")); - break; - case HistoryMemento::OutgoingCall: - case HistoryMemento::IncomingCall: - case HistoryMemento::MissedCall: - case HistoryMemento::RejectedCall: - replayAction = menu.addAction(QIcon(":/pics/actions/accept-phone.png"), tr("Call this peer")); - break; - case HistoryMemento::ChatSession: - replayAction = menu.addAction(QIcon(":/pics/actions/chat.png"), tr("Show chat log")); - break; - default: - LOG_FATAL("Unhandled memento state"); - break; - } - - QAction* deleteAction = menu.addAction(QIcon(":/pics/actions/delete.png"), tr("Erase this entry")); - - QAction* action = menu.exec(QCursor::pos()); - if (action == replayAction) { - replayItemRequested(id); - } else if (action == deleteAction) { - removeItemRequested(id); - } -} - -void QtHistoryWidget::retranslateUi() { - _ui->retranslateUi(_historyWidget); - _qtHistory->updatePresentation(); -} - -void QtHistoryWidget::computeTreeViewColumnSizes() { - // Do *not* use QHeaderView::ResizeToContents because this cause the - // widget to ask for the data of *all* the rows. - QHeaderView* header = _ui->treeView->header(); - - int margin = _ui->treeView->style()->pixelMetric(QStyle::PM_FocusFrameHMargin) + 1; - - // State - // lst is the list of state with a text, see QtHistory::textForMementoState - QList lst; - lst - << HistoryMemento::IncomingCall - << HistoryMemento::OutgoingCall - << HistoryMemento::MissedCall - << HistoryMemento::RejectedCall - << HistoryMemento::OutgoingSmsOk - << HistoryMemento::ChatSession; - int width = 0; - QFontMetrics fm = _ui->treeView->fontMetrics(); - Q_FOREACH(HistoryMemento::State state, lst) { - QString text = _qtHistory->textForMementoState(state); - width = qMax(width, fm.width(text)); - } - width += _ui->treeView->style()->pixelMetric(QStyle::PM_ListViewIconSize); - header->resizeSection(0, width + 4 * margin); - - // Name - header->resizeSection(1, fm.width("a long long long long username")); - - // Date - QString text = QtHistory::formatDate(QDateTime::currentDateTime()); - width = fm.width(text); - header->resizeSection(2, width + 2 * margin); - - // Duration - text = QtHistory::formatDuration(QTime(20, 0)); - width = fm.width(text); - header->setResizeMode(3, QHeaderView::Interactive); - header->resizeSection(3, width + 2 * margin); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/history/QtHistoryWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTHISTORYWIDGET_H -#define OWQTHISTORYWIDGET_H - -#include - -class QSortFilterProxyModel; -class QModelIndex; - -class CHistory; -class QtCallBar; -class QtHistory; -class QtToolBar; - -namespace Ui { class HistoryWidget; } - -/** - * History Widget. - * - * Shows call/sms/chat history - * - * @author Mathieu Stute - * @author Tanguy Krotoff - */ -class QtHistoryWidget : public QObject { - Q_OBJECT -public: - - QtHistoryWidget(QWidget * parent, QtHistory * qtHistory); - - ~QtHistoryWidget(); - - QWidget * getWidget() const; - - void setQtToolBar(QtToolBar * qtToolBar) { - _qtToolBar = qtToolBar; - } - - void setQtCallBar(QtCallBar * qtCallBar) { - _qtCallBar = qtCallBar; - } - -public Q_SLOTS: - - void retranslateUi(); - -Q_SIGNALS: - - void replayItemRequested(int id); - - void removeItemRequested(int id); - - void missedCallsSeen(); - -private Q_SLOTS: - - void updateCallBarFromIndex(const QModelIndex&); - - void showPopupMenuForCurrentIndex(); - - void emitReplayItemRequested(const QModelIndex&); - -private: - - Ui::HistoryWidget * _ui; - - QWidget * _historyWidget; - - QtToolBar * _qtToolBar; - - QtCallBar * _qtCallBar; - - CHistory & _cHistory; - - QtHistory * _qtHistory; - - QSortFilterProxyModel * _proxyModel; - - void computeTreeViewColumnSizes(); - - int idFromIndex(const QModelIndex& index); -}; - -#endif //OWQTHISTORYWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/HttpProxyLoginWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/HttpProxyLoginWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/HttpProxyLoginWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/HttpProxyLoginWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,437 +0,0 @@ - - - - - HttpProxyLoginWindow - - - - 0 - 0 - 413 - 295 - - - - @product@ - Local HTTP Proxy - - - true - - - - 9 - - - 6 - - - - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - 100 - - - - - - - - - - HTTP Proxy Address: - - - - - - - - - - HTTP Proxy Port Number: - - - - - - - - - - HTTP Proxy Login: - - - - - - - QLineEdit::Password - - - - - - - HTTP Proxy Password: - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 213 - 31 - - - - - - - - OK - - - - - - - Cancel - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - okButton - clicked() - HttpProxyLoginWindow - accept() - - - 252 - 159 - - - 196 - 116 - - - - - cancelButton - clicked() - HttpProxyLoginWindow - reject() - - - 334 - 161 - - - 304 - 107 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/AIMSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/AIMSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/AIMSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/AIMSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ - - - - - AIMSettings - - - - 0 - 0 - 302 - 158 - - - - AIM Settings - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - :/pics/protocols/aim.png - - - - - - - 0 - - - 6 - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Login: - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 22 - - - - - - - - - - - :/pics/help.png - - - - - - - - 1 - 13 - 0 - 0 - - - - Forgot your AIM password? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 1 - 0 - 0 - - - - Get a new AIM Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
- 0 - -
-
- - loginLineEdit - passwordLineEdit - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/FaceBookSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/FaceBookSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/FaceBookSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/FaceBookSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,137 +0,0 @@ - - - FacebookSettings - - - - 0 - 0 - 302 - 279 - - - - Facebook Settings - - - - - - - - Email Address - - - - - - - - 220 - 0 - - - - - - - - Password - - - - - - - - 220 - 0 - - - - QLineEdit::Password - - - - - - - - - Qt::Horizontal - - - - 53 - 20 - - - - - - - - - 0 - 0 - - - - +Get a new Facebook Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 55 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - passwordLineEdit - - - - - - - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/GoogleTalkSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/GoogleTalkSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/GoogleTalkSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/GoogleTalkSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,129 +0,0 @@ - - - GoogleTalkSettings - - - - 0 - 0 - 325 - 149 - - - - GoogleTalk Settings - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - :/pics/protocols/google-talk.png - - - - - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Login: - - - - - - - - - - - Forgot your GoogleTalk password? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - :/pics/help.png - - - - - - - Get a new GoogleTalk Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - passwordLineEdit - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/ICQSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/ICQSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/ICQSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/ICQSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,168 +0,0 @@ - - - - - ICQSettings - - - - 0 - 0 - 302 - 158 - - - - ICQ Settings - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 20 - - - - - - - - :/pics/protocols/icq.png - - - - - - - 0 - - - 6 - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Login: - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 22 - - - - - - - - - - - :/pics/help.png - - - - - - - - 1 - 13 - 0 - 0 - - - - Forgot your ICQ password? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - 1 - 1 - 0 - 0 - - - - Get a new ICQ Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
- 0 - -
-
- - loginLineEdit - passwordLineEdit - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountManager.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountManager.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountManager.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,125 +0,0 @@ - - - - - IMAccountManager - - - - 0 - 0 - 400 - 300 - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - 9 - - - 6 - - - - - - 0 - 70 - - - - 1 - - - false - - - - Protocol - - - - - Login - - - - - - - - 0 - - - 6 - - - - - Delete - - - :/pics/delete.png - - - - - - - Qt::Horizontal - - - - 110 - 26 - - - - - - - - Modify - - - :/pics/edit.png - - - - - - - Close - - - - - - - Add - - - :/pics/add.png - - - - - - - - - - treeWidget - addIMAccountButton - modifyIMAccountButton - deleteIMAccountButton - closeButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountTemplate.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountTemplate.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountTemplate.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/IMAccountTemplate.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,84 +0,0 @@ - - - - - IMAccountTemplate - - - - 0 - 0 - 313 - 119 - - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - IM Account Settings - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Save - - - - - - - Cancel - - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/JabberSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/JabberSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/JabberSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/JabberSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,171 +0,0 @@ - - JabberSettings - - - - 0 - 0 - 405 - 312 - - - - Jabber Settings - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 287 - 16 - - - - - - - - :/pics/protocols/jabber.png - - - - - - - 0 - - - 6 - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Login: - - - - - - - - - 0 - - - 6 - - - - - Connect Server: - - - - - - - 5222 - - - - - - - <u>Advanced Options</u> - - - - - - - Use TLS if available - - - - - - - Port: - - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - - Force old (port 5223) SSL - - - - - - - Require TLS - - - - - - - - - - - - - Resource: - - - - - - - - - loginLineEdit - passwordLineEdit - useTLSCheckBox - requireTLSCheckBox - forceOldSSLCheckBox - allowPlainTextAuthenticationCheckBox - connectServerLineEdit - portLineEdit - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/MSNSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/MSNSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/MSNSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/MSNSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,176 +0,0 @@ - - MSNSettings - - - - 0 - 0 - 301 - 191 - - - - MSN Settings - - - - 9 - - - 6 - - - - - :/pics/protocols/msn.png - - - - - - - 0 - - - 6 - - - - - Password: - - - - - - - - - - Login: - - - - - - - QLineEdit::Password - - - - - - - - - 0 - - - 6 - - - - - Use HTTP method - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 6 - - - - - Forgot your MSN password? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - :/pics/help.png - - - - - - - Get a new MSN Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - passwordLineEdit - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/MySpaceSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/MySpaceSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/MySpaceSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/MySpaceSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ - - - MySpaceSettings - - - - 0 - 0 - 302 - 158 - - - - MySpace Settings - - - - - - - - Email Address - - - - - - - - 220 - 0 - - - - - - - - Password - - - - - - - - 220 - 0 - - - - QLineEdit::Password - - - - - - - - - Qt::Horizontal - - - - 53 - 20 - - - - - - - - - 0 - 0 - - - - + Get a new MySpace Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 65 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 14 - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - passwordLineEdit - - - - - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,99 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAIMSettings.h" - -#include "ui_AIMSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string AIM_FORGOT_PASSWORD_LINK_EN = "http://www.aol.co.uk/aim/faqs/AIM_FAQ_Passwords.htm"; -static const std::string AIM_FORGOT_PASSWORD_LINK_FR = "http://www.aim.aol.fr/oubli.htm"; -static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_EN = "https://my.screenname.aol.com/_cqr/login/login.psp?mcState=initialized&seamless=n&createSn=1&sitedomain=www.aim.com&siteState=http%3A//www.aim.com/get_aim/congratsd2.adp&triedAimAuth=y&promo=380464"; -static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_FR = "https://reg.my.screenname.aol.com/_cqr/registration/initRegistration.psp?mcState=initialized&seamless=n&createSn=1&siteId=aimregPROD-fr&siteState=http%3A%2F%2Faim%2Eaol%2Efr%2Fupgrade%2Ejsp&mcAuth=%2FBcAG0RtoewAAPdvAHyUj0RtoigIxtPj0NfjWwgAAA%3D%3D"; - -QtAIMSettings::QtAIMSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtAIMSettings::~QtAIMSettings() { - OWSAFE_DELETE(_ui); -} - -void QtAIMSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::AIMSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtAIMSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - //FIXME to remove, must be done inside model - params.set(IMAccountParameters::OSCAR_PORT_KEY, 443); -} - -bool QtAIMSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtAIMSettings::forgotPasswordButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_FR); - } else { - WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_EN); - } -} - -void QtAIMSettings::createAccountButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_FR); - } else { - WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_EN); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtAIMSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTAIMSETTINGS_H -#define OWQTAIMSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class AIMSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtAIMSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtAIMSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtAIMSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void forgotPasswordButtonClicked(); - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::AIMSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTAIMSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFaceBookSettings.h" - -#include "ui_FaceBookSettings.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.facebook.com/"; - -QtFacebookSettings::QtFacebookSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtFacebookSettings::~QtFacebookSettings() { - OWSAFE_DELETE(_ui); -} - -void QtFacebookSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::FacebookSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtFacebookSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - -} - -bool QtFacebookSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - - -void QtFacebookSettings::createAccountButtonClicked() { - WebBrowser::openUrl(MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtFaceBookSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFACEBOOKSETTINGS_H -#define OWQTFACEBOOKSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class FacebookSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtFacebookSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtFacebookSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtFacebookSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::FacebookSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtGoogleTalkSettings.h" - -#include "ui_GoogleTalkSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string GOOGLETALK_SERVER = "talk.google.com"; -static const std::string GOOGLETALK_LOGIN_EXTENSION = "gmail.com"; -static const std::string GOOGLETALK_FORGOT_PASSWORD_LINK_EN = "https://www.google.com/accounts/ForgotPasswd?hl=en&continue=http%3A%2F%2Fmail.google.com"; -static const std::string GOOGLETALK_FORGOT_PASSWORD_LINK_FR = "https://www.google.com/accounts/ForgotPasswd?hl=fr&continue=http%3A%2F%2Fmail.google.com"; -static const std::string GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.google.com/talk/index.html"; -static const std::string GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_FR = "http://www.google.com/talk/intl/fr/"; -static const int GOOGLETALK_PORT = 80; - -QtGoogleTalkSettings::QtGoogleTalkSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtGoogleTalkSettings::~QtGoogleTalkSettings() { - OWSAFE_DELETE(_ui); -} - -void QtGoogleTalkSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::GoogleTalkSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtGoogleTalkSettings::setIMAccount() { - static const String AT = "@"; - String tmpLogin = _ui->loginLineEdit->text().toStdString(); - - //Test if login ends with @gmail.com - if (!tmpLogin.contains(AT)) { - tmpLogin = tmpLogin + AT + GOOGLETALK_LOGIN_EXTENSION; - } - - _imAccount.setLogin(tmpLogin); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - params.set(IMAccountParameters::JABBER_USE_TLS_KEY, true); - params.set(IMAccountParameters::JABBER_CONNECTION_SERVER_KEY, GOOGLETALK_SERVER); - params.set(IMAccountParameters::JABBER_PORT_KEY, GOOGLETALK_PORT); -} - -bool QtGoogleTalkSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtGoogleTalkSettings::forgotPasswordButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(GOOGLETALK_FORGOT_PASSWORD_LINK_FR); - } else { - WebBrowser::openUrl(GOOGLETALK_FORGOT_PASSWORD_LINK_EN); - } -} - -void QtGoogleTalkSettings::createAccountButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_FR); - } else { - WebBrowser::openUrl(GOOGLETALK_CREATE_NEW_ACCOUNT_LINK_EN); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtGoogleTalkSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTGOOGLETALKSETTINGS_H -#define OWQTGOOGLETALKSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class GoogleTalkSettings; } - -/** - * GoogleTalk settings for the user. - * - * @author Tanguy Krotoff - */ -class QtGoogleTalkSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtGoogleTalkSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtGoogleTalkSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void forgotPasswordButtonClicked(); - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::GoogleTalkSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTGOOGLETALKSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtICQSettings.h" - -#include "ui_ICQSettings.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string AIM_FORGOT_PASSWORD_LINK_EN = "https://www.icq.com/password/"; -static const std::string AIM_CREATE_NEW_ACCOUNT_LINK_EN = "https://www.icq.com/register/"; - -QtICQSettings::QtICQSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtICQSettings::~QtICQSettings() { - OWSAFE_DELETE(_ui); -} - -void QtICQSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::ICQSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtICQSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - //FIXME to remove, must be done inside model - params.set(IMAccountParameters::OSCAR_PORT_KEY, 443); -} - -bool QtICQSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtICQSettings::forgotPasswordButtonClicked() { - WebBrowser::openUrl(AIM_FORGOT_PASSWORD_LINK_EN); -} - -void QtICQSettings::createAccountButtonClicked() { - WebBrowser::openUrl(AIM_CREATE_NEW_ACCOUNT_LINK_EN); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtICQSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTICQSETTINGS_H -#define OWQTICQSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class ICQSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtICQSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtICQSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtICQSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void forgotPasswordButtonClicked(); - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::ICQSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,203 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountManager.h" - -#include "ui_IMAccountManager.h" - -#include "QtIMAccountSettings.h" - -#include -#include - -#include -#include - -#include - -#include - -QtIMAccountManager::QtIMAccountManager(UserProfile & userProfile, bool showAsDialog, QWidget * parent) - : QObject(parent), - _userProfile(userProfile) { - - if (showAsDialog) { - _imAccountManagerWidget = new QDialog(parent); - } else { - _imAccountManagerWidget = new QWidget(parent); - } - - _ui = new Ui::IMAccountManager(); - _ui->setupUi(_imAccountManagerWidget); - - QMenu * addIMAccountMenu = new QMenu(_ui->addIMAccountButton); - SAFE_CONNECT(addIMAccountMenu, SIGNAL(triggered(QAction *)), SLOT(addIMAccount(QAction *))); - - addIMAccountMenu->addAction(QIcon(":pics/protocols/msn.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMSN)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/aim.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolAIM)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/icq.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolICQ)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/yahoo.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolYahoo)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/jabber.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolJabber)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/google-talk.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolGoogleTalk)); -#if defined(ENABLE_FACEBOOK) - addIMAccountMenu->addAction(QIcon(":pics/protocols/facebook.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolFaceBook)); -#endif -#if defined(ENABLE_MYSPACE) - addIMAccountMenu->addAction(QIcon(":pics/protocols/myspace.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMySpace)); -#endif -#if defined(ENABLE_SKYPE) - addIMAccountMenu->addAction(QIcon(":pics/protocols/skype.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolSkype)); -#endif -#if defined(ENABLE_TWITTER) - addIMAccountMenu->addAction(QIcon(":pics/protocols/twitter.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolTwitter)); -#endif - _ui->addIMAccountButton->setMenu(addIMAccountMenu); - - SAFE_CONNECT(_ui->modifyIMAccountButton, SIGNAL(clicked()), SLOT(modifyIMAccount())); - - SAFE_CONNECT(_ui->deleteIMAccountButton, SIGNAL(clicked()), SLOT(deleteIMAccount())); - - if (showAsDialog) { - SAFE_CONNECT_RECEIVER(_ui->closeButton, SIGNAL(clicked()), _imAccountManagerWidget, SLOT(accept())); - } else { - _imAccountManagerWidget->layout()->setMargin(0); - _imAccountManagerWidget->layout()->setSpacing(0); - _ui->closeButton->hide(); - } - - SAFE_CONNECT(_ui->treeWidget, SIGNAL(itemDoubleClicked(QTreeWidgetItem *, int)), - SLOT(itemDoubleClicked(QTreeWidgetItem *, int))); - - SAFE_CONNECT(_ui->treeWidget, SIGNAL(itemSelectionChanged()), - SLOT(updateButtons())); - - loadIMAccounts(); - updateButtons(); - - if (showAsDialog) { - ((QDialog *) _imAccountManagerWidget)->exec(); - } -} - -QtIMAccountManager::~QtIMAccountManager() { - OWSAFE_DELETE(_ui); -} - -void QtIMAccountManager::loadIMAccounts() { - _ui->treeWidget->clear(); - - IMAccountList imAccountList = _userProfile.getIMAccountManager().getIMAccountListCopy(); - - for (IMAccountList::iterator it = imAccountList.begin(); it != imAccountList.end(); it++) { - IMAccount imAccount = (IMAccount &) (*it); - QStringList accountStrList; - - // protocol - EnumIMProtocol::IMProtocol imProtocol = imAccount.getProtocol(); - if ((imProtocol == EnumIMProtocol::IMProtocolWengo) || - (imProtocol == EnumIMProtocol::IMProtocolSIP)){ - //only IM account should be shown - continue; - } - accountStrList << QString::fromStdString(EnumIMProtocol::toString(imProtocol)); - //// - - // login - accountStrList << QString::fromStdString(imAccount.getLogin()); - //// - accountStrList << QString::null; - - QTreeWidgetItem * item = new QTreeWidgetItem(_ui->treeWidget, accountStrList); - QString id = QString::fromStdString(imAccount.getUUID()); - item->setData(0, Qt::UserRole, id); - } -} - -void QtIMAccountManager::addIMAccount(QAction * action) { - QString protocolName = action->text(); - LOG_DEBUG(protocolName.toStdString()); - - QtEnumIMProtocol::IMProtocol imProtocol = QtEnumIMProtocol::toIMProtocol(protocolName); - QtIMAccountSettings * imAccountSettings = new QtIMAccountSettings(_userProfile, imProtocol, _imAccountManagerWidget); - loadIMAccounts(); - OWSAFE_DELETE(imAccountSettings); -} - -std::auto_ptr QtIMAccountManager::getIMAccountFromItem(QTreeWidgetItem* item) { - if (!item) { - return std::auto_ptr(0); - } - std::string id = item->data(0, Qt::UserRole).toString().toStdString(); - return std::auto_ptr(_userProfile.getIMAccountManager().getIMAccount(id)); -} - -void QtIMAccountManager::deleteIMAccount() { - QTreeWidgetItem* item = _ui->treeWidget->currentItem(); - std::auto_ptr imAccount = getIMAccountFromItem(item); - if (!imAccount.get()) { - return; - } - int buttonClicked = - QMessageBox::question(_imAccountManagerWidget, - tr("@product@"), - tr("Are sure you want to delete this account?\n") + - QString::fromStdString(imAccount->getLogin()), - tr("&Delete"), tr("Cancel")); - - //Button delete clicked - if (buttonClicked == 0) { - _userProfile.removeIMAccount(*imAccount); - } - delete item; -} - -void QtIMAccountManager::modifyIMAccount() { - QTreeWidgetItem* item = _ui->treeWidget->currentItem(); - std::auto_ptr imAccount = getIMAccountFromItem(item); - if (!imAccount.get()) { - return; - } - QtIMAccountSettings * imAccountSettings = - new QtIMAccountSettings(_userProfile, *imAccount.get(), _imAccountManagerWidget); - OWSAFE_DELETE(imAccountSettings); - - imAccount = getIMAccountFromItem(item); - item->setText(1, QString::fromStdString(imAccount->getLogin())); -} - -void QtIMAccountManager::itemDoubleClicked(QTreeWidgetItem * item, int column) { - _ui->treeWidget->setCurrentItem(item); - modifyIMAccount(); -} - -void QtIMAccountManager::updateButtons() { - bool itemSelected = _ui->treeWidget->selectedItems().count() != 0; - _ui->modifyIMAccountButton->setEnabled(itemSelected); - _ui->deleteIMAccountButton->setEnabled(itemSelected); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTIMACCOUNTMANAGER_H -#define QTIMACCOUNTMANAGER_H - -#include - -#include - -#include - -class CWengoPhone; -class IMAccount; -class UserProfile; - -class QWidget; -class QAction; -class QTreeWidget; -class QTreeWidgetItem; - -namespace Ui { class IMAccountManager; } - -/** - * Manages IM accounts: add/delete/modify IM accounts. - * - * Can be an embedded widget or a separated window. - * - * Very similar to QtIMContactManager but for IM accounts. - * - * @see QtIMContactManager - * @see UserProfile - * @see IMAccount - * @author Tanguy Krotoff - */ -class QtIMAccountManager : public QObject, NonCopyable { - Q_OBJECT -public: - - QtIMAccountManager(UserProfile & userProfile, bool showAsDialog, QWidget * parent); - - ~QtIMAccountManager(); - - QWidget * getWidget() const { - return _imAccountManagerWidget; - } - -private Q_SLOTS: - - void addIMAccount(QAction * action); - - void deleteIMAccount(); - - void modifyIMAccount(); - - void itemDoubleClicked(QTreeWidgetItem * item, int column); - - void updateButtons(); - -private: - - void loadIMAccounts(); - - UserProfile & _userProfile; - - Ui::IMAccountManager * _ui; - - QWidget * _imAccountManagerWidget; - - std::auto_ptr getIMAccountFromItem(QTreeWidgetItem*); -}; - -#endif //QTIMACCOUNTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountPlugin.h" - -#include -#include - -#include - -#include - -QtIMAccountPlugin::QtIMAccountPlugin(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QObject(parent), - _imAccount(imAccount), - _userProfile(userProfile) { - - _parentDialog = parent; -} - -void QtIMAccountPlugin::checkAndSave() { - if (isValid()) { - save(); - _parentDialog->accept(); - } else { - QMessageBox::critical(_parentDialog, tr("@product@"), - tr("Please enter a login"), QMessageBox::Ok, QMessageBox::NoButton); - } -} - -void QtIMAccountPlugin::save() { - // Check if this an IMAccount update or an IMAccount creation - bool update = !_imAccount.getLogin().empty(); - - setIMAccount(); - - if (update) { - _userProfile.getConnectHandler().disconnect(_imAccount.getUUID()); - _userProfile.updateIMAccount(_imAccount); - _userProfile.getConnectHandler().connect(_imAccount.getUUID()); - } else { - _userProfile.addIMAccount(_imAccount); - _userProfile.getConnectHandler().connect(_imAccount.getUUID()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountPlugin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTIMACCOUNTPLUGIN_H -#define QTIMACCOUNTPLUGIN_H - -#include - -#include - -class IMAccount; -class UserProfile; -class QDialog; - -/** - * Interface for IM accounts (MSN, AIM, Yahoo, Jabber...). - * - * @author Tanguy Krotoff - */ -class QtIMAccountPlugin : public QObject, Interface { - Q_OBJECT -public: - - QtIMAccountPlugin(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - virtual QWidget * getWidget() const = 0; - - /** - * @return true if entered value are valid. - */ - virtual bool isValid() const = 0; - - /** - * Sets entered data on IMAccount. - */ - virtual void setIMAccount() = 0; - -public Q_SLOTS: - - void checkAndSave(); - -protected: - - virtual void init() = 0; - - /** - * Saves the entered data. - */ - void save(); - - IMAccount & _imAccount; - - UserProfile & _userProfile; - - QDialog * _parentDialog; -}; - -#endif //QTIMACCOUNTPLUGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,153 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountSettings.h" - -#include "ui_IMAccountTemplate.h" - -#include "QtIMAccountPlugin.h" -#include "QtMSNSettings.h" -#include "QtAIMSettings.h" -#include "QtICQSettings.h" -#include "QtYahooSettings.h" -#include "QtJabberSettings.h" -#include "QtGoogleTalkSettings.h" - -#include "QtFaceBookSettings.h" -#include "QtMySpaceSettings.h" -#include "QtSkypeSettings.h" -#include "QtTwitterSettings.h" - -#include - -#include -#include -#include -#include - -#include -#include - -#include -#include - -#include - -QtIMAccountSettings::QtIMAccountSettings(UserProfile & userProfile, - IMAccount imAccount, QWidget * parent) - : QObject(parent), - _userProfile(userProfile) { - - _imAccountPlugin = NULL; - _imAccount = imAccount; - createIMProtocolWidget(parent, QtEnumIMProtocol::toIMProtocol(imAccount.getProtocol())); -} - -QtIMAccountSettings::QtIMAccountSettings(UserProfile & userProfile, - QtEnumIMProtocol::IMProtocol imProtocol, QWidget * parent) - : QObject(parent), - _userProfile(userProfile) { - - _imAccountPlugin = NULL; - _imAccount = IMAccount(QtEnumIMProtocol::toModelIMProtocol(imProtocol)); - - // Init _imAccount parameters - std::string imAccountParametersData = UserProfileFileStorage::loadSystemIMAccountParametersData(); - IMAccountParametersXMLSerializer serializer(_imAccount.getIMAccountParameters()); - serializer.unserializeSystemSettings(imAccountParametersData); - - createIMProtocolWidget(parent, imProtocol); -} - -void QtIMAccountSettings::createIMProtocolWidget(QWidget * parent, - QtEnumIMProtocol::IMProtocol imProtocol) { - QDialog * imAccountTemplateWindow = new QDialog(parent); - - _ui = new Ui::IMAccountTemplate(); - _ui->setupUi(imAccountTemplateWindow); - - switch (imProtocol) { - case QtEnumIMProtocol::IMProtocolMSN: { - _imAccountPlugin = new QtMSNSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolYahoo: { - _imAccountPlugin = new QtYahooSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolAIM: { - _imAccountPlugin = new QtAIMSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolICQ: { - _imAccountPlugin = new QtICQSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolJabber: { - _imAccountPlugin = new QtJabberSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolGoogleTalk: { - _imAccountPlugin = new QtGoogleTalkSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolFaceBook: { - _imAccountPlugin = new QtFacebookSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolMySpace: { - _imAccountPlugin = new QtMySpaceSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - case QtEnumIMProtocol::IMProtocolSkype: { - _imAccountPlugin = new QtSkypeSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - case QtEnumIMProtocol::IMProtocolTwitter: { - _imAccountPlugin = new QtTwitterSettings(_userProfile, _imAccount, imAccountTemplateWindow); - break; - } - - default: - LOG_FATAL("unknown IM protocol=" + String::fromNumber(imProtocol)); - } - - //saveButton - SAFE_CONNECT_RECEIVER(_ui->saveButton, SIGNAL(clicked()), - _imAccountPlugin, SLOT(checkAndSave())); - - //cancelButton - SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), - imAccountTemplateWindow, SLOT(reject())); - - QWidget * imProtocolWidget = _imAccountPlugin->getWidget(); - Widget::createLayout(_ui->settingsGroupBox)->addWidget(imProtocolWidget); - _ui->settingsGroupBox->setTitle(imProtocolWidget->windowTitle()); - - imAccountTemplateWindow->setWindowTitle(imProtocolWidget->windowTitle()); - imAccountTemplateWindow->exec(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtIMAccountSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTIMACCOUNTSETTINGS_H -#define QTIMACCOUNTSETTINGS_H - -#include - -#include - -#include - -class QtIMAccountPlugin; -class UserProfile; - -class QWidget; -namespace Ui { class IMAccountTemplate; } - -/** - * Handles QtIMAccountPlugin: IM accounts (MSN, Yahoo, Jabber, AIM...). - * - * @author Tanguy Krotoff - */ -class QtIMAccountSettings : public QObject { - Q_OBJECT -public: - - QtIMAccountSettings(UserProfile & userProfile, - IMAccount imAccount, QWidget * parent); - - QtIMAccountSettings(UserProfile & userProfile, - QtEnumIMProtocol::IMProtocol imProtocol, QWidget * parent); - -private: - - void createIMProtocolWidget(QWidget * parent, QtEnumIMProtocol::IMProtocol imProtocol); - - Ui::IMAccountTemplate * _ui; - - IMAccount _imAccount; - - UserProfile & _userProfile; - - QtIMAccountPlugin * _imAccountPlugin; -}; - -#endif //QTIMACCOUNTSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,145 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtJabberSettings.h" - -#include "ui_JabberSettings.h" - -#include -#include - -#include -#include - -#include - -#include - -#include - -#include -#include -#include - -#define toolTipText "user@jabber.server.com" - -QtJabberSettings::QtJabberSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtJabberSettings::~QtJabberSettings() { - OWSAFE_DELETE(_ui); -} - -void QtJabberSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::JabberSettings(); - _ui->setupUi(_IMSettingsWidget); - - _ui->loginLineEdit->installEventFilter(this); - _originalPalette = _ui->loginLineEdit->palette(); - _greyPalette.setColor(QPalette::Text, Qt::gray); - _toolTip = tr(toolTipText); - _toolTipShown = false; - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - - QString fullLogin = QString::fromStdString(_imAccount.getLogin()); - // Hackish way to edit the resource in a more explicit way. There really - // should be another Jabber param in IMAccountParameters to store it. - QString login = fullLogin.section('/', 0, 0); - QString resource = fullLogin.section('/', 1); - if (resource.isEmpty()) { - resource = BINARY_NAME; - } - - if (login.isEmpty()) - showToolTip(); - else - _ui->loginLineEdit->setText(login); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); - _ui->useTLSCheckBox->setChecked(params.isJabberTLSUsed()); - _ui->requireTLSCheckBox->setChecked(params.isJabberTLSRequired()); - _ui->forceOldSSLCheckBox->setChecked(params.isJabberOldSSLUsed()); - _ui->allowPlainTextAuthenticationCheckBox->setChecked(params.isJabberAuthPlainInClearUsed()); - _ui->connectServerLineEdit->setText(QString::fromStdString(params.getJabberConnectionServer())); - _ui->portLineEdit->setText(QString("%1").arg(params.getJabberServerPort())); - _ui->resourceLineEdit->setText(resource); -} - -bool QtJabberSettings::isValid() const { - - if (_toolTipShown) - return false; - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtJabberSettings::setIMAccount() { - std::string login = _ui->loginLineEdit->text().toStdString(); - std::string resource = _ui->resourceLineEdit->text().toStdString(); - if (!resource.empty()) { - login += '/' + resource; - } - std::string password = _ui->passwordLineEdit->text().toStdString(); - - _imAccount.setLogin(login); - _imAccount.setPassword(password); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - params.set(IMAccountParameters::JABBER_USE_TLS_KEY, _ui->useTLSCheckBox->isChecked()); - params.set(IMAccountParameters::JABBER_REQUIRE_TLS_KEY, _ui->requireTLSCheckBox->isChecked()); - params.set(IMAccountParameters::JABBER_USE_OLD_SSL_KEY, _ui->forceOldSSLCheckBox->isChecked()); - params.set(IMAccountParameters::JABBER_AUTH_PLAIN_IN_CLEAR_KEY, _ui->allowPlainTextAuthenticationCheckBox->isChecked()); - params.set(IMAccountParameters::JABBER_CONNECTION_SERVER_KEY, _ui->connectServerLineEdit->text().toStdString()); - params.set(IMAccountParameters::JABBER_PORT_KEY, _ui->portLineEdit->text().toInt()); -} - -bool QtJabberSettings::eventFilter(QObject *obj, QEvent *ev) -{ - if (obj == _ui->loginLineEdit) - { - if (ev->type() == QEvent::FocusIn) - { - if (_toolTipShown) - hideToolTip(); - } - if (ev->type() == QEvent::FocusOut) - { - if (_ui->loginLineEdit->text().isEmpty()) - showToolTip(); - } - } - return false; -} - -void QtJabberSettings::showToolTip() -{ - _ui->loginLineEdit->setPalette(_greyPalette); - _ui->loginLineEdit->setText(_toolTip); - _toolTipShown = true; -} - -void QtJabberSettings::hideToolTip() -{ - _ui->loginLineEdit->setPalette(_originalPalette); - _ui->loginLineEdit->clear(); - _toolTipShown = false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtJabberSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,79 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTJABBERSETTINGS_H -#define OWQTJABBERSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include -#include -#include -#include -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class JabberSettings; } - -/** - * Jabber settings for the user. - * - * @author Tanguy Krotoff - */ -class QtJabberSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtJabberSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtJabberSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -private: - - void init(); - - bool eventFilter(QObject *obj, QEvent *ev); - - void showToolTip(); - - void hideToolTip(); - - Ui::JabberSettings * _ui; - - QWidget * _IMSettingsWidget; - - QString _toolTip; - - QPalette _originalPalette; - - QPalette _greyPalette; - - bool _toolTipShown; -}; - -#endif //OWQTJABBERSTTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtMSNSettings.h" - -#include "ui_MSNSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string MSN_LOGIN_DEFAULT_EXTENSION = "hotmail.com"; -static const std::string MSN_FORGOT_PASSWORD_LINK_EN = "https://accountservices.passport.net/uiresetpw.srf?lc=1033"; -static const std::string MSN_FORGOT_PASSWORD_LINK_FR = "https://accountservices.passport.net/uiresetpw.srf?lc=1036"; -static const std::string MSN_CREATE_NEW_ACCOUNT_LINK_EN = "https://accountservices.passport.net/reg.srf?bk=1148037006&cru=https://accountservices.passport.net/uiresetpw.srf%3flc%3d1033&lc=1033&sl=1"; -static const std::string MSN_CREATE_NEW_ACCOUNT_LINK_FR = "https://accountservices.passport.net/reg.srf?id=9&cbid=956&sl=1&lc=1036"; - -QtMSNSettings::QtMSNSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtMSNSettings::~QtMSNSettings() { - OWSAFE_DELETE(_ui); -} - -void QtMSNSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::MSNSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - _ui->useHttpMethodCheckBox->setChecked(params.isMSNHttpUsed()); -} - -void QtMSNSettings::setIMAccount() { - static const std::string AT = "@"; - String tmpLogin = _ui->loginLineEdit->text().toStdString(); - - //Test if login ends with @hotmail.com - if (!tmpLogin.contains(AT)) { - tmpLogin = tmpLogin + AT + MSN_LOGIN_DEFAULT_EXTENSION; - } - - _imAccount.setLogin(tmpLogin); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - //FIXME to remove, must be done inside model - params.set(IMAccountParameters::MSN_USE_HTTP_KEY, _ui->useHttpMethodCheckBox->isChecked()); -} - -bool QtMSNSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtMSNSettings::forgotPasswordButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(MSN_FORGOT_PASSWORD_LINK_FR); - } else { - WebBrowser::openUrl(MSN_FORGOT_PASSWORD_LINK_EN); - } -} - -void QtMSNSettings::createAccountButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(MSN_CREATE_NEW_ACCOUNT_LINK_FR); - } else { - WebBrowser::openUrl(MSN_CREATE_NEW_ACCOUNT_LINK_EN); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMSNSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTMSNSETTINGS_H -#define OWQTMSNSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class MSNSettings; } - -/** - * MSN settings for the user. - * - * @author Tanguy Krotoff - */ -class QtMSNSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtMSNSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtMSNSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual void setIMAccount(); - - virtual bool isValid() const; - -public Q_SLOTS: - - void forgotPasswordButtonClicked(); - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::MSNSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTMSNSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtMySpaceSettings.h" - -#include "ui_MySpaceSettings.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN = "http://signups.myspace.com/index.cfm?fuseaction=signup"; - -QtMySpaceSettings::QtMySpaceSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtMySpaceSettings::~QtMySpaceSettings() { - OWSAFE_DELETE(_ui); -} - -void QtMySpaceSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::MySpaceSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtMySpaceSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - -} - -bool QtMySpaceSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - - -void QtMySpaceSettings::createAccountButtonClicked() { - WebBrowser::openUrl(MYSPACE_CREATE_NEW_ACCOUNT_LINK_EN); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtMySpaceSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTMYSPACESETTINGS_H -#define OWQTMYSPACESETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class MySpaceSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtMySpaceSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtMySpaceSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtMySpaceSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::MySpaceSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSkypeSettings.h" - -#include "ui_SkypeSettings.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string SKYPE_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.skype.com/"; - -QtSkypeSettings::QtSkypeSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtSkypeSettings::~QtSkypeSettings() { - OWSAFE_DELETE(_ui); -} - -void QtSkypeSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::SkypeSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - _ui->createAccountLabel->setVisible(false);//VOXOX CHANGE by Rolando - 2009.07.24 - Modified to complete task "Update Skype Settings window popup" - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - //_ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtSkypeSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - //VOXOX CHANGE CJC SKYPE PLUGGING DOES NOT NEED A PASSWORD - _imAccount.setPassword(""); - -} - -bool QtSkypeSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - - -void QtSkypeSettings::createAccountButtonClicked() { - WebBrowser::openUrl(SKYPE_CREATE_NEW_ACCOUNT_LINK_EN); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtSkypeSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSKYPESETTINGS_H -#define OWQTSKYPESETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class SkypeSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtSkypeSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtSkypeSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtSkypeSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::SkypeSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtTwitterSettings.h" - -#include "ui_TwitterSettings.h" - -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string TWITTER_CREATE_NEW_ACCOUNT_LINK_EN = "http://www.twitter.com/"; - -QtTwitterSettings::QtTwitterSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtTwitterSettings::~QtTwitterSettings() { - OWSAFE_DELETE(_ui); -} - -void QtTwitterSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::TwitterSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -void QtTwitterSettings::setIMAccount() { - _imAccount.setLogin(_ui->loginLineEdit->text().toStdString()); - _imAccount.setPassword(_ui->passwordLineEdit->text().toStdString()); - -} - -bool QtTwitterSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - - -void QtTwitterSettings::createAccountButtonClicked() { - WebBrowser::openUrl(TWITTER_CREATE_NEW_ACCOUNT_LINK_EN); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtTwitterSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTTWITTERSETTINGS_H -#define OWQTTWITTERSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class TwitterSettings; } - -/** - * AIM settings for the user. - * - * @author Tanguy Krotoff - */ -class QtTwitterSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtTwitterSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtTwitterSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::TwitterSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTICQSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtYahooSettings.h" - -#include "ui_YahooSettings.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -static const std::string YAHOO_FORGOT_PASSWORD_LINK_EN = "http://edit.yahoo.com/config/eval_forgot_pw?.src=pg&.done=http://messenger.yahoo.com/&.redir_from=MESSENGER"; -static const std::string YAHOO_FORGOT_PASSWORD_LINK_FR = "http://edit.yahoo.com/config/eval_forgot_pw?.src=pg&.done=http://fr.messenger.yahoo.com&.intl=fr&.redir_from=MESSENGER"; -static const std::string YAHOO_CREATE_NEW_ACCOUNT_LINK_EN = "http://login.yahoo.com/config/login?.done=http://messenger.yahoo.com&.src=pg"; -static const std::string YAHOO_CREATE_NEW_ACCOUNT_LINK_FR = "https://edit.yahoo.com/config/eval_register?.intl=fr&.done=http://fr.messenger.yahoo.com&.src=pg"; - -QtYahooSettings::QtYahooSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent) - : QtIMAccountPlugin(userProfile, imAccount, parent) { - - init(); -} - -QtYahooSettings::~QtYahooSettings() { - OWSAFE_DELETE(_ui); -} - -void QtYahooSettings::init() { - _IMSettingsWidget = new QWidget(_parentDialog); - - _ui = new Ui::YahooSettings(); - _ui->setupUi(_IMSettingsWidget); - - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString&)), SLOT(forgotPasswordButtonClicked())); - - SAFE_CONNECT(_ui->createAccountLabel, SIGNAL(linkActivated(const QString&)), SLOT(createAccountButtonClicked())); - - _ui->loginLineEdit->setText(QString::fromStdString(_imAccount.getLogin())); - _ui->passwordLineEdit->setText(QString::fromStdString(_imAccount.getPassword())); -} - -bool QtYahooSettings::isValid() const { - return !_ui->loginLineEdit->text().isEmpty(); -} - -void QtYahooSettings::setIMAccount() { - String login = _ui->loginLineEdit->text().toStdString(); - std::string password = _ui->passwordLineEdit->text().toStdString(); - - //static const String AT = "@"; - - //Test if login ends with @ - /*if (login.contains(AT)) { - std::string::size_type posAT = login.find(AT); - if (posAT != std::string::npos) { - login = login.substr(0, posAT); - } - }*/ - - _imAccount.setLogin(login); - _imAccount.setPassword(password); - - IMAccountParameters & params = _imAccount.getIMAccountParameters(); - params.set(IMAccountParameters::YAHOO_IS_JAPAN_KEY, _ui->useJapanServerCheckBox->isChecked()); - //FIXME to remove, must be done inside model - params.set(IMAccountParameters::YAHOO_PORT_KEY, 23); -} - -void QtYahooSettings::forgotPasswordButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(YAHOO_FORGOT_PASSWORD_LINK_FR); - } else { - WebBrowser::openUrl(YAHOO_FORGOT_PASSWORD_LINK_EN); - } -} - -void QtYahooSettings::createAccountButtonClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string lang = config.getLanguage(); - - if (lang == "fr") { - WebBrowser::openUrl(YAHOO_CREATE_NEW_ACCOUNT_LINK_FR); - } else { - WebBrowser::openUrl(YAHOO_CREATE_NEW_ACCOUNT_LINK_EN); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/QtYahooSettings.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTYAHOOSETTINGS_H -#define OWQTYAHOOSETTINGS_H - -#include "QtIMAccountPlugin.h" - -#include - -class IMAccount; -class UserProfile; - -class QWidget; -namespace Ui { class YahooSettings; } - -/** - * Yahoo! settings for the user. - * - * @author Tanguy Krotoff - */ -class QtYahooSettings : public QtIMAccountPlugin { - Q_OBJECT -public: - - QtYahooSettings(UserProfile & userProfile, IMAccount & imAccount, QDialog * parent); - - ~QtYahooSettings(); - - QWidget * getWidget() const { - return _IMSettingsWidget; - } - - virtual bool isValid() const; - - virtual void setIMAccount(); - -public Q_SLOTS: - - void forgotPasswordButtonClicked(); - - void createAccountButtonClicked(); - -private: - - void init(); - - Ui::YahooSettings * _ui; - - QWidget * _IMSettingsWidget; -}; - -#endif //OWQTYAHOOSETTINGS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/SkypeSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/SkypeSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/SkypeSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/SkypeSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ - - - SkypeSettings - - - - 0 - 0 - 302 - 158 - - - - Skype Settings - - - - - - - - Skype Id - - - - - - - - 220 - 0 - - - - - - - - - - Qt::Horizontal - - - - 53 - 20 - - - - - - - - - 0 - 0 - - - - + Get a new Skype Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 53 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 60 - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - - - - - - - - - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/TwitterSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/TwitterSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/TwitterSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/TwitterSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,139 +0,0 @@ - - - TwitterSettings - - - - 0 - 0 - 302 - 158 - - - - Twitter Settings - - - - - - - - Email Address - - - - - - - - 220 - 0 - - - - - - - - Password - - - - - - - - 220 - 0 - - - - QLineEdit::Password - - - - - - - - - Qt::Horizontal - - - - 53 - 20 - - - - - - - - - 0 - 0 - - - - + Get a new Twitter Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 75 - 20 - - - - - - - - Qt::Vertical - - - - 20 - 17 - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - loginLineEdit - passwordLineEdit - - - - - - - - - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/YahooSettings.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/YahooSettings.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imaccount/YahooSettings.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imaccount/YahooSettings.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,201 +0,0 @@ - - - - - YahooSettings - - - - 0 - 0 - 275 - 226 - - - - Yahoo! Settings - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 189 - 16 - - - - - - - - Use Yahoo! Japan server - - - - - - - Qt::Vertical - - - QSizePolicy::Fixed - - - - 189 - 16 - - - - - - - - - - 0 - - - 6 - - - - - Password: - - - - - - - QLineEdit::Password - - - - - - - - - - Login: - - - - - - - - - Qt::Vertical - - - - 20 - 16 - - - - - - - - :/pics/protocols/yahoo.png - - - - - - - 0 - - - 6 - - - - - Forgot your Yahoo! password? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - - - - :/pics/help.png - - - - - - - Get a new Yahoo! Account - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
- 0 - -
-
- - loginLineEdit - passwordLineEdit - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/AddIMContact.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/AddIMContact.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/AddIMContact.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/AddIMContact.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,162 +0,0 @@ - - - - - AddIMContact - - - - 0 - 0 - 394 - 247 - - - - @product@ - Add a Contact Account - - - - 9 - - - 6 - - - - - Contact Type (protocol): - - - - - - - - - - - - - Contact ID: - - - - - - - Account: - - - - - - - - Enable - - - - - Login - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Add - - - :/pics/add.png - - - - - - - Cancel - - - :/pics/cancel.png - - - - - - - - - - - - - - addIMContactButton - clicked() - AddIMContact - accept() - - - 248 - 251 - - - 96 - 254 - - - - - cancelButton - clicked() - AddIMContact - reject() - - - 331 - 251 - - - 179 - 282 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/IMContactManager.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/IMContactManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/IMContactManager.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/IMContactManager.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,107 +0,0 @@ - - - - - IMContactManager - - - - 0 - 0 - 305 - 171 - - - - - 0 - - - 6 - - - - - 0 - - - 6 - - - - - Delete - - - :/pics/delete.png - - - - - - - Add - - - :/pics/add.png - - - - - - - Qt::Horizontal - - - - 165 - 24 - - - - - - - - - - - 0 - 70 - - - - false - - - - Contact ID - - - - - Contact Type (protocol) - - - - - - - - Click on the add button below to add a new ID - - - - - - - - treeWidget - addIMContactButton - deleteIMContactButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,197 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAddIMContact.h" - -#include "ui_AddIMContact.h" - -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include - -#include - -QtAddIMContact::QtAddIMContact(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent) - : QObject(parent), - _contactProfile(contactProfile), - _cUserProfile(cUserProfile) { - - _addIMContactWindow = new QDialog(parent); - - _ui = new Ui::AddIMContact(); - _ui->setupUi(_addIMContactWindow); - -#ifdef CUSTOM_ACCOUNT - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/wengo.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolWengo))); -#endif - - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/sip.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSIP))); - -#ifdef MULTIIMWRAPPER - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/msn.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolMSN))); - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/aim.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolAIM))); - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/icq.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolICQ))); - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/yahoo.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolYahoo))); - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/jabber.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolJabber))); - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/google-talk.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolGoogleTalk))); - -#if defined(ENABLE_FACEBOOK) - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/facebook.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolFaceBook))); -#endif -#if defined(ENABLE_MYSPACE) - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/myspace.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolMySpace))); -#endif -#if defined(ENABLE_SKYPE) - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/skype.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolSkype))); -#endif -#if defined(ENABLE_TWITTER) - _ui->protocolComboBox->addItem(QIcon(":pics/protocols/twitter.png"), - QString::fromStdString(EnumIMProtocol::toString(EnumIMProtocol::IMProtocolTwitter))); -#endif -#endif //MULTIIMWRAPPER - - connect(_ui->protocolComboBox, SIGNAL(currentIndexChanged(const QString &)), - SLOT(imProtocolChanged(const QString &))); - - connect(_ui->addIMContactButton, SIGNAL(clicked()), SLOT(addIMContact())); - - show(); -} - -QtAddIMContact::~QtAddIMContact() { - delete _ui; -} - -int QtAddIMContact::show() { - imProtocolChanged(_ui->protocolComboBox->currentText()); - return _addIMContactWindow->exec(); -} - -void QtAddIMContact::addIMContact() { - QString contactId = _ui->contactIdLineEdit->text().trimmed(); - - if (contactId.isEmpty()) { - return; - } - - QString protocolName = _ui->protocolComboBox->currentText(); - - EnumIMProtocol::IMProtocol imProtocol = EnumIMProtocol::toIMProtocol(protocolName.toStdString()); - - // sip contact should know their domain - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString wengoSuffix = "@" + QString::fromStdString( config.getWengoRealm() ); - if (imProtocol == EnumIMProtocol::IMProtocolWengo) { - contactId += wengoSuffix; - } else if (imProtocol == EnumIMProtocol::IMProtocolSIP) { - if (!contactId.contains("@")) { - SipAccount * sipaccount = _cUserProfile.getUserProfile().getSipAccount(); - if (sipaccount) { - contactId += QString("@") + QString::fromStdString(sipaccount->getRealm()); - } - } - } - //// - - IMContact imContact(imProtocol, contactId.toStdString()); - - IMAccountList imAccounts = getSelectedIMAccounts(imProtocol); - - if (imAccounts.empty()) { - _contactProfile.addIMContact(imContact); - } - - for (IMAccountList::const_iterator it = imAccounts.begin(); - it != imAccounts.end(); ++it) { - - IMAccount * imAccount = - _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount((*it).getUUID()); - imContact.setIMAccount(imAccount); - _contactProfile.addIMContact(imContact); - OWSAFE_DELETE(imAccount); - } -} - -void QtAddIMContact::imProtocolChanged(const QString & protocolName) { - loadIMAccounts(EnumIMProtocol::toIMProtocol(protocolName.toStdString())); -} - -void QtAddIMContact::loadIMAccounts(EnumIMProtocol::IMProtocol imProtocol) { - _ui->treeWidget->clear(); - - IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); - - for (IMAccountList::const_iterator it = imAccounts.begin(); - it != imAccounts.end(); ++it) { - - QTreeWidgetItem * item = new QTreeWidgetItem(_ui->treeWidget); - - //By default, check the first element only - if (it == imAccounts.begin()) { - item->setCheckState(0, Qt::Checked); - } else { - item->setCheckState(0, Qt::Unchecked); - } - - item->setText(1, QString::fromStdString((*it).getLogin())); - } -} - -IMAccountList QtAddIMContact::getSelectedIMAccounts(EnumIMProtocol::IMProtocol imProtocol) const { - IMAccountList result; - - IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); - - for (IMAccountList::const_iterator it = imAccounts.begin(); - it != imAccounts.end(); ++it) { - - QList list = _ui->treeWidget->findItems(QString::fromStdString((*it).getLogin()), Qt::MatchExactly, 1); - - if (list.size() > 0) { - //There should be only one item - QTreeWidgetItem * item = list[0]; - if (item->checkState(0) == Qt::Checked) { - result.push_back(*it); - } - } - } - - return result; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAddIMContact.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTADDIMCONTACT_H -#define OWQTADDIMCONTACT_H - -#include - -#include -#include - -#include - -#include - -class IMAccount; -class ContactProfile; -class CUserProfile; - -class QWidget; -class QDialog; -class QString; -namespace Ui { class AddIMContact; } - -/** - * Window for adding an IM contact to a given contact. - * - * @author Tanguy Krotoff - */ -class QtAddIMContact : public QObject, NonCopyable { - Q_OBJECT -public: - - QtAddIMContact(ContactProfile & contactProfile, CUserProfile & cUserProfile, QWidget * parent); - - ~QtAddIMContact(); - - QDialog * getWidget() const { - return _addIMContactWindow; - } - -private Q_SLOTS: - - void addIMContact(); - - void imProtocolChanged(const QString & protocolName); - -private: - - int show(); - - void loadIMAccounts(EnumIMProtocol::IMProtocol imProtocol); - - IMAccountList getSelectedIMAccounts(EnumIMProtocol::IMProtocol imProtocol) const; - - Ui::AddIMContact * _ui; - - QDialog * _addIMContactWindow; - - ContactProfile & _contactProfile; - - CUserProfile & _cUserProfile; -}; - -#endif //OWQTADDIMCONTACT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAdvancedIMContactManager.h" - -#include "ui_IMContactManager.h" - -#include -#include - -#include -#include - -#include - -#include - -#include - -#include - -QtAdvancedIMContactManager::QtAdvancedIMContactManager(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent) - : QtIMContactManagerInterface(contactProfile, cUserProfile, parent) { - - _imContactManagerWidget = new QWidget(NULL); - - _ui = new Ui::IMContactManager(); - _ui->setupUi(_imContactManagerWidget); - - SAFE_CONNECT(_ui->addIMContactButton, SIGNAL(clicked()), SLOT(addIMContact())); - SAFE_CONNECT(_ui->deleteIMContactButton, SIGNAL(clicked()), SLOT(deleteIMContact())); - - SAFE_CONNECT(_ui->treeWidget, SIGNAL(currentItemChanged(QTreeWidgetItem*, QTreeWidgetItem* )), - SLOT(currentItemChangedSlot(QTreeWidgetItem*, QTreeWidgetItem*))); - - loadIMContacts(); - _ui->deleteIMContactButton->setEnabled(false); -} - -QtAdvancedIMContactManager::~QtAdvancedIMContactManager() { - OWSAFE_DELETE(_ui); -} - -void QtAdvancedIMContactManager::loadIMContacts() { - _ui->treeWidget->clear(); - - const IMContactSet & imContactSet = _contactProfile.getIMContactSet(); - - for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { - - IMContact * imContact = (IMContact *) &(*it); - QStringList imContactStrList; - imContactStrList << QString::fromStdString(imContact->getContactId()); - EnumIMProtocol::IMProtocol imProtocol = imContact->getProtocol(); - - if (imProtocol == EnumIMProtocol::IMProtocolSIP) { - //This protocol is internal to WengoPhone, should not be shown to the user - //continue; - } - - imContactStrList << QString::fromStdString(EnumIMProtocol::toString(imProtocol)); - imContactStrList << QString::null; - - QtIMContactItem * item = new QtIMContactItem(_ui->treeWidget, imContactStrList); - item->setIMContact(imContact); - } - - contentHasChanged(); -} - -void QtAdvancedIMContactManager::addIMContact() { - QtAddIMContact(_contactProfile, _cUserProfile, _imContactManagerWidget); //Blocking until window closed - loadIMContacts(); -} - -void QtAdvancedIMContactManager::deleteIMContact() { - QtIMContactItem * imContactItem = (QtIMContactItem *) _ui->treeWidget->currentItem(); - if (imContactItem) { - IMContact * imContact = imContactItem->getIMContact(); - - int buttonClicked = QMessageBox::question(_imContactManagerWidget, - tr("@product@"), - tr("Are sure you want to delete this IM contact?\n") + - QString::fromStdString(imContact->getContactId()), - tr("&Delete"), tr("Cancel")); - - //Button delete clicked - if (buttonClicked == 0) { - _contactProfile.removeIMContact(*imContact); - } - } - - loadIMContacts(); -} - -void QtAdvancedIMContactManager::currentItemChangedSlot(QTreeWidgetItem * current, QTreeWidgetItem * previous) { - _ui->deleteIMContactButton->setEnabled(current); -} - -bool QtAdvancedIMContactManager::couldBeSaved() { - return (!_contactProfile.getIMContactSet().empty()); -} - -void QtAdvancedIMContactManager::saveIMContacts() { - // nothing to do here, contacts are already in _contactProfile -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtAdvancedIMContactManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,88 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTADVANCEDIMCONTACTMANAGER_H -#define OWQTADVANCEDIMCONTACTMANAGER_H - -#include - -class ContactProfile; -class CUserProfile; - -class QWidget; -class QTreeWidget; -class QTreeWidgetItem; -namespace Ui { class IMContactManager; } - -/** - * Window that handles IM accounts of a contact (IMContact). - * - * Very similar to QtIMAccountManager but for IM contacts. - * - * @see QtIMAccountManager - * @see Contact - * @see IMContact - * @see QtSimpleIMContactManager - * @see QtIMContactManagerInterface - * - * @author Tanguy Krotoff - * @Xavier Desjardins - */ -class QtAdvancedIMContactManager : public QtIMContactManagerInterface { - Q_OBJECT -public: - - QtAdvancedIMContactManager(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent); - - virtual ~QtAdvancedIMContactManager(); - - virtual bool couldBeSaved(); - - virtual void saveIMContacts(); - - virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode() { - return QtIMContactManagerInterface::contactManagerModeAdvanced; - } - - virtual void setWengoName(const QString & wengoName) { - //nothing to do... - } - - virtual void setSipAddress(const QString & sipAddress) { - //nothing to do... - } - - -private Q_SLOTS: - - void addIMContact(); - - void deleteIMContact(); - - void currentItemChangedSlot(QTreeWidgetItem * current, QTreeWidgetItem * previous); - -private: - - void loadIMContacts(); - - Ui::IMContactManager * _ui; -}; - -#endif //OWQTADVANCEDIMCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMContactItem.h" - -#include - -#include - -QtIMContactItem::QtIMContactItem(QTreeWidget * parent, const QStringList & strings) - : QTreeWidgetItem(parent, strings) { - - _imContact = NULL; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactItem.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTIMCONTACTITEM_H -#define QTIMCONTACTITEM_H - -#include - -class IMContact; - -/** - * Handles an item of the QTreeWidget. - * - * @see QtIMContactManager - * @see QtIMAccountItem - * @author Tanguy Krotoff - */ -class QtIMContactItem : public QTreeWidgetItem { -public: - - QtIMContactItem(QTreeWidget * parent, const QStringList & strings); - - void setIMContact(IMContact * imContact) { - _imContact = imContact; - } - - IMContact * getIMContact() const { - return _imContact; - } - -private: - - IMContact * _imContact; -}; - -#endif //QTIMCONTACTITEM_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMContactManagerInterface.h" - -#include - -#include - -#include - -QtIMContactManagerInterface::QtIMContactManagerInterface(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent) - : QObject(parent), - _contactProfile(contactProfile), - _cUserProfile(cUserProfile) { - - _imContactManagerWidget = new QWidget(NULL); -} - -QtIMContactManagerInterface::~QtIMContactManagerInterface() { -} - -QWidget * QtIMContactManagerInterface::getWidget() const { - return _imContactManagerWidget; -} - -QtIMContactManagerInterface::contactManagerMode QtIMContactManagerInterface::getContactManagerMode() { - return QtIMContactManagerInterface::contactManagerModeUndefined; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtIMContactManagerInterface.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTIMCONTACTMANAGERINTERFACE_H -#define OWQTIMCONTACTMANAGERINTERFACE_H - -#include - -#include - -class ContactProfile; -class CUserProfile; - -class QWidget; - -/** - * Interface for classes handling IM accounts of a contact (IMContact). - * - * @see Contact - * @see IMContact - * @see QtSimpleIMContactManager - * @see QtAdvancedIMContactManager - * - * @author Xavier Desjardins - */ -class QtIMContactManagerInterface : public QObject, NonCopyable { - Q_OBJECT -public: - - QtIMContactManagerInterface(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent); - - virtual ~QtIMContactManagerInterface(); - - QWidget * getWidget() const ; - - /** - * Is there at least one valid contact to be saved - */ - virtual bool couldBeSaved() = 0; - - /** - * save IMContacts - */ - virtual void saveIMContacts() = 0; - - enum contactManagerMode { - contactManagerModeUndefined, - contactManagerModeSimple, - contactManagerModeAdvanced - }; - - /** - * @return contactManagerMode - */ - virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode(); - - virtual void setWengoName(const QString & wengoName) = 0; - - virtual void setSipAddress(const QString & sipAddress) = 0; - -Q_SIGNALS: - - /** - * something has changed - */ - void contentHasChanged(); - -protected: - - QWidget * _imContactManagerWidget; - - ContactProfile & _contactProfile; - - CUserProfile & _cUserProfile; -}; - -#endif //OWQTIMCONTACTMANAGERINTERFACE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,492 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSimpleIMContactManager.h" - -#include "ui_SimpleIMContactManager.h" - -#include -#include - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include - -#include - -static const QString IMCONTACT_TEXT_SEPARATOR = ";"; - -QtSimpleIMContactManager::QtSimpleIMContactManager(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent) - : QtIMContactManagerInterface(contactProfile, cUserProfile, parent) { - - _imContactManagerWidget = new QWidget(NULL); - - _ui = new Ui::SimpleIMContactManager(); - _ui->setupUi(_imContactManagerWidget); - - _msnLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(msnLineEditClicked())); - _ui->msnLineEdit->installEventFilter(_msnLineEditMouseEventFilter); - _aimLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(aimLineEditClicked())); - _ui->aimLineEdit->installEventFilter(_aimLineEditMouseEventFilter); - _icqLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(icqLineEditClicked())); - _ui->icqLineEdit->installEventFilter(_icqLineEditMouseEventFilter); - _yahooLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(yahooLineEditClicked())); - _ui->yahooLineEdit->installEventFilter(_yahooLineEditMouseEventFilter); - _jabberLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(jabberLineEditClicked())); - _ui->jabberLineEdit->installEventFilter(_jabberLineEditMouseEventFilter); - _googleTalkLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(googleTalkLineEditClicked())); - _ui->googleTalkLineEdit->installEventFilter(_googleTalkLineEditMouseEventFilter); - - _faceBookLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(faceBookTalkLineEditClicked())); - _ui->faceBookLineEdit->installEventFilter(_faceBookLineEditMouseEventFilter); - _mySpaceLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(mySpaceLineEditClicked())); - _ui->mySpaceLineEdit->installEventFilter(_mySpaceLineEditMouseEventFilter); - _skypeLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(skypeLineEditClicked())); - _ui->skypeLineEdit->installEventFilter(_skypeLineEditMouseEventFilter); - _twitterLineEditMouseEventFilter = new MousePressEventFilter(this, SLOT(twitterLineEditClicked())); - _ui->twitterLineEdit->installEventFilter(_twitterLineEditMouseEventFilter); - - SAFE_CONNECT(_ui->msnLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->aimLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->icqLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->yahooLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->jabberLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->googleTalkLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->wengoLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->sipLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - - SAFE_CONNECT(_ui->faceBookLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->mySpaceLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->skypeLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - SAFE_CONNECT(_ui->twitterLineEdit, SIGNAL(textChanged(const QString &)), SIGNAL(contentHasChanged())); - -#ifndef CUSTOM_ACCOUNT - _ui->wengoLabel->hide(); - _ui->label_2->hide(); - _ui->wengoLineEdit->hide(); -#endif - - -#ifndef ENABLE_FACEBOOK - _ui->faceBookLineEdit->hide(); - _ui->label_11->hide(); - _ui->faceBookLabel->hide(); -#endif -#ifndef ENABLE_MYSPACE - _ui->mySpaceLineEdit->hide(); - _ui->label_12->hide(); - _ui->mySpaceLabel->hide(); -#endif -#ifndef ENABLE_SKYPE - _ui->skypeLineEdit->hide(); - _ui->label_14->hide(); - _ui->skypeLabel->hide(); -#endif -#ifndef ENABLE_TWITTER - _ui->twitterLineEdit->hide(); - _ui->label_13->hide(); - _ui->twitterLabel->hide(); -#endif - -#ifndef MULTIIMWRAPPER - _ui->msnLineEdit->hide(); - _ui->label_4->hide(); - _ui->msnLabel->hide(); - - _ui->aimLineEdit->hide(); - _ui->label_7->hide(); - _ui->aimLabel->hide(); - - _ui->icqLineEdit->hide(); - _ui->label_8->hide(); - _ui->icqLabel->hide(); - - _ui->yahooLineEdit->hide(); - _ui->label_5->hide(); - _ui->yahooLabel->hide(); - - _ui->googleTalkLineEdit->hide(); - _ui->label_9->hide(); - _ui->googleTalkLabel->hide(); - - _ui->jabberLineEdit->hide(); - _ui->label_10->hide(); - _ui->jabberLabel->hide(); - - _ui->faceBookLineEdit->hide(); - _ui->label_11->hide(); - _ui->faceBookLabel->hide(); - - _ui->mySpaceLineEdit->hide(); - _ui->label_12->hide(); - _ui->mySpaceLabel->hide(); - - _ui->skypeLineEdit->hide(); - _ui->label_14->hide(); - _ui->skypeLabel->hide(); - - _ui->skypeLineEdit->hide(); - _ui->label_14->hide(); - _ui->skypeLabel->hide(); - - _ui->twitterLineEdit->hide(); - _ui->label_13->hide(); - _ui->twitterLabel->hide(); -#endif - - loadIMContacts(); -} - -QtSimpleIMContactManager::~QtSimpleIMContactManager() { - OWSAFE_DELETE(_msnLineEditMouseEventFilter); - OWSAFE_DELETE(_aimLineEditMouseEventFilter); - OWSAFE_DELETE(_icqLineEditMouseEventFilter); - OWSAFE_DELETE(_yahooLineEditMouseEventFilter); - OWSAFE_DELETE(_jabberLineEditMouseEventFilter); - OWSAFE_DELETE(_googleTalkLineEditMouseEventFilter); - - OWSAFE_DELETE(_faceBookLineEditMouseEventFilter); - OWSAFE_DELETE(_mySpaceLineEditMouseEventFilter); - OWSAFE_DELETE(_skypeLineEditMouseEventFilter); - OWSAFE_DELETE(_twitterLineEditMouseEventFilter); - - OWSAFE_DELETE(_ui); -} - -std::set QtSimpleIMContactManager::findIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const { - std::set result; - - const IMContactSet & imContactSet = _contactProfile.getIMContactSet(); - for (IMContactSet::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { - if ((*it).getProtocol() == imProtocol) { - result.insert((IMContact *)(&(*it))); - } - } - - return result; -} - -QString QtSimpleIMContactManager::getIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const { - QString imContacts; - - std::set imContactSet = findIMContactsOfProtocol(imProtocol); - for (std::set::const_iterator it = imContactSet.begin(); it != imContactSet.end(); it++) { - IMContact * imContact = *it; - imContacts += QString::fromStdString(imContact->getDisplayContactId()); - imContacts += IMCONTACT_TEXT_SEPARATOR; - } - - //Remove the last IMCONTACT_TEXT_SEPARATOR - int index = imContacts.lastIndexOf(IMCONTACT_TEXT_SEPARATOR); - imContacts.remove(index, 1); - - return imContacts; -} - -void QtSimpleIMContactManager::changeIMProtocolPixmaps(EnumIMProtocol::IMProtocol imProtocol, - QLabel * imProtocolLabel, const char * connectedPixmap, QLineEdit * imProtocolLineEdit) { - - IMAccountList imAccounts = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); - if (!imAccounts.empty()) { - imProtocolLineEdit->setEnabled(true); - imProtocolLabel->setPixmap(QPixmap(connectedPixmap)); - } -} - -void QtSimpleIMContactManager::loadIMContacts() { - //Update presentation depending if IM accounts exist - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolMSN, - _ui->msnLabel, ":pics/protocols/msn.png", _ui->msnLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolAIM, - _ui->aimLabel, ":pics/protocols/aim.png", _ui->aimLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolICQ, - _ui->icqLabel, ":pics/protocols/icq.png", _ui->icqLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolYahoo, - _ui->yahooLabel, ":pics/protocols/yahoo.png", _ui->yahooLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolJabber, - _ui->jabberLabel, ":pics/protocols/jabber.png", _ui->jabberLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolGoogleTalk, - _ui->googleTalkLabel, ":pics/protocols/google-talk.png", _ui->googleTalkLineEdit); - - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolFaceBook, - _ui->faceBookLabel, ":pics/protocols/facebook.png", _ui->faceBookLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolMySpace, - _ui->mySpaceLabel, ":pics/protocols/myspace.png", _ui->mySpaceLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolSkype, - _ui->skypeLabel, ":pics/protocols/skype.png", _ui->skypeLineEdit); - changeIMProtocolPixmaps(EnumIMProtocol::IMProtocolTwitter, - _ui->twitterLabel, ":pics/protocols/twitter.png", _ui->twitterLineEdit); - - //Loads all the IM contacts - _ui->wengoLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolWengo)); - if (_ui->msnLineEdit->isEnabled()) { - _ui->msnLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolMSN)); - } - if (_ui->aimLineEdit->isEnabled()) { - _ui->aimLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolAIM)); - } - if (_ui->icqLineEdit->isEnabled()) { - _ui->icqLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolICQ)); - } - if (_ui->yahooLineEdit->isEnabled()) { - _ui->yahooLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolYahoo)); - } - if (_ui->jabberLineEdit->isEnabled()) { - _ui->jabberLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolJabber)); - } - if (_ui->googleTalkLineEdit->isEnabled()) { - _ui->googleTalkLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolGoogleTalk)); - } - - if (_ui->faceBookLineEdit->isEnabled()) { - _ui->faceBookLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolFaceBook)); - } - if (_ui->mySpaceLineEdit->isEnabled()) { - _ui->mySpaceLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolMySpace)); - } - if (_ui->skypeLineEdit->isEnabled()) { - _ui->skypeLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolSkype)); - } - if (_ui->twitterLineEdit->isEnabled()) { - _ui->twitterLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolTwitter)); - } - - _ui->sipLineEdit->setText(getIMContactsOfProtocol(EnumIMProtocol::IMProtocolSIP)); -} - -void QtSimpleIMContactManager::addIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol, const QString & text) { - QString imContactsBefore = getIMContactsOfProtocol(imProtocol); - QStringList contactIdListBefore = imContactsBefore.split(IMCONTACT_TEXT_SEPARATOR); - QString imContactsAfter = text; - QStringList contactIdListAfter = imContactsAfter.split(IMCONTACT_TEXT_SEPARATOR); - for (int i = 0; i < contactIdListAfter.size(); i++) { - contactIdListAfter[i] = contactIdListAfter[i].trimmed(); - } - - //Remove IMContacts - for (int i = 0; i < contactIdListBefore.size(); i++) { - QString contactId = contactIdListBefore[i]; - - if (!contactIdListAfter.contains(contactId)) { - //Remove the imContact from the contactProfile - IMContact imContact(imProtocol, contactId.toStdString()); - _contactProfile.removeIMContact(imContact); - } - } - - //Check if id is not empty - if (text.isEmpty()) { - return; - } - - //Add IMContacts - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString wengoSuffix = "@" + QString::fromStdString( config.getWengoRealm() ); - for (int i = 0; i < contactIdListAfter.size(); i++) { - QString contactId = contactIdListAfter[i]; - - if (!contactIdListBefore.contains(contactId)) { - - // sip contact should know their domain - if (imProtocol == EnumIMProtocol::IMProtocolWengo) { - contactId += wengoSuffix; - } else if (imProtocol == EnumIMProtocol::IMProtocolSIP) { - if (!contactId.contains("@")) { - SipAccount * sipaccount = _cUserProfile.getUserProfile().getSipAccount(); - if (sipaccount) { - contactId += QString("@") + QString::fromStdString(sipaccount->getRealm()); - } - } - } - //// - - //Add the imContact to the contactProfile - IMContact imContact(imProtocol, contactId.toStdString()); - - //IMAccount to associate with the IMContact - IMAccountList imAccounts = - _cUserProfile.getUserProfile().getIMAccountManager().getIMAccountsOfProtocol(imProtocol); - IMAccountList::const_iterator it = imAccounts.begin(); - if (it != imAccounts.end()) { - IMAccount * imAccount = - _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount((*it).getUUID()); - imContact.setIMAccount(imAccount); - OWSAFE_DELETE(imAccount); - } - - _contactProfile.addIMContact(imContact); - } - } -} - -void QtSimpleIMContactManager::saveIMContacts() { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolWengo, _ui->wengoLineEdit->text()); - if (_ui->msnLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolMSN, _ui->msnLineEdit->text()); - } - if (_ui->aimLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolAIM, _ui->aimLineEdit->text()); - } - if (_ui->icqLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolICQ, _ui->icqLineEdit->text()); - } - if (_ui->yahooLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolYahoo, _ui->yahooLineEdit->text()); - } - if (_ui->jabberLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolJabber, _ui->jabberLineEdit->text()); - } - if (_ui->googleTalkLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolGoogleTalk, _ui->googleTalkLineEdit->text()); - } - - if (_ui->faceBookLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolFaceBook, _ui->faceBookLineEdit->text()); - } - if (_ui->mySpaceLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolMySpace, _ui->mySpaceLineEdit->text()); - } - if (_ui->skypeLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolSkype, _ui->skypeLineEdit->text()); - } - if (_ui->twitterLineEdit->isEnabled()) { - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolTwitter, _ui->twitterLineEdit->text()); - } - - addIMContactsOfProtocol(EnumIMProtocol::IMProtocolSIP, _ui->sipLineEdit->text().remove(" ")); -} - -void QtSimpleIMContactManager::msnLineEditClicked() { - if (!_ui->msnLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolMSN, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::aimLineEditClicked() { - if (!_ui->aimLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolAIM, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::icqLineEditClicked() { - if (!_ui->icqLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolICQ, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::yahooLineEditClicked() { - if (!_ui->yahooLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolYahoo, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::jabberLineEditClicked() { - if (!_ui->jabberLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolJabber, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::faceBookLineEditClicked() { - if (!_ui->faceBookLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolFaceBook, _imContactManagerWidget); - loadIMContacts(); - } -} -void QtSimpleIMContactManager::mySpaceLineEditClicked() { - if (!_ui->mySpaceLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolMySpace, _imContactManagerWidget); - loadIMContacts(); - } -} -void QtSimpleIMContactManager::skypeLineEditClicked() { - if (!_ui->skypeLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolSkype, _imContactManagerWidget); - loadIMContacts(); - } -} -void QtSimpleIMContactManager::twitterLineEditClicked() { - if (!_ui->twitterLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolTwitter, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::googleTalkLineEditClicked() { - if (!_ui->jabberLineEdit->isEnabled()) { - QtIMAccountSettings(_cUserProfile.getUserProfile(), - QtEnumIMProtocol::IMProtocolGoogleTalk, _imContactManagerWidget); - loadIMContacts(); - } -} - -void QtSimpleIMContactManager::setWengoName(const QString & wengoName) { - _ui->wengoLineEdit->setText(wengoName); - _ui->wengoLineEdit->setEnabled(true); -} - -void QtSimpleIMContactManager::setSipAddress(const QString & sipAddress) { - _ui->sipLineEdit->setText(sipAddress); - _ui->sipLineEdit->setEnabled(true); -} - -bool QtSimpleIMContactManager::couldBeSaved() { - return ( (/*(_ui->wengoLineEdit->isEnabled()) &&*/ (!_ui->wengoLineEdit->text().isEmpty())) || - ((_ui->msnLineEdit->isEnabled()) && (!_ui->msnLineEdit->text().isEmpty())) || - (( _ui->aimLineEdit->isEnabled()) && (! _ui->aimLineEdit->text().isEmpty())) || - (( _ui->icqLineEdit->isEnabled()) && (! _ui->icqLineEdit->text().isEmpty())) || - (( _ui->yahooLineEdit->isEnabled()) && (! _ui->yahooLineEdit->text().isEmpty())) || - (( _ui->jabberLineEdit->isEnabled()) && (! _ui->jabberLineEdit->text().isEmpty())) || - - (( _ui->faceBookLineEdit->isEnabled()) && (! _ui->faceBookLineEdit->text().isEmpty())) || - (( _ui->mySpaceLineEdit->isEnabled()) && (! _ui->mySpaceLineEdit->text().isEmpty())) || - (( _ui->skypeLineEdit->isEnabled()) && (! _ui->skypeLineEdit->text().isEmpty())) || - (( _ui->twitterLineEdit->isEnabled()) && (! _ui->twitterLineEdit->text().isEmpty())) || - - (/*( _ui->sipLineEdit->isEnabled()) &&*/ (!_ui->sipLineEdit->text().isEmpty())) - ); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/QtSimpleIMContactManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSIMPLEIMCONTACTMANAGER_H -#define OWQTSIMPLEIMCONTACTMANAGER_H - -#include - -#include - -#include - -class IMContact; -class ContactProfile; -class CUserProfile; -class MousePressEventFilter; - -class QLineEdit; -class QLabel; -class QWidget; -namespace Ui { class SimpleIMContactManager; } - -/** - * Simplified widget for adding an IM contact to a given contact. - * - * @see QtIMContactManager - * @see QtSimpleIMAccountManager - * - * @author Tanguy Krotoff - * @author Xavier Desjardins - */ -class QtSimpleIMContactManager : public QtIMContactManagerInterface { - Q_OBJECT -public: - - QtSimpleIMContactManager(ContactProfile & contactProfile, - CUserProfile & cUserProfile, QWidget * parent); - - ~QtSimpleIMContactManager(); - - virtual bool couldBeSaved(); - - virtual void saveIMContacts(); - - virtual QtIMContactManagerInterface::contactManagerMode getContactManagerMode() { - return QtIMContactManagerInterface::contactManagerModeSimple; - } - - virtual void setWengoName(const QString & wengoName); - - virtual void setSipAddress(const QString & sipAddress); - -private Q_SLOTS: - - void msnLineEditClicked(); - - void aimLineEditClicked(); - - void icqLineEditClicked(); - - void yahooLineEditClicked(); - - void jabberLineEditClicked(); - - void googleTalkLineEditClicked(); - - void faceBookLineEditClicked(); - void mySpaceLineEditClicked(); - void skypeLineEditClicked(); - void twitterLineEditClicked(); - -private: - - void loadIMContacts(); - - /** - * Code factorization. - */ - std::set findIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const; - - /** - * Code factorization. - */ - QString getIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol) const; - - /** - * Code factorization. - */ - void addIMContactsOfProtocol(EnumIMProtocol::IMProtocol imProtocol, const QString & text); - - /** - * Code factorization. - */ - void changeIMProtocolPixmaps(EnumIMProtocol::IMProtocol imProtocol, - QLabel * imProtocolLabel, const char * connectedPixmap, QLineEdit * imProtocolLineEdit); - - Ui::SimpleIMContactManager * _ui; - - MousePressEventFilter * _msnLineEditMouseEventFilter; - - MousePressEventFilter * _aimLineEditMouseEventFilter; - - MousePressEventFilter * _icqLineEditMouseEventFilter; - - MousePressEventFilter * _yahooLineEditMouseEventFilter; - - MousePressEventFilter * _jabberLineEditMouseEventFilter; - - MousePressEventFilter * _googleTalkLineEditMouseEventFilter; - - MousePressEventFilter * _faceBookLineEditMouseEventFilter; - MousePressEventFilter * _mySpaceLineEditMouseEventFilter; - MousePressEventFilter * _skypeLineEditMouseEventFilter; - MousePressEventFilter * _twitterLineEditMouseEventFilter; - -}; - -#endif //OWQTSIMPLEIMCONTACTMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/SimpleIMContactManager.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/SimpleIMContactManager.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/imcontact/SimpleIMContactManager.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/imcontact/SimpleIMContactManager.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,390 +0,0 @@ - - SimpleIMContactManager - - - - 0 - 0 - 472 - 369 - - - - - - - - 22 - 22 - - - - :/pics/protocols/wengo.png - - - - - - - - 0 - 0 - - - - @company@ ID: - - - - - - - true - - - - - - - - - - :/pics/protocols/msn_off.png - - - - - - - MSN ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/aim_off.png - - - - - - - AIM ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/icq_off.png - - - - - - - ICQ ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/yahoo_off.png - - - - - - - Yahoo! ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/google-talk_off.png - - - - - - - - 0 - 0 - - - - GoogleTalk ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/jabber_off.png - - - - - - - - 0 - 0 - - - - Jabber ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/facebook_off.png - - - true - - - - - - - - 0 - 0 - - - - FaceBook ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/myspace_off.png - - - true - - - - - - - - 0 - 0 - - - - MySpace ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/skype_off.png - - - true - - - - - - - - 0 - 0 - - - - Skype ID: - - - - - - - false - - - Update your profile - - - - - - - :/pics/protocols/twitter_off.png - - - true - - - - - - - - 0 - 0 - - - - Twitter ID: - - - - - - - false - - - Update your profile - - - - - - - - - - :/pics/protocols/sip.png - - - - - - - SIP ID: - - - - - - - true - - - - - - - - - - Qt::Vertical - - - - 379 - 21 - - - - - - - - wengoLineEdit - msnLineEdit - aimLineEdit - yahooLineEdit - googleTalkLineEdit - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/install/CMakeLists-install-macosx.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/install/CMakeLists-install-macosx.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/install/CMakeLists-install-macosx.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/install/CMakeLists-install-macosx.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,245 +0,0 @@ -# vim: filetype=cmake -set(CMAKE_CURRENT_SOURCE_DIR "${SOURCE_DIR}" CACHE INTERNAL "CMake source dir" FORCE) -set(CMAKE_SOURCE_DIR "${SOURCE_DIR}" CACHE INTERNAL "CMake source dir" FORCE) -set(CMAKE_BINARY_DIR "${BINARY_DIR}" CACHE INTERNAL "CMake binary dir" FORCE) - -set(CMAKE_MODULE_PATH - ${CMAKE_SOURCE_DIR}/owbuild - ${CMAKE_SOURCE_DIR}/owbuild/owbuild -) - -# Add macros -include(${CMAKE_SOURCE_DIR}/owbuild/owbuild/CMakeLists.txt) - -# Add options/default values... -include(${CMAKE_SOURCE_DIR}/DefineWengoOptions.cmake) -include(${CMAKE_SOURCE_DIR}/DefineInstallationPaths.cmake) - -set(CMAKE_MODULE_PATH - ${SOURCE_DIR}/owbuild/owbuild -) - -set(FRAMEWORK_INSTALL_DIR - ${BUILD_DIR}/QuteCom.app/Contents/Frameworks -) - -set(DATA_INSTALL_DIR - ${BUILD_DIR}/QuteCom.app/Contents/Resources -) - -include(OWChangeIdentificationName) -include(OWChangeInstallName) -include(OWCopyDir) -include(OWCopyFile) -include(OWHdiUtil) - -## Copy and create the locale directories to have the Application translated by Mac OS X -file(GLOB_RECURSE _qmFiles ${BUILD_DIR}/lang/qtwengophone_*.qm) - -if (_qmFiles) - foreach (_qm ${_qmFiles}) - # Extract language from qm file - GET_FILENAME_COMPONENT(lang ${_qm} NAME_WE) - STRING(REPLACE "qtwengophone_" "" lang ${lang}) - - make_directory(${DATA_INSTALL_DIR}/${lang}.lproj) - endforeach (_qm ${_qmFiles}) -endif (_qmFiles) -ow_copy_dir(${BUILD_DIR}/lang/*.qm ${DATA_INSTALL_DIR}/lang/.) -#### - -## Create the Info.plist file -file(WRITE "${BUILD_DIR}/QuteCom.app/Contents/Info.plist" -"\n" -"\n" -"\n" -"\n" -" CFBundleDevelopmentRegion\n" -" English\n" -" CFBundleExecutable\n" -" QuteCom\n" -" CFBundleIconFile\n" -" qutecom.icns\n" -" CFBundleIdentifier\n" -" com.mbdsys.QuteCom\n" -" CFBundleInfoDictionaryVersion\n" -" 6.0\n" -" CFBundlePackageType\n" -" APPL\n" -" CFBundleSignature\n" -" WNGP\n" -" CFBundleURLTypes\n" -" \n" -" \n" -" CFBundleTypeRole\n" -" Viewer\n" -" CFBundleURLName\n" -" http://www.qutecom.org\n" -" CFBundleURLSchemes\n" -" \n" -" qutecom\n" -" \n" -" \n" -" \n" -" CFBundleVersion\n" -" ${APPLICATION_VERSION}\n" -"\n" -"\n" -) -#### - -## Copying resources -# WengoPhone icon -ow_copy_file(${SOURCE_DIR}/wengophone/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns - ${BUILD_DIR}/QuteCom.app/Contents/Resources/qutecom.icns -) -#### - -## Copying binaries -# Qt -macro (ow_copy_qt libName qtLib) - # e.g: libName = QtCore, qtLib = /Library/Frameworks/QtCore.framework (on Mac OS X) - set(DEST_DIR ${FRAMEWORK_INSTALL_DIR}/${libName}.framework/Versions/4/) - make_directory(${DEST_DIR}) - execute_process( - COMMAND cp -f ${qtLib}/Versions/4/${libName} ${DEST_DIR} - ) -endmacro (ow_copy_qt) - -string(REGEX REPLACE "\\\\" "/" QTDIR "$ENV{QTDIR}") -find_package(Qt4 REQUIRED) - -set(QT_CORE "") -set(QT_GUI "") -set(QT_XML "") -set(QT_SVG "") -set(QT_NETWORK "") -set(QT_DBUS "") -set(QT_WEBKIT "") -set(QT_PHONON "") - -if (CMAKE_BUILD_TYPE MATCHES Debug) - set(QT_CORE ${QT_QTCORE_LIBRARY_DEBUG}) - set(QT_GUI ${QT_QTGUI_LIBRARY_DEBUG}) - set(QT_XML ${QT_QTXML_LIBRARY_DEBUG}) - set(QT_SVG ${QT_QTSVG_LIBRARY_DEBUG}) - set(QT_NETWORK ${QT_QTNETWORK_LIBRARY_DEBUG}) - set(QT_DBUS ${QT_QTDBUS_LIBRARY_DEBUG}) - set(QT_WEBKIT ${QT_QTWEBKIT_LIBRARY_DEBUG}) - set(QT_PHONON ${QT_PHONON_LIBRARY_DEBUG}) -else (CMAKE_BUILD_TYPE MATCHES Debug) - set(QT_CORE ${QT_QTCORE_LIBRARY_RELEASE}) - set(QT_GUI ${QT_QTGUI_LIBRARY_RELEASE}) - set(QT_XML ${QT_QTXML_LIBRARY_RELEASE}) - set(QT_SVG ${QT_QTSVG_LIBRARY_RELEASE}) - set(QT_NETWORK ${QT_QTNETWORK_LIBRARY_RELEASE}) - set(QT_DBUS ${QT_QTDBUS_LIBRARY_RELEASE}) - set(QT_WEBKIT ${QT_QTWEBKIT_LIBRARY_RELEASE}) - set(QT_PHONON ${QT_PHONON_LIBRARY_RELEASE}) -endif (CMAKE_BUILD_TYPE MATCHES Debug) - -ow_copy_qt(QtCore ${QT_CORE}) -ow_copy_qt(QtGui ${QT_GUI}) -ow_copy_qt(QtXml ${QT_XML}) -ow_copy_qt(QtSvg ${QT_SVG}) -ow_copy_qt(QtNetwork ${QT_NETWORK}) -ow_copy_qt(QtDBus ${QT_DBUS}) -ow_copy_qt(QtWebKit ${QT_WEBKIT}) -ow_copy_qt(phonon ${QT_PHONON}) - -# libpng12 -ow_copy_file(/usr/local/lib/libpng12.0.dylib - ${FRAMEWORK_INSTALL_DIR}/libpng12.0.dylib -) - -# libtiff -ow_copy_file(/usr/local/lib/libtiff.3.dylib - ${FRAMEWORK_INSTALL_DIR}/libtiff.3.dylib -) - -# curl -ow_copy_file(${CMAKE_BINARY_DIR}/libs/3rdparty/curl/libcurl.dylib - ${FRAMEWORK_INSTALL_DIR}/libowcurl.dylib -) - -ow_change_identification_name(${FRAMEWORK_INSTALL_DIR}/libowcurl.dylib libowcurl.dylib) - -# webcam -ow_copy_file(${CMAKE_BINARY_DIR}/libs/webcam/libwebcam.dylib - ${FRAMEWORK_INSTALL_DIR}/ -) - -# Copy PhApi -ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi/libphapi.dylib - ${FRAMEWORK_INSTALL_DIR}/ -) - -ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi-util/libphapiutil.dylib - ${FRAMEWORK_INSTALL_DIR}/ -) - -# Copy PhApi plugins -make_directory(${FRAMEWORK_INSTALL_DIR}/phapi-plugins/) - -ow_copy_file(${CMAKE_BINARY_DIR}/wifo/phapi/phspeexplugin/libphspeexplugin.so - ${FRAMEWORK_INSTALL_DIR}/phapi-plugins/ -) - -ow_copy_file(${CMAKE_BINARY_DIR}/wifo/wifo-plugins/sfp-plugin/libsfp-plugin.so - ${FRAMEWORK_INSTALL_DIR}/phapi-plugins/ -) - -## Change install names -set(WENGO_EXE "${BUILD_DIR}QuteCom.app/Contents/MacOS/QuteCom") - -set(COPY_PYTHON_SCRIPT - ${SOURCE_DIR}/scripts/copy_missing_libraries.py -) - -set(UPDATE_LINKS_PYTHON_SCRIPT - ${SOURCE_DIR}/scripts/update_links.py -) - -# Copy missing dependencies of WengoPhone binary. -execute_process( - COMMAND - python ${COPY_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/MacOS/QuteCom ${FRAMEWORK_INSTALL_DIR} -) - -execute_process( - COMMAND - python ${COPY_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/MacOS/owcrashreport ${FRAMEWORK_INSTALL_DIR} -) - -# Copy missing dependencies of files in ${FRAMEWORK_INSTALL_DIR}. -execute_process( - COMMAND - python ${COPY_PYTHON_SCRIPT} ${FRAMEWORK_INSTALL_DIR} -) - -# Update install names -execute_process( - COMMAND - python ${UPDATE_LINKS_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/ ${BUILD_DIR}/QuteCom.app/Contents/MacOS/QuteCom -) - -execute_process( - COMMAND - python ${UPDATE_LINKS_PYTHON_SCRIPT} ${BUILD_DIR}/QuteCom.app/Contents/ ${BUILD_DIR}/QuteCom.app/Contents/MacOS/owcrashreport -) - -#### - -## Update rights on WengoPhone files -message("Updating rights on QuteCom.app...") -execute_process( - COMMAND "chmod" -R 755 ${BUILD_DIR}/QuteCom.app -) -#### - -## Creates .dmg of WengoPhone -execute_process( - COMMAND "rm" -r ${CMAKE_BINARY_DIR}/QuteCom.dmg -) -ow_hdiutil(QuteCom ${BUILD_DIR}/QuteCom.app ${CMAKE_BINARY_DIR}/QuteCom.dmg) -#### diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/install/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/install/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/install/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/install/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,3 +0,0 @@ -if (APPLE) - include(CMakeLists-install-macosx.txt) -endif (APPLE) \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/CMakeLists.txt qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/CMakeLists.txt 1970-01-01 00:00:00.000000000 +0000 @@ -1,19 +0,0 @@ -# For Qt-4 translations - -add_custom_target(lupdate - COMMAND - "${CMAKE_COMMAND}" - -DPRO_FILE="${CMAKE_SOURCE_DIR}/lang.pro" - -P "${CMAKE_SOURCE_DIR}/owbuild/owbuild/OWLocaleUpdate.cmake" - WORKING_DIRECTORY - ${CMAKE_SOURCE_DIR} -) - -add_custom_target(lrelease - COMMAND - "${CMAKE_COMMAND}" - -DLOCALE_COPY_DIR="${LOCALE_COPY_DIR}" - -P "${CMAKE_SOURCE_DIR}/owbuild/owbuild/OWLocaleRelease.cmake" - WORKING_DIRECTORY - ${CMAKE_SOURCE_DIR} -) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/fixlang.php qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/fixlang.php --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/fixlang.php 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/fixlang.php 1970-01-01 00:00:00.000000000 +0000 @@ -1,35 +0,0 @@ -context as $ctx) - { - foreach($ctx->message as $msg) - { - $text = (string) $msg->translation; - $text = trim($text); - if (strstr($msg->source, "GNU")) - $att="ATTENTION!!!!!*****"; - else - $att=""; - - print $att."translation = ".$text." len=".strlen($text)."\r\n"; - if (!strlen($text)) - { - print "Fixing...\r\n"; - $msg->translation->addAttribute("type", "unfinished"); - } - }; - }; - - $str = $obj->asXML(); - - $out = fopen($fn, "w"); - fputs($out, $str); - fclose($out); -} -?> diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_bg.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_bg.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_bg.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_bg.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4843 +0,0 @@ - - - - - AIMSettings - - - Login: - Потребител: - - - - Forgot your AIM password? - Забравили сте си паролата за AIM? - - - - Get a new AIM Account - Създаване на нова AIM сметка - - - - Password: - Парола - - - - AIM Settings - AIM настройки - - - - AboutWindow - - - About - Относно програмата - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Автори - - - - Close - Затвори - - - - 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. - Тази програма е свободен софтуер; можете да я разпространявате и/или променяте според условията за употреба на ГНУ Общия Публичен Лиценз (GNU GPL), публикуван от Фондацията за Свободен Софтуер (FSF); версия 2 на Лиценза, или (по ваше усмотрение) коя да е по-нова версия. - - - - @product@ - About - @product@ - Относно - - - - @product@, a voice over Internet phone - @product@, интернет телефон - - - - AcceptDialog - - - File Transfer - Прехвърляне на файл - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Приеми - - - - &Cancel - &Откажи - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Контакт: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Име на файла: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Входящ файл</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Редактирай моя профил - - - - AddAccount - - - Configure your account: - Конфигуриране на вашата сметка: - - - - &Next - На&пред - - - - Need help? - Нужда от помощ? - - - - You don't have any account ? Click here - Нямате никаква сметка? Натиснете тук - - - - &Back - &Назад - - - - Cancel - Откажи - - - - @product@ - Login - @product@ - Потребителско име - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Моля, посочете дали вашата сметка е предоставена от<br/>by @company@ или от друг доставчик</span> - - - - @company@ account - @company@ сметка - - - - Generic SIP account - SIP сметка - - - - AddIMContact - - - Cancel - Откажи - - - - Contact Type (protocol): - Тип на контакта (протокол): - - - - Contact ID: - Контакт: - - - - Account: - Сметка: - - - - Enable - Активирай - - - - Login - Потребителско име - - - - Add - Добави - - - - @product@ - Add a Contact Account - @product@ - Добави контакт - - - - AddSIPAccount - - - Password: - Парола - - - - Need help? - Нужда от помощ? - - - - &Back - &Назад - - - - Cancel - Откажи - - - - @product@ - Login - @product@ - Потребителско име - - - - &Connect - &Свързване - - - - Activate presence and chat (SIP/SIMPLE) - Активирай присъствие и чат - - - - Displayname: - Изписано име - - - - login / username: - потребителко име: - - - - Account name: - Име на сметката - - - - Proxy: - Прокси: - - - - : - : - - - - Server: - Сървър: - - - - SIP Domain / Realm: - SIP област - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Конфигуриране на вашия SIP профил</span><br><br><span>Моля, попълнете информацията, която ще<br/>позволи вашият софтфон да се свърже със<br/>SIP сметката ви</span> - - - - Advanced - Разширени настройки - - - - AddWengoAccount - - - Password: - Парола - - - - Need help? - Нужда от помощ? - - - - &Back - &Назад - - - - Cancel - Откажи - - - - @product@ - Login - @product@ - Потребителско име - - - - &Connect - &Свързване - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Регистриране</span><br><br><span>Моля, въведете вашия адрес на е-поща и<br>парола</span> - - - - Email Address: - Адрес на е-поща: - - - - Click here if you don't have a @company@ account - Натиснете тук ако нямате @company@ сметка - - - - Forgot your @company@ password? - Забравили сте вашата @company@ парола? - - - - AdvancedConfigWindow - - - Close - Затвори - - - - Preference Name - Име на опцията - - - - Type - Тип: - - - - Value - Стойност - - - - Default Value - Стойност по подразбиране - - - - Save - Запиши - - - - Status - Състояние - - - - @product@ - Advanced Configuration - @product@ - Разширена конфигурация - - - - AdvancedSettings - - - Add - Добави - - - - Advanced Settings - Разширени настройки - - - - Advanced Configuration Window - Прозорец с разширени настройки - - - - Automatically answer incoming calls from - Автоматично отговаряне на входящите повиквания от - - - - Remove - Премахни - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Предупреждение! Тази част е за напреднали потребители.<br>И най-малката грешка може да нанесе повреди на софтуера. - - - - AppearanceSettings - - - Toolbar - Лента с инструменти - - - - &Icons && Text - &Икони и текст - - - - Icons &Only - &Само икони - - - - &Hidden - &Скрит - - - - Chat Theme - Чат тема - - - - Form - Формуляр - - - - AudioSettings - - - Reset - Отмяна - - - - Audio Codecs - Аудио кодеци - - - - &Input device: - &Входящо устройство - - - - &Output device: - &Изходящо устройство - - - - &Ringing device: - &Звънящо устройство - - - - &Make a test call - &Направи пробно обаждане - - - - - Test - Тествай - - - - &Advanced >> - &Разширени >> - - - - &Half Duplex - Половичен дуплекс - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Формуляр - - - - AvatarWidget - - - Form - Формуляр - - - - BrowserSoftUpdateWindow - - - Close - Затвори - - - - @product@ - Update available - @product@ - Налична е по-нова версия - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3-ти: - - - - 1st: - 1-ви: - - - - 2nd: - 2-ри: - - - - - - (+ country code) phone number - (+ код на страната) телефонен номер - - - - Forward all unanswered calls to message box - Прехвърли всички пропуснати разговори към телефонния секретар - - - - Disable call forwarding - Деактивирай пренасочването - - - - Forward all unanswered calls to following phone numbers: - Пренасочи всички пропуснати разговори към следните телефонни номера: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Например +3314500XXXX (+33 е кодът на страната, а 14500XXXX е телефонният номер) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Пренасочването на обаждания се включва, когато не сте свързан(а) към @company@, когато вашата линя е заета, или когато не отговорите на обаждане. Можете да конфигурирате до три номера за пренасочване към стационарни и мобилни номера, или към гласова поща. - - - - CallToaster - - - Incoming Call - Входящо обаждане - - - - Message - Съобщение - - - - ChatLogViewer - - - Chat History - Чат история - - - - &Contact - &Контакт - - - - &Tools - &Инструменти - - - - &Help - &Помощ - - - - &Actions - &Действия - - - - Main Toolbar - Главна лента с инструменти - - - - - - Call Contact - Обади се на контакт - - - - - - Send a File - Изпрати файл - - - - createChatConf - създайЧатКонференция - - - - - - Show Contact Info - Покажи информация за контакта - - - - blockContact - блокирайКонтакт - - - - &Save History As... - &Запази историята като... - - - - actionRestartChat - рестартирайЧат - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Контакт - - - - &Tools - &Инструменти - - - - &Actions - &Действия - - - - Main Toolbar - Главна лента с инструменти - - - - - - Call Contact - Обади се на контакт - - - - - - Send a File - Изпрати файл - - - - - - Show Contact Info - Покажи информация за контакта - - - - blockContact - блокирайКонтакт - - - - &Save History As... - &Запази историята като... - - - - @company@ - @company@ - - - - MainWindow - Главен прозорец - - - - &Edit - &Редактирай - - - - Cu&t - &Изрежи - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Копирай - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Постави - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Започни чат конференция - - - - &Close - &Затвори - - - - Conference - Конференция - - - - ChatRoomInviteWidget - - - Chat room - Чат стая - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Чат стая</span></p></body></html> - - - - (Conference participants) - (Участници в конференцията) - - - - &Remove - &Премахни - - - - &Start - &Старт - - - - Group Name - Име на група - - - - &Add - &Добави - - - - ChatToaster - - - Message - Съобщение - - - - Incoming Chat - Входящ чат - - - - ChatWidget - - - Form - Формуляр - - - - ConferenceCallWidget - - - Cancel - Откажи - - - - Start - Старт - - - - Phone number 2: - Телефонен номер 2: - - - - Phone number 1: - Телефонен номер 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Създай конференция - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Моля, въведете двата номера </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">или @company@ контакти за да</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">започнете 3-странна конференция.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Моля, въведете двата номера </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">или @company@ контакти за да</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">започнете 3-странна конференция.</p> - - - - &Add >> - &Добави >> - - - - << &Remove - << &Премахни - - - - Available Contacts - Достъпни контакти - - - - &Start - &Старт - - - - Cancel - Откажи - - - - ContactGroupPopupMenu - - - Remove Contact Group - Премахни контакт групата - - - - Rename Contact Group - Преименувай контакт групата - - - - Delete group - Изтрий група - - - - Do you really want to delete this group? - Наистина ли искате да изтриете тази група? - - - - &Yes - &Да - - - - &No - &Не - - - - ContactList - - - Contact List - Списък с контакти - - - - ContactWidget - - - No mobile phone number set - Не е зададен номер на мобилен телефон - - - - No landline phone number set - Не е зададен номер на стационарен телефон - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натисни за промяна на контакта</p></body></html> - - - - CrashReport - - - Cancel - Откажи - - - - Program Failure - Провал на програмата - - - - Send - Изпрати - - - - Optional Information - Незадължителна информация - - - - Your Mail: - Вашата е-поща - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Недостъпен(а) - - - - Click here to change your call forward settings - Кликнете тук за да промерните вашите настройки за пренасочване на обажданията - - - - Call forward mode: - Режим на пренасочване на обажданията - - - - Purchase call out credits - Закупуване на кредит - - - - Call Forward Method - Метод за пренасочване на обажданията - - - - Call Voice Mail - Избери гласова поща - - - - Click here to buy @company@'s credits - Натиснете тук, за да купите @company@ кредит - - - - DesktopService - - - Root Folder - Коренна директория - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Кликнете върху различните обекти, които си променят цвета, за да изпратите звуци на вашия събеседник. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Натиснете тук за да изберете вашата гласова поща - - - - New Voice Mail: - Нова гласова поща: - - - - Click here to see missed call(s) - Натиснете тук за да видите вашите пропуснати обаждания - - - - Missed Call(s): - Пропуснати обаждания: - - - - FileTransferDialog - - - ... - ... - - - - Download - Изтегли - - - - Upload - Качи - - - - Click here to change your download folder - Натиснете тук за да промените вашата директория за изтеглени файлове - - - - Download folder: - Директория за изтеглени файлове - - - - Clean all items in the list - Изчисти всичките обекти от списъка - - - - &Clean - &Изчисти - - - - @product@ - File Transfer Manager - @product@ - Менажер за прехвърляне на файлове - - - - FileTransferItem - - - Cancel - Откажи - - - - Form - Формуляр - - - - Pause - Пауза - - - - <i>From:</i> - <i>От:</i> - - - - GeneralSettings - - - When I double-click on a contact - При двукратно натискане върху контакт - - - - Call cell phone or land line if contact not online - Обади се на мобилния или стационарния телефон ако контакта не е включен - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Бездействащо състояние - - - - minutes - минути - - - - Show me as "Away" when I am inactive for: - Покажи ме като "Отсъстващ" когато не съм активен(а): - - - - When I start my computer - Когато стартирам компютъра си - - - - Automatically start @product@ - Стартирай @product@ автоматично - - - - GoogleTalkSettings - - - Login: - Потребител: - - - - Password: - Парола - - - - GoogleTalk Settings - GoogleTalk настройки - - - - Forgot your GoogleTalk password? - Забравили сте вашата GoogleTalk парола? - - - - Get a new GoogleTalk Account - Откриване на нова GoogleTalk сметка - - - - HttpProxyLoginWindow - - - Cancel - Откажи - - - - HTTP Proxy Address: - HTTP прокси - - - - HTTP Proxy Port Number: - Номер на HTTP прокси порт - - - - HTTP Proxy Login: - HTTP прокси потребителско имв - - - - HTTP Proxy Password: - HTTP прокси парола - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Прокси идентифициране</span><br><br><span>Вашето локално прокси изисква идентифициране<br>Моля въведете вашето име и парола</span> - - - - OK - Добре - - - - @product@ - Local HTTP Proxy - @product@ - локално HTTP прокси - - - - ICQSettings - - - Login: - Потребител: - - - - Password: - Парола - - - - ICQ Settings - ICQ настройки - - - - Forgot your ICQ password? - Забравили сте си паролата за ICQ? - - - - Get a new ICQ Account - Създаване на нова ICQ сметка - - - - IMAccountManager - - - Close - Затвори - - - - Login - Потребителско име - - - - Add - Добави - - - - Delete - Изтрий - - - - Modify - Промени - - - - Protocol - Протокол - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - моите сметки за моментални съобщения (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Откажи - - - - Save - Запиши - - - - IM Account Settings - Настройки на сметки за моментални съобщения - - - - IMContactManager - - - Add - Добави - - - - Delete - Изтрий - - - - Contact Type (protocol) - Тип на контакта - - - - Click on the add button below to add a new ID - Натиснете на бутона за добавяне долу за да добавите нов контакт - - - - Contact ID - Контакт - - - - IMProfileWidget - - - - Enter your nickname here - Въведете вашия псевдонимтук - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Придаване на сметка за моментални съобщения (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Придаване на сметка за моментални съобщения - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натиснете за смяна на аватар</p></body></html> - - - - ImageSelector - - - Cancel - Откажи - - - - OK - Добре - - - - Go Up - Нагоре - - - - Refresh - Обнови - - - - JabberSettings - - - Login: - Потребител: - - - - Password: - Парола - - - - Jabber Settings - Jabber настройки - - - - Connect Server: - Сървър - - - - <u>Advanced Options</u> - <u>Разширени нестройки</u> - - - - Require TLS - Изискай на TLS - - - - Port: - Порт: - - - - Use TLS if available - Използвай на TLS, ако е наличен - - - - Allow plaintext authentication over unencrypted streams - Позволи идентифициране с чист текст по некодиран поток - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Принудително използване на стария (порт 5223) SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Ако вашият език не е тук, знаете ли че можете да добавите собствен превод чрез Launchpad? - - - - More information here. - Повече информация тук. - - - - LogAccount - - - Password: - Парола - - - - Need help? - Нужда от помощ? - - - - Cancel - Откажи - - - - Delete - Изтрий - - - - @product@ - Login - @product@ - Потребителско име - - - - Account: - Сметка: - - - - &Connect - &Свързване - - - - Forgot your @company@ password? - Забравили сте вашата @company@ парола? - - - - &Modify - &Промени - - - - Configure a &New Profile - Конфигурирай &нов профил - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Моля, изберете друг профил<br/> или попълнете необходимата информация за свързване към<br/> @company@ сметка</span> - - - - MSNSettings - - - Login: - Потребител: - - - - Password: - Парола - - - - MSN Settings - MSN настройки - - - - Forgot your MSN password? - Забравили сте вашата парола за MSN? - - - - Get a new MSN Account - Регистриране на нова MSN сметка - - - - Use HTTP method - Използвай HTTP метод - - - - MainWindow - - - MainWindow - Главен прозорец - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Приеми обаждане - - - - Send Chat Message - Изпрати чат съобщение - - - - Make Call - Обади се - - - - Hang Up - Затвори - - - - ManageBlockedUsersSettings - - - Close - Затвори - - - - Unblock User - Отблокирай контакт - - - - Manage blocked users - Организирй блокираните контакти - - - - @product@ - Manage blocked users - @product@ - Организирй блокираните контакти - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Имам @company@ сметка - - - - Create a @company@ account - Създай @company@ сметка - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - За да изпратите SMS е необходимо да сте свързан(а) към<br>@company@ сметка и да разполагате с @company@ кредит. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Изберете събитията за които да бъде възпроизведен звук - - - - NotificationSettingsItem - - - Sound file - Звуков файл - - - - Find a sound file - Намери звуков файл - - - - Play sound file - Възпроизведи звуков файл - - - - Play - Възпроизведи - - - - NotifyDialog - - - File Transfer - Прехвърляне на файл - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Състояние:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Обнови</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Приеми - - - - Status - Състояние - - - - 00:00:00 - 00:00:00 - - - - Nickname - Псевдоним - - - - &Reject - &Отхвърляне - - - - Dialpad - Панел за набиране - - - - Audio Smileys - Аудио усмивки - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Организирй блокираните контакти - - - - Privacy Rules - Правила за дискретност - - - - Always sign in as "Invisible" (appear offline to all users) - Винаги се регистрирай като "невидим" (за останалите сте като изключен(а)) - - - - Allow chats from - Позволи чат от - - - - - Anyone - Всички - - - - - Only people from my contact list - Само на хора от моя списък с контакти - - - - Allow calls from - Позволи обаждания от - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Откажи - - - - Save - Запиши - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Натиснете за смяна на аватар</p></body></html> - - - - General - Общ - - - - Network IDs (MSN, Jabber...) - Мрежова идентификация (MSN, Jabber...) - - - - Advanced >> - Допълнителни >> - - - - Fill in all your network Id to stay connected with your contacts - Попълнете цялата мрежова идентификация за връзка с вашите контакти - - - - Contact - Контакт - - - - Group: - Група: - - - - Last Name: - Фамилия: - - - - First Name: - Име: - - - - Details - Допълнителна информация - - - - Web/blog: - Уеб адрес / блог - - - - Country: - Държава: - - - - State: - Област: - - - - City: - Град: - - - - Gender: - Пол: - - - - Birth Date: - Дата на раждане - - - - Email: - Ел. поща - - - - Notes - Бележки - - - - Phone Numbers - Телефонни номера - - - - Home phone - Домашен телефон - - - - Mobile phone - Мобилен телефон - - - - dd MMMM yyyy - дд ММММ гггг - - - - Unknown - Неизвестно - - - - Male - Мъж - - - - Female - Жена - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Сметки - - - - Accounts Settings - Настройки на сметките - - - - QtAddAccount - - - Configure your voip account - Конфигуриране на вашата voip сметка - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - Тествай - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Моля попълнете информацията която<br/>е необходима за връзка към вашата<br/>SIP сметка - - - - Configure your SIP profile - Конфигуриране на вашия SIP профил - - - - QtAddWengoAccount - - - Login - Потребителско име - - - - Please enter an email address. - Моля въведете мейл адрес - - - - Please enter your email address<br/>and your password - Моля въведете мейл адрес<br/>и вашата парола - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Откажи - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Изтриване - - - - QtAdvancedSettings - - - Advanced - Разширени настройки - - - - Advanced Settings - Разширени настройки - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Разширени настройки - - - - Audio - Аудио - - - - Audio Settings - Аудио настройки - - - - QtCallBar - - - +(country code) number or nickname - +(код на държава) номер или псевдоним - - - - QtCallForwardSettings - - - - Call Forward - Пренасочване на обаждания - - - - Call Forward Settings - Настройко за пренасочване на обаждания - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Запиши като - - - - QtChatLogViewer - - - Edit Contact - Редактиране на контакт - - - - QtChatTabWidget - - - Close chat - Затвори чат - - - - QtChatWidget - - - %1 is connected. - %1 е свързан. - - - - %1 is disconnected. - %1 е изключен(а). - - - - send - изпрати - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Редактиране на контакт - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Обаждане на SIP номер - - - - Call land line - Обаждане на стационарен телефон - - - - Call Mobile - Обаждане на мобилен телефон - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Можете да информирате вашия пръв събеседник, че той ще е участник в конферентно обаждане.</b><br><br>Когато сте готов(а) натиснете бутона долу. Вашия пръв събеседник ще бъде превключен на изчакване, докато се осъществи връзка с втория събеседник.<br> - - - - Hold first interlocutor and call second one - Задръж първия събеседник и се обади на втория - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Сега можете да информирате втория събеседник, че ще участва в конферентен разговор.</b><br><br>Щом сте готови, натиснете бутона по-долу за да започнете конференцията. - - - - Start Conference - Започни конференцията - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Да - - - - &No - &Не - - - - Merge %1 with %2? - Да слея %1 с %2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Да - - - - &No - &Не - - - - Home phone - Домашен телефон - - - - Mobile phone - Мобилен телефон - - - - @product@ - - - - - - Edit Contact - Редактиране на контакт - - - - Do you really want to delete this contact? - Наистина ли искате да изтриете този контакт? - - - - Start chat - Зпочни чат - - - - - Delete contact - Изтрий контакт - - - - Call - Обади се - - - - Free call - - - - - Work phone - Служебен телефон - - - - Send SMS - Изпрати SMS - - - - Edit contact - Промени контакт - - - - Block contact - Блокирай контакт - - - - Invite to conference - Покана за конференция - - - - Go to website - Отиди на уеб адрес - - - - Send file - Изпрати на файл - - - - Forward to mobile phone - Пренасочи към мобилен телефон - - - - QtContactWidget - - - No mobile phone number set - Не е зададен номер на мобилен телефон - - - - No landline phone number set - Не е зададен номер на стационарен телефон - - - - - Click here to call - Натиснете тук за да се обадите - - - - - Click here to set a phone number - Натиснете за да въведете телефон - - - - Click here to edit the contact - Натиснете за промяна на контакт - - - - Click here to send a SMS - Натиснете тук за да изпратите SMS - - - - Click here to start a chat - Натиснете тук за да започнете чат - - - - Click here to start a free call - Натиснете тук за безплатно обаждане - - - - Click here to send a file - Натиснете тук за да изпратите файл - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Искате ли да се обадите на гласовата поща? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Да - - - - &No - &Не - - - - Choose a directory - Изберете директория - - - - Overwrite File? - Да презапиша ли файла? - - - - A file called %1 already exists.Do you want to overwrite it? - Файл с име %1 вече съществува. Искате ли да го презапишете? - - - - - File size error - Грешка в размера на файла - - - - %1 exceeds the maximum authorized size. - %1 превишава максимално разрешения обем - - - - %1 has size 0. - %1 има обем 0. - - - - %1 is a directory. - %1 е директория. - - - - You can not send a directory. - Не е възможно да се прати директория. - - - - %1 is a shortcut. - %1 е препратка към файл. - - - - You can not send a shortcut. - Не е възможно да се прати препратка. - - - - All Files (*.* *) - Всички файлове (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Откажи - - - - Remove - Премахни - - - - - Pause - Пауза - - - - Starting - Започвам - - - - From: - От: - - - - To: - До: - - - - Open - Отвори - - - - Resume - Поднови - - - - Waiting for anwser... - Чакам отговор... - - - - Done - Готово - - - - Failed - Неуспех - - - - Paused - На пауза - - - - Paused by peer - Задържане от другата страна - - - - Cancelled - Отказано - - - - Cancelled by peer - Отказано от другата страна - - - - - Downloading... - Изтеглям... - - - - Uploading... - Качвам... - - - - Waiting for peer... - Изчаквам другата страна - - - - An error occured during the file transfer - Грешка по време на прехвърляне на файла - - - - This may be caused by : - Това може да е причинено от: - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Общ - - - - General Settings - Общи настройки - - - - QtHistory - - - Incoming call - Входящо обаждане - - - - Outgoing call - Изходящо обаждане - - - - Missed call - Пропуснато обаждане - - - - Rejected call - Отхърлено обаждане - - - - Outgoing SMS - Изходящ SMS - - - - Do you want to call %1? - Искате ли да се обадите на %1? - - - - Chat session - Чат сесия - - - - @product@ - Call History - - - - - - Type - Тип: - - - - Name/ID - Контакт - - - - Date - Дата - - - - Duration - Времетраене - - - - QtHistoryWidget - - - Erase this entry - Изтрий този запис - - - - Open in SMS window - Отвори в SMS прозорец - - - - Call this peer - Обади са на този контакт - - - - Show chat log - Покажи чат лога - - - - QtIMAccountManager - - - Cancel - Откажи - - - - @product@ - - - - - - &Delete - &Изтриване - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Изключен - - - - Error: %1 - Грешка: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Включен(а) - - - - Invisible - Невидим(а) - - - - Away - Отсъствам - - - - Do not disturb - Не ме безпокойте - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Моля, въведете потребителско име - - - - QtIMAccountPresenceMenuManager - - - Cancel - Откажи - - - - @product@ - - - - - - &Delete - &Изтриване - - - - Online - Включен(а) - - - - Invisible - Невидим(а) - - - - Away - Отсъствам - - - - Do Not Disturb - Не ме безпокойте - - - - Disconnect - Прекъсни - - - - Delete Account - Изтрий сметка - - - - Are sure you want to delete the account <b>%1</b>? - Сигурни ли сте, че искате да изтриете сметката <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Промени моя профил - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Език - - - - Language Settings - Езикови настройки - - - - QtLogAccount - - - Invalid account - Невалидна сметка - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Входящо обаждане (звънящ сигнал) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Приключване на обаждане (затваряне) - - - - Incoming chat - Входящ чат - - - - IM account connected - Свързан към сметка за моментни съобщеня - - - - IM account disconnected - Сметката за моментни съобщения е изключена - - - - Contact online - Контакта е свързан - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Избери аудио файл - - - - Sounds - Звуци - - - - QtPhoneCall - - - Status - Състояние - - - - Incoming Call - Входящо обаждане - - - - Resume - Поднови - - - - Hang-up - Затваряне - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Грешка - - - - Talking - Говорене - - - - Dialing - Набиране - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Звънене - - - - Redirected - Пренасочено - - - - Initialization... - Инициализация... - - - - Closed - Приключено - - - - - Hold - Задържане - - - - Add contact - Добяване на контакт - - - - Ca&ncel - &Откажи - - - - Talking - Conference - Разговор - конференция - - - - Add a Contact - Добави контакт - - - - QtPresenceMenuManager - - - Online - Включен(а) - - - - Invisible - Невидим(а) - - - - Away - Отсъствам - - - - Do Not Disturb - Не ме безпокойте - - - - Log off - Изключи ме - - - - QtPrivacySettings - - - Privacy - Конфиденциалност - - - - Privacy Settings - Настройки на анонимност - - - - QtProfileBar - - - Click here to change your status - Натиснете тук за промяна на състоянието - - - - - active - активен - - - - voicemail - Гласова поща - - - - inactive - неактивен - - - - unauthorized - неоторизиран - - - - Set global presence to: - Превключете глобалното присъствие на: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Допълнителни >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Контакта трябва да е в група, моля въведете група. - - - - << Simple - << Обикновен - - - - Select your avatar - Изберете аватар - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Неправилно име на група - - - - Group name cannot be empty - Името на групата не може да бъде празно - - - - QtSecuritySettings - - - Security - Сигурност - - - - Security Settings - Настройки на сигурността - - - - BETA - БЕТА - - - - QtSms - - - Please fill in a phone number. - Моля въведете телефонен номер. - - - - Do you want to continue? - Желаете ли да продължите? - - - - Your SMS has not been sent - Вашият SMS не беше изпратен - - - - Your SMS has been sent - Вашият SMS беше изпратен - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - Не можете да изпратите празно съобщение. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Няма връзка - - - - Register done - Регистрирането успешно - - - - Unregister done - Дерегистрирането успешно - - - - Connecting - Свързвам се - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Състояние - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Обаждане на SIP номер - - - - Call land line - Обаждане на стационарен телефон - - - - Call Mobile - Обаждане на мобилен телефон - - - - Call @company@ - - - - - - Call - Обади се - - - - Send SMS - Изпрати SMS - - - - Online - Включен(а) - - - - Invisible - Невидим(а) - - - - Away - Отсъствам - - - - Do Not Disturb - Не ме безпокойте - - - - Internet Connection Error - Грешка в Интернет връзката - - - - Offline - Неактивен - - - - Connecting... - Свързвам се... - - - - Send a SMS - Изпрати SMS - - - - Start a chat - Започни чат - - - - Place Call - Обади се - - - - Send File - Изпрати файл - - - - Multiple Status - Общо състояние - - - - Unknown Status - Неизвестно състояние - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Откажи - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Промени моя профил - - - - Add a Contact - Добави контакт - - - - Hide Unavailable Contacts - Скрий неактивните контакти - - - - Show Unavailable Contacts - Покажи неактивните контакти - - - - Hide Groups - Скрий групите - - - - Show Groups - Покажи групите - - - - You have unfinished call(s). - Имате неприключени обаждания - - - - Are you sure you want to log off? - Сигурни ли сте че искате да се изключите? - - - - &Log Off - &Изключи ме - - - - Disable &Video Calls - Деактивирай &видео обажданията - - - - Enable &Video Calls - Активирай &видео обаждания - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Конферемцята не може да започне докато има активни обаждания.</b><br><br>Прекъснете всички обаждания и опитайте отново. - - - - @product@ - Warning - - - - - - - Log &Off... - &Изключи ме... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Списък с конатакти - - - - QtUserProfile - - - Edit Contact - Редактиране на контакт - - - - - &Authorize - &Оторизирай - - - - - &Block - &Блокирай - - - - Network error. - Мрежова грешка. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Грешен мейл или парола - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Видео - - - - - Normal - Нормално - - - - - Good - Добро - - - - - Very good - Много добро - - - - - Excellent - Отлично - - - - Video Settings - Видео настройки - - - - QtVoicemailSettings - - - Voicemail - Гласова поща - - - - Voicemail Settings - Настройки на гласовата поща - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Разширени настройки - - - - General - Общ - - - - Accounts - Сметки - - - - Audio - Аудио - - - - Call Forward - Пренасочване на обаждания - - - - Language - Език - - - - Privacy - Конфиденциалност - - - - Video - Видео - - - - Voicemail - Гласова поща - - - - security - сигурност - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Откажи - - - - - - - Conference - Конференция - - - - Call - Обади се - - - - Account - - - - - Add a Contact - Добави контакт - - - - You have unfinished call(s). - Имате неприключени обаждания - - - - @product@ - Warning - - - - - - - Home - Домашен - - - - Are you sure you want to exit the application? - Сигурни ли сте че искате да затворите програмата? - - - - &Exit - &Изход - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Откажи - - - - OK - Добре - - - - Enter the new group name: - Въведи име на новата група: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Формуляр - - - - Enable call encryption - Активирай кодиране на обажданията - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Обновете вашият профил - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - пример: име@сървър - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Изпрати - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Натисни за добавяне на тел. номер - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Въведете своят подпис тук - - - - Signature: - Подпис: - - - - Phone number(s): - Номер(а) - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Въведете номера(та) тук<br>Те трябва да бъдат отделени с & или ; или , - - - - SoftUpdateWindow - - - Cancel - Откажи - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Формуляр - - - - VideoSettings - - - Normal - Нормално - - - - Good - Добро - - - - Very good - Много добро - - - - Excellent - Отлично - - - - Enable video - Активирай видео - - - - Webcam Selection - Избор на уебкамера - - - - Webcam device: - Уебкам устройство - - - - Webcam Preview - Изглед на уебкамера - - - - Connection Type - Тип на връзката - - - - Video quality - Видео качество - - - - Down (kbit/s) - Към вас (кбит/сек.) - - - - Up (kbit/s) - От вас (кбит/сек.) - - - - 0 to 512 - 0 до 512 - - - - 0 to 128 - 0 до 128 - - - - 512 to 2048 - 512 до 2048 - - - - 128 to 256 - 128 до 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Качеството на видео картината зависи от скоростта на вашата Интернет връзка - - - - Make a test video call - Направи пробно видео обаждане - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Формуляр - - - - Phone number of your voicemail: - Номерът на вашата гласова поща: - - - - Please fill in here the information about your voicemail - Моля попълнете необходимата информация за вашата гласова поща - - - - WengoConfigDialog - - - Cancel - Откажи - - - - Save - Запиши - - - - Title - Заглавие - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Приеми - - - - &Hidden - &Скрит - - - - &Tools - &Инструменти - - - - &Help - &Помощ - - - - &Actions - &Действия - - - - @company@ - @company@ - - - - &Close - &Затвори - - - - Dialpad - Панел за набиране - - - - @product@ - - - - - - Start Conference - Започни конференцията - - - - Send SMS - Изпрати SMS - - - - Contacts - Контакти - - - - History - История - - - - Clear &History - Изчисти &историята - - - - ToolBar - Лента с инструменти - - - - Show/Hide Unavailable &Contacts - Покажи/скрий неактивните &контакти - - - - &Chat Sessions - &Чат сесии - - - - &All - &Всички - - - - &HangUp - &Затвори - - - - &Hold/Resume - &Задръж/започни - - - - Show/Hide &Groups - Покажи/скрий &групите - - - - &Outgoing Calls - &Изходящи обаждания - - - - &Incoming Calls - &Входящи обаждания - - - - &Missed Calls - &Пропуснати обаждания - - - - Enable/Disable &Video Calls - Активирай/деактивирай &видео обажданията - - - - Short Text &Messages (SMS) - Кратки текстови &съобщения (SMS) - - - - Rejected Calls - Отхърлени обаждания - - - - &Contacts - &Контакти - - - - &About... - &Относно... - - - - Add &Contact... - Добави &контакт - - - - &Configuration... - &Конфигурация... - - - - Send SMS... - Изпрати SMS... - - - - View My &Profile... - Преглед на моя &профил - - - - - View My Profile - Преглед на моя профил - - - - Start &Conference... - Започни &конференция... - - - - &Find Contact... - &Намери контакт... - - - - Log &Off... - &Изключи ме... - - - - - Log Off - Изключи ме - - - - Show &Chat Window - Покажи &чат прозореца - - - - - Show Chat Window - Покажи чат прозореца - - - - Show &File Transfer - Покажи прозореца за изпращане на &файл - - - - Add Contact - Добави контакт - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Добави - - - - SMS - SMS - - - - Conference - Конференция - - - - Wizard - - - Cancel - Откажи - - - - Finish - Приключи - - - - Next > - Следващ > - - - - < Back - < Назад - - - - Simple Wizard - Step %1 of %2 - Обикновен помощник - стъпка %1 от %2 - - - - YahooSettings - - - Login: - Потребител: - - - - Password: - Парола - - - - Yahoo! Settings - Yahoo! настройки - - - - Use Yahoo! Japan server - Използвай Yahoo! Japan сървър - - - - Forgot your Yahoo! password? - Забравили сте си Yahoo! паролата? - - - - Get a new Yahoo! Account - Получете нова Yahoo! сметка - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ca.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ca.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ca.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ca.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4765 +0,0 @@ - - - - - AIMSettings - - - Login: - Entrada: - - - - Forgot your AIM password? - Heu oblidat la vostra contrasenya de l'AIM? - - - - Get a new AIM Account - Crea un compte nou de l'AIM - - - - Password: - Contrasenya: - - - - AIM Settings - Paràmetres de l'AIM - - - - AboutWindow - - - About - Quant a - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autors - - - - Close - Tanca - - - - 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. - Aquest programa és programari lliure; podeu redistribuir-lo i/o -modificar-lo sota els termes de la Llicència Pública General GNU - publicada per la Free Software Foundation; ja sigui la versió 2 - de la Llicència, o (si ho preferiu) qualsevol versió posterior. - - - - @product@ - About - @product@ - Quant a - - - - @product@, a voice over Internet phone - @product@, un telèfon de veu per Internet - - - - AcceptDialog - - - File Transfer - Transferència de fitxers - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Accepta - - - - &Cancel - &Cancel·la - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacte: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nom del fitxer: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Fitxer entrant</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Edita el meu perfil - - - - AddAccount - - - Configure your account: - Configureu el vostre compte: - - - - &Next - &Següent - - - - Need help? - Necessiteu ajuda? - - - - You don't have any account ? Click here - Encara no teniu un compte? Feu clic aquí - - - - &Back - &Enrere - - - - Cancel - Cancel·la - - - - @product@ - Login - @product@ - Entrada - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configureu el vostre compte de veu per internet (voip)</span><br><br><span>Cal que indiqueu si el vostre proveïdor és <br/>@company@ o bé un altre servei</span> - - - - @company@ account - Compte de @company@ - - - - Generic SIP account - Compte SIP genèric - - - - AddIMContact - - - Cancel - Cancel·la - - - - Contact Type (protocol): - Tipus de contacte (protocol): - - - - Contact ID: - Identificador del contacte: - - - - Account: - Compte: - - - - Enable - Habilita - - - - Login - Accés - - - - Add - Afegeix - - - - @product@ - Add a Contact Account - @product@ - Addició d'un compte de contacte - - - - AddSIPAccount - - - Password: - Contrasenya: - - - - Need help? - Necessiteu ajuda? - - - - &Back - &Enrere - - - - Cancel - Cancel·la - - - - @product@ - Login - @product@ - Entrada - - - - &Connect - &Connecta - - - - Activate presence and chat (SIP/SIMPLE) - Activa la detecció de presència i el xat (SIP/SIMPLE) - - - - Displayname: - Nom a mostrar: - - - - login / username: - entrada / nom d'usuari: - - - - Account name: - Nom del compte: - - - - Proxy: - Servidor intermediari: - - - - : - : - - - - Server: - Servidor: - - - - SIP Domain / Realm: - Domini / regne SIP - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configureu el vostre perfil SIP</span><br><br><span>Ompliu la informació que <br/>permetrà el vostre telèfon per programari connectar-vos al vostre<br/>compte SIP</span> - - - - Advanced - Avançat - - - - AddWengoAccount - - - Password: - Contrasenya: - - - - Need help? - Necessiteu ajuda? - - - - &Back - &Enrere - - - - Cancel - Cancel·la - - - - @product@ - Login - @product@ - Entrada - - - - &Connect - &Connecta - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Entrada</span><br><br><span>Escriviu la vostra adreça de correu electrònic i la<br>contrasenya</span> - - - - Email Address: - Adreça de correu electrònic: - - - - Click here if you don't have a @company@ account - Feu clic aquí si encara no teniu un compte de @company@ - - - - Forgot your @company@ password? - Heu oblidat la vostra contrasenya de @company@? - - - - AdvancedConfigWindow - - - Close - Tanca - - - - Preference Name - Nom de la preferència - - - - Type - Tipus - - - - Value - Valor - - - - Default Value - Valor per defecte - - - - Save - Desa - - - - Status - Estat - - - - @product@ - Advanced Configuration - @product@ - Configuració avançada - - - - AdvancedSettings - - - Add - Afegeix - - - - Advanced Settings - Configuració avançada - - - - Advanced Configuration Window - Finestra de configuració avançada - - - - Automatically answer incoming calls from - Accepta automàticament les trucades entrants de - - - - Remove - Suprimeix - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Compte, aquesta part és per a usuaris avançats.<br>Qualsevol errada pot malmetre el programa greument. - - - - AppearanceSettings - - - Toolbar - Barra d'eines - - - - &Icons && Text - &Icones i text - - - - Icons &Only - N&omés icones - - - - &Hidden - O&cult - - - - Chat Theme - Tema del xat - - - - Form - Format - - - - AudioSettings - - - Reset - Reinicialitza - - - - Audio Codecs - Còdecs d'àudio - - - - &Input device: - Dispositiu d'&entrada: - - - - &Output device: - Dispositiu de &sortida: - - - - &Ringing device: - Dispositiu de so de &trucada: - - - - &Make a test call - &Fes una trucada de prova - - - - - Test - Prova - - - - &Advanced >> - &Avançat >> - - - - &Half Duplex - Semi &dúplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Format - - - - AvatarWidget - - - Form - Format - - - - BrowserSoftUpdateWindow - - - Close - Tanca - - - - @product@ - Update available - @product@ - Actualització disponible - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3er: - - - - 1st: - 1er: - - - - 2nd: - 2on: - - - - - - (+ country code) phone number - (+ codi del país) número de telèfon - - - - Forward all unanswered calls to message box - Desvia totes les trucades sense contestar a la bústia de missatges - - - - Disable call forwarding - Inhabilita la desviació de trucades - - - - Forward all unanswered calls to following phone numbers: - Desvia totes les trucades sense contestar als números de telèfon següents: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Per exemple +3493500XXXX (+34 és el codi del país i 93500XXXX es el número de telèfon) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - La desviació de trucada s'activarà si no esteu connectat a @company@, o bé quan la línia estigui comunicant, o bé 20 segons després de no contestar una trucada. Podeu configurar més de tres desviacions de trucada a telèfons fixes, telèfons mòbils o bústia de veu (si és que en disposeu) - - - - CallToaster - - - Incoming Call - Trucada entrant - - - - Message - Missatge - - - - ChatLogViewer - - - Chat History - Historial del xat - - - - &Contact - &Contacte - - - - &Tools - &Eines - - - - &Help - &Ajuda - - - - &Actions - &Accions - - - - Main Toolbar - Barra d'eines principal - - - - - - Call Contact - Truca el contacte - - - - - - Send a File - Envia un fitxer - - - - createChatConf - Configuració del xat - - - - - - Show Contact Info - Mostra informació del contacte - - - - blockContact - Bloca el contacte - - - - &Save History As... - Anomena i &desa l'historial... - - - - actionRestartChat - Reinicia el xat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contacte - - - - &Tools - &Eines - - - - &Actions - &Accions - - - - Main Toolbar - Barra d'eines principal - - - - - - Call Contact - Truca el contacte - - - - - - Send a File - Envia un fitxer - - - - - - Show Contact Info - Mostra informació del contacte - - - - blockContact - Bloca el contacte - - - - &Save History As... - Anomena i &desa l'historial... - - - - @company@ - @company@ - - - - MainWindow - Finestra Principal - - - - &Edit - &Edita - - - - Cu&t - Re&talla - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copia - - - - Ctrl+C - Ctrl+C - - - - &Paste - Engan&xa - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Inicia una conferència de xat - - - - &Close - &Tanca - - - - Conference - Conferència - - - - ChatRoomInviteWidget - - - Chat room - Sala de xat - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de xat</span></p></body></html> - - - - (Conference participants) - (Participants a la conferència) - - - - &Remove - &Suprimeix - - - - &Start - &Inicia - - - - Group Name - Nom del grup - - - - &Add - &Afegeix - - - - ChatToaster - - - Message - Missatge - - - - Incoming Chat - Xat entrant - - - - ChatWidget - - - Form - Format - - - - ConferenceCallWidget - - - Cancel - Cancel·la - - - - Start - Inicia - - - - Phone number 2: - Número de telèfon 2: - - - - Phone number 1: - Número de telèfon 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Establiment d'una conferència - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferència</span><br /><br />Escriviu dos números de telèfon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> o bé identificadors de contacte de @company@ per a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iniciar una conferència a tres.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferència</span><br /><br />Escriviu dos números de telèfon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"> o bé identificadors de contacte de @company@ per a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">iniciar una conferència a tres.</p> - - - - &Add >> - &Afegeix >> - - - - << &Remove - << &Suprimeix - - - - Available Contacts - Contactes disponibles - - - - &Start - &Inicia - - - - Cancel - Cancel·la - - - - ContactGroupPopupMenu - - - Remove Contact Group - Elimina el grup de contactes - - - - Rename Contact Group - Canvia el nom del grup de contactes - - - - Delete group - Suprimeix el grup - - - - Do you really want to delete this group? - Esteu segur que voleu suprimir el grup? - - - - &Yes - &Sí - - - - &No - &No - - - - ContactList - - - Contact List - Llista de contactes - - - - ContactWidget - - - No mobile phone number set - No hi ha cap número de telèfon mòbil definit - - - - No landline phone number set - No hi ha cap número de telèfon fixe definit - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic per a editar aquest contacte</p></body></html> - - - - CrashReport - - - Cancel - Cancel·la - - - - Program Failure - Fallada del programa - - - - Send - Envia - - - - Optional Information - Informació opcional - - - - Your Mail: - La vostra adreça electrònica: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - No disponible - - - - Click here to change your call forward settings - Clica aquí per a canviar les opcions del reenviament de trucada - - - - Call forward mode: - Mode de desviació de trucada: - - - - Purchase call out credits - Compra crèdit de trucada - - - - Call Forward Method - Mètode de desviació de trucada - - - - Call Voice Mail - Truca la bústia de veu - - - - Click here to buy @company@'s credits - Feu clic aquí per a comprar crèdit de @company@ - - - - DesktopService - - - Root Folder - Carpeta pare - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Feu clic en els diversos elements que canvien de color per a enviar sons al vostre interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Feu clic aquí per a trucar la vostra bústia de veu - - - - New Voice Mail: - Missatge de veu nou: - - - - Click here to see missed call(s) - Feu clic aquí per a veure les trucades perdudes - - - - Missed Call(s): - Trucades perdudes: - - - - FileTransferDialog - - - ... - ... - - - - Download - Baixa - - - - Upload - Puja - - - - Click here to change your download folder - Feu clic aquí per a canviar la vostra carpeta de baixades - - - - Download folder: - Carpeta de baixades: - - - - Clean all items in the list - Neteja tots els elements de la llista - - - - &Clean - &Neteja - - - - @product@ - File Transfer Manager - @product@ - Gestor de les transferències de fitxers - - - - FileTransferItem - - - Cancel - Cancel·la - - - - Form - Format - - - - Pause - Pausa - - - - <i>From:</i> - <i>De:</i> - - - - GeneralSettings - - - When I double-click on a contact - En fer doble clic en el contacte - - - - Call cell phone or land line if contact not online - Fes una trucada al telèfon mòbil o telèfon fixe si el contacte no està en línia - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Estat inactiu - - - - minutes - minuts - - - - Show me as "Away" when I am inactive for: - Mostra'm com a «absent» quan hagi estat inactiu durant: - - - - When I start my computer - En iniciar l'ordinador - - - - Automatically start @product@ - Inicia @product@ automàticament - - - - GoogleTalkSettings - - - Login: - Entrada: - - - - Password: - Contrasenya: - - - - GoogleTalk Settings - Paràmetres del GoogleTalk - - - - Forgot your GoogleTalk password? - Heu oblidat la contrasenya del GoogleTalk? - - - - Get a new GoogleTalk Account - Creeu un compte nou del GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Cancel·la - - - - HTTP Proxy Address: - Adreça del servidor intermediari d'HTTP: - - - - HTTP Proxy Port Number: - Número de port del servidor intermediari d'HTTP: - - - - HTTP Proxy Login: - Dades d'entrada del servidor intermediari d'HTTP: - - - - HTTP Proxy Password: - Contrasenya del servidor intermediari d'HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autenticació del servidor intermediari d'HTTP</span><br><br><span>El vostre servidor intermediari d'HTTP local utilitza autenticació<br>Escriviu les dades d'entrada i la contrasenya</span> - - - - OK - D'acord - - - - @product@ - Local HTTP Proxy - @product@ - Servidor intermediari HTTP local - - - - ICQSettings - - - Login: - Entrada: - - - - Password: - Contrasenya: - - - - ICQ Settings - Paràmetres de l'ICQ - - - - Forgot your ICQ password? - Heu oblidat la vostra contrasenya de l'ICQ? - - - - Get a new ICQ Account - Creeu un compte nou de l'ICQ - - - - IMAccountManager - - - Close - Tanca - - - - Login - Accés - - - - Add - Afegeix - - - - Delete - Suprimeix - - - - Modify - Modifica - - - - Protocol - Protocol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Els meus comptes de missatgeria instantània (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Cancel·la - - - - Save - Desa - - - - IM Account Settings - Paràmetres del compte de MI - - - - IMContactManager - - - Add - Afegeix - - - - Delete - Suprimeix - - - - Contact Type (protocol) - Tipus de contacte (protocol) - - - - Click on the add button below to add a new ID - Feu clic en el botó de sota per a afegir un nou identificador - - - - Contact ID - Identificador del contacte - - - - IMProfileWidget - - - - Enter your nickname here - Escriviu el vostre sobrenom aquí - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Crea un compte de missatgeria instantània (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Crea un compte nou de missatgeria instantània (MI) - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic aquí per a canviar el vostre àvatar</p></body></html> - - - - ImageSelector - - - Cancel - Cancel·la - - - - OK - D'acord - - - - Go Up - Vés cap amunt - - - - Refresh - Referesca - - - - JabberSettings - - - Login: - Entrada: - - - - Password: - Contrasenya: - - - - Jabber Settings - Paràmetres del Jabber - - - - Connect Server: - Connecta al servidor: - - - - <u>Advanced Options</u> - <u>Opcions Avançades</u> - - - - Require TLS - Requereix TLS - - - - Port: - Port: - - - - Use TLS if available - Utilitza TLS si està disponible - - - - Allow plaintext authentication over unencrypted streams - Permet l'autenticació per mitjà de text a través de corrents de dades no xifrats - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Força la utilització del port antic (5223) de l'SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - El vostre idioma no és en aquesta llista. Sabíeu que podeu traduir aquest programa en el Launchpad? - - - - More information here. - Més informació aquí. - - - - LogAccount - - - Password: - Contrasenya: - - - - Need help? - Necessiteu ajuda? - - - - Cancel - Cancel·la - - - - Delete - Suprimeix - - - - @product@ - Login - @product@ - Entrada - - - - Account: - Compte: - - - - &Connect - &Connecta - - - - Forgot your @company@ password? - Heu oblidat la vostra contrasenya de @company@? - - - - &Modify - &Modifica - - - - Configure a &New Profile - Configura un &perfil nou - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Trieu un perfil que hagueu utilitzat prèviament<br/> o bé ompliu la informació necessària <br/> per a connectar-vos a un compte de @company@</span> - - - - MSNSettings - - - Login: - Entrada: - - - - Password: - Contrasenya: - - - - MSN Settings - Paràmetres de l'MSN - - - - Forgot your MSN password? - Heu oblidat la contrasenya de l'MSN? - - - - Get a new MSN Account - Creeu un nou compte de l'MSN - - - - Use HTTP method - Utilitza el mètode HTTP - - - - MainWindow - - - MainWindow - Finestra Principal - - - - Command::terminate() - Ordre::termina() - - - - Command::start() - Ordre::inicia() - - - - Accept Call - Accepta la trucada - - - - Send Chat Message - Envia un missatge de xat - - - - Make Call - Fes una trucada - - - - Hang Up - Penja - - - - ManageBlockedUsersSettings - - - Close - Tanca - - - - Unblock User - Desfés el blocat de l'usuari - - - - Manage blocked users - Gestió dels usuaris blocats - - - - @product@ - Manage blocked users - @product@ - Gestió dels usuaris blocats - - - - NoWengoAlert - - - @product@ - SMS - @product@ - Missatges de text - - - - I have a @company@ account - Ja tinc un compte de @company@ - - - - Create a @company@ account - Crea un compte de @product@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Per a enviar un missatge de text heu d'estar connectat a través d'un<br>compte de @company@ i tenir crèdit de @company@. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Seleccioneu els esdeveniments per als quals s'ha de reproduir un so. - - - - NotificationSettingsItem - - - Sound file - Fitxer de so - - - - Find a sound file - Cerca un fitxer de so - - - - Play sound file - Reprodueix el fitxer de so - - - - Play - Reprodueix - - - - NotifyDialog - - - File Transfer - Transferència de fitxers - - - - &Ok - &D'acord - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estat:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualitza</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Accepta - - - - Status - Estat - - - - 00:00:00 - 00:00:00 - - - - Nickname - Sobrenom - - - - &Reject - De&sestima - - - - Dialpad - Marcador - - - - Audio Smileys - Emoticones d'àudio - - - - - Communication is encrypted - La comunicació és xifrada - - - - PrivacySettings - - - Manage blocked users - Gestió dels usuaris blocats - - - - Privacy Rules - Regles de privadesa - - - - Always sign in as "Invisible" (appear offline to all users) - Connecta'm sempre amb l'estat «invisible» (la resta d'usuaris em veuran com a «fora de línia») - - - - Allow chats from - Permet rebre invitacions de xat de - - - - - Anyone - Qualsevol - - - - - Only people from my contact list - Només persones de la meva llista de contactes - - - - Allow calls from - Permet rebre trucades de - - - - When I sign into @company@ - En connectar-me a @company@ - - - - ProfileDetails - - - Cancel - Cancel·la - - - - Save - Desa - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Feu clic aquí per a canviar el vostre àvatar</p></body></html> - - - - General - General - - - - Network IDs (MSN, Jabber...) - Identificadors de xarxa (MSN, Jabber...) - - - - Advanced >> - Avançat >> - - - - Fill in all your network Id to stay connected with your contacts - Ompliu tots els identificadors de xarxa per a romandre connectat amb els vostres contactes - - - - Contact - Contacte - - - - Group: - Grup: - - - - Last Name: - Cognom: - - - - First Name: - Nom: - - - - Details - Detalls - - - - Web/blog: - Web/bloc: - - - - Country: - País: - - - - State: - Estat: - - - - City: - Ciutat: - - - - Gender: - Sexe: - - - - Birth Date: - Data de naixement: - - - - Email: - Correu electrònic: - - - - Notes - Notes - - - - Phone Numbers - Números de telèfon - - - - Home phone - Telèfon del domicili - - - - Mobile phone - Telèfon mòbil - - - - dd MMMM yyyy - dd MMM aaaa - - - - Unknown - Desconegut - - - - Male - Home - - - - Female - Dona - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Comptes - - - - Accounts Settings - Paràmetres dels comptes - - - - QtAddAccount - - - Configure your voip account - Configureu el vostre compte de veu per internet (voip) - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Indiqueu si el proveïdor del vostre compte és <br/>@company@ o un altre servei - - - - QtAddAccountUtils - - - Test - Prova - - - - Audio Test Call - Trucada d'àudio de prova - - - - Video Test Call - Trucada de vídeo de prova - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Ompliu la informació que <br/>permetrà el vostre telèfon per programari connectar-vos al vostre<br/>compte SIP - - - - Configure your SIP profile - Configureu el vostre perfil SIP - - - - QtAddWengoAccount - - - Login - Accés - - - - Please enter an email address. - Escriviu una adreça de correu electrònic. - - - - Please enter your email address<br/>and your password - Escriviu la vostra adreça de correu electrònic<br/>i la vostra contrasenya - - - - @product@ - Connexion - @product@ - Connexió - - - - QtAdvancedIMContactManager - - - Cancel - Cancel·la - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Esteu segur de voler eliminar aquest contacte de MI? - - - - - &Delete - &Suprimeix - - - - QtAdvancedSettings - - - Advanced - Avançat - - - - Advanced Settings - Configuració avançada - - - - QtAppearanceSettings - - - - Me - Jo - - - - Hello - Hola - - - - How are you? - Com estàs? - - - - - - Other - Altres - - - - I am fine - Estic bé - - - - Have to go - Me n'he d'anar - - - - Bye - Adéu - - - - Appearance - Aparença - - - - Appearance Settings - Configuració de l'aparença - - - - QtAudioSettings - - - - Advanced - Avançat - - - - Audio - Àudio - - - - Audio Settings - Configuració de l'àudio - - - - QtCallBar - - - +(country code) number or nickname - +(codi de país) número o sobrenom - - - - QtCallForwardSettings - - - - Call Forward - Desviació de trucada - - - - Call Forward Settings - Configuració de la desviació de trucada - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Anomena i desa - - - - QtChatLogViewer - - - Edit Contact - Edita el contacte - - - - QtChatTabWidget - - - Close chat - Tanca el xat - - - - QtChatWidget - - - %1 is connected. - %1 està connectat/connectada. - - - - %1 is disconnected. - %1 està desconnectat/desconnectada. - - - - send - envia - - - - Your file can not be sent: your contact must be connected on the @company@ network. - No es pot enviar el vostre fitxer: el contacte ha d'estar connectat a la xarxa de @company@ per a poder-ho fer. - - - - Your contact wishes to send a file with @company@. - El vostre contacte vol enviar un fitxer a través de @company@. - - - - Go to %1 to install it - Aneu a %1 per a instal·lar-ho - - - - %1 has joined the chat - %1 ha entrat al xat - - - - %1 has left the chat - %1 ha sortit del xat - - - - QtChatWindow - - - Edit Contact - Edita el contacte - - - - @product@ Chat - Xat de @product@ - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Trucada SIP - - - - Call land line - Trucada a un telèfon fixe - - - - Call Mobile - Trucada a un telèfon mòbil - - - - Call @company@ - Trucada @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Ara podeu informar el vostre primer interlocutor que formarà part d'una trucada de conferència.</b><br>Quan ho hagueu fet, feu clic en el botó de sota. El vostre primer interlocutor serà posat en espera i mentrestant es trucarà el vostre segon interlocutor.<br> - - - - Hold first interlocutor and call second one - Poseu el primer interlocutor en espera i truqueu el segon - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Ara podeu informar el vostre segon interlocutor que formarà part d'una trucada de conferència.</b><br><br>Quan ho hagueu feu clic en el botó de sota per a iniciar la conferència. - - - - Start Conference - Inicia una conferència - - - - - @product@ - Proceed Conference - @product@ - Procedeix amb la conferència - - - - QtContactList - - - &Yes - &Sí - - - - &No - &No - - - - Merge %1 with %2? - Voleu fusionar %1 amb %2? - - - - @product@ - Merge Contacts - @product@ - Fusió de contactes - - - - QtContactManager - - - &Yes - &Sí - - - - &No - &No - - - - Home phone - Telèfon del domicili - - - - Mobile phone - Telèfon mòbil - - - - @product@ - @product@ - - - - Edit Contact - Edita el contacte - - - - Do you really want to delete this contact? - Esteu segur que voleu suprimir aquest contacte? - - - - Start chat - Inicia un xat - - - - - Delete contact - Suprimeix el contacte - - - - Call - Trucada - - - - Free call - - - - - Work phone - Telèfon de la feina - - - - Send SMS - Envia un missatge de text - - - - Edit contact - Edita el contacte - - - - Block contact - Bloca el contacte - - - - Invite to conference - Convida a una conferència - - - - Go to website - Ves al lloc web - - - - Send file - Envia un fitxer - - - - Forward to mobile phone - Desvia cap al telèfon mòbil - - - - QtContactWidget - - - No mobile phone number set - No hi ha cap número de telèfon mòbil definit - - - - No landline phone number set - No hi ha cap número de telèfon fixe definit - - - - - Click here to call - Feu clic aquí per a trucar - - - - - Click here to set a phone number - Feu clic aquí per a definir un número de telèfon - - - - Click here to edit the contact - Feu clic aquí per a editar el contacte - - - - Click here to send a SMS - Feu clic aquí per a enviar un missatge de text - - - - Click here to start a chat - Feu clic aquí per a iniciar un xat - - - - Click here to start a free call - Feu clic aquí per a iniciar una trucada gratuïta - - - - Click here to send a file - Feu clic aquí per a enviar un fitxer - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Voleu trucar la vostra bústia de veu - - - - @product@ - Voice Mail - @product@ - Bústia de veu - - - - QtFileTransfer - - - &Yes - &Sí - - - - &No - &No - - - - Choose a directory - Seleccioneu un directori - - - - Overwrite File? - Voleu sobreescriure el fitxer? - - - - A file called %1 already exists.Do you want to overwrite it? - Ja hi ha un fitxer anomenat %1. Voleu sobreescriure'l? - - - - - File size error - Error en la mida del fitxer - - - - %1 exceeds the maximum authorized size. - %1 excedeix la mida màxima autoritzada. - - - - %1 has size 0. - La mida de %1 és 0. - - - - %1 is a directory. - %1 és un directori - - - - You can not send a directory. - No podeu enviar un directori. - - - - %1 is a shortcut. - %1 és una drecera. - - - - You can not send a shortcut. - No podeu enviar una drecera. - - - - All Files (*.* *) - Tots els fitxers (*.* *) - - - - Please upgrade<br> your @product@ - Hauríeu d'actualitzar<br> la vostra versió de @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Hauríeu de dir al vostre contacte que ha<br> d'actualitzar<br> la seva versió de @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - No podeu rebre el fitxer: hauríeu d'actualitzar la vostra versió de @product@ per a rebre'l. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - està intentant enviar-vos un fitxer, però la seva versió de @product@ s'ha d'actualitzar per a poder-lo rebre. Hauríeu de dir-li que es baixi l'última versió del programa. - - - - QtFileTransferItem - - - - - Cancel - Cancel·la - - - - Remove - Suprimeix - - - - - Pause - Pausa - - - - Starting - S'està iniciant - - - - From: - De: - - - - To: - Per a: - - - - Open - Obre - - - - Resume - Reprèn - - - - Waiting for anwser... - S'està esperant una resposta... - - - - Done - Fet - - - - Failed - Ha fallat - - - - Paused - En pausa - - - - Paused by peer - En pausa per l'altre usuari - - - - Cancelled - Cancel·lat - - - - Cancelled by peer - Cancel·lat per l'altre usuari - - - - - Downloading... - S'està baixant... - - - - Uploading... - S'està pujant... - - - - Waiting for peer... - S'està esperant l'altre usuari... - - - - An error occured during the file transfer - S'ha produït un error durant la transferència de fitxers - - - - This may be caused by : - Pot haver estat causat per: - - - - Your @product@ is not up to date. Please download the latest version on - La vostra versió de @product@ no és actual. Hauríeu de baixar l'última versió des de - - - - The @company@ network may be temporarily unavailable. Please try later. - Pot ser que la xarxa de @company@ no estigui disponible temporalment. Proveu-ho de nou d'aquí a una estona. - - - - QtGeneralSettings - - - General - General - - - - General Settings - Paràmetres Generals - - - - QtHistory - - - Incoming call - Trucada entrant - - - - Outgoing call - Trucada sortint - - - - Missed call - Trucada perduda - - - - Rejected call - Trucada desestimada - - - - Outgoing SMS - Missatge de text sortint - - - - Do you want to call %1? - Voleu trucar %1? - - - - Chat session - Sessió de xat - - - - @product@ - Call History - @product@ - Historial de trucades - - - - Type - Tipus - - - - Name/ID - Nom/identificador - - - - Date - Data - - - - Duration - Durada - - - - QtHistoryWidget - - - Erase this entry - Esborra aquesta entrada - - - - Open in SMS window - Obre en una finestra de missatges de text - - - - Call this peer - Truca aquest usuari - - - - Show chat log - Mostra el registre dels xats - - - - QtIMAccountManager - - - Cancel - Cancel·la - - - - @product@ - @product@ - - - - &Delete - &Suprimeix - - - - Are sure you want to delete this account? - - Esteu segur de voler suprimir aquest compte? - - - - - QtIMAccountMonitor - - - - - Disconnected - Desconnectat - - - - Error: %1 - Error: %1 - - - - Online - En línia - - - - Invisible - Invisible - - - - Away - Absent - - - - Do not disturb - No em molesteu - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Escriviu un nom d'usuari - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancel·la - - - - @product@ - @product@ - - - - &Delete - &Suprimeix - - - - Online - En línia - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - No em molesteu - - - - Disconnect - Desconnecta - - - - Delete Account - Suprimeix el compte - - - - Are sure you want to delete the account <b>%1</b>? - Esteu segur de voler suprimir el compte <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Edita el meu perfil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Idioma - - - - Language Settings - Configuració de l'idioma - - - - QtLogAccount - - - Invalid account - Compte no vàlid - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Si us plau, trieu un perfil que hagueu utilitzat anteriorment<br/> o bé ompliu la informació per a connectar-vos a un<br/> compte de @company@ - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Connexió - - - - QtNotificationSettings - - - Incoming call (ringtone) - Trucada entrant (to de trucada) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Trucada finalitzada (to en penjar) - - - - Incoming chat - Xat entrant - - - - IM account connected - Compte de MI connectat - - - - IM account disconnected - Compte de MI desconnectat - - - - Contact online - Contacte en línia - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Escolliu un fitxer de so - - - - Sounds - Sons - - - - QtPhoneCall - - - Status - Estat - - - - Incoming Call - Trucada entrant - - - - Resume - Reprèn - - - - Hang-up - Penja - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Error - - - - Talking - Esteu parlant - - - - Dialing - S'està marcant - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - S'està trucant - - - - Redirected - Desviada - - - - Initialization... - S'està inicialitzant... - - - - Closed - Tancada - - - - - Hold - Posa en espera - - - - Add contact - Afegeix un contacte - - - - Ca&ncel - Ca&ncel·la - - - - Talking - Conference - Esteu parlant - conferència - - - - Add a Contact - Afegeix un contacte - - - - QtPresenceMenuManager - - - Online - En línia - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - No em molesteu - - - - Log off - Desconnecta - - - - QtPrivacySettings - - - Privacy - Privadesa - - - - Privacy Settings - Configuració de la privadesa - - - - QtProfileBar - - - Click here to change your status - Feu clic aquí per a canviar el vostre estat - - - - - active - actiu - - - - voicemail - bústia de veu - - - - inactive - inactiu - - - - unauthorized - no autoritzat - - - - Set global presence to: - Estableix l'estat de presència global a: - - - - Voice mail - Bústia de veu - - - - QtProfileDetails - - - Advanced >> - Avançat >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Un contacte ha de ser part d'un grup, si us plau seleccioneu-ne un. - - - - << Simple - << Simple - - - - Select your avatar - Seleccioneu el vostre àvatar - - - - @product@ - No Group Selected - @product@ - No s'ha seleccionat cap grup - - - - @company@ Avatars - Àvatars de @company@ - - - - QtRenameGroup - - - Bad group name - Nom de grup erroni - - - - Group name cannot be empty - El nom del grup no es pot deixar en blanc - - - - QtSecuritySettings - - - Security - Seguretat - - - - Security Settings - Configuració de la seguretat - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Escriviu un número de telèfon, si us plau. - - - - Do you want to continue? - Voleu continuar? - - - - Your SMS has not been sent - No s'ha enviat el vostre missatge de text - - - - Your SMS has been sent - S'ha enviat el vostre missatge de text - - - - Your message is too long. -This will send - El vostre missatge és massa llarg. -Això enviarà - - - - SMS. - - missatge de text. - - - - - You can not send an empty message. - No podeu enviar un missatge en blanc. - - - - - - - @company@ SMS service - Servei de missatgeria de text de @company@ - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - L'actualització ha fallat - - - - @product@ update failed to start: try to update @product@ manually - No s'ha pogut iniciar l'actualització de @product@: proveu de dur a terme l'actualització manualment - - - - QtStatusBar - - - - Not connected - No connectat - - - - Register done - S'ha efectuat el registre - - - - Unregister done - S'ha desfet el registre - - - - Connecting - S'està connectant - - - - Output volume is muted - El volum de sortida està emmudit - - - - Output volume is 0 - El volum de sortida és 0. - - - - Click to adjust output volume - Cliqueu per a ajustar el volum de sortida - - - - Input volume is muted - El volum d'entrada està emmudit. - - - - Input volume is 0 - El volum d'entrada és 0. - - - - Click to adjust input volume - Cliqueu per a ajustar el volum d'entrada - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Estat - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Trucada SIP - - - - Call land line - Trucada a un telèfon fixe - - - - Call Mobile - Trucada a un telèfon mòbil - - - - Call @company@ - Trucada @company@ - - - - Call - Trucada - - - - Send SMS - Envia un missatge de text - - - - Online - En línia - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - No em molesteu - - - - Internet Connection Error - Connexió d'Internet amb errors - - - - Offline - Fora de línia - - - - Connecting... - S'està connectant... - - - - Send a SMS - Envia un missatge de text - - - - Start a chat - Inicia un xat - - - - Place Call - Fes una trucada - - - - Send File - Envia un fitxer - - - - Multiple Status - Estats múltiples - - - - Unknown Status - Estat desconegut - - - - Quit @product@ - Surt de @product@ - - - - QtToolBar - - - &Cancel - &Cancel·la - - - - @product@ - Proceed Conference - @product@ - Procedeix amb la conferència - - - - Edit My Profile - Edita el meu perfil - - - - Add a Contact - Afegeix un contacte - - - - Hide Unavailable Contacts - Oculta els contactes no disponibles - - - - Show Unavailable Contacts - Mostra els contactes no disponibles - - - - Hide Groups - Oculta els grups - - - - Show Groups - Mostra els grups - - - - You have unfinished call(s). - Teniu trucades no finalitzades. - - - - Are you sure you want to log off? - Esteu segur de voler desconnectar? - - - - &Log Off - De&sconnecta - - - - Disable &Video Calls - Inhabilita les trucades de &vídeo - - - - Enable &Video Calls - Habilita les trucades de &vídeo - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>No es pot iniciar la conferència mentre hi hagi trucades actives.</b><br><br>Hauríeu de finalitzar totes les trucades i intentar-ho de nou. - - - - @product@ - Warning - @product@ - Avís - - - - - Log &Off... - &Desconnecta... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Llista de contactes - - - - QtUserProfile - - - Edit Contact - Edita el contacte - - - - - &Authorize - &Autoritza - - - - - &Block - &Bloca - - - - Network error. - Error de la xarxa. - - - - - @product@ - Authorization Request - @product@ - Sol·licitud d'autorització - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - S'ha produït un problema en carregar el vostre perfil. -En lloc d'aquest s'ha carregat l'última còpia de seguretat. -És possible que els últims canvis que hagueu fet s'hagin perdut - - - - Your profile could not be loaded. -Choose another profile or create a new one. - No s'ha pogut carregar el vostre perfil. -Trieu un altre perfil o bé creeu-ne un de nou. - - - - Wrong email/password entered - Heu escrit una adreça de correu electrònic o contrasenya equivocades - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Vídeo - - - - - Normal - Normal - - - - - Good - Bona - - - - - Very good - Molt bona - - - - - Excellent - Excel·lent - - - - Video Settings - Configuració del vídeo - - - - QtVoicemailSettings - - - Voicemail - Bústia de veu - - - - Voicemail Settings - Configuració de la bústia de veu - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Directori - - - - QtWengoConfigDialog - - - Advanced - Avançat - - - - General - General - - - - Accounts - Comptes - - - - Audio - Àudio - - - - Call Forward - Desviació de trucada - - - - Language - Idioma - - - - Privacy - Privadesa - - - - Video - Vídeo - - - - Voicemail - Bústia de veu - - - - security - seguretat - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancel·la - - - - - - - Conference - Conferència - - - - Call - Trucada - - - - Account - - - - - Add a Contact - Afegeix un contacte - - - - You have unfinished call(s). - Teniu trucades no finalitzades. - - - - @product@ - Warning - @product@ - Avís - - - - - Home - Inici - - - - Are you sure you want to exit the application? - Esteu segur de voler sortir del programa? - - - - &Exit - &Surt - - - - @product@ - Call Error - @product@ - Error de trucada - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancel·la - - - - OK - D'acord - - - - Enter the new group name: - Escriviu el nom nom per al grup: - - - - @product@ - Rename Contact Group - @product@ - Canvi del nom del grup de contactes - - - - SecuritySettings - - - Form - Format - - - - Enable call encryption - Habilita el xifratge de les trucades - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ pot xifrar les trucades a través del sistema de xifrat AES de 128 bits i del sistema Diffie-Hellman per a l'intercanvi de claus. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Actualitza el perfil - - - - Yahoo! ID: - Identificador del Yahoo!: - - - - MSN ID: - Identificador de l'MSN - - - - Jabber/GoogleTalk ID: - Identificador del Jabber/GoogleTalk: - - - - exemple: username@server - exemple: usuari@servidor - - - - SIP ID: - Identificador SIP: - - - - ICQ ID: - Identificador de l'ICQ: - - - - AIM ID: - Identificador de l'AIM: - - - - @company@ ID: - Identificador de @company@: - - - - SmsWindow - - - Send - Envia - - - - @product@ - SMS - @product@ - Missatges de text - - - - Click here to add a phone number - Feu clic aquí per a afegir un número de telèfon - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Escriviu la vostra signatura aquí - - - - Signature: - Signatura: - - - - Phone number(s): - Número(s) de telèfon: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Escriviu els números de telèfon aquí<br>Han d'estar separats pels caràcters & o bé ; o bé , - - - - SoftUpdateWindow - - - Cancel - Cancel·la - - - - @product@ - Downloading update - @product@ - Baixada d'una actualització - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Format - - - - VideoSettings - - - Normal - Normal - - - - Good - Bona - - - - Very good - Molt bona - - - - Excellent - Excel·lent - - - - Enable video - Habilita el vídeo - - - - Webcam Selection - Selecció de la càmera web - - - - Webcam device: - Càmera web: - - - - Webcam Preview - Visualització prèvia de la càmera web - - - - Connection Type - Tipus de connexió - - - - Video quality - Qualitat de vídeo - - - - Down (kbit/s) - Baixada (kbit/s) - - - - Up (kbit/s) - Pujada (kbit/s) - - - - 0 to 512 - De 0 a 512 - - - - 0 to 128 - De 0 a 128 - - - - 512 to 2048 - De 512 a 2048 - - - - 128 to 256 - De 128 a 256 - - - - 2048+ - Més de 2048 - - - - 256+ - Més de 256 - - - - 8192+ - Més de 8192 - - - - 1024+ - Més de 1024 - - - - Video quality depends on your Internet connection bandwidth - La qualitat de vídeo depèn de l'amplada de banda de la vostra connexió a Internet - - - - Make a test video call - Fes una trucada de vídeo de prova - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Vídeo - - - - VoicemailSettings - - - Form - Format - - - - Phone number of your voicemail: - Número de telèfon de la vostra bústia de veu: - - - - Please fill in here the information about your voicemail - Escriviu la informació referent a la vostra bústia de veu aquí - - - - WengoConfigDialog - - - Cancel - Cancel·la - - - - Save - Desa - - - - Title - Títol - - - - @product@ - Configuration - @product@ - Configuració - - - - WengoPhoneWindow - - - &Accept - &Accepta - - - - &Hidden - O&cult - - - - &Tools - &Eines - - - - &Help - &Ajuda - - - - &Actions - &Accions - - - - @company@ - @company@ - - - - &Close - &Tanca - - - - Dialpad - Marcador - - - - @product@ - @product@ - - - - Start Conference - Inicia una conferència - - - - Send SMS - Envia un missatge de text - - - - Contacts - Contactes - - - - History - Historial - - - - Clear &History - Neteja l'&historial - - - - ToolBar - Barra d'eines - - - - Show/Hide Unavailable &Contacts - Mostra/oculta els &contactes no disponibles - - - - &Chat Sessions - Sessions de &xat - - - - &All - T&ot - - - - &HangUp - &Penja - - - - &Hold/Resume - Posa en espe&ra/reprèn - - - - Show/Hide &Groups - Mostra/oculta els &grups - - - - &Outgoing Calls - Trucades &sortints - - - - &Incoming Calls - Trucades &entrants - - - - &Missed Calls - Tru&cades perdudes - - - - Enable/Disable &Video Calls - Habilita/inhabilita les trucades de &vídeo - - - - Short Text &Messages (SMS) - Missatges de te&xt (SMS) - - - - Rejected Calls - Trucades desestimades - - - - &Contacts - &Contactes - - - - &About... - &Quant a... - - - - Add &Contact... - Afegeix un &contacte... - - - - &Configuration... - &Configuració... - - - - Send SMS... - Envia un missatge de text... - - - - View My &Profile... - Visualitza el meu &perfil... - - - - - View My Profile - Visualitza el meu perfil - - - - Start &Conference... - Inicia una &conferència... - - - - &Find Contact... - Cerca un &contacte... - - - - Log &Off... - &Desconnecta... - - - - - Log Off - Desconnecta - - - - Show &Chat Window - Mostra la finestra del &xat - - - - - Show Chat Window - Mostra la finestra del xat - - - - Show &File Transfer - Mostra les transferències de &fitxers - - - - Add Contact - Afegeix un contacte - - - - View My @company@ Account... - Visualitza el meu compte de @company@... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - &Fòrum de @company@... - - - - @company@ &Wiki/FAQ... - PMF/&Wiki de @company@... - - - - Learn more about @company@ Services... - Obteniu més informació dels serveis de @company@... - - - - Search - Cerca - - - - Find @company@ Contacts - Cerca contactes de @company@ - - - - &Quit - &Surt - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Text sota les icones - - - - &Icons Only - Només &icones - - - - Add - Afegeix - - - - SMS - Missatges de text - - - - Conference - Conferència - - - - Wizard - - - Cancel - Cancel·la - - - - Finish - Finalitza - - - - Next > - Següent > - - - - < Back - < Enrere - - - - Simple Wizard - Step %1 of %2 - Auxiliar simple - pas %1 de %2 - - - - YahooSettings - - - Login: - Entrada: - - - - Password: - Contrasenya: - - - - Yahoo! Settings - Configuració del Yahoo! - - - - Use Yahoo! Japan server - Utilitza el servidor del Yahoo! del Japó - - - - Forgot your Yahoo! password? - Heu oblidat la vostra contrasenya del Yahoo!? - - - - Get a new Yahoo! Account - Crea un compte nou del Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cs.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4762 +0,0 @@ - - - - - AIMSettings - - - Login: - Přihlašovací jméno: - - - - Forgot your AIM password? - Zapomněli jste AIM heslo? - - - - Get a new AIM Account - Vytvořit nový AIM účet - - - - Password: - Heslo: - - - - AIM Settings - Nastavení AIM - - - - AboutWindow - - - About - Informace o aplikaci - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autoři - - - - Close - Zavřít - - - - 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. - Tento program je svobodný software; můžete jej redistribuovat a/nebo upravovat za podmínek GNU Genarl Public License jak je zveřejněna Free Software Foundation; buď podle verze 2 této licence nebo (dle vašeho uvážení) podle libovolné pozdější verze. - - - - @product@ - About - @product@ - O programu - - - - @product@, a voice over Internet phone - @product@, volání přes internet - - - - AcceptDialog - - - File Transfer - Přenos souboru - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Přijmout - - - - &Cancel - Z&rušit - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Název souboru: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Příchozí soubor</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Upravit profil - - - - AddAccount - - - Configure your account: - Nastavit účet: - - - - &Next - &Další - - - - Need help? - Potřebujete pomoc? - - - - You don't have any account ? Click here - Nemáte žádný účet? Klikněte sem - - - - &Back - &Zpět - - - - Cancel - Zrušit - - - - @product@ - Login - @product@ - Přihlášení - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Konfigurujte svůj voip účet</span><br><br><span>Sdělte nám, prosím, je-li váš účet poskytován <br/>@company@ nebo jinou službou</span> - - - - @company@ account - @company@ účet - - - - Generic SIP account - Generický SIP účet - - - - AddIMContact - - - Cancel - Zrušit - - - - Contact Type (protocol): - Typ kontaktu (protokol): - - - - Contact ID: - ID kontaktu: - - - - Account: - Účet: - - - - Enable - Povolit - - - - Login - Přihlásit se - - - - Add - Přidat - - - - @product@ - Add a Contact Account - @product@ - Přidat účet kontaktu - - - - AddSIPAccount - - - Password: - Heslo: - - - - Need help? - Potřebujete pomoc? - - - - &Back - &Zpět - - - - Cancel - Zrušit - - - - @product@ - Login - @product@ - Přihlášení - - - - &Connect - &Připojit - - - - Activate presence and chat (SIP/SIMPLE) - Aktivovat přítomnost a chat (SIP/SIMPLE) - - - - Displayname: - Zobrazit jméno: - - - - login / username: - login / uživatelské jméno: - - - - Account name: - Název účtu: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - SIP doména: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Nastavení SIP profilu</span><br><br><span>Zadejte informace, které umožní<br/>připojení k vašemu<br/>SIP účtu</span> - - - - Advanced - Pokročilé - - - - AddWengoAccount - - - Password: - Heslo: - - - - Need help? - Potřebujete pomoc? - - - - &Back - &Zpět - - - - Cancel - Zrušit - - - - @product@ - Login - @product@ - Přihlášení - - - - &Connect - &Připojit - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Login</span><br><br><span>Zadejte svou e-mailovou adresu a<br>heslo</span> - - - - Email Address: - E-mailová adresa: - - - - Click here if you don't have a @company@ account - Klikněte sem, pokud nemáte @company@ účet - - - - Forgot your @company@ password? - Zapomněl jste svůj účet @company@? - - - - AdvancedConfigWindow - - - Close - Zavřít - - - - Preference Name - Preferované jméno - - - - Type - Typ - - - - Value - Hodnota - - - - Default Value - Výchozí hodnota - - - - Save - Uložit - - - - Status - Stav - - - - @product@ - Advanced Configuration - @product@ - Pokročilá konfigurace - - - - AdvancedSettings - - - Add - Přidat - - - - Advanced Settings - Pokročilá nastavení - - - - Advanced Configuration Window - Okno expertního nastavení - - - - Automatically answer incoming calls from - Automaticky odpovídat na příchozí hovory od - - - - Remove - Odstranit - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Varování: tato část je pouze pro pokročilé uživatele.<br>Chybné nastavení může vést k nefunkčnosti programu. - - - - AppearanceSettings - - - Toolbar - Panel nástrojů - - - - &Icons && Text - &Ikony && Text - - - - Icons &Only - &Pouze ikony - - - - &Hidden - &Skrýt - - - - Chat Theme - Téma rozhovoru - - - - Form - Formulář - - - - AudioSettings - - - Reset - Obnovit - - - - Audio Codecs - Zvukové kodeky - - - - &Input device: - V&stupní zařízení: - - - - &Output device: - &Výstupní zařízení: - - - - &Ringing device: - Vy&zváněcí zařízení: - - - - &Make a test call - &Zkušební volání - - - - - Test - Vyzkoušet - - - - &Advanced >> - &Pokročilé >> - - - - &Half Duplex - &Poloduplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulář - - - - AvatarWidget - - - Form - Formulář - - - - BrowserSoftUpdateWindow - - - Close - Zavřít - - - - @product@ - Update available - @product@ - Je dostupná nová verze - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3.: - - - - 1st: - 1.: - - - - 2nd: - 2.: - - - - - - (+ country code) phone number - (+ kód země) číslo - - - - Forward all unanswered calls to message box - Přesměrovat všechny zmeškané hovory do hlasové schránky - - - - Disable call forwarding - Zrušit přesměrování hovorů - - - - Forward all unanswered calls to following phone numbers: - Přesměrovat všechna zmeškaná volání na následující telefonní čísla: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Například +4214500XXXX (kde +42 je kód země a 14500XXXX je číslo) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Přesměrování volání je aktivní pokud nejste připojeni k @company@, pokud vaše linka je obsazená nebo 20 sekund poté, co nezvedáte příchozí hovor. Můžete konfigurovat až 3 čísla pro přesměrování volání na pevné linky, mobilní telefony nebo hlasovou poštu (pokud je dostupná) - - - - CallToaster - - - Incoming Call - Příchozí hovor - - - - Message - Zpráva - - - - ChatLogViewer - - - Chat History - Historie rozhovoru - - - - &Contact - &Kontakt - - - - &Tools - &Nástroje - - - - &Help - Nápo&věda - - - - &Actions - &Akce - - - - Main Toolbar - Hlavní nástrojová lišta - - - - - - Call Contact - Volat kontakt - - - - - - Send a File - Poslat soubor - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Zobrazit informace o kontaktu - - - - blockContact - blockContact - - - - &Save History As... - &Uložit historii jako... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Nástroje - - - - &Actions - &Akce - - - - Main Toolbar - Hlavní nástrojová lišta - - - - - - Call Contact - Volat kontakt - - - - - - Send a File - Poslat soubor - - - - - - Show Contact Info - Zobrazit informace o kontaktu - - - - blockContact - blockContact - - - - &Save History As... - &Uložit historii jako... - - - - @company@ - @company@ - - - - MainWindow - MainWindow - - - - &Edit - &Upravit - - - - Cu&t - &Vyjmout - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopírovat - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Vložit - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Začít konferenci rozhovoru - - - - &Close - &Zavřít - - - - Conference - Konference - - - - ChatRoomInviteWidget - - - Chat room - Místnost - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Místnost</span></p></body></html> - - - - (Conference participants) - (účastnící konference) - - - - &Remove - Odeb&rat - - - - &Start - &Start - - - - Group Name - Název skupiny - - - - &Add - Přid&at - - - - ChatToaster - - - Message - Zpráva - - - - Incoming Chat - Příchozí zpráva - - - - ChatWidget - - - Form - Formulář - - - - ConferenceCallWidget - - - Cancel - Zrušit - - - - Start - Spustit - - - - Phone number 2: - Telefonní číslo 2: - - - - Phone number 1: - Telefonní číslo 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Vytvořit konferenci - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konference</span><br /><br />Zadejte prosím dvě telefonní čísla </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">nebo @company@ ID kontakty pro </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vytvoření 3-cestné konference.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konference</span><br /><br />Zadejte prosím dvě telefonní čísla </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">nebo @company@ ID kontakty pro </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vytvoření 3-cestné konference.</p> - - - - &Add >> - &Přidat >> - - - - << &Remove - << &Odebrat - - - - Available Contacts - Dostupné kontakty - - - - &Start - &Start - - - - Cancel - Zrušit - - - - ContactGroupPopupMenu - - - Remove Contact Group - Odstranit skupinu kontaktů - - - - Rename Contact Group - Přejmenovat skupinu kontaktů - - - - Delete group - Smazat skupinu - - - - Do you really want to delete this group? - Chcete skutečně smazat tuto skupinu? - - - - &Yes - &Ano - - - - &No - &Ne - - - - ContactList - - - Contact List - Seznam kontaktů - - - - ContactWidget - - - No mobile phone number set - Číslo mobilu nenastaveno - - - - No landline phone number set - Číslo pevné linky nenastaveno - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Pro úpravu kontaktu klikněte sem</p></body></html> - - - - CrashReport - - - Cancel - Zrušit - - - - Program Failure - Selhání programu - - - - Send - Poslat - - - - Optional Information - Volitelné informace - - - - Your Mail: - Můj e-mail: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - nedostupné - - - - Click here to change your call forward settings - Kliknutím sem změníte nastavení přesměrování - - - - Call forward mode: - Režim přesměrování: - - - - Purchase call out credits - Objednat kredity - - - - Call Forward Method - Metoda přesměrování - - - - Call Voice Mail - Volat hlasovou schránku - - - - Click here to buy @company@'s credits - Klikněte sem, pokud chcete zakoupit @company@ kredit - - - - DesktopService - - - Root Folder - Kořenová složka - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Kliknutím na jednotlivé položky měnící při přejzdu myší barvu zašlete protějšku zvuky. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Kliknutím sem zavoláte do hlasové schránky - - - - New Voice Mail: - Nová hlasová schránka: - - - - Click here to see missed call(s) - Kliknutím sem zobrazíte zmeškané hovory - - - - Missed Call(s): - Zmeškané hovory: - - - - FileTransferDialog - - - ... - ... - - - - Download - Stáhnout - - - - Upload - Odeslat - - - - Click here to change your download folder - Kliknutím sem změníte adresář pro stažené soubory - - - - Download folder: - Adresář stahování: - - - - Clean all items in the list - Vyčistit všechny položky ze seznamu: - - - - &Clean - &Vyčistit - - - - @product@ - File Transfer Manager - @product@ - Správce přenosu souborů - - - - FileTransferItem - - - Cancel - Zrušit - - - - Form - Formulář - - - - Pause - Pauza - - - - <i>From:</i> - <i>Od:</i> - - - - GeneralSettings - - - When I double-click on a contact - Po dvojitém kliknutí na kontakt - - - - Call cell phone or land line if contact not online - Pokud není kontakt online, mobil nebo pevnou linku - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Nečinný - - - - minutes - min - - - - Show me as "Away" when I am inactive for: - Nastavit stav "Pryč" při neaktivitě delší než: - - - - When I start my computer - Při spuštění počítače - - - - Automatically start @product@ - Automaticky spustit @product@ - - - - GoogleTalkSettings - - - Login: - Přihlašovací jméno: - - - - Password: - Heslo: - - - - GoogleTalk Settings - Nastavení GoogleTalk - - - - Forgot your GoogleTalk password? - Zapomněli jste své GoogleTalk heslo? - - - - Get a new GoogleTalk Account - Vytvořit nový GoogleTalk účet - - - - HttpProxyLoginWindow - - - Cancel - Zrušit - - - - HTTP Proxy Address: - Adresa HTTP proxy: - - - - HTTP Proxy Port Number: - Port HTTP proxy: - - - - HTTP Proxy Login: - Přihlašovací jméno HTTP proxy: - - - - HTTP Proxy Password: - Heslo HTTP proxy: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP proxy ověřování</span><br><br><span>Vaše lokální HTTP proxy vyžaduje oveření<br>Zadejte své přihlašovací jméno a heslo</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Lokální HTTP Proxy - - - - ICQSettings - - - Login: - Přihlašovací jméno: - - - - Password: - Heslo: - - - - ICQ Settings - Nastavení ICQ - - - - Forgot your ICQ password? - Zapomněli jste ICQ heslo? - - - - Get a new ICQ Account - Vytvořit nový ICQ účet - - - - IMAccountManager - - - Close - Zavřít - - - - Login - Přihlásit se - - - - Add - Přidat - - - - Delete - Smazat - - - - Modify - Změnit - - - - Protocol - Protokol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Moje IM účty (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Zrušit - - - - Save - Uložit - - - - IM Account Settings - Nastavení IM účtu - - - - IMContactManager - - - Add - Přidat - - - - Delete - Smazat - - - - Contact Type (protocol) - Typ kontaktu (protokol) - - - - Click on the add button below to add a new ID - Kliknutím na tlačítko vložení níže vložíte nové ID - - - - Contact ID - ID kontaktu - - - - IMProfileWidget - - - - Enter your nickname here - Zde napište svou přezdívku - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Přidat instant messaging účet (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Přidat IM účet - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikněte sem, pokud chcete změnit svoje zosobnění</p></body></html> - - - - ImageSelector - - - Cancel - Zrušit - - - - OK - OK - - - - Go Up - Přejít nahoru - - - - Refresh - Obnovit - - - - JabberSettings - - - Login: - Přihlašovací jméno: - - - - Password: - Heslo: - - - - Jabber Settings - Nastavení Jabberu - - - - Connect Server: - Připojit k serveru: - - - - <u>Advanced Options</u> - <u>Expertní volby</u> - - - - Require TLS - Vyžaduje TLS - - - - Port: - Port: - - - - Use TLS if available - Použít TSL, pokud je dostupná - - - - Allow plaintext authentication over unencrypted streams - Povolit při ověřování čistý text přes nešifrované proudy - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Vynutit staré SSL (port 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Není zde váš jazyk obsažen? Víte, že se překladu můžete přímo účastnit v aplikaci Launchpad? - - - - More information here. - Více informací najdete zde. - - - - LogAccount - - - Password: - Heslo: - - - - Need help? - Potřebujete pomoc? - - - - Cancel - Zrušit - - - - @product@ - Login - @product@ - Přihlášení - - - - Account: - Účet: - - - - &Connect - &Připojit - - - - Forgot your @company@ password? - Zapomněl jste svůj účet @company@? - - - - &Modify - Z&měnit - - - - Delete - Smazat - - - - Configure a &New Profile - Nastavit &nový profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Vybetre prosím dříve použitý profil<br/> nebo vypňte údaje potřebné pro přihlášení se k<br/> @company@ account</span> - - - - MSNSettings - - - Login: - Přihlašovací jméno: - - - - Password: - Heslo: - - - - MSN Settings - MSN nastavení - - - - Forgot your MSN password? - Zapomněli jste MSN heslo? - - - - Get a new MSN Account - Vytvořit nový MSN účet - - - - Use HTTP method - Použít HTTP metodu - - - - MainWindow - - - MainWindow - MainWindow - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Přijmout volání - - - - Send Chat Message - Poslat zprávu - - - - Make Call - Volat - - - - Hang Up - Zavěsit - - - - ManageBlockedUsersSettings - - - Close - Zavřít - - - - Unblock User - Odblokovat uživatele - - - - Manage blocked users - Spravovat zablokované uživatele - - - - @product@ - Manage blocked users - @product@ - Správa blokovaných uživatelů - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Mám účet @company@ - - - - Create a @company@ account - Vytvořit účet @company@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Pro poslání SMS potřebujete být přihlášen k<br>@company@ účtu a mít @company@ kredit. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Zvolte událost, pro kterou se má zvuk přehrát. - - - - NotificationSettingsItem - - - Sound file - Zvukový soubor - - - - Find a sound file - Vyhledat zvukový soubor - - - - Play sound file - Přehrát zvukový soubor - - - - Play - Přehrát - - - - NotifyDialog - - - File Transfer - Přenos souboru - - - - &Ok - &OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stav:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualizace</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Přijmout - - - - Status - Stav - - - - 00:00:00 - 00:00:00 - - - - Nickname - Přezdívka - - - - &Reject - &Odmítnout - - - - Dialpad - Číselník - - - - Audio Smileys - Audio smajlíci - - - - - Communication is encrypted - Komunikace je šifrovaná - - - - PrivacySettings - - - Manage blocked users - Spravovat zablokované uživatele - - - - Privacy Rules - Pravidla soukromí - - - - Always sign in as "Invisible" (appear offline to all users) - Vždy se přihlásit jako "Neviditelný" (pro ostatní uživatele budete nepřipojení) - - - - Allow chats from - Povolir rozhovory s - - - - - Anyone - Kdokoliv - - - - - Only people from my contact list - Pouze kontakty ze seznamu - - - - Allow calls from - Povolit volání od - - - - When I sign into @company@ - Pokud se přihlásím do @company@ - - - - ProfileDetails - - - Cancel - Zrušit - - - - Save - Uložit - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikněte sem, pokud chcete změnit svoje zosobnění</p></body></html> - - - - General - Obecné - - - - Network IDs (MSN, Jabber...) - ID sítě (MSN, Jabber...) - - - - Advanced >> - Pokročilé >> - - - - Fill in all your network Id to stay connected with your contacts - Zadejte všechna ID sítě, abyste zůstali spojeni se všemi kontakty - - - - Contact - Kontakt - - - - Group: - Skupina: - - - - Last Name: - Příjmení: - - - - First Name: - Jméno: - - - - Details - Detaily - - - - Web/blog: - Web/blog: - - - - Country: - Země: - - - - State: - Stát: - - - - City: - Město: - - - - Gender: - Pohlaví: - - - - Birth Date: - Datum narození: - - - - Email: - E-mail: - - - - Notes - Poznámky - - - - Phone Numbers - Telefonní čísla - - - - Home phone - Telefon domů - - - - Mobile phone - Mobil - - - - dd MMMM yyyy - dd. MMMM yyyy - - - - Unknown - Neznámé - - - - Male - Muž - - - - Female - Žena - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Účty - - - - Accounts Settings - Nastavení účtů - - - - QtAddAccount - - - Configure your voip account - Nastavte svůj VoIP účet - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Řekněte nám prosím, je-li vaš účet poskytován<br/> @company@ nebo jinou službou - - - - QtAddAccountUtils - - - Test - Vyzkoušet - - - - Audio Test Call - Volání pro vyzkoušení zvuku - - - - Video Test Call - Volání pro vyzkoušení obrazu - - - - QtAddSIPAccount - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Zadejte informace, které umožní<br> připojení k vašemu SIP účtu - - - - Configure your SIP profile - Nastavte svůj SIP profil - - - - Your profile name already exists! - Profil s tímto názvem již existuje! - - - - QtAddWengoAccount - - - Login - Přihlásit se - - - - Please enter an email address. - Zadejte e-mailovou adresu. - - - - Please enter your email address<br/>and your password - Zadejte e-mailovou adresu<br/>a heslo - - - - @product@ - Connexion - @product@ - spojení - - - - QtAdvancedIMContactManager - - - Cancel - Zrušit - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Jste si jist, že chcete smazat tento IM kontakt? - - - - - &Delete - &Smazat - - - - QtAdvancedSettings - - - Advanced - Pokročilé - - - - Advanced Settings - Pokročilá nastavení - - - - QtAppearanceSettings - - - - Me - - - - - Hello - Dobrý den - - - - How are you? - Jak se máte? - - - - - - Other - Ostatní - - - - I am fine - Mám se dobře - - - - Have to go - Musím končit - - - - Bye - Nashledanou - - - - Appearance - Vzhled - - - - Appearance Settings - Nastavení vzhledu - - - - QtAudioSettings - - - - Advanced - Pokročilé - - - - Audio - Zvuk - - - - Audio Settings - Nastavení zvuku - - - - QtCallBar - - - +(country code) number or nickname - +(kód země) číslo nebo přezdívka - - - - QtCallForwardSettings - - - - Call Forward - Přesměrování hovoru - - - - Call Forward Settings - Nastavení přesměrování hovorů - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Uložit jako - - - - QtChatLogViewer - - - Edit Contact - Upravit kontakt - - - - QtChatTabWidget - - - Close chat - Ukončit rozhovor - - - - QtChatWidget - - - %1 is connected. - %1 je připojen. - - - - %1 is disconnected. - %1 je odpojen. - - - - send - odeslat - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Váš soubor nemůže být poslán: váš kontakt musí být připojen do sítě @company@. - - - - Your contact wishes to send a file with @company@. - Váš kontakt vám chce poslat soubor prostřednictvím @company@. - - - - Go to %1 to install it - Pro nainstalování spusťte k %1 - - - - %1 has joined the chat - %1 se připojil k rozhovoru - - - - %1 has left the chat - %1 opustil rozhovor - - - - QtChatWindow - - - Edit Contact - Upravit kontakt - - - - @product@ Chat - @product@ rozhovor - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - SIP volání - - - - Call land line - Volání na pevnou linku - - - - Call Mobile - Volání na mobil - - - - Call @company@ - Volat @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Nyní můžete informovat prvního účastníka, že se zapojil do konferenčního volání.</b><br><br>Pak klikněte na tlačítko níže. První účastník bude pozdržen a spustí se volání druhému účastníkovi.<br> - - - - Hold first interlocutor and call second one - Pozdržet první hovor a začít druhý - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Nyní můžete informovat druhého účastníka, že se zapojil do konferenčního volání.</b><br><br>K zahájení konference klikněte na tlačítko níže. - - - - Start Conference - Začít konferenci - - - - - @product@ - Proceed Conference - @product@ - pokračovat konferenci - - - - QtContactList - - - &Yes - &Ano - - - - &No - &Ne - - - - Merge %1 with %2? - Sloučit %1 s %2? - - - - @product@ - Merge Contacts - @product@ - spojit kontakty - - - - QtContactManager - - - &Yes - &Ano - - - - &No - &Ne - - - - Home phone - Telefon domů - - - - Mobile phone - Mobil - - - - @product@ - @product@ - - - - Edit Contact - Upravit kontakt - - - - Do you really want to delete this contact? - Chcete skutečně smazat tento kontakt? - - - - Start chat - Zahájit rozhovor - - - - - Delete contact - Smazat kontakt - - - - Call - Zavolat - - - - Free call - - - - - Work phone - Telefon do práce - - - - Send SMS - Poslat SMS - - - - Edit contact - Upravit kontakt - - - - Block contact - Blokovat kontakt - - - - Invite to conference - Pozvat do konference - - - - Go to website - Otevřít webovou stránku - - - - Send file - Poslat soubor - - - - Forward to mobile phone - Přeposlat na mobil - - - - QtContactWidget - - - No mobile phone number set - Číslo mobilu nenastaveno - - - - No landline phone number set - Číslo pevné linky nenastaveno - - - - - Click here to call - Kliknutím sem zahájíte volání - - - - - Click here to set a phone number - Kliknutím se nastavíte telefonní číslo - - - - Click here to edit the contact - Kliknutím sem upravíte kontakt - - - - Click here to send a SMS - Kliknutím sem odešlete SMS - - - - Click here to start a chat - Kliknutím zde zahájíte rozhovor - - - - Click here to start a free call - Kliknutím sem zahájíte volání zdarma - - - - Click here to send a file - Kliknutím sem odešlete soubor - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Chcete volat svou hlasovou schránku? - - - - @product@ - Voice Mail - @product@ - Hlasová pošta - - - - QtFileTransfer - - - &Yes - &Ano - - - - &No - &Ne - - - - Choose a directory - Zvolte adresář - - - - Overwrite File? - Přepsat soubor? - - - - A file called %1 already exists.Do you want to overwrite it? - Soubor %1 již existuje. Chcete jej přepsat? - - - - - File size error - Chybná velikost souboru - - - - %1 exceeds the maximum authorized size. - %1 dosahuje maximální velikosti. - - - - %1 has size 0. - %1 má velikost 0. - - - - %1 is a directory. - %1 je adresář. - - - - You can not send a directory. - Adresář nelze odeslat. - - - - %1 is a shortcut. - %1 je odkaz. - - - - You can not send a shortcut. - Odkaz nelze odeslat. - - - - All Files (*.* *) - Všechny soubory (*.* *) - - - - Please upgrade<br> your @product@ - Aktualizujte prosím<br> vaše @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Řekněte vašemu kontaktu,<br> aby aktualizoval<br> svoje @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Soubor nemohl být přijat: musíte aktualizovat svoje @product@, abyste jej mohl(a) přijmout. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - vám zkouší zaslat soubor, ale jeho @product@ musí být aktualizováno, abyste jej mohl přijmout. Řekněte mu, aby si stáhnul novou verzi. - - - - QtFileTransferItem - - - - - Cancel - Zrušit - - - - Remove - Odstranit - - - - - Pause - Pauza - - - - Starting - Spouští se - - - - From: - Od: - - - - To: - Komu: - - - - Open - Otevřít - - - - Resume - Obnovit - - - - Waiting for anwser... - Čeká se na odpověď... - - - - Done - Hotovo - - - - Failed - Došlo k selhání - - - - Paused - Pozastaveno - - - - Paused by peer - Pozastaveno protějškem - - - - Cancelled - Zrušeno - - - - Cancelled by peer - Zrušeno protějškem - - - - - Downloading... - Stahuji... - - - - Uploading... - Odesílám... - - - - Waiting for peer... - Čeká se na protějšek... - - - - An error occured during the file transfer - Při přenosu souboru došlo k chybě - - - - This may be caused by : - To může být zapřičiněno: - - - - Your @product@ is not up to date. Please download the latest version on - Váše @product@ není aktuální. Stáhněte si prosím poslední verzi na - - - - The @company@ network may be temporarily unavailable. Please try later. - Síť @company@ je zřejmě dočasně nedostupná. Zkuste to prosím později. - - - - QtGeneralSettings - - - General - Obecné - - - - General Settings - Obecná nastavení - - - - QtHistory - - - Incoming call - Příchozí volání - - - - Outgoing call - Odchozí volání - - - - Missed call - Zameškaný hovor - - - - Rejected call - Odmítnutý hovor - - - - Outgoing SMS - Odeslané SMS - - - - Do you want to call %1? - Chcete volat %1? - - - - Chat session - Rozhovor - - - - @product@ - Call History - @product@ - Historie volání - - - - Type - Typ - - - - Name/ID - Jméno/ID - - - - Date - Datum - - - - Duration - Trvání - - - - QtHistoryWidget - - - Erase this entry - Smazat tuto položku - - - - Open in SMS window - Otevřít v SMS okně - - - - Call this peer - Volat tento protějšek - - - - Show chat log - Zobrazit log rozhovoru - - - - QtIMAccountManager - - - Cancel - Zrušit - - - - @product@ - @product@ - - - - &Delete - &Smazat - - - - Are sure you want to delete this account? - - Jste si jist(a), že chcete smazat tento účet? - - - - - QtIMAccountMonitor - - - - - Disconnected - Odpojen - - - - Error: %1 - Chyba: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Online - - - - Invisible - Neviditelný - - - - Away - Pryč - - - - Do not disturb - Nerušit - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Zadejte přihlašovací jméno - - - - QtIMAccountPresenceMenuManager - - - Cancel - Zrušit - - - - @product@ - @product@ - - - - &Delete - &Smazat - - - - Online - Online - - - - Invisible - Neviditelný - - - - Away - Pryč - - - - Do Not Disturb - Nerušit - - - - Disconnect - Odpojit - - - - Delete Account - Smazat účet - - - - Are sure you want to delete the account <b>%1</b>? - Jste si jistí, že chcete smazat účet <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Upravit profil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Jazyk - - - - Language Settings - Nastavení jazyka - - - - QtLogAccount - - - Invalid account - Chybný účet - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Vyberte prosím dříve použitý účet<br/> nebo vyplňte informace potřebné k připojení se k<br/> @company@ account - - - - Warning - Pozor - - - - Do you really want to delete this profile - Opravdu chcete smazat tento profil? - - - - Yes - Ano - - - - No - Ne - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - spojení - - - - QtNotificationSettings - - - Incoming call (ringtone) - Příchozí hovor (vyzvánění) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Volání ukončeno (zvuk zavěšení) - - - - Incoming chat - Příchozí rozhovor - - - - IM account connected - IM účet připojen - - - - IM account disconnected - IM účet odpojen - - - - Contact online - Kontakt připojen - - - - Notifications - Upozorňování - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Vybrat zvukový soubor - - - - Sounds - Zvuky - - - - QtPhoneCall - - - Status - Stav - - - - Incoming Call - Příchozí hovor - - - - Resume - Obnovit - - - - Hang-up - Zavěsit - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Chyba - - - - Talking - Hovor - - - - Dialing - Vytáčím - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Vyzváním - - - - Redirected - Přesměrováno - - - - Initialization... - Inicializace... - - - - Closed - Ukončeno - - - - - Hold - Pozdržet - - - - Add contact - Přidat kontakt - - - - Ca&ncel - Z&rušit - - - - Talking - Conference - Hovořící - konference - - - - Add a Contact - Přidat kontakt - - - - QtPresenceMenuManager - - - Online - Online - - - - Invisible - Neviditelný - - - - Away - Pryč - - - - Do Not Disturb - Nerušit - - - - Log off - Odhlásit - - - - QtPrivacySettings - - - Privacy - Soukromí - - - - Privacy Settings - Nastavení soukromí - - - - QtProfileBar - - - Click here to change your status - Kliknutím sem změníte svůj stav - - - - - active - aktiva - - - - voicemail - hlasová schránka - - - - inactive - neaktivní - - - - unauthorized - neautorizován - - - - Set global presence to: - Nastavit globální stav na: - - - - Voice mail - Hlasová pošta - - - - QtProfileDetails - - - Advanced >> - Pokročilé >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Kontakt musí náležet do skupiny. Nastavte skupinu. - - - - << Simple - << Jednoduché - - - - Select your avatar - Zvolte svého avatara - - - - @product@ - No Group Selected - @product@ - Není vybrána žádná skupina - - - - @company@ Avatars - @company@ zosobnění - - - - QtRenameGroup - - - Bad group name - Chybný název skupiny - - - - Group name cannot be empty - Název skupiny nesmí být prázdný - - - - QtSecuritySettings - - - Security - Bezpečnost - - - - Security Settings - Nastavení bezpečnosti - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Zadejte telefonní číslo. - - - - Do you want to continue? - Chcete pokračovat? - - - - Your SMS has not been sent - Vaše SMS nebyla odeslána - - - - Your SMS has been sent - Vaše SMS byla odeslána - - - - Your message is too long. -This will send - Vaše zpráva je příliš dlouhá. -Bude poslána - - - - SMS. - - SMS - - - - - You can not send an empty message. - Nelze odeslat prázdnou zprávu - - - - - - - @company@ SMS service - @company@ SMS služba - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - aktualizace se nezdařila - - - - @product@ update failed to start: try to update @product@ manually - @product@ aktualizace nezačala: zkuste provést aktualizaci @product@ ručně - - - - QtStatusBar - - - - Not connected - Nepřipojeno - - - - Register done - Zaregistrován - - - - Unregister done - Odregistrován - - - - Connecting - Navazuji spojení - - - - Output volume is muted - Výstup je ztlumen - - - - Output volume is 0 - Výstupní hlasitost je 0 - - - - Click to adjust output volume - Klikněte pro přizpůsobení výstupní hlasitosti - - - - Input volume is muted - Vstup je ztlumen - - - - Input volume is 0 - Vstupní hlasitost je 0 - - - - Click to adjust input volume - Klikněte pro přizpůsobení vstupní hlasitosti - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Stav - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - SIP volání - - - - Call land line - Volání na pevnou linku - - - - Call Mobile - Volání na mobil - - - - Call @company@ - Volat @company@ - - - - Call - Zavolat - - - - Send SMS - Poslat SMS - - - - Online - Online - - - - Invisible - Neviditelný - - - - Away - Pryč - - - - Do Not Disturb - Nerušit - - - - Internet Connection Error - Připojení k internetu: chyba - - - - Offline - Nepřipojen - - - - Connecting... - Připojuji se... - - - - Send a SMS - Poslat SMS - - - - Start a chat - Začít rozhovor - - - - Place Call - Volání domů - - - - Send File - Poslat soubor - - - - Multiple Status - Vícečetný stav - - - - Unknown Status - Neznámý stav - - - - Quit @product@ - Ukončit @product@ - - - - QtToolBar - - - &Cancel - Z&rušit - - - - @product@ - Proceed Conference - @product@ - pokračovat konferenci - - - - Edit My Profile - Upravit profil - - - - Add a Contact - Přidat kontakt - - - - Hide Unavailable Contacts - Skrýt nedostupné kontakty - - - - Show Unavailable Contacts - Zobrazit nedostupné kontakty - - - - Hide Groups - Skrýt skupiny - - - - Show Groups - Zobrazit skupiny - - - - You have unfinished call(s). - Máte neukončená volání. - - - - Are you sure you want to log off? - Jste si jistí, že se chcete odhlásit? - - - - &Log Off - &Odhlásit - - - - Disable &Video Calls - Zakázat &video volání - - - - Enable &Video Calls - Povolit &video volání - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Konferenci nelze zahájit, pokud máte jiná aktivní volání.</b><br><br>Ukončete všechny hovory a opakujte. - - - - @product@ - Warning - @product@ - varování - - - - - Log &Off... - &Odhlásit... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Seznam kontaktů - - - - QtUserProfile - - - Edit Contact - Upravit kontakt - - - - - &Authorize - &Autorizovat - - - - - &Block - &Blokovat - - - - Network error. - Chyba sítě. - - - - - @product@ - Authorization Request - @product@ - Autorizační požadavek - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Během otevírání vašeho profilu se vyskytl problém. -Byla použita poslední záloha vašeho profilu: -nejnovější změny mohu být ztraceny. - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Nepodařilo se otevřít váš profil. -Vyberte jiný profil nebo vytvořte nový. - - - - Wrong email/password entered - Zadán špatný e-mail nebo heslo - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normální - - - - - Good - Dobrá - - - - - Very good - Velmi dobrá - - - - - Excellent - Vynikající - - - - Video Settings - Nastavení videa - - - - QtVoicemailSettings - - - Voicemail - Hlasová schránka - - - - Voicemail Settings - Nastavení hlasové schránky - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Adresář - - - - QtWengoConfigDialog - - - Advanced - Pokročilé - - - - General - Obecné - - - - Accounts - Účty - - - - Audio - Zvuk - - - - Call Forward - Přesměrování hovoru - - - - Language - Jazyk - - - - Privacy - Soukromí - - - - Video - Video - - - - Voicemail - Hlasová schránka - - - - security - bezpečnost - - - - Notifications - Upozorňování - - - - QtWengoPhone - - - &Cancel - Z&rušit - - - - - - - Conference - Konference - - - - Call - Zavolat - - - - Account - - - - - Add a Contact - Přidat kontakt - - - - You have unfinished call(s). - Máte neukončená volání. - - - - @product@ - Warning - @product@ - varování - - - - - Home - Domů - - - - Are you sure you want to exit the application? - Jste si jistí, že chcete ukončit aplikaci? - - - - &Exit - &Ukončit - - - - @product@ - Call Error - @product@ - Chyba volání - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Zrušit - - - - OK - OK - - - - Enter the new group name: - Zadejte název nové skupiny. - - - - @product@ - Rename Contact Group - @product@ - Přejmenování skupiny kontaktů - - - - SecuritySettings - - - Form - Formulář - - - - Enable call encryption - Povolit šifrování hovorů - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ může šifrovat volání použitím AES 128-bits šifrovacího systému a systému Diffie-Hellman pro výměnu klíčů. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Aktualizovat profil - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID - - - - exemple: username@server - příklad: uzivatelske_jmeno@server - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Poslat - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Kliknutím sem vložíte telefonní číslo - - - - 0 /160 - 0/160 - - - - Enter your signature here - Zde zadejte podpis - - - - Signature: - Podpis: - - - - Phone number(s): - Telefonní číslo/a: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Zde zadejte telefonní číslo.<br> K oddělení více čísel můžete použijte jeden ze znaků &;, - - - - SoftUpdateWindow - - - Cancel - Zrušit - - - - @product@ - Downloading update - @product@ - Stažení aktualizace - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulář - - - - VideoSettings - - - Normal - Normální - - - - Good - Dobrá - - - - Very good - Velmi dobrá - - - - Excellent - Vynikající - - - - Enable video - Povolit video - - - - Webcam Selection - Výběr kamery - - - - Webcam device: - Zařízení kamery: - - - - Webcam Preview - Náhled kamery - - - - Connection Type - Typ připojení - - - - Video quality - Kvalita obrazu - - - - Down (kbit/s) - Stahování (kbit/s) - - - - Up (kbit/s) - odesílání (kbit/s) - - - - 0 to 512 - 0 až 512 - - - - 0 to 128 - 0 až 128 - - - - 512 to 2048 - 512 až 2048 - - - - 128 to 256 - 128 až 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Kvalita obrazu závisí na rychlosti vašeho připojení - - - - Make a test video call - Testovací video hovor - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Formulář - - - - Phone number of your voicemail: - Číslo hlasové schránky: - - - - Please fill in here the information about your voicemail - Zde vyplňte údaje o své hlasové schránce - - - - WengoConfigDialog - - - Cancel - Zrušit - - - - Save - Uložit - - - - Title - Název - - - - @product@ - Configuration - @product@ - nastavení - - - - WengoPhoneWindow - - - &Accept - &Přijmout - - - - &Hidden - &Skrýt - - - - &Tools - &Nástroje - - - - &Help - Nápo&věda - - - - &Actions - &Akce - - - - @company@ - @company@ - - - - &Close - &Zavřít - - - - Dialpad - Číselník - - - - @product@ - @product@ - - - - Start Conference - Začít konferenci - - - - Send SMS - Poslat SMS - - - - Contacts - Kontakty - - - - History - Historie - - - - Clear &History - Vyčistit &historii - - - - ToolBar - Lišta nástrojů - - - - Show/Hide Unavailable &Contacts - Zobrazit/skrýt nedostupné &kontakty - - - - &Chat Sessions - &Rozhovory - - - - &All - &Všechny - - - - &HangUp - &Zavěsit - - - - &Hold/Resume - &Pozdržet/pokračovat - - - - Show/Hide &Groups - Zobrazit/skrýt &skupiny - - - - &Outgoing Calls - &Odchozí hovory - - - - &Incoming Calls - &Příchozí hovory - - - - &Missed Calls - &Zameškané hovory - - - - Enable/Disable &Video Calls - Povolit/zakázat &video volání - - - - Short Text &Messages (SMS) - &SMS - - - - Rejected Calls - Odmítnuté hovory - - - - &Contacts - &Kontakty - - - - &About... - &O aplikaci - - - - Add &Contact... - Přidat &kontakt... - - - - &Configuration... - &Nastavení... - - - - Send SMS... - Poslat SMS... - - - - View My &Profile... - Zobrazit můj &profil... - - - - - View My Profile - Zobrazit můj profil - - - - Start &Conference... - Začít &konferenci... - - - - &Find Contact... - &Najít kontakt - - - - Log &Off... - &Odhlásit... - - - - - Log Off - Odhlásit - - - - Show &Chat Window - Zobrazit &okno rozhovoru - - - - - Show Chat Window - Zobrazit okno rozhovoru - - - - Show &File Transfer - Zobrazit &transfer souboru - - - - Add Contact - Přidat kontakt - - - - View My @company@ Account... - Prohlížet můj účet @company@ ... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@ &Fórum... - - - - @company@ &Wiki/FAQ... - @company@ &Wiki/FAQ... - - - - Learn more about @company@ Services... - Zjistit více o službách @company@ ... - - - - Search - Hledat - - - - Find @company@ Contacts - Hledat @company@ kontakty - - - - &Quit - &Ukončit - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Text pod ikonami - - - - &Icons Only - Pouze &ikony - - - - Add - Přidat - - - - SMS - SMS - - - - Conference - Konference - - - - Wizard - - - Cancel - Zrušit - - - - Finish - Dokončit - - - - Next > - Další > - - - - < Back - < Zpět - - - - Simple Wizard - Step %1 of %2 - Jednoduchý průvodce - krok %1/%2 - - - - YahooSettings - - - Login: - Přihlašovací jméno: - - - - Password: - Heslo: - - - - Yahoo! Settings - Yahoo! nastavení - - - - Use Yahoo! Japan server - Použít japonský Yahoo! server - - - - Forgot your Yahoo! password? - Zapomněli jste Yahoo! heslo? - - - - Get a new Yahoo! Account - Vytvořit nový Yahoo! účet - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cy.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cy.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cy.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_cy.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5412 +0,0 @@ - - - - - AIMSettings - - - Login: - Mewngofnodi: - - - - Forgot your AIM password? - Wedi anghofio eich cyfrinair AIM? - - - - Get a new AIM Account - Estyn cyfrif AIM Newydd - - - - Password: - Cyfrinair: - - - - AIM Settings - Gosodiadau AIM - - - - AboutWindow - - - About - Ynghylch - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Awduron - - - - Close - Cau - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Trosglwyddo Ffeiliau - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Derbyn - - - - &Cancel - &Diddymu - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Cyswllt:: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Enw ffeil: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Ffeil i mewn</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Golygu Proffil - - - - AddAccount - - - Configure your account: - Ffurfweddu eich cyfrif - - - - &Next - &Nesaf - - - - Need help? - Angen cymorth? - - - - You don't have any account ? Click here - Does gennych chi ddim cyfrif? Cliciwch yma? - - - - &Back - &Nôl - - - - Cancel - Diddymu - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Diddymu - - - - Contact Type (protocol): - Math o Gontract (protocol) - - - - Contact ID: - Enw Cyswllt - - - - Account: - Cyfrif - - - - Enable - Galluogi - - - - Login - Mewngofnodi - - - - Add - Ychwanegu - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Cyfrinair: - - - - Need help? - Angen cymorth? - - - - &Back - &Nôl - - - - Cancel - Diddymu - - - - @product@ - Login - - - - - - &Connect - &Cysylltu - - - - Activate presence and chat (SIP/SIMPLE) - Gweithredu'r presenoldeb a sgwrs (SIP/SIMPLE) - - - - Displayname: - Enwdangos - - - - login / username: - mewngofnodi / enw defnyddiwr - - - - Account name: - Enw cyfrif - - - - Proxy: - Dirprwy: - - - - : - : - - - - Server: - Gweinydd: - - - - SIP Domain / Realm: - Parth / Teyrnas SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Ffurfweddu eich proffil SIP</span><br><br><span>Rhowch y wybodaeth fydd yn<br/>caniatáu i'ch ffôn meddal gysylltu â'ch<br/>cyfrif SIP</span> - - - - Advanced - Uwch - - - - AddWengoAccount - - - Password: - Cyfrinair: - - - - Need help? - Angen cymorth? - - - - &Back - &Nôl - - - - Cancel - Diddymu - - - - @product@ - Login - - - - - - &Connect - &Cysylltu - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Mewngofnodi</span><br><br><span>Rhowch eich cyfeiriad e-bost a<br>password</span> - - - - Email Address: - Cyfeiriad e-bost: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Cau - - - - Preference Name - Dewis Enw - - - - Type - Math - - - - Value - Gwerth - - - - Default Value - Gwerth Rhagosodedig - - - - Save - Cadw - - - - Status - Statws - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Ychwanegu - - - - Advanced Settings - Gosodiadau Uwch - - - - Advanced Configuration Window - Ffenestr Ffurfweddu Uwch - - - - Automatically answer incoming calls from - Ateb yn awtomatig galwadau o - - - - Remove - Tynnu - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Rhybudd, mae'r rhan yma ar gyfer defnyddwyr uwch.<br>Gall unrhyw gamgymeriad beri difrod i'r feddalwedd.. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Ffurflen - - - - AudioSettings - - - Reset - Ailosod - - - - Audio Codecs - Codecs Sain - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Ffurflen - - - - AvatarWidget - - - Form - Ffurflen - - - - BrowserSoftUpdateWindow - - - Close - Cau - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - Pob neges heb ei hateb ymlaen i'r blwch ateb - - - - Disable call forwarding - Anablu galwad ymlaen - - - - Forward all unanswered calls to following phone numbers: - Pob neges heb ei hateb ymlaen i'r rhifau ffôn canlynol: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - Ffurflen - - - - ConferenceCallWidget - - - Cancel - Diddymu - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Diddymu - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Diddymu - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Diddymu - - - - Form - Ffurflen - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Mewngofnodi: - - - - Password: - Cyfrinair: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Diddymu - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Mewngofnodi: - - - - Password: - Cyfrinair: - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Cau - - - - Login - Mewngofnodi - - - - Add - Ychwanegu - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Diddymu - - - - Save - Cadw - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Ychwanegu - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Diddymu - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Mewngofnodi: - - - - Password: - Cyfrinair: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Cyfrinair: - - - - Need help? - Angen cymorth? - - - - Cancel - Diddymu - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Cyfrif - - - - &Connect - &Cysylltu - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Mewngofnodi: - - - - Password: - Cyfrinair: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Cau - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Trosglwyddo Ffeiliau - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Derbyn - - - - Status - Statws - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Diddymu - - - - Save - Cadw - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - Uwch >> - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Mewngofnodi - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Diddymu - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - Uwch - - - - Advanced Settings - Gosodiadau Uwch - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Uwch - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Diddymu - - - - Remove - Tynnu - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Math - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Diddymu - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Diddymu - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Statws - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Uwch >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Statws - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Diddymu - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Uwch - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Diddymu - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Diddymu - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Ffurflen - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Diddymu - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - Ffurflen - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Ffurflen - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Diddymu - - - - Save - Cadw - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Derbyn - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Ychwanegu - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Diddymu - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Mewngofnodi: - - - - Password: - Cyfrinair: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_da.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_da.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_da.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_da.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5466 +0,0 @@ - - - - - AIMSettings - - - Login: - Brugernavn: - - - - Forgot your AIM password? - Glemt dit AIM kodeord? - - - - Get a new AIM Account - Få en ny AIM konto - - - - Password: - Kodeord: - - - - AIM Settings - - - - - - AboutWindow - - - About - Om... - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Forfattere - - - - Close - Luk - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Filoverførsel - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Acceptér - - - - &Cancel - &Annuller - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - &Rediger min profil - - - - AddAccount - - - Configure your account: - Konfigurer din konto - - - - &Next - &Næste - - - - Need help? - Brug for hjælp? - - - - You don't have any account ? Click here - Ingen konto? Klik her - - - - &Back - &Tilbage - - - - Cancel - Annuller - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Annuller - - - - Contact Type (protocol): - Kontakt-type (protokol): - - - - Contact ID: - Kontakt-ID: - - - - Account: - Konto: - - - - Enable - Aktiver - - - - Login - Login - - - - Add - Tilføj - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Kodeord: - - - - Need help? - Brug for hjælp? - - - - &Back - &Tilbage - - - - Cancel - Annuller - - - - @product@ - Login - - - - - - &Connect - &Forbind - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Kodeord: - - - - Need help? - Brug for hjælp? - - - - &Back - &Tilbage - - - - Cancel - Annuller - - - - @product@ - Login - - - - - - &Connect - &Forbind - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Luk - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Tilføj - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Luk - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Annuller - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Annuller - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Annuller - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Annuller - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Brugernavn: - - - - Password: - Kodeord: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Annuller - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Brugernavn: - - - - Password: - Kodeord: - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Luk - - - - Login - Login - - - - Add - Tilføj - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Annuller - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Tilføj - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Annuller - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Brugernavn: - - - - Password: - Kodeord: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Kodeord: - - - - Need help? - Brug for hjælp? - - - - Cancel - Annuller - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Konto: - - - - &Connect - &Forbind - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Brugernavn: - - - - Password: - Kodeord: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Luk - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Filoverførsel - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Acceptér - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Annuller - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Login - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Annuller - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Annuller - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Annuller - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Annuller - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Annuller - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Annuller - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Annuller - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Annuller - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Annuller - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Acceptér - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Tilføj - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Annuller - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Brugernavn: - - - - Password: - Kodeord: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_de.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_de.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_de.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_de.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4767 +0,0 @@ - - - - - AIMSettings - - - Login: - Benutzername: - - - - Forgot your AIM password? - AIM-Passwort vergessen? - - - - Get a new AIM Account - Einen neuen AIM-Zugang erstellen - - - - Password: - Passwort: - - - - AIM Settings - AIM-Einstellungen - - - - AboutWindow - - - About - Über WengoPhone - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Entwickler - - - - Close - Schließen - - - - 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. - Dieses Programm ist freie Software. Sie können es unter den -Bedingungen der GNU General Public License, wie von der -Free Software Foundation veröffentlicht, weitergeben und/oder -modifizieren, entweder gemäß Version 2 der Lizenz oder -(nach Ihrer Option) jeder späteren Version. - - - - @product@ - About - @product@ - Über - - - - @product@, a voice over Internet phone - @product@, ein Voice over Internet Phone - - - - AcceptDialog - - - File Transfer - Dateitransfer - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Annehmen - - - - &Cancel - &Abbrechen - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dateiname: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Eingehende Datei</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Mein Profil ändern - - - - AddAccount - - - Configure your account: - Zugangseinstellungen: - - - - &Next - &Weiter - - - - Need help? - Brauchst du Hilfe? - - - - You don't have any account ? Click here - Du hast noch keinen Zugang? Klicke hier. - - - - &Back - &Zurück - - - - Cancel - Abbrechen - - - - @product@ - Login - @product@ - Anmeldung - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">VoIP-Zugang konfigurieren</span><br><br><span>Bitte teile uns mit, ob dein Zugang von <br/>@company@ oder einem anderen Anbieter zur Verfügung gestellt wird</span> - - - - @company@ account - @company@-Zugang - - - - Generic SIP account - Generischer SIP-Zugang - - - - AddIMContact - - - Cancel - Abbrechen - - - - Contact Type (protocol): - Kontaktart (Protokoll): - - - - Contact ID: - Kontakt-ID: - - - - Account: - Zugang: - - - - Enable - Aktivieren - - - - Login - Anmeldung - - - - Add - Hinzufügen - - - - @product@ - Add a Contact Account - @product@ - Kontakt-Zugang hinzufügen - - - - AddSIPAccount - - - Password: - Passwort: - - - - Need help? - Brauchst du Hilfe? - - - - &Back - &Zurück - - - - Cancel - Abbrechen - - - - @product@ - Login - @product@ - Anmeldung - - - - &Connect - &Verbinden - - - - Activate presence and chat (SIP/SIMPLE) - Anwesenheit und Chat aktivieren (SIP/SIMPLE) - - - - Displayname: - angezeigter Name: - - - - login / username: - Kennung / Benutzername: - - - - Account name: - Zugangsbezeichnung: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - SIP-Domäne / -Realm: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Einstellungen deines SIP-Pofils</span><br><br><span>Bitte gib die nötigen Informationen an,<br/> welche es deinem Softphone ermöglichen, sich mit deinem SIP-Zugang<br/>zu verbinden.</span> - - - - Advanced - Erweitert - - - - AddWengoAccount - - - Password: - Passwort: - - - - Need help? - Brauchst du Hilfe? - - - - &Back - &Zurück - - - - Cancel - Abbrechen - - - - @product@ - Login - @product@ - Anmeldung - - - - &Connect - &Verbinden - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Anmeldung</span><br><br><span>Bitte gib deine E-Mail Adresse und dein Passwort ein</span> - - - - Email Address: - E-Mail-Adresse - - - - Click here if you don't have a @company@ account - Klicke hier, wenn du noch keinen @company@-Zugang hast - - - - Forgot your @company@ password? - @company@ Passwort vergessen? - - - - AdvancedConfigWindow - - - Close - Schließen - - - - Preference Name - Einstellungsname - - - - Type - Typ - - - - Value - Wert - - - - Default Value - Standardwert - - - - Save - Speichern - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - Erweiterte-Einstellungen - - - - AdvancedSettings - - - Add - Hinzufügen - - - - Advanced Settings - Erweiterte-Einstellungen - - - - Advanced Configuration Window - Erweiterte-Einstellungen öffnen - - - - Automatically answer incoming calls from - Beantworte automatisch eingehende Anrufe von - - - - Remove - Entfernen - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Achtung, dieser Abschnitt ist für erfahrene Anwender.<br />Falsche Einstellungen könnten die Software schwer beschädigen. - - - - AppearanceSettings - - - Toolbar - Werkzeugleiste - - - - &Icons && Text - &Icons && Text - - - - Icons &Only - Icons &alleine - - - - &Hidden - &Versteckt - - - - Chat Theme - Chat Theme - - - - Form - Eingabemaske - - - - AudioSettings - - - Reset - Zurücksetzen - - - - Audio Codecs - Audio-Codecs - - - - &Input device: - &Aufnahmegerät: - - - - &Output device: - &Wiedergabegerät: - - - - &Ringing device: - &Rufsignalisierungsgerät: - - - - &Make a test call - &Testanruf ausführen - - - - - Test - Test - - - - &Advanced >> - &Erweitert >> - - - - &Half Duplex - &Halbduplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Eingabemaske - - - - AvatarWidget - - - Form - Eingabemaske - - - - BrowserSoftUpdateWindow - - - Close - Schließen - - - - @product@ - Update available - @product@ - Update verfügbar - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Dritte: - - - - 1st: - Erste: - - - - 2nd: - Zweite: - - - - - - (+ country code) phone number - (+ Ländercode) Telefonnummer - - - - Forward all unanswered calls to message box - Alle nicht angenommenen Anrufe zum Anrufbeantworter weiterleiten - - - - Disable call forwarding - Anrufweiterleitung ausschalten - - - - Forward all unanswered calls to following phone numbers: - Alle nicht angenommenen Anrufe zu den folgenden Telefonnummern weiterleiten: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Zum Beispiel +3314500XXXX (+33 ist der Ländercode und 14500XXXX ist die Telefonnummer) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Die Anrufweiterleitung ist aktiv, wenn keine Verbindung mit @company@ besteht, wenn die Leitung besetzt ist oder nach 20 Sekunden bei Nichtannahme eines Anrufes. Du kannst bis zu drei Anrufweiterleitungen zu Festnetzanschlüssen, Mobiltelefonen oder einem Voicemail-System (sofern verfügbar) festlegen. - - - - CallToaster - - - Incoming Call - Eingehender Anruf - - - - Message - Nachricht - - - - ChatLogViewer - - - Chat History - Chatverlauf - - - - &Contact - &Kontakt - - - - &Tools - &Extras - - - - &Help - &Hilfe - - - - &Actions - &Aktionen - - - - Main Toolbar - Haupt-Symbolleiste - - - - - - Call Contact - Aktuellen Kontakt anrufen - - - - - - Send a File - Eine Datei senden - - - - createChatConf - Chat.Konferenz erstellen - - - - - - Show Contact Info - Informationen über den aktuellen Kontakt anzeigen - - - - blockContact - Kontakt blockieren - - - - &Save History As... - &Verlauf speichern als... - - - - actionRestartChat - Chat neu starten - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Extras - - - - &Actions - &Aktionen - - - - Main Toolbar - Haupt-Symbolleiste - - - - - - Call Contact - Aktuellen Kontakt anrufen - - - - - - Send a File - Eine Datei senden - - - - - - Show Contact Info - Informationen über den aktuellen Kontakt anzeigen - - - - blockContact - Kontakt blockieren - - - - &Save History As... - &Verlauf speichern als... - - - - @company@ - @company@ - - - - MainWindow - Hauptfenster - - - - &Edit - &Bearbeiten - - - - Cu&t - &Ausschneiden - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopieren - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Einfügen - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Chat-Konferenz starten - - - - &Close - &Schließen - - - - Conference - Konferenz - - - - ChatRoomInviteWidget - - - Chat room - Chatraum - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chatraum</span></p></body></html> - - - - (Conference participants) - (Konferenzteilnehmer) - - - - &Remove - &Entfernen - - - - &Start - &Start - - - - Group Name - Gruppenname - - - - &Add - &Hinzufügen - - - - ChatToaster - - - Message - Nachricht - - - - Incoming Chat - Eingehender Chat - - - - ChatWidget - - - Form - Eingabemaske - - - - ConferenceCallWidget - - - Cancel - Abbrechen - - - - Start - Starten - - - - Phone number 2: - Telefonnummer 2: - - - - Phone number 1: - Telefonnummer 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Konferenz starten - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Bitte gib zwei Telefonnummern </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">oder @company@-Kontakt-IDsein, um</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eine Dreierkonferenz zu starten.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Bitte gib zwei Telefonnummern </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">oder @company@-Kontakt-IDsein, um</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eine Dreierkonferenz zu starten.</p> - - - - &Add >> - &Hinzufügen >> - - - - << &Remove - << &Entfernen - - - - Available Contacts - Verfügbare Kontakte - - - - &Start - &Start - - - - Cancel - Abbrechen - - - - ContactGroupPopupMenu - - - Remove Contact Group - Kontaktgruppe entfernen - - - - Rename Contact Group - Kontaktgruppe umbenennen - - - - Delete group - Gruppe löschen - - - - Do you really want to delete this group? - Willst Du diese Gruppe wirklich löschen? - - - - &Yes - &Ja - - - - &No - &Nein - - - - ContactList - - - Contact List - Kontaktliste - - - - ContactWidget - - - No mobile phone number set - Keine Handynummer angegeben - - - - No landline phone number set - Keine Festnetznummer angegeben - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um den Kontakt zu bearbeiten</p></body></html> - - - - CrashReport - - - Cancel - Abbrechen - - - - Program Failure - Programmfehler - - - - Send - Senden - - - - Optional Information - Freiwillige Angaben: - - - - Your Mail: - Deine E-Mail Adresse: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Nicht verfügbar - - - - Click here to change your call forward settings - Klicke hier, um Deine Anrufweiterleitungen zu ändern - - - - Call forward mode: - Anrufweiterleitungen: - - - - Purchase call out credits - Call Out-Credits kaufen - - - - Call Forward Method - Anrufweiterleitungsart: - - - - Call Voice Mail - Voicemail anrufen - - - - Click here to buy @company@'s credits - Klicke hier, um @company@-Credits zu kaufen - - - - DesktopService - - - Root Folder - Hauptordner - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Klicke auf die verschiedenen, sich in der Farbe verändernden Dinge, um Geräusche an Deinen Gesprächspartner zu senden. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Klicke hier, um Dein Anrufbeantworter anzurufen - - - - New Voice Mail: - Neue Voicemail: - - - - Click here to see missed call(s) - Klicke hier, um Deine verpassten Anrufe zu sehen - - - - Missed Call(s): - Verpasste Anrufe: - - - - FileTransferDialog - - - ... - ... - - - - Download - Download - - - - Upload - Upload - - - - Click here to change your download folder - Klicke hier, um den Downloadordner zu ändern - - - - Download folder: - Downloadverzeichnis: - - - - Clean all items in the list - Alle Einträge in der Liste löschen - - - - &Clean - &Aufräumen - - - - @product@ - File Transfer Manager - @product@ - Dateitransfer-Manager - - - - FileTransferItem - - - Cancel - Abbrechen - - - - Form - Eingabemaske - - - - Pause - Pause - - - - <i>From:</i> - <i>Von:</i> - - - - GeneralSettings - - - When I double-click on a contact - Wenn ich auf einen Kontakt doppelklicke - - - - Call cell phone or land line if contact not online - Handy oder Festnetz anrufen, wenn der Kontakt nicht online ist. - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - (Inaktiv) Status - - - - minutes - Minuten - - - - Show me as "Away" when I am inactive for: - Markiere mich als "Abwesend", wenn ich inaktiv bin seit: - - - - When I start my computer - Wenn ich meinen Computer starte - - - - Automatically start @product@ - Starte @product@ automatsich - - - - GoogleTalkSettings - - - Login: - Benutzername: - - - - Password: - Passwort: - - - - GoogleTalk Settings - GoogleTalk-Einstellungen - - - - Forgot your GoogleTalk password? - GoogleTalk Passwort vergessen? - - - - Get a new GoogleTalk Account - Einen neuen GoogleTalk-Zugang erstellen - - - - HttpProxyLoginWindow - - - Cancel - Abbrechen - - - - HTTP Proxy Address: - HTTP Proxy Adresse: - - - - HTTP Proxy Port Number: - HTTP Proxy Port-Nummer: - - - - HTTP Proxy Login: - HTTP Proxy Benutzername: - - - - HTTP Proxy Password: - HTTP Proxy Passwort: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Proxy Authentifizierung</span><br /><br /><span>Dein lokaler HTTP proxy benötigt eine Authentifizierung<br />Bitte gib Deinen Benutzernamen und Dein Passwort ein</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Lokaler HTTP Proxy - - - - ICQSettings - - - Login: - Benutzername: - - - - Password: - Passwort: - - - - ICQ Settings - ICQ-Einstellungen - - - - Forgot your ICQ password? - AIM-Passwort vergessen? - - - - Get a new ICQ Account - Einen neuen AIM-Zugang erstellen - - - - IMAccountManager - - - Close - Schließen - - - - Login - Anmeldung - - - - Add - Hinzufügen - - - - Delete - Löschen - - - - Modify - Ändern - - - - Protocol - Protokoll - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Meine Instant Messaging-Zugänge (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Abbrechen - - - - Save - Speichern - - - - IM Account Settings - IM-Zugangseinstellungen - - - - IMContactManager - - - Add - Hinzufügen - - - - Delete - Löschen - - - - Contact Type (protocol) - Art des Kontakts (Protokoll) - - - - Click on the add button below to add a new ID - Klick unten auf den "Hinzufügen"-Button um eine neue ID hinzuzufügen - - - - Contact ID - Kontakt-ID - - - - IMProfileWidget - - - - Enter your nickname here - Gib hier Deinen Spitznamen ein - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Einen IM-Zugang hinzufügen (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Einen IM-Zugang hinzufügen - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um deinen Avatar zu ändern.</p></body></html> - - - - ImageSelector - - - Cancel - Abbrechen - - - - OK - OK - - - - Go Up - Nach oben - - - - Refresh - Aktualisieren - - - - JabberSettings - - - Login: - Benutzername: - - - - Password: - Passwort: - - - - Jabber Settings - Jabber-Einstellungen - - - - Connect Server: - Jabber-Server: - - - - <u>Advanced Options</u> - <u>Erweiterte-Einstellungen</u> - - - - Require TLS - TLS - - - - Port: - Port: - - - - Use TLS if available - TLS, wenn möglich - - - - Allow plaintext authentication over unencrypted streams - Erlaube eine Anmeldung per Klartext über eine unverschlüsselte Verbindung - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Erzwinge altes SSL (Port 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Deine Sprache ist noch nicht vorhanden. Weißt du, dass du deine eigene Übersetzung mit Hilfe von Launchpad machen kannst? - - - - More information here. - Mehr Informationen. - - - - LogAccount - - - Password: - Passwort: - - - - Need help? - Brauchst du Hilfe? - - - - Cancel - Abbrechen - - - - Delete - Löschen - - - - @product@ - Login - @product@ - Anmeldung - - - - Account: - Zugang: - - - - &Connect - &Verbinden - - - - Forgot your @company@ password? - @company@ Passwort vergessen? - - - - &Modify - &Bearbeiten - - - - Configure a &New Profile - Ein &Neues Profil erstellen - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Bitte wähle ein zuvor benutztes Profil<br/> oder gib die nötigen Informationen an, um Verbindung mit einem<br/> @company@-Zugang herzustellen</span> - - - - MSNSettings - - - Login: - Benutzername: - - - - Password: - Passwort: - - - - MSN Settings - MSN-Einstellungen - - - - Forgot your MSN password? - MSN Passwort vergessen? - - - - Get a new MSN Account - Einen neuen MSN-Zugang erstellen - - - - Use HTTP method - HTTP-Methode benutzen - - - - MainWindow - - - MainWindow - Hauptfenster - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Anruf annehmen - - - - Send Chat Message - Chat-Nachricht senden - - - - Make Call - Anrufen - - - - Hang Up - Auflegen - - - - ManageBlockedUsersSettings - - - Close - Schließen - - - - Unblock User - Blockierung des Benutzers aufheben - - - - Manage blocked users - Blockierte Benutzer verwalten - - - - @product@ - Manage blocked users - @product@ - Blockierte Kontakte verwalten - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Ich habe einen @company@-Zugang - - - - Create a @company@ account - Einen @company@-Zugang erstellen - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Um SMS-Nachrichten zu verschicken, musst du mit einem <br>@company@-Zugang angemeldet sein und @company@-Credits besitzen. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Wähle die Ereignisse aus, bei denen ein Klang abgespielt werden soll. - - - - NotificationSettingsItem - - - Sound file - Klangdatei - - - - Find a sound file - Klangdatei finden - - - - Play sound file - Klangdatei abspielen - - - - Play - Abspielen - - - - NotifyDialog - - - File Transfer - Dateitransfer - - - - &Ok - &OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualisierung</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Annehmen - - - - Status - Status - - - - 00:00:00 - 00:00:00 - - - - Nickname - Spitzname - - - - &Reject - &Ablehnen - - - - Dialpad - Wähltasten - - - - Audio Smileys - Audio-Smileys - - - - - Communication is encrypted - Die Verbindung ist verschlüsselt - - - - PrivacySettings - - - Manage blocked users - Blockierte Benutzer verwalten - - - - Privacy Rules - Datenschutz - - - - Always sign in as "Invisible" (appear offline to all users) - Immer als "Unsichtbar" anmelden (erscheint offline für alle anderen Benutzer) - - - - Allow chats from - Chats erlauben von - - - - - Anyone - Jeder - - - - - Only people from my contact list - Nur Personen von meiner Kontaktliste - - - - Allow calls from - Erlaube Anrufe von - - - - When I sign into @company@ - Wenn ich mich bei @company@ anmelde - - - - ProfileDetails - - - Cancel - Abbrechen - - - - Save - Speichern - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Hier klicken, um deinen Avatar zu ändern.</p></body></html> - - - - General - Allgemein - - - - Network IDs (MSN, Jabber...) - Netzwerk-IDs (MSN, Jabber...) - - - - Advanced >> - Erweitert >> - - - - Fill in all your network Id to stay connected with your contacts - Gib alle deine Netzwerk-IDs an, um in Verbindung mit deinen Freunden zu bleiben - - - - Contact - Kontakt - - - - Group: - Gruppe: - - - - Last Name: - Nachname: - - - - First Name: - Vorname: - - - - Details - Details - - - - Web/blog: - Web/Blog: - - - - Country: - Land: - - - - State: - Bundesland/Kanton: - - - - City: - Stadt: - - - - Gender: - Geschlecht: - - - - Birth Date: - Geburtsdatum: - - - - Email: - E-Mail: - - - - Notes - Anmerkungen - - - - Phone Numbers - Telefonnummern - - - - Home phone - Tel. (privat) - - - - Mobile phone - Handy: - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Unbekannt - - - - Male - männlich - - - - Female - weiblich - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Zugänge - - - - Accounts Settings - Zugangseinstellungen - - - - QtAddAccount - - - Configure your voip account - VoIP-Zugang konfigurieren - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Bitte teile uns mit, ob dein Zugang von <br/>@company@ oder einem anderen Anbieter zur Verfügung gestellt wird - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - Audio-Testanruf - - - - Video Test Call - Video-Testanruf - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Bitte gib die nötigen Informationen an, damit<br/>das Softphone sich mit deinem SIP-Zugang<br/>verbinden kann. - - - - Configure your SIP profile - SIP-Profil konfigurieren - - - - QtAddWengoAccount - - - Login - Anmeldung - - - - Please enter an email address. - Bitte eine E-Mail Adresse angeben. - - - - Please enter your email address<br/>and your password - Bitte gib deine E-Mail Adresse<br/>und dein Passwort ein - - - - @product@ - Connexion - @product@ - Verbindung - - - - QtAdvancedIMContactManager - - - Cancel - Abbrechen - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Willst du diesen IM-Kontakt wirklich löschen? - - - - - &Delete - &Löschen - - - - QtAdvancedSettings - - - Advanced - Erweitert - - - - Advanced Settings - Erweiterte-Einstellungen - - - - QtAppearanceSettings - - - - Me - Mich - - - - Hello - Hallo - - - - How are you? - Wie geht es dir? - - - - - - Other - Sonstige - - - - I am fine - Mir geht es gut. - - - - Have to go - Ich muss weg. - - - - Bye - Tschüss! - - - - Appearance - Darstellung - - - - Appearance Settings - Darstellungseinstellungen - - - - QtAudioSettings - - - - Advanced - Erweitert - - - - Audio - Audio - - - - Audio Settings - Audio-Einstellungen - - - - QtCallBar - - - +(country code) number or nickname - +(Ländercode) Nummer oder Spitzname - - - - QtCallForwardSettings - - - - Call Forward - Anrufweiterleitung - - - - Call Forward Settings - Anrufweiterleitungen - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Speichern unter - - - - QtChatLogViewer - - - Edit Contact - Kontakt ändern - - - - QtChatTabWidget - - - Close chat - Chat schließen - - - - QtChatWidget - - - %1 is connected. - %1 ist verbunden. - - - - %1 is disconnected. - %1 ist getrennt. - - - - send - senden - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Die Datei konnte nicht gesendet werden: Der Kontakt muss mit dem @company@-Netzwerk verbunden sein. - - - - Your contact wishes to send a file with @company@. - Dein Kontakt möchte eine Datei mit @company@ senden. - - - - Go to %1 to install it - Gehe zu %1, um es zu installieren - - - - %1 has joined the chat - %1 hat den Chat betreten - - - - %1 has left the chat - %1 hat den Chat verlassen - - - - QtChatWindow - - - Edit Contact - Kontakt ändern - - - - @product@ Chat - @product@ Chat - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - SIP-Adresse anrufen - - - - Call land line - Festnetztelefon anrufen - - - - Call Mobile - Handy anrufen - - - - Call @company@ - @company@ anrufen - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Du kannst nun Deinen ersten Gesprächspartner informieren, dass er Teilnehmer eines Konferenzgespräches wird.</b><br><br>Klicke danach auf den unteren Button. Dein erster Gesprächspartner wird gehalten, während Dein zweiter Gesprächspartner angerufen wird.<br> - - - - Hold first interlocutor and call second one - Ersten Gesprächspartner halten und eine zweiten anrufen - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Du kannst nun Deinen zweiten Gesprächspartner informieren, dass er Teilnehmer eines Konferenzgespräches wird.</b><br><br>Klicke danach auf den unteren Button, um die Konferenz zu starten. - - - - Start Conference - Konferenz starten - - - - - @product@ - Proceed Conference - @product@ - Konferenz vortsetzen - - - - QtContactList - - - &Yes - &Ja - - - - &No - &Nein - - - - Merge %1 with %2? - Verbinde %1 mit %2? - - - - @product@ - Merge Contacts - @product@ - Kontakte zusammenführen - - - - QtContactManager - - - &Yes - &Ja - - - - &No - &Nein - - - - Home phone - Tel. (privat) - - - - Mobile phone - Handy: - - - - @product@ - @product@ - - - - Edit Contact - Kontakt ändern - - - - Do you really want to delete this contact? - Willst du diesen Kontakt wirklich löschen? - - - - Start chat - Chat starten - - - - - Delete contact - Kontakt löschen - - - - Call - Anruf - - - - Free call - - - - - Work phone - Tel. (gesch.) - - - - Send SMS - SMS senden - - - - Edit contact - Kontakt bearbeiten - - - - Block contact - Kontakt blockieren - - - - Invite to conference - Zur Konferenz einladen - - - - Go to website - Zur Website - - - - Send file - Datei senden - - - - Forward to mobile phone - Weiterleiten zum Handy - - - - QtContactWidget - - - No mobile phone number set - Keine Handynummer angegeben - - - - No landline phone number set - Keine Festnetznummer angegeben - - - - - Click here to call - Hier klicken, um anzurufen - - - - - Click here to set a phone number - Hier klicken, um eine Telefonnummer festzulegen - - - - Click here to edit the contact - Hier klicken, um den Kontakt zu bearbeiten - - - - Click here to send a SMS - Hier klicken, um eine SMS zu senden - - - - Click here to start a chat - Hier klicken, um einen Chat zu starten - - - - Click here to start a free call - Hier klicken, um einen kostenlosen Anruf zu tätigen - - - - Click here to send a file - Hier klicken, um eine Datei zu senden - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Willst du deinen Anrufbeantworter anrufen? - - - - @product@ - Voice Mail - @product@ - Voice Mail - - - - QtFileTransfer - - - &Yes - &Ja - - - - &No - &Nein - - - - Choose a directory - Verzeichnis auswählen - - - - Overwrite File? - Datei überschreiben? - - - - A file called %1 already exists.Do you want to overwrite it? - Eine Datei mit dem Namen %1 existiert bereits.Soll diese überschrieben werden? - - - - - File size error - Fehlerhafte Dateigröße - - - - %1 exceeds the maximum authorized size. - %1 hat die maximal erlaubte Größe überschritten. - - - - %1 has size 0. - %1 hat die Größe 0. - - - - %1 is a directory. - %1 ist ein Verzeichnis. - - - - You can not send a directory. - Du kannst kein Verzeichnis versenden. - - - - %1 is a shortcut. - %1 ist eine Verknüpfung. - - - - You can not send a shortcut. - Du kannst keine Verknüpfung versenden. - - - - All Files (*.* *) - Alle Dateien (*.**) - - - - Please upgrade<br> your @product@ - Bitte aktualisiere<br> dein @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Teile deinem Gesprächspartner mit, <br> dass er sein<br> @product@ aktualisieren muss - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Die Datei kann nicht empfangen werden: Du musst dein @product@ aktualisieren, um sie zu empfangen. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - versucht dir eine Datei zu senden aber sein @product@ muss aktualisiert werden, um es zu versenden. Teile ihm mit, dass er die neueste Version herunterladen muss. - - - - QtFileTransferItem - - - - - Cancel - Abbrechen - - - - Remove - Entfernen - - - - - Pause - Pause - - - - Starting - Startet - - - - From: - Von: - - - - To: - Zu: - - - - Open - Öffnen - - - - Resume - Fortsetzen - - - - Waiting for anwser... - Warte auf Antwort... - - - - Done - Fertig - - - - Failed - Fehlgeschlagen - - - - Paused - Angehalten - - - - Paused by peer - Angehalten vom Verbindungspartner - - - - Cancelled - Abgebrochen - - - - Cancelled by peer - Abgebrochen vom Verbindungspartner - - - - - Downloading... - Wird heruntergeladen... - - - - Uploading... - Lade hoch... - - - - Waiting for peer... - Warte auf Partner... - - - - An error occured during the file transfer - Während der Übertragung ist ein Fehler aufgetreten - - - - This may be caused by : - Der Grund könnte folgender sein: - - - - Your @product@ is not up to date. Please download the latest version on - Dein @product@ ist nicht aktuell. Bitte lade dir die aktuellste Version herunter, unter - - - - The @company@ network may be temporarily unavailable. Please try later. - Das @company@-Netzwerk ist möglicherweise vorübergehend nicht erreichbar. Bitte versuche es später noch einmal. - - - - QtGeneralSettings - - - General - Allgemein - - - - General Settings - Allgemeine Einstellungen - - - - QtHistory - - - Incoming call - Eingehender Anruf - - - - Outgoing call - Abgehender Anruf - - - - Missed call - Verpasster Anruf - - - - Rejected call - Abgewiesener Anruf - - - - Outgoing SMS - Abgehende SMS - - - - Do you want to call %1? - Möchtest Du %1 anrufen? - - - - Chat session - Chatsitzung - - - - @product@ - Call History - @product@ - Gesprächsverlauf - - - - Type - Typ - - - - Name/ID - Name/ID - - - - Date - Datum - - - - Duration - Dauer - - - - QtHistoryWidget - - - Erase this entry - Diesen Eintrag löschen - - - - Open in SMS window - In SMS-Fenster öffnen - - - - Call this peer - Diesen Partner anrufen - - - - Show chat log - Chat-Protokoll anzeigen - - - - QtIMAccountManager - - - Cancel - Abbrechen - - - - @product@ - @product@ - - - - &Delete - &Löschen - - - - Are sure you want to delete this account? - - Willst du diesen Kontakt wirklich löschen? - - - - - QtIMAccountMonitor - - - - - Disconnected - Nicht verbunden - - - - Error: %1 - Fehler: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Online - - - - Invisible - Unsichtbar - - - - Away - Abwesend - - - - Do not disturb - Nicht stören - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Bitte gib einen Benutzernamen ein - - - - QtIMAccountPresenceMenuManager - - - Cancel - Abbrechen - - - - @product@ - @product@ - - - - &Delete - &Löschen - - - - Online - Online - - - - Invisible - Unsichtbar - - - - Away - Abwesend - - - - Do Not Disturb - Nicht stören - - - - Disconnect - Verbindung trennen - - - - Delete Account - Zugang löschen - - - - Are sure you want to delete the account <b>%1</b>? - Bist Du sicher, dass du den Zugang <b>%1</b> löschen willst? - - - - QtIMProfileWidget - - - Edit My Profile - Mein Profil bearbeiten - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Sprache - - - - Language Settings - Spracheinstellungen - - - - QtLogAccount - - - Invalid account - Ungüliger Zugang - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Bitte wähle ein zuvor benutztes Profil<br/> oder gib die nötigen Informationen an, um Verbindung mit einem<br/> @company@-Zugang herzustellen - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Verbindung - - - - QtNotificationSettings - - - Incoming call (ringtone) - Eingehender Anruf (Klingelton) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Anruf beendet (Besetztzeichen) - - - - Incoming chat - Eingehender Chat - - - - IM account connected - IM-Zugang verbunden - - - - IM account disconnected - IM-Zugang getrennt - - - - Contact online - Kontakt online - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Wähle eine Klangdatei - - - - Sounds - Klänge - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Eingehender Anruf - - - - Resume - Fortsetzen - - - - Hang-up - Auflegen - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Fehler - - - - Talking - Am sprechen - - - - Dialing - Wähle - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Es klingelt - - - - Redirected - Umgeleited - - - - Initialization... - Initialisierung... - - - - Closed - Geschlossen - - - - - Hold - Halten - - - - Add contact - Kontakt hinzufügen - - - - Ca&ncel - Ab&brechen - - - - Talking - Conference - Am sprechen - Konferenz - - - - Add a Contact - Kontakt hinzufügen - - - - QtPresenceMenuManager - - - Online - Online - - - - Invisible - Unsichtbar - - - - Away - Abwesend - - - - Do Not Disturb - Nicht stören - - - - Log off - Abmelden - - - - QtPrivacySettings - - - Privacy - Datenschutz - - - - Privacy Settings - Einstellungen zur Privatsphäre - - - - QtProfileBar - - - Click here to change your status - Klicke hier, um deinen Status zu ändern - - - - - active - aktiv - - - - voicemail - Sprachnachricht - - - - inactive - inaktiv - - - - unauthorized - nicht berechtigt - - - - Set global presence to: - Globale Anwesenheit setzen: - - - - Voice mail - Voice-Mailbox - - - - QtProfileDetails - - - Advanced >> - Erweitert >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Ein Kontakt muß einer Gruppe zugeordnet sein, bitte gib eine Gruppe an. - - - - << Simple - << Einfach - - - - Select your avatar - Avatar auswählen - - - - @product@ - No Group Selected - @product@ - Keine Gruppe ausgewählt - - - - @company@ Avatars - @company@ Avatare - - - - QtRenameGroup - - - Bad group name - Ungültiger Gruppenname - - - - Group name cannot be empty - Ein Gruppenname kann nicht leer sein - - - - QtSecuritySettings - - - Security - Sicherheitseinstellungen - - - - Security Settings - Sicherheitseinstellungen - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Bitte gib eine Telefonnummer ein. - - - - Do you want to continue? - Willst du fortfahren? - - - - Your SMS has not been sent - Deine SMS wurde nicht gesendet - - - - Your SMS has been sent - Deine SMS wurde gesendet - - - - Your message is too long. -This will send - Die Nachricht ist zu lang. -Folgendes wird gesendet: - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Du kannst keine leere Nachricht senden. - - - - - - - @company@ SMS service - @company@ SMS-Service - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Update fehlgeschlagen - - - - @product@ update failed to start: try to update @product@ manually - @product@ Update konnte nicht gestartet werden: Bitte versuche @product@ manuell zu aktualisieren - - - - QtStatusBar - - - - Not connected - Nicht verbunden - - - - Register done - Angemeldet - - - - Unregister done - Abgemeldet - - - - Connecting - Verbindung wird hergestellt - - - - Output volume is muted - Die Ausgabelautstärke ist stumm gestellt. - - - - Output volume is 0 - Die Ausgabelautstärke ist 0. - - - - Click to adjust output volume - Hier klicken, um die Ausgabelautstärke einzustellen - - - - Input volume is muted - Das Mikrofon ist stumm gestellt. - - - - Input volume is 0 - Die Lautstärke des Mikrofons ist 0 - - - - Click to adjust input volume - Hier klicken, um die Lautstärke des Mikrofons einzustellen - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - SIP-Adresse anrufen - - - - Call land line - Festnetztelefon anrufen - - - - Call Mobile - Handy anrufen - - - - Call @company@ - @company@ anrufen - - - - Call - Anruf - - - - Send SMS - SMS senden - - - - Online - Online - - - - Invisible - Unsichtbar - - - - Away - Abwesend - - - - Do Not Disturb - Nicht stören - - - - Internet Connection Error - Die Internetverbindung ist: Fehlerhaft - - - - Offline - Offline - - - - Connecting... - Verbindung wird hergestellt... - - - - Send a SMS - SMS senden - - - - Start a chat - Chat starten - - - - Place Call - Anruf tätigen - - - - Send File - Datei senden - - - - Multiple Status - Mehrfacher Status - - - - Unknown Status - Unbekannter Status - - - - Quit @product@ - Beende @product@ - - - - QtToolBar - - - &Cancel - &Abbrechen - - - - @product@ - Proceed Conference - @product@ - Konferenz vortsetzen - - - - Edit My Profile - Mein Profil bearbeiten - - - - Add a Contact - Kontakt hinzufügen - - - - Hide Unavailable Contacts - Nicht erreichbare Kontakte verbergen - - - - Show Unavailable Contacts - Nicht erreichbare Kontakte anzeigen - - - - Hide Groups - Gruppen verbergen - - - - Show Groups - Gruppen anzeigen - - - - You have unfinished call(s). - Du hast noch unbeendete anrufe. - - - - Are you sure you want to log off? - Bist Du sicher, das du dich abmelden willst? - - - - &Log Off - &Abmelden - - - - Disable &Video Calls - &Videoanrufe deaktivieren - - - - Enable &Video Calls - &Videoanrufe ermöglichen - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Konferenz kann nicht gestartet werden, solange andere Gespräche aktiv sind.</b><br><br>Beende alle Gespräche und probiere erneut. - - - - @product@ - Warning - @product@ - Warnung - - - - - Log &Off... - &Abmelden - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Kontaktliste - - - - QtUserProfile - - - Edit Contact - Kontakt ändern - - - - - &Authorize - &Berechtigen - - - - - &Block - &Blockieren - - - - Network error. - Netzwerkfehler. - - - - - @product@ - Authorization Request - @product@ - Autorisationsanfrage - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Beim laden des Profils ist ein Problem aufgetreten. -Das letzte Backup des Profils wurde geladen: -nach dem letzten Backup gemachte Änderungen -sind möglicherweise verloren gegangen - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Das Profil konnte nicht geladen werden. -Bitte wähle ein anderes aus oder erstelle ein neues. - - - - Wrong email/password entered - Falsche E-Mail Adresse oder falsches Passwort eingegeben - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normal - - - - - Good - Gut - - - - - Very good - Sehr gut - - - - - Excellent - Exzellent - - - - Video Settings - Video-Einstellungen - - - - QtVoicemailSettings - - - Voicemail - Voicemail - - - - Voicemail Settings - Voicemail-Einstellungen - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Verzeichnis - - - - QtWengoConfigDialog - - - Advanced - Erweitert - - - - General - Allgemein - - - - Accounts - Zugänge - - - - Audio - Audio - - - - Call Forward - Anrufweiterleitung - - - - Language - Sprache - - - - Privacy - Datenschutz - - - - Video - Video - - - - Voicemail - Voicemail - - - - security - Sicherheit - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Abbrechen - - - - - - - Conference - Konferenz - - - - Call - Anruf - - - - Account - - - - - Add a Contact - Kontakt hinzufügen - - - - You have unfinished call(s). - Du hast noch unbeendete anrufe. - - - - @product@ - Warning - @product@ - Warnung - - - - - Home - Start - - - - Are you sure you want to exit the application? - Wollen Sie die Anwendung wirklich beenden? - - - - &Exit - &Beenden - - - - @product@ - Call Error - @product@ - Anruffehler - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Abbrechen - - - - OK - OK - - - - Enter the new group name: - Gib den neuen Gruppennamen ein: - - - - @product@ - Rename Contact Group - @product@ - Kontaktgruppe umbenennen - - - - SecuritySettings - - - Form - Eingabemaske - - - - Enable call encryption - Verschlüsselung der Anrufe einschalten - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ kann Anrufe mit Hilfe des AES 128-Bits Verschlüsselungssystems verschlüsseln und Diffie-Hellman für den Schlüsselaustausch verwenden. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Aktualisiere dein Profil - - - - Yahoo! ID: - Yahoo!-ID: - - - - MSN ID: - MSN-ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk-ID: - - - - exemple: username@server - Beispiel: benutzername@server - - - - SIP ID: - SIP-ID - - - - ICQ ID: - AIM/ICQ-ID: - - - - AIM ID: - AIM-ID: - - - - @company@ ID: - @company@-ID: - - - - SmsWindow - - - Send - Senden - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Klicke hier, um eine Telefonnummer hinzuzufügen - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Gib hier deine Signatur ein - - - - Signature: - Signatur: - - - - Phone number(s): - Telefonnummer(n): - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Gib die Telefonnummer(n) hier ein<br />Sie müßen mit einem "&" oder ";" oder "," getrennt werden. - - - - SoftUpdateWindow - - - Cancel - Abbrechen - - - - @product@ - Downloading update - @product@ - Update wird heruntergeladen - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Eingabemaske - - - - VideoSettings - - - Normal - Normal - - - - Good - Gut - - - - Very good - Sehr gut - - - - Excellent - Exzellent - - - - Enable video - Video aktivieren - - - - Webcam Selection - Webcam Auswahl - - - - Webcam device: - Webcam: - - - - Webcam Preview - Webcam Vorschau - - - - Connection Type - Verbindungsart - - - - Video quality - Videoqualität - - - - Down (kbit/s) - Down (kbit/s) - - - - Up (kbit/s) - Up (kbit/s) - - - - 0 to 512 - 0 bis 512 - - - - 0 to 128 - 0 bis 128 - - - - 512 to 2048 - 512 bis 2048 - - - - 128 to 256 - 128 bis 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Die Videoqualität hängt von der Bandbreite des Internetzugangs ab - - - - Make a test video call - Test-Videoanruf ausführen - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Eingabemaske - - - - Phone number of your voicemail: - Voicemail-Telefonnummer: - - - - Please fill in here the information about your voicemail - Gib hier die notwendigen Informationen über dein Voicemail an: - - - - WengoConfigDialog - - - Cancel - Abbrechen - - - - Save - Speichern - - - - Title - Titel - - - - @product@ - Configuration - @product@ - Einstellungen - - - - WengoPhoneWindow - - - &Accept - &Annehmen - - - - &Hidden - &Versteckt - - - - &Tools - &Extras - - - - &Help - &Hilfe - - - - &Actions - &Aktionen - - - - @company@ - @company@ - - - - &Close - &Schließen - - - - Dialpad - Wähltasten - - - - @product@ - @product@ - - - - Start Conference - Konferenz starten - - - - Send SMS - SMS senden - - - - Contacts - Meine Kontakte - - - - History - Verlauf - - - - Clear &History - &Verlauf leeren - - - - ToolBar - Symbolleiste - - - - Show/Hide Unavailable &Contacts - Nicht erreichbare &Kontakte anzeigen/verbergen - - - - &Chat Sessions - &Chatsitzung - - - - &All - &Alle - - - - &HangUp - &Auflegen - - - - &Hold/Resume - &Halten/Wiederaufnehmen - - - - Show/Hide &Groups - &Gruppen anzeigen/verbergen - - - - &Outgoing Calls - &Ausgehende Anrufe - - - - &Incoming Calls - &Eingehende Anrufe - - - - &Missed Calls - &Verpasste Anrufe - - - - Enable/Disable &Video Calls - &Videoanrufe einschalten/ausschalten - - - - Short Text &Messages (SMS) - &Kurznachrichten (SMS) - - - - Rejected Calls - Abgelehnte Anrufe - - - - &Contacts - &Kontakte - - - - &About... - &Über... - - - - Add &Contact... - &Kontakt hinzufügen... - - - - &Configuration... - &Einstellungen... - - - - Send SMS... - SMS senden... - - - - View My &Profile... - Mein &Profil ansehen... - - - - - View My Profile - Mein Profil ansehen - - - - Start &Conference... - &Konferenz starten... - - - - &Find Contact... - Kontakt &finden.. - - - - Log &Off... - &Abmelden - - - - - Log Off - Abmelden - - - - Show &Chat Window - &Chatfenster anzeigen - - - - - Show Chat Window - Chatfenster anzeigen - - - - Show &File Transfer - &Dateitransfer anzeigen - - - - Add Contact - Kontakt hinzufügen - - - - View My @company@ Account... - Mein @company@ Zugang... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@ &Forum... - - - - @company@ &Wiki/FAQ... - @company@ &Wiki/FAQ... - - - - Learn more about @company@ Services... - Mehr über die @company@ Dienste erfahren... - - - - Search - Suchen - - - - Find @company@ Contacts - @company@-Kontakte finden - - - - &Quit - &Beenden - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Text unter den Icons - - - - &Icons Only - Nur &Symbole - - - - Add - Hinzufügen - - - - SMS - SMS - - - - Conference - Konferenz - - - - Wizard - - - Cancel - Abbrechen - - - - Finish - Fertig stellen - - - - Next > - Weiter > - - - - < Back - < Zurück - - - - Simple Wizard - Step %1 of %2 - Einfacher Wizard - Schritt %1 von %2 - - - - YahooSettings - - - Login: - Benutzername: - - - - Password: - Passwort: - - - - Yahoo! Settings - Yahoo!-Einstellungen - - - - Use Yahoo! Japan server - Verwende japanischen Yahoo!-Server - - - - Forgot your Yahoo! password? - Yahoo!-Passwort vergessen? - - - - Get a new Yahoo! Account - Einen neuen Yahoo!-Zugang erstellen - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_el.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_el.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_el.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_el.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5480 +0,0 @@ - - - - - AIMSettings - - - Login: - Σύνδεση: - - - - Forgot your AIM password? - Ξεχάσατε τον κωδικό του ΑΙΜ; - - - - Get a new AIM Account - Κάντε έναν νέο λογαριασμό ΑΙΜ - - - - Password: - Κωδικός: - - - - AIM Settings - Ρυθμίσεις AIM - - - - AboutWindow - - - About - Σχετικά - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Συγγραφείς - - - - Close - Κλείσιμο - - - - 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. - - - - - - @product@ - About - @product@ - Σχετικά - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Μεταφορά Αρχείου - - - - toto@wengo.fr - - - - - - test.bmp - - - - - - &Accept - Απο&δοχή - - - - &Cancel - Ακύ&ρωση - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - &Επεξεργασία του προφίλ μου - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - Ακύρωση - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Ακύρωση - - - - Contact Type (protocol): - - - - - - Contact ID: - Όνομα Επαφής: - - - - Account: - - - - - - Enable - - - - - - Login - Σύνδεση - - - - Add - Προσθήκη - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Κωδικός: - - - - Need help? - - - - - - &Back - - - - - - Cancel - Ακύρωση - - - - @product@ - Login - - - - - - &Connect - &Σύνδεση - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Κωδικός: - - - - Need help? - - - - - - &Back - - - - - - Cancel - Ακύρωση - - - - @product@ - Login - - - - - - &Connect - &Σύνδεση - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Κλείσιμο - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Προσθήκη - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Κλείσιμο - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Ακύρωση - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Ακύρωση - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Ακύρωση - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Ακύρωση - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Σύνδεση: - - - - Password: - Κωδικός: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Ακύρωση - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Σύνδεση: - - - - Password: - Κωδικός: - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Κλείσιμο - - - - Login - Σύνδεση - - - - Add - Προσθήκη - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Ακύρωση - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Προσθήκη - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Ακύρωση - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Σύνδεση: - - - - Password: - Κωδικός: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Κωδικός: - - - - Need help? - - - - - - Cancel - Ακύρωση - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - &Σύνδεση - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Σύνδεση: - - - - Password: - Κωδικός: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Κλείσιμο - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Μεταφορά Αρχείου - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - Απο&δοχή - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Ακύρωση - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Σύνδεση - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Ακύρωση - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Ακύρωση - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Ακύρωση - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Ακύρωση - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - Ακύ&ρωση - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - Ακύ&ρωση - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Ακύρωση - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Ακύρωση - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Ακύρωση - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - Απο&δοχή - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Προσθήκη - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Ακύρωση - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Σύνδεση: - - - - Password: - Κωδικός: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en_GB.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en_GB.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en_GB.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en_GB.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5258 +0,0 @@ - - - - - AIMSettings - - - Login: - Login: - - - - Forgot your AIM password? - Forgot your AIM password? - - - - Get a new AIM Account - Get a new AIM Account - - - - Password: - Password: - - - - AIM Settings - AIM Settings - - - - AboutWindow - - - About - About - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Authors - - - - Close - Close - - - - 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 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. - - - - @product@ - About - @product@ - About - - - - @product@, a voice over Internet phone - @product@, a voice over Internet phone - - - - AcceptDialog - - - File Transfer - File Transfer - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Accept - - - - &Cancel - &Cancel - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:sans-serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Edit my profile - - - - AddAccount - - - Configure your account: - Configure your account: - - - - &Next - &Next - - - - Need help? - Need help? - - - - You don't have any account ? Click here - You don't have an account? Click here - - - - &Back - &Back - - - - Cancel - Cancel - - - - @product@ - Login - @product@ - Login - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configure your VOIP account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - @company@ account - @company@ account - - - - Generic SIP account - Generic SIP account - - - - AddIMContact - - - Cancel - Cancel - - - - Contact Type (protocol): - Contact Type (protocol): - - - - Contact ID: - Contact ID: - - - - Account: - Account: - - - - Enable - Enable - - - - Login - Login - - - - Add - Add - - - - @product@ - Add a Contact Account - @product@ - Add a Contact Account - - - - AddSIPAccount - - - Password: - Password: - - - - Need help? - Need help? - - - - &Back - &Back - - - - Cancel - Cancel - - - - @product@ - Login - @product@ - Login - - - - &Connect - &Connect - - - - Activate presence and chat (SIP/SIMPLE) - Activate presence and chat (SIP/SIMPLE) - - - - Displayname: - Displayname: - - - - login / username: - login / username: - - - - Account name: - Account name: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - SIP Domain / Realm: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - Advanced - Advanced - - - - AddWengoAccount - - - Password: - Password: - - - - Need help? - Need help? - - - - &Back - &Back - - - - Cancel - Cancel - - - - @product@ - Login - @product@ - Login - - - - &Connect - &Connect - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Login</span><br/><br/><span>Please enter your email address and<br/>password</span> - - - - Email Address: - Email Address: - - - - Click here if you don't have a @company@ account - Click here if you don't have a @company@ account - - - - Forgot your @company@ password? - Forgot your @company@ password? - - - - AdvancedConfigWindow - - - Close - Close - - - - Preference Name - Preference Name - - - - Type - Type - - - - Value - Value - - - - Default Value - Default Value - - - - Save - Save - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - Advanced Configuration - - - - AdvancedSettings - - - Add - Add - - - - Advanced Settings - Advanced Settings - - - - Advanced Configuration Window - Advanced Configuration Window - - - - Automatically answer incoming calls from - Automatically answer incoming calls from - - - - Remove - Remove - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Warning, this part is for advanced users.<br/>Any mistake can badly damage the software. - - - - AppearanceSettings - - - Toolbar - Toolbar - - - - &Icons && Text - &Icons && Text - - - - Icons &Only - Icons &Only - - - - &Hidden - &Hidden - - - - Chat Theme - Chat Theme - - - - Form - Form - - - - AudioSettings - - - Reset - Reset - - - - Audio Codecs - Audio Codecs - - - - &Input device: - &Input device: - - - - &Output device: - &Output device: - - - - &Ringing device: - &Ringing device: - - - - &Make a test call - &Make a test call - - - - - Test - Test - - - - &Advanced >> - &Advanced >> - - - - &Half Duplex - &Half Duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Form - - - - AvatarWidget - - - Form - Form - - - - BrowserSoftUpdateWindow - - - Close - Close - - - - @product@ - Update available - @product@ - Update available - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3rd: - - - - 1st: - 1st: - - - - 2nd: - 2nd: - - - - - - (+ country code) phone number - (+ country code) phone number - - - - Forward all unanswered calls to message box - Forward all unanswered calls to message box - - - - Disable call forwarding - Disable call forwarding - - - - Forward all unanswered calls to following phone numbers: - Forward all unanswered calls to the following phone numbers: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - CallToaster - - - Incoming Call - Incoming Call - - - - Message - Message - - - - ChatLogViewer - - - Chat History - Chat History - - - - &Contact - &Contact - - - - &Tools - &Tools - - - - &Help - &Help - - - - &Actions - &Actions - - - - Main Toolbar - Main Toolbar - - - - - - Call Contact - Call Contact - - - - - - Send a File - Send a File - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Show Contact Info - - - - blockContact - blockContact - - - - &Save History As... - &Save History As... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contact - - - - &Tools - &Tools - - - - &Actions - &Actions - - - - Main Toolbar - Main Toolbar - - - - - - Call Contact - Call Contact - - - - - - Send a File - Send a File - - - - - - Show Contact Info - Show Contact Info - - - - blockContact - blockContact - - - - &Save History As... - &Save History As... - - - - @company@ - @company@ - - - - MainWindow - MainWindow - - - - &Edit - &Edit - - - - Cu&t - Cu&t - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copy - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Paste - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Start Chat Conference - - - - &Close - &Close - - - - Conference - Conference - - - - ChatRoomInviteWidget - - - Chat room - Chat room - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:"MS Shell Dlg"; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - (Conference participants) - (Conference participants) - - - - &Remove - &Remove - - - - &Start - &Start - - - - Group Name - Group Name - - - - &Add - &Add - - - - ChatToaster - - - Message - Message - - - - Incoming Chat - Incoming Chat - - - - ChatWidget - - - Form - Form - - - - ConferenceCallWidget - - - Cancel - Cancel - - - - Start - Start - - - - Phone number 2: - Phone number 2: - - - - Phone number 1: - Phone number 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Create a Conference - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">or @company@ contact ID in order</p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">to create a 3-way conference.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">or @company@ contact ID in order</p><p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">to create a 3-way conference.</p> - - - - &Add >> - &Add >> - - - - << &Remove - << &Remove - - - - Available Contacts - Available Contacts - - - - &Start - &Start - - - - Cancel - Cancel - - - - ContactGroupPopupMenu - - - Remove Contact Group - Remove Contact Group - - - - Rename Contact Group - Rename Contact Group - - - - Delete group - Delete group - - - - Do you really want to delete this group? - Do you really want to delete this group? - - - - &Yes - &Yes - - - - &No - &No - - - - ContactList - - - Contact List - Contact List - - - - ContactWidget - - - No mobile phone number set - No mobile phone number set - - - - No landline phone number set - No landline phone number set - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'sans-serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0; margin-bottom:0; margin-left:0; margin-right:0; -qt-block-indent:0; text-indent:0;">Click to edit this contact</p></body></html> - - - - CrashReport - - - Cancel - Cancel - - - - Program Failure - Program Failure - - - - Send - Send - - - - Optional Information - Optional Information - - - - Your Mail: - Your Mail: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Not Available - - - - Click here to change your call forward settings - Click here to change your call forwarding settings - - - - Call forward mode: - Call forward mode: - - - - Purchase call out credits - Purchase call out credits - - - - Call Forward Method - Call Forward Method - - - - Call Voice Mail - Call Voice Mail - - - - Click here to buy @company@'s credits - Click here to buy @company@'s credits - - - - DesktopService - - - Root Folder - Root Folder - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Click on the various colour changing items to send sounds to your interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Click here to call your voice mail - - - - New Voice Mail: - New Voice Mail: - - - - Click here to see missed call(s) - Click here to see missed call(s) - - - - Missed Call(s): - Missed Call(s): - - - - FileTransferDialog - - - ... - ... - - - - Download - Download - - - - Upload - Upload - - - - Click here to change your download folder - Click here to change your download folder - - - - Download folder: - Download folder: - - - - Clean all items in the list - Clean all items in the list - - - - &Clean - &Clean - - - - @product@ - File Transfer Manager - @product@ - File Transfer Manager - - - - FileTransferItem - - - Cancel - Cancel - - - - Form - Form - - - - Pause - Pause - - - - <i>From:</i> - <i>From:</i> - - - - GeneralSettings - - - When I double-click on a contact - When I double-click on a contact - - - - Call cell phone or land line if contact not online - Call mobile phone or landline if contact not online - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Idle status - - - - minutes - minutes - - - - Show me as "Away" when I am inactive for: - Show me as "Away" when I am inactive for: - - - - When I start my computer - When I start my computer - - - - Automatically start @product@ - Automatically start @product@ - - - - GoogleTalkSettings - - - Login: - Login: - - - - Password: - Password: - - - - GoogleTalk Settings - GoogleTalk Settings - - - - Forgot your GoogleTalk password? - Forgot your GoogleTalk password? - - - - Get a new GoogleTalk Account - Get a new GoogleTalk Account - - - - HttpProxyLoginWindow - - - Cancel - Cancel - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Login: - - - - Password: - Password: - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Close - - - - Login - Login - - - - Add - Add - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Cancel - - - - Save - Save - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Add - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Cancel - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Login: - - - - Password: - Password: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Password: - - - - Need help? - Need help? - - - - Cancel - Cancel - - - - Delete - - - - - - @product@ - Login - @product@ - Login - - - - Account: - Account: - - - - &Connect - &Connect - - - - Forgot your @company@ password? - Forgot your @company@ password? - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Login: - - - - Password: - Password: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - MainWindow - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Close - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - File Transfer - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Accept - - - - Status - Status - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Cancel - - - - Save - Save - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Login - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Cancel - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - Advanced - - - - Advanced Settings - Advanced Settings - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Advanced - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Yes - - - - &No - &No - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Yes - - - - &No - &No - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - No mobile phone number set - - - - No landline phone number set - No landline phone number set - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Yes - - - - &No - &No - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Cancel - - - - Remove - Remove - - - - - Pause - Pause - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Type - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Cancel - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancel - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Incoming Call - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Cancel - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Advanced - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancel - - - - - - - Conference - Conference - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancel - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Form - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Send - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Cancel - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Form - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Form - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Cancel - - - - Save - Save - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Accept - - - - &Hidden - &Hidden - - - - &Tools - &Tools - - - - &Help - &Help - - - - &Actions - &Actions - - - - @company@ - @company@ - - - - &Close - &Close - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Add - - - - SMS - - - - - - Conference - Conference - - - - Wizard - - - Cancel - Cancel - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Login: - - - - Password: - Password: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_en.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5546 +0,0 @@ - - - - - AIMSettings - - - Login: - - - - - - Forgot your AIM password? - - - - - - Get a new AIM Account - - - - - - Password: - - - - - - AIM Settings - - - - - - AboutWindow - - - About - - - - - - Copyright (C)2008 Mbdsys - - - - - Authors - - - - - - Close - - - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - - - - - - toto@wengo.fr - - - - - - test.bmp - - - - - - &Accept - - - - - - &Cancel - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - - - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - - - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - - - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - - - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - - - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - - - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - - - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - - - - - - Password: - - - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - - - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - - - - - - Password: - - - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - - - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - - - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - - - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - - - - - - Password: - - - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - - - - - - Need help? - - - - - - Cancel - - - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - - - - - - Password: - - - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - - - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - - - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - - - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - - - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - - - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Call Wengo contact - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - - - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Call Wengo contact - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - - - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - - - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - - - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - - - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - - - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - - - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - - - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - - - - - - Password: - - - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_eo.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_eo.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_eo.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_eo.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5480 +0,0 @@ - - - - - AIMSettings - - - Login: - Uzanto: - - - - Forgot your AIM password? - - - - - - Get a new AIM Account - - - - - - Password: - Pasvorto - - - - AIM Settings - - - - - - AboutWindow - - - About - - - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Aŭtoroj - - - - Close - Fermu - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - - - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Akceptu - - - - &Cancel - &Rezignu - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakto: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Disiernomo: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - &Editu mian profilon - - - - AddAccount - - - Configure your account: - - - - - - &Next - &Skeva - - - - Need help? - Bezonas helpi? - - - - You don't have any account ? Click here - Vi ne havas konton? Kliku tie cxi - - - - &Back - - - - - - Cancel - Rezignu - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Rezignu - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - kapabligi - - - - Login - - - - - - Add - Aldonu - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Pasvorto - - - - Need help? - Bezonas helpi? - - - - &Back - - - - - - Cancel - Rezignu - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Pasvorto - - - - Need help? - Bezonas helpi? - - - - &Back - - - - - - Cancel - Rezignu - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Fermu - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Aldonu - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Fermu - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Rezignu - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Rezignu - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Rezignu - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Rezignu - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Uzanto: - - - - Password: - Pasvorto - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Rezignu - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Uzanto: - - - - Password: - Pasvorto - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Fermu - - - - Login - - - - - - Add - Aldonu - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Rezignu - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Aldonu - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Rezignu - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Uzanto: - - - - Password: - Pasvorto - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Pasvorto - - - - Need help? - Bezonas helpi? - - - - Cancel - Rezignu - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Uzanto: - - - - Password: - Pasvorto - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Fermu - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - - - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Akceptu - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Rezignu - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Rezignu - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Rezignu - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Rezignu - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Rezignu - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - Rezignu - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Rezignu - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Rezignu - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Rezignu - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Rezignu - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Rezignu - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Akceptu - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Aldonu - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Rezignu - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Uzanto: - - - - Password: - Pasvorto - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_es.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_es.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_es.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_es.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4898 +0,0 @@ - - - - - AIMSettings - - - Login: - Usuario: - - - - Forgot your AIM password? - ¿Olvidó su contraseña de AIM? - - - - Get a new AIM Account - Obtenga una nueva cuenta de AIM - - - - Password: - Contraseña: - - - - AIM Settings - Preferencias de AIM/ICQ - - - - AboutWindow - - - About - Acerca de... - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autores - - - - Close - Cerrar - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Transferencia de Archivos - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Aceptar - - - - &Cancel - &Cancelar - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacto: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Archivo: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Archivo entrante</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Editar mi perfil - - - - AddAccount - - - Configure your account: - Configurar su cuenta: - - - - &Next - &Siguiente - - - - Need help? - ¿Necesitas Ayuda? - - - - You don't have any account ? Click here - ¿No posees ninguna cuenta? Has click aquí - - - - &Back - &Atras - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Cancelar - - - - Contact Type (protocol): - Tipo de Contacto (protocolo): - - - - Contact ID: - ID del contacto: - - - - Account: - Cuenta: - - - - Enable - Activar - - - - Login - Usuario - - - - Add - Agregar - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Contraseña: - - - - Need help? - ¿Necesitas Ayuda? - - - - &Back - &Atras - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - &Conectar - - - - Activate presence and chat (SIP/SIMPLE) - Activar presencia y mensajería (SIP/SIMPLE) - - - - Displayname: - Nombre a mostrar: - - - - login / username: - Ingreso / Nombre de usuario: - - - - Account name: - Nombre de la cuenta: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Servidor: - - - - SIP Domain / Realm: - Dominio SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configurar su perfil de SIP</span><br><br><span>Por favor ingrese la información que permitirá<br/>que su programa de Telefonía se conecte con su<br/>cuenta SIP</span - - - - Advanced - Avanzado - - - - AddWengoAccount - - - Password: - Contraseña: - - - - Need help? - ¿Necesitas Ayuda? - - - - &Back - &Atras - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - &Conectar - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Login</span><br><br><span>Por favor ingrese su dirección de Email y<br>contraseña</span> - - - - Email Address: - Dirección de E-Mail: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Cerrar - - - - Preference Name - Nombre de la Preferencia - - - - Type - Tipo - - - - Value - Valor - - - - Default Value - Valor por Defecto - - - - Save - Salvar - - - - Status - Estado - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Agregar - - - - Advanced Settings - Preferencias Avanzadas - - - - Advanced Configuration Window - Ventana Avanzada de Configuración - - - - Automatically answer incoming calls from - Contestar automáticamente las llamadas entrantes de - - - - Remove - Eliminar - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Cuidado, esta sección es para usuarios avanzados.<br>Cualquier error puede causar daños en el programa. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Formulario - - - - AudioSettings - - - Reset - Reiniciar - - - - Audio Codecs - Codecs de Audio - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulario - - - - AvatarWidget - - - Form - Formulario - - - - BrowserSoftUpdateWindow - - - Close - Cerrar - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Tercero: - - - - 1st: - Primero: - - - - 2nd: - Segundo: - - - - - - (+ country code) phone number - (+ código del país) número de teléfono - - - - Forward all unanswered calls to message box - Redireccionar llamadas no contestadas a la casilla de mensajes - - - - Disable call forwarding - Desactivar redirección de llamada - - - - Forward all unanswered calls to following phone numbers: - Redireccionar llamadas no contestadas a los siguientes números de teléfono: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Por ejemplo +3314500XXXX (+33 es el código del País y 14500XXXX es el número de teléfono) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Llamada entrante - - - - Message - Mensaje - - - - ChatLogViewer - - - Chat History - Historial de Charlas - - - - &Contact - &Contacto - - - - &Tools - &Herramientas - - - - &Help - &Ayuda - - - - &Actions - &Acciones - - - - Main Toolbar - Barra de herramientas principal - - - - - - Call Contact - Llamar al Contacto - - - - - - Send a File - Envíar un Archivo - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Mostrar Información del Contacto - - - - blockContact - blockContact - - - - &Save History As... - &Salvar Historial Cómo... - - - - actionRestartChat - actionRestartChat - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Contacto - - - - &Tools - &Herramientas - - - - &Actions - &Acciones - - - - Main Toolbar - Barra de herramientas principal - - - - - - Call Contact - Llamar al Contacto - - - - - - Send a File - Envíar un Archivo - - - - - - Show Contact Info - Mostrar Información del Contacto - - - - blockContact - blockContact - - - - &Save History As... - &Salvar Historial Cómo... - - - - @company@ - - - - - - MainWindow - Ventana Principal - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - &Cerrar - - - - Conference - Conferencia - - - - ChatRoomInviteWidget - - - Chat room - Sala de charla - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de Charla</span></p></body></html> - - - - (Conference participants) - (Participantes de la conferencia) - - - - &Remove - &Eliminar - - - - &Start - &Iniciar - - - - Group Name - Nombre del Grupo - - - - &Add - &Agregar - - - - ChatToaster - - - Message - Mensaje - - - - Incoming Chat - Charla Entrante - - - - ChatWidget - - - Form - Formulario - - - - ConferenceCallWidget - - - Cancel - Cancelar - - - - Start - Iniciar - - - - Phone number 2: - Número de teléfono 2: - - - - Phone number 1: - Número de Teléfono 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Iniciar - - - - Cancel - Cancelar - - - - ContactGroupPopupMenu - - - Remove Contact Group - Eliminar el Grupo de Contactos - - - - Rename Contact Group - Renombrar Grupo de Contactos - - - - Delete group - Eliminar grupo - - - - Do you really want to delete this group? - ¿Realmente desea eliminar este grupo? - - - - &Yes - &Sí - - - - &No - &No - - - - ContactList - - - Contact List - Lista de Contactos - - - - ContactWidget - - - No mobile phone number set - No ha establecido un número de teléfono móvil - - - - No landline phone number set - No ha establecido un número de teléfono fijo - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Cancelar - - - - Program Failure - Falla en el programa - - - - Send - Envíar - - - - Optional Information - Información opcional - - - - Your Mail: - Su Correo: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - No disponible - - - - Click here to change your call forward settings - Has click aquí para cambiar las preferencias del reenvío de llamadas - - - - Call forward mode: - Modo redirección de llamada: - - - - Purchase call out credits - Comprar créditos "call out" - - - - Call Forward Method - Método de reenvío de llamada - - - - Call Voice Mail - Llamar al correo de voz - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Carpeta del Administrador - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Haga Click en los elementos de variados colores cambiantes para envíar sonidos a su interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Pulse aquí para llamar a su correo de voz - - - - New Voice Mail: - Nuevo Mensaje de Voz: - - - - Click here to see missed call(s) - Has click aquí para ver llamada(s) perdida(s) - - - - Missed Call(s): - Llamada(s) Perdida(s): - - - - FileTransferDialog - - - ... - ... - - - - Download - Descarga - - - - Upload - Subida - - - - Click here to change your download folder - Haga Click aquí para cambiar la carpeta de descargas - - - - Download folder: - Carpeta de Descargas: - - - - Clean all items in the list - Limpiar todos los elementos de la lista - - - - &Clean - &Limpiar - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Cancelar - - - - Form - Formulario - - - - Pause - Pausa - - - - <i>From:</i> - <i>De:</i> - - - - GeneralSettings - - - When I double-click on a contact - Cuando haga doble-click sobre un contacto - - - - Call cell phone or land line if contact not online - Llamar al teléfono celular o de línea fija si el contacto no se encuentra conectado - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Estado inactivo - - - - minutes - minutos - - - - Show me as "Away" when I am inactive for: - Mostrarme como "Ausente" cuando esté inactivo por: - - - - When I start my computer - Cuando inicia mi computadora - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Usuario: - - - - Password: - Contraseña: - - - - GoogleTalk Settings - Preferencias de GoogleTalk - - - - Forgot your GoogleTalk password? - ¿Olvidó su contraseña de GoogleTalk? - - - - Get a new GoogleTalk Account - Consiga una nueva cuenta de GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Cancelar - - - - HTTP Proxy Address: - Dirección Proxy HTTP: - - - - HTTP Proxy Port Number: - Número de Puerto del Proxy HTTP: - - - - HTTP Proxy Login: - Usuario del Proxy HTTP: - - - - HTTP Proxy Password: - Contraseña del Proxy HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autentificación del Proxy HTTP</span><br><br><span>Su proxy local HTTP usa autentificación<br>Por favor ingrese el nombre de usuario y contraseña del mismo</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Usuario: - - - - Password: - Contraseña: - - - - ICQ Settings - Preferencias de AIM/ICQ - - - - Forgot your ICQ password? - ¿Olvidó su contraseña de AIM? - - - - Get a new ICQ Account - Obtenga una nueva cuenta de AIM - - - - IMAccountManager - - - Close - Cerrar - - - - Login - Usuario - - - - Add - Agregar - - - - Delete - Eliminar - - - - Modify - Modificar - - - - Protocol - Protocolo - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Cancelar - - - - Save - Salvar - - - - IM Account Settings - Preferencias de la cuenta de IM - - - - IMContactManager - - - Add - Agregar - - - - Delete - Eliminar - - - - Contact Type (protocol) - Tipo de contacto (protocolo) - - - - Click on the add button below to add a new ID - Haga click en el botón "Agregar" más abajo para ingresar un nuevo ID - - - - Contact ID - ID del Contacto - - - - IMProfileWidget - - - - Enter your nickname here - Ingrese su apodo aquí - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Agregar una cuenta de mensajería instantánea (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Agregar una cuenta de IM - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Cancelar - - - - OK - OK - - - - Go Up - Arriba - - - - Refresh - Recargar - - - - JabberSettings - - - Login: - Usuario: - - - - Password: - Contraseña: - - - - Jabber Settings - Preferencias de Jabber - - - - Connect Server: - Servidor de conexión: - - - - <u>Advanced Options</u> - <u>Opciones Avanzadas</u> - - - - Require TLS - Requiere TLS - - - - Port: - Puerto: - - - - Use TLS if available - Usar TLS si está disponible - - - - Allow plaintext authentication over unencrypted streams - Permitir autentificación en formato de texto plano sobre trasmisiones no encriptadas - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forzar antiguo (Puerto 5223) SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - ¿No encuentra su idioma? ¿Sabe que puede realizar su propia traducción en Launchpad? - - - - More information here. - Más información Aquí. - - - - LogAccount - - - Password: - Contraseña: - - - - Need help? - ¿Necesitas Ayuda? - - - - Cancel - Cancelar - - - - Delete - Eliminar - - - - @product@ - Login - - - - - - Account: - Cuenta: - - - - &Connect - &Conectar - - - - Forgot your @company@ password? - - - - - - &Modify - &Modificar - - - - Configure a &New Profile - Configurar un &Nuevo Perfil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Usuario: - - - - Password: - Contraseña: - - - - MSN Settings - Preferencias de MSN - - - - Forgot your MSN password? - ¿Olvidó su contraseña de MSN? - - - - Get a new MSN Account - Obtenga una nueva cuenta de MSN - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Ventana Principal - - - - Command::terminate() - Comando::terminar() - - - - Command::start() - Comando::iniciar() - - - - Accept Call - Aceptar llamada - - - - Send Chat Message - Enviar un mensaje de Charla - - - - Make Call - Realizar una llamada - - - - Hang Up - Colgar - - - - ManageBlockedUsersSettings - - - Close - Cerrar - - - - Unblock User - Desbloquear Usuario - - - - Manage blocked users - Administrar usuarios bloqueados - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Selecciona los eventos en los cuales debería reproducirse un sonido. - - - - NotificationSettingsItem - - - Sound file - Archivo de sonido - - - - Find a sound file - Buscar un archivo de sonido - - - - Play sound file - Ejecutar archivo de sonido - - - - Play - Reproducir - - - - NotifyDialog - - - File Transfer - Transferencia de Archivos - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estado:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualizar</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Aceptar - - - - Status - Estado - - - - 00:00:00 - 00:00:00 - - - - Nickname - Apodo - - - - &Reject - &Rechazar - - - - Dialpad - Teclado - - - - Audio Smileys - Emoticonos audibles - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Administrar usuarios bloqueados - - - - Privacy Rules - Reglas de privacidad - - - - Always sign in as "Invisible" (appear offline to all users) - Siempre iniciar sesión cómo "Invisible" (aparecerá desconectado para el resto de los usuarios) - - - - Allow chats from - Permitir charlas de - - - - - Anyone - Cualquiera - - - - - Only people from my contact list - Solamente personas de mi lista de contactos - - - - Allow calls from - Permitir llamadas de - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Cancelar - - - - Save - Salvar - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - General - - - - Network IDs (MSN, Jabber...) - ID de Red (MSN, Jabber...) - - - - Advanced >> - Avanzado >> - - - - Fill in all your network Id to stay connected with your contacts - Completa todas tus IDs de Red para mantenerte conectado con tus contactos - - - - Contact - Contacto - - - - Group: - Grupo: - - - - Last Name: - Apellido: - - - - First Name: - Primer Nombre: - - - - Details - Detalles - - - - Web/blog: - Web/blog: - - - - Country: - País: - - - - State: - Estado: - - - - City: - Ciudad: - - - - Gender: - Sexo: - - - - Birth Date: - Fecha de Nacimiento: - - - - Email: - E-Mail: - - - - Notes - Notas - - - - Phone Numbers - Números de Teléfono - - - - Home phone - Teléfono de Casa - - - - Mobile phone - Teléfono celular - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Desconocido - - - - Male - Masculino - - - - Female - Femenino - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Cuentas - - - - Accounts Settings - Configuración de Cuentas - - - - QtAddAccount - - - Configure your voip account - Configurar su cuenta de VoIP - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Por favor complete la información que<br/>permitirá que su programa de telefonía se conecte a su<br/>cuenta SIP - - - - Configure your SIP profile - Configurar el perfil de SIP - - - - QtAddWengoAccount - - - Login - Usuario - - - - Please enter an email address. - Por favor ingrese una dirección de Email. - - - - Please enter your email address<br/>and your password - Por favor introduzca su dirección de correo electrónico<br/>y su contraseña - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Cancelar - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Eliminar - - - - QtAdvancedSettings - - - Advanced - Avanzado - - - - Advanced Settings - Preferencias Avanzadas - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Avanzado - - - - Audio - Audio - - - - Audio Settings - Preferencias de Audio - - - - QtCallBar - - - +(country code) number or nickname - +(código del país) número o apodo - - - - QtCallForwardSettings - - - - Call Forward - Reenvío de Llamada - - - - Call Forward Settings - Preferencias de redirección de llamada - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Guardar como - - - - QtChatLogViewer - - - Edit Contact - Editar Contacto - - - - QtChatTabWidget - - - Close chat - Cerrar conversación - - - - QtChatWidget - - - %1 is connected. - %1 está conectado. - - - - %1 is disconnected. - %1 está desconectado. - - - - send - envíar - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Editar Contacto - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - LLamada SIP - - - - Call land line - Llamar a una línea fija - - - - Call Mobile - Llamar a un teléfono celular - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Ahora puede informar a su primer interlocutor que será parte de la conferencia.</b><br><br>Cuando esté listo, haga Click en el botón más abajo. Su primer interlocutor estará en modo de espera cuando se esté llamando al segundo.<br> - - - - Hold first interlocutor and call second one - Ponga en espera el primer interlocutor y llame al segundo - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Ahora puede informar a su segundo interlocutor que será parte de la conferencia.</b><br><br>When it's done, click the button below to start the conference. - - - - Start Conference - Iniciar Conferencia - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Sí - - - - &No - &No - - - - Merge %1 with %2? - ¿Fusionar %1 con %2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Sí - - - - &No - &No - - - - Home phone - Teléfono de Casa - - - - Mobile phone - Teléfono celular - - - - @product@ - - - - - - Edit Contact - Editar Contacto - - - - Do you really want to delete this contact? - ¿Realmente desea eliminar este contacto? - - - - Start chat - Iniciar charla - - - - - Delete contact - Eliminar contacto - - - - Call - Llamar - - - - Free call - - - - - Work phone - Teléfono de la oficina - - - - Send SMS - Enviar SMS - - - - Edit contact - Editar contacto - - - - Block contact - Bloquear contacto - - - - Invite to conference - Invitar a la conferencia - - - - Go to website - Ir al sitio Web - - - - Send file - Envíar un archivo - - - - Forward to mobile phone - Redireccionar hacia un teléfono celular - - - - QtContactWidget - - - No mobile phone number set - No ha establecido un número de teléfono móvil - - - - No landline phone number set - No ha establecido un número de teléfono fijo - - - - - Click here to call - Pulsar aquí para llamar - - - - - Click here to set a phone number - Pulse aquí para establecer un número de teléfono - - - - Click here to edit the contact - Pulse aquí para editar el contacto - - - - Click here to send a SMS - Pulsar aquí para enviar un SMS - - - - Click here to start a chat - Pulse aquí para empezar una charla - - - - Click here to start a free call - Pulsar aquí para hacer una llamada gratuíta - - - - Click here to send a file - Haga Click aquí para enviar un archivo - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - ¿Quiere llamar a su correo de voz? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Sí - - - - &No - &No - - - - Choose a directory - Elige un directorio - - - - Overwrite File? - ¿Sobreescribir archivo? - - - - A file called %1 already exists.Do you want to overwrite it? - Un archivo con el nombre %1 ya existe. ¿Desea sobreescribirlo? - - - - - File size error - Error en el tamaño del archivo - - - - %1 exceeds the maximum authorized size. - %1 supera el tamaño máximo permitido. - - - - %1 has size 0. - %1 tiene tamaño 0. - - - - %1 is a directory. - %1 es un directorio. - - - - You can not send a directory. - No puede envíar un directorio. - - - - %1 is a shortcut. - %1 es una acceso directo. - - - - You can not send a shortcut. - No puede envíar un acceso directo. - - - - All Files (*.* *) - Todos los archivos (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Cancelar - - - - Remove - Eliminar - - - - - Pause - Pausa - - - - Starting - Iniciando - - - - From: - De: - - - - To: - Para: - - - - Open - Abrir - - - - Resume - Resumir - - - - Waiting for anwser... - Esperando respuesta... - - - - Done - Hecho - - - - Failed - Ha fallado - - - - Paused - Pausada - - - - Paused by peer - Pausado por el interlocutor - - - - Cancelled - Cancelado - - - - Cancelled by peer - Cancelado por el interlocutor - - - - - Downloading... - Descargando... - - - - Uploading... - Enviando... - - - - Waiting for peer... - Esperando al cliente... - - - - An error occured during the file transfer - Un error ha ocurrido durante la transferencia del archivo - - - - This may be caused by : - Esto pudo ser causado por : - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - General - - - - General Settings - Preferencias Generales - - - - QtHistory - - - Incoming call - Llamada entrante - - - - Outgoing call - Llamada saliente - - - - Missed call - Llamada perdida - - - - Rejected call - Llamada rechazada - - - - Outgoing SMS - SMS salientes - - - - Do you want to call %1? - Quieres llamar a %1? - - - - Chat session - Sesión de charla - - - - @product@ - Call History - - - - - - Type - Tipo - - - - Name/ID - Nombre/ID - - - - Date - Fecha - - - - Duration - Duración - - - - QtHistoryWidget - - - Erase this entry - Eliminar esta entrada - - - - Open in SMS window - Abrir en la ventana de SMS - - - - Call this peer - Llamar a este interlocutor - - - - Show chat log - Mostrar el historial de la charla - - - - QtIMAccountManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - &Eliminar - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Desconectado - - - - Error: %1 - Error: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - En línea - - - - Invisible - Invisible - - - - Away - Ausente - - - - Do not disturb - No molestar - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Por favor ingreso un nombre de usuario - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - &Eliminar - - - - Online - En línea - - - - Invisible - Invisible - - - - Away - Ausente - - - - Do Not Disturb - No molestar - - - - Disconnect - Desconectar - - - - Delete Account - Eliminar cuenta - - - - Are sure you want to delete the account <b>%1</b>? - ¿Está seguro de borrar esta cuenta <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Editar mi perfil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Idioma - - - - Language Settings - Confuguración de Idioma - - - - QtLogAccount - - - Invalid account - Cuenta incorrecta - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Llamada entrante (tono de llamda) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Llamada cancelada (tono de cuelgue) - - - - Incoming chat - Charla entrante - - - - IM account connected - Cuenta de IM conectada - - - - IM account disconnected - Cuenta de IM desconectada - - - - Contact online - Contacto en línea - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Elija un archivo de sonido - - - - Sounds - Sonidos - - - - QtPhoneCall - - - Status - Estado - - - - Incoming Call - Llamada entrante - - - - Resume - Resumir - - - - Hang-up - Colgar - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Error - - - - Talking - Hablando - - - - Dialing - Marcando - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Llamando - - - - Redirected - Redireccionado - - - - Initialization... - Inicialización... - - - - Closed - Cerrado - - - - - Hold - Pausar - - - - Add contact - Agregar un contacto - - - - Ca&ncel - Ca&ncelar - - - - Talking - Conference - Hablando - Conferencia - - - - Add a Contact - Añadir contacto - - - - QtPresenceMenuManager - - - Online - En línea - - - - Invisible - Invisible - - - - Away - Ausente - - - - Do Not Disturb - No molestar - - - - Log off - Cerrar Sesión - - - - QtPrivacySettings - - - Privacy - Privacidad - - - - Privacy Settings - Configuración de privacidad - - - - QtProfileBar - - - Click here to change your status - Pulsa aquí para cambiar tu estado - - - - - active - activo - - - - voicemail - Correo de voz - - - - inactive - inactivo - - - - unauthorized - no autorizado - - - - Set global presence to: - Establecer preferencia global a: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Avanzado >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Un contacto debe tener un grupo, por favor establezca uno. - - - - << Simple - << Simple - - - - Select your avatar - Seleccione su avatar - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Nombre de grupo incorrecto - - - - Group name cannot be empty - El nombre del grupo no puede estar vacío - - - - QtSecuritySettings - - - Security - Seguridad - - - - Security Settings - Configuraciones de seguridad - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Por favor ingrese un número de teléfono. - - - - Do you want to continue? - ¿Quiere continuar? - - - - Your SMS has not been sent - Su SMS no ha sido enviado - - - - Your SMS has been sent - Su SMS ha sido enviado - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - No puede envíar un mensaje vacío. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - No conectado - - - - Register done - Registro correcto - - - - Unregister done - Eliminación de registro completado - - - - Connecting - Conectando - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Estado - - - - - - - - - - - - - @product@ - - - - - - Call SIP - LLamada SIP - - - - Call land line - Llamar a una línea fija - - - - Call Mobile - Llamar a un teléfono celular - - - - Call @company@ - - - - - - Call - Llamar - - - - Send SMS - Enviar SMS - - - - Online - En línea - - - - Invisible - Invisible - - - - Away - Ausente - - - - Do Not Disturb - No molestar - - - - Internet Connection Error - Error en la conexión a Internet - - - - Offline - Fuera de línea - - - - Connecting... - Conectando... - - - - Send a SMS - Envíar SMS - - - - Start a chat - Iniciar charla - - - - Place Call - Iniciar una llamada - - - - Send File - Envíar un archivo - - - - Multiple Status - Estados múltiples - - - - Unknown Status - Estado desconodido - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Cancelar - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Editar mi perfil - - - - Add a Contact - Añadir contacto - - - - Hide Unavailable Contacts - Ocultar contactos no disponibles - - - - Show Unavailable Contacts - Mostrar contactos no disponibles - - - - Hide Groups - Ocultar grupos - - - - Show Groups - Mostrar grupos - - - - You have unfinished call(s). - Posee llamada(s) sin finalizar. - - - - Are you sure you want to log off? - ¿Está seguro de cerrar sesión? - - - - &Log Off - &Cerrar sesión - - - - Disable &Video Calls - Activar/Desactivar &videollamadas - - - - Enable &Video Calls - Activar/Desactivar &videollamadas - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Una conferencia no puede iniciarse durante llamadas de teléfono activas.</b><br><br>Finalice todas las llamadas y vuelva a intentarlo. - - - - @product@ - Warning - - - - - - - Log &Off... - Cerrar &Sesión... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Lista de contactos - - - - QtUserProfile - - - Edit Contact - Editar Contacto - - - - - &Authorize - &Autorizar - - - - - &Block - &Bloquear - - - - Network error. - Error en la Red. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Email y/o contraseña introducida incorrecta - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normal - - - - - Good - Bueno - - - - - Very good - Muy bueno - - - - - Excellent - Excelente - - - - Video Settings - Preferencias de vídeo - - - - QtVoicemailSettings - - - Voicemail - Correo de voz - - - - Voicemail Settings - Configuración de correo de voz - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Avanzado - - - - General - General - - - - Accounts - Cuentas - - - - Audio - Audio - - - - Call Forward - Reenvío de Llamada - - - - Language - Idioma - - - - Privacy - Privacidad - - - - Video - Video - - - - Voicemail - Correo de voz - - - - security - Seguridad - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancelar - - - - - - - Conference - Conferencia - - - - Call - Llamar - - - - Account - - - - - Add a Contact - Añadir contacto - - - - You have unfinished call(s). - Posee llamada(s) sin finalizar. - - - - @product@ - Warning - - - - - - - Home - Inicio - - - - Are you sure you want to exit the application? - ¿Está seguro que desea salir de la aplicación? - - - - &Exit - &Salir - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancelar - - - - OK - OK - - - - Enter the new group name: - Introduzca el nombre del nuevo grupo: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Formulario - - - - Enable call encryption - Activar llamadas encriptadas - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Actualizar su perfil - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - ejemplo: usuario@servidor - - - - SIP ID: - ID de SIP: - - - - ICQ ID: - ID de AIM/ICQ: - - - - AIM ID: - ID de AIM/ICQ: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Envíar - - - - @product@ - SMS - - - - - - Click here to add a phone number - Pulse aquí para añadir un número de teléfono - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Introduzca su firma aquí - - - - Signature: - Firma: - - - - Phone number(s): - Número(s) de teléfono: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Ingrese el/los número(s) de teléfono aquí<br>Deben estar separados por & ó ; ó , - - - - SoftUpdateWindow - - - Cancel - Cancelar - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulario - - - - VideoSettings - - - Normal - Normal - - - - Good - Bueno - - - - Very good - Muy bueno - - - - Excellent - Excelente - - - - Enable video - Activar vídeo - - - - Webcam Selection - Selección de la Webcam - - - - Webcam device: - Dispositivo de Webcam: - - - - Webcam Preview - Previsualización de la Webcam - - - - Connection Type - Tipo de conexión - - - - Video quality - Calidad de vídeo - - - - Down (kbit/s) - Bajada (kbit/s) - - - - Up (kbit/s) - Subida (kbit/s) - - - - 0 to 512 - 0 a 512 - - - - 0 to 128 - 0 a 128 - - - - 512 to 2048 - 512 a 2048 - - - - 128 to 256 - 128 a 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - La calidad del vídeo depende del ancho de banda de su conexión a Internet - - - - Make a test video call - Hacer una videollamada de prueba - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Formulario - - - - Phone number of your voicemail: - Número de teléfono de su correo de voz: - - - - Please fill in here the information about your voicemail - Por favor ingrese la información necesaria de su correo de voz - - - - WengoConfigDialog - - - Cancel - Cancelar - - - - Save - Salvar - - - - Title - Título - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Aceptar - - - - &Hidden - - - - - - &Tools - &Herramientas - - - - &Help - &Ayuda - - - - &Actions - &Acciones - - - - @company@ - - - - - - &Close - &Cerrar - - - - Dialpad - Teclado - - - - @product@ - - - - - - Start Conference - Iniciar Conferencia - - - - Send SMS - Enviar SMS - - - - Contacts - Contactos - - - - History - Historial - - - - Clear &History - Limpiar &Historial - - - - ToolBar - Barra de herramientas - - - - Show/Hide Unavailable &Contacts - Mostrar/ocultar &contactos no disponibles - - - - &Chat Sessions - Sesiones de &Charla - - - - &All - &Todo - - - - &HangUp - &Colgar - - - - &Hold/Resume - &Pausar/Resumir - - - - Show/Hide &Groups - Mostar/Ocultar &Grupos - - - - &Outgoing Calls - Llamadas &salientes - - - - &Incoming Calls - Llamadas &entrantes - - - - &Missed Calls - Llamadas &perdidas - - - - Enable/Disable &Video Calls - Activar/Desactivar &videollamadas - - - - Short Text &Messages (SMS) - &Mensajes cortos de texto (SMS) - - - - Rejected Calls - Llamadas rechazadas - - - - &Contacts - &Contactos - - - - &About... - &Acerca de... - - - - Add &Contact... - Agregar una &Cuenta... - - - - &Configuration... - &Configuración... - - - - Send SMS... - Enviar SMS... - - - - View My &Profile... - Mostrar Mi &Perfil... - - - - - View My Profile - Mostrar Mi Perfil - - - - Start &Conference... - Iniciar &Conferencia... - - - - &Find Contact... - &Buscar Contacto... - - - - Log &Off... - Cerrar &Sesión... - - - - - Log Off - Cerrar Sesión - - - - Show &Chat Window - Mostrar ventana de &Charla - - - - - Show Chat Window - Mostrar ventana de Charla - - - - Show &File Transfer - Mostrar transferencia del &Archivo - - - - Add Contact - Agregar un contacto - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Agregar - - - - SMS - SMS - - - - Conference - Conferencia - - - - Wizard - - - Cancel - Cancelar - - - - Finish - Finalizar - - - - Next > - Siguiente > - - - - < Back - < Atras - - - - Simple Wizard - Step %1 of %2 - Asistente Simple - Paso %1 de %2 - - - - YahooSettings - - - Login: - Usuario: - - - - Password: - Contraseña: - - - - Yahoo! Settings - Configuración de Yahoo! - - - - Use Yahoo! Japan server - Utilizar el servidor de Yahoo! de Japón - - - - Forgot your Yahoo! password? - ¿Olvidó su contraseña de Yahoo! ? - - - - Get a new Yahoo! Account - Obtenga una nueva cuenta de Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fi.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fi.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fi.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fi.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4962 +0,0 @@ - - - - - AIMSettings - - - Login: - Tunnus: - - - - Forgot your AIM password? - Oletko unohtanut AIM salasanasi? - - - - Get a new AIM Account - Luo uusi AIM tili - - - - Password: - Salasana: - - - - AIM Settings - AIM/ICQ Asetukset - - - - AboutWindow - - - About - Tietoa - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Tekijät - - - - Close - Sulje - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Tiedostonsiirto - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Hyväksy - - - - &Cancel - &Peruuta - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Yhteystiedot: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tiedoston nimi: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Tuleva tiedosto</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Muokkaa omaa profiilia - - - - AddAccount - - - Configure your account: - Muokkaa omaa tiliä: - - - - &Next - &Seuraava - - - - Need help? - Tarvitsetko Apua? - - - - You don't have any account ? Click here - Sinulla ei ole yhtään tiliä. Napsauta tästä - - - - &Back - &Takaisin - - - - Cancel - Peruuta - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Peruuta - - - - Contact Type (protocol): - Yhteystieto Tyyppi: - - - - Contact ID: - Yhteystieto ID: - - - - Account: - Tili: - - - - Enable - Salli - - - - Login - - - - - - Add - Lisää - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Salasana: - - - - Need help? - Tarvitsetko Apua? - - - - &Back - &Takaisin - - - - Cancel - Peruuta - - - - @product@ - Login - - - - - - &Connect - &Yhdistä - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - Näytettävä nimi: - - - - login / username: - - - - - - Account name: - Tilin nimi: - - - - Proxy: - Välityspalvelin: - - - - : - : - - - - Server: - Palvelin: - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Salasana: - - - - Need help? - Tarvitsetko Apua? - - - - &Back - &Takaisin - - - - Cancel - Peruuta - - - - @product@ - Login - - - - - - &Connect - &Yhdistä - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - Sähköpostiosoite: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Sulje - - - - Preference Name - Yksilöllinen Nimi - - - - Type - Tyyppi - - - - Value - Arvo - - - - Default Value - Oletusarvo - - - - Save - Tallenna - - - - Status - Tila - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Lisää - - - - Advanced Settings - Lisäasetukset - - - - Advanced Configuration Window - Lisäasetus Ikkuna - - - - Automatically answer incoming calls from - Vastaa automaattisesti tuleviin puheluihin käyttäjältä - - - - Remove - Poista - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Varoitus, tämä alue on edistyneille käyttäjille.<br>Yksikin virhe voi vaurioittaa ohjelmaa pahasti. - - - - AppearanceSettings - - - Toolbar - Työkalupalkki - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - Tyhjennä - - - - Audio Codecs - Äänikoodekit - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - Kokeile - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Sulje - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3. - - - - 1st: - 1. - - - - 2nd: - 2. - - - - - - (+ country code) phone number - (+ maatunnus) puhelin numero - - - - Forward all unanswered calls to message box - Ohjaa kaikki vastaamattomat puhelut vastaajaan - - - - Disable call forwarding - Estä soitonohjaus - - - - Forward all unanswered calls to following phone numbers: - Ohjaa kaikki vastaamattomat puhelut seuraaviin puhelinnumeroihin: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Esim. +3584012XXXX (+358 on maatunnus ja 04012XXXX on puhelin numero) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Saapuva puhelu - - - - Message - Viesti - - - - ChatLogViewer - - - Chat History - Keskusteluhistoria - - - - &Contact - &Kontakti - - - - &Tools - &Työkalut - - - - &Help - &Ohje - - - - &Actions - &Toiminnot - - - - Main Toolbar - Päätyökalurivi - - - - - - Call Contact - Soita Kontaktiin - - - - - - Send a File - Lähetä tiedosto - - - - createChatConf - - - - - - - - Show Contact Info - Näytä Yhteystiedot - - - - blockContact - torju kontakti - - - - &Save History As... - &Tallenna Historia... - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Kontakti - - - - &Tools - &Työkalut - - - - &Actions - &Toiminnot - - - - Main Toolbar - Päätyökalurivi - - - - - - Call Contact - Soita Kontaktiin - - - - - - Send a File - Lähetä tiedosto - - - - - - Show Contact Info - Näytä Yhteystiedot - - - - blockContact - torju kontakti - - - - &Save History As... - &Tallenna Historia... - - - - @company@ - - - - - - MainWindow - PääIkkuna - - - - &Edit - &Muokkaa - - - - Cu&t - Lei&kkaa - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopioi - - - - Ctrl+C - Ctrl+C - - - - &Paste - L&iitä - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - &Sulje - - - - Conference - Neuvottelu - - - - ChatRoomInviteWidget - - - Chat room - Keskustelu - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Keskustelu</span></p></body></html> - - - - (Conference participants) - - - - - - &Remove - &Poista - - - - &Start - &Aloita - - - - Group Name - Ryhmän nimi - - - - &Add - &Lisää - - - - ChatToaster - - - Message - Viesti - - - - Incoming Chat - Tuleva Keskustelu - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Peruuta - - - - Start - Aloita - - - - Phone number 2: - Puhelin numero 2: - - - - Phone number 1: - Puhelin numero 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - << &Poista - - - - Available Contacts - Käytettävissä olevat Kontaktit - - - - &Start - &Aloita - - - - Cancel - Peruuta - - - - ContactGroupPopupMenu - - - Remove Contact Group - Poista Kontakti Ryhmä - - - - Rename Contact Group - Nimeä Kontakti Ryhmä Uudelleen - - - - Delete group - Poista ryhmä - - - - Do you really want to delete this group? - Haluatko varmasti poistaa tämän ryhmän? - - - - &Yes - &Kyllä - - - - &No - &Ei - - - - ContactList - - - Contact List - Kontakti Luettelo - - - - ContactWidget - - - No mobile phone number set - Ei matkapuhelin numeroa - - - - No landline phone number set - Ei lankapuhelin numeroa - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Peruuta - - - - Program Failure - Ohjelma Virhe - - - - Send - Lähettäjä - - - - Optional Information - Lisätiedot - - - - Your Mail: - Sähköposti: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Ei tavoittevissa - - - - Click here to change your call forward settings - Napsauta muokataksesi soitonohjaus asetuksia - - - - Call forward mode: - Soitonsiirto tila: - - - - Purchase call out credits - Hanki kredittejä ulossoittoon - - - - Call Forward Method - Soitonsiirto metodi - - - - Call Voice Mail - Soita vastaajaan - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Juurikansio - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Soita vastaajaan napsauttamalla tästä - - - - New Voice Mail: - Uusi Ääniviesti: - - - - Click here to see missed call(s) - Napsauta nähdäksesi vastaamattomat puhelut - - - - Missed Call(s): - Vastaamattomat Puhelut: - - - - FileTransferDialog - - - ... - ... - - - - Download - Ladatut - - - - Upload - Lähetetyt - - - - Click here to change your download folder - Napsauta muuttaaksesi latauskansiota - - - - Download folder: - Latauskansio: - - - - Clean all items in the list - - - - - - &Clean - &Tyhjennä - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Peruuta - - - - Form - - - - - - Pause - Pysäytä - - - - <i>From:</i> - <i>Lähettäjä:</i> - - - - GeneralSettings - - - When I double-click on a contact - Kun kaksoisnapsautan kontaktia - - - - Call cell phone or land line if contact not online - Soita matka- tai lankapuhelimeen jos kontakti ei ole tavoitettavissa - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Tilan asetus - - - - minutes - minuuttiin - - - - Show me as "Away" when I am inactive for: - Näytä tilaksi "Poissa" kun en ole aktiivinen: - - - - When I start my computer - Kun käynnistän tietokoneen - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Tunnus: - - - - Password: - Salasana: - - - - GoogleTalk Settings - GoogleTalk Asetukset - - - - Forgot your GoogleTalk password? - Olet unohtanut GoogleTalk salasanasi? - - - - Get a new GoogleTalk Account - Luo uusi GoogleTalk tili - - - - HttpProxyLoginWindow - - - Cancel - Peruuta - - - - HTTP Proxy Address: - HTTP Välityspalvelimen Osoite: - - - - HTTP Proxy Port Number: - HTTP Välityspalvelimen Portti: - - - - HTTP Proxy Login: - HTTP Välityspalvelmen tunnus: - - - - HTTP Proxy Password: - HTTP Välityspalvelimen Salasana: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Tunnus: - - - - Password: - Salasana: - - - - ICQ Settings - AIM/ICQ Asetukset - - - - Forgot your ICQ password? - Oletko unohtanut AIM salasanasi? - - - - Get a new ICQ Account - Luo uusi AIM tili - - - - IMAccountManager - - - Close - Sulje - - - - Login - - - - - - Add - Lisää - - - - Delete - Poista - - - - Modify - Muokkaa - - - - Protocol - Protokolla - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Peruuta - - - - Save - Tallenna - - - - IM Account Settings - IM Tilin Asetukset - - - - IMContactManager - - - Add - Lisää - - - - Delete - Poista - - - - Contact Type (protocol) - Kontaktin Tyyppi - - - - Click on the add button below to add a new ID - Napsauta lisää painiketta lisätäksesi uuden ID:n - - - - Contact ID - Kontakti ID - - - - IMProfileWidget - - - - Enter your nickname here - Anna nimimerkki tähän - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Peruuta - - - - OK - OK - - - - Go Up - Mene ylös - - - - Refresh - Päivitä - - - - JabberSettings - - - Login: - Tunnus: - - - - Password: - Salasana: - - - - Jabber Settings - Jabber Asetukset - - - - Connect Server: - Yhteys Palvelin: - - - - <u>Advanced Options</u> - <u>Lisäasetukset Asetukset</u> - - - - Require TLS - Vaatii TLS:n - - - - Port: - Portti: - - - - Use TLS if available - Käytä TLS:ää jos mahdollista - - - - Allow plaintext authentication over unencrypted streams - Salli viestien todennus salaamattomilla yhteyksillä - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Käytä vanhaa (portti 5223) SSL:ää - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Salasana: - - - - Need help? - Tarvitsetko Apua? - - - - Cancel - Peruuta - - - - Delete - Poista - - - - @product@ - Login - - - - - - Account: - Tili: - - - - &Connect - &Yhdistä - - - - Forgot your @company@ password? - - - - - - &Modify - &Muokkaa - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Tunnus: - - - - Password: - Salasana: - - - - MSN Settings - MSN Asetukset - - - - Forgot your MSN password? - Olet unohtanut MSN salasanasi? - - - - Get a new MSN Account - Luo uusi MSN tili - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - PääIkkuna - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - Hyväksy soittto - - - - Send Chat Message - Lähetä Keskustelu Viesti - - - - Make Call - Soita - - - - Hang Up - Vastaa - - - - ManageBlockedUsersSettings - - - Close - Sulje - - - - Unblock User - Poista käyttäjän torjunta - - - - Manage blocked users - Hallitse torjuttuja käyttäjiä - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - Äänitiedosto - - - - Find a sound file - Etsi äänitiedosto - - - - Play sound file - Toista äänitiedosto - - - - Play - Toista - - - - NotifyDialog - - - File Transfer - Tiedostonsiirto - - - - &Ok - &OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Hyväksy - - - - Status - Tila - - - - 00:00:00 - 00:00:00 - - - - Nickname - Nimimerkki - - - - &Reject - - - - - - Dialpad - Näppäimistö - - - - Audio Smileys - Ääni hymiöt - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Hallitse torjuttuja käyttäjiä - - - - Privacy Rules - Yksityisyysasetukset - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - Salli keskustelut - - - - - Anyone - Kuka tahansa - - - - - Only people from my contact list - Vain yhteystiedoissani olevat henkilöt - - - - Allow calls from - Salli puhelut - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Peruuta - - - - Save - Tallenna - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - Yleiset - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - Lisäasetukset >> - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - Ryhmä: - - - - Last Name: - Sukunimi: - - - - First Name: - Etunimi: - - - - Details - Tiedot - - - - Web/blog: - Kotisivu: - - - - Country: - Maa: - - - - State: - Lääni: - - - - City: - Kaupunki: - - - - Gender: - Sukupuoli: - - - - Birth Date: - Syntymäpäivä: - - - - Email: - Sähköposti: - - - - Notes - Huomautuksia - - - - Phone Numbers - Puhelin numerot - - - - Home phone - Kotipuhelin - - - - Mobile phone - Matkapuhelin - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Tuntematon - - - - Male - Mies - - - - Female - Nainen - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Tilit - - - - Accounts Settings - Tilien Asetukset - - - - QtAddAccount - - - Configure your voip account - Muokkaa omaa tiliä: - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - Kokeile - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - Muokkaa omaa tiliä: - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - Anna sähköpostiosoite. - - - - Please enter your email address<br/>and your password - Anna sähköpostiosoite<br/>ja salasana - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Peruuta - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Poista - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - Lisäasetukset - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - Ääni - - - - Audio Settings - Ääni Asetukset - - - - QtCallBar - - - +(country code) number or nickname - +(maakoodi) numero tai nimimerkki - - - - QtCallForwardSettings - - - - Call Forward - Soiton ohjaus - - - - Call Forward Settings - Soiton Ohjaus Asetukset - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Tallenna nimellä - - - - QtChatLogViewer - - - Edit Contact - Muokkaa Kontaktia - - - - QtChatTabWidget - - - Close chat - Sulje keskustelu - - - - QtChatWidget - - - %1 is connected. - %1 on yhdistetty. - - - - %1 is disconnected. - %1 yhteys on katkaistu. - - - - send - lähetä - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Muokkaa Kontaktia - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Soita SIP - - - - Call land line - Soita lankapuhelimaan - - - - Call Mobile - Soita Matkapuhelimeen - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - Aloita Konfrenssi - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Kyllä - - - - &No - &Ei - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Kyllä - - - - &No - &Ei - - - - Home phone - Kotipuhelin - - - - Mobile phone - Matkapuhelin - - - - @product@ - - - - - - Edit Contact - Muokkaa Kontaktia - - - - Do you really want to delete this contact? - Haluatko varmasti poistaa tämän kontaktin? - - - - Start chat - Aloita keskustelu - - - - - Delete contact - Poista kontakti - - - - Call - Soita - - - - Free call - - - - - Work phone - Työpuhelin - - - - Send SMS - Lähetä Tekstiviesti - - - - Edit contact - Muokkaa kontaktia - - - - Block contact - Torju kontakti - - - - Invite to conference - Kutsu konferenssiin - - - - Go to website - Siirry Web-sivulle - - - - Send file - Lähetä tiedosto - - - - Forward to mobile phone - Ohjaa matkapuhelimeen - - - - QtContactWidget - - - No mobile phone number set - Ei matkapuhelin numeroa - - - - No landline phone number set - Ei lankapuhelin numeroa - - - - - Click here to call - Napsauta soittaaksesi - - - - - Click here to set a phone number - Napsauta antaaksesi puhelin numero - - - - Click here to edit the contact - Napsauta muokataksesi kontaktia - - - - Click here to send a SMS - Napsauta lähettääksesi tekstiviesti - - - - Click here to start a chat - Napsauta aloittaaksesi keskustelun - - - - Click here to start a free call - Napsauta aloittaaksesi ilmainen puhelu - - - - Click here to send a file - Napsauta lähettääksesi tiedosto - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Haluatko soittaa vastaajaasi? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Kyllä - - - - &No - &Ei - - - - Choose a directory - Valitse hakemisto - - - - Overwrite File? - Kirjoitetaanko tiedoston yli? - - - - A file called %1 already exists.Do you want to overwrite it? - Tiedosto %1 on jo olemassa. Haluatko korvata sen? - - - - - File size error - Tiedoston koko virhe - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - %1 on kooltaan 0. - - - - %1 is a directory. - %1 on hakemisto. - - - - You can not send a directory. - Et voi lähettää hakemistoa. - - - - %1 is a shortcut. - %1 on pikakuvake. - - - - You can not send a shortcut. - Et voi lähettää pikakuvaketta. - - - - All Files (*.* *) - Kaikki tiedostot (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Peruuta - - - - Remove - Poista - - - - - Pause - Pysäytä - - - - Starting - Aloitetaan - - - - From: - Lähettäjä: - - - - To: - Vastaanottaja: - - - - Open - Avaa - - - - Resume - Palauta - - - - Waiting for anwser... - Odotetaan vastausta... - - - - Done - Valmis - - - - Failed - Epäonnistui - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - Peruutettu - - - - Cancelled by peer - Peruutettu - - - - - Downloading... - Ladataan... - - - - Uploading... - Lähetetään... - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Yleiset - - - - General Settings - Yleiset Asetukset - - - - QtHistory - - - Incoming call - Vastatut - - - - Outgoing call - Soitetut - - - - Missed call - Vastaamattomat - - - - Rejected call - Ohjatut - - - - Outgoing SMS - Lähetetyt Tekstiviestit - - - - Do you want to call %1? - Haluatko soittaa %1? - - - - Chat session - Keskustelu istunto - - - - @product@ - Call History - - - - - - Type - Tyyppi - - - - Name/ID - Nimi/ID - - - - Date - Päivä - - - - Duration - Kesto - - - - QtHistoryWidget - - - Erase this entry - Poista merkintä - - - - Open in SMS window - Avaa Tekstiviesti ikkuna - - - - Call this peer - - - - - - Show chat log - Näytä keskustelu logi - - - - QtIMAccountManager - - - Cancel - Peruuta - - - - @product@ - - - - - - &Delete - &Poista - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Katkaistu - - - - Error: %1 - Virhe: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Online - - - - Invisible - Näkymätön - - - - Away - Poissa - - - - Do not disturb - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Peruuta - - - - @product@ - - - - - - &Delete - &Poista - - - - Online - Online - - - - Invisible - Näkymätön - - - - Away - Poissa - - - - Do Not Disturb - - - - - - Disconnect - Katkaistu - - - - Delete Account - Poista tili - - - - Are sure you want to delete the account <b>%1</b>? - Haluatko varmasti poistaa <b>%1</b> tilin? - - - - QtIMProfileWidget - - - Edit My Profile - Muokkaa Profiiliasi - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Kieli - - - - Language Settings - Kieliasetukset - - - - QtLogAccount - - - Invalid account - Tuntematon tili - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Tuleva puhelu (soittoääni) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Puhelun sulkeminen (luurin laskuääni) - - - - Incoming chat - Tuleva keskustelu - - - - IM account connected - IM tili yhdistetty - - - - IM account disconnected - IM tilin yhteys katkaistu - - - - Contact online - Kontakti online - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Valitse äänitiedosto - - - - Sounds - Äänet - - - - QtPhoneCall - - - Status - Tila - - - - Incoming Call - Saapuva puhelu - - - - Resume - Palauta - - - - Hang-up - Vastaa - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Virhe - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Soittaa - - - - Redirected - Uudelleen ohjattu - - - - Initialization... - Valmistelee... - - - - Closed - Suljettu - - - - - Hold - Pidä - - - - Add contact - Lisää kontakti - - - - Ca&ncel - &Peruuta - - - - Talking - Conference - - - - - - Add a Contact - Lisää Kontakti - - - - QtPresenceMenuManager - - - Online - Online - - - - Invisible - Näkymätön - - - - Away - Poissa - - - - Do Not Disturb - - - - - - Log off - Kirjaudu ulos - - - - QtPrivacySettings - - - Privacy - Yksityisyys - - - - Privacy Settings - Yksityisyysasetukset - - - - QtProfileBar - - - Click here to change your status - Napsauta tästä vaihtaaksesi tilaasi - - - - - active - käytössä - - - - voicemail - ääniposti - - - - inactive - pois käytöstä - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - Vastaaja - - - - QtProfileDetails - - - Advanced >> - Lisäasetukset >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - << Yksinkertainen - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Ryhmän nimi ei kelpaa - - - - Group name cannot be empty - Ryhmän nimi ei voi olla tyhjä - - - - QtSecuritySettings - - - Security - Turvallisuus - - - - Security Settings - Turvallisuusasetukset - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - Haluatko jatkaa? - - - - Your SMS has not been sent - Tekstiviestiä ei ole lähetetty - - - - Your SMS has been sent - Tekstiviesti on lähetetty - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - Et voi lähettää tyhjää viestiä. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Ei yhdistetty - - - - Register done - Kirjautunut - - - - Unregister done - Ei kirjautunut - - - - Connecting - Yhdistää - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Tila - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Soita SIP - - - - Call land line - Soita lankapuhelimaan - - - - Call Mobile - Soita Matkapuhelimeen - - - - Call @company@ - - - - - - Call - Soita - - - - Send SMS - Lähetä Tekstiviesti - - - - Online - Online - - - - Invisible - Näkymätön - - - - Away - Poissa - - - - Do Not Disturb - - - - - - Internet Connection Error - Virhe Internet Yhteydessä - - - - Offline - Offline - - - - Connecting... - Yhdistetään… - - - - Send a SMS - Lähetä Tekstiviesti - - - - Start a chat - Aloita keskustelu - - - - Place Call - - - - - - Send File - Lähetä tiedosto - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Peruuta - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Muokkaa Profiiliasi - - - - Add a Contact - Lisää Kontakti - - - - Hide Unavailable Contacts - Piilota Offline kontaktit - - - - Show Unavailable Contacts - Näytä Offline kontaktit - - - - Hide Groups - Piilota Ryhmät - - - - Show Groups - Näytä Ryhmät - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - &Kirjaudu Ulos - - - - Disable &Video Calls - V&astaamattomat Puhelut - - - - Enable &Video Calls - Video käytössä - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - Kirjaudu &Ulos... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Kontakti luettelo - - - - QtUserProfile - - - Edit Contact - Muokkaa Kontaktia - - - - - &Authorize - &Salli - - - - - &Block - &Estä - - - - Network error. - Verkkovirhe. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Väärä sähköposti/salasana annettu - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normaali - - - - - Good - Hyvä - - - - - Very good - Erittäin hyvä - - - - - Excellent - Loistava - - - - Video Settings - Video Asetukset - - - - QtVoicemailSettings - - - Voicemail - Vastaaja - - - - Voicemail Settings - Vastaajan Asetukset - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - Yleiset - - - - Accounts - Tilit - - - - Audio - Ääni - - - - Call Forward - Soiton ohjaus - - - - Language - Kieli - - - - Privacy - Yksityisyys - - - - Video - Video - - - - Voicemail - Vastaaja - - - - security - turvallisuus - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Peruuta - - - - - - - Conference - Neuvottelu - - - - Call - Soita - - - - Account - - - - - Add a Contact - Lisää Kontakti - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - Oletko varma että haluat sulkea sovelluksen? - - - - &Exit - &Lopeta - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Peruuta - - - - OK - OK - - - - Enter the new group name: - Uusi ryhmän nimi: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - Salli soiton koodaus - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Päivitä profiilisi - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - esimerkiksi: käyttäjänimi@palvelin - - - - SIP ID: - SIP: ID - - - - ICQ ID: - AIM/ICQ ID: - - - - AIM ID: - AIM/ICQ ID: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Lähettäjä - - - - @product@ - SMS - - - - - - Click here to add a phone number - Napsauta lisätäksesi puhelin numero - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Anna allekirjoitus tähän - - - - Signature: - Allekirjoitus: - - - - Phone number(s): - Puhelin numero(t): - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Kirjoita puhelinnumero(t) tähän<br>Numerot erotetaan toisistaan käyttämällä & tai ; tai , - - - - SoftUpdateWindow - - - Cancel - Peruuta - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - Normaali - - - - Good - Hyvä - - - - Very good - Erittäin hyvä - - - - Excellent - Loistava - - - - Enable video - Video käytössä - - - - Webcam Selection - Web kameran valinta - - - - Webcam device: - Web kamera laite: - - - - Webcam Preview - Web kameran esikatselu - - - - Connection Type - Yhteyden Tyyppi - - - - Video quality - Videon laatu - - - - Down (kbit/s) - Sisään (kbit/s) - - - - Up (kbit/s) - Ulos (kbit/s) - - - - 0 to 512 - 0 - 512 - - - - 0 to 128 - 0 - 128 - - - - 512 to 2048 - 512 - 2048 - - - - 128 to 256 - 128 - 156 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - Soita testi video puhelu - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Peruuta - - - - Save - Tallenna - - - - Title - Otsikko - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Hyväksy - - - - &Hidden - - - - - - &Tools - &Työkalut - - - - &Help - &Ohje - - - - &Actions - &Toiminnot - - - - @company@ - - - - - - &Close - &Sulje - - - - Dialpad - Näppäimistö - - - - @product@ - - - - - - Start Conference - Aloita Konfrenssi - - - - Send SMS - Lähetä Tekstiviesti - - - - Contacts - Kontaktit - - - - History - Historia - - - - Clear &History - &Tyhjennä Historia - - - - ToolBar - Työkalurivi - - - - Show/Hide Unavailable &Contacts - Näytä/Piilota Offline &Kontaktit - - - - &Chat Sessions - &Keskustelu istunto - - - - &All - &Kaikki - - - - &HangUp - &Vastaa - - - - &Hold/Resume - &Odota/Pidä - - - - Show/Hide &Groups - Näytä/Piilota &Ryhmät - - - - &Outgoing Calls - &Soitetut Puhelut - - - - &Incoming Calls - &Vastatut Puhelut - - - - &Missed Calls - V&astaamattomat Puhelut - - - - Enable/Disable &Video Calls - Salli/Estä &Videopuhelut - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - &Hylätyt Puhelut - - - - &Contacts - &Kontaktit - - - - &About... - &Tietoja... - - - - Add &Contact... - Lisää &Kontakti... - - - - &Configuration... - - - - - - Send SMS... - Lähetä Tekstiviesti... - - - - View My &Profile... - Näytä &Profiilini... - - - - - View My Profile - Näytä Profiilini - - - - Start &Conference... - - - - - - &Find Contact... - &Etsi Kontakti... - - - - Log &Off... - Kirjaudu &Ulos... - - - - - Log Off - Kirjaudu Ulos - - - - Show &Chat Window - Näytä &Keskustelu Ikkuna - - - - - Show Chat Window - Näytä Keskustelu Ikkuna - - - - Show &File Transfer - Näytä &Tiedoston Siirto - - - - Add Contact - Lisää kontakti - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - Etsi - - - - Find @company@ Contacts - - - - - - &Quit - &Lopeta - - - - Ctrl+Q - Ctrl+L - - - - &Text Under Icons - - - - - - &Icons Only - &Vain kuvakkeet - - - - Add - Lisää - - - - SMS - Tekstiviesti - - - - Conference - Neuvottelu - - - - Wizard - - - Cancel - Peruuta - - - - Finish - Valmis - - - - Next > - Seuraava > - - - - < Back - < Edellinen - - - - Simple Wizard - Step %1 of %2 - Yksinkertainen Avustaja - Askel %1 - %2 - - - - YahooSettings - - - Login: - Tunnus: - - - - Password: - Salasana: - - - - Yahoo! Settings - Yahoo! Asetukset - - - - Use Yahoo! Japan server - Käytä Yahoo! Japanin palvelinta - - - - Forgot your Yahoo! password? - Unohditko Yahoo! salasanan? - - - - Get a new Yahoo! Account - Ota uusi Yahoo! Tili - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fr.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fr.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fr.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_fr.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4861 +0,0 @@ - - - - - AIMSettings - - - Login: - Identifiant : - - - - Forgot your AIM password? - Mot de passe AIM oublié ? - - - - Get a new AIM Account - Créez un nouveau compte AIM - - - - Password: - Mot de passe : - - - - AIM Settings - Paramètres AIM - - - - AboutWindow - - - About - À propos - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Auteurs - - - - Close - Fermer - - - - 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 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. - - - - @product@ - About - À propos - @product@ - - - - @product@, a voice over Internet phone - @product@, un téléphone voix sur Internet - - - - AcceptDialog - - - File Transfer - Transfert de Fichiers - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Accepter - - - - &Cancel - &Annuler - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nom du fichier: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Réception d'un fichier</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - Éditer mon &profil - - - - AddAccount - - - Configure your account: - Configurez votre compte : - - - - &Next - &Suivant > - - - - Need help? - Besoin d'aide ? - - - - You don't have any account ? Click here - Vous n'avez pas de compte ? Cliquez ici - - - - &Back - &Précédent - - - - Cancel - Annuler - - - - @product@ - Login - @product@ - Connexion - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - @company@ compte - - - - Generic SIP account - Compte SIP générique - - - - AddIMContact - - - Cancel - Annuler - - - - Contact Type (protocol): - Type de contact (réseau): - - - - Contact ID: - Identifiant: - - - - Account: - Compte: - - - - Enable - Activé - - - - Login - Identifiant - - - - Add - Ajouter - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Mot de passe : - - - - Need help? - Besoin d'aide ? - - - - &Back - &Précédent - - - - &Connect - - - - - Cancel - Annuler - - - - @product@ - Login - @product@ - Connexion - - - - Activate presence and chat (SIP/SIMPLE) - Activer la présence et le chat (SIP/SIMPLE) - - - - Displayname: - Nom affiché: - - - - login / username: - identifiant / nom d'utilisateur : - - - - Account name: - Nom du compte : - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Serveur : - - - - SIP Domain / Realm: - Domaine SIP / Realm : - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configurez votre profil SIP</span><br><br><span>Veuillez renseigner les informations qui <br/>permettront à votre logiciel de se connecter à votre<br/>compte SIP</span> - - - - Advanced - Avancé - - - - AddWengoAccount - - - Password: - Mot de passe : - - - - Need help? - Besoin d'aide ? - - - - &Back - &Précédent - - - - &Connect - - - - - Cancel - Annuler - - - - @product@ - Login - @product@ - Connexion - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:18pt;">Login</span><br><br><span>Veuillez renseigner votre adresse mail et<br>votre mot de passe</span> {16p?} - - - - Email Address: - Adresse email: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Fermer - - - - Preference Name - Nom de l'option - - - - Type - Type - - - - Value - Valeur - - - - Default Value - Valeur par défaut - - - - Save - Enregistrer - - - - Status - Statut - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Ajouter - - - - Advanced Settings - Paramètres avancés - - - - Remove - - - - - Advanced Configuration Window - Fenêtre de configuration avancée - - - - Automatically answer incoming calls from - Toujours accepter les appels de - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Attention, cette section est réservée pour les utilisateurs avertis.<br>Toute modification peut altérer le bon fonctionnement du logiciel. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Formulaire - - - - AudioSettings - - - Reset - Réinitialiser - - - - Audio Codecs - Codecs audio - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - Test - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulaire - - - - AvatarWidget - - - Form - Formulaire - - - - BrowserSoftUpdateWindow - - - Close - Fermer - - - - @product@ - Update available - Mise à jour disponible - @product@ - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3ème : - - - - 1st: - 1er : - - - - 2nd: - 2ème : - - - - - - (+ country code) phone number - (+ indicatif pays) numéro de téléphone - - - - Forward all unanswered calls to message box - Transférer tous vos appels non aboutis vers la messagerie vocale - - - - Disable call forwarding - Désactiver le transfert d'appel - - - - Forward all unanswered calls to following phone numbers: - Transférer tout les appels en absence vers les numéros suivants: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Par exemple +3314500XXXX (+33 est l'indicatif du pays et 14500XXXX le numéro de téléphone) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Réception d'un appel - - - - Message - Message - - - - ChatLogViewer - - - Chat History - Historique des Chat - - - - &Contact - &Contact - - - - &Tools - &Outils - - - - &Help - Aid&e - - - - &Actions - &Actions - - - - Main Toolbar - Barre d'outils principale - - - - - - Call Contact - Appeler le Contact - - - - - - Send a File - Envoyer un fichier - - - - createChatConf - Créer une conférence - - - - - - Show Contact Info - Afficher le profil du contact - - - - blockContact - Bloquer le contact - - - - &Save History As... - &Enregistrer l'historique sous... - - - - actionRestartChat - Initier un nouveau Chat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contact - - - - &Tools - &Outils - - - - &Actions - &Actions - - - - Main Toolbar - Barre d'outils principale - - - - - - Call Contact - Appeler le Contact - - - - - - Send a File - Envoyer un fichier - - - - - - Show Contact Info - Afficher le profil du contact - - - - blockContact - Bloquer le contact - - - - &Save History As... - &Enregistrer l'historique sous... - - - - @company@ - @company@ - - - - MainWindow - Fenêtre Principale - - - - &Edit - É&dition - - - - Cu&t - Co&uper - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copier - - - - Ctrl+C - Ctrl+C - - - - &Paste - C&oller - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - - - - - - &Close - &Fermer - - - - Conference - Conférence - - - - ChatRoomInviteWidget - - - Chat room - Salon de chat - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Salon de chat</span></p></body></html> - - - - (Conference participants) - (Participants à la conférence) - - - - &Remove - &Enlever - - - - &Start - &Démarrer - - - - Group Name - Nom du groupe - - - - &Add - &Ajouter - - - - ChatToaster - - - Message - Message - - - - Incoming Chat - Réception d'un chat - - - - ChatWidget - - - Form - Formulaire - - - - ConferenceCallWidget - - - Cancel - Annuler - - - - Start - Appeler - - - - Phone number 2: - Numéro 2: - - - - Phone number 1: - Numéro 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Démarrer - - - - Cancel - Annuler - - - - ContactGroupPopupMenu - - - Remove Contact Group - Supprimer le groupe - - - - Rename Contact Group - Renommer le groupe - - - - Delete group - Supprimer le groupe - - - - Do you really want to delete this group? - Êtes-vous sur de vouloir supprimer ce groupe ? - - - - &Yes - &Oui - - - - &No - &Non - - - - ContactList - - - Contact List - Liste de contacts - - - - ContactWidget - - - No mobile phone number set - Aucun numéro de téléphone portable saisi - - - - No landline phone number set - Aucun numéro de téléphone fixe saisi - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez ici pour éditer ce contact</p></body></html> - - - - CrashReport - - - Cancel - Annuler - - - - Program Failure - Défaillance du programme - - - - Send - Envoyer - - - - Optional Information - Information optionnelle - - - - Your Mail: - Votre email : - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Non disponible - - - - Click here to change your call forward settings - Cliquez ici pour modifier le transfert d'appel - - - - Call forward mode: - Mode de transfert d'appel: - - - - Purchase call out credits - Acheter des crédits de communication - - - - Call Forward Method - Méthode du transfert d'appel: - - - - Call Voice Mail - Appeler la boite vocale - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Fichier racine - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Cliquez sur les différents éléments qui changent de couleurs pour envoyer des sons à votre interlocuteur. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Cliquez ici pour appeler votre messagerie - - - - New Voice Mail: - Nouveau message vocal : - - - - Click here to see missed call(s) - Cliquez ici pour voir les appels en absence - - - - Missed Call(s): - Appel(s) manqué(s): - - - - FileTransferDialog - - - ... - ... - - - - Download - Réception - - - - Upload - Envoi - - - - Click here to change your download folder - Cliquez ici pour changer votre dossier de téléchargement - - - - Download folder: - Dossier de téléchargement: - - - - Clean all items in the list - Nettoyer tous les éléments de la liste - - - - &Clean - &Nettoyer - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Annuler - - - - Form - Formulaire - - - - Pause - Pause - - - - <i>From:</i> - <i>De:</i> - - - - GeneralSettings - - - When I double-click on a contact - Quand je double-clique sur un contact - - - - Call cell phone or land line if contact not online - Appeler le mobile ou la ligne fixe si le contact n'est pas disponible - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Inactivité - - - - minutes - minutes - - - - Show me as "Away" when I am inactive for: - Changer mon statut en « absent » après une période d'inactivité de : - - - - When I start my computer - Au démarrage du système - - - - Automatically start @product@ - Démarrer automatiquement @product@ - - - - GoogleTalkSettings - - - Login: - Identifiant : - - - - Password: - Mot de passe : - - - - GoogleTalk Settings - Paramètres GoogleTalk - - - - Forgot your GoogleTalk password? - Mot de passe GoogleTalk oublié? - - - - Get a new GoogleTalk Account - Créez un nouveau compte GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Annuler - - - - HTTP Proxy Address: - Adresse du Proxy HTTP: - - - - HTTP Proxy Port Number: - Port: - - - - HTTP Proxy Login: - Nom d'utilisateur: - - - - HTTP Proxy Password: - Mot de passe: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autentification du proxy HTTP</span><br><br><span>Votre proxy HTTP local utilise une autentification<br>Veuillez renseinger votre identifiant et votre mot de passe</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Identifiant : - - - - Password: - Mot de passe : - - - - ICQ Settings - Paramètres ICQ - - - - Forgot your ICQ password? - Mot de passe ICQ oublié ? - - - - Get a new ICQ Account - Créer un nouveau compte ICQ - - - - IMAccountManager - - - Close - Fermer - - - - Login - Identifiant - - - - Add - Ajouter - - - - Delete - Supprimer - - - - Modify - Modifier - - - - Protocol - Réseau - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Annuler - - - - Save - Enregistrer - - - - IM Account Settings - Paramètres des comptes de Messagerie - - - - IMContactManager - - - Add - Ajouter - - - - Delete - Supprimer - - - - Contact Type (protocol) - Type de contact (réseau) - - - - Click on the add button below to add a new ID - Ajouter des comptes de Messagerie Instantanée à votre contact - - - - Contact ID - Identifiant du contact - - - - IMProfileWidget - - - - Enter your nickname here - Entrez votre pseudo ici - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Ajouter un compte de messagerie instantanée (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Ajouter un compte MI - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez pour changer votre avatar</p></body></html> - - - - ImageSelector - - - Cancel - Annuler - - - - OK - OK - - - - Go Up - Remonter - - - - Refresh - Rafraîchir - - - - JabberSettings - - - Login: - Identifiant : - - - - Password: - Mot de passe : - - - - Jabber Settings - Paramètres de Jabber - - - - Connect Server: - Se connecter au serveur: - - - - <u>Advanced Options</u> - <u>Options avancées</u> - - - - Require TLS - Nécessite TLS - - - - Port: - Port: - - - - Use TLS if available - Utiliser TLS, si possible - - - - Allow plaintext authentication over unencrypted streams - Autoriser l'identifcation en clair sur des connexions non cryptées - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forcer SSL (5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Votre langue n'est pas disponible ici, savez vous que vous pouvez faire votre propre traduction sur Launchpad.net ? - - - - More information here. - Plus d'informations ici. - - - - LogAccount - - - Password: - Mot de passe : - - - - Need help? - Besoin d'aide ? - - - - Cancel - Annuler - - - - @product@ - Login - @product@ - Connexion - - - - &Connect - - - - - Account: - Compte: - - - - Forgot your @company@ password? - - - - - - Delete - Supprimer - - - - &Modify - &Modifier - - - - Configure a &New Profile - Configurez un &nouveau profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Identifiant : - - - - Password: - Mot de passe : - - - - MSN Settings - Paramètres MSN - - - - Forgot your MSN password? - Mot de passe MSN oublié? - - - - Get a new MSN Account - Créez un nouveau compte MSN - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Fenêtre Principale - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Accepter l'appel - - - - Send Chat Message - Envoyer un message chat - - - - Make Call - Passer un appel - - - - Hang Up - Raccrocher - - - - ManageBlockedUsersSettings - - - Close - Fermer - - - - Unblock User - Débloquer le contact - - - - Manage blocked users - Gérer les contacts bloqués - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Sélectionnez les évènements pour lesquels un son doit être joué. - - - - NotificationSettingsItem - - - Sound file - Fichier son - - - - Find a sound file - Trouver un fichier son - - - - Play sound file - Jouer le fichier son - - - - Play - Jouer - - - - NotifyDialog - - - File Transfer - Transfert de Fichiers - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Statut:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Mise à jour</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Accepter - - - - Status - Statut - - - - 00:00:00 - 00:00:00 - - - - Nickname - Pseudo - - - - &Reject - &Rejeter - - - - Dialpad - - - - - Audio Smileys - Smileys Audio - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Gérer les contacts bloqués - - - - Privacy Rules - Confidentialité - - - - Always sign in as "Invisible" (appear offline to all users) - Toutjours se connecter en mode invisible (les autres utilisateurs ne vous -voient pas) - - - - Allow chats from - Autorisez les chats provenant de - - - - - Anyone - Tout le monde - - - - - Only people from my contact list - Uniquement de mes contacts - - - - Allow calls from - Autoriser les appels provenant de - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Annuler - - - - Save - Enregistrer - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cliquez pour changer votre avatar</p></body></html> - - - - General - Général - - - - Network IDs (MSN, Jabber...) - Identifiants (MSN, Jabber...) - - - - Advanced >> - Avancé >> - - - - Fill in all your network Id to stay connected with your contacts - Veuillez renseigner tous vos identifiants pour rester connecté avec vos contacts - - - - Contact - Contact - - - - Group: - Groupe: - - - - Last Name: - Nom: - - - - First Name: - Prénom: - - - - Details - Détails - - - - Web/blog: - Web/blog: - - - - Country: - Pays: - - - - State: - Région: - - - - City: - Ville: - - - - Gender: - Sexe: - - - - Birth Date: - Date de naissance: - - - - Email: - Email: - - - - Notes - Notes - - - - Phone Numbers - Numéros de téléphone - - - - Home phone - Téléphone fixe - - - - Mobile phone - Téléphone mobile - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Inconnu - - - - Male - Homme - - - - Female - Femme - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Comptes - - - - Accounts Settings - Paramètres de compte - - - - QtAddAccount - - - Configure your voip account - Configurez votre compte VoIP - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Veuillez renseigner les informations qui<br/>permettront à votre softphone de se connecter à votre<br/> compte SIP - - - - Configure your SIP profile - Configurez votre profil SIP - - - - QtAddWengoAccount - - - Login - Identifiant - - - - Please enter an email address. - Veuillez saisir une adresse email. - - - - Please enter your email address<br/>and your password - Veuillez saisir votre adresse email<br/>et votre mot de passe - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Annuler - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - Êtes-vous sûr de vouloir supprimer ce contact ? - - - - - &Delete - &Supprimer - - - - QtAdvancedSettings - - - Advanced - Avancé - - - - Advanced Settings - Paramètres avancés - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Avancé - - - - Audio - Audio - - - - Audio Settings - Paramètres Audio - - - - QtCallBar - - - +(country code) number or nickname - +(indicatif pays) numéro ou pseudo - - - - QtCallForwardSettings - - - - Call Forward - Transfert d'appel - - - - Call Forward Settings - Paramètres de transfert d'appel - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Enregistrer sous - - - - QtChatLogViewer - - - Edit Contact - Editer le contact - - - - QtChatTabWidget - - - Close chat - Fermer le chat - - - - QtChatWidget - - - %1 is connected. - %1 s'est connecté. - - - - %1 is disconnected. - %1 s'est déconnecté. - - - - send - envoyer - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Editer le contact - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Appeler un contact SIP - - - - Call land line - Appeler une ligne fixe - - - - Call Mobile - Appeler un mobile - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - Cliquez sur le bouton ci-dessous pour appeler votre second interlocuteur. -En attendant, le premier sera mis en attente. - - - - Hold first interlocutor and call second one - Démarrer le deuxième appel - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - Cliquez sur le bouton ci-dessous pour démarrer la conférence - - - - Start Conference - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Oui - - - - &No - &Non - - - - Merge %1 with %2? - Fusionner %1 avec %2 ? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Oui - - - - &No - &Non - - - - Home phone - Téléphone fixe - - - - Mobile phone - Téléphone mobile - - - - @product@ - - - - - - Edit Contact - Editer le contact - - - - Do you really want to delete this contact? - Voulez vous vraiment supprimer ce contact? - - - - Start chat - Commencer un chat - - - - - Delete contact - Supprimer le contact - - - - Call - - - - - Free call - - - - - Work phone - Téléphone du bureau - - - - Send SMS - - - - - Edit contact - Editer le contact - - - - Block contact - Bloquer le contact - - - - Invite to conference - Inviter à la conférence - - - - Go to website - Aller sur son site Internet - - - - Send file - Envoyer un fichier - - - - Forward to mobile phone - Transférer vers un mobile - - - - QtContactWidget - - - No mobile phone number set - Aucun numéro de téléphone portable saisi - - - - No landline phone number set - Aucun numéro de téléphone fixe saisi - - - - - Click here to call - Cliquer ici pour appeler - - - - - Click here to set a phone number - Cliquer ici pour renseigner un numéro de téléphone - - - - Click here to edit the contact - Cliquer ici pour éditer le contact - - - - Click here to send a SMS - Cliquer ici pour envoyer un SMS - - - - Click here to start a chat - Cliquez ici pour démarrer un chat - - - - Click here to start a free call - Cliquez ici pour démarrer un appel gratuit - - - - Click here to send a file - Cliquez ici pour envoyer un fichier - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Voulez-vous appeler votre messagerie ? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Oui - - - - &No - &Non - - - - Choose a directory - Choisissez un répertoire - - - - Overwrite File? - Remplacer le fichier? - - - - A file called %1 already exists.Do you want to overwrite it? - Un fichier appelé %1 existe déjà. Voulez-vous le remplacer ? - - - - - File size error - Taille de fichier incorrecte - - - - %1 exceeds the maximum authorized size. - %1 excède la taille maximale autorisée. - - - - %1 has size 0. - %1 est vide (taille 0). - - - - %1 is a directory. - %1 est un répertoire. - - - - You can not send a directory. - Vous ne pouvez pas envoyer un répertoire. - - - - %1 is a shortcut. - %1 est un raccourci. - - - - You can not send a shortcut. - Vous ne pouvez envoyer un raccourci. - - - - All Files (*.* *) - Tous les fichiers (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Annuler - - - - - Pause - Pause - - - - Starting - Démarrage - - - - From: - De: - - - - To: - Vers: - - - - Open - Ouvrir - - - - Remove - - - - - Resume - Reprendre - - - - Waiting for anwser... - Attente d'une réponse... - - - - Done - Terminé - - - - Failed - Echec - - - - Paused - Mis en pause - - - - Paused by peer - Mis en pause par le contact - - - - Cancelled - Annulé - - - - Cancelled by peer - Annulé par le contact - - - - - Downloading... - Réception... - - - - Uploading... - Envoi... - - - - Waiting for peer... - Attente d'une réponse ... - - - - An error occured during the file transfer - Une erreur est survenue<br> pendant le transfert du fichier - - - - This may be caused by : - Cela peut être dû à : - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Général - - - - General Settings - Configuration générale - - - - QtHistory - - - Incoming call - Appel reçu - - - - Outgoing call - Appel émis - - - - Missed call - Appel en absence - - - - Rejected call - Appel refusé - - - - Outgoing SMS - SMS - - - - Do you want to call %1? - Voulez-vous appeler %1 ? - - - - Chat session - Session Chat - - - - @product@ - Call History - Historique des appels - @product@ - - - - Type - Type - - - - Name/ID - Nom/identifiant - - - - Date - Date - - - - Duration - Durée - - - - QtHistoryWidget - - - Erase this entry - Effacer cet élément - - - - Open in SMS window - Ouvrir dans une fenêtre SMS - - - - Call this peer - Appeler cette personne - - - - Show chat log - Afficher les sessions de chat - - - - QtIMAccountManager - - - Cancel - Annuler - - - - @product@ - - - - - - &Delete - &Supprimer - - - - Are sure you want to delete this account? - - Êtes-vous sur de vouloir supprimer ce compte ? - - - - - QtIMAccountMonitor - - - - - Disconnected - Déconnecté - - - - Error: %1 - Erreur : %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - En ligne - - - - Invisible - Invisible - - - - Away - Absent - - - - Do not disturb - Ne pas déranger - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Veuiller entrer un identifiant - - - - QtIMAccountPresenceMenuManager - - - Cancel - Annuler - - - - @product@ - - - - - - &Delete - &Supprimer - - - - Online - En ligne - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - Ne pas déranger - - - - Disconnect - Déconnecter - - - - Delete Account - Supprimer le compte - - - - Are sure you want to delete the account <b>%1</b>? - Êtes-vous sûr que vous voulez supprimer le compte <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Editer mon profil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Langue - - - - Language Settings - Paramètres de langue - - - - QtLogAccount - - - Invalid account - Compte invalide - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Réception d'un appel (sonnerie) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Raccrochage (tonalité) - - - - Incoming chat - Réception d'un chat - - - - IM account connected - Connexion d'un compte de messagerie - - - - IM account disconnected - Déconnexion d'un compte de messagerie - - - - Contact online - Contact en ligne - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Choisir un fichier son - - - - Sounds - Sons - - - - QtPhoneCall - - - Status - Statut - - - - Incoming Call - Réception d'un appel - - - - Resume - Reprendre - - - - Hang-up - Raccrocher - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Erreur - - - - Talking - Communication en cours - - - - Dialing - Numérotation - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - En attente - - - - Redirected - Transféré - - - - Initialization... - Initialisation... - - - - Closed - Raccroché - - - - - Hold - En attente - - - - Add contact - Ajouter contact - - - - Ca&ncel - An&nuler - - - - Talking - Conference - Appel en cours - Conférence - - - - Add a Contact - Ajouter un contact - - - - QtPresenceMenuManager - - - Online - En ligne - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - Ne pas déranger - - - - Log off - Déconnecter - - - - QtPrivacySettings - - - Privacy - Confidentialité - - - - Privacy Settings - Paramètres de confidentialité - - - - QtProfileBar - - - Click here to change your status - Cliquer ici pour changer de statut - - - - - active - activé - - - - voicemail - messagerie - - - - inactive - inactif - - - - unauthorized - Interdit - - - - Set global presence to: - Définissez votre présence globale : - - - - Voice mail - Messagerie vocale - - - - QtProfileDetails - - - Advanced >> - Avancé >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Un contact doit être placé dans un groupe, veuillez sélectionnez un groupe -pour votre contact. - - - - << Simple - << Basique - - - - Select your avatar - Choisissez votre avatar - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Mauvais nom de groupe - - - - Group name cannot be empty - Le nom du groupe ne peut être vide - - - - QtSecuritySettings - - - Security - Sécurité - - - - Security Settings - Paramètres de Sécurité - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Veuillez renseigner le numéro de téléphone. - - - - Do you want to continue? - Voulez vous continuer? - - - - Your SMS has not been sent - Votre SMS n'a pas été envoyé - - - - Your SMS has been sent - Votre SMS a été envoyé - - - - Your message is too long. -This will send - Votre message est trop long. -Il sera découpé en - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Vous ne pouvez pas envoyer un message vide. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Déconnecté - - - - Register done - Identification effectuée - - - - Unregister done - Déconnexion effectuée - - - - Connecting - Connexion - - - - Output volume is muted - Le volume de sortie est sur sourdine - - - - Output volume is 0 - Le volume de sortie est 0 - - - - Click to adjust output volume - - - - - - Input volume is muted - Le volume d'entrée est sur sourdine - - - - Input volume is 0 - Le volume d'entrée est 0 - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Statut - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Appeler un contact SIP - - - - Call land line - Appeler une ligne fixe - - - - Call Mobile - Appeler un mobile - - - - Call @company@ - - - - - - Online - En ligne - - - - Invisible - Invisible - - - - Away - Absent - - - - Do Not Disturb - Ne pas déranger - - - - Internet Connection Error - Erreur de connexion Internet - - - - Offline - Déconnecté - - - - Connecting... - Connexion... - - - - Send a SMS - Envoyer un SMS - - - - Call - - - - - Send SMS - - - - - Start a chat - Commencer un chat - - - - Place Call - Démarrer un appel - - - - Send File - Envoyer un fichier - - - - Multiple Status - Statut multiple - - - - Unknown Status - Statut inconnu - - - - Quit @product@ - Quitter @product@ - - - - QtToolBar - - - &Cancel - &Annuler - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Editer mon profil - - - - Add a Contact - Ajouter un contact - - - - Hide Unavailable Contacts - Cacher les contacts non disponibles - - - - Show Unavailable Contacts - Afficher les contacts non disponibles - - - - Hide Groups - Cacher les Groupes - - - - Show Groups - Afficher les Groupes - - - - You have unfinished call(s). - - - - - Are you sure you want to log off? - Êtes vous sûr de vouloir vous déconnecter ? - - - - &Log Off - &Se déconnecter - - - - Disable &Video Calls - Désactiver les Appels &Video - - - - Enable &Video Calls - Activer les Appels &Video - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Vous ne pouvez lancer de conférence tant que vous avez des appels en cours.</b><br><br>Mettez fin à tous vos appels et essayez de nouveau. - - - - @product@ - Warning - Avertissement - @product@ - - - - - Log &Off... - Se &Déconnecter... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Liste de contacts - - - - QtUserProfile - - - Edit Contact - Editer le contact - - - - - &Authorize - &Autoriser - - - - - &Block - &Bloquer - - - - Network error. - Erreur de réseau. - - - - - @product@ - Authorization Request - Demande d'authorisation - @product@ - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Un problème est survenu pendant le chargement de votre profil. -La dernière sauvegarde de votre profil a été chargée: -les dernières modifications réalisées ont peut-être été perdues - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Votre profil ne peut être chargé. -Veuillez choisir un autre profil ou créer en un. - - - - Wrong email/password entered - Erreur de saisie des identifiants - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Vidéo - - - - - Normal - Normale - - - - - Good - Bonne - - - - - Very good - Très bonne - - - - - Excellent - Excellente - - - - Video Settings - Paramètres vidéo - - - - QtVoicemailSettings - - - Voicemail - Messagerie Vocale - - - - Voicemail Settings - Paramètres de Messagerie Vocale - - - - QtWebDirectory - - - @product@ - Directory - Répertoire - @product@ - - - - QtWengoConfigDialog - - - Advanced - Avancé - - - - General - Général - - - - Accounts - Comptes - - - - Audio - Audio - - - - Call Forward - Transfert d'appel - - - - Language - Langue - - - - Privacy - Confidentialité - - - - Video - Vidéo - - - - Voicemail - Messagerie Vocale - - - - security - sécurité - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Annuler - - - - - - - Conference - Conférence - - - - Call - - - - - You have unfinished call(s). - - - - - Account - - - - - Add a Contact - Ajouter un contact - - - - @product@ - Warning - Avertissement - @product@ - - - - - Home - Accueil - - - - Are you sure you want to exit the application? - Êtes vous sûr de vouloir quitter l'application ? - - - - &Exit - &Quitter - - - - @product@ - Call Error - Erreur d'appel - @product@ - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Annuler - - - - OK - OK - - - - Enter the new group name: - Saisissez un nouveau nom de groupe : - - - - @product@ - Rename Contact Group - Renommer un groupe de contact - @product@ - - - - SecuritySettings - - - Form - Formulaire - - - - Enable call encryption - Permettre le chiffrement des appels - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Compléter votre profil - - - - Yahoo! ID: - Identifiant Yahoo! : - - - - MSN ID: - Identifiant MSN : - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk Identifiant: - - - - exemple: username@server - exemple: madamemichu@serveursip - - - - SIP ID: - Identifiant SIP : - - - - ICQ ID: - Identifiant ICQ : - - - - AIM ID: - Identifiant AIM - - - - @company@ ID: - Identifiant @company@ : - - - - SmsWindow - - - Send - Envoyer - - - - @product@ - SMS - - - - - - Click here to add a phone number - Cliquer ici pour ajouter un numéro de téléphone - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Entrer votre signature ici - - - - Signature: - Signature: - - - - Phone number(s): - Numéro(s) de téléphone: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Saisissez vos numéros de téléphone ici<br>Ils doivent être séparés par & ou ; ou , - - - - SoftUpdateWindow - - - Cancel - Annuler - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulaire - - - - VideoSettings - - - Normal - Normale - - - - Good - Bonne - - - - Very good - Très bonne - - - - Excellent - Excellente - - - - Enable video - Activer la vidéo - - - - Webcam Selection - Sélection de la webcam - - - - Webcam device: - Webcam: - - - - Webcam Preview - Aperçu de votre image - - - - Connection Type - Type de connexion - - - - Video quality - Qualité vidéo - - - - Down (kbit/s) - Réception (kbit/s) - - - - Up (kbit/s) - Envoi (kbit/s) - - - - 0 to 512 - 0 à 512 - - - - 0 to 128 - 0 à 128 - - - - 512 to 2048 - 512 à 2048 - - - - 128 to 256 - 128 à 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - La qualité de la vidéo dépend de la vitesse de votre connexion Internet - - - - Make a test video call - Effectuer un appel vidéo de test - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - Video - @product@ - - - - VoicemailSettings - - - Form - Formulaire - - - - Phone number of your voicemail: - Numéro de téléphone de votre messagerie vocale: - - - - Please fill in here the information about your voicemail - Veuillez renseigner ici les informations à propos de votre messagerie vocale - - - - WengoConfigDialog - - - Cancel - Annuler - - - - Save - Enregistrer - - - - Title - Titre - - - - @product@ - Configuration - Configuration - @product@ - - - - WengoPhoneWindow - - - &Accept - &Accepter - - - - &Hidden - - - - - - &Tools - &Outils - - - - &Help - Aid&e - - - - &Actions - &Actions - - - - @company@ - @company@ - - - - &Close - &Fermer - - - - @product@ - - - - - - Contacts - Contacts - - - - History - Historique - - - - Dialpad - - - - - Clear &History - Effacer l'&Historique - - - - ToolBar - Barre d'outils - - - - Send SMS - - - - - Start Conference - - - - - Show/Hide Unavailable &Contacts - Afficher/Cacher les contacts &indisponibles - - - - &Chat Sessions - &Conversations chat - - - - &All - &Tous - - - - &HangUp - &Raccrocher - - - - &Hold/Resume - &Pause/Reprise - - - - Show/Hide &Groups - Afficher/Cacher les &groupes - - - - &Outgoing Calls - Appels &émis - - - - &Incoming Calls - Appels &reçus - - - - &Missed Calls - &Appels en absence - - - - Enable/Disable &Video Calls - Activer/Désactiver appels &videos - - - - Short Text &Messages (SMS) - SMS - - - - Rejected Calls - Appels refusés - - - - &Contacts - &Contacts - - - - &About... - À &propos - - - - Add &Contact... - Ajouter un &Contact... - - - - &Configuration... - Panneau de &Configuration... - - - - Send SMS... - Envoyer un SMS... - - - - View My &Profile... - Afficher Mon &Profil... - - - - - View My Profile - Afficher Mon Profil - - - - Start &Conference... - Commencer une &Conférence... - - - - &Find Contact... - &Trouver Contact... - - - - Log &Off... - Se &Déconnecter... - - - - - Log Off - Se Déconnecter - - - - Show &Chat Window - Afficher la fenêtre &Chat - - - - - Show Chat Window - Afficher la fenêtre Chat - - - - Show &File Transfer - Afficher le gestionnaire de Transfert de &Fichiers - - - - Add Contact - Contact - - - - View My @company@ Account... - Voir mon compte @company@... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - &Forum de @company@ - - - - @company@ &Wiki/FAQ... - &Wiki/FAQ de @company@... - - - - Learn more about @company@ Services... - Découvrir les services de @company@ - - - - Search - Rechercher - - - - Find @company@ Contacts - Rechercher des contacts de @company@ - - - - &Quit - &Quitter - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Texte sous les icônes - - - - &Icons Only - &Icônes seulement - - - - Add - Ajouter - - - - SMS - SMS - - - - Conference - Conférence - - - - Wizard - - - Cancel - Annuler - - - - Finish - Terminer - - - - Next > - Suivant > - - - - < Back - < Précédent - - - - Simple Wizard - Step %1 of %2 - Assistant Simple - Étape %1 sur %2 - - - - YahooSettings - - - Login: - Identifiant : - - - - Password: - Mot de passe : - - - - Yahoo! Settings - Paramètres Yahoo - - - - Use Yahoo! Japan server - Choisir le serveur Yahoo Japon - - - - Forgot your Yahoo! password? - Mot de passe Yahoo oublié ? - - - - Get a new Yahoo! Account - Créer un nouveau compte Yahoo - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_gl.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_gl.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_gl.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_gl.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5386 +0,0 @@ - - - - - AIMSettings - - - Login: - Usuario: - - - - Forgot your AIM password? - Esqueceu o seu contrasinal de AIM? - - - - Get a new AIM Account - Conseguir unha nova conta AIM - - - - Password: - Contrasinal: - - - - AIM Settings - Preferencias AIM/ICQ - - - - AboutWindow - - - About - Sobre - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autores - - - - Close - Pechar - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Transferencia de arquivos - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Aceptar - - - - &Cancel - &Cancelar - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - &Editar o meu perfil - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - At&rás - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Cancelar - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - Conta: - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Contrasinal: - - - - Need help? - - - - - - &Back - At&rás - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - Conta: - - - - Proxy: - Proxy - - - - : - : - - - - Server: - Servidor: - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - Avanzado - - - - AddWengoAccount - - - Password: - Contrasinal: - - - - Need help? - - - - - - &Back - At&rás - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - Enderezo de correo: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Pechar - - - - Preference Name - - - - - - Type - Tipo - - - - Value - Valor - - - - Default Value - Valor por omisión - - - - Save - Gardar - - - - Status - Estatus - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - Configuración avanzada - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - Borrar - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Pechar - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Chamada entrante - - - - Message - Mensaxe - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - &Ferramentas - - - - &Help - A&xuda - - - - &Actions - &Accións - - - - Main Toolbar - Barra de ferramentas principal - - - - - - Call Contact - - - - - - - - Send a File - Enviar un ficheiro - - - - createChatConf - - - - - - - - Show Contact Info - Amosar información de contacto - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - &Ferramentas - - - - &Actions - &Accións - - - - Main Toolbar - Barra de ferramentas principal - - - - - - Call Contact - - - - - - - - Send a File - Enviar un ficheiro - - - - - - Show Contact Info - Amosar información de contacto - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - &Quitar - - - - &Start - - - - - Group Name - Nome do grupo - - - - &Add - Eng&adir... - - - - ChatToaster - - - Message - Mensaxe - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Cancelar - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - Teléfono número 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - Cancel - Cancelar - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - Eliminar grupo - - - - Do you really want to delete this group? - Verdadeiramente desexas borrar este grupo? - - - - &Yes - &Si - - - - &No - &Non - - - - ContactList - - - Contact List - Lista de contactos - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Cancelar - - - - Program Failure - - - - - - Send - Enviar - - - - Optional Information - Información opcional: - - - - Your Mail: - O seu correo electrónico: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Non dispoñíbel - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - Adquirir créditos de chamada - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Cartafol Raíz - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - Faga clic aquí para ver a(s) chamada(s) perdida(s) - - - - Missed Call(s): - Chamada(s) perdida(s) - - - - FileTransferDialog - - - ... - ... - - - - Download - Descargar - - - - Upload - - - - - - Click here to change your download folder - Faga clic aquí para cambiar o cartafol de descarga - - - - Download folder: - Cartafol de descarga: - - - - Clean all items in the list - Limpar tódolos elementos da lista - - - - &Clean - &Limpar - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Cancelar - - - - Form - - - - - - Pause - Deter - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - Cando fago doble clic nun contacto - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - minutos - - - - Show me as "Away" when I am inactive for: - Amosarme como "Ausente" cando estea inactivo por: - - - - When I start my computer - Cando encendo o meu computador - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Usuario: - - - - Password: - Contrasinal: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Cancelar - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Usuario: - - - - Password: - Contrasinal: - - - - ICQ Settings - Preferencias AIM/ICQ - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - Conseguir unha nova conta AIM - - - - IMAccountManager - - - Close - Pechar - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Cancelar - - - - Save - Gardar - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - Conseguir unha nova conta AIM - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Cancelar - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Usuario: - - - - Password: - Contrasinal: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Contrasinal: - - - - Need help? - - - - - - Cancel - Cancelar - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Conta: - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Usuario: - - - - Password: - Contrasinal: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Pechar - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Transferencia de arquivos - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Aceptar - - - - Status - Estatus - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Cancelar - - - - Save - Gardar - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - Avanzado >> - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - Preferencias AIM/ICQ - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Cancelar - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - Avanzado - - - - Advanced Settings - Configuración avanzada - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Avanzado - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Si - - - - &No - &Non - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Si - - - - &No - &Non - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Si - - - - &No - &Non - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Cancelar - - - - Remove - Borrar - - - - - Pause - Deter - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Tipo - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Conta: - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Estatus - - - - Incoming Call - Chamada entrante - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - &Cancelar - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Avanzado >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Estatus - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Cancelar - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Avanzado - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancelar - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancelar - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Enviar - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Cancelar - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Cancelar - - - - Save - Gardar - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Aceptar - - - - &Hidden - - - - - - &Tools - &Ferramentas - - - - &Help - A&xuda - - - - &Actions - &Accións - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Cancelar - - - - Finish - Rematar - - - - Next > - Seguinte > - - - - < Back - < Atrás - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Usuario: - - - - Password: - Contrasinal: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - Esqueceu o seu contrasinal en Yahoo!? - - - - Get a new Yahoo! Account - Conseguir unha nova conta Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_he.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_he.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_he.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_he.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5283 +0,0 @@ - - - - - AIMSettings - - - Login: - - - - - - Forgot your AIM password? - אינך יודע את ססמת AIM שלך? - - - - Get a new AIM Account - צור חשבון AIM חדש - - - - Password: - סיסמא: - - - - AIM Settings - הגדרות שמע - - - - AboutWindow - - - About - אודות - - - - Copyright (C)2008 Mbdsys - - - - - Authors - כותבים - - - - Close - סגור - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - העברת קובץ - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - - - - - - &Accept - - - - - - &Cancel - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - שנה את הגדרות המשתמש - - - - AddAccount - - - Configure your account: - הוסף קרדיט לחשבונך... - - - - &Next - המשך - - - - Need help? - צריך עזרה? - - - - You don't have any account ? Click here - אין ברשותך חשבון וונגו? <font color="#0055ff"><u>Click here</u></font> - - - - &Back - חזרה למסך הקודם - - - - Cancel - ביטול - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - ביטול - - - - Contact Type (protocol): - פרוטוקול - - - - Contact ID: - זיהוי איש קשר: - - - - Account: - חשבון : - - - - Enable - אפשר - - - - Login - כניסה - - - - Add - הוסף - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - סיסמא: - - - - Need help? - צריך עזרה? - - - - &Back - חזרה למסך הקודם - - - - Cancel - ביטול - - - - @product@ - Login - - - - - - &Connect - מחובר - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - שם תצוגה - - - - login / username: - שם משתמש: - - - - Account name: - חשבון : - - - - Proxy: - מתווך (proxy): - - - - : - : - - - - Server: - שרת: - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - מתקדם - - - - AddWengoAccount - - - Password: - סיסמא: - - - - Need help? - צריך עזרה? - - - - &Back - חזרה למסך הקודם - - - - Cancel - ביטול - - - - @product@ - Login - - - - - - &Connect - מחובר - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - כתובת דוא"ל: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - סגור - - - - Preference Name - אפשרות - - - - Type - סוג - - - - Value - ערך - - - - Default Value - ערך ברירת מחדל - - - - Save - שמור - - - - Status - מצב - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - הוסף - - - - Advanced Settings - הגדרות מתקדמות - - - - Advanced Configuration Window - חלון הגדרות מתקדמות - - - - Automatically answer incoming calls from - ענה לשיחות נכנסות באופן אוטומטי - - - - Remove - הסר - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - אזהרה, חלק זה מיועד למשתמשים מתקדמים. הכנסת ערך שגוי עלולה לגרום לתוכנה להפסיק לעבוד. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - שיחזור הגדרות מקוריות - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Audio Codecs - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - סגור - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - שלישי: - - - - 1st: - ראשון: - - - - 2nd: - שני: - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - שיחות שאינן נענות יועברו למענה האוטומטי - - - - Disable call forwarding - שיחות שאינן נענות לא יועברו - - - - Forward all unanswered calls to following phone numbers: - שיחות שאינן נענות יועברו למספרים: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - לדוגמא, 3314500XXXX+ כאשר 33+ היא הקידומת הבינלאומית עבור המדינה ו-14500XXXX מספר הטלפון. - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - שיחה נכנסת - - - - Message - - - - - - ChatLogViewer - - - Chat History - היסטוריית שיחות - - - - &Contact - איש קשר - - - - &Tools - &כלים - - - - &Help - &עזרה - - - - &Actions - &פעולות - - - - Main Toolbar - סרגל כלים ראשי - - - - - - Call Contact - התקשר - - - - - - Send a File - שלח קובץ - - - - createChatConf - - - - - - - - Show Contact Info - אודות איש הקשר - - - - blockContact - - - - - - &Save History As... - שמור שיחה בקובץ - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - איש קשר - - - - &Tools - &כלים - - - - &Actions - &פעולות - - - - Main Toolbar - סרגל כלים ראשי - - - - - - Call Contact - התקשר - - - - - - Send a File - שלח קובץ - - - - - - Show Contact Info - אודות איש הקשר - - - - blockContact - - - - - - &Save History As... - שמור שיחה בקובץ - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - חדר - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - משתתפים - - - - &Remove - - - - - - &Start - - - - - - Group Name - שם הקבוצה - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - צ'ט נכנס - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - ביטול - - - - Start - התחל - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - ביטול - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - מחק קבוצה - - - - Do you really want to delete this group? - אתה בטוח שברצונך למחוק את הקבוצה? - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - אנשי קשר - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - ביטול - - - - Program Failure - שגיאה בתוכנית - - - - Send - שלח - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - הורדה - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - ביטול - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - - - - - - Password: - סיסמא: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - ביטול - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - אישור - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - - - - - - Password: - סיסמא: - - - - ICQ Settings - הגדרות וידאו - - - - Forgot your ICQ password? - הכנס את סיסמתך - - - - Get a new ICQ Account - צור חשבון חדש... - - - - IMAccountManager - - - Close - סגור - - - - Login - כניסה - - - - Add - הוסף - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - ביטול - - - - Save - שמור - - - - IM Account Settings - - - - - - IMContactManager - - - Add - הוסף - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - הוסף איש קשר - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - ביטול - - - - OK - אישור - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - - - - - - Password: - סיסמא: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - יציאה: - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - סיסמא: - - - - Need help? - צריך עזרה? - - - - Cancel - ביטול - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - חשבון : - - - - &Connect - מחובר - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - - - - - - Password: - סיסמא: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - בצע שיחה - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - סגור - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - העברת קובץ - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - - - - - - Status - מצב - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - לוח מקשים - - - - Audio Smileys - רגשוני שמע - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - ביטול - - - - Save - שמור - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - כללי - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - מתקדם >> - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - שם משפחה: - - - - First Name: - שם פרטי: - - - - Details - - - - - - Web/blog: - - - - - - Country: - ארץ: - - - - State: - - - - - - City: - עיר: - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - הערות - - - - Phone Numbers - מספרי טלפון - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - גבר - - - - Female - אישה - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - הגדרות שמע - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - כניסה - - - - Please enter an email address. - Enter the realm address - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - ביטול - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &מחק - - - - QtAdvancedSettings - - - Advanced - מתקדם - - - - Advanced Settings - הגדרות מתקדמות - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - מתקדם - - - - Audio - - - - - - Audio Settings - הגדרות שמע - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - התקשר - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - אין באפשרותך לשלוח הודעת SMS - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - אין באפשרותך לשלוח הודעת SMS - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - ביטול - - - - Remove - הסר - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - ממתין... - - - - An error occured during the file transfer - תקלה במערכת הקול: - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - כללי - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - רזולוציה - - - - @product@ - Call History - - - - - - Type - סוג - - - - Name/ID - - - - - - Date - - - - - - Duration - משך - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - ביטול - - - - @product@ - - - - - - &Delete - &מחק - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - מחובר - - - - Error: %1 - - - - - - Online - מחובר - - - - Invisible - - - - - - Away - רחוק - - - - Do not disturb - נא לא להפריע - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - ביטול - - - - @product@ - - - - - - &Delete - &מחק - - - - Online - מחובר - - - - Invisible - - - - - - Away - רחוק - - - - Do Not Disturb - נא לא להפריע - - - - Disconnect - מחובר - - - - Delete Account - מחק קבוצה - - - - Are sure you want to delete the account <b>%1</b>? - האם אתה בטוח שברצונך למחוק - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - שפה - - - - Language Settings - הגדרות מתקדמות - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - מצב - - - - Incoming Call - שיחה נכנסת - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - ביטול - - - - Talking - Conference - - - - - - Add a Contact - הוסף איש קשר - - - - QtPresenceMenuManager - - - Online - מחובר - - - - Invisible - - - - - - Away - רחוק - - - - Do Not Disturb - נא לא להפריע - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - הגדרות מתקדמות - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - מתקדם >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - בחר את מצלמת האינטרנט שלך - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - הגדרות שמע - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - מצב - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - התקשר - - - - Online - מחובר - - - - Invisible - - - - - - Away - רחוק - - - - Do Not Disturb - נא לא להפריע - - - - Internet Connection Error - - - - - - Offline - לא מחובר - - - - Connecting... - - - - - - Send a SMS - - - - - - Send SMS - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - המצב שלי - - - - Quit @product@ - - - - - - QtToolBar - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - הוסף איש קשר - - - - Hide Unavailable Contacts - שחרר חסימת משתמש - - - - Show Unavailable Contacts - שחרר חסימת משתמש - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - האם אתה בטוח שברצונך למחוק - - - - &Log Off - - - - - - Disable &Video Calls - אפשר וידאו - - - - Enable &Video Calls - אפשר וידאו - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - &Cancel - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - ודיאו - - - - - Normal - נורמאלי - - - - - Good - טוב - - - - - Very good - - - - - - - Excellent - מעולה - - - - Video Settings - הגדרות וידאו - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - הגדרות וידאו - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - מתקדם - - - - General - כללי - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - שפה - - - - Privacy - - - - - - Video - ודיאו - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - - - - Conference - - - - - - Call - התקשר - - - - Account - - - - - Add a Contact - הוסף איש קשר - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - &Cancel - - - - - - Home - - - - - - Are you sure you want to exit the application? - האם אתה בטוח שברצונך למחוק - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - ביטול - - - - OK - אישור - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - יציאת SIP: - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - שלח - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - חתימה : - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - ביטול - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - נורמאלי - - - - Good - טוב - - - - Very good - - - - - - Excellent - מעולה - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - תצוגה מקדימה של המצלמה - - - - Connection Type - סוג חיבור - - - - Video quality - - - - - - Down (kbit/s) - הורדה kbit/s) - - - - Up (kbit/s) - העלאה kbit/s) - - - - 0 to 512 - 0 to 512 - - - - 0 to 128 - 0 to 128 - - - - 512 to 2048 - 512 to 2048 - - - - 128 to 256 - 128 to 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - מספר טלפון של איש הקשר - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - ביטול - - - - Save - שמור - - - - Title - סגנון - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - - - - - - &Hidden - - - - - - &Tools - &כלים - - - - &Help - &עזרה - - - - &Actions - &פעולות - - - - @company@ - - - - - - &Close - - - - - - Dialpad - לוח מקשים - - - - @product@ - - - - - - Start Conference - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Send SMS... - - - - - Send SMS - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - אודות - - - - Add &Contact... - &הוסף איש קשר - - - - &Configuration... - הגדרות - - - - View My &Profile... - צפה בפרופיל שלי... - - - - - View My Profile - צפה בפרופיל שלי... - - - - Start &Conference... - התחל צ'אט... - - - - &Find Contact... - &הוסף איש קשר - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - העברת קובץ - - - - Add Contact - &הוסף איש קשר - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - הוסף - - - - SMS - SMS - - - - Conference - - - - - - Wizard - - - Cancel - ביטול - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - - - - - - Password: - סיסמא: - - - - Yahoo! Settings - הגדרות שמע - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - הכנס את סיסמתך - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hi.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hi.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hi.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hi.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5548 +0,0 @@ - - - - - AIMSettings - - - Login: - - - - - - Forgot your AIM password? - - - - - - Get a new AIM Account - - - - - - Password: - - - - - - AIM Settings - - - - - - AboutWindow - - - About - - - - - - Copyright (C)2008 Mbdsys - - - - - Authors - - - - - - Close - - - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - - - - - - toto@wengo.fr - - - - - - test.bmp - - - - - - &Accept - - - - - - &Cancel - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - - - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - - - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - - - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - - - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - - - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - - - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - - - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - - - - - - Password: - - - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - - - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - - - - - - Password: - - - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - - - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - - - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - - - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - - - - - - Password: - - - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - - - - - - Need help? - - - - - - Cancel - - - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - - - - - - Password: - - - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - - - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - - - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - - - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - - - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - - - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - - - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - - - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - - - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - - - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - - - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - - - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - - - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - - - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - - - - - - Password: - - - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hu.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hu.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hu.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_hu.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4777 +0,0 @@ - - - - - AIMSettings - - - Login: - Bejelentkezés: - - - - Forgot your AIM password? - Elfelejtette az AIM jelszavát? - - - - Get a new AIM Account - Új AIM fiók regisztrációja - - - - Password: - Jelszó: - - - - AIM Settings - AIM/ICQ Beállítások - - - - AboutWindow - - - About - Névjegy - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Készítők - - - - Close - Bezárás - - - - 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. - Ez egy szabad szoftver; terjeszthető illetve módosítható a -GNU Általános Közreadási Feltételek dokumentumában leírtak -szerint -- 2. vagy későbbi verzió --, melyet a Szabad Szoftver -Alapítvány ad ki. - - - - @product@ - About - @product@ - Névjegy - - - - @product@, a voice over Internet phone - @product@, internet telefon - - - - AcceptDialog - - - File Transfer - Fájlátvitel - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - Elfog&adás - - - - &Cancel - &Mégsem - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kapcsolat: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Fájlnév: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Bejövő fájl</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Saját profil szerkesztése - - - - AddAccount - - - Configure your account: - Fiók beállításai - - - - &Next - &Következő - - - - Need help? - Segítség kérése - - - - You don't have any account ? Click here - Még nem regisztrált? Katt ide - - - - &Back - &Vissza - - - - Cancel - Mégsem - - - - @product@ - Login - @product@ - Belépés - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">VOIP fiók beállítása</span><br><br><span>A szolgáltató <br/> @company@ cég vagy más</span> - - - - @company@ account - @company@ fiók - - - - Generic SIP account - Általános SIP fiók - - - - AddIMContact - - - Cancel - Mégsem - - - - Contact Type (protocol): - Partnerfiók típusa (protokoll): - - - - Contact ID: - Felhasználó ID - - - - Account: - Fiók: - - - - Enable - Bekapcsolás - - - - Login - Bejelentkezés - - - - Add - Hozzáadás - - - - @product@ - Add a Contact Account - @product@ - Partner fiók felvétele - - - - AddSIPAccount - - - Password: - Jelszó: - - - - Need help? - Segítség kérése - - - - &Back - &Vissza - - - - Cancel - Mégsem - - - - @product@ - Login - @product@ - Belépés - - - - &Connect - &Csatlakozás - - - - Activate presence and chat (SIP/SIMPLE) - Jelenlét és csevegés aktiválása (SIP/SIMPLE) - - - - Displayname: - Megjelenített név: - - - - login / username: - Belépés: - - - - Account name: - Fióknév: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Kiszolgáló: - - - - SIP Domain / Realm: - SIP Domain / Tartomány: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">SIP profil beállítása</span><br><br><span>Kérem töltsön ki minden információt ami<br/>lehetővé teszi az ön szoftveres telefonjának a<br/>SIP fiókjához való kapcsolódást</span> - - - - Advanced - Szakértői - - - - AddWengoAccount - - - Password: - Jelszó: - - - - Need help? - Segítség kérése - - - - &Back - &Vissza - - - - Cancel - Mégsem - - - - @product@ - Login - @product@ - Belépés - - - - &Connect - &Csatlakozás - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Bejelentkezés</span><br><br><span>Kérjük adja meg elektronikus levelezési címét és<br>jelszavát</span> - - - - Email Address: - Elektronikus levelezési-cím: - - - - Click here if you don't have a @company@ account - Kattintson ide, ha még nem rendelkezik @company@ fiókkal - - - - Forgot your @company@ password? - Elfelejtette @company@ jelszavát? - - - - AdvancedConfigWindow - - - Close - Bezárás - - - - Preference Name - Tulajdonság neve - - - - Type - Típus - - - - Value - Érték - - - - Default Value - Alapértelmezett érték - - - - Save - Mentés - - - - Status - Státusz - - - - @product@ - Advanced Configuration - @product@ - További beállítások - - - - AdvancedSettings - - - Add - Hozzáadás - - - - Advanced Settings - Szakértői beállítások - - - - Advanced Configuration Window - Szakértői beálltások ablaka - - - - Automatically answer incoming calls from - Bejövő hívások automatikus fogadása - - - - Remove - Eltávolítás - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Figyelem, ez a rész csak haladó felhasználóknak ajánlott.<br>Minden hiba súlyosan károsíthatja a szoftvert. - - - - AppearanceSettings - - - Toolbar - Eszköztár - - - - &Icons && Text - &Ikonok és szövegek - - - - Icons &Only - &Csak ikonok - - - - &Hidden - &Rejtett - - - - Chat Theme - Csevegési sablonok - - - - Form - Űrlap - - - - AudioSettings - - - Reset - Visszaállítás - - - - Audio Codecs - Hangkodekek - - - - &Input device: - &Bemeneti eszköz: - - - - &Output device: - &Kimeneti eszköz: - - - - &Ringing device: - &Csengetési eszköz: - - - - &Make a test call - &Teszt hívás kezdeményezése - - - - - Test - Teszt - - - - &Advanced >> - &További opciók >> - - - - &Half Duplex - &Fél duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - Figyelem, ezek a beállítások csak haladó felhasználók számára ajánlott. -Bármilyen változtatás a kodekek sorrendjében problémákat okozhat a @product@ használatában: elképzelhető hogy nem fogja tudni felhívni a kapcsolatait többé. - - - - AvatarFrame - - - Form - Űrlap - - - - AvatarWidget - - - Form - Űrlap - - - - BrowserSoftUpdateWindow - - - Close - Bezárás - - - - @product@ - Update available - @product@ - Frissítés elérhető - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - <html><head></head><body>Újabb frissítés érhető el, kattints <span style=" text-decoration: underline; color:#0000ff;">ide</span>a letöltéshez<br /><br />Verzió: %1<br />Fájlméret: %2 (MB)<br /></body></html> - - - - CallForwardSettings - - - 3rd: - Harmadik: - - - - 1st: - Első: - - - - 2nd: - Második: - - - - - - (+ country code) phone number - (+ országkód) telefonszám - - - - Forward all unanswered calls to message box - Minden fel nem vett hívás továbbítása a hangpostára - - - - Disable call forwarding - Hívástovábbítás tiltása - - - - Forward all unanswered calls to following phone numbers: - Minden fel nem vett hívás továbbítása a következő telefonszámokra: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Például +3314500XXXX (+33 az országkód, és 14500XXXX a telefonszám) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Hivásátirányítás aktív ha ne kapcsolódsz a @company@, mikor foglalt a vonal vagy 20 másodperccel a nemfogadott hívást követően. Beállíthatsz maximum 3 átirányítás vezetékes és mobil telefonokra vagy hangpostára (ha engedélyezett) - - - - CallToaster - - - Incoming Call - Bejövő hívás - - - - Message - Üzenet - - - - ChatLogViewer - - - Chat History - Előzmények - - - - &Contact - &Kapcsolat - - - - &Tools - &Eszközök - - - - &Help - &Segítség - - - - &Actions - &Műveletek - - - - Main Toolbar - Fő eszköztár - - - - - - Call Contact - Partner hívása - - - - - - Send a File - Fájl küldése - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Kapcsolat infó megjelenítése - - - - blockContact - blockContact - - - - &Save History As... - Előzmény menté&se másként... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kapcsolat - - - - &Tools - &Eszközök - - - - &Actions - &Műveletek - - - - Main Toolbar - Fő eszköztár - - - - - - Call Contact - Partner hívása - - - - - - Send a File - Fájl küldése - - - - - - Show Contact Info - Kapcsolat infó megjelenítése - - - - blockContact - blockContact - - - - &Save History As... - Előzmény menté&se másként... - - - - @company@ - @company@ - - - - MainWindow - Főablak - - - - &Edit - &Szerkesztés - - - - Cu&t - &Kivágás - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Másolás - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Beillesztés - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Konferencia indítása - - - - &Close - &Bezárás - - - - Conference - Konferencia - - - - ChatRoomInviteWidget - - - Chat room - Chat-szoba - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat-szoba</span></p></body></html> - - - - (Conference participants) - (Konferencia résztvevők) - - - - &Remove - &Eltávolítás - - - - &Start - &Indítás - - - - Group Name - Csoport neve - - - - &Add - &Hozzáadás - - - - ChatToaster - - - Message - Üzenet - - - - Incoming Chat - Bejövő társalgás - - - - ChatWidget - - - Form - Formula - - - - ConferenceCallWidget - - - Cancel - Mégsem - - - - Start - Indítás - - - - Phone number 2: - Telefonszám 2: - - - - Phone number 1: - Telefonszám 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Konferencia kezdeményezése - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferencia</span><br /><br />Adjon meg két telefonszámot </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vagy @company@ kapcsolat azonosítót </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a konferencia indításához</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferencia</span><br /><br />Adjon meg két telefonszámot </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">vagy @company@ kapcsolat azonosítót </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">a konferencia indításához</p> - - - - &Add >> - &Hozzáadás >> - - - - << &Remove - << &Eltávolítás - - - - Available Contacts - Elérhető partnerek - - - - &Start - &Indítás - - - - Cancel - Mégsem - - - - ContactGroupPopupMenu - - - Remove Contact Group - Kapcsolati csoport eltávolítása - - - - Rename Contact Group - Kapcsolati csoport átnevezése - - - - Delete group - Csoport törlése - - - - Do you really want to delete this group? - Valóban törölni kívánja a csoportot? - - - - &Yes - &Igen - - - - &No - &Nem - - - - ContactList - - - Contact List - Kapcsolati lista - - - - ContactWidget - - - No mobile phone number set - Nincs mobil telefonszám beállítva - - - - No landline phone number set - Nincs vezetékes telefonszám beállítva - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Partner szerkesztése</p></body></html> - - - - CrashReport - - - Cancel - Mégsem - - - - Program Failure - Programhiba - - - - Send - Küldés - - - - Optional Information - Egyéb információ - - - - Your Mail: - Az Ön elektronikus levélcíme: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - A @product@ végrehajtása közben hibat történt amiről hibanapló készült. -Ez a fájl hasznos információkat tartalmaz a probléma elhárításához. -Köszönjük közreműködését. - -A @product@ Fejlesztő Csapat. - - - - In order to help the developers you can complete this report. This step is optional. - A fejlesztők munkájának segítéséhez kiegészítheti ezt a jelentést. Nem kötelező. - - - - Use Case Description: - Használat körményeinek leírása: - - - - CreditWidget - - - Not Available - Nem érhető el - - - - Click here to change your call forward settings - A hívásátirányítás megváltoztatásához kattintson ide - - - - Call forward mode: - Hívásátirányítás módja: - - - - Purchase call out credits - Kredit vásárlása - - - - Call Forward Method - Hívásátirányítás módja - - - - Call Voice Mail - Hangposta hívása - - - - Click here to buy @company@'s credits - @company@ kredit vásárlásához kattinton ide - - - - DesktopService - - - Root Folder - Gyökérkönyvtár - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Hangok küldéséhez kattintson a színváltó elemekre. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Hangposta hívásához kattintson ide - - - - New Voice Mail: - Új hangüzenet: - - - - Click here to see missed call(s) - Nem fogadott hívások listázásához kattintson ide - - - - Missed Call(s): - Nem fogadott hívások: - - - - FileTransferDialog - - - ... - ... - - - - Download - Letöltés - - - - Upload - Feltöltés - - - - Click here to change your download folder - A letöltési mappa megváltoztatásához kattintson ide - - - - Download folder: - Letöltési könyvtár: - - - - Clean all items in the list - Minden elem eltávolítása a listáról - - - - &Clean - &Tisztítás - - - - @product@ - File Transfer Manager - @product@ - Fájl átvitel kezelő - - - - FileTransferItem - - - Cancel - Mégsem - - - - Form - Űrlap - - - - Pause - Szünet - - - - <i>From:</i> - <i>Küldő:</i> - - - - GeneralSettings - - - When I double-click on a contact - Amikor duplán kattintok egy partner nevére - - - - Call cell phone or land line if contact not online - Mobil- vagy vezetékes-telefonszám hívása, ha a partner nem elérhető - - - - Start in background mode - - - - - Prefere start a free call if applicable - - - - - Prefere start a chat - - - - - Idle status - Tétlen állapot - - - - minutes - percek - - - - Show me as "Away" when I am inactive for: - "Távol" állapot, ha tétlen ennyi ideig: - - - - When I start my computer - A számítógép indításakor - - - - Automatically start @product@ - @product@ automatikus indítása - - - - GoogleTalkSettings - - - Login: - Bejelentkezés: - - - - Password: - Jelszó: - - - - GoogleTalk Settings - GoogleTalk beállítások - - - - Forgot your GoogleTalk password? - Elfelejtette a GoogleTalk jelszavát? - - - - Get a new GoogleTalk Account - Új GoogleTalk fiók regisztrációja - - - - HttpProxyLoginWindow - - - Cancel - Mégsem - - - - HTTP Proxy Address: - HTTP Proxy cím: - - - - HTTP Proxy Port Number: - HTTP proxy port: - - - - HTTP Proxy Login: - HTTP Proxy felhasználónév: - - - - HTTP Proxy Password: - HTTP Proxy jelszó: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Kérem adja meg a felhasználónevét és jelszavát</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Helyi HTTP proxy - - - - ICQSettings - - - Login: - Bejelentkezés: - - - - Password: - Jelszó: - - - - ICQ Settings - AIM/ICQ Beállítások - - - - Forgot your ICQ password? - Elfelejtette az ICQ jelszavát? - - - - Get a new ICQ Account - Új ICQ fiók létrehozása - - - - IMAccountManager - - - Close - Bezárás - - - - Login - Bejelentkezés - - - - Add - Hozzáadás - - - - Delete - Törlés - - - - Modify - Módosítás - - - - Protocol - Protokoll - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Üzenetküldő fiókjaim (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Mégsem - - - - Save - Mentés - - - - IM Account Settings - IM Fiók beállítások - - - - IMContactManager - - - Add - Hozzáadás - - - - Delete - Törlés - - - - Contact Type (protocol) - Kapcsolat típusa (protokoll) - - - - Click on the add button below to add a new ID - Válassza a "Hozzáadás" gombot új felhasználói ID felvételéhez - - - - Contact ID - Kapcsolat ID - - - - IMProfileWidget - - - - Enter your nickname here - Adja meg a becenevét - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Üzenetküldő fiók hozzáadása (MSN, AIM, GoogleTalk stb.) - - - - Add an IM account - Fiók hozzáadása - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Mégsem - - - - OK - OK - - - - Go Up - Fel - - - - Refresh - Frissítés - - - - JabberSettings - - - Login: - Bejelentkezés: - - - - Password: - Jelszó: - - - - Jabber Settings - Jabber beállítások - - - - Connect Server: - Kiszolgáló: - - - - <u>Advanced Options</u> - <u>Szakértői beállítások</u> - - - - Require TLS - TLS szükséges: - - - - Port: - Port: - - - - Use TLS if available - TLS használata, ha elérhető - - - - Allow plaintext authentication over unencrypted streams - Titkosítatlan hitelesítés engedélyezése - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Régi SSL használatának kikényszerítése (port 5223) - - - - Resource: - Erőforrás: - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Az Ön nyelve nem szerepel a listán. Tudta, hogy a Launchpadon elkészítheti a saját fordítását? - - - - More information here. - További informácio itt. - - - - LogAccount - - - Password: - Jelszó: - - - - Need help? - Segítségre van szüksége? - - - - Cancel - Mégsem - - - - Delete - Törlés - - - - @product@ - Login - @product@ - Belépés - - - - Account: - Fiók: - - - - &Connect - &Csatlakozás - - - - Forgot your @company@ password? - Elfelejtette @company@ jelszavát? - - - - &Modify - &Módosítás - - - - Configure a &New Profile - Új &felhasználó - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Belépés</span><br><br><span>Kérem válasszon egy korábban használt profilt<br/> vagy töltse ki az információkat a(z)<br/> @company@ fiókba történő belépéshez</span> - - - - MSNSettings - - - Login: - Bejelentkezés: - - - - Password: - Jelszó: - - - - MSN Settings - MSN beállítások - - - - Forgot your MSN password? - Elfelejtette az MSN jelszavát? - - - - Get a new MSN Account - Új MSN fiók regisztrációja - - - - Use HTTP method - HTTP eljárás használata - - - - MainWindow - - - MainWindow - Főablak - - - - Command::terminate() - Parancs: megszakítás () - - - - Command::start() - Parancs: indítás() - - - - Accept Call - Hívásfogadás - - - - Send Chat Message - Chat üzenet küldése - - - - Make Call - Híváskezdeményezés - - - - Hang Up - Vonal bontása - - - - ManageBlockedUsersSettings - - - Close - Bezárás - - - - Unblock User - Felhasználó-blokkolás feloldása - - - - Manage blocked users - Blokkolt felhasználók kezelése - - - - @product@ - Manage blocked users - @product@ - Blokkolt felhasználók kezelése - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Már rendelkezek @company@ fiókkal - - - - Create a @company@ account - Új @company@ fiók létrehozása - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - SMS küldéshez be kell jelentkeznie egy @company@<br>fiókba és rendelkeznie kell @company@ egyenleggel. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Válassza ki, hogy mely eseményeket kísérje hangjelzés! - - - - NotificationSettingsItem - - - Sound file - Hangfájl - - - - Find a sound file - Hangfájl keresése - - - - Play sound file - Hangfájl lejátszása - - - - Play - Lejátszás - - - - NotifyDialog - - - File Transfer - Fájlátvitel - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Állapot:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Frissítés</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - Elfog&adás - - - - Status - Státusz - - - - 00:00:00 - 00:00:00 - - - - Nickname - Becenév - - - - &Reject - Elutasított hívás - - - - Dialpad - Tárcsázó - - - - Audio Smileys - Audió smiley-k - - - - - Communication is encrypted - Kommunikáció titkosítva - - - - PrivacySettings - - - Manage blocked users - Blokkolt felhasználók kezelése - - - - Privacy Rules - Titoktartási szabályok - - - - Always sign in as "Invisible" (appear offline to all users) - Belépés "Láthatatlan" módban (másoknak nem elérhetőként látszik) - - - - Allow chats from - Chat engedélyezése az alábbi helyekről - - - - - Anyone - Bárki - - - - - Only people from my contact list - Csak a kapcsolati listában szereplő partnerek - - - - Allow calls from - Hívás engedélyezése az alábbi helyekről - - - - When I sign into @company@ - Amikor belépek ide @company@ - - - - ProfileDetails - - - Cancel - Mégsem - - - - Save - Mentés - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - Általános - - - - Network IDs (MSN, Jabber...) - Hálózati azonosító (MSN, Jabber...) - - - - Advanced >> - Haladó >> - - - - Fill in all your network Id to stay connected with your contacts - Adja meg az összes fiók-hozzáférését, hogy minden partnerével kommunikálhasson - - - - Contact - Kapcsolat - - - - Group: - Csoport: - - - - Last Name: - Vezetéknév: - - - - First Name: - Keresztnév: - - - - Details - Részletek - - - - Web/blog: - Web/blog - - - - Country: - Ország: - - - - State: - Állam: - - - - City: - Város: - - - - Gender: - Nem: - - - - Birth Date: - Születési dátum: - - - - Email: - Elektronikus levelezési cím: - - - - Notes - Megjegyzés - - - - Phone Numbers - Telefonszámok - - - - Home phone - Otthoni telefon - - - - Mobile phone - Mobiletelefon - - - - dd MMMM yyyy - nn HHHH eeee - - - - Unknown - Ismeretlen - - - - Male - Férfi - - - - Female - - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Fiókok - - - - Accounts Settings - Fiók beállítások - - - - QtAddAccount - - - Configure your voip account - Internettelefon-fiók beállítása - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Az ön szolgáltatója @company@ vagy más szolgáltató - - - - QtAddAccountUtils - - - Test - Teszt - - - - Audio Test Call - Teszt hang hívás - - - - Video Test Call - Teszt videó hívás - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Adja meg SIP fiókjának adatait! - - - - Configure your SIP profile - SIP profil beállításai - - - - QtAddWengoAccount - - - Login - Bejelentkezés - - - - Please enter an email address. - Kérem adja meg az elektronikus levelezési címét <br/> és jelszavát - - - - Please enter your email address<br/>and your password - Kérem adja meg az elektronikus levelezési címét <br/> és jelszavát - - - - @product@ - Connexion - @product@ - Kapcsolat - - - - QtAdvancedIMContactManager - - - Cancel - Mégsem - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Biztosan törölni akarja a partnert? - - - - - &Delete - &Törlés - - - - QtAdvancedSettings - - - Advanced - Szakértői - - - - Advanced Settings - Szakértői beállítások - - - - QtAppearanceSettings - - - - Me - Én - - - - Hello - Szia - - - - How are you? - Hogy vagy? - - - - - - Other - Egyéb - - - - I am fine - Kösz, jól - - - - Have to go - Mennem kell - - - - Bye - Viszlát - - - - Appearance - Megjelenés - - - - Appearance Settings - Megjelenés beállítása - - - - QtAudioSettings - - - - Advanced - Szakértői - - - - Audio - Audió - - - - Audio Settings - Audió beállítások - - - - QtCallBar - - - +(country code) number or nickname - + (orszám hívószám) szám vagy becenév - - - - QtCallForwardSettings - - - - Call Forward - Hívástovábbítás - - - - Call Forward Settings - Hívástovábbítás beállításai - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - Hivásátirányítás beállításához szükséges<BR> belépnie egy @company@ fiókkal. - - - - QtChatHistoryWidget - - - Save As - Mentés másként - - - - QtChatLogViewer - - - Edit Contact - Partner szerkesztése - - - - QtChatTabWidget - - - Close chat - Csevegés bezárása - - - - QtChatWidget - - - %1 is connected. - %1 elérhető. - - - - %1 is disconnected. - %1 kijelentkezett. - - - - send - küldés - - - - Your file can not be sent: your contact must be connected on the @company@ network. - A fájlt nem lehet elküldeni: a partnerének a @company@ hálózatához kell csatlakoznia. - - - - Your contact wishes to send a file with @company@. - Az ön partnere egy fájlt szeretne küldeni @company@ keresztül. - - - - Go to %1 to install it - Lépjen ide %1 a telepítéshez - - - - %1 has joined the chat - %1 csatlakozott a csevegéshez - - - - %1 has left the chat - %1 elhagyta a csevegést - - - - QtChatWindow - - - %1 is typing - - - - - Edit Contact - Partner szerkesztése - - - - @product@ Chat - @product@ Csevegés - - - - QtConferenceCallWidget - - - Call SIP - SIP hívása - - - - Call land line - Vezetékes telefonszám hívása - - - - Call Mobile - Mobil hivása - - - - Call @company@ - @company@ hívása - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Most közölheti az első partnerrel, hogy konferenciahívásban fog részt venni.</b><br><br>Ha ezzel kész, kattintson a lenti gombra. Amíg a második résztvevőt hívja, addig az első várakoztatásra kerül.<br> - - - - Hold first interlocutor and call second one - Várakoztassa az első résztvevőt, és hívja a másodikat - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Most közölheti a második partnerrel, hogy konferenciahívásban fog részt venni.</b><br><br>Ha ezzel kész, kattintson a lenti gombra a konferenciahívás megkezdéséhez. - - - - Start Conference - Konferencia indítása - - - - - @product@ - Proceed Conference - @product@ - Konferencia - - - - QtContactList - - - &Yes - &Igen - - - - &No - &Nem - - - - Merge %1 with %2? - %1 és %2 összeolvasztása? - - - - @product@ - Merge Contacts - @product@ - Partnerek összefésülése - - - - QtContactManager - - - &Yes - &Igen - - - - &No - &Nem - - - - Home phone - Otthoni telefon - - - - Mobile phone - Mobiletelefon - - - - @product@ - @product@ - - - - Edit Contact - Partner szerkesztése - - - - Do you really want to delete this contact? - Valóban törölni kívánja ezt a partnert? - - - - Start chat - Chat indítása - - - - - Delete contact - Partner törlése - - - - Call - Hívás - - - - Free call - - - - - Work phone - Munkahelyi telefon - - - - Send SMS - SMS küldése - - - - Edit contact - Partner szerkesztése - - - - Block contact - Partner blokkolása - - - - Invite to conference - Meghívás konferenciába - - - - Go to website - Weboldal megnyitása - - - - Send file - Fájl küldése - - - - Forward to mobile phone - Továbbítás mobil telefonszámra - - - - QtContactWidget - - - No mobile phone number set - Nincs mobil telefonszám beállítva - - - - No landline phone number set - Nincs vezetékes telefonszám beállítva - - - - - Click here to call - Hívás kezdeményezése - - - - - Click here to set a phone number - Telefonszám megadása - - - - Click here to edit the contact - Partner szerkesztéséhez kattintson - - - - Click here to send a SMS - SMS küldése - - - - Click here to start a chat - Csevegés indítása - - - - Click here to start a free call - Ingyenes hívás kezdeményezése - - - - Click here to send a file - Fájl küldése - - - - QtCrashReport - - - %1 Crash Report - %1Hibajelentés - - - - QtEventWidget - - - Do you want to call your voice mail? - Valóban kívánja a hangpostát hívni? - - - - @product@ - Voice Mail - @product@ - Hangposta - - - - QtFileTransfer - - - &Yes - &Igen - - - - &No - &Nem - - - - Choose a directory - Válasszon egy könyvtárat - - - - Overwrite File? - Felül szeretné írni a fájlt? - - - - A file called %1 already exists.Do you want to overwrite it? - A(z) %1 fájl már létezik. Felül szeretné írni a fájlt? - - - - - File size error - Hibás fájlméret - - - - %1 exceeds the maximum authorized size. - %1 elérte a maximálisan engedélyezett méretet - - - - %1 has size 0. - %1 mérete 0. - - - - %1 is a directory. - %1 egy mappa. - - - - You can not send a directory. - Mappát nem lehet küldeni. - - - - %1 is a shortcut. - %1 egy link. - - - - You can not send a shortcut. - Linket nem lehet küldeni. - - - - All Files (*.* *) - Minden fájl (*.* *) - - - - Please upgrade<br> your @product@ - Kérem frissítse<br> a(z) @product@ szoftvert - - - - Tell your contact<br> to upgrade<br> his @product@ - Kérje meg partnerét,<br> hogy frissítse<br> @product@ szoftverét - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - A fájlt nem lehet fogadni: frissítse a @product@-et a fájl fogadásához. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - fájlt próbál meg küldeni de frissíteni kell a @product@ a fogadáshoz. Kérje meg, hogy töltse le a legfrissebb verziót. - - - - QtFileTransferItem - - - - - Cancel - Mégsem - - - - Remove - Eltávolítás - - - - - Pause - Szünet - - - - Starting - Indítás - - - - From: - Feladó: - - - - To: - Címzett: - - - - Open - Megnyitás - - - - Resume - Hívás tartásból visszavétele - - - - Waiting for anwser... - Várakozás válaszra... - - - - Done - Kész - - - - Failed - Hiba - - - - Paused - Felfüggesztve - - - - Paused by peer - A partner felfüggesztette - - - - Cancelled - Leállítva - - - - Cancelled by peer - A partner megszakította - - - - - Downloading... - Letöltés... - - - - Uploading... - Feltöltés... - - - - Waiting for peer... - Fájlátvitel indítása - - - - An error occured during the file transfer - Hiba történt a fájl átvitele közben - - - - This may be caused by : - Lehetséges oka : - - - - Your @product@ is not up to date. Please download the latest version on - Az ön @product@ nem a legfrissebb verzió. Kérem töltse le és telepítse a legfrissebb verziót - - - - The @company@ network may be temporarily unavailable. Please try later. - A(z) @company@ hálózat ideiglenesen nem elérhető. Kérem próbálkozzon újra később. - - - - QtGeneralSettings - - - General - Általános - - - - General Settings - Általános beállítások - - - - QtHistory - - - Incoming call - Bejövő hívás - - - - Outgoing call - Kimenő hívás - - - - Missed call - Nem fogadott hívás - - - - Rejected call - Elutasított hívás - - - - Outgoing SMS - Kimenő SMS - - - - Do you want to call %1? - Fel kívánja hívni %1-t? - - - - Chat session - Csevegés - - - - @product@ - Call History - @product@ - Hívásnapló - - - - Type - Típus - - - - Name/ID - Név/ID - - - - Date - Dátum - - - - Duration - Időtartam - - - - QtHistoryWidget - - - Erase this entry - Bejegyzés törlése - - - - Open in SMS window - SMS ablak megnyitása - - - - Call this peer - Partner hívása - - - - Show chat log - A csevegés szövege - - - - QtIMAccountManager - - - Cancel - Mégsem - - - - @product@ - @product@ - - - - &Delete - &Törlés - - - - Are sure you want to delete this account? - - Biztosan törölni akarja a fiókot? - - - - - QtIMAccountMonitor - - - - - Disconnected - Nincs kapcsolódva - - - - Error: %1 - Hiba: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Elérhető - - - - Invisible - Láthatatlan - - - - Away - Távol - - - - Do not disturb - Ne zavarjanak - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Felhasználónév megadása - - - - QtIMAccountPresenceMenuManager - - - Cancel - Mégsem - - - - @product@ - @product@ - - - - &Delete - &Törlés - - - - Online - Elérhető - - - - Invisible - Láthatatlan - - - - Away - Távol - - - - Do Not Disturb - Ne zavarj - - - - Disconnect - A kapcsolat bontása - - - - Delete Account - Fiók törlése - - - - Are sure you want to delete the account <b>%1</b>? - Valóban le kívánja törölni a(z) <b>%1</b> fiókot? - - - - QtIMProfileWidget - - - Edit My Profile - Saját profil szerkesztése - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Nyelv - - - - Language Settings - Nyelvi beállítások - - - - QtLogAccount - - - Invalid account - Érvénytelen fiók - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Kérem válasszon egy korábban használt profilt <br/> vagy adja meg a @company@ fiók <br/> használatához szükséges információkat - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Kapcsolat - - - - QtNotificationSettings - - - Incoming call (ringtone) - Bejövő hívás (csengőhang) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Hívás megszakítása - - - - Incoming chat - Bejövő chat - - - - IM account connected - IM fiók csatlakoztatása - - - - IM account disconnected - IM fiók lecsatlakoztatása - - - - Contact online - Partner bejelentkezett - - - - Notifications - Figyelmeztetések - - - - Notifications Settings - Figyelmeztetések beállításai - - - - QtNotificationSettingsItem - - - Choose a sound file - Hangfájl választása - - - - Sounds - Hangok - - - - QtPhoneCall - - - Status - Státusz - - - - Incoming Call - Bejövő hívás - - - - Resume - Hívás tartásból visszavétele - - - - Hang-up - Hívás bontása - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Hiba - - - - Talking - Beszélgetés - - - - Dialing - Hívás - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Csengetés - - - - Redirected - Átirányítva - - - - Initialization... - Inicializálás... - - - - Closed - Bezárva - - - - - Hold - Hívás tartásba helyezése - - - - Add contact - Partner hozzáadása - - - - Ca&ncel - &Mégsem - - - - Talking - Conference - Konferenciahívás - - - - Add a Contact - Partner hozzáadása - - - - QtPresenceMenuManager - - - Online - Elérhető - - - - Invisible - Láthatatlan - - - - Away - Távol - - - - Do Not Disturb - Ne zavarj - - - - Log off - Kijelentkezés - - - - QtPrivacySettings - - - Privacy - Titoktartás - - - - Privacy Settings - Magánszféra beállításai - - - - QtProfileBar - - - Click here to change your status - Állapot megváltoztatása - - - - - active - aktív - - - - voicemail - hangposta - - - - inactive - inaktív - - - - unauthorized - nem hitelesített - - - - Set global presence to: - Jelenlét mindenütt: - - - - Voice mail - Hangposta - - - - QtProfileDetails - - - Advanced >> - Haladó >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Nem lehet partnert felvenni csoport nélkül, kérem adjon meg egy csoportot - - - - << Simple - << Egyszerű - - - - Select your avatar - Avatár kiválasztása - - - - @product@ - No Group Selected - @product@ - Nincs csoport kiválasztva - - - - @company@ Avatars - @company@ Avatars - - - - QtRenameGroup - - - Bad group name - Hibás csoport név - - - - Group name cannot be empty - A csoport neve nem lehet üres - - - - QtSecuritySettings - - - Security - Titkosítás - - - - Security Settings - Biztonsági beállítások - - - - BETA - BÉTA - - - - QtSms - - - Please fill in a phone number. - Adjon meg egy telefonszámot - - - - Do you want to continue? - Folytatja? - - - - Your SMS has not been sent - Sikertelen SMS küldés - - - - Your SMS has been sent - Sikeres SMS küldés - - - - Your message is too long. -This will send - Az üzenet túl hosszú. -Ezért - - - - SMS. - - SMS fog kiküldésre kerülni. - - - - - You can not send an empty message. - Nem lehet üres üzenetet küldeni. - - - - - - - @company@ SMS service - @company@ SMS szolgáltatás - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Sikertelen frissítés - - - - @product@ update failed to start: try to update @product@ manually - @product@ frissítése nem sikerült: próbálja meg manuálisan - - - - QtStatusBar - - - - Not connected - Nincs kapcsolódva - - - - Register done - Regisztráció megtörtént - - - - Unregister done - Regisztráció törlése megtörtént - - - - Connecting - Kapcsolódás - - - - Output volume is muted - A kimeneti hangerő elnémítva - - - - Output volume is 0 - A kimeneti hangerő 0 - - - - Click to adjust output volume - Kimeneti hangerő állításához kattintson - - - - Input volume is muted - Bemeneti hangerő elnémítva - - - - Input volume is 0 - Bemeneti hangerő 0 - - - - Click to adjust input volume - Bemeneti hangerő állításához kattintson - - - - An error occured: Server error. - Hiba történt: Kiszolgáló hiba. - - - - An error occured: Timeout. - Hiba történt: Időtúllépés. - - - - An error occured: Authentication error. - Hiba történt: Azonosítás sikertelen. - - - - QtSystray - - - Status - Státusz - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - SIP hívása - - - - Call land line - Vezetékes telefonszám hívása - - - - Call Mobile - Mobil hivása - - - - Call @company@ - @company@ hívása - - - - Call - Hívás - - - - Send SMS - SMS küldése - - - - Online - Elérhető - - - - Invisible - Láthatatlan - - - - Away - Távol - - - - Do Not Disturb - Ne zavarj - - - - Internet Connection Error - Internet kapcsolati hiba - - - - Offline - Nem elérhető - - - - Connecting... - Kapcsolódás... - - - - Send a SMS - SMS küldése - - - - Start a chat - Chat indítása - - - - Place Call - Híváskezdeményezés - - - - Send File - Fájl küldése - - - - Multiple Status - Több állapot - - - - Unknown Status - Ismeretlen állapot - - - - Quit @product@ - Kilépés - - - - QtToolBar - - - &Cancel - &Mégsem - - - - @product@ - Proceed Conference - @product@ - Konferencia - - - - Edit My Profile - Saját profil szerkesztése - - - - Add a Contact - Partner hozzáadása - - - - Hide Unavailable Contacts - Kilépett partnerek elrejtése - - - - Show Unavailable Contacts - Kilépett partnerek mutatása - - - - Hide Groups - Csoportok elrejtése - - - - Show Groups - Csoportok mutatása - - - - You have unfinished call(s). - Még van(nak) folyamatban lévő hívás(ok). - - - - Are you sure you want to log off? - Biztos, hogy ki akar jelentkezni? - - - - &Log Off - &Kijelentkezés - - - - Disable &Video Calls - &Video hívások tiltása - - - - Enable &Video Calls - &Videó bekapcsolása - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Nem kezdeményezhető konferenciahívás, amíg más hívások</b><br><br> -<b>vannak folyamatban.</b> - - - - @product@ - Warning - @product@ - Figyelmeztetés - - - - - Log &Off... - Kijelentkezés - - - - Log &On... - Bejelentkezés... - - - - QtTreeViewDelegate - - - Contacts list - Partnerlista - - - - QtUserProfile - - - Edit Contact - Partner szerkesztése - - - - - &Authorize - &Hozzáférés - - - - - &Block - &Blokkolás - - - - Network error. - Hálózati hiba. - - - - - @product@ - Authorization Request - @product@ - Hitelesítés szükséges - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Probléma történt a profil betöltések közben. -A legutolsó mentett profil kerül betöltésre: -a legutóbbi módosítások elvesztek - - - - Your profile could not be loaded. -Choose another profile or create a new one. - A profilt nem sikerült betölteni. -Válasszon másik profilt vagy hozzon létre egy újat. - - - - Wrong email/password entered - Rossz elektronikus levelezési cím/jelszót adott meg - - - - Wrong login/password entered - Rossz felhasználónevet/jelszót adott meg - - - - Connection error - Kapcsolódási hiba - - - - Unexpected error (code: %1 - Váratlan hiba (kód: %1 - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Videó - - - - - Normal - Normál - - - - - Good - - - - - - Very good - Nagyon jó - - - - - Excellent - Kiváló - - - - Video Settings - Videó beállítások - - - - QtVoicemailSettings - - - Voicemail - Hangposta - - - - Voicemail Settings - Hangposta beállítások - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Telefonkönyv - - - - QtWengoConfigDialog - - - Advanced - Szakértői - - - - General - Általános - - - - Accounts - Fiókok - - - - Audio - Audió - - - - Call Forward - Hívástovábbítás - - - - Language - Nyelv - - - - Privacy - Titoktartás - - - - Video - Videó - - - - Voicemail - Hangposta - - - - security - titkosítás - - - - Notifications - Figyelmeztetések - - - - QtWengoPhone - - - &Cancel - &Mégsem - - - - - - - Conference - Konferencia - - - - Call - Hívás - - - - Account - - - - - Add a Contact - Partner hozzáadása - - - - You have unfinished call(s). - Még van(nak) folyamatban lévő hívás(ok). - - - - @product@ - Warning - @product@ - Figyelmeztetés - - - - - Home - Otthon - - - - Are you sure you want to exit the application? - Biztosan ki akar lépni? - - - - &Exit - &Kilépés - - - - @product@ - Call Error - @product@ - Hívási hiba - - - - Please hold all the phone calls before placing a new one - Újabb hívás előtt tegye várakozó állapotba a már megkezdetteket - - - - Can't place a call, you are not connected - Nem kezdeményezhet hívást, nincs kapcsolódva - - - - You must enter a phone number - Meg kell adnia egy telefonszámot - - - - An error has occured trying to place the call - Hiba történt hívás kezdeményezésekor - - - - RenameGroupDialog - - - Cancel - Mégsem - - - - OK - OK - - - - Enter the new group name: - Új csoport neve: - - - - @product@ - Rename Contact Group - @product@ - Partner csoport átnevezése - - - - SecuritySettings - - - Form - Formula - - - - Enable call encryption - Hívástitkosítás bekapcsolása - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ titkosítani tudja a hívásokat AES 128-bites titkosítással és a kulcsok váltáshoz Diffie-Hellman használ - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - Megjegyzés: Parnereinek engedélyezni kell ezt a beállítást a hívás titkosításához. A hívás titkosságáról meggyőződhet ha a @product@ ablakában megjelenik egy "lakat" ikon a hívás ideje alatt. - - - - SimpleIMContactManager - - - - - - - Update your profile - Profil módosítása - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - példa: felhasznalo@kiszolgalo - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Küldés - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Telefonszám megadása - - - - 0 /160 - 0 / 160 - - - - Enter your signature here - Adja meg az aláírását - - - - Signature: - Aláírás: - - - - Phone number(s): - Telefonszám(ok): - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Adja meg a telefonszámo(ka)t <br>. Elválasztáshoz használja a & (és) ; (kettőspont) vagy , (vessző) jeleket - - - - SoftUpdateWindow - - - Cancel - Mégsem - - - - @product@ - Downloading update - @product@ - Frissítés letöltése - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - @product@ frissítés letöltése... - -Verzió: %1 -URL: %2 -Fájl méret: %3 (MB) -Sebesség: %4 (kB/s) - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formula - - - - VideoSettings - - - Normal - Normál - - - - Good - - - - - Very good - Nagyon jó - - - - Excellent - Kiváló - - - - Enable video - Videó bekapcsolása - - - - Webcam Selection - Webkamera kiválasztása - - - - Webcam device: - Webkamera: - - - - Webcam Preview - Webkamera előnézet - - - - Connection Type - Kapcsolat típusa - - - - Video quality - Videó minődésge - - - - Down (kbit/s) - Letöltési sebesség (kbit/s) - - - - Up (kbit/s) - Feltöltési sebesség (kbit/s) - - - - 0 to 512 - 0-512 - - - - 0 to 128 - 0-128 - - - - 512 to 2048 - 512-2048 - - - - 128 to 256 - 128-256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - A videó minősége függ az internet kapcsolat sebességétől - - - - Make a test video call - Videó teszthívás indítása - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Első alkalommal ajánlott a normál videó minőséget választania ,ezután kipróbálhajta a különböző módokat hogy megtalálja önnek megfelelőt .</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Ugrás <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> az ön internet kapcsolat sebességének megállapításához.</p></body></html> - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Videó - - - - VoicemailSettings - - - Form - Formula - - - - Phone number of your voicemail: - Hangposta telefonszáma: - - - - Please fill in here the information about your voicemail - Adja meg a hangpostájának adatait - - - - WengoConfigDialog - - - Cancel - Mégsem - - - - Save - Mentés - - - - Title - Cím - - - - @product@ - Configuration - @product@ - Beállítás - - - - WengoPhoneWindow - - - &Accept - Elfog&adás - - - - &Hidden - &Rejtett - - - - &Tools - &Eszközök - - - - &Help - &Segítség - - - - &Actions - &Műveletek - - - - @company@ - @company@ - - - - &Close - &Bezárás - - - - Dialpad - Tárcsázó - - - - @product@ - @product@ - - - - Start Conference - Konferenciahívás indítása - - - - Send SMS - SMS küldése - - - - Contacts - Partnerek - - - - History - Előzmények - - - - Clear &History - &Előzmények törlése - - - - ToolBar - Eszköztár - - - - Show/Hide Unavailable &Contacts - Nem elérhető kapcsolatok megjelentítése/elrejtése - - - - &Chat Sessions - &Chat kapcsolatok - - - - &All - &Mind - - - - &HangUp - &Megszakítás - - - - &Hold/Resume - &Tartás/visszavétel - - - - Show/Hide &Groups - &Csoportok megjelenítése/elrejtése - - - - &Outgoing Calls - &Kimenő hívások - - - - &Incoming Calls - &Bejövő hívások - - - - &Missed Calls - &Nem fogadott hívások - - - - Enable/Disable &Video Calls - &Videó hívások be/kikapcsolása - - - - Short Text &Messages (SMS) - S&MS - - - - Rejected Calls - Hívás visszautasítása - - - - &Contacts - &Partnerek - - - - &About... - &Névjegy - - - - Add &Contact... - &Partner hozzáadása - - - - &Configuration... - &Beállítások - - - - Send SMS... - SMS küldése - - - - View My &Profile... - &Saját adatlap szerkesztése - - - - - View My Profile - &Saját adatlap szerkesztése - - - - Start &Conference... - &Konferenciahívás - - - - &Find Contact... - &Partnerek keresése - - - - Log &Off... - Kilépés - - - - - Log Off - Kijelentkezés - - - - Show &Chat Window - &Chat ablak megjelenítése - - - - - Show Chat Window - Chat ablak megjelenítése - - - - Show &File Transfer - &Fájlátvitel mutatása - - - - Add Contact - Partner hozzáadása - - - - View My @company@ Account... - @company@ fiókom megtekintése... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@ &Fórum... - - - - @company@ &Wiki/FAQ... - @company@ &Wiki/GyIK... - - - - Learn more about @company@ Services... - További információ a @company@ szolgáltatásairól... - - - - Search - Keresés - - - - Find @company@ Contacts - @company@ partnerek keresése - - - - &Quit - &Kilépés - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Szövegek az ikonok alatt - - - - &Icons Only - &Csak ikonok - - - - Add - Hozzáadás - - - - SMS - SMS - - - - Conference - Konferencia - - - - Wizard - - - Cancel - Mégsem - - - - Finish - Kész - - - - Next > - Következő > - - - - < Back - < Vissza - - - - Simple Wizard - Step %1 of %2 - Egyszerű varázsló - %1. lépés a %2-ből - - - - YahooSettings - - - Login: - Bejelentkezés: - - - - Password: - Jelszó: - - - - Yahoo! Settings - Yahoo! beállítások - - - - Use Yahoo! Japan server - Yahoo! Japán kiszolgáló használata - - - - Forgot your Yahoo! password? - Elfelejtette a Yahoo! jelszavát? - - - - Get a new Yahoo! Account - Új Yahoo! fiók létrehozása - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_it.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_it.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_it.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_it.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4765 +0,0 @@ - - - - - AIMSettings - - - Login: - Nome utente: - - - - Forgot your AIM password? - Hai dimenticato la password AIM? - - - - Get a new AIM Account - Ottieni un nuovo account AIM - - - - Password: - Password: - - - - AIM Settings - Impostazioni AIM - - - - AboutWindow - - - About - Informazioni su - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autori - - - - Close - Chiudi - - - - 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. - Questo programma è software libero; puoi redistribuirlo e/o -modificarlo secondo i termini della GNU General Public License -come pubblicata dalla Free Software Foundation; sia la versione 2 -della licenza, o (a tua scelta) qualunque versione successiva. - - - - @product@ - About - @product@ - Informazioni su - - - - @product@, a voice over Internet phone - @product@, un programma di telefonia via Internet - - - - AcceptDialog - - - File Transfer - Trasferimento file - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Accetta - - - - &Cancel - A&nnulla - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contatto: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome file: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>File in entrata</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Modifica il mio profilo - - - - AddAccount - - - Configure your account: - Configurazione del proprio account: - - - - &Next - A&vanti - - - - Need help? - Hai bisogno di aiuto? - - - - You don't have any account ? Click here - Non hai ancora un account? Fai clic qui - - - - &Back - &Indietro - - - - Cancel - Annulla - - - - @product@ - Login - @product@ - Accesso - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configura il tuo account voip</span><br><br><span>Specifica se il tuo account è fornito<br/>da @company@ o da un altro servizio</span> - - - - @company@ account - Account @company@ - - - - Generic SIP account - Account generico SIP - - - - AddIMContact - - - Cancel - Annulla - - - - Contact Type (protocol): - Tipo di contatto (protocollo): - - - - Contact ID: - ID contatto: - - - - Account: - Account: - - - - Enable - Abilita - - - - Login - Accedi - - - - Add - Aggiungi - - - - @product@ - Add a Contact Account - @product@ - Aggiungi un contatto - - - - AddSIPAccount - - - Password: - Password: - - - - Need help? - Hai bisogno di aiuto? - - - - &Back - &Indietro - - - - Cancel - Annulla - - - - @product@ - Login - @product@ - Accesso - - - - &Connect - &Connetti - - - - Activate presence and chat (SIP/SIMPLE) - Attiva notifica di presenza e chat (SIP/SIMPLE) - - - - Displayname: - Nome visualizzato - - - - login / username: - ID / nome utente: - - - - Account name: - Nome account: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - Dominio SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configurazione profilo SIP</span><br><br><span>Inserire tutte le informazioni<br/>necessarie al programma per la connessione<br/>al proprio account SIP</span> - - - - Advanced - Avanzate - - - - AddWengoAccount - - - Password: - Password: - - - - Need help? - Hai bisogno di aiuto? - - - - &Back - &Indietro - - - - Cancel - Annulla - - - - @product@ - Login - @product@ - Accesso - - - - &Connect - &Connetti - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Login</span><br><br><span>Indicare il proprio indirizzo di posta elettronica<br>e la password</span> - - - - Email Address: - Indirizzo di posta elettronica: - - - - Click here if you don't have a @company@ account - Fai clic qui se non hai un account @company@ - - - - Forgot your @company@ password? - Hai dimenticato la password di @company@? - - - - AdvancedConfigWindow - - - Close - Chiudi - - - - Preference Name - Nome opzione - - - - Type - Tipo - - - - Value - Valore - - - - Default Value - Valore predefinito - - - - Save - Salva - - - - Status - Stato - - - - @product@ - Advanced Configuration - @product@ - Configurazione avanzata - - - - AdvancedSettings - - - Add - Aggiungi - - - - Advanced Settings - Impostazioni avanzate - - - - Advanced Configuration Window - Finestra di configurazione avanzata - - - - Automatically answer incoming calls from - Rispondi automaticamente alle chiamate da parte di - - - - Remove - Rimuovi - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Attenzione, questa sezione è riservata a utenti avanzati.<br>Ogni errore potrebbe compromettere seriamente il programma. - - - - AppearanceSettings - - - Toolbar - Barra degli strumenti - - - - &Icons && Text - &Icone e testo - - - - Icons &Only - S&olo icone - - - - &Hidden - &Nascosto - - - - Chat Theme - Tema chat - - - - Form - Modulo - - - - AudioSettings - - - Reset - Reimposta - - - - Audio Codecs - Codificatori audio - - - - &Input device: - D&ispositivo d'ingresso: - - - - &Output device: - Disp&ositivo di uscita: - - - - &Ringing device: - Segnalazione chiamata ent&rante (squillo): - - - - &Make a test call - Effettua una chia&mata di prova - - - - - Test - Prova - - - - &Advanced >> - &Avanzate >> - - - - &Half Duplex - &Half Duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Modulo - - - - AvatarWidget - - - Form - Modulo - - - - BrowserSoftUpdateWindow - - - Close - Chiudi - - - - @product@ - Update available - @product@ - Aggiornamento disponibile - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3°: - - - - 1st: - 1°: - - - - 2nd: - 2°: - - - - - - (+ country code) phone number - (+ prefisso indicativo del paese) numero di telefono - - - - Forward all unanswered calls to message box - Trasferisci tutte le chiamate alla segreteria telefonica - - - - Disable call forwarding - Disabilita trasferimento di chiamata - - - - Forward all unanswered calls to following phone numbers: - Trasferisci tutte le chiamate senza risposta ai seguenti numeri di telefono: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Per esempio +3906XXXX (+39 è il prefisso indicativo del paese e 06XXXX il numero di telefono) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Il trasferimento di chiamata è attivo se non sei connesso a @company@, quando la linea è occupata o dopo 20 secondi in caso di mancata risposta. Puoi configurare fino a tre trasferimenti di chiamata verso rete fissa, cellulari o segreteria telefonica (se disponibile) - - - - CallToaster - - - Incoming Call - Chiamata in entrata - - - - Message - Messaggio - - - - ChatLogViewer - - - Chat History - Cronologia chat - - - - &Contact - &Contatto - - - - &Tools - S&trumenti - - - - &Help - &Aiuto - - - - &Actions - &Azioni - - - - Main Toolbar - Barra degli strumenti principale - - - - - - Call Contact - Chiama contatto - - - - - - Send a File - Invia un file - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Mostra informazioni sul contatto - - - - blockContact - blockContact - - - - &Save History As... - &Salva Cronologia come... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contatto - - - - &Tools - S&trumenti - - - - &Actions - &Azioni - - - - Main Toolbar - Barra degli strumenti principale - - - - - - Call Contact - Chiama contatto - - - - - - Send a File - Invia un file - - - - - - Show Contact Info - Mostra informazioni sul contatto - - - - blockContact - blockContact - - - - &Save History As... - &Salva Cronologia come... - - - - @company@ - @company@ - - - - MainWindow - MainWindow - - - - &Edit - &Modifica - - - - Cu&t - &Taglia - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copia - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Incolla - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Avvia conferenza - - - - &Close - &Chiudi - - - - Conference - Conferenza - - - - ChatRoomInviteWidget - - - Chat room - Stanza di chat - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Stanza di chat</span></p></body></html> - - - - (Conference participants) - (Partecipanti alla conferenza) - - - - &Remove - &Rimuovi - - - - &Start - A&vvia - - - - Group Name - Nome gruppo - - - - &Add - A&ggiungi - - - - ChatToaster - - - Message - Messaggio - - - - Incoming Chat - Chat in entrata - - - - ChatWidget - - - Form - Modulo - - - - ConferenceCallWidget - - - Cancel - Annulla - - - - Start - Avvia - - - - Phone number 2: - Numero di telefono 2: - - - - Phone number 1: - Numero di telefono 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Crea una conferenza - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferenza</span><br /><br />Inserisci due numeri di telefono </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">o ID di contatti @company@ per</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">creare una conferenza a tre.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferenza</span><br /><br />Inserisci due numeri di telefono </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">o ID di contatti @company@ per</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">creare una conferenza a tre.</p> - - - - &Add >> - &Aggiungi >> - - - - << &Remove - << &Rimuovi - - - - Available Contacts - Contatti disponibili - - - - &Start - A&vvia - - - - Cancel - Annulla - - - - ContactGroupPopupMenu - - - Remove Contact Group - Rimuovi gruppo contatti - - - - Rename Contact Group - Rinomina gruppo contatti - - - - Delete group - Elimina gruppo - - - - Do you really want to delete this group? - Vuoi davvero eliminare questo gruppo? - - - - &Yes - &Sì - - - - &No - &No - - - - ContactList - - - Contact List - Lista contatti - - - - ContactWidget - - - No mobile phone number set - Nessun numero di cellulare impostato - - - - No landline phone number set - Nessun numero di telefono fisso impostato - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic qui per modificare questo contatto</p></body></html> - - - - CrashReport - - - Cancel - Annulla - - - - Program Failure - Errore del programma - - - - Send - Invia - - - - Optional Information - Informazioni aggiuntive - - - - Your Mail: - Il tuo indirizzo di posta: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Non disponibile - - - - Click here to change your call forward settings - Fai clic per cambiare le impostazioni di trasferimento di chiamata - - - - Call forward mode: - Modalità del trasferimento di chiamata: - - - - Purchase call out credits - Acquista credito - - - - Call Forward Method - Modalità di trasferimento di chiamata - - - - Call Voice Mail - Chiama casella vocale - - - - Click here to buy @company@'s credits - Fai clic qui per acquistare credito @company@ - - - - DesktopService - - - Root Folder - Cartella principale - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Fai clic sui diversi elementi che cambiano colore per inviare suoni agli interlocutori. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Fai clic qui per chiamare la tua segreteria telefonica - - - - New Voice Mail: - Nuovo messaggio vocale: - - - - Click here to see missed call(s) - Fai clic qui per visualizzare le chiamate perse - - - - Missed Call(s): - Chiamate perse: - - - - FileTransferDialog - - - ... - ... - - - - Download - Ricevuti - - - - Upload - Inviati - - - - Click here to change your download folder - Fai clic per cambiare la cartella di destinazione dei file scaricati - - - - Download folder: - Cartella di destinazione: - - - - Clean all items in the list - Cancella tutti gli elementi della lista - - - - &Clean - &Pulisci - - - - @product@ - File Transfer Manager - @product@ - Gestore trasferimenti file - - - - FileTransferItem - - - Cancel - Annulla - - - - Form - Modulo - - - - Pause - Pausa - - - - <i>From:</i> - <i>Da:</i> - - - - GeneralSettings - - - When I double-click on a contact - Al doppio clic su un contatto - - - - Call cell phone or land line if contact not online - Chiama cellulare o fisso se il contatto non è in linea - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Inattività - - - - minutes - minuti - - - - Show me as "Away" when I am inactive for: - Mostrami come "Assente" quando sono inattivo per: - - - - When I start my computer - All'avvio del computer - - - - Automatically start @product@ - Avvia automaticamente @product@ - - - - GoogleTalkSettings - - - Login: - Nome utente: - - - - Password: - Password: - - - - GoogleTalk Settings - Impostazioni GoogleTalk - - - - Forgot your GoogleTalk password? - Hai dimenticato la password GoogleTalk? - - - - Get a new GoogleTalk Account - Ottieni un nuovo account GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Annulla - - - - HTTP Proxy Address: - Indirizzo proxy HTTP: - - - - HTTP Proxy Port Number: - Numero porta proxy HTTP: - - - - HTTP Proxy Login: - Nome utente proxy HTTP: - - - - HTTP Proxy Password: - Password proxy HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autenticazione proxy HTTP</span><br><br><span>Il proxy locale HTTP utilizza l'autenticazione<br>Inserire nome utente e password</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Proxy HTTP locale - - - - ICQSettings - - - Login: - Nome utente: - - - - Password: - Password: - - - - ICQ Settings - Impostazioni ICQ - - - - Forgot your ICQ password? - Hai dimenticato la password ICQ? - - - - Get a new ICQ Account - Ottieni un nuovo account ICQ - - - - IMAccountManager - - - Close - Chiudi - - - - Login - Accedi - - - - Add - Aggiungi - - - - Delete - Elimina - - - - Modify - Modifica - - - - Protocol - Protocollo - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - I miei account di messaggistica istantanea (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Annulla - - - - Save - Salva - - - - IM Account Settings - Impostazioni account IM - - - - IMContactManager - - - Add - Aggiungi - - - - Delete - Elimina - - - - Contact Type (protocol) - Tipo di contatto (protocollo) - - - - Click on the add button below to add a new ID - Fai clic sul pulsante seguente per aggiungere un nuovo ID - - - - Contact ID - ID contatto - - - - IMProfileWidget - - - - Enter your nickname here - Inserisci qui il tuo nickname - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Aggiungi un account di messaggistica istantanea (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Aggiungi un account IM - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic per cambiare il tuo avatar</p></body></html> - - - - ImageSelector - - - Cancel - Annulla - - - - OK - OK - - - - Go Up - Vai su - - - - Refresh - Aggiorna - - - - JabberSettings - - - Login: - Nome utente: - - - - Password: - Password: - - - - Jabber Settings - Impostazioni Jabber - - - - Connect Server: - Collegati al server: - - - - <u>Advanced Options</u> - <u>Opzioni avanzate</u> - - - - Require TLS - Richiedi TLS - - - - Port: - Porta: - - - - Use TLS if available - Utilizza TLS se disponibile - - - - Allow plaintext authentication over unencrypted streams - Permetti autenticazione con testo in chiaro su flussi non cifrati - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forza vecchio SSL (porta 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - La tua lingua non è presente; sapevi che puoi aggiungere la tua traduzione su Launchpad? - - - - More information here. - Ulteriori informazioni qui. - - - - LogAccount - - - Password: - Password: - - - - Need help? - Hai bisogno di aiuto? - - - - Cancel - Annulla - - - - Delete - Elimina - - - - @product@ - Login - @product@ - Accesso - - - - Account: - Account: - - - - &Connect - &Connetti - - - - Forgot your @company@ password? - Hai dimenticato la password di @company@? - - - - &Modify - &Modifica - - - - Configure a &New Profile - Configura un &nuovo profilo - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Accesso</span><br><br><span>Scegli un profilo precedentemente utilizzato<br/> o inserisci le informazioni per connetterti a un<br/> account @company@</span> - - - - MSNSettings - - - Login: - Nome utente: - - - - Password: - Password: - - - - MSN Settings - Impostazioni MSN - - - - Forgot your MSN password? - Hai dimenticato la password MSN? - - - - Get a new MSN Account - Ottieni un nuovo account MSN - - - - Use HTTP method - Usa metodo HTTP - - - - MainWindow - - - MainWindow - MainWindow - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Accetta chiamata - - - - Send Chat Message - Invia messaggio di testo - - - - Make Call - Effettua una chiamata - - - - Hang Up - Riaggancia - - - - ManageBlockedUsersSettings - - - Close - Chiudi - - - - Unblock User - Sblocca utente - - - - Manage blocked users - Gestisci utenti bloccati - - - - @product@ - Manage blocked users - @product@ - Gestione utenti bloccati - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Ho un account @company@ - - - - Create a @company@ account - Crea un account @company@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Per inviare un SMS, è necessario essersi autenticati con un<br>account @company@ e avere del credito @company@. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Selezionare l'evento da associare al suono da riprodurre - - - - NotificationSettingsItem - - - Sound file - File sonoro - - - - Find a sound file - Trova un file sonoro - - - - Play sound file - Riproduci file sonoro - - - - Play - Riproduci - - - - NotifyDialog - - - File Transfer - Trasferimento file - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stato:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aggiorna</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Accetta - - - - Status - Stato - - - - 00:00:00 - 00:00:00 - - - - Nickname - Nickname - - - - &Reject - &Rifiuta - - - - Dialpad - Tastierino numerico - - - - Audio Smileys - Smile audio - - - - - Communication is encrypted - La comunicazione è cifrata - - - - PrivacySettings - - - Manage blocked users - Gestisci utenti bloccati - - - - Privacy Rules - Regole di riservatezza - - - - Always sign in as "Invisible" (appear offline to all users) - Accedi sempre come "Invisibile" (apparirò a tutti gli utenti come "non in linea") - - - - Allow chats from - Permetti messaggi di testo da - - - - - Anyone - Chiunque - - - - - Only people from my contact list - Solo persone della mia lista contatti - - - - Allow calls from - Permetti chiamate da - - - - When I sign into @company@ - Quando accedo a @company@ - - - - ProfileDetails - - - Cancel - Annulla - - - - Save - Salva - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Fai clic per cambiare il tuo avatar</p></body></html> - - - - General - Generale - - - - Network IDs (MSN, Jabber...) - ID di rete (MSN, Jabber...) - - - - Advanced >> - Avanzate >> - - - - Fill in all your network Id to stay connected with your contacts - Inserire tutti gli ID di rete per rimanere connesso con i propri contatti - - - - Contact - Contatto - - - - Group: - Gruppo: - - - - Last Name: - Cognome: - - - - First Name: - Nome: - - - - Details - Dettagli - - - - Web/blog: - Web/blog: - - - - Country: - Nazione: - - - - State: - Regione: - - - - City: - Città: - - - - Gender: - Sesso: - - - - Birth Date: - Data di nascita: - - - - Email: - Indirizzo di posta elettronica: - - - - Notes - Note - - - - Phone Numbers - Numeri di telefono - - - - Home phone - Telefono di casa - - - - Mobile phone - Cellulare - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Sconosciuto - - - - Male - Maschio - - - - Female - Femmina - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Account - - - - Accounts Settings - Impostazioni account - - - - QtAddAccount - - - Configure your voip account - Configura il tuo account voip - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Specifica se il tuo account è fornito<br/>da @company@ o da un altro servizio - - - - QtAddAccountUtils - - - Test - Prova - - - - Audio Test Call - Chiamata audio di prova - - - - Video Test Call - Chiamata video di prova - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Inserire tutte le informazioni necessarie<br/> al programma per la connessione<br/>al proprio account SIP - - - - Configure your SIP profile - Configura il tuo account SIP - - - - QtAddWengoAccount - - - Login - Accedi - - - - Please enter an email address. - Inserire un indirizzo di posta elettronica. - - - - Please enter your email address<br/>and your password - Inserisci il tuo indirizzo di posta elettronica<br/> e la password - - - - @product@ - Connexion - @product@ - Connessione - - - - QtAdvancedIMContactManager - - - Cancel - Annulla - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Sei sicuro di voler eliminare questo account IM? - - - - - &Delete - &Elimina - - - - QtAdvancedSettings - - - Advanced - Avanzate - - - - Advanced Settings - Impostazioni avanzate - - - - QtAppearanceSettings - - - - Me - Me - - - - Hello - Ciao - - - - How are you? - Come stai? - - - - - - Other - Altro - - - - I am fine - Sto bene - - - - Have to go - Devo andare - - - - Bye - Arrivederci - - - - Appearance - Aspetto - - - - Appearance Settings - Impostazioni aspetto - - - - QtAudioSettings - - - - Advanced - Avanzate - - - - Audio - Audio - - - - Audio Settings - Impostazioni audio - - - - QtCallBar - - - +(country code) number or nickname - (+ prefisso indicativo del paese) numero o nickname - - - - QtCallForwardSettings - - - - Call Forward - Trasferimento di chiamata - - - - Call Forward Settings - Impostazioni trasferimento di chiamata - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Salva come - - - - QtChatLogViewer - - - Edit Contact - Modifica contatto - - - - QtChatTabWidget - - - Close chat - Chiudi chat - - - - QtChatWidget - - - %1 is connected. - %1 è connesso. - - - - %1 is disconnected. - %1 è disconnesso. - - - - send - invia - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Il tuo file non può essere inviato: il contatto deve essere connesso alla rete @company@. - - - - Your contact wishes to send a file with @company@. - Il contatto desidera inviarti un file con @company@. - - - - Go to %1 to install it - Vai a %1 per installarlo - - - - %1 has joined the chat - %1 è entrato nella chat - - - - %1 has left the chat - %1 ha lasciato la chat - - - - QtChatWindow - - - Edit Contact - Modifica contatto - - - - @product@ Chat - @product@ Chat - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Chiama indirizzo SIP - - - - Call land line - Chiama telefono fisso - - - - Call Mobile - Chiama cellulare - - - - Call @company@ - Chiama @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Ora è possibile informare il primo interlocutore che sta per entrare a far parte di una conferenza.</b><br><br>Successivamente, fai clic sul pulsante sottostante. Il primo interlocutore verrà messo in attesa, mentre il secondo verrà chiamato.<br> - - - - Hold first interlocutor and call second one - Metti in attesa il primo interlocutore e chiama il secondo - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>È possibile informare il secondo interlocutore che sta per entrare a far parte di una conferenza.</b><br><br>Fatto ciò, fai clic sul pulsante sottostante per iniziare la conferenza. - - - - Start Conference - Inizia conferenza - - - - - @product@ - Proceed Conference - @product@ - Avvia conferenza - - - - QtContactList - - - &Yes - &Sì - - - - &No - &No - - - - Merge %1 with %2? - Fondere %1 con %2? - - - - @product@ - Merge Contacts - WengoPhone - Fusione di contatti - - - - QtContactManager - - - &Yes - &Sì - - - - &No - &No - - - - Home phone - Telefono di casa - - - - Mobile phone - Cellulare - - - - @product@ - @product@ - - - - Edit Contact - Modifica contatto - - - - Do you really want to delete this contact? - Eliminare definitivamente questo contatto? - - - - Start chat - Avvia chat - - - - - Delete contact - Elimina contatto - - - - Call - Chiama - - - - Free call - - - - - Work phone - Telefono ufficio - - - - Send SMS - Invia SMS - - - - Edit contact - Modifica contatto - - - - Block contact - Blocca contatto - - - - Invite to conference - Invita alla conferenza - - - - Go to website - Vai al sito - - - - Send file - Invia file - - - - Forward to mobile phone - Inoltra a cellulare - - - - QtContactWidget - - - No mobile phone number set - Nessun numero di cellulare impostato - - - - No landline phone number set - Nessun numero di telefono fisso impostato - - - - - Click here to call - Fai clic qui per chiamare - - - - - Click here to set a phone number - Fai clic qui per impostare un numero di telefono - - - - Click here to edit the contact - Fai clic qui per modificare il contatto - - - - Click here to send a SMS - Fare clic qui per inviare un SMS - - - - Click here to start a chat - Fai clic qui per avviare una chat - - - - Click here to start a free call - Fai clic qui per iniziare una chiamata gratuita - - - - Click here to send a file - Fai clic qui per inviare un file - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Vuoi chiamare la tua segreteria telefonica? - - - - @product@ - Voice Mail - @product@ - Segreteria telefonica - - - - QtFileTransfer - - - &Yes - &Sì - - - - &No - &No - - - - Choose a directory - Scegliere una cartella - - - - Overwrite File? - Sovrascrivere il file? - - - - A file called %1 already exists.Do you want to overwrite it? - Un file chiamato %1 esiste già. Vuoi sovrascriverlo? - - - - - File size error - Errore nella dimensione del file - - - - %1 exceeds the maximum authorized size. - %1 eccede la dimensione massima consentita. - - - - %1 has size 0. - %1 ha dimensione nulla. - - - - %1 is a directory. - %1 è una cartella. - - - - You can not send a directory. - Impossibile inviare una cartella. - - - - %1 is a shortcut. - %1 è un collegamento. - - - - You can not send a shortcut. - Impossibile inviare un collegamento. - - - - All Files (*.* *) - Tutti i file (*.* *) - - - - Please upgrade<br> your @product@ - Aggiorna<br> il tuo @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Suggerisci al tuo contatto<br> ad aggiornare<br> il suo @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Il file non può essere ricevuto: devi aggiornare il tuo @product@ per riceverlo. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - sta cercando di inviarti un file, ma il suo @product@ deve essere aggiornato per riceverlo. Digli di scaricare l'ultima versione. - - - - QtFileTransferItem - - - - - Cancel - Annulla - - - - Remove - Rimuovi - - - - - Pause - Pausa - - - - Starting - Avvio - - - - From: - Da: - - - - To: - A: - - - - Open - Apri - - - - Resume - Ripristina - - - - Waiting for anwser... - In attesa di risposta... - - - - Done - Fatto - - - - Failed - Non riuscito - - - - Paused - In pausa - - - - Paused by peer - Sospeso dalla rete - - - - Cancelled - Annullato - - - - Cancelled by peer - Annullato dalla rete - - - - - Downloading... - Scaricamento in corso... - - - - Uploading... - Invio in corso... - - - - Waiting for peer... - In attesa dell'interlocutore... - - - - An error occured during the file transfer - Si è verificato un errore durante il trasferimento file - - - - This may be caused by : - Potrebbe essere causato da: - - - - Your @product@ is not up to date. Please download the latest version on - Il tuo @product@ non è aggiornato. Scarica l'ultima versione - - - - The @company@ network may be temporarily unavailable. Please try later. - La rete @company@ potrebbe essere temporaneamente non disponibile. Prova più tardi. - - - - QtGeneralSettings - - - General - Generale - - - - General Settings - Impostazioni generali - - - - QtHistory - - - Incoming call - Chiamata in entrata - - - - Outgoing call - Chiamata in uscita - - - - Missed call - Chiamata persa - - - - Rejected call - Chiamata rifiutata - - - - Outgoing SMS - SMS in uscita - - - - Do you want to call %1? - Vuoi chiamare %1? - - - - Chat session - Sessione di chat - - - - @product@ - Call History - @product@ - Cronologia chiamate - - - - Type - Tipo - - - - Name/ID - Nome/ID - - - - Date - Data - - - - Duration - Durata - - - - QtHistoryWidget - - - Erase this entry - Elimina questo elemento - - - - Open in SMS window - Apri nella finestra SMS - - - - Call this peer - Chiama questa rete - - - - Show chat log - Mostra registro di chat - - - - QtIMAccountManager - - - Cancel - Annulla - - - - @product@ - @product@ - - - - &Delete - &Elimina - - - - Are sure you want to delete this account? - - Sei sicuro di voler eliminare questo account? - - - - - QtIMAccountMonitor - - - - - Disconnected - Disconnesso - - - - Error: %1 - Errore: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - In linea - - - - Invisible - Invisibile - - - - Away - Assente - - - - Do not disturb - Non disturbare - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Inserisci un nome utente - - - - QtIMAccountPresenceMenuManager - - - Cancel - Annulla - - - - @product@ - @product@ - - - - &Delete - &Elimina - - - - Online - In linea - - - - Invisible - Invisibile - - - - Away - Assente - - - - Do Not Disturb - Non disturbare - - - - Disconnect - Disconnetti - - - - Delete Account - Elimina account - - - - Are sure you want to delete the account <b>%1</b>? - Sei sicuro di voler eliminare l'account <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Modifica il mio profilo - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Lingua - - - - Language Settings - Impostazioni di lingua - - - - QtLogAccount - - - Invalid account - Account non valido - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Scegli un profilo precedentemente utilizzato<br/> o inserisci le informazioni per connetterti all'<br/>acccount @company@ - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Connessione - - - - QtNotificationSettings - - - Incoming call (ringtone) - Chiamata in entrata (suoneria) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Chiamata terminata (tono di riaggancio) - - - - Incoming chat - Messaggio di testo in entrata - - - - IM account connected - Account IM connesso - - - - IM account disconnected - Account IM disconnesso - - - - Contact online - Contatto in linea - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Scegli un file sonoro - - - - Sounds - Suoni - - - - QtPhoneCall - - - Status - Stato - - - - Incoming Call - Chiamata in entrata - - - - Resume - Ripristina - - - - Hang-up - Riaggancia - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Errore - - - - Talking - In conversazione - - - - Dialing - Composizione - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Sta squillando - - - - Redirected - Rediretta - - - - Initialization... - Inizializzazione... - - - - Closed - Chiuso - - - - - Hold - Sospendi - - - - Add contact - Aggiungi contatto - - - - Ca&ncel - A&nnulla - - - - Talking - Conference - In conversazione - Conferenza - - - - Add a Contact - Aggiungi un contatto - - - - QtPresenceMenuManager - - - Online - In linea - - - - Invisible - Invisibile - - - - Away - Assente - - - - Do Not Disturb - Non disturbare - - - - Log off - Disconnetti - - - - QtPrivacySettings - - - Privacy - Riservatezza - - - - Privacy Settings - Impostazioni sulla privacy - - - - QtProfileBar - - - Click here to change your status - Fai clic qui per cambiare il tuo stato - - - - - active - attivo - - - - voicemail - segreteria telefonica - - - - inactive - inattivo - - - - unauthorized - non autorizzato - - - - Set global presence to: - Imposta la presenza globale a: - - - - Voice mail - Segreteria telefonica - - - - QtProfileDetails - - - Advanced >> - Avanzate >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Un contatto deve avere un gruppo, impostane uno - - - - << Simple - << Semplice - - - - Select your avatar - Seleziona il tuo avatar - - - - @product@ - No Group Selected - @product@ - Nessun gruppo selezionato - - - - @company@ Avatars - Avatar di @company@ - - - - QtRenameGroup - - - Bad group name - Nome gruppo non valido - - - - Group name cannot be empty - Il nome del gruppo non può essere vuoto - - - - QtSecuritySettings - - - Security - Sicurezza - - - - Security Settings - Impostazioni di sicurezza - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Inserire un numero di telefono. - - - - Do you want to continue? - Vuoi continuare? - - - - Your SMS has not been sent - Il tuo SMS non è stato inviato - - - - Your SMS has been sent - Il tuo SMS è stato inviato - - - - Your message is too long. -This will send - Il messaggio è troppo lungo. -Saranno inviati - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Non puoi inviare un messaggio vuoto. - - - - - - - @company@ SMS service - Servizio SMS di @company@ - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Aggiornamento non riuscito - - - - @product@ update failed to start: try to update @product@ manually - L'aggiornamento di @product@ non è partito: prova ad aggiornare @product@ manualmente - - - - QtStatusBar - - - - Not connected - Non connesso - - - - Register done - Identificazione effettuata - - - - Unregister done - Disconnessione effettuata - - - - Connecting - Connessione in corso - - - - Output volume is muted - Il volume di uscita è silenziato - - - - Output volume is 0 - Il volume di uscita è 0 - - - - Click to adjust output volume - Fai clic per regolare il volume di uscita - - - - Input volume is muted - Il volume d'ingresso è silenziato - - - - Input volume is 0 - Il volume d'ingresso è 0 - - - - Click to adjust input volume - Fai clic per regolare il volume d'ingresso - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Stato - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Chiama indirizzo SIP - - - - Call land line - Chiama telefono fisso - - - - Call Mobile - Chiama cellulare - - - - Call @company@ - Chiama @company@ - - - - Call - Chiama - - - - Send SMS - Invia SMS - - - - Online - In linea - - - - Invisible - Invisibile - - - - Away - Assente - - - - Do Not Disturb - Non disturbare - - - - Internet Connection Error - Errore di connessione a Internet - - - - Offline - Non in linea - - - - Connecting... - Connessione in corso... - - - - Send a SMS - Invia un SMS - - - - Start a chat - Avvia una chat - - - - Place Call - Chiama - - - - Send File - Invia file - - - - Multiple Status - Stato multiplo - - - - Unknown Status - Stato sconosciuto - - - - Quit @product@ - Chiudi @product@ - - - - QtToolBar - - - &Cancel - A&nnulla - - - - @product@ - Proceed Conference - @product@ - Avvia conferenza - - - - Edit My Profile - Modifica il mio profilo - - - - Add a Contact - Aggiungi un contatto - - - - Hide Unavailable Contacts - Nascondi i contatti non disponibili - - - - Show Unavailable Contacts - Mostra contatti non disponibili - - - - Hide Groups - Nascondi gruppi - - - - Show Groups - Mostra gruppi - - - - You have unfinished call(s). - Ci sono chiamate non ancora terminate. - - - - Are you sure you want to log off? - Disconnettersi? - - - - &Log Off - &Disconnetti - - - - Disable &Video Calls - Disabilita le chiamate &video - - - - Enable &Video Calls - Abilita le chiamate &video - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>La conferenza non può essere avviata mentre ci sono telefonate attive.</b><br><br>Termina tutte le telefonate e riprova. - - - - @product@ - Warning - @product@ - Avviso - - - - - Log &Off... - Disc&onnetti... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Lista contatti - - - - QtUserProfile - - - Edit Contact - Modifica contatto - - - - - &Authorize - &Autorizza - - - - - &Block - &Blocca - - - - Network error. - Errore di rete. - - - - - @product@ - Authorization Request - @product@ - Richiesta di autorizzazione - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Si è verificato un problema durante il caricamento del tuo profilo. -È stato caricato l'ultimo profilo salvato: -potresti aver perso le ultime modifiche - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Il tuo profilo non può essere caricato. -Scegli un altro profilo o creane uno nuovo. - - - - Wrong email/password entered - Email/password inserita non valida - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normale - - - - - Good - Buona - - - - - Very good - Molto buona - - - - - Excellent - Eccellente - - - - Video Settings - Impostazioni video - - - - QtVoicemailSettings - - - Voicemail - Segreteria telefonica - - - - Voicemail Settings - Impostazioni segreteria telefonica - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Cartella - - - - QtWengoConfigDialog - - - Advanced - Avanzate - - - - General - Generale - - - - Accounts - Account - - - - Audio - Audio - - - - Call Forward - Trasferimento di chiamata - - - - Language - Lingua - - - - Privacy - Riservatezza - - - - Video - Video - - - - Voicemail - Segreteria telefonica - - - - security - sicurezza - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - A&nnulla - - - - - - - Conference - Conferenza - - - - Call - Chiama - - - - Account - - - - - Add a Contact - Aggiungi un contatto - - - - You have unfinished call(s). - Ci sono chiamate non ancora terminate. - - - - @product@ - Warning - @product@ - Avviso - - - - - Home - Casa - - - - Are you sure you want to exit the application? - Sei sicuro di voler chiudere l'applicazione? - - - - &Exit - &Esci - - - - @product@ - Call Error - @product@ - Errore di chiamata - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Annulla - - - - OK - OK - - - - Enter the new group name: - Inserisci il nuovo nome del gruppo: - - - - @product@ - Rename Contact Group - @product@ - Rinomina gruppo - - - - SecuritySettings - - - Form - Modulo - - - - Enable call encryption - Abilita la cifratura delle chiamate - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ può cifrare le chiamate utilizzando il sistema di cifratura AES a 128-bit e Diffie-Hellman per lo scambio delle chiavi. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Aggiorna il tuo profilo - - - - Yahoo! ID: - ID Yahoo!: - - - - MSN ID: - ID MSN: - - - - Jabber/GoogleTalk ID: - ID Jabber/GoogleTalk: - - - - exemple: username@server - esempio: nomeutente@server - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ID ICQ: - - - - AIM ID: - ID AIM: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Invia - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Fai clic qui per aggiungere un numero di telefono - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Inserisci qui la tua firma - - - - Signature: - Firma: - - - - Phone number(s): - Numeri di telefono: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Inserisci qui i numeri di telefono <br>Devono essere separati da & o ; o , - - - - SoftUpdateWindow - - - Cancel - Annulla - - - - @product@ - Downloading update - @product@ - Scaricamento aggiornamenti - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Modulo - - - - VideoSettings - - - Normal - Normale - - - - Good - Buona - - - - Very good - Molto buona - - - - Excellent - Eccellente - - - - Enable video - Abilita video - - - - Webcam Selection - Selezione webcam - - - - Webcam device: - Dispositivo webcam: - - - - Webcam Preview - Anteprima webcam - - - - Connection Type - Tipo di connessione - - - - Video quality - Qualità video - - - - Down (kbit/s) - Scaric. (kbit/s) - - - - Up (kbit/s) - Inv. (kbit/s) - - - - 0 to 512 - da 0 a 512 - - - - 0 to 128 - da 0 a 128 - - - - 512 to 2048 - da 512 a 2048 - - - - 128 to 256 - da 128 a 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - La qualità del video dipende dall'ampiezza di banda della tua connessione a Internet - - - - Make a test video call - Effettua una chiamata video di prova - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Modulo - - - - Phone number of your voicemail: - Numero di telefono della propria segreteria telefonica: - - - - Please fill in here the information about your voicemail - Inserisci le informazioni riguardanti la tua segreteria telefonica - - - - WengoConfigDialog - - - Cancel - Annulla - - - - Save - Salva - - - - Title - Titolo - - - - @product@ - Configuration - @product@ - Configurazione - - - - WengoPhoneWindow - - - &Accept - &Accetta - - - - &Hidden - &Nascosto - - - - &Tools - S&trumenti - - - - &Help - &Aiuto - - - - &Actions - &Azioni - - - - @company@ - @company@ - - - - &Close - &Chiudi - - - - Dialpad - Tastierino numerico - - - - @product@ - @product@ - - - - Start Conference - Inizia conferenza - - - - Send SMS - Invia SMS - - - - Contacts - Contatti - - - - History - Cronologia - - - - Clear &History - Svuota &cronologia - - - - ToolBar - Barra degli strumenti - - - - Show/Hide Unavailable &Contacts - Mostra/Nascondi &contatti non disponibili - - - - &Chat Sessions - Sessione di &chat - - - - &All - &Tutto - - - - &HangUp - &Riaggancia - - - - &Hold/Resume - &Sospendi/Ripristina - - - - Show/Hide &Groups - Mostra/Nascondi &gruppi - - - - &Outgoing Calls - C&hiamate in uscita - - - - &Incoming Calls - Ch&iamate in entrata - - - - &Missed Calls - Chia&mate perse - - - - Enable/Disable &Video Calls - Abilita/Disabilita le chiamate &video - - - - Short Text &Messages (SMS) - Breve &messaggio di testo (SMS) - - - - Rejected Calls - Chiamate rifiutate - - - - &Contacts - &Contatti - - - - &About... - Inform&azioni su... - - - - Add &Contact... - Aggiungi &contatto... - - - - &Configuration... - &Configurazione... - - - - Send SMS... - Invia SMS... - - - - View My &Profile... - Visualizza il mio &profilo - - - - - View My Profile - Visualizza il mio profilo - - - - Start &Conference... - Avvia &conferenza... - - - - &Find Contact... - &Trova contatto... - - - - Log &Off... - Disc&onnetti... - - - - - Log Off - Disconnetti - - - - Show &Chat Window - Mostra la finestra di &chat - - - - - Show Chat Window - Mostra la finestra di chat - - - - Show &File Transfer - Mostra trasferimento &file - - - - Add Contact - Aggiungi contatto - - - - View My @company@ Account... - Visualizza il mio account @company@... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - &Forum di @company@... - - - - @company@ &Wiki/FAQ... - &Wiki/FAQ di @company@... - - - - Learn more about @company@ Services... - Ulteriori informazioni sui servizi @company@... - - - - Search - Cerca: - - - - Find @company@ Contacts - Trova i contatti @company@ - - - - &Quit - E&sci - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Testo sotto le icone - - - - &Icons Only - Solo &icone - - - - Add - Aggiungi - - - - SMS - SMS - - - - Conference - Conferenza - - - - Wizard - - - Cancel - Annulla - - - - Finish - Fine - - - - Next > - Successivo > - - - - < Back - < Precedente - - - - Simple Wizard - Step %1 of %2 - Procedura guidata semplice - Passo %1 di %2 - - - - YahooSettings - - - Login: - Nome utente: - - - - Password: - Password: - - - - Yahoo! Settings - Impostazioni Yahoo! - - - - Use Yahoo! Japan server - Usa server Yahoo! Giappone - - - - Forgot your Yahoo! password? - Hai dimenticato la password di Yahoo!? - - - - Get a new Yahoo! Account - Ottieni un nuovo account Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ja.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ja.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ja.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ja.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5059 +0,0 @@ - - - - - AIMSettings - - - Login: - ログイン: - - - - Forgot your AIM password? - AIMのパスワードを忘れた - - - - Get a new AIM Account - 新規にAIMアカウントを入手 - - - - Password: - パスワード: - - - - AIM Settings - AIM/ICQの設定 - - - - AboutWindow - - - About - 情報 - - - - Copyright (C)2008 Mbdsys - - - - - Authors - 製作者 - - - - Close - 閉じる - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - ファイルの転送 - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - 承認(&A) - - - - &Cancel - キャンセル(&C) - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - プロフィールの編集(&E) - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - ヘルプ - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - キャンセル - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - キャンセル - - - - Contact Type (protocol): - コンタクトのプロトコル: - - - - Contact ID: - コンタクトID: - - - - Account: - アカウント: - - - - Enable - 有効 - - - - Login - ログイン - - - - Add - 追加 - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - パスワード: - - - - Need help? - ヘルプ - - - - &Back - - - - - - Cancel - キャンセル - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - 詳細 - - - - AddWengoAccount - - - Password: - パスワード: - - - - Need help? - ヘルプ - - - - &Back - - - - - - Cancel - キャンセル - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - Eメールアドレス: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - 閉じる - - - - Preference Name - Preference Name - - - - Type - タイプ - - - - Value - 変数 - - - - Default Value - 既定値 - - - - Save - 保存 - - - - Status - 状態 - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - 追加 - - - - Advanced Settings - 高度な設定 - - - - Advanced Configuration Window - 高度な設定ウィンド - - - - Automatically answer incoming calls from - からの着信に自動応答する。 - - - - Remove - 削除 - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - フォーム - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - フォーム - - - - AvatarWidget - - - Form - フォーム - - - - BrowserSoftUpdateWindow - - - Close - 閉じる - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3番目: - - - - 1st: - 1番目: - - - - 2nd: - 2番目: - - - - - - (+ country code) phone number - (+ 国別コード) 電話番号 - - - - Forward all unanswered calls to message box - すべての不在着信をメッセージボックスに送る - - - - Disable call forwarding - 着信転送を利用しない - - - - Forward all unanswered calls to following phone numbers: - すべての不在着信を以下の電話番号に転送する: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - 着信 - - - - Message - メッセージ - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - コンタクト(&C) - - - - &Tools - ツール(&T) - - - - &Help - ヘルプ(&H) - - - - &Actions - アクション(&A) - - - - Main Toolbar - メインツールバー - - - - - - Call Contact - コールする - - - - - - Send a File - ファイル転送 - - - - createChatConf - - - - - - - Show Contact Info - コンタクト情報を見る - - - - blockContact - - - - - &Save History As... - 履歴を保存(&S) - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - コンタクト(&C) - - - - &Tools - ツール(&T) - - - - &Actions - アクション(&A) - - - - Main Toolbar - メインツールバー - - - - - - Call Contact - コールする - - - - - - Send a File - ファイル転送 - - - - - - Show Contact Info - コンタクト情報を見る - - - - &Save History As... - 履歴を保存(&S) - - - - @company@ - - - - - - MainWindow - メインウィンドウ - - - - &Edit - - - - - - blockContact - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - 閉じる(&C) - - - - Conference - 会議 - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - メッセージ - - - - Incoming Chat - チャットを受信 - - - - ChatWidget - - - Form - フォーム - - - - ConferenceCallWidget - - - Cancel - キャンセル - - - - Start - 開始 - - - - Phone number 2: - 電話番号2: - - - - Phone number 1: - 電話番号1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - キャンセル - - - - ContactGroupPopupMenu - - - Remove Contact Group - コンタクトグループの削除 - - - - Rename Contact Group - コンタクトグループの名称変更 - - - - Delete group - グループの削除 - - - - Do you really want to delete this group? - 本当にこのグループを削除してもよいですか? - - - - &Yes - はい(&Y) - - - - &No - いいえ(&N) - - - - ContactList - - - Contact List - コンタクトリスト - - - - ContactWidget - - - No mobile phone number set - 携帯電話ではない - - - - No landline phone number set - 固定電話ではない - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - キャンセル - - - - Program Failure - - - - - - Send - 送信 - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - 利用できません - - - - Click here to change your call forward settings - ここをクリックして着信転送設定を変更する - - - - Call forward mode: - 着信転送モード - - - - Purchase call out credits - コールアウトクレジットの購入 - - - - Call Forward Method - 着信転送方法 - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - ここをクリックしてボイスメールにコールする - - - - New Voice Mail: - 新規のボイスメール: - - - - Click here to see missed call(s) - ここをクリックして失敗した通話を見る - - - - Missed Call(s): - 失敗した通話 - - - - FileTransferDialog - - - ... - ... - - - - Download - ダウンロード - - - - Upload - アップロード - - - - Click here to change your download folder - - - - - - Download folder: - ダウンロードフォルダ - - - - Clean all items in the list - - - - - - &Clean - クリア(&C) - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - キャンセル - - - - Form - フォーム - - - - Pause - 一時停止 - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - ダブルクリック時 - - - - Call cell phone or land line if contact not online - コンタクトがオフラインならば携帯か固定電話にコールする - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - アイドル状態 - - - - minutes - 分後 - - - - Show me as "Away" when I am inactive for: - 次を使用していない時は"退席中"と表示する - - - - When I start my computer - コンピュータを起動した時 - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - ログイン: - - - - Password: - パスワード: - - - - GoogleTalk Settings - Google Talkの設定 - - - - Forgot your GoogleTalk password? - Google Talkのパスワードを忘れた - - - - Get a new GoogleTalk Account - 新規にGoogleTalkアカウントを入手 - - - - HttpProxyLoginWindow - - - Cancel - キャンセル - - - - HTTP Proxy Address: - アドレス: - - - - HTTP Proxy Port Number: - ポート番号 - - - - HTTP Proxy Login: - ログイン: - - - - HTTP Proxy Password: - パスワード: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - ログイン: - - - - Password: - パスワード: - - - - ICQ Settings - AIM/ICQの設定 - - - - Forgot your ICQ password? - AIMのパスワードを忘れた - - - - Get a new ICQ Account - 新規にAIMアカウントを入手 - - - - IMAccountManager - - - Close - 閉じる - - - - Login - ログイン - - - - Add - 追加 - - - - Delete - 削除 - - - - Modify - 変更 - - - - Protocol - プロトコル - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - キャンセル - - - - Save - 保存 - - - - IM Account Settings - IMアカウントセッティング - - - - IMContactManager - - - Add - 追加 - - - - Delete - 削除 - - - - Contact Type (protocol) - コンタクトタイプ(プロトコル) - - - - Click on the add button below to add a new ID - 追加ボタンをクリックしてこのIDを登録する - - - - Contact ID - コンタクトID - - - - IMProfileWidget - - - - Enter your nickname here - ここにニックネームを入力してください - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - キャンセル - - - - OK - OK - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - ログイン: - - - - Password: - パスワード: - - - - Jabber Settings - Jabberの設定 - - - - Connect Server: - 接続サーバ: - - - - <u>Advanced Options</u> - <u>詳細なオプション</u> - - - - Require TLS - TLSは必須 - - - - Port: - ポート: - - - - Use TLS if available - 可能ならばTLSを使用する - - - - Allow plaintext authentication over unencrypted streams - 非暗号化通信でのプレーンテキスト認証を許可する - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - 古い SSL (ポート番号:5223) を強制的に使用する - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - パスワード: - - - - Need help? - ヘルプ - - - - Cancel - キャンセル - - - - Delete - 削除 - - - - @product@ - Login - - - - - - Account: - アカウント: - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - ログイン: - - - - Password: - パスワード: - - - - MSN Settings - MSNの設定 - - - - Forgot your MSN password? - MSNのパスワードを忘れた - - - - Get a new MSN Account - 新規にMSNアカウントを入手する - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - メインウィンドウ - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - 閉じる - - - - Unblock User - 拒否されていないユーザ - - - - Manage blocked users - メッセージ拒否ユーザ - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - サウンドファイル - - - - Find a sound file - サウンドファイルを検出する - - - - Play sound file - サウンドの再生 - - - - Play - - - - - - NotifyDialog - - - File Transfer - ファイルの転送 - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - 承認(&A) - - - - Status - 状態 - - - - 00:00:00 - 00:00:00 - - - - Nickname - ニックネーム - - - - &Reject - - - - - - Dialpad - ダイヤルパッド - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - メッセージ拒否ユーザ - - - - Privacy Rules - プライバシールール - - - - Always sign in as "Invisible" (appear offline to all users) - 常に"不可視"でサインインする(すべてのユーザにオフライン) - - - - Allow chats from - 次のコンタクトからチャットを許可する - - - - - Anyone - だれでも - - - - - Only people from my contact list - コンタクトリストに登録されている者に限る - - - - Allow calls from - 次のコンタクトからの通話を許可する - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - キャンセル - - - - Save - 保存 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - 全般 - - - - Network IDs (MSN, Jabber...) - ネットワークID(MSN, Jabber...) - - - - Advanced >> - 高度 >> - - - - Fill in all your network Id to stay connected with your contacts - コンタクトに接続中の全てのネットワークIDを表示する - - - - Contact - コンタクト - - - - Group: - グループ: - - - - Last Name: - 姓: - - - - First Name: - 名: - - - - Details - 詳細 - - - - Web/blog: - Web/blog: - - - - Country: - 国: - - - - State: - 都道府県: - - - - City: - 都市: - - - - Gender: - 性別: - - - - Birth Date: - 誕生日: - - - - Email: - Eメール: - - - - Notes - 備考 - - - - Phone Numbers - 電話番号 - - - - Home phone - 自宅の電話 - - - - Mobile phone - 携帯電話 - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - 不明 - - - - Male - 男性 - - - - Female - 女性 - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - アカウント - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - プロフィールを更新する - - - - QtAddWengoAccount - - - Login - ログイン - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - Eメールアドレスとパスワードを<br/>入力してください。 - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - キャンセル - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - 削除(&D) - - - - QtAdvancedSettings - - - Advanced - 詳細 - - - - Advanced Settings - 高度な設定 - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - 詳細 - - - - Audio - オーディオ - - - - Audio Settings - オーディオ設定 - - - - QtCallBar - - - +(country code) number or nickname - +(国別コード)番号またはニックネーム - - - - QtCallForwardSettings - - - - Call Forward - 着信転送 - - - - Call Forward Settings - 以前の設定に戻す - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - 保存 - - - - QtChatLogViewer - - - Edit Contact - コンタクトの編集 - - - - QtChatTabWidget - - - Close chat - チャットを閉じる - - - - QtChatWidget - - - %1 is connected. - %1 が接続しました - - - - %1 is disconnected. - %1 が切断しました。 - - - - send - 送信 - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - コンタクトの編集 - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - SIPにコールする - - - - Call land line - 固定電話にコールする - - - - Call Mobile - 携帯にコールする - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - はい(&Y) - - - - &No - いいえ(&N) - - - - Merge %1 with %2? - %1 を %2 と合わせますか? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - はい(&Y) - - - - &No - いいえ(&N) - - - - Home phone - 自宅の電話 - - - - Mobile phone - 携帯電話 - - - - @product@ - - - - - - Edit Contact - コンタクトの編集 - - - - Do you really want to delete this contact? - 本当にこのコンタクトを削除しますか? - - - - Start chat - チャットの開始 - - - - - Delete contact - コンタクトの削除 - - - - Call - コール - - - - Free call - - - - - Work phone - - - - - - Send SMS - SMSの送信 - - - - Edit contact - コンタクトの編集 - - - - Block contact - コンタクトのブロック - - - - Invite to conference - 会議に招待 - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - 携帯電話ではない - - - - No landline phone number set - 固定電話ではない - - - - - Click here to call - ここをクリックしてコールする - - - - - Click here to set a phone number - ここをクリックして電話番号をセットする - - - - Click here to edit the contact - ここをクリックしてコンタクトを編集する - - - - Click here to send a SMS - ここをクリックしてSMSを送信する - - - - Click here to start a chat - ここをクリックしてチャットを開始する - - - - Click here to start a free call - ここをクリックしてフリーコールを開始する - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - ボイスメールにコールしますか? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - はい(&Y) - - - - &No - いいえ(&N) - - - - Choose a directory - ディレクトリの選択 - - - - Overwrite File? - ファイルを上書きしますか? - - - - A file called %1 already exists.Do you want to overwrite it? - %1のファイルは既に存在します。上書きしますか? - - - - - File size error - ファイルサイズエラー - - - - %1 exceeds the maximum authorized size. - %1の容量は最大許可サイズを超えています。 - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - キャンセル - - - - Remove - 削除 - - - - - Pause - 一時停止 - - - - Starting - 開始しています - - - - From: - 送信者: - - - - To: - 受信者: - - - - Open - 開く - - - - Resume - 再開 - - - - Waiting for anwser... - 応答を待っています - - - - Done - 完了 - - - - Failed - 失敗 - - - - Paused - 一時停止 - - - - Paused by peer - ピアによる一時停止 - - - - Cancelled - キャンセルされました - - - - Cancelled by peer - ピアにキャンセルされました - - - - - Downloading... - ダウンロード中 - - - - Uploading... - アップロード中 - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - 全般 - - - - General Settings - 一般的な設定 - - - - QtHistory - - - Incoming call - コール受信中 - - - - Outgoing call - コール発信中 - - - - Missed call - コールが失敗しました - - - - Rejected call - コールが拒否されました - - - - Outgoing SMS - SMS送信中 - - - - Do you want to call %1? - %1 にコールしますか? - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - タイプ - - - - Name/ID - 名前/ID - - - - Date - 日付 - - - - Duration - 通話時間 - - - - QtHistoryWidget - - - Erase this entry - エントリーの削除 - - - - Open in SMS window - SMSウィンドウ内に開く - - - - Call this peer - このピアにコールする - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - キャンセル - - - - @product@ - - - - - - &Delete - 削除(&D) - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - オンライン - - - - Invisible - 不可視 - - - - Away - 退席中 - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - ログインしてください - - - - QtIMAccountPresenceMenuManager - - - Cancel - キャンセル - - - - @product@ - - - - - - &Delete - 削除(&D) - - - - Online - オンライン - - - - Invisible - 不可視 - - - - Away - 退席中 - - - - Do Not Disturb - 取り込み中 - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - プロフィールの編集 - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - 言語 - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - 通話着信時 - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - 通話切断時 - - - - Incoming chat - チャット着信時 - - - - IM account connected - IMアカウント接続時 - - - - IM account disconnected - IMアカウント切断時 - - - - Contact online - コンタクトオンライン時 - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - サウンドファイルの選択 - - - - Sounds - サウンド - - - - QtPhoneCall - - - Status - 状態 - - - - Incoming Call - 着信 - - - - Resume - 再開 - - - - Hang-up - 切断 - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - エラー - - - - Talking - 会話中 - - - - Dialing - ダイヤル中 - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - 呼び出し中 - - - - Redirected - 再ダイヤル - - - - Initialization... - 初期設定... - - - - Closed - 閉じました - - - - - Hold - 保留 - - - - Add contact - コンタクトの追加 - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - コンタクトの追加 - - - - QtPresenceMenuManager - - - Online - オンライン - - - - Invisible - 不可視 - - - - Away - 退席中 - - - - Do Not Disturb - 取り込み中 - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - プライバシー - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - ここをクリックして状態を変更する - - - - - active - アクティブ - - - - voicemail - ボイスメール - - - - inactive - 非アクティブ - - - - unauthorized - 許可されていない - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - 高度 >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - コンタクトはグループに属する必要があります。グループを選択してくだい。 - - - - << Simple - << シンプル - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - バッドグループネーム - - - - Group name cannot be empty - グループネームを登録できません - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - 電話番号が不十分です - - - - Do you want to continue? - 続けますか? - - - - Your SMS has not been sent - SMSは送信されません - - - - Your SMS has been sent - SMSは送信されました - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - 接続していません - - - - Register done - 登録完了 - - - - Unregister done - 登録抹消完了 - - - - Connecting - 接続中 - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - 状態 - - - - - - - - - - - - - @product@ - - - - - - Call SIP - SIPにコールする - - - - Call land line - 固定電話にコールする - - - - Call Mobile - 携帯にコールする - - - - Call @company@ - - - - - - Call - コール - - - - Send SMS - SMSの送信 - - - - Online - オンライン - - - - Invisible - 不可視 - - - - Away - 退席中 - - - - Do Not Disturb - 取り込み中 - - - - Internet Connection Error - インターネット接続エラー - - - - Offline - オフライン - - - - Connecting... - 接続中... - - - - Send a SMS - SMSの送信 - - - - Start a chat - チャットの開始 - - - - Place Call - コール先 - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - キャンセル(&C) - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - プロフィールの編集 - - - - Add a Contact - コンタクトの追加 - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - ビデオコールを有効/無効(&V) - - - - Enable &Video Calls - ビデオコールを有効/無効(&V) - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - コンタクトリスト - - - - QtUserProfile - - - Edit Contact - コンタクトの編集 - - - - - &Authorize - 許可(&A) - - - - - &Block - 拒否(&B) - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Eメールまたはパスワードが間違っています - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - ビデオ - - - - - Normal - 普通 - - - - - Good - 良い - - - - - Very good - 非常に良い - - - - - Excellent - 素晴らしい - - - - Video Settings - ビデオセッティング - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - 詳細 - - - - General - 全般 - - - - Accounts - アカウント - - - - Audio - オーディオ - - - - Call Forward - 着信転送 - - - - Language - 言語 - - - - Privacy - プライバシー - - - - Video - ビデオ - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - キャンセル(&C) - - - - - - - Conference - 会議 - - - - Call - コール - - - - Account - - - - - Add a Contact - コンタクトの追加 - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - ホーム - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - キャンセル - - - - OK - OK - - - - Enter the new group name: - 新規グループ名: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - フォーム - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - プロフィールを更新する - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - AIM/ICQ ID: - - - - AIM ID: - AIM/ICQ ID: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - 送信 - - - - @product@ - SMS - - - - - - Click here to add a phone number - ここをクリックして電話番号を追加する - - - - 0 /160 - 0 /160 - - - - Enter your signature here - ここに署名を入力してください - - - - Signature: - 署名: - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - キャンセル - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - フォーム - - - - VideoSettings - - - Normal - 普通 - - - - Good - 良い - - - - Very good - 非常に良い - - - - Excellent - 素晴らしい - - - - Enable video - ビデオを有効にする - - - - Webcam Selection - ウェブカム選択 - - - - Webcam device: - Webcamデバイス: - - - - Webcam Preview - プレビュー - - - - Connection Type - 接続タイプ - - - - Video quality - 品質 - - - - Down (kbit/s) - Down (kbit/s) - - - - Up (kbit/s) - Up (kbit/s) - - - - 0 to 512 - 0 to 512 - - - - 0 to 128 - 0 to 128 - - - - 512 to 2048 - 512 to 2048 - - - - 128 to 256 - 128 to 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - ビデオの品質はインターネット接続帯域に依存します - - - - Make a test video call - ビデオコールのテスト - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - フォーム - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - キャンセル - - - - Save - 保存 - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - 承認(&A) - - - - &Hidden - - - - - - &Tools - ツール(&T) - - - - &Help - ヘルプ(&H) - - - - &Actions - アクション(&A) - - - - @company@ - - - - - - &Close - 閉じる(&C) - - - - Dialpad - ダイヤルパッド - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - SMSの送信 - - - - Contacts - コンタクト - - - - History - 履歴 - - - - Clear &History - 履歴のクリア(&H) - - - - ToolBar - ツールバー - - - - Show/Hide Unavailable &Contacts - 活動していないコンタクトの表示/非表示 - - - - &Chat Sessions - チャットセッション(&C) - - - - &All - 全て(&A) - - - - &HangUp - 切断(&H) - - - - &Hold/Resume - 保留/再開(&H) - - - - Show/Hide &Groups - グループの表示/非表示(&G) - - - - &Outgoing Calls - 発信中のコール(&O) - - - - &Incoming Calls - 応答中のコール(&I) - - - - &Missed Calls - 失敗したコール(&M) - - - - Enable/Disable &Video Calls - ビデオコールを有効/無効(&V) - - - - Short Text &Messages (SMS) - ショートテキストメッセージ(SMS) - - - - Rejected Calls - コールの削除 - - - - &Contacts - コンタクト(&C) - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - 追加 - - - - SMS - SMS - - - - Conference - 会議 - - - - Wizard - - - Cancel - キャンセル - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - ログイン: - - - - Password: - パスワード: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ku.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ku.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ku.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ku.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5381 +0,0 @@ - - - - - AIMSettings - - - Login: - Têketin: - - - - Forgot your AIM password? - - - - - - Get a new AIM Account - - - - - - Password: - Şîfre: - - - - AIM Settings - Mîhengên Pêşketî - - - - AboutWindow - - - About - Der barê de - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Nivîskar - - - - Close - Dade - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Şandina Pelê - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - Bi&pejirîne - - - - &Cancel - &Betal - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - Profîla min &sererast bike - - - - AddAccount - - - Configure your account: - - - - - - &Next - &Pêşde - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - &Paşde - - - - Cancel - Betal - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Betal - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - Hesab: - - - - Enable - Çalak bike - - - - Login - Têketin - - - - Add - Lê zêde bike - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Şîfre: - - - - Need help? - - - - - - &Back - &Paşde - - - - Cancel - Betal - - - - @product@ - Login - - - - - - &Connect - &Tekilî - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - Hesab: - - - - Proxy: - - - - - - : - : - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - Pêşkeftî - - - - AddWengoAccount - - - Password: - Şîfre: - - - - Need help? - - - - - - &Back - &Paşde - - - - Cancel - Betal - - - - @product@ - Login - - - - - - &Connect - &Tekilî - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Dade - - - - Preference Name - - - - - - Type - Cure - - - - Value - Nirx - - - - Default Value - Nirxa Standard - - - - Save - Tomar bike - - - - Status - Rewş - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Lê zêde bike - - - - Advanced Settings - Mîhengên Pêşketî - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - Rake - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Dade - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3.: - - - - 1st: - 1.: - - - - 2nd: - 2.: - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - Peyam - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - &Tekilî - - - - &Tools - &Amûr - - - - &Help - &Alîkarî - - - - &Actions - &Çalakî - - - - Main Toolbar - Darikê amûran yê mak - - - - - - Call Contact - - - - - - - - Send a File - Pelekî bişîne - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Tekilî - - - - &Tools - &Amûr - - - - &Actions - &Çalakî - - - - Main Toolbar - Darikê amûran yê mak - - - - - - Call Contact - - - - - - - - Send a File - Pelekî bişîne - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - &Rake - - - - &Start - - - - - - Group Name - Navê Komê - - - - &Add - Lê &zêde bike - - - - ChatToaster - - - Message - Peyam - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - Betal - - - - Start - Destpêk - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Betal - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - Komê rake - - - - Do you really want to delete this group? - - - - - - &Yes - &Erê - - - - &No - &Na - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Betal - - - - Program Failure - - - - - - Send - Bişîne - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - ... - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - &Pakij bike - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Betal - - - - Form - - - - - - Pause - Behndan - - - - <i>From:</i> - <i>Ji:</i> - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Têketin: - - - - Password: - Şîfre: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Betal - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - Temam - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Têketin: - - - - Password: - Şîfre: - - - - ICQ Settings - Eyarên giştî - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - Dade - - - - Login - Têketin - - - - Add - Lê zêde bike - - - - Delete - Jê bibe - - - - Modify - Biguherîne - - - - Protocol - Protokol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Betal - - - - Save - Tomar bike - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Lê zêde bike - - - - Delete - Jê bibe - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Betal - - - - OK - Temam - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Têketin: - - - - Password: - Şîfre: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Şîfre: - - - - Need help? - - - - - - Cancel - Betal - - - - Delete - Jê bibe - - - - @product@ - Login - - - - - - Account: - Hesab: - - - - &Connect - &Tekilî - - - - Forgot your @company@ password? - - - - - - &Modify - Biguherîne - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Têketin: - - - - Password: - Şîfre: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Dade - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Şandina Pelê - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - Bi&pejirîne - - - - Status - Rewş - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Betal - - - - Save - Tomar bike - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - Mîhengên Pêşketî - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Têketin - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Betal - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - Pêşkeftî - - - - Advanced Settings - Mîhengên Pêşketî - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Pêşkeftî - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Erê - - - - &No - &Na - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Erê - - - - &No - &Na - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Erê - - - - &No - &Na - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Betal - - - - Remove - Rake - - - - - Pause - Behndan - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - Eyarên giştî - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Cure - - - - Name/ID - Nav/ID - - - - Date - Dîrok - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Betal - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Betal - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Komê rake - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Ziman - - - - Language Settings - Mîhengên Pêşketî - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Rewş - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - &Betal - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - Mîhengên Pêşketî - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - Eyarên giştî - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Rewş - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - Rewş - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Betal - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - Eyarên giştî - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Pêşkeftî - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - Ziman - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Betal - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Betal - - - - OK - Temam - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Bişîne - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Betal - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Betal - - - - Save - Tomar bike - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - Bi&pejirîne - - - - &Hidden - - - - - - &Tools - &Amûr - - - - &Help - &Alîkarî - - - - &Actions - &Çalakî - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - Der barê de - - - - Add &Contact... - &Tekilî - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - &Tekilî - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - &Tekilî - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Lê zêde bike - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Betal - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Têketin: - - - - Password: - Şîfre: - - - - Yahoo! Settings - Eyarên giştî - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_lv.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_lv.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_lv.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_lv.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5548 +0,0 @@ - - - - - AIMSettings - - - Login: - - - - - - Forgot your AIM password? - - - - - - Get a new AIM Account - - - - - - Password: - - - - - - AIM Settings - - - - - - AboutWindow - - - About - - - - - - Copyright (C)2008 Mbdsys - - - - - Authors - - - - - - Close - - - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - - - - - - toto@wengo.fr - - - - - - test.bmp - - - - - - &Accept - - - - - - &Cancel - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - - - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - - - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - - - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - - - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - - - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - - - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - - - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - - - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - - - - - - Password: - - - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - - - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - - - - - - Password: - - - - - - ICQ Settings - - - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - - - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - - - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - - - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - - - - - - Password: - - - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - - - - - - Need help? - - - - - - Cancel - - - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - - - - - - Password: - - - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - - - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - - - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - - - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - - - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - - - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - - - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - - - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - - - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - - - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - - - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - - - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - - - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - - - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - - - - - - Password: - - - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_mn.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_mn.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_mn.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_mn.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5520 +0,0 @@ - - - - - AIMSettings - - - Login: - Login - - - - Forgot your AIM password? - Nuuts ugee martsan bol - - - - Get a new AIM Account - Shineer AIM account uusgeh - - - - Password: - Nuuts ug - - - - AIM Settings - AIM/ICQ tohiruulga - - - - AboutWindow - - - About - - - - - - Copyright (C)2008 Mbdsys - - - - - Authors - - - - - - Close - - - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - - - - - - toto@wengo.fr - - - - - - test.bmp - - - - - - &Accept - - - - - - &Cancel - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - - - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Nuuts ug - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Nuuts ug - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - - - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - - - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - - - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - - - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - - - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - - - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Login - - - - Password: - Nuuts ug - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - - - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Login - - - - Password: - Nuuts ug - - - - ICQ Settings - AIM/ICQ tohiruulga - - - - Forgot your ICQ password? - Nuuts ugee martsan bol - - - - Get a new ICQ Account - Shineer AIM account uusgeh - - - - IMAccountManager - - - Close - - - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - - - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - Shineer AIM account uusgeh - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - - - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Login - - - - Password: - Nuuts ug - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Nuuts ug - - - - Need help? - - - - - - Cancel - - - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Login - - - - Password: - Nuuts ug - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - - - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - - - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - - - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - - - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - AIM/ICQ tohiruulga - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - - - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - - - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Shineer AIM account uusgeh - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - - - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - - - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - - - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - - - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - - - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - - - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - - - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Login - - - - Password: - Nuuts ug - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - Nuuts ugee martsan bol - - - - Get a new Yahoo! Account - Shineer AIM account uusgeh - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nb.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nb.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nb.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nb.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5074 +0,0 @@ - - - - - AIMSettings - - - Login: - Pålogging - - - - Forgot your AIM password? - Har du glemt ditt AIM passord? - - - - Get a new AIM Account - Opprette en ny AIM konto - - - - Password: - Passord: - - - - AIM Settings - AIM innstillinger - - - - AboutWindow - - - About - Om... - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Forfattere - - - - Close - Lukk - - - - 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. - Dette programmet er fri programvare; Du kan redistribuere det og/eller -modifisere det under vilkårnen til "GNU General Public License" -som publisert av Free Software Foundation; enten versjon 2 -av lisensen, eller (som fritt valg) en senere versjon. - - - - @product@ - About - @product@ - Om - - - - @product@, a voice over Internet phone - @product@, en Internet telefon - - - - AcceptDialog - - - File Transfer - Fil overføring - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Godta - - - - &Cancel - &Avbryt - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filnavn: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Innkommende fil</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Rediger min profil - - - - AddAccount - - - Configure your account: - Sett opp kontoen din - - - - &Next - &Neste - - - - Need help? - Trengs hjelp? - - - - You don't have any account ? Click here - Har du ikke en konto? Klikk her - - - - &Back - &Tilbake - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Pålogging - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Vær vennlig å fortell oss om kontoen din<br/>by er levert av @company@ eller en annen tjeneste</span> - - - - @company@ account - @company@ konto - - - - Generic SIP account - Standardisert SIP konto - - - - AddIMContact - - - Cancel - Avbryt - - - - Contact Type (protocol): - Kontakt type (protokoll) - - - - Contact ID: - Kontakt ID - - - - Account: - Konto - - - - Enable - Aktiver - - - - Login - Innlogging - - - - Add - Legg til - - - - @product@ - Add a Contact Account - @product@ - Legg til en kontakt konto - - - - AddSIPAccount - - - Password: - Passord: - - - - Need help? - Trengs hjelp? - - - - &Back - &Tilbake - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Pålogging - - - - &Connect - Koble &til - - - - Activate presence and chat (SIP/SIMPLE) - Aktiver tilstedværlse og tekstsamtaler (SIP/SIMPLE) - - - - Displayname: - Visningsnavn: - - - - login / username: - Påloggings / brukernavn: - - - - Account name: - Kontonavn: - - - - Proxy: - Mellomtjener: - - - - : - : - - - - Server: - Tjener - - - - SIP Domain / Realm: - SIP domene/område: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Konfigurer din SIP profil</span><br><br><span>Vær vennlig å fyll in informasjonen som vil<br/>tillate din programvare telefon å knytte seg <br/>til din SIP konto</span> - - - - Advanced - Avansert - - - - AddWengoAccount - - - Password: - Passord: - - - - Need help? - Trengs hjelp? - - - - &Back - &Tilbake - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Pålogging - - - - &Connect - Koble &til - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - span style="font-size:16pt;">Pålogging</span><br><br><span>Vennligst skriv in din e-post adresse og<br>passord</span> - - - - Email Address: - E-post adresse - - - - Click here if you don't have a @company@ account - Klikk her om du ikke har en @company@ konto - - - - Forgot your @company@ password? - Har du glemt ditt @company@ passord? - - - - AdvancedConfigWindow - - - Close - Lukk - - - - Preference Name - Foretrukket Navn - - - - Type - Type: - - - - Value - Verdi - - - - Default Value - Standard verdi - - - - Save - Lagre - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - Avansert konfigurasjon - - - - AdvancedSettings - - - Add - Legg til - - - - Advanced Settings - Avanserte innstillinger - - - - Advanced Configuration Window - Vindu for avansert konfigurasjon - - - - Automatically answer incoming calls from - Svar automatisk på innkommende samtaler - - - - Remove - Fjern - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Advarsel, denne delen er bare for avanserte brukere.<br>En hver feil kan seriøst skade programvarens virkemåte - - - - AppearanceSettings - - - Toolbar - Verktøyslinje - - - - &Icons && Text - &Iconer && tekst - - - - Icons &Only - &Bare ikoner - - - - &Hidden - &Skjult - - - - Chat Theme - Tekstsamtale tema - - - - Form - Skjema - - - - AudioSettings - - - Reset - Tilbakestill - - - - Audio Codecs - Lyd kodeker - - - - &Input device: - &Inngangs enhet: - - - - &Output device: - &Utgangs enhet: - - - - &Ringing device: - - - - - - &Make a test call - &Gjøre en test samtale - - - - - Test - Prøve - - - - &Advanced >> - &Avansert >> - - - - &Half Duplex - &Halv duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Skjema - - - - AvatarWidget - - - Form - Skjema - - - - BrowserSoftUpdateWindow - - - Close - Lukk - - - - @product@ - Update available - @product@ - oppdatering tilgjengelig - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Tredje: - - - - 1st: - Første: - - - - 2nd: - Andre: - - - - - - (+ country code) phone number - (+ lands kode) telefon nummer - - - - Forward all unanswered calls to message box - Vidersend alle ubesvarte samtaler til meldings boksen - - - - Disable call forwarding - Ta bort viderekobbling - - - - Forward all unanswered calls to following phone numbers: - Videresend alle ubesvarte samtaler til følgende telefonnummre: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - For eksempel +473780xxxx (+47 er lands koden og 3780xxxx er telefon nummeret) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Viderkobling av samtaler er aktivert om du ikke er koblet til @company@, når linjen din er opptatt eller om du ikke besvarer en samtale etter 20 sekunder. Du kan konfigurere opp til tre viderekoblinger til fasttelefon, mobiltelefon eller tale post(hvis tilgjengelig) - - - - CallToaster - - - Incoming Call - Innkommende samtale - - - - Message - Melding - - - - ChatLogViewer - - - Chat History - Tekstsamtale historie - - - - &Contact - &Kontakt - - - - &Tools - &Verktøy - - - - &Help - &Hjelp - - - - &Actions - &Handlinger - - - - Main Toolbar - Hovedverktøylinje - - - - - - Call Contact - Ring kontakt - - - - - - Send a File - Send fil - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Vis kontakt informasjon - - - - blockContact - createChatConf - - - - &Save History As... - &Lagre loggen som.... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Verktøy - - - - &Actions - &Handlinger - - - - Main Toolbar - Hovedverktøylinje - - - - - - Call Contact - Ring kontakt - - - - - - Send a File - Send fil - - - - - - Show Contact Info - Vis kontakt informasjon - - - - blockContact - createChatConf - - - - &Save History As... - &Lagre loggen som.... - - - - @company@ - @company@ - - - - MainWindow - MainWindow - - - - &Edit - &Rediger - - - - Cu&t - K&lipp - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopier - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Lim inn - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Start tekst konferansesamtale - - - - &Close - &Lukk - - - - Conference - Konferanse - - - - ChatRoomInviteWidget - - - Chat room - Tekstsamtale rom - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Tekstsamtale rom</span></p></body></html> - - - - (Conference participants) - (Konferanse deltagere) - - - - &Remove - &Fjern - - - - &Start - &Start - - - - Group Name - Gruppe navn - - - - &Add - &Legg til - - - - ChatToaster - - - Message - Melding - - - - Incoming Chat - Inkommende tekstsamtale - - - - ChatWidget - - - Form - Skjema - - - - ConferenceCallWidget - - - Cancel - Avbryt - - - - Start - Start - - - - Phone number 2: - Telefonnummer 2: - - - - Phone number 1: - Telefonnummer 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Lag en konferanse - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferanse</span><br /><br />Vær vennlig å legg inn to telefonnummers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@ kontakter</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">for å lage en konferansesamtale.</ - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferanse</span><br /><br />Vær vennlig å legg inn to telefonnummers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@ kontakter</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">for å lage en konferansesamtale.</ - - - - &Add >> - &Legg til >> - - - - << &Remove - << &Fjern - - - - Available Contacts - Tilgjengelige kontakter - - - - &Start - &Start - - - - Cancel - Avbryt - - - - ContactGroupPopupMenu - - - Remove Contact Group - Ta bort kontakt gruppe - - - - Rename Contact Group - Gi kontaktgruppe nytt navn - - - - Delete group - Slett gruppe - - - - Do you really want to delete this group? - Vil du virkelig slette denne gruppen? - - - - &Yes - &Ja - - - - &No - &Nei - - - - ContactList - - - Contact List - Kontakt liste - - - - ContactWidget - - - No mobile phone number set - Mobiltelefon nummer ikke definert - - - - No landline phone number set - Fasttelefon nummer ikke definert - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å redigere denne kontakten</p></body></html> - - - - CrashReport - - - Cancel - Avbryt - - - - Program Failure - Programmet feilet - - - - Send - Send - - - - Optional Information - Tilleggsinformasjon - - - - Your Mail: - Din e-post: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Ikke tillgjengelig - - - - Click here to change your call forward settings - Klikk her for å endre dine viderekobblings innstillinger - - - - Call forward mode: - Viderkobblings modus - - - - Purchase call out credits - Kjløp tid for å ringe ut til det vanlige telefonnettet - - - - Call Forward Method - Viderkobblingsmetode - - - - Call Voice Mail - Ring talepostboks - - - - Click here to buy @company@'s credits - Klikk her for å kjøpe @company@ tid - - - - DesktopService - - - Root Folder - Rot mapper - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Klikk på de forskjellige elementene for å sende lyder. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Klikk her for å ringe til din talepostkasse - - - - New Voice Mail: - Ny tele post: - - - - Click here to see missed call(s) - Klikk her for å se tapt(e) anrop - - - - Missed Call(s): - Tapt(e ) anrop - - - - FileTransferDialog - - - ... - ... - - - - Download - Last ned - - - - Upload - Last opp - - - - Click here to change your download folder - Klikk her for å endre mappen hvor nedlastinger lagres - - - - Download folder: - Nedlastings mappe: - - - - Clean all items in the list - Slett alle elementer i listen - - - - &Clean - &Slett - - - - @product@ - File Transfer Manager - @product@ - Fil overførings håndterer - - - - FileTransferItem - - - Cancel - Avbryt - - - - Form - Skjema - - - - Pause - Pause - - - - <i>From:</i> - <i>Fra:</i> - - - - GeneralSettings - - - When I double-click on a contact - Når jeg dobbel klikker på en kontakt - - - - Call cell phone or land line if contact not online - Ring mobiltelefon eller fasttelefon om kontakten ikke er på nettet - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Ledig tilstand - - - - minutes - minutter - - - - Show me as "Away" when I am inactive for: - Vis meg som "Borte" når jeg er inaktiv i: - - - - When I start my computer - Når jeg starter datamaskinen - - - - Automatically start @product@ - Automatisk start @product@ - - - - GoogleTalkSettings - - - Login: - Pålogging - - - - Password: - Passord: - - - - GoogleTalk Settings - GoogleTalk innstillinger - - - - Forgot your GoogleTalk password? - Har du glemt GoogleTalk passordet? - - - - Get a new GoogleTalk Account - Få en ny GoogleTalk konto - - - - HttpProxyLoginWindow - - - Cancel - Avbryt - - - - HTTP Proxy Address: - HTTP mellomtjener adresse: - - - - HTTP Proxy Port Number: - HTTP mellomtjener port nummer: - - - - HTTP Proxy Login: - HTTP mellomtjener pålogging - - - - HTTP Proxy Password: - HTTP mellomtjener passord: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP mellomtjener </span><br><br><span>Din lokale HTTP benytter bruker verifisering<br>Vær vennlig å skriv inn ditt brukernavn og passord</span> - - - - OK - Ok - - - - @product@ - Local HTTP Proxy - @product@ - lokal HTTP mellomtjener - - - - ICQSettings - - - Login: - Pålogging - - - - Password: - Passord: - - - - ICQ Settings - ICQ innstillinger - - - - Forgot your ICQ password? - HAr du glemt ditt ICQ passord? - - - - Get a new ICQ Account - Lag en ny ICQ konto - - - - IMAccountManager - - - Close - Lukk - - - - Login - Innlogging - - - - Add - Legg til - - - - Delete - Slett - - - - Modify - Modifiser - - - - Protocol - Protokoll - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Mine lynmeldingskontoer (Jabber, MSN, AIM...) - - - - IMAccountTemplate - - - Cancel - Avbryt - - - - Save - Lagre - - - - IM Account Settings - Lynmeldingskonto innstillinger - - - - IMContactManager - - - Add - Legg til - - - - Delete - Slett - - - - Contact Type (protocol) - Kontakt type (Protokoll) - - - - Click on the add button below to add a new ID - Klikk på knappen nedenfor for å legge til en ny ID - - - - Contact ID - Kontakt ID - - - - IMProfileWidget - - - - Enter your nickname here - Legg inn kallenavnet ditt her - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Legg til en lynmeldingskonto (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Legg til en lynmeldingskonto - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å endre din avatar</p></body></html> - - - - ImageSelector - - - Cancel - Avbryt - - - - OK - Ok - - - - Go Up - Gå opp - - - - Refresh - Frisk opp - - - - JabberSettings - - - Login: - Pålogging - - - - Password: - Passord: - - - - Jabber Settings - Jabber innstillinger - - - - Connect Server: - Koble til tjener: - - - - <u>Advanced Options</u> - <u>Avanserte valg</u> - - - - Require TLS - Krev TLS: - - - - Port: - Port: - - - - Use TLS if available - Bruk TLS om det er tilgjengelig - - - - Allow plaintext authentication over unencrypted streams - Tillat ren tekst autentisering på ukrypterte datastømmer - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Tving gammen (port 5222) SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Ditt språk er ikke her, vet su at du kan gjøre din egen oversettelse i Launchpad? - - - - More information here. - Mere informasjon her. - - - - LogAccount - - - Password: - Passord: - - - - Need help? - Trengs hjelp? - - - - Cancel - Avbryt - - - - Delete - Slett - - - - @product@ - Login - @product@ - Pålogging - - - - Account: - Konto - - - - &Connect - Koble &til - - - - Forgot your @company@ password? - Har du glemt ditt @company@ passord? - - - - &Modify - &Endre - - - - Configure a &New Profile - Konfigurer en &Ny profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Vær vennlig å velg en tidligere valgt profil<br/> eller fyll in informasjonen for å logge på en<br/> @company@ konto</span> - - - - MSNSettings - - - Login: - Pålogging - - - - Password: - Passord: - - - - MSN Settings - MSN innstillinger - - - - Forgot your MSN password? - Har du glemt ditt MSN passord? - - - - Get a new MSN Account - Opprette en MSN konto? - - - - Use HTTP method - Bruk HTTP metode - - - - MainWindow - - - MainWindow - MainWindow - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Aksepter samtale - - - - Send Chat Message - Send lynmelding - - - - Make Call - Start samtale - - - - Hang Up - Avslutt samtale - - - - ManageBlockedUsersSettings - - - Close - Lukk - - - - Unblock User - Ta bort blokkering for bruker - - - - Manage blocked users - Vedlikehold blokkerte brukere - - - - @product@ - Manage blocked users - @product@ - Vedlikehold blokkerte brukere - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Jeg har en @company@ konto - - - - Create a @company@ account - Lag en @company@ konto - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - For å sende en SMS må du være innlogget med en<br>@company@ konto og ha @company@'s forhåndsbetalte tellerskritt.. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Velg en hendelse som skal ha en lyd knyttet til seg - - - - NotificationSettingsItem - - - Sound file - Lyd fil - - - - Find a sound file - Finn en lyd fil - - - - Play sound file - Spill av en lyd - - - - Play - Spill - - - - NotifyDialog - - - File Transfer - Fil overføring - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Oppgrader</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Godta - - - - Status - Status - - - - 00:00:00 - 00:00:00 - - - - Nickname - Kallenavn - - - - &Reject - &Avvis - - - - Dialpad - Telefon tastatur - - - - Audio Smileys - Lyd "smileys" - - - - - Communication is encrypted - Kommunikasjonen er kryptert - - - - PrivacySettings - - - Manage blocked users - Vedlikehold blokkerte brukere - - - - Privacy Rules - Personvern regler - - - - Always sign in as "Invisible" (appear offline to all users) - Alltid logg in som "Usynelig" (Ser ut som frakobblet for alle brukere) - - - - Allow chats from - Tillat lynmeldinger fra - - - - - Anyone - Alle og en hver - - - - - Only people from my contact list - Bare personer fra min lynmeldingsliste - - - - Allow calls from - Tillat samtaler fra - - - - When I sign into @company@ - Når jeg logger inn på @company@ - - - - ProfileDetails - - - Cancel - Avbryt - - - - Save - Lagre - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klikk for å endre din avatar</p></body></html> - - - - General - Generelt - - - - Network IDs (MSN, Jabber...) - Nettverks IDer (MSN, Jabber, GoogleTalk...) - - - - Advanced >> - Avansert >> - - - - Fill in all your network Id to stay connected with your contacts - Fyll inn alle dine netverks IDer for å forbli koblet til dine kontakter - - - - Contact - Kontakt - - - - Group: - Gruppe: - - - - Last Name: - Etternavn: - - - - First Name: - Fornavn: - - - - Details - Detaljer - - - - Web/blog: - Web/blog: - - - - Country: - Land: - - - - State: - Stat: - - - - City: - By: - - - - Gender: - Kjønn: - - - - Birth Date: - Fødselsdato: - - - - Email: - E-post: - - - - Notes - Notater - - - - Phone Numbers - Telefon nummer - - - - Home phone - Hjemme telefon - - - - Mobile phone - Mobiltelefon - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Ukjent - - - - Male - Mann - - - - Female - Kvinne - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Kontoer - - - - Accounts Settings - Konto innstillinger - - - - QtAddAccount - - - Configure your voip account - Konfigurer din voip konto - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Vær vennlig å fortell oss om din konto er levert <br/>av @company@ elelr av en annen tjeneste - - - - QtAddAccountUtils - - - Test - Prøve - - - - Audio Test Call - Lydtest samtale - - - - Video Test Call - Test video samtale - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Vær vennlig å fyll inn informasjonen som vil<br/> tillate din programvare telefon å koble seg til din<br/>SIP konto - - - - Configure your SIP profile - Konfigurer din SIP profil - - - - QtAddWengoAccount - - - Login - Innlogging - - - - Please enter an email address. - Vær vennlig å skrive inn en e-post adresse - - - - Please enter your email address<br/>and your password - Vær vennlig å skriv inn din e-post adresse<br/>og ditt passord - - - - @product@ - Connexion - @product@ - kobling - - - - QtAdvancedIMContactManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Er du sikker på at du vil slette denne lynmeldings kontoen? - - - - - &Delete - &Slett - - - - QtAdvancedSettings - - - Advanced - Avansert - - - - Advanced Settings - Avanserte innstillinger - - - - QtAppearanceSettings - - - - Me - Meg - - - - Hello - Hallo - - - - How are you? - Hvordan har du det? - - - - - - Other - Andre - - - - I am fine - Jeg har det bra - - - - Have to go - Må stikke - - - - Bye - Hdet - - - - Appearance - Utseende - - - - Appearance Settings - Utseende innstillinger - - - - QtAudioSettings - - - - Advanced - Avansert - - - - Audio - Lyd - - - - Audio Settings - Lyd innstillinger - - - - QtCallBar - - - +(country code) number or nickname - ?(landskode) nummer eller kallenavn - - - - QtCallForwardSettings - - - - Call Forward - Viderkobbling - - - - Call Forward Settings - Viderekobblings innstillinger - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Lagre som - - - - QtChatLogViewer - - - Edit Contact - Rediger kontakt - - - - QtChatTabWidget - - - Close chat - Lukk lynmelding - - - - QtChatWidget - - - %1 is connected. - %1 er tilkobblet - - - - %1 is disconnected. - %1 er frakobblet. - - - - send - send - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Filen din kan ikke sendes: din kontakt må være oppkobblet på @company@ nettverket. - - - - Your contact wishes to send a file with @company@. - Kontakten din ønsker å sende en fil med @company@. - - - - Go to %1 to install it - Gå til %1 for å innstalere det - - - - %1 has joined the chat - - - - - - %1 has left the chat - %1 har folatt samtalen - - - - QtChatWindow - - - Edit Contact - Rediger kontakt - - - - @product@ Chat - @product@ tekstsamtale - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Rinfgg SIP - - - - Call land line - Ring fasttelefon - - - - Call Mobile - Ring mobiltelefon - - - - Call @company@ - Ring @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - >b>Du kan nå informere din første samtalepartner at han/hun kommer til å være en del av en konferanse samtale.</b><br><br>Når det er gjort, klikk på knappen nedenfor. Din første samtalepartner wil bli lagt på venting mens din andre samtalepartner blir ringt opp.<br> - - - - Hold first interlocutor and call second one - Sett første samtalepartner på vent og ring den andre. - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Du kan nå informere din andre samtalepartner om at han/hun kommer til å bli tatt inn i en konferansesamtale.</b><br><br>Når det er gjort, klikk på knappen nedenfor så starter konferansesamtalen. - - - - Start Conference - Start konferanse - - - - - @product@ - Proceed Conference - @product@ - fortsett med konferanse - - - - QtContactList - - - &Yes - &Ja - - - - &No - &Nei - - - - Merge %1 with %2? - Kobble sammen %1 med %2? - - - - @product@ - Merge Contacts - @product@ - Slå ssammen kontakter - - - - QtContactManager - - - &Yes - &Ja - - - - &No - &Nei - - - - Home phone - Hjemme telefon - - - - Mobile phone - Mobiltelefon - - - - @product@ - @product@ - - - - Edit Contact - Rediger kontakt - - - - Do you really want to delete this contact? - Vil du virkelig slette denne kontakten? - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - Mobiltelefon nummer ikke definert - - - - No landline phone number set - Fasttelefon nummer ikke definert - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Ja - - - - &No - &Nei - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Avbryt - - - - Remove - Fjern - - - - - Pause - Pause - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Generelt - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Type: - - - - Name/ID - Navn/ID - - - - Date - Dato - - - - Duration - Varighet - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - &Delete - &Slett - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - &Delete - &Slett - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - kobling - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Innkommende samtale - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Avansert >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Rinfgg SIP - - - - Call land line - Ring fasttelefon - - - - Call Mobile - Ring mobiltelefon - - - - Call @company@ - Ring @company@ - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Avbryt - - - - @product@ - Proceed Conference - @product@ - fortsett med konferanse - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - Rediger kontakt - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Avansert - - - - General - Generelt - - - - Accounts - Kontoer - - - - Audio - Lyd - - - - Call Forward - Viderkobbling - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Avbryt - - - - - - - Conference - Konferanse - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Avbryt - - - - OK - Ok - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Skjema - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Send - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Avbryt - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Skjema - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Skjema - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Avbryt - - - - Save - Lagre - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Godta - - - - &Hidden - &Skjult - - - - &Tools - &Verktøy - - - - &Help - &Hjelp - - - - &Actions - &Handlinger - - - - @company@ - @company@ - - - - &Close - &Lukk - - - - Dialpad - Telefon tastatur - - - - @product@ - @product@ - - - - Start Conference - Start konferanse - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Legg til - - - - SMS - - - - - - Conference - Konferanse - - - - Wizard - - - Cancel - Avbryt - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Pålogging - - - - Password: - Passord: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nl.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nl.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nl.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_nl.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4788 +0,0 @@ - - - - - AIMSettings - - - Login: - Login: - - - - Forgot your AIM password? - Uw AIM wachtwoord vergeten? - - - - Get a new AIM Account - Maak een nieuwe AIM account aan - - - - Password: - Wachtwoord: - - - - AIM Settings - AIM Instellingen - - - - AboutWindow - - - About - Over - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Auteurs - - - - Close - Sluiten - - - - 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. - Dit programma is vrije software; u mag het verspreiden en/of -wijzigen onder de voorwaarden van de GNU General Public License zoals -gepubliceerd door de Free Software Foundation; ofwel versie 2, ofwel (als -u dat wil) een nieuwere versie. - - - - @product@ - About - @product@ - Over - - - - @product@, a voice over Internet phone - @product@, een voice over internet telefoon - - - - AcceptDialog - - - File Transfer - Bestandsoverdracht - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Accepteer - - - - &Cancel - &Annuleren - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contactpersoon: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bestandsnaam: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Inkomend Bestand</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Bewerk mijn profiel - - - - AddAccount - - - Configure your account: - Configureer uw account: - - - - &Next - &Volgende - - - - Need help? - Hulp Nodig? - - - - You don't have any account ? Click here - U heeft geen account? Klik hier - - - - &Back - &Terug - - - - Cancel - Annuleren - - - - @product@ - Login - @product@ - Inlognaam - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configureer uw voip account</span><br><br><span>Laat ons weten of uw account wordt verzorgd<br/>door @company@ of door een andere provider</span> - - - - @company@ account - @company@ account - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Annuleren - - - - Contact Type (protocol): - Contact Type (protocol): - - - - Contact ID: - Contact ID: - - - - Account: - Account: - - - - Enable - Toestaan - - - - Login - Inlognaam - - - - Add - Toevoegen - - - - @product@ - Add a Contact Account - @product@ - Voeg een Contactpersoon Toe - - - - AddSIPAccount - - - Password: - Wachtwoord: - - - - Need help? - Hulp Nodig? - - - - &Back - &Terug - - - - Cancel - Annuleren - - - - @product@ - Login - @product@ - Inlognaam - - - - &Connect - &Verbinden - - - - Activate presence and chat (SIP/SIMPLE) - Activeer aanwezigheid en chat (SIP/SIMPLE) - - - - Displayname: - Bijnaam: - - - - login / username: - login / gebruikersnaam: - - - - Account name: - Accountnaam: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - SIP Domein / Realm: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configureer uw SIP-profiel</span><br><br><span>Vul de gegevens in waarmee uw softphone<br/>met uw SIP-account kan verbinden</span> - - - - Advanced - Geavanceerd - - - - AddWengoAccount - - - Password: - Wachtwoord: - - - - Need help? - Hulp Nodig? - - - - &Back - &Terug - - - - Cancel - Annuleren - - - - @product@ - Login - @product@ - Inlognaam - - - - &Connect - &Verbinden - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:18pt;">Aanmelden</span><br><br><span>Voer uw e-mailadres en wachtwoord in</span> - - - - Email Address: - Emailadres: - - - - Click here if you don't have a @company@ account - Klik hier als u geen @company@ account hebt - - - - Forgot your @company@ password? - Uw @company@ wachtwoord vergeten? - - - - AdvancedConfigWindow - - - Close - Sluiten - - - - Preference Name - Voorkeur-naam - - - - Type - Soort - - - - Value - Waarde - - - - Default Value - Standaardwaarde - - - - Save - Opslaan - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - Geavanceerde Configuratie - - - - AdvancedSettings - - - Add - Toevoegen - - - - Advanced Settings - Uitgebreide instellingen - - - - Advanced Configuration Window - Geavanceerd Configuratiescherm - - - - Automatically answer incoming calls from - Automatisch de binnenkomende gesprekken beantwoorden van - - - - Remove - Verwijderen - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Waarschuwing, dit gedeelte is voor geavanceerde gebruikers,<br>iedere fout kan de software ernstig beschadigen. - - - - AppearanceSettings - - - Toolbar - Werkbalk - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - &Verborgen - - - - Chat Theme - - - - - - Form - Formulier - - - - AudioSettings - - - Reset - Herstellen - - - - Audio Codecs - Audio-codecs - - - - &Input device: - &Inputapparaat: - - - - &Output device: - &Outputapparaat - - - - &Ringing device: - &Beltoonapparaat: - - - - &Make a test call - &Voer een testgesprek - - - - - Test - Test - - - - &Advanced >> - &Geavanceerd >> - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulier - - - - AvatarWidget - - - Form - Formulier - - - - BrowserSoftUpdateWindow - - - Close - Sluiten - - - - @product@ - Update available - @product@ - Update beschikbaar - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3e: - - - - 1st: - 1ste: - - - - 2nd: - 2e: - - - - - - (+ country code) phone number - (+ landcode) telefoonnummer - - - - Forward all unanswered calls to message box - Schakel alle onbeantwoorde gesprekken door naar de messagebox - - - - Disable call forwarding - Schakel doorsturen uit - - - - Forward all unanswered calls to following phone numbers: - Schakel alle onbeantwoorde gesprekken door naar de volgende telefoonnummers: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Bijvoorbeeld +3314500XXXX (+33 is de landcode en 14500XXXX is het telefoonnummer) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Het doorschakelen van gesprekken is actief als u niet verbonden bent met @company@, als uw lijn in gesprek is of 20 seconden nadat u een gesprek niet beantwoordde. U kunt tot drie doorschakelmogelijkheden configureren naar vaste lijnen, mobiele telefoons of voicemail (indien van toepassing) - - - - CallToaster - - - Incoming Call - Binnenkomend Gesprek - - - - Message - Bericht - - - - ChatLogViewer - - - Chat History - Chatgeschiedenis - - - - &Contact - &Contactpersoon - - - - &Tools - &Gereedschappen - - - - &Help - &Help - - - - &Actions - &Acties - - - - Main Toolbar - Hoofdwerkbalk - - - - - - Call Contact - Contactpersoon bellen - - - - - - Send a File - Bestand verzenden - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Contactinformatie weergeven - - - - blockContact - blockContact - - - - &Save History As... - Geschiedenis op&slaan als... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contactpersoon - - - - &Tools - &Gereedschappen - - - - &Actions - &Acties - - - - Main Toolbar - Hoofdwerkbalk - - - - - - Call Contact - Contactpersoon bellen - - - - - - Send a File - Bestand verzenden - - - - - - Show Contact Info - Contactinformatie weergeven - - - - blockContact - blockContact - - - - &Save History As... - Geschiedenis op&slaan als... - - - - @company@ - @company@ - - - - MainWindow - MainWindow - - - - &Edit - B&ewerken - - - - Cu&t - &Knippen - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopiëren - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Plakken - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Start Groepschat - - - - &Close - Sl&uiten - - - - Conference - Groepsgesprek - - - - ChatRoomInviteWidget - - - Chat room - Chatroom - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chatroom</span></p></body></html> - - - - (Conference participants) - (Groepsgesprek-deelnemers) - - - - &Remove - &Verwijderen - - - - &Start - &Start - - - - Group Name - Groepsnaam - - - - &Add - &Toevoegen - - - - ChatToaster - - - Message - Bericht - - - - Incoming Chat - Binnenkomende chat - - - - ChatWidget - - - Form - Formulier - - - - ConferenceCallWidget - - - Cancel - Annuleren - - - - Start - Start - - - - Phone number 2: - Telefoonnummer 2: - - - - Phone number 1: - Telefoonnummer 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Start een Groepsgesprek - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Groepsgesprek</span><br /><br />Gelieve twee telefoonnummers of @company@ </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">contact ID's in te voeren om</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">een groepsgesprek met 3 deelnemers te starten.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Groepsgesprek</span><br /><br />Gelieve twee telefoonnummers of @company@ </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">contact ID's in te voeren om</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">een groepsgesprek met 3 deelnemers te starten.</p> - - - - &Add >> - &Toevoegen >> - - - - << &Remove - << &Verwijder - - - - Available Contacts - Beschikbare Contactpersonen - - - - &Start - &Start - - - - Cancel - Annuleren - - - - ContactGroupPopupMenu - - - Remove Contact Group - Verwijder contactpersonengroep - - - - Rename Contact Group - Contectpersonengroep hernoemen - - - - Delete group - Groep verwijderen - - - - Do you really want to delete this group? - Weet u zeker dat u deze groep wilt verwijderen? - - - - &Yes - &Ja - - - - &No - &Nee - - - - ContactList - - - Contact List - Contactenlijst - - - - ContactWidget - - - No mobile phone number set - Geen mobielnummer ingevuld - - - - No landline phone number set - Geen vast nummer ingevuld - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om dit contactpersoon te wijzigen</p></body></html> - - - - CrashReport - - - Cancel - Annuleren - - - - Program Failure - Programmafout - - - - Send - Versturen - - - - Optional Information - Optionele infomatie - - - - Your Mail: - Uw e-mailadres: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Niet beschikbaar - - - - Click here to change your call forward settings - Klik hier om uw doorschakelinstellingen te wijzigen - - - - Call forward mode: - Doorschakelmodus: - - - - Purchase call out credits - Koop uitbel-credits - - - - Call Forward Method - Doorschakelmethode - - - - Call Voice Mail - Voicemail bellen - - - - Click here to buy @company@'s credits - Klik hier om krediet bij @company@ te kopen - - - - DesktopService - - - Root Folder - Hoofdmap - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Klik op de diverse van kleur veranderende items om geluiden naar uw gesprekspartner te sturen. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Klik hier om uw voicemail te bellen. - - - - New Voice Mail: - Nieuwe voicemail: - - - - Click here to see missed call(s) - Klik hier om gemist(e) gesprek(ken) te bekijken - - - - Missed Call(s): - Gemist(e) gesprek(ken): - - - - FileTransferDialog - - - ... - ... - - - - Download - Download - - - - Upload - Upload - - - - Click here to change your download folder - Klik hier om uw downloadmap te wijzigen - - - - Download folder: - Downloadmap: - - - - Clean all items in the list - Alle items in de lijst wissen - - - - &Clean - &Wissen - - - - @product@ - File Transfer Manager - @product@ - Bestandsoverdrachtbeheer - - - - FileTransferItem - - - Cancel - Annuleren - - - - Form - Formulier - - - - Pause - Pauze - - - - <i>From:</i> - <i>Van:</i> - - - - GeneralSettings - - - When I double-click on a contact - Als ik op een contactpersoon dubbeklik - - - - Call cell phone or land line if contact not online - Bel mobiel of vast nummer als de contactpersoon niet online is - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Inactief status - - - - minutes - minuten - - - - Show me as "Away" when I am inactive for: - Geef mij al "Weg" weer als ik langer inactief ben dan: - - - - When I start my computer - Als ik mijn computer start - - - - Automatically start @product@ - Start @product@ automatisch - - - - GoogleTalkSettings - - - Login: - Login: - - - - Password: - Wachtwoord: - - - - GoogleTalk Settings - GoogleTalk instellingen - - - - Forgot your GoogleTalk password? - GoogleTalk wachtwoord vergeten? - - - - Get a new GoogleTalk Account - Nieuw Google Talk account aanmaken - - - - HttpProxyLoginWindow - - - Cancel - Annuleren - - - - HTTP Proxy Address: - HTTP-proxyadres: - - - - HTTP Proxy Port Number: - HTTP-proxy poortnummer: - - - - HTTP Proxy Login: - HTTP_proxy gebruikersnaam: - - - - HTTP Proxy Password: - HTTP-proxy wachtwoord: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP-proxy authentificatie</span><br><br><span>Uw lokale HTTP-proxy gebruikt authentificatie<br>Voer uw gebruikersnaam en wachtwoord in</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Lokale HTTP Proxy - - - - ICQSettings - - - Login: - Login: - - - - Password: - Wachtwoord: - - - - ICQ Settings - ICQ instellingen - - - - Forgot your ICQ password? - ICQ wachtwoord vergeten? - - - - Get a new ICQ Account - Nieuw ICQ-account - - - - IMAccountManager - - - Close - Sluiten - - - - Login - Inlognaam - - - - Add - Toevoegen - - - - Delete - Verwijderen - - - - Modify - Wijzigen - - - - Protocol - Protocol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Mijn Instant Messaging Accounts (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Annuleren - - - - Save - Opslaan - - - - IM Account Settings - IM-accountinstellingen - - - - IMContactManager - - - Add - Toevoegen - - - - Delete - Verwijderen - - - - Contact Type (protocol) - Contactpersoon-type (protocol) - - - - Click on the add button below to add a new ID - Klik de knop toevoegen hieronder om een nieuw ID toe te voegen - - - - Contact ID - Contactpersoon-ID - - - - IMProfileWidget - - - - Enter your nickname here - Voer uw nickname in - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Nieuw instant messaging account (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Nieuw IM-account - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om uw avatar te veranderen</p></body></html> - - - - ImageSelector - - - Cancel - Annuleren - - - - OK - OK - - - - Go Up - Naar boven - - - - Refresh - Verversen - - - - JabberSettings - - - Login: - Login: - - - - Password: - Wachtwoord: - - - - Jabber Settings - Jabber-instellingen - - - - Connect Server: - Verbinden met server: - - - - <u>Advanced Options</u> - <u>Geavanceerde opties</u> - - - - Require TLS - TLS vereist - - - - Port: - Poort: - - - - Use TLS if available - TLS gebruiken indien beschikbaar - - - - Allow plaintext authentication over unencrypted streams - Authenticatie in platte tekst over niet-geëncrypte stream toestaan - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Oude SSL (poort 5223) forceren - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Uw taal staat hier niet bij, weet u dat u op Launchpad uw eigen vertaling kunt maken? - - - - More information here. - Meer informatie hier. - - - - LogAccount - - - Password: - Wachtwoord: - - - - Need help? - Hulp Nodig? - - - - Cancel - Annuleren - - - - Delete - Verwijderen - - - - @product@ - Login - @product@ - Inlognaam - - - - Account: - Account: - - - - &Connect - &Verbinden - - - - Forgot your @company@ password? - Uw @company@ wachtwoord vergeten? - - - - &Modify - &Wijzigen - - - - Configure a &New Profile - Configureer een &nieuw profiel - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Kies een eerder gebruikt profiel<br/> of vul de informatie in om een nieuwe<br/> @company@ account aan te maken</span> - - - - MSNSettings - - - Login: - Login: - - - - Password: - Wachtwoord: - - - - MSN Settings - MSN-instellingen - - - - Forgot your MSN password? - MSN-wachtwoord vergeten? - - - - Get a new MSN Account - Nieuw MSN-account - - - - Use HTTP method - Gebruik HTTP methode - - - - MainWindow - - - MainWindow - MainWindow - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Gesprek accepteren - - - - Send Chat Message - Chatbericht versturen - - - - Make Call - Opbellen - - - - Hang Up - Ophangen - - - - ManageBlockedUsersSettings - - - Close - Sluiten - - - - Unblock User - Gebruiker deblokkeren - - - - Manage blocked users - Geblokkeerde gebruikers beheren - - - - @product@ - Manage blocked users - @product@ - Bewerk geblokkeerde gebruikers - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Ik heb een @company@ account - - - - Create a @company@ account - Maak een @company@ account aan - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Om een SMS-bericht te verzenden dient u ingelogd te zijn met een<br>@company@account en dient u krediet bij @company@ te hebben. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Kies de gebeurtenissen waarvoor een geluid moet worden afgespeeld. - - - - NotificationSettingsItem - - - Sound file - Geluidsbestand - - - - Find a sound file - Geluidsbestand zoeken - - - - Play sound file - Geluidsbestand afspelen - - - - Play - Afspelen - - - - NotifyDialog - - - File Transfer - Bestandsoverdracht - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Accepteer - - - - Status - Status - - - - 00:00:00 - 00:00:00 - - - - Nickname - Nickname - - - - &Reject - &Afwijzen - - - - Dialpad - Kiestoetsen - - - - Audio Smileys - Audio smileys - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Geblokkeerde gebruikers beheren - - - - Privacy Rules - Privacy regels - - - - Always sign in as "Invisible" (appear offline to all users) - Altijd als "Onzichtbaar" aanmelden (lijkt op offline voor alle gebruikers) - - - - Allow chats from - Chats toestaan van - - - - - Anyone - Iedereen - - - - - Only people from my contact list - Alleen mensen op mijn contactenlijst - - - - Allow calls from - Telefoongesprekken toestaan van - - - - When I sign into @company@ - Als ik inlog by @company@ - - - - ProfileDetails - - - Cancel - Annuleren - - - - Save - Opslaan - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klik om uw avatar te veranderen</p></body></html> - - - - General - Algemeen - - - - Network IDs (MSN, Jabber...) - Netwerk-ID's (MSN,Jabber...) - - - - Advanced >> - Geavanceerd >> - - - - Fill in all your network Id to stay connected with your contacts - Vul al uw netwerk-ID's in om met uw contactpersonen in contact te blijven - - - - Contact - Contactpersoon - - - - Group: - Groep: - - - - Last Name: - Achternaam: - - - - First Name: - Voornaam: - - - - Details - Details - - - - Web/blog: - Web/blog: - - - - Country: - Land: - - - - State: - Provincie: - - - - City: - Stad: - - - - Gender: - Geslacht: - - - - Birth Date: - Geboortedatum: - - - - Email: - E-mailadres: - - - - Notes - Notities - - - - Phone Numbers - Telefoonnummers - - - - Home phone - Telefoon thuis - - - - Mobile phone - Mobiele telefoon - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Onbekend - - - - Male - Man - - - - Female - Vrouw - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Accounts - - - - Accounts Settings - Accountinstellingen - - - - QtAddAccount - - - Configure your voip account - Configureer uw VOIP-account - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Gelieve ons te laten weten of uw account wordt verzorgd</br>door @company@ of door een andere provider - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - Audio Testgesprek - - - - Video Test Call - Video Testgesprek - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Vul de informatie in waarmee<br/>Wengo met uw SIP-account kan<br/>verbinden - - - - Configure your SIP profile - Configureer uw SIP-profiel - - - - QtAddWengoAccount - - - Login - Inlognaam - - - - Please enter an email address. - Voer een email adres in. - - - - Please enter your email address<br/>and your password - Voer uw e-mailadres en<br/>uw wachtwoord in - - - - @product@ - Connexion - @product@ - Verbinding - - - - QtAdvancedIMContactManager - - - Cancel - Annuleren - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Weet u zeker dat u dit IM contactpersoon wil verwijderen? - - - - - &Delete - Verwij&deren - - - - QtAdvancedSettings - - - Advanced - Geavanceerd - - - - Advanced Settings - Uitgebreide instellingen - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Geavanceerd - - - - Audio - Geluid - - - - Audio Settings - Geluidsinstellingen - - - - QtCallBar - - - +(country code) number or nickname - +(landcode) nummer of nickname - - - - QtCallForwardSettings - - - - Call Forward - Doorschakelen - - - - Call Forward Settings - Doorschakelinstellingen - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Opslaan als - - - - QtChatLogViewer - - - Edit Contact - Contactpersoon bewerken - - - - QtChatTabWidget - - - Close chat - Chat sluiten - - - - QtChatWidget - - - %1 is connected. - %1 is verbonden. - - - - %1 is disconnected. - %1 is niet verbonden. - - - - send - versturen - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Uw bestand kan niet worden verzonden: uw contactpersoon dient verbonden te zijn met het @company@ netwerk. - - - - Your contact wishes to send a file with @company@. - Uw contactpersoon wil u een bestand versturen met @company@. - - - - Go to %1 to install it - Ga naar %1 om het te installeren - - - - %1 has joined the chat - %1 neemt deel aan de chat - - - - %1 has left the chat - %1 heeft de chat verlaten - - - - QtChatWindow - - - Edit Contact - Contactpersoon bewerken - - - - @product@ Chat - @product@ Chat - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Bel SIP - - - - Call land line - Bel vast nummer - - - - Call Mobile - Bel mobiel - - - - Call @company@ - Bel @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>U kunt uw eerste gesprekspartner nu vertellen dat hij deel gaat uitmaken van een groepsgesprek.</b><br><br>Klik, zodra u dat hebt gedaan, op de knop hieronder. Uw eerste gesprekspartner zal in de wacht worden gezet terwijl uw tweede gesprekspartner wordt gebeld.<br> - - - - Hold first interlocutor and call second one - Zet eerste gesprekspartner in de wacht en bel de tweede - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>U kunt nu uw tweede gesrprekspartner vertellen dat hij deel gaat uitmaken van een groepsgesprek.</b><br><br>Klik, zodra u dat hebt gedaan, op de knop hieronder om het groepsgesprek te starten. - - - - Start Conference - Groepsgesprek starten - - - - - @product@ - Proceed Conference - @product@ - Ga verder met Groepsgesprek - - - - QtContactList - - - &Yes - &Ja - - - - &No - &Nee - - - - Merge %1 with %2? - %1 en %2 samenvoegen? - - - - @product@ - Merge Contacts - @product@ - Contactpersonen Samenvoegen - - - - QtContactManager - - - &Yes - &Ja - - - - &No - &Nee - - - - Home phone - Telefoon thuis - - - - Mobile phone - Mobiele telefoon - - - - @product@ - @product@ - - - - Edit Contact - Contactpersoon bewerken - - - - Do you really want to delete this contact? - Wilt u deze contactpersoon werkelijk verwijderen? - - - - Start chat - Begin chat - - - - - Delete contact - Contactpersoon verwijderen - - - - Call - Bellen - - - - Free call - - - - - Work phone - Telefoon werk - - - - Send SMS - SMS versturen - - - - Edit contact - Contactpersoon bewerken - - - - Block contact - Contactpersoon blokkeren - - - - Invite to conference - Uitnodigen voor groepsgesprek - - - - Go to website - Ga naar website - - - - Send file - Bestand sturen - - - - Forward to mobile phone - Doorschakelen naar mobiel nummer - - - - QtContactWidget - - - No mobile phone number set - Geen mobielnummer ingevuld - - - - No landline phone number set - Geen vast nummer ingevuld - - - - - Click here to call - Klik hier om te bellen - - - - - Click here to set a phone number - Klik hier om een telefoonnummer in te stellen - - - - Click here to edit the contact - Klik hier om de contactpersoon te bewerken - - - - Click here to send a SMS - Klik hier om een SMS te versturen - - - - Click here to start a chat - Klik hier om een chat te beginnen - - - - Click here to start a free call - Klik hier om een gratis telefoongesprek te beginnen - - - - Click here to send a file - Klik hier om een bestand te sturen - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Wilt u uw voicemail bellen? - - - - @product@ - Voice Mail - @product@ - Voicemail - - - - QtFileTransfer - - - &Yes - &Ja - - - - &No - &Nee - - - - Choose a directory - Kies een map - - - - Overwrite File? - Bestand overschrijven? - - - - A file called %1 already exists.Do you want to overwrite it? - Er bestaat al een bestand met de naam %1. Wilt u dit bestand overschrijven? - - - - - File size error - Fout in bestandsgrootte - - - - %1 exceeds the maximum authorized size. - %1 overschrijdt de maximum toegestane grootte. - - - - %1 has size 0. - %1 heeft een grootte van 0. - - - - %1 is a directory. - %1 is een map. - - - - You can not send a directory. - U kunt geen map versturen. - - - - %1 is a shortcut. - %1 is een snelkoppeling. - - - - You can not send a shortcut. - U kunt geen snelkoppeling versturen. - - - - All Files (*.* *) - Alle bestanden (*.* *) - - - - Please upgrade<br> your @product@ - Gelieve uw @product@<br> te upgraden - - - - Tell your contact<br> to upgrade<br> his @product@ - Vertel uw contactpersoon<br> dat zijn @product@<br> geüpgrade dient te worden - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Annuleren - - - - Remove - Verwijderen - - - - - Pause - Pauze - - - - Starting - Opstarten - - - - From: - Van: - - - - To: - Naar: - - - - Open - Openen - - - - Resume - Doorgaan - - - - Waiting for anwser... - Wachten op antwoord... - - - - Done - Gereed - - - - Failed - Mislukt - - - - Paused - Gepauzeerd - - - - Paused by peer - Gepauzeerd door gesprekspartner - - - - Cancelled - Geannuleerd - - - - Cancelled by peer - Geannuleerd door gesprekspartner - - - - - Downloading... - Downloaden... - - - - Uploading... - Uploaden... - - - - Waiting for peer... - Wachten op de gesprekspartner... - - - - An error occured during the file transfer - Er is een fout opgetreden tijdens de bstandsoverdracht - - - - This may be caused by : - Dit kan worden veroozaakt door: - - - - Your @product@ is not up to date. Please download the latest version on - Uw @product@-versie is niet actueel. Gelieve de nieuwste versie te downloaden op - - - - The @company@ network may be temporarily unavailable. Please try later. - Het @company@netwerk kan tijdelijk onbeschikbaar zijn. Probeert u het later nog eens. - - - - QtGeneralSettings - - - General - Algemeen - - - - General Settings - Algemene instellingen - - - - QtHistory - - - Incoming call - Binnenkomend gesprek - - - - Outgoing call - Uitgaand gesprek - - - - Missed call - Gemist gesprek - - - - Rejected call - Afgewezen gesprek - - - - Outgoing SMS - Uitgaande SMS - - - - Do you want to call %1? - Wilt u %1 opbellen? - - - - Chat session - Chatsessie - - - - @product@ - Call History - @product@ - Belgeschiedenis - - - - Type - Soort - - - - Name/ID - Naam/ID - - - - Date - Datum - - - - Duration - Gespreksduur - - - - QtHistoryWidget - - - Erase this entry - Dit item wissen - - - - Open in SMS window - Openen in SMS venster - - - - Call this peer - Bel deze persoon - - - - Show chat log - Chatlog weergeven - - - - QtIMAccountManager - - - Cancel - Annuleren - - - - @product@ - @product@ - - - - &Delete - Verwij&deren - - - - Are sure you want to delete this account? - - Weet u zeker dat u deze account wil verwijderen? - - - - - QtIMAccountMonitor - - - - - Disconnected - Verbinding verbroken - - - - Error: %1 - Fout: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Online - - - - Invisible - Onzichtbaar - - - - Away - Weg - - - - Do not disturb - Niet storen - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Voer een gebruikersnaam in - - - - QtIMAccountPresenceMenuManager - - - Cancel - Annuleren - - - - @product@ - @product@ - - - - &Delete - Verwij&deren - - - - Online - Online - - - - Invisible - Onzichtbaar - - - - Away - Weg - - - - Do Not Disturb - Niet storen - - - - Disconnect - Verbinding verbreken - - - - Delete Account - Account verwijderen - - - - Are sure you want to delete the account <b>%1</b>? - Weet u zeker dat u account <b>%1</b> wilt verwijderen? - - - - QtIMProfileWidget - - - Edit My Profile - Bewerk mijn profiel - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Taal - - - - Language Settings - Taalinstellingen - - - - QtLogAccount - - - Invalid account - Ongeldig account - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Gelieve een eerder gebruikt profiel te kiezen<br/> of de benodigde informatie in te vullen om<br/> verbinding te maken met een @company@ account - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Verbinding - - - - QtNotificationSettings - - - Incoming call (ringtone) - Binnenkomend gesprek (ringtone) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Gesprek beïndigd (geluid bij ophangen) - - - - Incoming chat - Binnenkomend bericht - - - - IM account connected - IM-account verbonden - - - - IM account disconnected - IM-account niet verbonden - - - - Contact online - Contactpersoon online - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Kies een geluidsbestand - - - - Sounds - Geluiden - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Binnenkomend Gesprek - - - - Resume - Doorgaan - - - - Hang-up - Ophangen - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Fout - - - - Talking - In gesprek - - - - Dialing - Nummer kiezen - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Gaat over - - - - Redirected - Doorgeschakeld - - - - Initialization... - Initialisatie... - - - - Closed - Gesloten - - - - - Hold - Wacht - - - - Add contact - Contactpersoon toevoegen - - - - Ca&ncel - A&nnuleren - - - - Talking - Conference - In gesprek - Groepsgesprek - - - - Add a Contact - Contactpersoon toevoegen - - - - QtPresenceMenuManager - - - Online - Online - - - - Invisible - Onzichtbaar - - - - Away - Weg - - - - Do Not Disturb - Niet storen - - - - Log off - Afmelden - - - - QtPrivacySettings - - - Privacy - Privacy - - - - Privacy Settings - Privacy-instellingen - - - - QtProfileBar - - - Click here to change your status - Klik hier om uw status te wijzigen - - - - - active - actief - - - - voicemail - voicemail - - - - inactive - inactief - - - - unauthorized - niet toegestaan - - - - Set global presence to: - Stel globale aanwezigheid in op: - - - - Voice mail - Voicemail - - - - QtProfileDetails - - - Advanced >> - Geavanceerd >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Een contactpersoon moet een groep hebben. Stel een groep in. - - - - << Simple - << Simpel - - - - Select your avatar - Kies uw avatar - - - - @product@ - No Group Selected - @product@ - Geen Groep Geselecteerd - - - - @company@ Avatars - @company@ Avatars - - - - QtRenameGroup - - - Bad group name - Fout in groepsnaam - - - - Group name cannot be empty - Groepsnaam mag niet leeg zijn - - - - QtSecuritySettings - - - Security - Beveiliging - - - - Security Settings - Beveiligingsinstellingen - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Voer een telefoonnummer in. - - - - Do you want to continue? - Wilt u doorgaan? - - - - Your SMS has not been sent - Uw SMS is niet verzonden - - - - Your SMS has been sent - Uw SMS is verzonden - - - - Your message is too long. -This will send - Uw bericht is te lang. -Dit zal worden verzonden: - - - - SMS. - - SMS. - - - - - You can not send an empty message. - U kunt geen leeg bericht verzenden. - - - - - - - @company@ SMS service - @company@ SMS dienst - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Update mislukt - - - - @product@ update failed to start: try to update @product@ manually - @product@ update kon niet worden gestart: probeer @product@ handmatig te updaten - - - - QtStatusBar - - - - Not connected - Niet verbonden - - - - Register done - Registratie gereed - - - - Unregister done - Uitschrijven gereed - - - - Connecting - Verbinden - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Bel SIP - - - - Call land line - Bel vast nummer - - - - Call Mobile - Bel mobiel - - - - Call @company@ - Bel @company@ - - - - Call - Bellen - - - - Send SMS - SMS versturen - - - - Online - Online - - - - Invisible - Onzichtbaar - - - - Away - Weg - - - - Do Not Disturb - Niet storen - - - - Internet Connection Error - Probleem met internetverbinding - - - - Offline - Offline - - - - Connecting... - Verbinden... - - - - Send a SMS - Verstuur een SMS - - - - Start a chat - Begin een chat - - - - Place Call - Begin een gesprek - - - - Send File - Bestand verzenden - - - - Multiple Status - Meervoudige status - - - - Unknown Status - Onbekende status - - - - Quit @product@ - Sluit @product@ - - - - QtToolBar - - - &Cancel - &Annuleren - - - - @product@ - Proceed Conference - @product@ - Ga verder met Groepsgesprek - - - - Edit My Profile - Bewerk mijn profiel - - - - Add a Contact - Contactpersoon toevoegen - - - - Hide Unavailable Contacts - Beschikbare contacten verbergen - - - - Show Unavailable Contacts - Niet-beschikbare contactpersonen weergeven - - - - Hide Groups - Groepen verbergen - - - - Show Groups - Groepen weergeven - - - - You have unfinished call(s). - U hebt onafgemaakte telefoongesprek(ken). - - - - Are you sure you want to log off? - Weet u zeker dat u zich wilt afmelden? - - - - &Log Off - Afme&lden - - - - Disable &Video Calls - &Videogesprekken uitschakelen - - - - Enable &Video Calls - &Videogesprekken inschakelen - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Groepsgesprek kan niet worden gestart als er nog telefoongesprekken actief zijn.</b><br><br>Rond alle gesprekken af en probeer opnieuw. - - - - @product@ - Warning - @product@ - Waarschuwing - - - - - Log &Off... - A&fmelden - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Contactenlijst - - - - QtUserProfile - - - Edit Contact - Contactpersoon bewerken - - - - - &Authorize - Toest&aan - - - - - &Block - %Blokkeren - - - - Network error. - Netwerkfout. - - - - - @product@ - Authorization Request - @product@ - Authorizatieverzoek - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Er deed zich een probleem voor bij het laden van uw profiel. -Het laatste profiel waarvan een back-up beschikbaar was is geladen: -het is mogelijk dat recente veranderingen verloren zijn gegaan - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Uw profiel kon niet worden geladen. -Kies een ander profiel of maak een nieuwe aan. - - - - Wrong email/password entered - Verkeerd email/wachtwoord ingevuld - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normaal - - - - - Good - Goed - - - - - Very good - Zeer goed - - - - - Excellent - Uitstekend - - - - Video Settings - Video-instellingen - - - - QtVoicemailSettings - - - Voicemail - Voicemail - - - - Voicemail Settings - Voicemail-instellingen - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Directory - - - - QtWengoConfigDialog - - - Advanced - Geavanceerd - - - - General - Algemeen - - - - Accounts - Accounts - - - - Audio - Geluid - - - - Call Forward - Doorschakelen - - - - Language - Taal - - - - Privacy - Privacy - - - - Video - Video - - - - Voicemail - Voicemail - - - - security - beveiliging - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Annuleren - - - - - - - Conference - Groepsgesprek - - - - Call - Bellen - - - - Account - - - - - Add a Contact - Contactpersoon toevoegen - - - - You have unfinished call(s). - U hebt onafgemaakte telefoongesprek(ken). - - - - @product@ - Warning - @product@ - Waarschuwing - - - - - Home - Persoonlijke map - - - - Are you sure you want to exit the application? - Weet u zeker dat u het programma wilt afsluiten? - - - - &Exit - Afsluit&en - - - - @product@ - Call Error - @product@ - Gespreksfout - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Annuleren - - - - OK - OK - - - - Enter the new group name: - Voer de nieuwe groepnaam in: - - - - @product@ - Rename Contact Group - @product@ - Hernaam Contactpersonengroep - - - - SecuritySettings - - - Form - Formulier - - - - Enable call encryption - Gespreksversleuteling inschakelen - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ can gesprekken encrypteren met het AES 128-bits encryptiesysteem en Diffie-Hellman voor sleuteluitwisseling. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Uw profiel bijwerken - - - - Yahoo! ID: - Yahoo!-ID: - - - - MSN ID: - MSN-ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - voorbeeld: gebruiker@server - - - - SIP ID: - SIP-ID: - - - - ICQ ID: - ICQ-ID: - - - - AIM ID: - AIM-ID: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Versturen - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Klik hier om een telefoonnummer toe te voegen - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Voer hier uw handtekening in - - - - Signature: - Handtekening: - - - - Phone number(s): - Telefoonnummer(s): - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Voer hier telefoonnummer(s) in<br>Ze moeten worden gescheiden door een & of ; of , - - - - SoftUpdateWindow - - - Cancel - Annuleren - - - - @product@ - Downloading update - @product@ - Bezig met downloaden van update - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulier - - - - VideoSettings - - - Normal - Normaal - - - - Good - Goed - - - - Very good - Zeer goed - - - - Excellent - Uitstekend - - - - Enable video - Video inschakelen - - - - Webcam Selection - Webcamkeuze - - - - Webcam device: - Webcam-apparaat: - - - - Webcam Preview - Webcam voorbeeldweergave - - - - Connection Type - Verbindingstype - - - - Video quality - Videokwaliteit - - - - Down (kbit/s) - Down (kbit/s) - - - - Up (kbit/s) - Up (kbit/s) - - - - 0 to 512 - 0 tot 512 - - - - 0 to 128 - 0 tot 128 - - - - 512 to 2048 - 512 tot 2048 - - - - 128 to 256 - 128 tot 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Videokwaliteit hangt af van de bandbreedte van uw internetverbinding - - - - Make a test video call - Maak een test video-oproep - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Formulier - - - - Phone number of your voicemail: - Telefoonnummer van uw voicemail: - - - - Please fill in here the information about your voicemail - Vul hier uw de informatie over uw voicemail in - - - - WengoConfigDialog - - - Cancel - Annuleren - - - - Save - Opslaan - - - - Title - Titel - - - - @product@ - Configuration - @product@ - Configuratie - - - - WengoPhoneWindow - - - &Accept - &Accepteer - - - - &Hidden - &Verborgen - - - - &Tools - &Gereedschappen - - - - &Help - &Help - - - - &Actions - &Acties - - - - @company@ - @company@ - - - - &Close - Sl&uiten - - - - Dialpad - Kiestoetsen - - - - @product@ - @product@ - - - - Start Conference - Groepsgesprek starten - - - - Send SMS - SMS versturen - - - - Contacts - Contactpersonen - - - - History - Geschiedenis - - - - Clear &History - Gesc&hiedenis wissen - - - - ToolBar - Werkbalk - - - - Show/Hide Unavailable &Contacts - Niet-beschikbare &contactpersonen weergeven/verbergen - - - - &Chat Sessions - &Chatsessies - - - - &All - &Alles - - - - &HangUp - Op&hangen - - - - &Hold/Resume - Wac&ht/voortzetten - - - - Show/Hide &Groups - &Groepen tonen/verbergen - - - - &Outgoing Calls - &Uitgaande gesprekken - - - - &Incoming Calls - &Binnenkomende gesprekken - - - - &Missed Calls - Ge&miste oproepen - - - - Enable/Disable &Video Calls - &Videogesprekken aan/uit - - - - Short Text &Messages (SMS) - Tekstberichten (S&MS) - - - - Rejected Calls - Geweigerde gesprekken - - - - &Contacts - &Contactpersonen - - - - &About... - &Info... - - - - Add &Contact... - &Contactpersoon toevoegen - - - - &Configuration... - &Configuratie... - - - - Send SMS... - SMS sturen... - - - - View My &Profile... - Mijn &profiel... - - - - - View My Profile - Mijn profiel - - - - Start &Conference... - &Groepsgesprek starten - - - - &Find Contact... - Contactpersoon &zoeken... - - - - Log &Off... - A&fmelden - - - - - Log Off - Afmelden - - - - Show &Chat Window - &Chatvenster weergeven - - - - - Show Chat Window - Chatvenster weergeven - - - - Show &File Transfer - &Bestandsoverdracht weergeven - - - - Add Contact - Contactpersoon toevoegen - - - - View My @company@ Account... - Bekijk Mijn @company@ Account... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@ &Forum - - - - @company@ &Wiki/FAQ... - @company@ &Wiki/Veelgestelde Vragen... - - - - Learn more about @company@ Services... - Kom meer te weten over diensten van @company@... - - - - Search - Zoeken - - - - Find @company@ Contacts - Vind @company@ Contactpersonen - - - - &Quit - &Afsluiten - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Tekst Onder Iconen - - - - &Icons Only - Alleen p&ictogrammen - - - - Add - Toevoegen - - - - SMS - SMS - - - - Conference - Groepsgesprek - - - - Wizard - - - Cancel - Annuleren - - - - Finish - Einde - - - - Next > - Volgende > - - - - < Back - < Terug - - - - Simple Wizard - Step %1 of %2 - Simpele wizard - stap %1 van %2 - - - - YahooSettings - - - Login: - Login: - - - - Password: - Wachtwoord: - - - - Yahoo! Settings - Yahoo!-instellingen - - - - Use Yahoo! Japan server - Gebruik Yahoo! Japan server - - - - Forgot your Yahoo! password? - Yahoo!-wachtwoord vergeten? - - - - Get a new Yahoo! Account - Nieuw Yahoo!-account - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pl.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pl.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pl.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pl.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4765 +0,0 @@ - - - - - AIMSettings - - - Login: - Użytkownik: - - - - Forgot your AIM password? - Zapomniałeś swojego hasła AIM? - - - - Get a new AIM Account - Załóż nowe konto AIM - - - - Password: - Hasło: - - - - AIM Settings - Ustawienia AIM/ICQ - - - - AboutWindow - - - About - O WengoPhone - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autorzy - - - - Close - Zamknij - - - - 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. - Ten program jest darmowym oprogramowaniem. Można go redystrybuować i/lub -modyfikować na zasadach licencji GNU General Public License opublikowanej -przez Free Software Foundation; wersja 2 lub (według uznania) jakiejkolwiek -późniejszej wersji. - - - - @product@ - About - @product@ - informacje - - - - @product@, a voice over Internet phone - @product@, rozmowy za pomocą telefonii internetowej - - - - AcceptDialog - - - File Transfer - Transfer plików - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Odbierz - - - - &Cancel - &Anuluj - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nazwa pliku: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Plik przychodzący</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Edytuj mój profil - - - - AddAccount - - - Configure your account: - Konfiguracja konta - - - - &Next - Następn&y - - - - Need help? - Potrzebujesz pomocy? - - - - You don't have any account ? Click here - Nie masz jeszcze konta? Kliknij tutaj. - - - - &Back - &Powrót - - - - Cancel - Anuluj - - - - @product@ - Login - @product@ - Logowanie - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Konfiguruj swoje konto voip</span><br><br><span>Poinformuj nas, czy dostawcą twojego konta jest<br/> @company@, czy inny usługodawca</span> - - - - @company@ account - Konto @company@ - - - - Generic SIP account - Podstawowe konto SIP - - - - AddIMContact - - - Cancel - Anuluj - - - - Contact Type (protocol): - Typ kontaktu (protokół): - - - - Contact ID: - Identyfikator kontaktu: - - - - Account: - Konto: - - - - Enable - Aktywność - - - - Login - Identyfikator - - - - Add - Dodaj - - - - @product@ - Add a Contact Account - @product@ - dodawanie konta kontaktu - - - - AddSIPAccount - - - Password: - Hasło: - - - - Need help? - Potrzebujesz pomocy? - - - - &Back - &Powrót - - - - Cancel - Anuluj - - - - @product@ - Login - @product@ - Logowanie - - - - &Connect - &Połącz - - - - Activate presence and chat (SIP/SIMPLE) - Uaktywnij status w sieci i czat (SIP/SIMPLE) - - - - Displayname: - Wyświetlana nazwa - - - - login / username: - Identyfikator/Nazwa użytkownika - - - - Account name: - Nazwa konta: - - - - Proxy: - Pośrednik: - - - - : - : - - - - Server: - Serwer: - - - - SIP Domain / Realm: - Domena / Strefa SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Skonfiguruj swój profil SIP</span><br><br><span>Proszę podać informacje<br/>które pozwolą połączyć się z twoim<br/>kontem SIP</span> - - - - Advanced - Zaawansowane - - - - AddWengoAccount - - - Password: - Hasło: - - - - Need help? - Potrzebujesz pomocy? - - - - &Back - &Powrót - - - - Cancel - Anuluj - - - - @product@ - Login - @product@ - Logowanie - - - - &Connect - &Połącz - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Logowanie</span><br><br><span>Proszę wprowadzić swój adres e-mail i hasło</span> - - - - Email Address: - E-mail: - - - - Click here if you don't have a @company@ account - Kliknij tutaj jeśli nie masz konta @company@ - - - - Forgot your @company@ password? - zapomniałeś swoje hasło @company@? - - - - AdvancedConfigWindow - - - Close - Zamknij - - - - Preference Name - Nazwa ustawień - - - - Type - Typ - - - - Value - Wartość - - - - Default Value - Wartość domyślna - - - - Save - Zapisz - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - konfiguracja zaawansowana - - - - AdvancedSettings - - - Add - Dodaj - - - - Advanced Settings - Ustawienia zaawansowane - - - - Advanced Configuration Window - Ustawienia zaawansowane - - - - Automatically answer incoming calls from - Automatycznie odbierz rozmowy od - - - - Remove - Usuń - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Ostrzeżenie! Ta część jest przeznaczona dla zaawansowanych użytkowników.<br>Jakakolwiek błędna operacja może poważnie uszkodzić aplikację. - - - - AppearanceSettings - - - Toolbar - Pasek narzędziowy - - - - &Icons && Text - &Ikony && Tekst - - - - Icons &Only - &Tylko Ikony - - - - &Hidden - &Ukryj - - - - Chat Theme - Wygląd okna rozmowy - - - - Form - Formularz - - - - AudioSettings - - - Reset - Resetuj - - - - Audio Codecs - Kodeki audio - - - - &Input device: - Urządzenia wejściowe: - - - - &Output device: - Urządzenia wyjściowe: - - - - &Ringing device: - Dzwonek: - - - - &Make a test call - &Wykonaj połączenie testowe - - - - - Test - Test - - - - &Advanced >> - &Zaawansowane>> - - - - &Half Duplex - &Half Duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formularz - - - - AvatarWidget - - - Form - Formularz - - - - BrowserSoftUpdateWindow - - - Close - Zamknij - - - - @product@ - Update available - @product@ - jest dostępna aktualizacja - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3: - - - - 1st: - 1: - - - - 2nd: - 2: - - - - - - (+ country code) phone number - (+ kod kraju) numer telefonu - - - - Forward all unanswered calls to message box - Przekazuj wszystkie nieodebrane połączenia na pocztę głosową - - - - Disable call forwarding - Wyłącz przekazywanie połączeń - - - - Forward all unanswered calls to following phone numbers: - Przekazuj wszystkie nieodebrane połączenia na następujące numery telefonów: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Na przykład: +42325364837 (+42 jest kodem kraju, a 325364837 jest numerem) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Przekazywanie połączeń uaktywnia się jeśli nie jesteś połączony z @company@, twoja linia jest zajęta lub nie odbierasz połączenia w ciągu 20 sekund. Możesz skonfigurować maksymalnie trzy przekierowywania na telefon stacjonarny, komórkowy lub pocztę głosową - jeśli jest dostępna - - - - CallToaster - - - Incoming Call - Rozmowa przychodząca - - - - Message - Wiadomość - - - - ChatLogViewer - - - Chat History - Historia czatu - - - - &Contact - &Kontakt - - - - &Tools - &Narzędzia - - - - &Help - &Pomoc - - - - &Actions - &Akcje - - - - Main Toolbar - Główny pasek narzędziowy - - - - - - Call Contact - Zadzwoń do kontaktu - - - - - - Send a File - Wyślij plik - - - - createChatConf - Utwórz czat grupowy - - - - - - Show Contact Info - Pokaż info o kontakcie - - - - blockContact - Zablokuj kontakt - - - - &Save History As... - &Zapisz historię jako... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Narzędzia - - - - &Actions - &Akcje - - - - Main Toolbar - Główny pasek narzędziowy - - - - - - Call Contact - Zadzwoń do kontaktu - - - - - - Send a File - Wyślij plik - - - - - - Show Contact Info - Pokaż info o kontakcie - - - - blockContact - Zablokuj kontakt - - - - &Save History As... - &Zapisz historię jako... - - - - @company@ - @company@ - - - - MainWindow - Okno główne - - - - &Edit - &Edytuj - - - - Cu&t - Wy&tnij - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopiuj - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Wklej - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Rozpocznij czat konferencyjny - - - - &Close - &Zamknij - - - - Conference - Konferencja - - - - ChatRoomInviteWidget - - - Chat room - Pokój rozmów - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Pokój rozmów</span></p></body></html> - - - - (Conference participants) - (Uczestnicy konferencji) - - - - &Remove - &Usuń - - - - &Start - &Rozpocznij - - - - Group Name - Nazwa grupy - - - - &Add - &Dodaj - - - - ChatToaster - - - Message - Wiadomość - - - - Incoming Chat - Przychodzący czat - - - - ChatWidget - - - Form - Formularz - - - - ConferenceCallWidget - - - Cancel - Anuluj - - - - Start - Start - - - - Phone number 2: - Numer/Identyfikator: - - - - Phone number 1: - Numer/Identyfikator: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - tworzenie konferencji - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferencja</span><br /><br />Proszę wprowadzić dwa numery telefonów</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">lub ID kontaktu @company@, aby </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">trójdrożną konferencję.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferencja</span><br /><br />Proszę wprowadzić dwa numery telefonów</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">lub ID kontaktu @company@, aby </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">trójdrożną konferencję.</p> - - - - &Add >> - Dod&aj >> - - - - << &Remove - << &Usuń - - - - Available Contacts - Dostępne kontakty - - - - &Start - &Rozpocznij - - - - Cancel - Anuluj - - - - ContactGroupPopupMenu - - - Remove Contact Group - Usuń grupę kontaktów - - - - Rename Contact Group - Zmień nazwę grupy - - - - Delete group - Usuń grupę - - - - Do you really want to delete this group? - Czy usunąć tę grupę? - - - - &Yes - &Tak - - - - &No - &Nie - - - - ContactList - - - Contact List - Lista kontaktów - - - - ContactWidget - - - No mobile phone number set - Nie podano numeru telefonu komórkowego - - - - No landline phone number set - Nie podano numeru telefonu stacjonarnego - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby edytować ten kontakt</p></body></html> - - - - CrashReport - - - Cancel - Anuluj - - - - Program Failure - Awaria programu - - - - Send - Wyślij - - - - Optional Information - Informacje dodatkowe - - - - Your Mail: - Twój adres e-mail: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Niedostępny - - - - Click here to change your call forward settings - Kliknij tutaj, aby zmienić ustawienia przekazywania - - - - Call forward mode: - Przekazywanie: - - - - Purchase call out credits - Doładuj konto - - - - Call Forward Method - Metoda przekazywania - - - - Call Voice Mail - Poczta głosowa - - - - Click here to buy @company@'s credits - Kliknij tutaj, aby kupić środki @company@ - - - - DesktopService - - - Root Folder - Folder główny - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Aby wysłać dźwięk do rozmówcy, kliknij na elemencie, który zmienia kolor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Kliknij tutaj, aby odsłuchać pocztę głosową - - - - New Voice Mail: - Nowa wiadomość głosowa: - - - - Click here to see missed call(s) - Kliknij tutaj, aby zobaczyć nieodebrane połączenie(a) - - - - Missed Call(s): - Nieodebrana rozmowa(y): - - - - FileTransferDialog - - - ... - ... - - - - Download - Pobieranie - - - - Upload - Wysyłanie - - - - Click here to change your download folder - Kliknij tutaj, aby zmienić folder pobierania - - - - Download folder: - Folder pobierania: - - - - Clean all items in the list - Wyczyść wszystkie elementy listy - - - - &Clean - &Wyczyść - - - - @product@ - File Transfer Manager - @product@ - Menedżer transferu plików - - - - FileTransferItem - - - Cancel - Anuluj - - - - Form - Formularz - - - - Pause - Wstrzymaj - - - - <i>From:</i> - <i>Od:</i> - - - - GeneralSettings - - - When I double-click on a contact - Dwukrotne kliknięcie na kontakcie - - - - Call cell phone or land line if contact not online - Jeśli kontakt jest niezalogowany połącz z telefonem komórkowym lub stacjonarnym - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Czas bezczynności - - - - minutes - min. - - - - Show me as "Away" when I am inactive for: - Zmień status na "Zaraz wracam", gdy jestem nieaktywny przez: - - - - When I start my computer - W trakcie uruchamiania komputera - - - - Automatically start @product@ - Automatycznie uruchamiaj @product@ - - - - GoogleTalkSettings - - - Login: - Użytkownik: - - - - Password: - Hasło: - - - - GoogleTalk Settings - Ustawienia GoogleTalk - - - - Forgot your GoogleTalk password? - Zapomniałeś swoje hasło Google Talk? - - - - Get a new GoogleTalk Account - Załóż nowe konto Google Talk - - - - HttpProxyLoginWindow - - - Cancel - Anuluj - - - - HTTP Proxy Address: - Serwer proksy HTTP: - - - - HTTP Proxy Port Number: - Numer portu: - - - - HTTP Proxy Login: - Login: - - - - HTTP Proxy Password: - Hasło: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autoryzacja proxy HTTP</span><br><br><span>Serwer proxy HTTP wymaga autoryzacji<br>Wprowadź identyfikator i hasło</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Lokalne proxy HTTP - - - - ICQSettings - - - Login: - Użytkownik: - - - - Password: - Hasło: - - - - ICQ Settings - Ustawienia AIM/ICQ - - - - Forgot your ICQ password? - Zapomniałeś swoje hasło AIM? - - - - Get a new ICQ Account - Załóż nowe konto AIM - - - - IMAccountManager - - - Close - Zamknij - - - - Login - Identyfikator - - - - Add - Dodaj - - - - Delete - Usuń - - - - Modify - Modyfikuj - - - - Protocol - Protokół - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Moje konta komunikatorów (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Anuluj - - - - Save - Zapisz - - - - IM Account Settings - Ustawienia kont komunikatorów - - - - IMContactManager - - - Add - Dodaj - - - - Delete - Usuń - - - - Contact Type (protocol) - Typ kontaktu (protokół) - - - - Click on the add button below to add a new ID - Aby dodać nowy kontakt naciśnij przycisk "Dodaj" - - - - Contact ID - Nazwa - - - - IMProfileWidget - - - - Enter your nickname here - Tutaj wprowaź identyfikator użytkownika - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Dodaj konto komunikatora (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Dodaj konto komunikatora - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby zmienić swój awatar</p></body></html> - - - - ImageSelector - - - Cancel - Anuluj - - - - OK - OK - - - - Go Up - Przejdź do góry - - - - Refresh - Odśwież - - - - JabberSettings - - - Login: - Użytkownik: - - - - Password: - Hasło: - - - - Jabber Settings - Ustawienia Jabbera - - - - Connect Server: - Serwer: - - - - <u>Advanced Options</u> - <u>Opcje zaawansowane</u> - - - - Require TLS - Szyfrowanie TLS - - - - Port: - Port: - - - - Use TLS if available - Użyj TLS jeśli jest dostępne - - - - Allow plaintext authentication over unencrypted streams - Pozwól na autoryzację zwykłym tekstem przez połączenie nieszyfrowane - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Wymuś stary SSL (port 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Jeśli twojej wersji językowej na powyższej liście nie ma, możesz ją stworzyć za pomocą Launchpada. - - - - More information here. - Więcej informacji na ten temat znajdziesz tutaj. - - - - LogAccount - - - Password: - Hasło: - - - - Need help? - Potrzebujesz pomocy? - - - - Cancel - Anuluj - - - - Delete - Usuń - - - - @product@ - Login - @product@ - Logowanie - - - - Account: - Konto: - - - - &Connect - &Połącz - - - - Forgot your @company@ password? - zapomniałeś swoje hasło @company@? - - - - &Modify - &Zmień - - - - Configure a &New Profile - Utwórz &nowy profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Proszę wybrać poprzednio użyty profil<br/> lub podać dane do połączenia z kontem<br/> @company@</span> - - - - MSNSettings - - - Login: - Użytkownik: - - - - Password: - Hasło: - - - - MSN Settings - Ustawienia MSN - - - - Forgot your MSN password? - Zapomniałeś swoje hasło MSN? - - - - Get a new MSN Account - Załóż nowe konto MSN - - - - Use HTTP method - Użyj metody HTTP - - - - MainWindow - - - MainWindow - Okno główne - - - - Command::terminate() - Polecenie::terminate() - - - - Command::start() - Polecenie::start() - - - - Accept Call - Odbierz rozmowę - - - - Send Chat Message - Wyślij wiadomość - - - - Make Call - Wykonaj połączenie - - - - Hang Up - Rozłącz się - - - - ManageBlockedUsersSettings - - - Close - Zamknij - - - - Unblock User - Odblokuj użytkownika - - - - Manage blocked users - Zarblokowani użytkownicy - - - - @product@ - Manage blocked users - @product@ - Zarządzanie zablokowanymi użytkownikami - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Mam konto @company@ - - - - Create a @company@ account - Utwórz konto @company@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Aby wysyłać SMS-y musisz być zalogowany na konto<br>@company@ i posiadać na nim środki. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Wybierz zdarzenia dla, których będa odtwarzane dźwięki. - - - - NotificationSettingsItem - - - Sound file - Plik dźwiękowy - - - - Find a sound file - Znajdź plik dźwiękowy - - - - Play sound file - Odtwórz dźwięk - - - - Play - Odtwórz - - - - NotifyDialog - - - File Transfer - Transfer plików - - - - &Ok - &OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Aktualizacja</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Odbierz - - - - Status - Status - - - - 00:00:00 - 00:00:00 - - - - Nickname - Identyfikator użytkownika - - - - &Reject - &Odrzuć - - - - Dialpad - Klawiatura - - - - Audio Smileys - Żarty dżwiękowe - - - - - Communication is encrypted - Komunikacja jest szyfrowana - - - - PrivacySettings - - - Manage blocked users - Zarblokowani użytkownicy - - - - Privacy Rules - Ustawienia prywatności - - - - Always sign in as "Invisible" (appear offline to all users) - Po zalogowaniu pokaż mnie jako "Niewidoczny" - - - - Allow chats from - Zezwalaj na czaty - - - - - Anyone - wszystkimi - - - - - Only people from my contact list - tylko z osobami z mojej listy kontaktów - - - - Allow calls from - Zezwalaj na rozmowy - - - - When I sign into @company@ - Gdy zaloguję się do @company@ - - - - ProfileDetails - - - Cancel - Anuluj - - - - Save - Zapisz - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Kliknij, aby zmienić swój awatar</p></body></html> - - - - General - Ogólne - - - - Network IDs (MSN, Jabber...) - Identyfikator sieci (MSN, Jabber...) - - - - Advanced >> - Zaawansowane >> - - - - Fill in all your network Id to stay connected with your contacts - Aby mieć stałe połączenia ze swoimi kontaktami z innych sieci, wprowadź tutaj swoje identyfikatory w tych sieciach - - - - Contact - Kontakt - - - - Group: - Grupa: - - - - Last Name: - Nazwisko: - - - - First Name: - Imię: - - - - Details - Szczegóły - - - - Web/blog: - Strona/blog: - - - - Country: - Kraj: - - - - State: - Woj.: - - - - City: - Miasto: - - - - Gender: - Płeć: - - - - Birth Date: - Data urodz.: - - - - Email: - E-mail: - - - - Notes - Notatki - - - - Phone Numbers - Numery telefonów - - - - Home phone - Telefon domowy - - - - Mobile phone - Telefon komórkowy - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Nieznana - - - - Male - Mężczyzna - - - - Female - Kobieta - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Konta - - - - Accounts Settings - Ustawienia kont - - - - QtAddAccount - - - Configure your voip account - Konfiguruj swoje konto voip - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Poinformuj nas, czy dostarczycielem twojego<br/> konta jest @company@, czy inny usługodavca - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - Test połączenia audio - - - - Video Test Call - Test połączenia wideo - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Proszę wprowadzić informacje, które<br>pozwolą aplikacji telefonicznej połączyć się<br>z twoim kontem SIP - - - - Configure your SIP profile - Aktualizuj profil SIP - - - - QtAddWengoAccount - - - Login - Identyfikator - - - - Please enter an email address. - Proszę wprowadzić adres e-mail - - - - Please enter your email address<br/>and your password - Proszę wprowadzić swój adres e-mail i hasło - - - - @product@ - Connexion - @product@ - połączenie - - - - QtAdvancedIMContactManager - - - Cancel - Anuluj - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Czy na pewno chcesz usunąć ten kontakt IM? - - - - - &Delete - &Usuń - - - - QtAdvancedSettings - - - Advanced - Zaawansowane - - - - Advanced Settings - Ustawienia zaawansowane - - - - QtAppearanceSettings - - - - Me - Ja - - - - Hello - Cześć - - - - How are you? - Jak się masz? - - - - - - Other - Inne - - - - I am fine - W porządku - - - - Have to go - Muszę iść - - - - Bye - Do zobaczenia - - - - Appearance - Wygląd - - - - Appearance Settings - Ustawienia wyglądu - - - - QtAudioSettings - - - - Advanced - Zaawansowane - - - - Audio - Audio - - - - Audio Settings - Ustawienia audio - - - - QtCallBar - - - +(country code) number or nickname - +(kod kraju) numer lub identyfikator - - - - QtCallForwardSettings - - - - Call Forward - Przekazywanie - - - - Call Forward Settings - Ustawienia przekazywania połączeń - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Zapisz jako - - - - QtChatLogViewer - - - Edit Contact - Edytuj kontakt - - - - QtChatTabWidget - - - Close chat - Zakończ czat - - - - QtChatWidget - - - %1 is connected. - %1jest połączony. - - - - %1 is disconnected. - %1jest niepołączony. - - - - send - Wyślij - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Plik nie może być wysłany. Twój kontakt musi być zalogowany w sieci @company@. - - - - Your contact wishes to send a file with @company@. - Twój kontakt chce wysłać plik używając sieci @company@. - - - - Go to %1 to install it - Aby zainstalować przejdź do %1 - - - - %1 has joined the chat - %1 przyłączył się do czatu - - - - %1 has left the chat - %1 opuścił czat - - - - QtChatWindow - - - Edit Contact - Edytuj kontakt - - - - @product@ Chat - Czat @product@ - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Identyfikator użytkownika - - - - Call land line - Numer stacjonarny - - - - Call Mobile - Numer komórkowy - - - - Call @company@ - Połącz z @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Teraz możesz poinformować pierwszego rozmówcę, że tworzysz konferencję z jego udziałem.</b><br><br>Gdy ju ż to zrobisz, naciśnij poniższy przycisk. Pierwsza rozmowa zostanie zawieszona i rozpoczniesz połączenie z drugim rozmówcą.<br> - - - - Hold first interlocutor and call second one - Zawieś pierwszą rozmowę i rozpocznij drugą - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Teraz możesz poinformować drugiego rozmówcę, że tworzysz konferencję z jego udziałem.</b><br><br>Gdy ju ż to zrobisz, naciśnij poniższy przycisk, aby rozpocząć konferencję. - - - - Start Conference - Rozpocznij konferencję - - - - - @product@ - Proceed Conference - @product@ - Tworzenie konferencji - - - - QtContactList - - - &Yes - &Tak - - - - &No - &Nie - - - - Merge %1 with %2? - Połączyć %1 z %2? - - - - @product@ - Merge Contacts - @product@ - Łączenie kontaktów - - - - QtContactManager - - - &Yes - &Tak - - - - &No - &Nie - - - - Home phone - Telefon domowy - - - - Mobile phone - Telefon komórkowy - - - - @product@ - @product@ - - - - Edit Contact - Edytuj kontakt - - - - Do you really want to delete this contact? - Czy napewno chcesz usunąć ten kontakt? - - - - Start chat - Rozpocznij czat - - - - - Delete contact - Usuń kontakt - - - - Call - Połącz - - - - Free call - - - - - Work phone - Telefon służbowy - - - - Send SMS - Wyślij SMS - - - - Edit contact - Edytuj kontakt - - - - Block contact - Zablokuj kontakt - - - - Invite to conference - Zaproś do konferencji - - - - Go to website - Przejdź na stronę - - - - Send file - Wyślij plik - - - - Forward to mobile phone - Przekieruj na telefom komórkowy - - - - QtContactWidget - - - No mobile phone number set - Nie podano numeru telefonu komórkowego - - - - No landline phone number set - Nie podano numeru telefonu stacjonarnego - - - - - Click here to call - Kliknij tutaj, aby zadzwonić - - - - - Click here to set a phone number - Kliknij tutaj, aby wprowadzić numer telefonu - - - - Click here to edit the contact - Kliknij tutaj, aby edytować kontakt - - - - Click here to send a SMS - Kliknij tutaj, aby wysłać SMS - - - - Click here to start a chat - Kliknij tutaj, aby rozpocząć czat - - - - Click here to start a free call - Kliknij tutaj, aby rozpocząć bezpłatną rozmowę - - - - Click here to send a file - Kliknij tutaj, aby wysłać plik - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Czy chcesz połączyć się ze swoją pocztą głosową? - - - - @product@ - Voice Mail - @product@ - poczta głosowa - - - - QtFileTransfer - - - &Yes - &Tak - - - - &No - &Nie - - - - Choose a directory - Wybierz katalog - - - - Overwrite File? - Zastąpić plik? - - - - A file called %1 already exists.Do you want to overwrite it? - Plik o nazwie %1 już istnieje. Czy chcesz go zastąpić? - - - - - File size error - Niewłaściwa wielkość pliku - - - - %1 exceeds the maximum authorized size. - %1 przekroczył dopuszczakną wielkość - - - - %1 has size 0. - %! posiada wartość 0 - - - - %1 is a directory. - %1 jest katalogiem - - - - You can not send a directory. - Nie można wysyłać katalogów - - - - %1 is a shortcut. - %1 jest skrótem - - - - You can not send a shortcut. - Nie można wysyłać skrótów - - - - All Files (*.* *) - Wszystkie pliki (*.* *) - - - - Please upgrade<br> your @product@ - Proszę zaktualizować<br> @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Poinformuj swój kontakt,<br> aby zaktualizował<br> @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Nie można odebrać pliku:musisz uaktualnić swój @product@ aby móc odbierać pliki. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - próbuje wysłać ci plik, ale jego @product@ musi być najpierw uaktualniony.Zasugeruj mu zaktualizowanie do najnowszej wersji. - - - - QtFileTransferItem - - - - - Cancel - Anuluj - - - - Remove - Usuń - - - - - Pause - Wstrzymaj - - - - Starting - Uruchamianie... - - - - From: - Od: - - - - To: - Do: - - - - Open - Otwórz - - - - Resume - Wznów - - - - Waiting for anwser... - Oczekuje na odpowiedź... - - - - Done - Zakończono - - - - Failed - Transfer pliku nie powiódł się - - - - Paused - Wstrzymano - - - - Paused by peer - Wstrzymano przez odbiorcę - - - - Cancelled - Anulowano - - - - Cancelled by peer - Anulowano przez odbiorcę - - - - - Downloading... - Pobieranie... - - - - Uploading... - Wysyłanie... - - - - Waiting for peer... - Oczekiwanie na partnera... - - - - An error occured during the file transfer - Podczas transferu pliku wystąpił błąd - - - - This may be caused by : - Błąd ten mógł być spowodowany przez: - - - - Your @product@ is not up to date. Please download the latest version on - Masz starą wersję @product@. Pobierz najnowszą wersję z - - - - The @company@ network may be temporarily unavailable. Please try later. - Sieć @company@ jest chwilowo niedostępna. Proszę spróbować później. - - - - QtGeneralSettings - - - General - Ogólne - - - - General Settings - Ustawienia ogólne - - - - QtHistory - - - Incoming call - Rozmowa przychodząca - - - - Outgoing call - Rozmowa wychodząca - - - - Missed call - Rozmowa nieodebrana - - - - Rejected call - Rozmowa odrzucona - - - - Outgoing SMS - Wysłany SMS - - - - Do you want to call %1? - Czy chcesz zadzwonić do %1? - - - - Chat session - Sesja czatu - - - - @product@ - Call History - @product@ - historia połączeń - - - - Type - Typ - - - - Name/ID - Nazwa/ID - - - - Date - Data - - - - Duration - Czas trwania - - - - QtHistoryWidget - - - Erase this entry - Usuń ten wpis - - - - Open in SMS window - Otwórz w oknie SMS-ów - - - - Call this peer - Połącz z tym kontaktem - - - - Show chat log - Wyświetl dziennik zdarzeń czatu - - - - QtIMAccountManager - - - Cancel - Anuluj - - - - @product@ - @product@ - - - - &Delete - &Usuń - - - - Are sure you want to delete this account? - - Czy na pewno chcesz usunąć to konto? - - - - - QtIMAccountMonitor - - - - - Disconnected - Niezalogowany - - - - Error: %1 - Błąd: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Zalogowany - - - - Invisible - Niewidoczny - - - - Away - Zaraz wracam - - - - Do not disturb - Nie przeszkadzać - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Proszę wprowadzić login - - - - QtIMAccountPresenceMenuManager - - - Cancel - Anuluj - - - - @product@ - @product@ - - - - &Delete - &Usuń - - - - Online - Zalogowany - - - - Invisible - Niewidoczny - - - - Away - Zaraz wracam - - - - Do Not Disturb - Nie przeszkadzać - - - - Disconnect - Wyrejestruj - - - - Delete Account - Usuń konto - - - - Are sure you want to delete the account <b>%1</b>? - Czy na pewno chcesz usunąć to konto <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - edycja profilu - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Język - - - - Language Settings - Ustawienia języka interfejsu - - - - QtLogAccount - - - Invalid account - Nieprawidłowe konto - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Proszę wybrać poprzednio użyty profil<br/> lub uzupełnić dane, aby połączyć się z<br/>kontem @company@ - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - połączenie - - - - QtNotificationSettings - - - Incoming call (ringtone) - Rozmowa przychodząca (ringtone) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Zakończenie rozmowy (hang up tone) - - - - Incoming chat - Przychodzący czat - - - - IM account connected - Zalogowanie do komunikatora - - - - IM account disconnected - Wylogowanie z komunikatora - - - - Contact online - Zalogowanie kontaktu - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Wybierz plik dźwiękowy - - - - Sounds - Pliki dźwiękowe - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Rozmowa przychodząca - - - - Resume - Wznów - - - - Hang-up - Rozłącz - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Błąd - - - - Talking - Rozmowa w toku - - - - Dialing - Łączę... - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Dzwonię... - - - - Redirected - Przekazana - - - - Initialization... - Rozpoczynanie... - - - - Closed - Zamknięte - - - - - Hold - Zawieś - - - - Add contact - Dodaj kontakt - - - - Ca&ncel - A&nuluj - - - - Talking - Conference - Rozmowa konferencyjna - - - - Add a Contact - Dodaj kontakt - - - - QtPresenceMenuManager - - - Online - Zalogowany - - - - Invisible - Niewidoczny - - - - Away - Zaraz wracam - - - - Do Not Disturb - Nie przeszkadzać - - - - Log off - Wyloguj - - - - QtPrivacySettings - - - Privacy - Prywatność - - - - Privacy Settings - Ustawienia prywatności - - - - QtProfileBar - - - Click here to change your status - Kliknij tutaj, aby zmienić swój status - - - - - active - aktywne - - - - voicemail - poczta głosowa - - - - inactive - nieaktywna - - - - unauthorized - Nieuruchomione - - - - Set global presence to: - Ustaw globalne wyświetlanie statusu na: - - - - Voice mail - Poczta głosowa - - - - QtProfileDetails - - - Advanced >> - Zaawansowane >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Kontakt musi być przydzielony do grupy. Proszę wybrać grupę. - - - - << Simple - << Prosty - - - - Select your avatar - Wybierz swój awatar - - - - @product@ - No Group Selected - @product@ - nie wybrano grupy - - - - @company@ Avatars - Awatary @company@ - - - - QtRenameGroup - - - Bad group name - Nieprawidłowa nazwa grupy - - - - Group name cannot be empty - Musi być określona nazwa grupy - - - - QtSecuritySettings - - - Security - Bezpieczeństwo - - - - Security Settings - Ustawienia bezpieczeństwa - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Proszę wprowadzić numer telefonu. - - - - Do you want to continue? - Czy chcesz kontynuować? - - - - Your SMS has not been sent - SMS nie został wysłany - - - - Your SMS has been sent - SMS został wysłany - - - - Your message is too long. -This will send - Wiadomość jest za długa. -To zostanie wysłane - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Nie można wysłać pustej wiadomości - - - - - - - @company@ SMS service - @company@ - Usługi SMS - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Aktualizacja nie powiodła się - - - - @product@ update failed to start: try to update @product@ manually - Aktualizacja @product@ nie powiodła się. Spróbuj wykonać aktualizację @product@ ręcznie - - - - QtStatusBar - - - - Not connected - Niepołączony - - - - Register done - Zarejestrowany - - - - Unregister done - Wyrejestrowany - - - - Connecting - Łączenie - - - - Output volume is muted - Dźwięk jest wyciszony - - - - Output volume is 0 - Głośność ustawiona na 0 - - - - Click to adjust output volume - Naciśnij aby ustwić głośność - - - - Input volume is muted - Wejście jest wyciszona - - - - Input volume is 0 - Głośność wejścia ustawiona na 0 - - - - Click to adjust input volume - Naciśnij aby ustawić głośność wejścia - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Identyfikator użytkownika - - - - Call land line - Numer stacjonarny - - - - Call Mobile - Numer komórkowy - - - - Call @company@ - Połącz z @company@ - - - - Call - Połącz - - - - Send SMS - Wyślij SMS - - - - Online - Zalogowany - - - - Invisible - Niewidoczny - - - - Away - Zaraz wracam - - - - Do Not Disturb - Nie przeszkadzać - - - - Internet Connection Error - Błąd połączenia internetowego - - - - Offline - Niezalogowany - - - - Connecting... - Łączenie... - - - - Send a SMS - Wyślij SMS - - - - Start a chat - Rozpocznij czat - - - - Place Call - Wybierz numer - - - - Send File - Wyślij plik - - - - Multiple Status - Status złożony - - - - Unknown Status - Nieznany status - - - - Quit @product@ - Zamknij @product@ - - - - QtToolBar - - - &Cancel - &Anuluj - - - - @product@ - Proceed Conference - @product@ - Tworzenie konferencji - - - - Edit My Profile - edycja profilu - - - - Add a Contact - Dodaj kontakt - - - - Hide Unavailable Contacts - Ukryj niedostępne kontakty - - - - Show Unavailable Contacts - Wyświetl niedostępne kontakty - - - - Hide Groups - Ukryj grupy - - - - Show Groups - Wyświetl grupy - - - - You have unfinished call(s). - Trwa niezakończona(e) rozmowa(y) - - - - Are you sure you want to log off? - Czy na pewno chcesz się wylogować? - - - - &Log Off - Wy&loguj - - - - Disable &Video Calls - Wyłącz przekaz &wideo - - - - Enable &Video Calls - Włącz przekaz &wideo - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Konferencja nie może zostać rozpoczęta, gdy trwają rozmowy.</b><br><br>Zakończ wszystkie rozmowy i spróbuj ponownie. - - - - @product@ - Warning - @product@ - ostrzerzenie - - - - - Log &Off... - Wyl&oguj... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Lista kontaktów - - - - QtUserProfile - - - Edit Contact - Edytuj kontakt - - - - - &Authorize - &Autoryzuj - - - - - &Block - &Blokuj - - - - Network error. - Błąd sieci - - - - - @product@ - Authorization Request - @product@ - prośba o autoryzację - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Wystąpił błąd podczas wczytywania twojego profilu. -Profil został wczytany z ostatniej kopii zapasowej: -Możesz nie mieć ostatnio wykonanych zmian. - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Nie można wczytać twojego profilu. -Wybierz inny profil lub utwórz nowy. - - - - Wrong email/password entered - Wprowadzono nieprawidłowy adres e-mail lub hasło - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Wideo - - - - - Normal - Normalna - - - - - Good - Dobra - - - - - Very good - Bardzo dobra - - - - - Excellent - Najlepsza - - - - Video Settings - Ustawienia wideo - - - - QtVoicemailSettings - - - Voicemail - Poczta głosowa - - - - Voicemail Settings - Ustawienia poczty głosowej - - - - QtWebDirectory - - - @product@ - Directory - @product@ - katalog - - - - QtWengoConfigDialog - - - Advanced - Zaawansowane - - - - General - Ogólne - - - - Accounts - Konta - - - - Audio - Audio - - - - Call Forward - Przekazywanie - - - - Language - Język - - - - Privacy - Prywatność - - - - Video - Wideo - - - - Voicemail - Poczta głosowa - - - - security - Bezpieczeństwo - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Anuluj - - - - - - - Conference - Konferencja - - - - Call - Połącz - - - - Account - - - - - Add a Contact - Dodaj kontakt - - - - You have unfinished call(s). - Trwa niezakończona(e) rozmowa(y) - - - - @product@ - Warning - @product@ - ostrzerzenie - - - - - Home - Strona domowa - - - - Are you sure you want to exit the application? - Czy na pewno chcesz zamknąć aplikację? - - - - &Exit - &Zamknij - - - - @product@ - Call Error - @product@ - błąd połączenia - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Anuluj - - - - OK - OK - - - - Enter the new group name: - Podaj nową nazwę grupy: - - - - @product@ - Rename Contact Group - @product@ - zmień nazwę grupy kontaktów - - - - SecuritySettings - - - Form - Formularz - - - - Enable call encryption - Włącz szyfrowanie rozmów - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ może szyfrować połączenia używając 128 bitowego systemu szyfrowania AES i systemu Diffie-Hellman do wymiany kluczy. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Aktualizuj profil - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - Przykład: username@server - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Wyślij - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Kliknij tutaj, aby dodać numer telefonu - - - - 0 /160 - 0/160 - - - - Enter your signature here - Tutaj wprowaź swój podpis - - - - Signature: - Podpis: - - - - Phone number(s): - Numer(y) telefonu(ów) - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Tutaj wprowadź numer(y) telefonu(ów) .<br>Należy je oddzielić & lub ; lub , - - - - SoftUpdateWindow - - - Cancel - Anuluj - - - - @product@ - Downloading update - @product@ - pobieranie aktualizacji - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formularz - - - - VideoSettings - - - Normal - Normalna - - - - Good - Dobra - - - - Very good - Bardzo dobra - - - - Excellent - Najlepsza - - - - Enable video - Włącz wideo - - - - Webcam Selection - Wybór kamery - - - - Webcam device: - Kamera: - - - - Webcam Preview - Podgląd obrazu z kamery - - - - Connection Type - Typ połączenia - - - - Video quality - Jakość przekazu - - - - Down (kbit/s) - Pobieranie (kbit/s) - - - - Up (kbit/s) - Wysyłanie (kbit/s) - - - - 0 to 512 - 0 do 512 - - - - 0 to 128 - 0 do 128 - - - - 512 to 2048 - 512 do 2048 - - - - 128 to 256 - 128 do 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Jakość przekazu wideo zależy od szybkości połączenia internetowego - - - - Make a test video call - Wykonaj test połączenia wideo - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - wideo - - - - VoicemailSettings - - - Form - Formularz - - - - Phone number of your voicemail: - Numer telefonu twojej poczty głosowej: - - - - Please fill in here the information about your voicemail - Tutaj proszę wprowadzić dane o swojej poczcie głosowej - - - - WengoConfigDialog - - - Cancel - Anuluj - - - - Save - Zapisz - - - - Title - Tytuł - - - - @product@ - Configuration - @product@ - konfiguracja - - - - WengoPhoneWindow - - - &Accept - &Odbierz - - - - &Hidden - &Ukryj - - - - &Tools - &Narzędzia - - - - &Help - &Pomoc - - - - &Actions - &Akcje - - - - @company@ - @company@ - - - - &Close - &Zamknij - - - - Dialpad - Klawiatura - - - - @product@ - @product@ - - - - Start Conference - Rozpocznij konferencję - - - - Send SMS - Wyślij SMS - - - - Contacts - Kontakty - - - - History - Historia - - - - Clear &History - Wyczyść &historię - - - - ToolBar - Pasek narzędziowy - - - - Show/Hide Unavailable &Contacts - Wyświetl/ukryj niedostępne &kontakty - - - - &Chat Sessions - Sesje &czatów - - - - &All - &Wszystkie - - - - &HangUp - &Rozłącz - - - - &Hold/Resume - &Zawieś/Wznów - - - - Show/Hide &Groups - Wyświetl/ukryj &grupy - - - - &Outgoing Calls - &Rozmowy wychodzące - - - - &Incoming Calls - &Rozmowy przychodzące - - - - &Missed Calls - &Rozmowy nieodebrane - - - - Enable/Disable &Video Calls - Włącz/wyłącz przekaz &wideo - - - - Short Text &Messages (SMS) - Wiadomości &SMS - - - - Rejected Calls - Rozmowy odrzucone - - - - &Contacts - &Kontakty - - - - &About... - &O Wengo... - - - - Add &Contact... - Dodaj &kontakt... - - - - &Configuration... - &Ustawienia... - - - - Send SMS... - Wyślij SMS... - - - - View My &Profile... - Pokaż mój &profil... - - - - - View My Profile - Pokaż mój profil - - - - Start &Conference... - Rozpocznij &konferencję... - - - - &Find Contact... - &Znajdź kontakt... - - - - Log &Off... - Wyl&oguj... - - - - - Log Off - Wyloguj - - - - Show &Chat Window - Wyświetl okno &czatu - - - - - Show Chat Window - Wyświetl okno czatu - - - - Show &File Transfer - Wyświetl okno &transferu plików - - - - Add Contact - Dodaj kontakt - - - - View My @company@ Account... - Wyświetl moje konto @company@ - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@ i Forum... - - - - @company@ &Wiki/FAQ... - @company@ i Wiki/FAQ... - - - - Learn more about @company@ Services... - Dowiedz się więcej o usługach @company@... - - - - Search - Szukaj - - - - Find @company@ Contacts - Szukaj kontaktów Szukaj - - - - &Quit - &Zakończ - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - %Etykiety ikon - - - - &Icons Only - Tylko &ikony - - - - Add - Dodaj - - - - SMS - SMS - - - - Conference - Konferencja - - - - Wizard - - - Cancel - Anuluj - - - - Finish - Zakończ - - - - Next > - Dalej > - - - - < Back - < Powrót - - - - Simple Wizard - Step %1 of %2 - Kreator - krok %1 z %2 - - - - YahooSettings - - - Login: - Użytkownik: - - - - Password: - Hasło: - - - - Yahoo! Settings - Yahoo! - ustawienia - - - - Use Yahoo! Japan server - Użyj serwera Yahoo! Japan - - - - Forgot your Yahoo! password? - Zapomniałeś swoje hasło Yahoo!? - - - - Get a new Yahoo! Account - Załóż nowe konto Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt_BR.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt_BR.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt_BR.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt_BR.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4942 +0,0 @@ - - - - - AIMSettings - - - Login: - Nome de usuário: - - - - Forgot your AIM password? - Esqueceu sua senha no AIM? - - - - Get a new AIM Account - Crie uma nova conta no AIM - - - - Password: - Senha: - - - - AIM Settings - Configurações do AIM - - - - AboutWindow - - - About - Sobre - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autores - - - - Close - Fechar - - - - 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. - Este programa é software livre; você pode redistribuí-lo e/ou modificá-lo -sob os termos da Licença Pública Geral GNU (GNU General Public -License), conforme publicada pela Free Software Foundation; tanto a -versão 2 da Licença como (a seu critério) qualquer versão mais nova. - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Tranferência de Arquivo - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Aceitar - - - - &Cancel - &Cancelar - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;"><span style=" font-weight:600;">Contato: -</span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome de -arquivo: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Arquivo -recebido</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Editar meu perfil - - - - AddAccount - - - Configure your account: - Configure sua conta: - - - - &Next - &Próximo - - - - Need help? - Precisa de ajuda? - - - - You don't have any account ? Click here - Você não tem uma conta ? Clique aqui - - - - &Back - &Voltar - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Cancelar - - - - Contact Type (protocol): - Tipo do contato (protocolo): - - - - Contact ID: - ID do contato: - - - - Account: - Conta: - - - - Enable - Habilitar - - - - Login - - - - - Add - Adicionar - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - &Back - &Voltar - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - &Conectar - - - - Activate presence and chat (SIP/SIMPLE) - Ativar presença e bate-papo (SIP/SIMPLE) - - - - Displayname: - Nome de Apresentação: - - - - login / username: - Nome de usuário: - - - - Account name: - Nome da conta: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Servidor: - - - - SIP Domain / Realm: - Domínio SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configure seu perfil SIP</span><br><br><span>Por favor, preencha a informação que irá <br/>permitir que seu softphone se conecte com<br/>sua conta SIP </span> - - - - Advanced - Avançado - - - - AddWengoAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - &Back - &Voltar - - - - Cancel - Cancelar - - - - @product@ - Login - - - - - - &Connect - &Conectar - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Registro</span><br><br><span>Por favor, entre com seu endereço de email e<br>senha</span> - - - - Email Address: - Endereço de email: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Fechar - - - - Preference Name - Nome preferido - - - - Type - Tipo - - - - Value - Valor - - - - Default Value - Valor Padrão - - - - Save - Salvar - - - - Status - Status - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Adicionar - - - - Advanced Settings - Configurações Avançadas - - - - Advanced Configuration Window - Janela de Configuração Avançada - - - - Automatically answer incoming calls from - Responder automaticamente chamadas vindas de - - - - Remove - Remover - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Atenção, esta parte é para usuários experientes.<br>Qualquer erro pode danificar o software. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Formulário - - - - AudioSettings - - - Reset - Restaurar - - - - Audio Codecs - Codecs de Áudio - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulário - - - - AvatarWidget - - - Form - Formulário - - - - BrowserSoftUpdateWindow - - - Close - Fechar - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Terceiro: - - - - 1st: - Primeiro: - - - - 2nd: - Segundo: - - - - - - (+ country code) phone number - (+ código do país) número do telefone - - - - Forward all unanswered calls to message box - Encaminhe todas chamadas não atendidas para a caixa de mensagens - - - - Disable call forwarding - Desabilitar encaminhamento de chamadas - - - - Forward all unanswered calls to following phone numbers: - Encaminhar todas as chamadas não atendidas para os seguintes números de -telefone: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Por exemplo +3314500XXXX (+33 é o ódigo do país e 14500XXXX é o número do -telefone) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Recebendo Chamada - - - - Message - Mensagem - - - - ChatLogViewer - - - Chat History - Histórico de Bate-Papo - - - - &Contact - &Contato - - - - &Tools - &Ferramentas - - - - &Help - - - - - &Actions - &Ações - - - - Main Toolbar - Barra de Ferramentas Principal - - - - - - Call Contact - Chamar Contato - - - - - - Send a File - Enviar um Arquivo - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Mostrar Informações do Contato - - - - blockContact - blockContact - - - - &Save History As... - &Salvar Histórico Como... - - - - actionRestartChat - actionRestartChat - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Contato - - - - &Tools - &Ferramentas - - - - &Actions - &Ações - - - - Main Toolbar - Barra de Ferramentas Principal - - - - - - Call Contact - Chamar Contato - - - - - - Send a File - Enviar um Arquivo - - - - - - Show Contact Info - Mostrar Informações do Contato - - - - blockContact - blockContact - - - - &Save History As... - &Salvar Histórico Como... - - - - @company@ - - - - - - MainWindow - Janela Principal - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - &Fechar - - - - Conference - Conferência - - - - ChatRoomInviteWidget - - - Chat room - Sala de bate-papo - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - Sala de bate-papo - - - - (Conference participants) - (Participantes da conferência) - - - - &Remove - &Remover - - - - &Start - &Iniciar - - - - Group Name - Nome do Grupo - - - - &Add - &Adicionar - - - - ChatToaster - - - Message - Mensagem - - - - Incoming Chat - Recebendo Chat - - - - ChatWidget - - - Form - Formulário - - - - ConferenceCallWidget - - - Cancel - Cancelar - - - - Start - Iniciar - - - - Phone number 2: - Segundo telefone: - - - - Phone number 1: - Primeiro telefone: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Iniciar - - - - Cancel - Cancelar - - - - ContactGroupPopupMenu - - - Remove Contact Group - Remover Grupo de Contatos - - - - Rename Contact Group - Renomear Grupo de Contatos - - - - Delete group - Excluir grupo - - - - Do you really want to delete this group? - Você realmente deseja excluir este grupo? - - - - &Yes - &Sim - - - - &No - &Não - - - - ContactList - - - Contact List - Lista de Contatos - - - - ContactWidget - - - No mobile phone number set - Nenhum número de telefone móvel definido - - - - No landline phone number set - Nenhum número de telefone fixo definido - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para editar este contato</p></body></html> - - - - CrashReport - - - Cancel - Cancelar - - - - Program Failure - Falha do Programa - - - - Send - Enviar - - - - Optional Information - Informação Opcional - - - - Your Mail: - Seu email: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Não disponível - - - - Click here to change your call forward settings - Clique aqui para mudar suas configurações de encaminhamento de chamadas - - - - Call forward mode: - Modo encaminhar chamadas: - - - - Purchase call out credits - Comprar créditos para chamada externa - - - - Call Forward Method - Método de Encaminhamento de Chamadas - - - - Call Voice Mail - Ouvir correio de voz - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Diretório Raiz - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Clique nos vários itens que mudam de cor para enviar sons para seu interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Clique aqui para ouvir seu correio de voz - - - - New Voice Mail: - Novo Correio de Voz: - - - - Click here to see missed call(s) - Clique aqui para ver sua(s) chamada(s) perdida(s) - - - - Missed Call(s): - Chamada(s) Perdida(s): - - - - FileTransferDialog - - - ... - ... - - - - Download - Download - - - - Upload - Carregar - - - - Click here to change your download folder - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;">Clique aqui para trocar a sua pasta de -downloads</p></body></html> - - - - Download folder: - Pasta de Downloads: - - - - Clean all items in the list - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;">Limpar todos os itens da lista</p></body></html> - - - - &Clean - &Limpar - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Cancelar - - - - Form - Formulário - - - - Pause - Pausar - - - - <i>From:</i> - <i>De:</i> - - - - GeneralSettings - - - When I double-click on a contact - Quando eu clicar em um contato - - - - Call cell phone or land line if contact not online - Chamar telefone celular ou linha fixa caso o contato não esteja online - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Status ocioso - - - - minutes - minutos - - - - Show me as "Away" when I am inactive for: - Mostrar-me como "Ausente" quando eu estiver inativo por: - - - - When I start my computer - Quando eu iniciar meu computador - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Nome de usuário: - - - - Password: - Senha: - - - - GoogleTalk Settings - Configurações do GoogleTalk - - - - Forgot your GoogleTalk password? - Esqueceu sua senha no GoogleTalk? - - - - Get a new GoogleTalk Account - Criar uma nova conta no GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Cancelar - - - - HTTP Proxy Address: - Endereço do proxy HTTP: - - - - HTTP Proxy Port Number: - Número da porta do proxy HTTP: - - - - HTTP Proxy Login: - Nome de usuário do proxy HTTP: - - - - HTTP Proxy Password: - Senha do proxy HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autenticação no Proxy HTTP</span><br><br><span>Seu proxy HTTP local utiliza autenticação<br>Por favor, entre seu nome de usuário e sua senha</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Nome de usuário: - - - - Password: - Senha: - - - - ICQ Settings - Configurações do ICQ - - - - Forgot your ICQ password? - Esqueceu sua senha no ICQ? - - - - Get a new ICQ Account - Crie uma nova conta no ICQ - - - - IMAccountManager - - - Close - Fechar - - - - Add - Adicionar - - - - Delete - Excluir - - - - Login - - - - - Modify - Modificar - - - - Protocol - Protocolo - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Cancelar - - - - Save - Salvar - - - - IM Account Settings - Configurações de contas IM - - - - IMContactManager - - - Add - Adicionar - - - - Delete - Excluir - - - - Contact Type (protocol) - Tipo de Contato (protocolo) - - - - Click on the add button below to add a new ID - Clique no botão "adicionar" abaixo para adicionar um novo ID - - - - Contact ID - ID de contato - - - - IMProfileWidget - - - - Enter your nickname here - Digite aqui o seu apelido - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Adicionar uma conta de mensagem instantânea (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Adicionar uma conta de IM - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique aqui para mudar seu avatar</p></body></html> - - - - ImageSelector - - - Cancel - Cancelar - - - - OK - OK - - - - Go Up - Acima - - - - Refresh - Atualizar - - - - JabberSettings - - - Login: - Nome de usuário: - - - - Password: - Senha: - - - - Jabber Settings - Configurações do Jabber - - - - Connect Server: - Conectar ao Servidor: - - - - <u>Advanced Options</u> - <u>Opções Avançadas</u> - - - - Require TLS - Requerer TLS - - - - Port: - Porta: - - - - Use TLS if available - Usar TLS se disponível - - - - Allow plaintext authentication over unencrypted streams - Permitir autenticação em texto puro sem uso de criptografia - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forçar SSL antigo (na porta 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Seu idioma não está aqui, você sabia que pode fazer sua própria tradução no Launchpad? - - - - More information here. - Mais informações aqui. - - - - LogAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - Cancel - Cancelar - - - - Delete - Excluir - - - - @product@ - Login - - - - - - Account: - Conta: - - - - &Connect - &Conectar - - - - Forgot your @company@ password? - - - - - - &Modify - &Modificar - - - - Configure a &New Profile - Configurar um &Novo Perfil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Nome de usuário: - - - - Password: - Senha: - - - - MSN Settings - Configurações do MSN - - - - Forgot your MSN password? - Esqueceu sua senha no MSN? - - - - Get a new MSN Account - Faça uma nova conta no MSN - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Janela Principal - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Aceitar Chamada - - - - Send Chat Message - Enviar Mensagem - - - - Make Call - Fazer Chamada - - - - Hang Up - Desligar - - - - ManageBlockedUsersSettings - - - Close - Fechar - - - - Unblock User - Desbloquear Usuário - - - - Manage blocked users - Gerenciar usuários bloqueados - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Selecionar os eventos para os quais um som deve ser tocado. - - - - NotificationSettingsItem - - - Sound file - Arquivo de Som - - - - Find a sound file - Procurar um arquivo de som - - - - Play sound file - Tocar arquivo de som - - - - Play - Tocar - - - - NotifyDialog - - - File Transfer - Tranferência de Arquivo - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;"> Status</span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;"><span style=" font-size:18pt; font-weight:600; -color:#ffffff;">atualizar</span></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Aceitar - - - - Status - Status - - - - 00:00:00 - 00:00:00 - - - - Nickname - Apelido - - - - &Reject - &Rejeitar - - - - Dialpad - Teclado - - - - Audio Smileys - Smileys em áudio - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Gerenciar usuários bloqueados - - - - Privacy Rules - Regras de privacidade - - - - Always sign in as "Invisible" (appear offline to all users) - Sempre conectar como "Invisível" (aparecer como desconectado) - - - - Allow chats from - Permitir bate-papos de - - - - - Anyone - Qualquer um - - - - - Only people from my contact list - Apenas pessoas da minha lista de contatos - - - - Allow calls from - Permitir chamadas de - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Cancelar - - - - Save - Salvar - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique aqui para mudar seu avatar</p></body></html> - - - - General - Geral - - - - Network IDs (MSN, Jabber...) - IDs de rede (MSN, Jabber...) - - - - Advanced >> - Avançado >> - - - - Fill in all your network Id to stay connected with your contacts - Por favor, preencha toda sua identificação na rede para estar sempre conectado com seus amigos - - - - Contact - Contato - - - - Group: - Grupo: - - - - Last Name: - Sobrenome: - - - - First Name: - Nome: - - - - Details - Detalhes - - - - Web/blog: - Site/blog: - - - - Country: - País: - - - - State: - Estado: - - - - City: - Cidade: - - - - Gender: - Sexo: - - - - Birth Date: - Data de Nascimento: - - - - Email: - Email: - - - - Notes - Notas - - - - Phone Numbers - Números de telefone - - - - Home phone - Telefone de casa - - - - Mobile phone - Telefone móvel - - - - dd MMMM yyyy - dd MMMM yyyy - - - - Unknown - Desconhecido - - - - Male - Masculino - - - - Female - Feminino - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Contas - - - - Accounts Settings - Configurações de Contas - - - - QtAddAccount - - - Configure your voip account - Configure sua conta voip - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Por favor, preencha a informação que irá<br/>permitir que seu softphone se conecte com<br/>sua conta SIP - - - - Configure your SIP profile - Configure seu perfil SIP - - - - QtAddWengoAccount - - - Please enter an email address. - Por favor, digite um endereço de email - - - - Please enter your email address<br/>and your password - Por favor, digite seu endereço de email<br/>e sua senha - - - - Login - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Cancelar - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - Você tem certeza que deseja excluir esta conta de IM? - - - - - &Delete - &Excluir - - - - QtAdvancedSettings - - - Advanced - Avançado - - - - Advanced Settings - Configurações Avançadas - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Avançado - - - - Audio - Áudio - - - - Audio Settings - Configurações de Áudio - - - - QtCallBar - - - +(country code) number or nickname - +(código do país) telefone ou apelido - - - - QtCallForwardSettings - - - - Call Forward - Encaminhar Chamadas - - - - Call Forward Settings - Configurações para encaminhamento de chamadas - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Salvar Como - - - - QtChatLogViewer - - - Edit Contact - Editar Contato - - - - QtChatTabWidget - - - Close chat - Fechar bate-papo - - - - QtChatWidget - - - %1 is connected. - %1 está conectado. - - - - %1 is disconnected. - %1 está desconectado. - - - - send - enviar - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Editar Contato - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Chamar SIP - - - - Call land line - Chamar telefone fixo - - - - Call Mobile - Chamar telefone móvel - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Agora você pode informar ao seu interlocutor que ele fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo. Seu primeiro interlocutor será colocado em modo retenção, enquanto o segundo interlocutor será chamado.<br> - - - - Hold first interlocutor and call second one - Reter o primeiro interlocutor e chamar o segundo - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Agora você pode selecionar um segundo interlocutor que fará aprte da conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo para iniciar a conferência. - - - - Start Conference - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Sim - - - - &No - &Não - - - - Merge %1 with %2? - Misturar %1 com %2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Sim - - - - &No - &Não - - - - Home phone - Telefone de casa - - - - Mobile phone - Telefone móvel - - - - @product@ - - - - - - Edit Contact - Editar Contato - - - - Do you really want to delete this contact? - Você realmente deseja exluir este contato? - - - - Start chat - Iniciar bate-papo - - - - - Delete contact - Excluir contato - - - - Call - Chamar - - - - Free call - - - - - Work phone - Telefone do trabalho - - - - Send SMS - Enviar SMS - - - - Edit contact - Editar contato - - - - Block contact - Bloquear contato - - - - Invite to conference - Convidar para conferência - - - - Go to website - Vá para o site - - - - Send file - Enviar arquivo - - - - Forward to mobile phone - Encaminhar para telefone celular - - - - QtContactWidget - - - No mobile phone number set - Nenhum número de telefone móvel definido - - - - No landline phone number set - Nenhum número de telefone fixo definido - - - - - Click here to call - Clique aqui para chamar - - - - - Click here to set a phone number - Clique aqui para definir um número de telefone - - - - Click here to edit the contact - Clique aqui para editar o contato - - - - Click here to send a SMS - Clique aqui para enviar uma mensagem SMS - - - - Click here to start a chat - Clique aqui para iniciar um bate-papo - - - - Click here to start a free call - clique aqui para iniciar uma chamada gratuita - - - - Click here to send a file - Clique aqui para enviar um arquivo - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Você quer ouvir suas mensagens de voz? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Sim - - - - &No - &Não - - - - Choose a directory - Escolher um diretório - - - - Overwrite File? - Sobrescrever arquivo? - - - - A file called %1 already exists.Do you want to overwrite it? - Um arquivo chamado %1 já existe. Você quer sobrescrevê-lo? - - - - - File size error - Erro no tamanho do arquivo - - - - %1 exceeds the maximum authorized size. - %1 excede o tamanho máximo autorizado. - - - - %1 has size 0. - %1 tem tamanho 0. - - - - %1 is a directory. - %1 é um diretório. - - - - You can not send a directory. - Você não pode enviar um diretório. - - - - %1 is a shortcut. - %1 é um atalho. - - - - You can not send a shortcut. - Você não pode enviar um atalho. - - - - All Files (*.* *) - Todos os Arquivos (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Cancelar - - - - Remove - Remover - - - - - Pause - Pausar - - - - Starting - Iniciando - - - - From: - De: - - - - To: - Para: - - - - Open - Abrir - - - - Resume - Continuar - - - - Waiting for anwser... - Aguardando uma resposta... - - - - Done - Feito - - - - Failed - Falhou - - - - Paused - Interrompido - - - - Paused by peer - Interrompido pelo outro - - - - Cancelled - Cancelado - - - - Cancelled by peer - Cancelado pelo parceiro - - - - - Downloading... - Baixando... - - - - Uploading... - Enviando... - - - - Waiting for peer... - Aguardando pelo parceiro - - - - An error occured during the file transfer - <html><head><meta name="qrichtext" content="1" /></head><body style=" -white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt;font- -weight:400; font-style:normal; text-decoration:none;"><p style=" margin- -top:0px;margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block- -indent:0; text-indent:0px;"><span style=" font-size:18pt; font-weight:600; -color:#ffffff;">Um erro<br> occorreu durante<br>a transferência do -arquivo</span></p></body></html> - - - - This may be caused by : - Isto pode ser causado por: - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Geral - - - - General Settings - Configurações Gerais - - - - QtHistory - - - Incoming call - Chamada recebida - - - - Outgoing call - Chamada realizada - - - - Missed call - Chamada perdida - - - - Rejected call - Chamada rejeitada - - - - Outgoing SMS - SMS enviado - - - - Do you want to call %1? - Você deseja chamar %1? - - - - Chat session - Sessão de bate-papo - - - - @product@ - Call History - - - - - - Type - Tipo - - - - Name/ID - Nome/ID - - - - Date - Data - - - - Duration - Duração - - - - QtHistoryWidget - - - Erase this entry - Apagar esta entrada - - - - Open in SMS window - Abrir a janela de SMS - - - - Call this peer - Chamar - - - - Show chat log - Mostrar o log de bate-papo - - - - QtIMAccountManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - &Excluir - - - - Are sure you want to delete this account? - - Você tem certeza que deseja excluir esta conta? - - - - - QtIMAccountMonitor - - - - - Disconnected - Desconetado - - - - Error: %1 - Erro: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Online - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do not disturb - Não Perturbe - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Por favor, digite um login - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancelar - - - - @product@ - - - - - - &Delete - &Excluir - - - - Online - Online - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Perturbe - - - - Disconnect - Desconectar - - - - Delete Account - Excluir Conta - - - - Are sure you want to delete the account <b>%1</b>? - Você tem certeza que deseja excluir a conta <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Editar Meu Perfil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Idioma - - - - Language Settings - Configurações de Idioma - - - - QtLogAccount - - - Invalid account - Conta inválida - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Chamada recebida (toque) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Chamada encerrada (toque) - - - - Incoming chat - Bate papo solicitado - - - - IM account connected - Conta de IM Conectou - - - - IM account disconnected - Conta de IM desconectou - - - - Contact online - Contato online - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Escolha um arquivo de som - - - - Sounds - Sons - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Recebendo Chamada - - - - Resume - Continuar - - - - Hang-up - Desligar - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Erro - - - - Talking - Falando - - - - Dialing - Discando - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Chamando - - - - Redirected - Redirecionado - - - - Initialization... - Inicialização... - - - - Closed - Encerrado - - - - - Hold - Reter - - - - Add contact - Adicionar contato - - - - Ca&ncel - Ca&ncelar - - - - Talking - Conference - Falando - Conferência - - - - Add a Contact - Adicionar um Contato - - - - QtPresenceMenuManager - - - Online - Online - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Perturbe - - - - Log off - Desconectar - - - - QtPrivacySettings - - - Privacy - Privacidade - - - - Privacy Settings - Configurações de Privacidade - - - - QtProfileBar - - - Click here to change your status - Clique aqui para alterar o seu - - - - - active - ativo - - - - voicemail - correio de voz - - - - inactive - inativo - - - - unauthorized - Não autorizado - - - - Set global presence to: - Ajustar status de presença global para: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Avançado >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Um contato precisa estar em um grupo, por favor selecione um. - - - - << Simple - << Simples - - - - Select your avatar - Selecione seu avatar - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Nome de grupo inválido - - - - Group name cannot be empty - Nome de grupo não pode ser vazio - - - - QtSecuritySettings - - - Security - Segurança - - - - Security Settings - Configurações de Segurança - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Por favor, preencha com um número de telefone. - - - - Do you want to continue? - Você deseja continuar? - - - - Your SMS has not been sent - Problemas ao enviar seu SMS - - - - Your SMS has been sent - Seu SMS foi enviado - - - - Your message is too long. -This will send - Sua mensagem é muito longa. Isto será enviado - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Você não pode enviar uma mensagem vazia. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Desconectado - - - - Register done - Registro feito - - - - Unregister done - Desregistro feito - - - - Connecting - Conectando - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Chamar SIP - - - - Call land line - Chamar telefone fixo - - - - Call Mobile - Chamar telefone móvel - - - - Call @company@ - - - - - - Call - Chamar - - - - Send SMS - Enviar SMS - - - - Online - Online - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Perturbe - - - - Internet Connection Error - Erro na Conexão com Internet - - - - Offline - Offline - - - - Connecting... - Conectando... - - - - Send a SMS - Enviar um SMS - - - - Start a chat - Iniciar um bate-papo - - - - Place Call - Realizar Chamada - - - - Send File - Enviar arquivo - - - - Multiple Status - Múltiplos Status - - - - Unknown Status - Status Desconhecido - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Cancelar - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Editar Meu Perfil - - - - Add a Contact - Adicionar um Contato - - - - Hide Unavailable Contacts - Ocultar Contatos &Indisponíveis - - - - Show Unavailable Contacts - Mostrar Contatos &Indisponíveis - - - - Hide Groups - Ocultar &Grupos - - - - Show Groups - Mostrar &Grupos - - - - You have unfinished call(s). - Você tem chamada(s) não concluída(s). - - - - Are you sure you want to log off? - Você tem certeza que deseja desconectar? - - - - &Log Off - &Desconectar - - - - Disable &Video Calls - Desabilitar Chamadas de &Vídeo - - - - Enable &Video Calls - Habilitar Chamadas de &Vídeo - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Conferência não pode ser iniciada enquanto houverem ligações ativas.</b><br><br>Finalize todas as ligações e tente novamente. - - - - @product@ - Warning - - - - - - - Log &Off... - &Desconectar... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Lista de Contatos - - - - QtUserProfile - - - Edit Contact - Editar Contato - - - - - &Authorize - &Autorizar - - - - Network error. - - - - - - &Block - &Bloquear - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Um problema ocorreu ao carregar seu perfil. -A última cópia de segurança de seu perfil foi carregada: você talvez tenha perdido as últimas alterações - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Seu perfil não pode ser carregado. -Selecione outro perfil ou crie um novo. - - - - Wrong email/password entered - Email ou senha incorretos - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Vídeo - - - - - Normal - Normal - - - - - Good - Boa - - - - - Very good - Muito boa - - - - - Excellent - Excelente - - - - Video Settings - Configurações de Vídeo - - - - QtVoicemailSettings - - - Voicemail - - - - - Voicemail Settings - Configurações de Correio de Voz - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Avançado - - - - General - Geral - - - - Accounts - Contas - - - - Audio - Áudio - - - - Call Forward - Encaminhar Chamadas - - - - Language - Idioma - - - - Privacy - Privacidade - - - - Video - Vídeo - - - - Voicemail - - - - - security - segurança - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancelar - - - - - - - Conference - Conferência - - - - Call - Chamar - - - - Account - - - - - Add a Contact - Adicionar um Contato - - - - You have unfinished call(s). - Você tem chamada(s) não concluída(s). - - - - @product@ - Warning - - - - - - - Home - Pasta Pessoal - - - - Are you sure you want to exit the application? - Você tem certeza que deseja sair da aplicação - - - - &Exit - &Sair - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancelar - - - - OK - OK - - - - Enter the new group name: - Digite o nome do novo grupo: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Formulário - - - - Enable call encryption - Habilitar a criptografia de chamadas - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Atualizar seu perfil - - - - Yahoo! ID: - ID do Yahoo!: - - - - MSN ID: - ID do MSN: - - - - Jabber/GoogleTalk ID: - ID do Jabber/GoogleTalk: - - - - exemple: username@server - exemplo: nomeusuario@servidor - - - - SIP ID: - ID SIP: - - - - ICQ ID: - ID ICQ: - - - - AIM ID: - ID AIM: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Enviar - - - - @product@ - SMS - - - - - - Click here to add a phone number - Clique aqui para adicionar um número de telefone - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Digite sua assinatura aqui - - - - Signature: - Assinatura: - - - - Phone number(s): - Número(s) de telefone: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Digite aqui o(s) número(s) de telefone<br>Eles devem ser separados por & ou ; ou , - - - - SoftUpdateWindow - - - Cancel - Cancelar - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulário - - - - VideoSettings - - - Normal - Normal - - - - Good - Boa - - - - Very good - Muito boa - - - - Excellent - Excelente - - - - Enable video - Habilitar vídeo - - - - Webcam Selection - Seleção de Webcam - - - - Webcam device: - Dispositivo webcam: - - - - Webcam Preview - Visualizar Webcam - - - - Connection Type - Tipo de Conexão - - - - Video quality - Qualidade de vídeo - - - - Down (kbit/s) - Baixar (kbit/s) - - - - Up (kbit/s) - Subir (kbit/s) - - - - 0 to 512 - 0 até 512 - - - - 0 to 128 - 0 até 128 - - - - 512 to 2048 - 512 até 2048 - - - - 128 to 256 - 128 até 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - A qualidade de vídeo depende de sua velocidade de conexão com a Internet - - - - Make a test video call - Realizar uma chamada de teste de vídeo - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Formulário - - - - Phone number of your voicemail: - Número de telefone de seu correio de voz: - - - - Please fill in here the information about your voicemail - Por favor, preencha aqui a informação sobre seu correio de voz - - - - WengoConfigDialog - - - Cancel - Cancelar - - - - Save - Salvar - - - - Title - Título - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Aceitar - - - - &Hidden - - - - - - &Tools - &Ferramentas - - - - &Actions - &Ações - - - - @company@ - - - - - - &Close - &Fechar - - - - Dialpad - Teclado - - - - @product@ - - - - - - Send SMS - Enviar SMS - - - - Contacts - Contatos - - - - History - Histórico - - - - &Help - - - - - Clear &History - Limpar &Histórico - - - - ToolBar - Barra de ferramentas - - - - Start Conference - - - - - Show/Hide Unavailable &Contacts - Mostrar/Ocultar &Contatos Indisponíveis - - - - &Chat Sessions - Sessões de &Chat - - - - &All - &Todos - - - - &HangUp - &Desligar - - - - &Hold/Resume - &Reter/Retornar - - - - Show/Hide &Groups - Mostrar/Ocultar &Grupos - - - - &Outgoing Calls - Chamadas R&ealizadas - - - - &Incoming Calls - Chamadas &Recebidas - - - - &Missed Calls - Chamadas &Perdidas - - - - Enable/Disable &Video Calls - Habilitar/Desabilitar Chamadas de &Vídeo - - - - Short Text &Messages (SMS) - &Mensagens Curtas de Texto (SMS) - - - - Rejected Calls - Chamadas Re&jeitadas - - - - &Contacts - &Contatos - - - - &About... - &Sobre... - - - - Add &Contact... - Adicionar &Contato... - - - - &Configuration... - &Configuração... - - - - Send SMS... - &Enviar SMS... - - - - View My &Profile... - Visualizar Meu &Perfil... - - - - - View My Profile - Visualziar Meu Perfil - - - - Start &Conference... - Iniciar &Conferência... - - - - &Find Contact... - &Localizar Contato... - - - - Log &Off... - &Desconectar... - - - - - Log Off - Desconectar - - - - Show &Chat Window - Mostrar Janela de &Bate-Papo - - - - - Show Chat Window - Mostrar Janela de Bate-Papo - - - - Show &File Transfer - Mostrar Transferência de &Arquivos - - - - Add Contact - Contato - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Adicionar - - - - SMS - SMS - - - - Conference - Conferência - - - - Wizard - - - Cancel - Cancelar - - - - Finish - Finalizar - - - - Next > - Próximo > - - - - < Back - < Anterior - - - - Simple Wizard - Step %1 of %2 - Assistente - Passo %1 de %2 - - - - YahooSettings - - - Login: - Nome de usuário: - - - - Password: - Senha: - - - - Yahoo! Settings - Configurações Yahoo! - - - - Use Yahoo! Japan server - Utilizar o servidor japonês do Yahoo! - - - - Forgot your Yahoo! password? - Esqueceu sua senha no Yahoo!? - - - - Get a new Yahoo! Account - Obter uma nova conta Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_pt.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4785 +0,0 @@ - - - - - AIMSettings - - - Login: - Nome de Utilizador: - - - - Forgot your AIM password? - Esqueceu a sua senha AIM? - - - - Get a new AIM Account - Obter nova conta AIM - - - - Password: - Senha: - - - - AIM Settings - Definições AIM - - - - AboutWindow - - - About - Acerca - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autores - - - - Close - Fechar - - - - 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. - Este programa é 'software' livre; pode-o redistribuir e/ou modificá-lo nos termos da Licença Pública Geral GNU como publicado pela Fundação de 'Software' Livre; versão 2 da licença, ou (por sua opção) qualquer versão posterior. - - - - @product@ - About - @product@ - Acerca - - - - @product@, a voice over Internet phone - @product@, um telefone através da Internet - - - - AcceptDialog - - - File Transfer - Transferência de Ficheiros - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - teste.bmp - - - - &Accept - &Aceitar - - - - &Cancel - &Cancelar - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contacto: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Nome do ficheiro: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Ficheiro recebido</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Editar o meu perfil - - - - AddAccount - - - Configure your account: - Configure a sua conta: - - - - &Next - &Próximo - - - - Need help? - Precisa de ajuda? - - - - You don't have any account ? Click here - Não tem uma conta? Clique aqui - - - - &Back - &Anterior - - - - Cancel - Cancelar - - - - @product@ - Login - @product@ - Nome de utilizador - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configure a sua conta voip</span><br><br><span>Por favor diga-nos se a sua conta fornecida<br/>pela @company@ ou por outro serviço</span> - - - - @company@ account - Conta @company@ - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Cancelar - - - - Contact Type (protocol): - Tipo de Contacto (protocolo): - - - - Contact ID: - ID de Contacto: - - - - Account: - Conta: - - - - Enable - Activar - - - - Login - Nome de utilizador - - - - Add - Adicionar - - - - @product@ - Add a Contact Account - @product@ - Adiciona uma Conta de Contacto - - - - AddSIPAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - &Back - &Anterior - - - - Cancel - Cancelar - - - - @product@ - Login - @product@ - Nome de utilizador - - - - &Connect - &Conectar - - - - Activate presence and chat (SIP/SIMPLE) - Activar presença e conversa (SIP/SIMPLE) - - - - Displayname: - Nome de Apresentação: - - - - login / username: - nome de utilizador: - - - - Account name: - Nome da conta: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Servidor: - - - - SIP Domain / Realm: - Domínio SIP/Realm: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configure o seu perfil </span><br><br><span>Por favor, preencha a informação que irá <br/>permitir que o seu 'softphone' seja conectado à sua<br/>conta SIP </span> - - - - Advanced - Avançado - - - - AddWengoAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - &Back - &Anterior - - - - Cancel - Cancelar - - - - @product@ - Login - @product@ - Nome de utilizador - - - - &Connect - &Conectar - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:18pt;">Nome de Utilizador</span><br><br><span>Por favor indique o seu endereço electrónico e<br>senha</span> - - - - Email Address: - Endereço Electrónico: - - - - Click here if you don't have a @company@ account - Clique aqui se não tem uma conta @company@ - - - - Forgot your @company@ password? - Esqueceu a sua senha @company@ - - - - AdvancedConfigWindow - - - Close - Fechar - - - - Preference Name - Nome Preferido - - - - Type - Tipo - - - - Value - Valor - - - - Default Value - Valor Predefinido - - - - Save - Gravar - - - - Status - Estado - - - - @product@ - Advanced Configuration - @product@ - Configuração Avançada - - - - AdvancedSettings - - - Add - Adicionar - - - - Advanced Settings - Configurações Avançadas - - - - Advanced Configuration Window - Janela de Configuração Avançada - - - - Automatically answer incoming calls from - Responder automaticamente a todas as chamadas de - - - - Remove - Remover - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Atenção, esta parte é para utilizadores avançados.<br>Qualquer engano pode danificar gravemente o programa. - - - - AppearanceSettings - - - Toolbar - Barra de ferramentas - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - &Oculto - - - - Chat Theme - - - - - - Form - Formulário - - - - AudioSettings - - - Reset - Restaurar - - - - Audio Codecs - Codificadores de Áudio - - - - &Input device: - D&ispositivo de entrada - - - - &Output device: - Disp&ositivo de saída - - - - &Ringing device: - Dispositivo de &toque - - - - &Make a test call - &Efectuar chamada de teste - - - - - Test - Teste - - - - &Advanced >> - &Avançado >> - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulário - - - - AvatarWidget - - - Form - Formulário - - - - BrowserSoftUpdateWindow - - - Close - Fechar - - - - @product@ - Update available - @product@ - Actualização disponível - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3.ª: - - - - 1st: - 1.ª: - - - - 2nd: - 2.ª: - - - - - - (+ country code) phone number - (+ código do país) número de telefone - - - - Forward all unanswered calls to message box - Reencaminhar todas as chamadas não atendidas para a caixa de mensagens - - - - Disable call forwarding - Desactivar reencaminhamento de chamadas - - - - Forward all unanswered calls to following phone numbers: - Reencaminhar todas as chamadas não atendidas para os números de telefone seguintes: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Por exemplo +3314500XXXX (+33 é o código do país e 14500XXXX é o número de telefone) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - O reencaminhamento de chamadas está activo se não estiver ligado ao @company@, quando a sua linha estiver ocupada ou 20 segundos após não ter atendido uma chamada. Pode configurar até três reencaminhamentos de chamadas para telefones fixos, telemóveis ou correio de voz (se aplicável) - - - - CallToaster - - - Incoming Call - Chamada recebida - - - - Message - Mensagem - - - - ChatLogViewer - - - Chat History - Histórico de Conversas - - - - &Contact - &Contacto - - - - &Tools - &Ferramentas - - - - &Help - &Ajuda - - - - &Actions - &Acções - - - - Main Toolbar - Barra de Ferramentas Principal - - - - - - Call Contact - Chamar Contacto - - - - - - Send a File - Enviar um Ficheiro - - - - createChatConf - criarConferenciaConversa - - - - - - Show Contact Info - Mostrar Informação do Contacto - - - - blockContact - bloquearContacto - - - - &Save History As... - &Gravar Histórico Como... - - - - actionRestartChat - acçãoReiniciarConversa - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contacto - - - - &Tools - &Ferramentas - - - - &Actions - &Acções - - - - Main Toolbar - Barra de Ferramentas Principal - - - - - - Call Contact - Chamar Contacto - - - - - - Send a File - Enviar um Ficheiro - - - - - - Show Contact Info - Mostrar Informação do Contacto - - - - blockContact - bloquearContacto - - - - &Save History As... - &Gravar Histórico Como... - - - - @company@ - @company@ - - - - MainWindow - JanelaPrincipal - - - - &Edit - &Editar - - - - Cu&t - Cor&tar - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copiar - - - - Ctrl+C - Ctrl+C - - - - &Paste - Co&lar - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Iniciar Conversa por Conferência - - - - &Close - &Fechar - - - - Conference - Conferência - - - - ChatRoomInviteWidget - - - Chat room - Sala de conversa - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sala de conversa</span></p></body></html> - - - - (Conference participants) - (Participantes da conferência) - - - - &Remove - &Remover - - - - &Start - &Iniciar - - - - Group Name - Nome do Grupo - - - - &Add - &Adicionar - - - - ChatToaster - - - Message - Mensagem - - - - Incoming Chat - Conversa Activa - - - - ChatWidget - - - Form - Formulário - - - - ConferenceCallWidget - - - Cancel - Cancelar - - - - Start - Iniciar - - - - Phone number 2: - Número de telefone 2: - - - - Phone number 1: - Número de telefone 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Criar Conferência - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Por favor indique dois números de telefone </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ou ID de contacto @company@ por ordem</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">para criar 3-vias de conferência.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conference</span><br /><br />Por favor indique dois números de telefone </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">ou ID de contacto @company@ por ordem</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">para criar 3-vias de conferência.</p> - - - - &Add >> - &Adicionar >> - - - - << &Remove - << &Remover - - - - Available Contacts - Contactos Disponíveis - - - - &Start - &Iniciar - - - - Cancel - Cancelar - - - - ContactGroupPopupMenu - - - Remove Contact Group - Remover Grupo de Contactos - - - - Rename Contact Group - Renomear Grupo de Contactos - - - - Delete group - Apagar grupo - - - - Do you really want to delete this group? - Deseja realmente apagar este grupo? - - - - &Yes - &Sim - - - - &No - &Não - - - - ContactList - - - Contact List - Lista de Contactos - - - - ContactWidget - - - No mobile phone number set - Sem número de telefone definido - - - - No landline phone number set - Sem número de telefone fixo definido - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para editar este contacto</p></body></html> - - - - CrashReport - - - Cancel - Cancelar - - - - Program Failure - Falha do Programa - - - - Send - Enviar - - - - Optional Information - Informação Opcional - - - - Your Mail: - O seu endereço electrónico: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Não Disponível - - - - Click here to change your call forward settings - Clique aqui para alterar as suas definições de reencaminhamento de chamadas - - - - Call forward mode: - Modo de reencaminhamento de chamadas: - - - - Purchase call out credits - Comprar créditos de chamadas externas - - - - Call Forward Method - Método de Reencaminhamento de Chamadas - - - - Call Voice Mail - Chamar Correio de Voz - - - - Click here to buy @company@'s credits - Clique aqui para comprar créditos @company@ - - - - DesktopService - - - Root Folder - Pasta de Raiz - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Clique nos vários itens que mudam de cor para enviar sons para seu interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Clique aqui para chamar o seu correio de voz - - - - New Voice Mail: - Novo Correio Voz: - - - - Click here to see missed call(s) - Clique aqui para ver a(s) sua(s) chamada(s) perdida(s) - - - - Missed Call(s): - Chamada(s) Perdida(s): - - - - FileTransferDialog - - - ... - ... - - - - Download - Transferir - - - - Upload - Enviar - - - - Click here to change your download folder - Clique aqui para alterar a sua pasta de transferências - - - - Download folder: - Pasta de transferências: - - - - Clean all items in the list - Limpar todos os itens da lista - - - - &Clean - &Limpar - - - - @product@ - File Transfer Manager - @product@ - Gestão da Transferência de Ficheiros - - - - FileTransferItem - - - Cancel - Cancelar - - - - Form - Formulário - - - - Pause - Pausar - - - - <i>From:</i> - <i>De:</i> - - - - GeneralSettings - - - When I double-click on a contact - Quando faço duplo clique num contacto - - - - Call cell phone or land line if contact not online - Chamar o telemóvel ou telefone fixo se o contacto não estiver em linha - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Estado inactivo - - - - minutes - minutos - - - - Show me as "Away" when I am inactive for: - Mostrar-me como "Ausente" quando estiver inactivo por: - - - - When I start my computer - Quando inicio o meu computador - - - - Automatically start @product@ - Iniciar automaticamente o @product@ - - - - GoogleTalkSettings - - - Login: - Nome de Utilizador: - - - - Password: - Senha: - - - - GoogleTalk Settings - Definições GoogleTalk - - - - Forgot your GoogleTalk password? - Esqueceu a sua senha GoogleTalk? - - - - Get a new GoogleTalk Account - Obter nova conta GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Cancelar - - - - HTTP Proxy Address: - Endereço Proxy HTTP: - - - - HTTP Proxy Port Number: - Número do porto do Proxy HTTP: - - - - HTTP Proxy Login: - Nome de utilizador do Proxy HTTP: - - - - HTTP Proxy Password: - Senha do Proxy HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autenticação Proxy HTTP</span><br><br><span>O seu proxy HTTP local usa autenticação<br>Por favor indique o seu nome de utilizador e senha</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Proxy HTTP Local - - - - ICQSettings - - - Login: - Nome de Utilizador: - - - - Password: - Senha: - - - - ICQ Settings - Definições ICQ - - - - Forgot your ICQ password? - Esqueceu a sua senha ICQ? - - - - Get a new ICQ Account - Obter nova conta ICQ - - - - IMAccountManager - - - Close - Fechar - - - - Login - Nome de utilizador - - - - Add - Adicionar - - - - Delete - Apagar - - - - Modify - Modificar - - - - Protocol - Protocolo - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - As Minhas Contas de Mensagens Instantâneas (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Cancelar - - - - Save - Gravar - - - - IM Account Settings - Definições de contas IM - - - - IMContactManager - - - Add - Adicionar - - - - Delete - Apagar - - - - Contact Type (protocol) - Tipo de Contacto (protocolo) - - - - Click on the add button below to add a new ID - Clique no botão adicionar abaixo para adicionar um novo ID - - - - Contact ID - ID de Contacto - - - - IMProfileWidget - - - - Enter your nickname here - Indique aqui a sua alcunha - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Adicionar uma conta de mensagem instantânea (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Adicionar conta IM - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para alterar a sua imagem</p></body></html> - - - - ImageSelector - - - Cancel - Cancelar - - - - OK - OK - - - - Go Up - Acima - - - - Refresh - Refrescar - - - - JabberSettings - - - Login: - Nome de Utilizador: - - - - Password: - Senha: - - - - Jabber Settings - Definições Jabber - - - - Connect Server: - Conectar ao Servidor: - - - - <u>Advanced Options</u> - <u>Opções Avançadas</u> - - - - Require TLS - Requerer TLS - - - - Port: - Porto: - - - - Use TLS if available - Usar TLS se disponível - - - - Allow plaintext authentication over unencrypted streams - Permitir autenticação em texto simples sem encriptação - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forçar SSL antigo (porto 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - O seu idioma não está aqui, sabia que pode fazer sua própria tradução no Launchpad? - - - - More information here. - Mais informação aqui. - - - - LogAccount - - - Password: - Senha: - - - - Need help? - Precisa de ajuda? - - - - Cancel - Cancelar - - - - Delete - Apagar - - - - @product@ - Login - @product@ - Nome de utilizador - - - - Account: - Conta: - - - - &Connect - &Conectar - - - - Forgot your @company@ password? - Esqueceu a sua senha @company@ - - - - &Modify - &Modificar - - - - Configure a &New Profile - Configurar &Novo Perfil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Login</span><br><br><span>Por favor escolha um perfil usado anteriormente<br/> ou preencha as informações para se ligar a uma<br/> conta @company@</span> - - - - MSNSettings - - - Login: - Nome de Utilizador: - - - - Password: - Senha: - - - - MSN Settings - Definições MSN - - - - Forgot your MSN password? - Esqueceu sua senha MSN? - - - - Get a new MSN Account - Obter nova conta MSN - - - - Use HTTP method - Usar método HTTP - - - - MainWindow - - - MainWindow - JanelaPrincipal - - - - Command::terminate() - Comando::terminar() - - - - Command::start() - Comando::iniciar() - - - - Accept Call - Aceitar Chamada - - - - Send Chat Message - Enviar Mensagem de Conversa - - - - Make Call - Efectuar Chamada - - - - Hang Up - Desligar - - - - ManageBlockedUsersSettings - - - Close - Fechar - - - - Unblock User - Desbloquear Utilizador - - - - Manage blocked users - Gerir utilizadores bloqueados - - - - @product@ - Manage blocked users - @product@ - Gerir utilizadores bloqueados - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Tenho uma conta @company@ - - - - Create a @company@ account - Criar conta @company@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Para enviar uma SMS; precisa estar autenticado numa<br>conta @company@ e ter créditos @company@ - - - - NotificationSettings - - - Select the events for which a sound should be played. - Seleccione os eventos para os quais um som deve ser reproduzido. - - - - NotificationSettingsItem - - - Sound file - Ficheiro de som - - - - Find a sound file - Procurar um ficheiro de som - - - - Play sound file - Reproduzir um ficheiro de som - - - - Play - Reproduzir - - - - NotifyDialog - - - File Transfer - Transferência de Ficheiros - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Estado:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Actualizar</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Aceitar - - - - Status - Estado - - - - 00:00:00 - 00:00:00 - - - - Nickname - Alcunha - - - - &Reject - &Rejeitar - - - - Dialpad - Teclado - - - - Audio Smileys - Sorrisos Áudio - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Gerir utilizadores bloqueados - - - - Privacy Rules - Regras de Privacidade - - - - Always sign in as "Invisible" (appear offline to all users) - Entrar sempre como "Invisível" (aparece como desligado) - - - - Allow chats from - Permitir conversas de - - - - - Anyone - Qualquer um - - - - - Only people from my contact list - Apenas pessoas da minha lista de contactos - - - - Allow calls from - Permitir chamadas de - - - - When I sign into @company@ - Quando entro no @company@ - - - - ProfileDetails - - - Cancel - Cancelar - - - - Save - Gravar - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> - p, li { white-space: pre-wrap; } - </style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> - <p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clique para alterar a sua imagem</p></body></html> - - - - General - Geral - - - - Network IDs (MSN, Jabber...) - IDs de Rede (MSN, Jabber...) - - - - Advanced >> - Avançado >> - - - - Fill in all your network Id to stay connected with your contacts - Preencha toda sua identificação de rede para estar conectado com os seus contactos - - - - Contact - Contacto - - - - Group: - Grupo: - - - - Last Name: - Último Nome: - - - - First Name: - Primeiro Nome: - - - - Details - Detalhes - - - - Web/blog: - Sítio/blog: - - - - Country: - País: - - - - State: - Estado: - - - - City: - Cidade: - - - - Gender: - Género: - - - - Birth Date: - Data de Nascimento: - - - - Email: - Endereço Electrónico: - - - - Notes - Notas - - - - Phone Numbers - Números de Telefone - - - - Home phone - Telefone de casa - - - - Mobile phone - Telemóvel - - - - dd MMMM yyyy - dd MMMM aaaa - - - - Unknown - Desconhecido - - - - Male - Masculino - - - - Female - Feminino - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Contas - - - - Accounts Settings - Configurações de Contas - - - - QtAddAccount - - - Configure your voip account - Configure a sua conta voip - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Por favor diga-nos se a sua conta é fornecida<br/>pelo @company@ ou por outro serviço - - - - QtAddAccountUtils - - - Test - Teste - - - - Audio Test Call - Chamada Teste de Áudio - - - - Video Test Call - Chamada Teste de Vídeo - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Por favor preencha a informação que irá<br/>permitir que o seu 'softphone' se conecte à sua<br/>conta SIP - - - - Configure your SIP profile - Configure o seu perfil SIP - - - - QtAddWengoAccount - - - Login - Nome de utilizador - - - - Please enter an email address. - Por favor indique um endereço electrónico. - - - - Please enter your email address<br/>and your password - Por favor indique o seu endereço electrónico<br/>e a sua senha - - - - @product@ - Connexion - @product@ - Conexão - - - - QtAdvancedIMContactManager - - - Cancel - Cancelar - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Tem certeza que deseja apagar este contacto IM? - - - - - &Delete - &Apagar - - - - QtAdvancedSettings - - - Advanced - Avançado - - - - Advanced Settings - Configurações Avançadas - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Avançado - - - - Audio - Áudio - - - - Audio Settings - Definições de Áudio - - - - QtCallBar - - - +(country code) number or nickname - +(código do país) telefone ou alcunha - - - - QtCallForwardSettings - - - - Call Forward - Reencaminhar Chamada - - - - Call Forward Settings - Definições de Reencaminhamento de Chamadas - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Guardar Como - - - - QtChatLogViewer - - - Edit Contact - Editar Contacto - - - - QtChatTabWidget - - - Close chat - Fechar conversa - - - - QtChatWidget - - - %1 is connected. - %1 está conectado. - - - - %1 is disconnected. - %1 está desconectado. - - - - send - enviar - - - - Your file can not be sent: your contact must be connected on the @company@ network. - O seu ficheiro não pode ser enviado: o seu contacto tem que estar conectado na rede @company@. - - - - Your contact wishes to send a file with @company@. - O seu contacto deseja enviar um ficheiro com @company@. - - - - Go to %1 to install it - Vá para %1 para o instalar - - - - %1 has joined the chat - %1 entrou na conversa - - - - %1 has left the chat - %1 saiu da conversa - - - - QtChatWindow - - - Edit Contact - Editar Contacto - - - - @product@ Chat - @product@ Conversa - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Chamar SIP - - - - Call land line - Chamar telefone fixo - - - - Call Mobile - Chamar telemóvel - - - - Call @company@ - Chamar @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Pode agora informar o seu primeiro interlocutor que fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo. O seu primeiro interlocutor será colocado em espera, enquanto o segundo interlocutor será chamado.<br> - - - - Hold first interlocutor and call second one - Colocar o primeiro interlocutor em espera e chamar o segundo - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Pode agora informar o seu segundo interlocutor que fará parte de uma conferência.</b><br><br>Quando estiver pronto, clique no botão abaixo para iniciar a conferência. - - - - Start Conference - Iniciar Conferência - - - - - @product@ - Proceed Conference - @product@ - Prosseguir com a Conferência - - - - QtContactList - - - &Yes - &Sim - - - - &No - &Não - - - - Merge %1 with %2? - Misturar %1 com %2? - - - - @product@ - Merge Contacts - @product@ - Juntar Contactos - - - - QtContactManager - - - &Yes - &Sim - - - - &No - &Não - - - - Home phone - Telefone de casa - - - - Mobile phone - Telemóvel - - - - @product@ - @product@ - - - - Edit Contact - Editar Contacto - - - - Do you really want to delete this contact? - Deseja realmente apagar este contacto? - - - - Start chat - Iniciar conversa - - - - - Delete contact - Apagar contacto - - - - Call - Chamar - - - - Free call - - - - - Work phone - Telefone de trabalho - - - - Send SMS - Enviar SMS - - - - Edit contact - Editar contacto - - - - Block contact - Bloquear contacto - - - - Invite to conference - Convidar para conferência - - - - Go to website - Vá para o sítio - - - - Send file - Enviar ficheiro - - - - Forward to mobile phone - Reencaminhar para telemóvel - - - - QtContactWidget - - - No mobile phone number set - Sem número de telefone definido - - - - No landline phone number set - Sem número de telefone fixo definido - - - - - Click here to call - Clique aqui para chamar - - - - - Click here to set a phone number - Clique aqui para definir um número de telefone - - - - Click here to edit the contact - Clique aqui para editar o contato - - - - Click here to send a SMS - Clique aqui para enviar uma mensagem SMS - - - - Click here to start a chat - CLique aqui para iniciar uma conversa - - - - Click here to start a free call - clique aqui para iniciar uma chamada gratuita - - - - Click here to send a file - Clique aqui para enviar um ficheiro - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Deseja chamar o seu correio voz? - - - - @product@ - Voice Mail - @product@ - Correio de Voz - - - - QtFileTransfer - - - &Yes - &Sim - - - - &No - &Não - - - - Choose a directory - Escolha um directório - - - - Overwrite File? - Substituir ficheiro? - - - - A file called %1 already exists.Do you want to overwrite it? - Um ficheiro chamado %1 já existe. Deseja-o substituir? - - - - - File size error - Erro no tamanho do ficheiro - - - - %1 exceeds the maximum authorized size. - %1 excede o tamanho máximo autorizado. - - - - %1 has size 0. - %1 tem tamanho 0. - - - - %1 is a directory. - %1 é um directório. - - - - You can not send a directory. - Não pode enviar um directório. - - - - %1 is a shortcut. - %1 é um atalho. - - - - You can not send a shortcut. - Não pode enviar um atalho. - - - - All Files (*.* *) - Todos os Ficheiros (*.* *) - - - - Please upgrade<br> your @product@ - Por favor actualize<br> o seu @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Diga ao seu contacto<br> para actualizar<br> o @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Cancelar - - - - Remove - Remover - - - - - Pause - Pausar - - - - Starting - A iniciar - - - - From: - De: - - - - To: - Para: - - - - Open - Abrir - - - - Resume - Resumir - - - - Waiting for anwser... - A aguardar uma resposta... - - - - Done - Terminado - - - - Failed - Falhado - - - - Paused - Pausado - - - - Paused by peer - Pausado pelo contacto - - - - Cancelled - Cancelado - - - - Cancelled by peer - Cancelado pelo contacto - - - - - Downloading... - A transferir... - - - - Uploading... - A enviar... - - - - Waiting for peer... - A aguardar pelo contacto... - - - - An error occured during the file transfer - Ocorreu um erro durante a tranferência do ficheiro - - - - This may be caused by : - Isto pode ser causado por: - - - - Your @product@ is not up to date. Please download the latest version on - O seu @product@ não está actualizado. Por favor transfira a última versão em - - - - The @company@ network may be temporarily unavailable. Please try later. - A rede @company@ pode estar temporariamente indisponível. Por favor tente mais tarde. - - - - QtGeneralSettings - - - General - Geral - - - - General Settings - Definições Gerais - - - - QtHistory - - - Incoming call - Chamada recebida - - - - Outgoing call - Chamada realizada - - - - Missed call - Chamada perdida - - - - Rejected call - Chamada rejeitada - - - - Outgoing SMS - SMS enviado - - - - Do you want to call %1? - Deseja chamar %1? - - - - Chat session - Sessão de conversa - - - - @product@ - Call History - @product@ - Histórico de Chamadas - - - - Type - Tipo - - - - Name/ID - Nome/ID - - - - Date - Data - - - - Duration - Duração - - - - QtHistoryWidget - - - Erase this entry - Apagar esta entrada - - - - Open in SMS window - Abrir na janela SMS - - - - Call this peer - Chamar este contacto - - - - Show chat log - Mostrar registo da conversa - - - - QtIMAccountManager - - - Cancel - Cancelar - - - - @product@ - @product@ - - - - &Delete - &Apagar - - - - Are sure you want to delete this account? - - Tem certeza que deseja apagar esta conta? - - - - - QtIMAccountMonitor - - - - - Disconnected - Desconetado - - - - Error: %1 - Erro: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Em linha - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do not disturb - Não Incomodar - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Por favor indique um nome de utilizador - - - - QtIMAccountPresenceMenuManager - - - Cancel - Cancelar - - - - @product@ - @product@ - - - - &Delete - &Apagar - - - - Online - Em linha - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Incomodar - - - - Disconnect - Desconectar - - - - Delete Account - Apagar Conta - - - - Are sure you want to delete the account <b>%1</b>? - Tem certeza que deseja apagar a conta <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Editar O Meu Perfil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Idioma - - - - Language Settings - Definições de Idioma - - - - QtLogAccount - - - Invalid account - Conta inválida - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Por favor escolha um perfil usado anteriormente<br/> ou preencha as informações para se ligar a uma<br/> conta @company@ - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Conexão - - - - QtNotificationSettings - - - Incoming call (ringtone) - Chamada recebida (toque) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Chamada fechada (toque) - - - - Incoming chat - Conversa recebida - - - - IM account connected - Conta IM Conectada - - - - IM account disconnected - Conta IM desconectada - - - - Contact online - Contacto em linha - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Escolha um ficheiro de som - - - - Sounds - Sons - - - - QtPhoneCall - - - Status - Estado - - - - Incoming Call - Chamada recebida - - - - Resume - Resumir - - - - Hang-up - Desligar - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Erro - - - - Talking - A falar - - - - Dialing - A marcar - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - A chamar - - - - Redirected - Redireccionado - - - - Initialization... - Inicialização... - - - - Closed - Fechado - - - - - Hold - Em espera - - - - Add contact - Adicionar contacto - - - - Ca&ncel - Ca&ncelar - - - - Talking - Conference - A falar - Conferência - - - - Add a Contact - Adicionar Contacto - - - - QtPresenceMenuManager - - - Online - Em linha - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Incomodar - - - - Log off - Desconectar - - - - QtPrivacySettings - - - Privacy - Privacidade - - - - Privacy Settings - Definições de Privacidade - - - - QtProfileBar - - - Click here to change your status - Clique aqui para alterar o seu estado - - - - - active - ativo - - - - voicemail - correio voz - - - - inactive - inativo - - - - unauthorized - não autorizado - - - - Set global presence to: - Definir presença global para: - - - - Voice mail - Correio voz - - - - QtProfileDetails - - - Advanced >> - Avançado >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Um contacto precisa ter um grupo, por favor selecione um. - - - - << Simple - << Simples - - - - Select your avatar - Seleccione a sua imagem - - - - @product@ - No Group Selected - @product@ - Nenhum Grupo Seleccionado - - - - @company@ Avatars - Imagens @company@ - - - - QtRenameGroup - - - Bad group name - Nome de grupo inválido - - - - Group name cannot be empty - O nome do grupo não pode estar vazio - - - - QtSecuritySettings - - - Security - Segurança - - - - Security Settings - Definições de Segurança - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Por favor indique um número de telefone. - - - - Do you want to continue? - Deseja continuar? - - - - Your SMS has not been sent - O seu SMS não foi enviado - - - - Your SMS has been sent - O seu SMS foi enviado - - - - Your message is too long. -This will send - A sua mensagem é demasiado longa. -Isto irá enviar - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Não pode enviar uma mensagem vazia. - - - - - - - @company@ SMS service - Serviço SMS @company@ - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Actualização falhada - - - - @product@ update failed to start: try to update @product@ manually - Actualização @product@ falhou ao iniciar: tente actualizar o @product@ manualmente - - - - QtStatusBar - - - - Not connected - Desconectado - - - - Register done - Registo terminado - - - - Unregister done - Remoção de registo terminada - - - - Connecting - A conectar - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Estado - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Chamar SIP - - - - Call land line - Chamar telefone fixo - - - - Call Mobile - Chamar telemóvel - - - - Call @company@ - Chamar @company@ - - - - Call - Chamar - - - - Send SMS - Enviar SMS - - - - Online - Em linha - - - - Invisible - Invisível - - - - Away - Ausente - - - - Do Not Disturb - Não Incomodar - - - - Internet Connection Error - Erro na Conexão Internet - - - - Offline - Desligado - - - - Connecting... - A conectar... - - - - Send a SMS - Enviar SMS - - - - Start a chat - Iniciar conversa - - - - Place Call - Efectuar Chamada - - - - Send File - Enviar Ficheiro - - - - Multiple Status - Estados Múltiplos - - - - Unknown Status - Estado Desconhecido - - - - Quit @product@ - Sair do @product@ - - - - QtToolBar - - - &Cancel - &Cancelar - - - - @product@ - Proceed Conference - @product@ - Prosseguir com a Conferência - - - - Edit My Profile - Editar O Meu Perfil - - - - Add a Contact - Adicionar Contacto - - - - Hide Unavailable Contacts - Ocultar Contactos Indisponíveis - - - - Show Unavailable Contacts - Mostrar Contactos Indisponíveis - - - - Hide Groups - Ocultar Grupos - - - - Show Groups - Mostrar Grupos - - - - You have unfinished call(s). - Tem chamada(s) não concluída(s). - - - - Are you sure you want to log off? - Tem certeza que deseja desconectar? - - - - &Log Off - &Desconectar - - - - Disable &Video Calls - Desactivar Chamadas de &Vídeo - - - - Enable &Video Calls - Activar Chamadas de &Vídeo - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>A conferência não pode ser iniciada enquanto existirem chamadas activas.</b><br><br>Finalize todas as chamadas e tente novamente. - - - - @product@ - Warning - @product@ - Aviso - - - - - Log &Off... - &Desconectar... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Lista de contactos - - - - QtUserProfile - - - Edit Contact - Editar Contacto - - - - - &Authorize - &Autorizar - - - - - &Block - &Bloquear - - - - Network error. - Erro de Rede - - - - - @product@ - Authorization Request - @product@ - Pedido de Autorização - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Ocorreu um problema ao carregar o seu perfil. -O último perfil salvaguardado foi carregado: -pode ter perdido as alterações que efectuou - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Não foi possível carregar o seu perfil. -Escolha outro perfil ou crie um novo. - - - - Wrong email/password entered - Endereço electrónico/senha incorretos - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Vídeo - - - - - Normal - Normal - - - - - Good - Bom - - - - - Very good - Muito bom - - - - - Excellent - Excelente - - - - Video Settings - Definições de Vídeo - - - - QtVoicemailSettings - - - Voicemail - Correio de voz - - - - Voicemail Settings - Definições de Correio de Voz - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Directório - - - - QtWengoConfigDialog - - - Advanced - Avançado - - - - General - Geral - - - - Accounts - Contas - - - - Audio - Áudio - - - - Call Forward - Reencaminhar Chamada - - - - Language - Idioma - - - - Privacy - Privacidade - - - - Video - Vídeo - - - - Voicemail - Correio de voz - - - - security - segurança - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Cancelar - - - - - - - Conference - Conferência - - - - Call - Chamar - - - - Account - - - - - Add a Contact - Adicionar Contacto - - - - You have unfinished call(s). - Tem chamada(s) não concluída(s). - - - - @product@ - Warning - @product@ - Aviso - - - - - Home - Pasta Pessoal - - - - Are you sure you want to exit the application? - Tem certeza que deseja sair da aplicação? - - - - &Exit - &Sair - - - - @product@ - Call Error - @product@ - Erro de Chamada - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Cancelar - - - - OK - OK - - - - Enter the new group name: - Indique o novo nome do grupo: - - - - @product@ - Rename Contact Group - @product@ - Renomear Grupo de Contacto - - - - SecuritySettings - - - Form - Formulário - - - - Enable call encryption - Activar encriptação de chamadas - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - O @product@ pode encriptar chamadas usando o sistema de encriptação AES 128-bits e o Diffie-Hellman para troca de chaves. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Actualize o seu perfil - - - - Yahoo! ID: - ID Yahoo!: - - - - MSN ID: - ID MSN: - - - - Jabber/GoogleTalk ID: - ID Jabber/GoogleTalk: - - - - exemple: username@server - exemplo: nome_utilizador@servidor - - - - SIP ID: - ID SIP: - - - - ICQ ID: - ID ICQ: - - - - AIM ID: - ID AIM: - - - - @company@ ID: - ID @company@: - - - - SmsWindow - - - Send - Enviar - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Clique aqui para adicionar um número de telefone - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Indique aqui a sua assinatura - - - - Signature: - Assinatura: - - - - Phone number(s): - Número(s) de telefone: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Indique aqui o(s) número(s) de telefone<br>Têm que estar separados por & ou ; ou , - - - - SoftUpdateWindow - - - Cancel - Cancelar - - - - @product@ - Downloading update - @product@ - A transferir actualização - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulário - - - - VideoSettings - - - Normal - Normal - - - - Good - Bom - - - - Very good - Muito bom - - - - Excellent - Excelente - - - - Enable video - Activar vídeo - - - - Webcam Selection - Selecção Webcam - - - - Webcam device: - Dispositivo webcam: - - - - Webcam Preview - Previsão da Webcam - - - - Connection Type - Tipo de Conexão - - - - Video quality - Qualidade de vídeo - - - - Down (kbit/s) - Receber (kbit/s) - - - - Up (kbit/s) - Enviar (kbit/s) - - - - 0 to 512 - 0 até 512 - - - - 0 to 128 - 0 até 128 - - - - 512 to 2048 - 512 até 2048 - - - - 128 to 256 - 128 até 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - A qualidade de vídeo depende da largura de banda da sua conexão Internet - - - - Make a test video call - Realizar chamada de teste de vídeo - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Vídeo - - - - VoicemailSettings - - - Form - Formulário - - - - Phone number of your voicemail: - Número de telefone do seu correio voz: - - - - Please fill in here the information about your voicemail - Por favor preencha aqui a informação acerca do seu correio voz - - - - WengoConfigDialog - - - Cancel - Cancelar - - - - Save - Gravar - - - - Title - Título - - - - @product@ - Configuration - @product@ - Configuração - - - - WengoPhoneWindow - - - &Accept - &Aceitar - - - - &Hidden - &Oculto - - - - &Tools - &Ferramentas - - - - &Help - &Ajuda - - - - &Actions - &Acções - - - - @company@ - @company@ - - - - &Close - &Fechar - - - - Dialpad - Teclado - - - - @product@ - @product@ - - - - Start Conference - Iniciar Conferência - - - - Send SMS - Enviar SMS - - - - Contacts - Contactos - - - - History - Histórico - - - - Clear &History - Limpar &Histórico - - - - ToolBar - Barra de Ferramentas - - - - Show/Hide Unavailable &Contacts - Mostrar/Ocultar &Contactos Indisponíveis - - - - &Chat Sessions - Sessões de &Conversa - - - - &All - &Tudo - - - - &HangUp - &Desconectar - - - - &Hold/Resume - &Em espera/Resumir - - - - Show/Hide &Groups - Mostrar/Ocultar &Grupos - - - - &Outgoing Calls - Chamadas R&ealizadas - - - - &Incoming Calls - Chamadas &Recebidas - - - - &Missed Calls - Chamadas &Perdidas - - - - Enable/Disable &Video Calls - Activar/Desactivar Chamadas de &Vídeo - - - - Short Text &Messages (SMS) - &Mensagens de Texto Curtas (SMS) - - - - Rejected Calls - Chamadas Rejeitadas - - - - &Contacts - &Contactos - - - - &About... - &Acerca... - - - - Add &Contact... - Adicionar &Contacto... - - - - &Configuration... - &Configuração... - - - - Send SMS... - Enviar SMS... - - - - View My &Profile... - Ver O Meu &Perfil... - - - - - View My Profile - Ver O Meu Perfil - - - - Start &Conference... - Ini&ciar Conferência... - - - - &Find Contact... - &Procurar Contacto... - - - - Log &Off... - &Desconectar... - - - - - Log Off - Desconectar - - - - Show &Chat Window - Mostrar Janela de &Conversa - - - - - Show Chat Window - Mostrar Janela de Conversa - - - - Show &File Transfer - Mostrar Transferência de &Ficheiros - - - - Add Contact - Adicionar Contacto - - - - View My @company@ Account... - Ver A Minha Conta @company@ - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - Fórum @company@... - - - - @company@ &Wiki/FAQ... - &Wiki/FAQ @company@... - - - - Learn more about @company@ Services... - Saber mais acerca dos Serviços @company@... - - - - Search - Procurar - - - - Find @company@ Contacts - Procurar Contactos @company@ - - - - &Quit - &Sair - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Texto Debaixo dos Ícones - - - - &Icons Only - Apenas &Ícones - - - - Add - Adicionar - - - - SMS - SMS - - - - Conference - Conferência - - - - Wizard - - - Cancel - Cancelar - - - - Finish - Finalizar - - - - Next > - Próximo > - - - - < Back - < Anterior - - - - Simple Wizard - Step %1 of %2 - Assistente Simples - Passo %1 de %2 - - - - YahooSettings - - - Login: - Nome de Utilizador: - - - - Password: - Senha: - - - - Yahoo! Settings - Definições Yahoo! - - - - Use Yahoo! Japan server - Usar servidor Japonês Yahoo! - - - - Forgot your Yahoo! password? - Esqueceu a sua senha Yahoo!? - - - - Get a new Yahoo! Account - Obter nova conta Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ro.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ro.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ro.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ro.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4779 +0,0 @@ - - - - - AIMSettings - - - Login: - Utilizator: - - - - Forgot your AIM password? - V-ați uitat parola AIM? - - - - Get a new AIM Account - Creați un cont AIM nou - - - - Password: - Parolă: - - - - AIM Settings - Setări AIM - - - - AboutWindow - - - About - Despre - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autori - - - - Close - Închide - - - - 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. - Acest soft este liber; puteți să-l redistribuiți și/sau -să-l modificați respectînd termenii GNU General Public License -așa cum a fost publicată de Free Software Foundation; fie versiunea 2 -a Licenței, fie (la alegerea dv.) orice altă versiune ulterioară. - - - - @product@ - About - @product@ - Despre - - - - @product@, a voice over Internet phone - @product@, un telefon vocal prin internet - - - - AcceptDialog - - - File Transfer - Transfer de Fișiere - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - A&cceptă - - - - &Cancel - &Anulează - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Fișier: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Fișier de Primit</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Editează Profilul Meu - - - - AddAccount - - - Configure your account: - Configurați-vă contul: - - - - &Next - Co&ntinuă - - - - Need help? - Aveți nevoie de ajutor? - - - - You don't have any account ? Click here - N-aveți nici un cont? Faceți clic aici - - - - &Back - Îna&poi - - - - Cancel - Anulează - - - - @product@ - Login - @product@ - Logare - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Configurarea Contului VOIP</span><br><br><span>Spuneți-ne dacă contul dv. este oferit<br/>de @company@ sau de un alt serviciu</span> - - - - @company@ account - Cont @company@ - - - - Generic SIP account - Cont SIP Generic - - - - AddIMContact - - - Cancel - Anulează - - - - Contact Type (protocol): - Tip de Contact (protocol): - - - - Contact ID: - ID Contact: - - - - Account: - Cont: - - - - Enable - Activează - - - - Login - Utilizator - - - - Add - Adaugă - - - - @product@ - Add a Contact Account - @product@ - Adaugă un Cont de Contact - - - - AddSIPAccount - - - Password: - Parolă: - - - - Need help? - E nevoie de ajutor? - - - - &Back - Î&napoi - - - - Cancel - Anulează - - - - @product@ - Login - @product@ - Logare - - - - &Connect - &Conectează - - - - Activate presence and chat (SIP/SIMPLE) - Activează prezența și taifasul [chat] (SIP/SIMPLE) - - - - Displayname: - Nume Afișat: - - - - login / username: - Utilizator: - - - - Account name: - Numele Contului: - - - - Proxy: - Proxy: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - Domeniu SIP: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configurați-vă profilul SIP</span><br><br><span>Completați informațiile care vor<br/>permite softfonului să se conecteze la<br/>contul dv. SIP</span> - - - - Advanced - Setări Avansate - - - - AddWengoAccount - - - Password: - Parolă: - - - - Need help? - Ajutor - - - - &Back - Îna&poi - - - - Cancel - Anulează - - - - @product@ - Login - @product@ - Logare - - - - &Connect - &Conectează - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Logare</span><br><br><span>Introduceți adresa de poștă electronică și<br>parola</span> - - - - Email Address: - E-mail: - - - - Click here if you don't have a @company@ account - Clicați aici dacă nu aveți un cont @company@ - - - - Forgot your @company@ password? - V-ați uitat parola @company@? - - - - AdvancedConfigWindow - - - Close - Închide - - - - Preference Name - Setare - - - - Type - Tip - - - - Value - Valoare - - - - Default Value - Valoare Implicită - - - - Save - Salvează - - - - Status - Stare - - - - @product@ - Advanced Configuration - @product@ - Configurare Avansată - - - - AdvancedSettings - - - Add - Adaugă - - - - Advanced Settings - Setări Avansate - - - - Advanced Configuration Window - Fereastra Setărilor Avansate - - - - Automatically answer incoming calls from - Răspunde automat la apelurile venite de la - - - - Remove - Înlătură - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Atenție, această parte este pentru utilizatorii avansați.<br>Orice greșeală ar putea deteriora iremediabil softul. - - - - AppearanceSettings - - - Toolbar - Bara de Unelte - - - - &Icons && Text - &Iconițe și Text - - - - Icons &Only - D&oar Iconițe - - - - &Hidden - &Ascunsă - - - - Chat Theme - Tema Taifasului [Chat] - - - - Form - Formular - - - - AudioSettings - - - Reset - Resetează - - - - Audio Codecs - Codecuri Audio - - - - &Input device: - Dispozitiv de &Intrare: - - - - &Output device: - Disp&ozitiv de Ieșire: - - - - &Ringing device: - Dispozitiv de Ala&rmă: - - - - &Make a test call - &Faceți un apel de test - - - - - Test - Testează - - - - &Advanced >> - Setări &Avansate >> - - - - &Half Duplex - &Semi-Duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - Atenție, această secțiune este doar pentru utilizatorii avansați. -Orice modificare a ordinii din lista de codecuri ar putea cauza probleme la rularea @product@: e posibil chiar să nu mai puteți apela contactele dv. - - - - AvatarFrame - - - Form - Formular - - - - AvatarWidget - - - Form - Formular - - - - BrowserSoftUpdateWindow - - - Close - Închide - - - - @product@ - Update available - @product@ - Actualizare disponibilă - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - <html><head></head><body>E disponibilă o actualizare, clicați <span style=" text-decoration: underline; color:#0000ff;">aici</span> pt. a descărca versiunea nouă<br /><br />Versiune: %1<br />Mărime: %2 (MB)<br /></body></html> - - - - CallForwardSettings - - - 3rd: - 3-lea: - - - - 1st: - 1-ul: - - - - 2nd: - 2-lea: - - - - - - (+ country code) phone number - (+ cod de țară) nr. de telefon - - - - Forward all unanswered calls to message box - Redirecționează apelurile pierdute către căsuța vocală - - - - Disable call forwarding - Dezactivează redirecționarea apelurilor [call forwarding] - - - - Forward all unanswered calls to following phone numbers: - Redirecționează apelurile pierdute către numerele de telefon: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - De exemplu +3314500XXXX (+33 e codul de țară și 14500XXXX e numărul de telefon) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Redirecționarea apelurilor devine activă cînd nu sînteți conectat la @company@, cînd linia dv. e ocupată sau după 20 de secunde în care nu ați răspuns la un apel primit. Puteți configura pînă la 3 redirecționări de apeluri către linii fixe, telefoane mobile sau mesagerie vocală (dacă e disponibilă) - - - - CallToaster - - - Incoming Call - Apel Primit - - - - Message - Mesaj - - - - ChatLogViewer - - - Chat History - Istoricul Taifasului [Chat] - - - - &Contact - &Contact - - - - &Tools - &Unelte - - - - &Help - A&jutor - - - - &Actions - &Acțiuni - - - - Main Toolbar - Bara de Unelte Principală - - - - - - Call Contact - Apelează Contactul - - - - - - Send a File - Trimite un Fișier - - - - createChatConf - Inițiază Conferință - - - - - - Show Contact Info - Arată Info despre Contact - - - - blockContact - Blochează Contactul - - - - &Save History As... - &Salvează Istoricul Ca... - - - - actionRestartChat - Repornește Taifasul - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Contact - - - - &Tools - &Unelte - - - - &Actions - &Acțiuni - - - - Main Toolbar - Bara de Unelte Principală - - - - - - Call Contact - Apelează Contactul - - - - - - Send a File - Trimite un Fișier - - - - - - Show Contact Info - Arată Info despre Contact - - - - blockContact - blochează Contactul - - - - &Save History As... - &Salvează Istoricul Ca... - - - - @company@ - @company@ - - - - MainWindow - Fereastra Principală - - - - &Edit - &Editează - - - - Cu&t - &Decupează - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Copiază - - - - Ctrl+C - Ctrl+C - - - - &Paste - &Lipește - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Pornește Conferință - - - - &Close - Înc&hide - - - - Conference - Conferință - - - - ChatRoomInviteWidget - - - Chat room - Camera de Taifas - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Camera Taifasului</span></p></body></html> - - - - (Conference participants) - (Participanți la Conferință) - - - - &Remove - În&lătură - - - - &Start - &Pornește - - - - Group Name - Numele Grupului - - - - &Add - &Adaugă - - - - ChatToaster - - - Message - Mesaj - - - - Incoming Chat - Taifas Primit - - - - ChatWidget - - - Form - Formular - - - - ConferenceCallWidget - - - Cancel - Anulează - - - - Start - Pornește - - - - Phone number 2: - Nr. de Telefon 2: - - - - Phone number 1: - Nr. de Telefon 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Creează o Conferință - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferință</span><br /><br />Introduceți două numere de telefon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sau ID-uri de contacte @company@ pentru a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">crea o conferință în 3.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Conferință</span><br /><br />Introduceți două numere de telefon </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">sau ID-uri de contacte @company@ pentru a</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">crea o conferință în 3.</p> - - - - &Add >> - &Adaugă >> - - - - << &Remove - << În&lătură - - - - Available Contacts - Contacte Disponibile - - - - &Start - &Pornește - - - - Cancel - Anulează - - - - ContactGroupPopupMenu - - - Remove Contact Group - Înlătură Grupul de Contacte - - - - Rename Contact Group - Renumește Grupul de Contacte - - - - Delete group - Șterge Grupul - - - - Do you really want to delete this group? - Sigur doriți să ștergeți acest grup? - - - - &Yes - &Da - - - - &No - &Nu - - - - ContactList - - - Contact List - Lista de Contacte - - - - ContactWidget - - - No mobile phone number set - N-a fost setat nici un număr de mobil - - - - No landline phone number set - N-a fost setat nici un număr de tel. fix - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a edita acest contact</p></body></html> - - - - CrashReport - - - Cancel - Anulează - - - - Program Failure - Prăbușire a Programului - - - - Send - Trimite - - - - Optional Information - Informații Opționale - - - - Your Mail: - E-mail: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - Lansarea @product@ a eșuat și a fost generat un fișier de diagnostic. -Acest fișier conține informații utile pt. rezolvarea problemei pe care ați întîlnit-o. -Vă mulțumim pentru contribuție. - -Echipa de Dezvoltatori @product@. - - - - In order to help the developers you can complete this report. This step is optional. - Pentru a-i ajuta pe dezvoltatori, completați raportul. Această etapă este opțională. - - - - Use Case Description: - Descrierea celor întîmplate (care au dus probabil la prăbușirea softului): - - - - CreditWidget - - - Not Available - Indisponibil - - - - Click here to change your call forward settings - Clicați aici pentru a schimba setările de redirecționare a apelurilor - - - - Call forward mode: - Mod de Redirecționare: - - - - Purchase call out credits - Cumpărați Credite de Apelare - - - - Call Forward Method - Metodă de Redirecționare - - - - Call Voice Mail - Mesagerie Vocală - - - - Click here to buy @company@'s credits - Clicați aici pentru a cumpăra credite @company@ - - - - DesktopService - - - Root Folder - Dosar Rădăcină - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Clicați pe itemurile ce-și schimbă culoarea pentru a trimite sunete interlocutorului dv. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Clicați aici pentru a apela mesageria dv. vocală - - - - New Voice Mail: - Mesaj Vocal Nou: - - - - Click here to see missed call(s) - Clicați aici pentru a vedea apelurile pierdute - - - - Missed Call(s): - Apeluri Pierdute: - - - - FileTransferDialog - - - ... - ... - - - - Download - Descarcă - - - - Upload - Încarcă - - - - Click here to change your download folder - Clicați aici pentru a schimba dosarul de descărcare - - - - Download folder: - Dosar de Descărcare: - - - - Clean all items in the list - Curăță toate itemurile din listă - - - - &Clean - &Curăță - - - - @product@ - File Transfer Manager - @product@ - Manager de Transfer al Fișierelor - - - - FileTransferItem - - - Cancel - Anulează - - - - Form - Formular - - - - Pause - Pauzează - - - - <i>From:</i> - <i>De la:</i> - - - - GeneralSettings - - - When I double-click on a contact - Cînd fac dublu-clic pe un contact - - - - Call cell phone or land line if contact not online - Apelează telefon fix sau mobil dacă contactul e neconectat - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Stare de Inactivitate - - - - minutes - minute - - - - Show me as "Away" when I am inactive for: - Arată-mă ca "Absent" cînd sînt inactiv pentru: - - - - When I start my computer - Cînd dau drumul la calculator - - - - Automatically start @product@ - Pornește automat @product@ - - - - GoogleTalkSettings - - - Login: - Utilizator: - - - - Password: - Parolă: - - - - GoogleTalk Settings - Setări GoogleTalk - - - - Forgot your GoogleTalk password? - V-ați uitat parola GoogleTalk? - - - - Get a new GoogleTalk Account - Creați un nou cont GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Anulează - - - - HTTP Proxy Address: - Adresă Proxy: - - - - HTTP Proxy Port Number: - Port Proxy: - - - - HTTP Proxy Login: - Utilizator Proxy: - - - - HTTP Proxy Password: - Parolă Proxy: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autentificare Proxy HTTP</span><br><br><span>Serverul Proxy HTTP necesită autentificare<br>Introduceți numele de utilizator și parola</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Proxy HTTP Local - - - - ICQSettings - - - Login: - Utilizator: - - - - Password: - Parolă: - - - - ICQ Settings - Setări ICQ - - - - Forgot your ICQ password? - V-ați uitat parola ICQ? - - - - Get a new ICQ Account - Creați un nou cont ICQ - - - - IMAccountManager - - - Close - Închide - - - - Login - Utilizator - - - - Add - Adaugă - - - - Delete - Șterge - - - - Modify - Modifică - - - - Protocol - Protocol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Conturile Mele de Mesagerie Instantanee (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Anulează - - - - Save - Salvează - - - - IM Account Settings - Setările Contului de MI [Mesagerie Instantanee] - - - - IMContactManager - - - Add - Adaugă - - - - Delete - Șterge - - - - Contact Type (protocol) - Tipul de Contact (protocol) - - - - Click on the add button below to add a new ID - Clicați pe butonul Adaugă de mai jos pentru a adăuga un ID nou - - - - Contact ID - ID Contact - - - - IMProfileWidget - - - - Enter your nickname here - Scrieți aici porecla pe care o folosiți - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Adăugați un cont de mesagerie instantanee (MSN, YM, AIM...) - - - - Add an IM account - Adăugați un cont de MI - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a vă schimba avatarul</p></body></html> - - - - ImageSelector - - - Cancel - Anulează - - - - OK - OK - - - - Go Up - Mergi în Sus - - - - Refresh - Împrospătează - - - - JabberSettings - - - Login: - Utilizator: - - - - Password: - Parolă: - - - - Jabber Settings - Setări Jabber - - - - Connect Server: - Server de Conectare: - - - - <u>Advanced Options</u> - <u>Opțiuni Avansate</u> - - - - Require TLS - Necesită TLS (criptare) - - - - Port: - Port: - - - - Use TLS if available - Folosește TLS dacă e disponibil - - - - Allow plaintext authentication over unencrypted streams - Permite autentificarea cu text-simplu pe fluxuri necriptate - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Forțează SSL vechi (port 5223) - - - - Resource: - Resursă: - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Dacă limba dv. maternă nu este aici, știați că puteți să traduceți dv. înșivă softul? - - - - More information here. - Mai multe informații aici. - - - - LogAccount - - - Password: - Parolă: - - - - Need help? - Aveți nevoie de ajutor? - - - - Cancel - Anulează - - - - Delete - Șterge - - - - @product@ - Login - @product@ - Logare - - - - Account: - Cont: - - - - &Connect - &Conectează - - - - Forgot your @company@ password? - V-ați uitat parola @company@? - - - - &Modify - &Modifică - - - - Configure a &New Profile - Configurați un Profil &Nou - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Logare</span><br><br><span>Alegeți un profil folosit anterior<br/> sau completați informațiile pentru a vă conecta la un<br/>cont @company@</span> - - - - MSNSettings - - - Login: - Utilizator: - - - - Password: - Parolă: - - - - MSN Settings - Setări MSN - - - - Forgot your MSN password? - V-ați uitat parola MSN? - - - - Get a new MSN Account - Creați un nou cont MSN - - - - Use HTTP method - Folosește metoda HTTP - - - - MainWindow - - - MainWindow - Fereastra Principală - - - - Command::terminate() - Oprește - - - - Command::start() - Pornește - - - - Accept Call - Acceptă Apelul - - - - Send Chat Message - Trimite Mesaj de Taifas [Chat] - - - - Make Call - Apelează - - - - Hang Up - Întrerupe - - - - ManageBlockedUsersSettings - - - Close - Închide - - - - Unblock User - Deblochează Utilizatorul - - - - Manage blocked users - Administrează Utilizatorii Blocați - - - - @product@ - Manage blocked users - @product@ - Administrează utilizatorii blocați - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Am un cont @company@ - - - - Create a @company@ account - Creați un cont @company@ - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - Pentru a trimite un SMS, trebuie să fiți logat la un cont<br>@company@ și să dispuneți de credite @company@. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Selectați evenimentele la care să se emită un sunet. - - - - NotificationSettingsItem - - - Sound file - Fișier Audio - - - - Find a sound file - Găsește un fișier audio - - - - Play sound file - Redă fișierul audio - - - - Play - Redă - - - - NotifyDialog - - - File Transfer - Transfer de Fișiere - - - - &Ok - &OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stare:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Supragradează [Upgrade]</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Acceptă - - - - Status - Stare - - - - 00:00:00 - 00:00:00 - - - - Nickname - Poreclă - - - - &Reject - &Respinge - - - - Dialpad - Apelator - - - - Audio Smileys - Acustițe (Emoticonițe Audio) - - - - - Communication is encrypted - Comunicarea este criptată - - - - PrivacySettings - - - Manage blocked users - Administrează Utilizatorii Blocați - - - - Privacy Rules - Reguli de Confidențialitate - - - - Always sign in as "Invisible" (appear offline to all users) - Loghează-mă mereu ca "Invizibil" (apar ca neconectat) - - - - Allow chats from - Acceptă taifasurile [chats] de la - - - - - Anyone - Oricine - - - - - Only people from my contact list - Doar persoanele din lista mea de contacte - - - - Allow calls from - Acceptă apeluri de la - - - - When I sign into @company@ - Cînd mă identific la serviciul @company@ - - - - ProfileDetails - - - Cancel - Anulează - - - - Save - Salvează - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Clicați pentru a vă schimba avatarul</p></body></html> - - - - General - Generale - - - - Network IDs (MSN, Jabber...) - ID-uri de Rețea (MSN, Jabber...) - - - - Advanced >> - Setări Avansate >> - - - - Fill in all your network Id to stay connected with your contacts - Completați toate ID-urile de rețea pentru a sta conectat cu contactele dumneavoastră - - - - Contact - Contact - - - - Group: - Grup: - - - - Last Name: - Nume: - - - - First Name: - Prenume: - - - - Details - Detalii - - - - Web/blog: - Sit/Blog: - - - - Country: - Țară: - - - - State: - Stat/Județ: - - - - City: - Oraș: - - - - Gender: - Sex: - - - - Birth Date: - Data Nașterii: - - - - Email: - E-mail: - - - - Notes - Note - - - - Phone Numbers - Numere de Telefon - - - - Home phone - Telefon Fix - - - - Mobile phone - Telefon Mobil - - - - dd MMMM yyyy - zz LLLL aaaa - - - - Unknown - Necunoscut - - - - Male - Bărbat - - - - Female - Femeie - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Conturi - - - - Accounts Settings - Setările Conturilor - - - - QtAddAccount - - - Configure your voip account - Configurați-vă contul VOIP - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Spuneți-ne dacă contul dv. este oferit<br/>de @company@ sau de un alt serviciu - - - - QtAddAccountUtils - - - Test - Testează - - - - Audio Test Call - Testează Apel Audio - - - - Video Test Call - Testează Apel Video - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Completați informațiile care vor<br/>permite softfonului dv. să se conecteze la<br/>contul SIP - - - - Configure your SIP profile - Configurați-vă profilul SIP - - - - QtAddWengoAccount - - - Login - Logare - - - - Please enter an email address. - Introduceți o adresă de e-mail. - - - - Please enter your email address<br/>and your password - Introduceți adresa de e-mail<br/>și parola dv. - - - - @product@ - Connexion - @product@ - Conexiune - - - - QtAdvancedIMContactManager - - - Cancel - Anulează - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Sigur doriți să ștergeți acest contact de mesagerie instantanee? - - - - - &Delete - Șter&ge - - - - QtAdvancedSettings - - - Advanced - Avansate - - - - Advanced Settings - Setări Avansate - - - - QtAppearanceSettings - - - - Me - Eu - - - - Hello - Salut - - - - How are you? - Ce mai faci? - - - - - - Other - Altele - - - - I am fine - Sînt bine - - - - Have to go - Trebuie să plec - - - - Bye - Pa - - - - Appearance - Aspect - - - - Appearance Settings - Setări de Aspect - - - - QtAudioSettings - - - - Advanced - Avansate - - - - Audio - Audio - - - - Audio Settings - Setări Audio - - - - QtCallBar - - - +(country code) number or nickname - +(codul țării) număr sau poreclă - - - - QtCallForwardSettings - - - - Call Forward - Redirecționarea Apelurilor - - - - Call Forward Settings - Setările Redirecționării Apelurilor - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - Pt. a configura setările de redirecționare trebuie să<BR> fiți logat cu un cont @company@. - - - - QtChatHistoryWidget - - - Save As - Salvează Ca - - - - QtChatLogViewer - - - Edit Contact - Editează Contactul - - - - QtChatTabWidget - - - Close chat - Închide Taifasul [Chat] - - - - QtChatWidget - - - %1 is connected. - %1 e conectat. - - - - %1 is disconnected. - %1 e deconectat. - - - - send - trimite - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Fișierul dv. nu poate fi trimis: contactul trebuie să fie conectat la rețeaua @company@. - - - - Your contact wishes to send a file with @company@. - Contactul dorește să vă trimită un fișier prin @company@. - - - - Go to %1 to install it - Mergeți la %1 pentru a-l instala - - - - %1 has joined the chat - %1 s-a alăturat taifasului [chat] - - - - %1 has left the chat - %1 a părăsit taifasul [chat] - - - - QtChatWindow - - - Edit Contact - Editează Contactul - - - - @product@ Chat - @product@ Taifas [Chat] - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Apelează SIP - - - - Call land line - Apelează Tel. Fix - - - - Call Mobile - Apelează Mobil - - - - Call @company@ - Apelează @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Acum îl puteți informa pe primul dv. interlocutor că va lua parte la o conferință.</b><br><br>Cînd sînteți gata, faceți clic pe butonul de mai jos. Primul dv. interlocutor va fi pus în așteptare, între timp fiind apelat al doilea interlocutor.<br> - - - - Hold first interlocutor and call second one - Puneți în așteptare primul interlocutor și apelați-l pe al doilea - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Acum îl puteți informa pe al doilea dv. interlocutor că va lua parte la o conferință.</b><br><br>Cînd sînteți gata, faceți clic pe butonul de mai jos pentru a porni conferința. - - - - Start Conference - Pornește Conferința - - - - - @product@ - Proceed Conference - @product@ - Începe Conferința - - - - QtContactList - - - &Yes - &Da - - - - &No - &Nu - - - - Merge %1 with %2? - Comasez %1 cu %2? - - - - @product@ - Merge Contacts - @product@ - Comasează Contactele - - - - QtContactManager - - - &Yes - &Da - - - - &No - &Nu - - - - Home phone - Telefon Fix - - - - Mobile phone - Telefon Mobil - - - - @product@ - @product@ - - - - Edit Contact - Editează Contactul - - - - Do you really want to delete this contact? - Sigur doriți să ștergeți acest contact? - - - - Start chat - Pornește un Taifas [Chat] - - - - - Delete contact - Șterge Contactul - - - - Call - Apelează - - - - Free call - - - - - Work phone - Tel. Servici - - - - Send SMS - Trimite SMS - - - - Edit contact - Editează Contactul - - - - Block contact - Blochează Contactul - - - - Invite to conference - Invită la Conferință - - - - Go to website - Vizitează Situl - - - - Send file - Trimite un Fișier - - - - Forward to mobile phone - Redirecționează către mobil - - - - QtContactWidget - - - No mobile phone number set - Nu are număr de telefon mobil - - - - No landline phone number set - Nu are număr de telefon fix - - - - - Click here to call - Clicați aici ca să apelați - - - - - Click here to set a phone number - Clicați aici ca să adăugați un număr de telefon fix/mobil - - - - Click here to edit the contact - Clicați aici ca să editați contactul - - - - Click here to send a SMS - Clicați aici ca să trimiteți un SMS - - - - Click here to start a chat - Clicați aici ca să porniți un taifas [chat] - - - - Click here to start a free call - Clicați aici ca să inițiați un apel gratuit - - - - Click here to send a file - Clicați aici ca să trimiteți un fișier - - - - QtCrashReport - - - %1 Crash Report - Raport de Prăbușire %1 - - - - QtEventWidget - - - Do you want to call your voice mail? - Doriți să apelați mesageria dv. vocală? - - - - @product@ - Voice Mail - @product@ - Mesagerie Vocală - - - - QtFileTransfer - - - &Yes - &Da - - - - &No - &Nu - - - - Choose a directory - Alegeți un dosar - - - - Overwrite File? - Suprascriu fișierul? - - - - A file called %1 already exists.Do you want to overwrite it? - Un fișier numit %1 există deja.Doriți să-l suprascrieți? - - - - - File size error - Eroare de mărime a fișierului - - - - %1 exceeds the maximum authorized size. - %1 depășește mărimea maximă permisă. - - - - %1 has size 0. - %1 are mărimea 0. - - - - %1 is a directory. - %1 este un dosar. - - - - You can not send a directory. - Nu puteți trimite un dosar. - - - - %1 is a shortcut. - %1 este o scurtătură. - - - - You can not send a shortcut. - Nu puteți trimite o scurtătură. - - - - All Files (*.* *) - Toate Fișierele (*.* *) - - - - Please upgrade<br> your @product@ - Actualizați<br> softul @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Spuneți-i contactului dv.<br> să-și actualizeze<br> softul @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Fișierul nu poate fi primit: trebuie să actualizați softul @product@ pentru a-l putea primi. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - încearcă să vă trimită un fișier, dar softul său @product@ trebuie actualizat pentru ca să-l primiți. Spuneți-i să descarce ultima versiune. - - - - QtFileTransferItem - - - - - Cancel - Anulează - - - - Remove - Înlătură - - - - - Pause - Pauzează - - - - Starting - Pornesc - - - - From: - De la: - - - - To: - Către: - - - - Open - Deschide - - - - Resume - Reia - - - - Waiting for anwser... - Aștept răspunsul... - - - - Done - Gata - - - - Failed - Eșuat - - - - Paused - Pauzat - - - - Paused by peer - Pauzat de partener - - - - Cancelled - Anulat - - - - Cancelled by peer - Anulat de partener - - - - - Downloading... - Descarc... - - - - Uploading... - Încarc... - - - - Waiting for peer... - Aștept după partener... - - - - An error occured during the file transfer - S-a produs o eroare în timpul transferului de fișiere - - - - This may be caused by : - Aceasta poate fi cauzată de: - - - - Your @product@ is not up to date. Please download the latest version on - Softul dv. @product@ nu este actualizat. Descărcați ultima versiune de la - - - - The @company@ network may be temporarily unavailable. Please try later. - Rețeaua @company@ nu este disponibilă pe moment. Reîncercați mai tîrziu. - - - - QtGeneralSettings - - - General - Generale - - - - General Settings - Setări Generale - - - - QtHistory - - - Incoming call - Apel Primit - - - - Outgoing call - Apel Efectuat - - - - Missed call - Apel Pierdut - - - - Rejected call - Apel Respins - - - - Outgoing SMS - SMS Trimis - - - - Do you want to call %1? - Doriți să apelați pe %1? - - - - Chat session - Sesiune de Taifas [Chat] - - - - @product@ - Call History - @product@ - Istoricul Apelurilor - - - - Type - Tip - - - - Name/ID - Nume/ID - - - - Date - Dată - - - - Duration - Durată - - - - QtHistoryWidget - - - Erase this entry - Șterge această intrare - - - - Open in SMS window - Deschide în fereastra SMS - - - - Call this peer - Apelează acest partener - - - - Show chat log - Arată jurnalul taifasului [log] - - - - QtIMAccountManager - - - Cancel - Anulează - - - - @product@ - @product@ - - - - &Delete - Șter&ge - - - - Are sure you want to delete this account? - - Sigur doriți să ștergeți acest cont? - - - - - QtIMAccountMonitor - - - - - Disconnected - Neconectat - - - - Error: %1 - Eroare: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Conectat - - - - Invisible - Invizibil - - - - Away - Absent - - - - Do not disturb - Ocupat - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Introduceți un nume de utilizator - - - - QtIMAccountPresenceMenuManager - - - Cancel - Anulează - - - - @product@ - @product@ - - - - &Delete - Șter&ge - - - - Online - Conectat - - - - Invisible - Invizibil - - - - Away - Absent - - - - Do Not Disturb - Ocupat - - - - Disconnect - Deconectează - - - - Delete Account - Șterge Contul - - - - Are sure you want to delete the account <b>%1</b>? - Sigur doriți să ștergeți contul <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Editează Profilul Meu - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Limbă - - - - Language Settings - Setări de Limbă - - - - QtLogAccount - - - Invalid account - Cont invalid - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Alegeți un profil utilizat anterior<br/> sau completați informațiile pentru a vă conecta la<br/> contul @company@ - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Conexiune - - - - QtNotificationSettings - - - Incoming call (ringtone) - Apel Primit (rington) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Apel Terminat (ton de închidere) - - - - Incoming chat - Taifas Primit - - - - IM account connected - Cont de MI (mesagerie instantanee) conectat - - - - IM account disconnected - Cont de MI (mesagerie instantanee) deconectat - - - - Contact online - Contactul e conectat - - - - Notifications - Notificări - - - - Notifications Settings - Setările Notificărilor - - - - QtNotificationSettingsItem - - - Choose a sound file - Alegeți un fișier audio - - - - Sounds - Sunete - - - - QtPhoneCall - - - Status - Stare - - - - Incoming Call - Apel Primit - - - - Resume - Reia - - - - Hang-up - Întrerupe - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Eroare - - - - Talking - Se vorbește - - - - Dialing - Se apelează - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Sună - - - - Redirected - Redirecționat - - - - Initialization... - Inițializare... - - - - Closed - Închis - - - - - Hold - Suspendă - - - - Add contact - Adaugă Contact - - - - Ca&ncel - A&nulează - - - - Talking - Conference - Se Vorbește - Conferință - - - - Add a Contact - Adaugă Contact - - - - QtPresenceMenuManager - - - Online - Conectat - - - - Invisible - Invizibil - - - - Away - Absent - - - - Do Not Disturb - Ocupat - - - - Log off - Deloghează - - - - QtPrivacySettings - - - Privacy - Confidențialitate - - - - Privacy Settings - Setări de Confidențialitate - - - - QtProfileBar - - - Click here to change your status - Clicați aici pentru a vă schimba starea - - - - - active - activ - - - - voicemail - mesagerie vocală - - - - inactive - inactiv - - - - unauthorized - neautorizat - - - - Set global presence to: - Setează Prezența Globală: - - - - Voice mail - Mesagerie Vocală - - - - QtProfileDetails - - - Advanced >> - Avansat >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - Un contact trebuie să aparțină unui grup, setați un grup. - - - - << Simple - << Simplu - - - - Select your avatar - Alegeți un avatar - - - - @product@ - No Group Selected - @product@ - Nici Un Grup Selectat - - - - @company@ Avatars - @company@ Avataruri - - - - QtRenameGroup - - - Bad group name - Nume de grup incorect - - - - Group name cannot be empty - Numele grupului nu poate lipsi - - - - QtSecuritySettings - - - Security - Securitate - - - - Security Settings - Setări de Securitate - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Completați un număr de telefon. - - - - Do you want to continue? - Doriți să continuați? - - - - Your SMS has not been sent - SMS-ul dv. nu a fost trimis - - - - Your SMS has been sent - SMS-ul dv. a fost trimis - - - - Your message is too long. -This will send - Mesajul dv. e prea lung. -Se va trimite - - - - SMS. - - SMS. - - - - You can not send an empty message. - Nu puteți trimite un mesaj gol. - - - - - - - @company@ SMS service - Serviciu de SMS @company@ - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Actualizare eșuată - - - - @product@ update failed to start: try to update @product@ manually - Actualizarea @product@ nu a putut porni: încercați să actualizați manual @product@ - - - - QtStatusBar - - - - Not connected - Neconectat - - - - Register done - Înregistrare realizată - - - - Unregister done - Dezînregistrare realizată - - - - Connecting - Conectez - - - - Output volume is muted - Volumul audio de ieșire e amuțit - - - - Output volume is 0 - Volumul audio de ieșire e 0 - - - - Click to adjust output volume - Clicați pentru a ajusta volumul audio de ieșire - - - - Input volume is muted - Volumul audio de intrare e amuțit - - - - Input volume is 0 - Volumul audio de intrare e 0 - - - - Click to adjust input volume - Clicați pentru a ajusta volumul audio de intrare - - - - An error occured: Server error. - A apărut o eroare: Eroare de server. - - - - An error occured: Timeout. - A apărut o eroare: Expirare. - - - - An error occured: Authentication error. - A apărut o eroare: Eroare de autentificare. - - - - QtSystray - - - Status - Stare - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Apelează SIP - - - - Call land line - Apelează Tel. Fix - - - - Call Mobile - Apelează Mobil - - - - Call @company@ - Apelează @company@ - - - - Call - Apelează - - - - Send SMS - Trimite SMS - - - - Online - Conectat - - - - Invisible - Invizibil - - - - Away - Absent - - - - Do Not Disturb - Ocupat - - - - Internet Connection Error - Eroare a Conexiunii la Internet - - - - Offline - Neconectat - - - - Connecting... - În curs de conectare... - - - - Send a SMS - Trimite un SMS - - - - Start a chat - Pornește un Taifas [Chat] - - - - Place Call - Apelează - - - - Send File - Trimite un Fișier - - - - Multiple Status - Stări Multiple - - - - Unknown Status - Stare Necunoscută - - - - Quit @product@ - Ieși - - - - QtToolBar - - - &Cancel - &Anulează - - - - @product@ - Proceed Conference - @product@ - Începe Conferința - - - - Edit My Profile - Editează Profilul Meu - - - - Add a Contact - Adaugă Contact - - - - Hide Unavailable Contacts - Ascunde Contactele Nedisponibile - - - - Show Unavailable Contacts - Arată Contactele Nedisponibile - - - - Hide Groups - Ascunde Grupurile - - - - Show Groups - Arată Grupurile - - - - You have unfinished call(s). - Aveți apeluri în desfășurare. - - - - Are you sure you want to log off? - Sigur doriți să vă delogați? - - - - &Log Off - De&loghează - - - - Disable &Video Calls - Dezactivează Apelurile &Video - - - - Enable &Video Calls - Activează Apelurile &Video - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Conferința nu poate fi pornită atîta timp cît există apeluri active.</b><br><br>Încheiați apelurile și reîncercați. - - - - @product@ - Warning - @product@ - Avertisment - - - - - Log &Off... - Del&oghează... - - - - Log &On... - L&oghează... - - - - QtTreeViewDelegate - - - Contacts list - Lista de Contacte - - - - QtUserProfile - - - Edit Contact - Editează Contactul - - - - - &Authorize - &Autorizează - - - - - &Block - &Blochează - - - - Network error. - Eroare de rețea. - - - - - @product@ - Authorization Request - @product@ - Solicitare de Autorizare - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - A apărut o problemă la încărcarea profilului dv. -Ca urmare a fost încărcat ultimul profil salvgardat: -e posibil să fi pierdut ultimele modificări făcute - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Profilul dv. nu poate fi încărcat. -Alegeți un alt profil sau creați unul nou. - - - - Wrong email/password entered - E-mail/Parola introduse sînt incorecte - - - - Wrong login/password entered - Utilizator sau parolă incorecte - - - - Connection error - Eroare de conectare - - - - Unexpected error (code: %1 - Eroare neașteptată (cod: %1 - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normală - - - - - Good - Bună - - - - - Very good - Foarte Bună - - - - - Excellent - Excelentă - - - - Video Settings - Setări Video - - - - QtVoicemailSettings - - - Voicemail - Mesagerie Vocală - - - - Voicemail Settings - Setările Mesageriei Vocale - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Catalog - - - - QtWengoConfigDialog - - - Advanced - Avansate - - - - General - Generale - - - - Accounts - Conturi - - - - Audio - Audio - - - - Call Forward - Redirecționarea Apelurilor - - - - Language - Limbă - - - - Privacy - Confidențialitate - - - - Video - Video - - - - Voicemail - Mesagerie Vocală - - - - security - securitate - - - - Notifications - Notificări - - - - QtWengoPhone - - - &Cancel - &Anulează - - - - - - - Conference - Conferință - - - - Call - Apelează - - - - Account - - - - - Add a Contact - Adaugă Contact - - - - You have unfinished call(s). - Aveți apeluri în desfășurare. - - - - @product@ - Warning - @product@ - Avertisment - - - - - Home - Acasă - - - - Are you sure you want to exit the application? - Sigur doriți să părăsiți programul? - - - - &Exit - &Ieși - - - - @product@ - Call Error - @product@ - Eroare de Apelare - - - - Please hold all the phone calls before placing a new one - Puneți în așteptare toate apelurile telefonice înainte de a porni unul nou - - - - Can't place a call, you are not connected - Nu se poate efectua apelul, nu sînteți conectat - - - - You must enter a phone number - Trebuie să introduceți un număr de telefon - - - - An error has occured trying to place the call - A apărut o eroare în timpul încercării de apelare - - - - RenameGroupDialog - - - Cancel - Anulează - - - - OK - OK - - - - Enter the new group name: - Introduceți numele grupului nou: - - - - @product@ - Rename Contact Group - @product@ - Renumește Grupul de Contacte - - - - SecuritySettings - - - Form - Formular - - - - Enable call encryption - Activează criptarea apelurilor - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ poate cripta apelurile folosind cifrul AES 128-biți și protocolul Diffie-Hellman pentru schimbul de chei. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - Notă: Contactele dv. trebuie să activeze această opțiune pentru ca apelul să fie criptat (cifrat). Pentru a ști dacă apelul este într-adevăr criptat, verificați la partea de jos a ferestrei @product@ : cînd apelul e criptat o iconiță cu un "lacăt" apare pe tot timpul duratei ei. - - - - SimpleIMContactManager - - - - - - - Update your profile - Actualizați profilul - - - - Yahoo! ID: - ID Yahoo!: - - - - MSN ID: - ID MSN (Live): - - - - Jabber/GoogleTalk ID: - ID Jabber/GoogleTalk: - - - - exemple: username@server - exemplu: utilizator@server - - - - SIP ID: - ID SIP: - - - - ICQ ID: - ID ICQ: - - - - AIM ID: - ID AIM: - - - - @company@ ID: - ID @company@: - - - - SmsWindow - - - Send - Trimite - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Clicați aici pentru a adăuga un nr. de telefon - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Introduceți aici semnătura pe care o aveți - - - - Signature: - Semnătură: - - - - Phone number(s): - Numere de Telefon: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Introduceți aici numerele de telefon<br>Ele trebuie separate prin simbolurile & sau ; sau , - - - - SoftUpdateWindow - - - Cancel - Anulează - - - - @product@ - Downloading update - @product@ - Descarc actualizarea - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - Descarc actualizarea @product@... - -Versiune: %1 -Adresă: %2 -Mărime: %3 (MB) -Viteză: %4 (kB/s) - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formular - - - - VideoSettings - - - Normal - Normală - - - - Good - Bună - - - - Very good - Foarte Bună - - - - Excellent - Excelentă - - - - Enable video - Activează transmisia video - - - - Webcam Selection - Selectarea Videocamerei - - - - Webcam device: - Videocameră: - - - - Webcam Preview - Previzualizează Videocamera - - - - Connection Type - Tipul de Conexiune - - - - Video quality - Calitate Video - - - - Down (kbit/s) - Descărcare (kbps) - - - - Up (kbit/s) - Încărcare (kbps) - - - - 0 to 512 - 0 la 512 - - - - 0 to 128 - 0 la 128 - - - - 512 to 2048 - 512 la 2048 - - - - 128 to 256 - 128 la 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Calitatea imaginii video va depinde de lățimea de bandă disponibilă - - - - Make a test video call - Faceți un apel video de test - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Cînd utilizați setarea pentru prima dată e recomandat să selectați calitatea video normală, apoi puteți încerca și alte variante pentru a o găsi pe cea mai potrivită.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Vizitați <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> pentru a afla lățimea de bandă a conexiunii dv. la internet.</p></body></html> - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Formular - - - - Phone number of your voicemail: - Nr. de telefon al mesageriei dv. vocale: - - - - Please fill in here the information about your voicemail - Completați aici informațiile despre mesageria vocală [voice mail] - - - - WengoConfigDialog - - - Cancel - Anulează - - - - Save - Salvează - - - - Title - Titlu - - - - @product@ - Configuration - @product@ - Configurare - - - - WengoPhoneWindow - - - &Accept - &Acceptă - - - - &Hidden - A&scuns - - - - &Tools - &Unelte - - - - &Help - A&jutor - - - - &Actions - &Acțiuni - - - - @company@ - @company@ - - - - &Close - Înc&hide Fereastra - - - - Dialpad - Apelator - - - - @product@ - @product@ - - - - Start Conference - Pornește Conferința - - - - Send SMS - Trimite un SMS - - - - Contacts - Contacte - - - - History - Istoric - - - - Clear &History - Curăță &Istoricul - - - - ToolBar - Bara de Unelte - - - - Show/Hide Unavailable &Contacts - Arată/Ascunde &Contactele Indisponibile - - - - &Chat Sessions - Sesiuni de &Taifas - - - - &All - &Tot - - - - &HangUp - Între&rupe - - - - &Hold/Resume - &Pauzează/Reia - - - - Show/Hide &Groups - Arată/Ascunde &Grupurile - - - - &Outgoing Calls - Apeluri &Efectuate - - - - &Incoming Calls - Apeluri Pr&imite - - - - &Missed Calls - Apeluri &Pierdute - - - - Enable/Disable &Video Calls - Activează/Dezactivează Apelurile &Video - - - - Short Text &Messages (SMS) - Serviciul de &Mesaje Scurte (SMS) - - - - Rejected Calls - Apeluri Respinse - - - - &Contacts - &Contacte - - - - &About... - &Despre - - - - Add &Contact... - Adaugă &Contact - - - - &Configuration... - &Configurație... - - - - Send SMS... - Trimite SMS... - - - - View My &Profile... - Arată &Profilul Meu... - - - - - View My Profile - Arată Profilul Meu - - - - Start &Conference... - Inițiază o &Conferință... - - - - &Find Contact... - &Găsește Contactul... - - - - Log &Off... - Del&oghează... - - - - - Log Off - Deloghează - - - - Show &Chat Window - Arată Fereastra de &Taifas [Chat] - - - - - Show Chat Window - Arată Fereastra de Taifas [Chat] - - - - Show &File Transfer - Arată Transferul de &Fișiere - - - - Add Contact - Adaugă Contact - - - - View My @company@ Account... - Arată Contul Meu @company@... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - &Forumul @company@... - - - - @company@ &Wiki/FAQ... - &Wiki/Întrebări Frecvente @company@... - - - - Learn more about @company@ Services... - Informații despre @company@... - - - - Search - Caută - - - - Find @company@ Contacts - Găsește Contacte @company@ - - - - &Quit - &Ieși - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Text Sub Iconițe - - - - &Icons Only - Doar &Iconițe - - - - Add - Adaugă - - - - SMS - SMS - - - - Conference - Conferință - - - - Wizard - - - Cancel - Anulează - - - - Finish - Finalizează - - - - Next > - Continuă > - - - - < Back - < Înapoi - - - - Simple Wizard - Step %1 of %2 - Vrăjitor Simplu - Etapa %1 din %2 - - - - YahooSettings - - - Login: - Utilizator: - - - - Password: - Parolă: - - - - Yahoo! Settings - Setări Yahoo! - - - - Use Yahoo! Japan server - Folosește server Yahoo! din Japonia - - - - Forgot your Yahoo! password? - V-ați uitat parola Yahoo! ? - - - - Get a new Yahoo! Account - Creați un nou cont Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ru.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ru.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ru.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_ru.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4898 +0,0 @@ - - - - - AIMSettings - - - Login: - Имя: - - - - Forgot your AIM password? - Забыли Ваш AIM пароль? - - - - Get a new AIM Account - Получить новую учётную запись AIM - - - - Password: - Пароль: - - - - AIM Settings - Настройки AIM - - - - AboutWindow - - - About - О программе - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Разработчики - - - - Close - Закрыть - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Передача файлов - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Принять - - - - &Cancel - &Отмена - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Собеседник: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Имя файла: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Передаваемый файл</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Редактировать мою учётную запись - - - - AddAccount - - - Configure your account: - Настроить Вашу учетную запись: - - - - &Next - &Далее - - - - Need help? - Требуется помощь? - - - - You don't have any account ? Click here - Если у вас нет аккаунта, то нажмите сюда - - - - &Back - &Назад - - - - Cancel - Отмена - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Отмена - - - - Contact Type (protocol): - Протокол: - - - - Contact ID: - Идентификатор собеседника: - - - - Account: - Учетная запись: - - - - Enable - Включено - - - - Login - Учётная запись - - - - Add - Добавить - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Пароль: - - - - Need help? - Требуется помощь? - - - - &Back - &Назад - - - - Cancel - Отмена - - - - @product@ - Login - - - - - - &Connect - &Подключиться - - - - Activate presence and chat (SIP/SIMPLE) - Активировать присутствие и чат(SIP/SIMPLE) - - - - Displayname: - Псевдоним - - - - login / username: - Логин - - - - Account name: - Учетное имя: - - - - Proxy: - Прокси: - - - - : - : - - - - Server: - Сервер: - - - - SIP Domain / Realm: - SIP Domain / Realm: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - Advanced - Дополнительные настройки - - - - AddWengoAccount - - - Password: - Пароль: - - - - Need help? - Требуется помощь? - - - - &Back - &Назад - - - - Cancel - Отмена - - - - @product@ - Login - - - - - - &Connect - &Подключиться - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Логин</span><br><br><span>e-mail<br>и пароль</span> - - - - Email Address: - Адрес электронной почты: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Закрыть - - - - Preference Name - Название Опции - - - - Type - Шрифт - - - - Value - Значения - - - - Default Value - Значение по умолчанию - - - - Save - Сохранить - - - - Status - Состояние - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Добавить - - - - Advanced Settings - Расширенные настройки - - - - Advanced Configuration Window - Окно расширенных настроек - - - - Automatically answer incoming calls from - Автоматически отвечеть на входящие звонки от - - - - Remove - Убрать - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Внимание! Эти настройки только для опытных пользователей.<br>Любая ошибка может привести к некорректной работе программы. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Область - - - - AudioSettings - - - Reset - Восстановить - - - - Audio Codecs - Звуковые кодеки - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Область - - - - AvatarWidget - - - Form - Область - - - - BrowserSoftUpdateWindow - - - Close - Закрыть - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3-ий - - - - 1st: - 1-ый - - - - 2nd: - 2-ой - - - - - - (+ country code) phone number - (+ код страны) телефонный номер - - - - Forward all unanswered calls to message box - Показывать все не принятые звонки в окне сообщений - - - - Disable call forwarding - Отключить перенаправление звонков - - - - Forward all unanswered calls to following phone numbers: - Переадресовать все не принятые звонки на следующие телефонные номера: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Например +3314500XXXX (+33 код страны, а 14500XXXX номер телефона) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Входящий Звонок - - - - Message - Текст - - - - ChatLogViewer - - - Chat History - Журнал разговоров - - - - &Contact - &Собеседник - - - - &Tools - &Инструменты - - - - &Help - Справка (&H) - - - - &Actions - &Действия - - - - Main Toolbar - Главная панель инструментов - - - - - - Call Contact - Позвонить Собеседнику - - - - - - Send a File - Послать файл - - - - createChatConf - создать настройку чата - - - - - - Show Contact Info - Показать информацию о собеседнике - - - - blockContact - заблокировать собеседника - - - - &Save History As... - &Сохранить Историю Разговора Как... - - - - actionRestartChat - Перезапустить чат - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Собеседник - - - - &Tools - &Инструменты - - - - &Actions - &Действия - - - - Main Toolbar - Главная панель инструментов - - - - - - Call Contact - Позвонить Собеседнику - - - - - - Send a File - Послать файл - - - - - - Show Contact Info - Показать информацию о собеседнике - - - - blockContact - заблокировать собеседника - - - - &Save History As... - &Сохранить Историю Разговора Как... - - - - @company@ - - - - - - MainWindow - Главное Окно - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - Закрыть - - - - Conference - Конференция - - - - ChatRoomInviteWidget - - - Chat room - Комната для разговора - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Комната для разговора</span></p></body></html> - - - - (Conference participants) - (Участники конференции) - - - - &Remove - Удалить - - - - &Start - З&апуск - - - - Group Name - Имя группы - - - - &Add - Д&обавить - - - - ChatToaster - - - Message - Текст - - - - Incoming Chat - Приглашение к текстовому общению - - - - ChatWidget - - - Form - Область - - - - ConferenceCallWidget - - - Cancel - Отмена - - - - Start - Включить - - - - Phone number 2: - Второй телефонный номер: - - - - Phone number 1: - Первый телефонный номер: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - З&апуск - - - - Cancel - Отмена - - - - ContactGroupPopupMenu - - - Remove Contact Group - Удалить Группу Собеседников - - - - Rename Contact Group - Переименовать Группу Собеседников - - - - Delete group - Удалить группу - - - - Do you really want to delete this group? - Вы действительно хотите удалить группу? - - - - &Yes - &Да - - - - &No - &Нет - - - - ContactList - - - Contact List - Список контактов - - - - ContactWidget - - - No mobile phone number set - Номер мобильного телефона не задан - - - - No landline phone number set - Номер стационарного телефона не задан - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Отмена - - - - Program Failure - Сбой Программы - - - - Send - Отправить - - - - Optional Information - Необязательная информация - - - - Your Mail: - Адрес Вашей электронной почты: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Не доступен - - - - Click here to change your call forward settings - Нажмите сюда для изменения Ваших настроек по перенаправлению звонков - - - - Call forward mode: - Режим перенаправления звонков: - - - - Purchase call out credits - Купить кредиты для исходящих звонков - - - - Call Forward Method - Способ перенаправления звонков - - - - Call Voice Mail - Прослушать Голосовую Почту - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Корневой каталог - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Click on the various color changing items to send sounds to your interlocutor. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Нажмите здесь, чтобы получить Вашу голосовую почту - - - - New Voice Mail: - Новое Голосовое Сообщение: - - - - Click here to see missed call(s) - Нажмите здесь, чтобы увидеть пропущенные звонки - - - - Missed Call(s): - Пропущенные Звонки: - - - - FileTransferDialog - - - ... - ... - - - - Download - Загрузить - - - - Upload - Закачать - - - - Click here to change your download folder - Поменять папку для закачки - - - - Download folder: - Папка для записи файлов: - - - - Clean all items in the list - Очистить всё - - - - &Clean - &Очистить - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Отмена - - - - Form - Область - - - - Pause - │П│а│у│з│а - - - - <i>From:</i> - <i>От:</i> - - - - GeneralSettings - - - When I double-click on a contact - При двойном щелчке на собеседника - - - - Call cell phone or land line if contact not online - Позвонить на мобильный или стационарный телефон, если собеседник не в сети - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Статус бездействия - - - - minutes - минут(ы) - - - - Show me as "Away" when I am inactive for: - Перейти в состояние "Отсутствует" при бездействии в течении: - - - - When I start my computer - При запуске компьютера - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Имя: - - - - Password: - Пароль: - - - - GoogleTalk Settings - Настройки GoogleTalk - - - - Forgot your GoogleTalk password? - Забыли Ваш GoogleTalk пароль? - - - - Get a new GoogleTalk Account - Создать новую учётную запись GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Отмена - - - - HTTP Proxy Address: - Адресс HTTP Прокси Сервера: - - - - HTTP Proxy Port Number: - Номер порта HTTP Прокси Сервера: - - - - HTTP Proxy Login: - Учётная запись HTTP Прокси Сервера: - - - - HTTP Proxy Password: - Пароль HTTP Прокси Сервера: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Прокси Антентификация</span><br><br><span>Ваш локальный HTTP прокси сервер использует аутентификацию<br>Пожалуйста введите вашу учётную запись и пароль</span> - - - - OK - Да - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Имя: - - - - Password: - Пароль: - - - - ICQ Settings - Настройки ICQ - - - - Forgot your ICQ password? - Забыли пароль? - - - - Get a new ICQ Account - Получить новый ICQ аккаунт - - - - IMAccountManager - - - Close - Закрыть - - - - Login - Учётная запись - - - - Add - Добавить - - - - Delete - ~Удалить - - - - Modify - Изменять - - - - Protocol - Протокол - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Отмена - - - - Save - Сохранить - - - - IM Account Settings - Настройки учётной записи IM - - - - IMContactManager - - - Add - Добавить - - - - Delete - ~Удалить - - - - Contact Type (protocol) - Протокол - - - - Click on the add button below to add a new ID - Нажмите на кнопку находящуюся ниже для добавления нового Идентификатора - - - - Contact ID - Идентификатор Собеседника - - - - IMProfileWidget - - - - Enter your nickname here - Введите Ваше прозвище - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Добавить аккаунт(ICQ,MSN,Jabber) - - - - Add an IM account - Добавить IM аккаунт - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Отмена - - - - OK - Да - - - - Go Up - Вверх - - - - Refresh - Обновить - - - - JabberSettings - - - Login: - Имя: - - - - Password: - Пароль: - - - - Jabber Settings - Настройки Jabber - - - - Connect Server: - Соединятся с Сервером: - - - - <u>Advanced Options</u> - <u>Дополнительные Свойства</u> - - - - Require TLS - Требовать TLS - - - - Port: - Порт: - - - - Use TLS if available - Использовать TLS, если доступно - - - - Allow plaintext authentication over unencrypted streams - Разрешить использование не шифрованного текста через не зашифрованный поток, для аутентификации - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Принудительно использовать старый (порт 5223) SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Если ваш язык отсутствует, то вы можете нам помочь в переводе - - - - More information here. - Подробнее - - - - LogAccount - - - Password: - Пароль: - - - - Need help? - Требуется помощь? - - - - Cancel - Отмена - - - - Delete - ~Удалить - - - - @product@ - Login - - - - - - Account: - Учетная запись: - - - - &Connect - &Подключиться - - - - Forgot your @company@ password? - - - - - - &Modify - &Изменить - - - - Configure a &New Profile - Создать новый профайл - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Имя: - - - - Password: - Пароль: - - - - MSN Settings - Настройки MSN - - - - Forgot your MSN password? - Забыли Ваш MSN пароль? - - - - Get a new MSN Account - Получить новую учётную запись MSN - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Главное Окно - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Принять Звонок - - - - Send Chat Message - Послать Текстовое Сообщение - - - - Make Call - Позвонить - - - - Hang Up - Повесить трубку - - - - ManageBlockedUsersSettings - - - Close - Закрыть - - - - Unblock User - Разблокировать пользователя - - - - Manage blocked users - Управление заблокированными пользователями - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Выберите события, для которых должен быть звук - - - - NotificationSettingsItem - - - Sound file - Звуковой файл - - - - Find a sound file - Найти звуковой файл - - - - Play sound file - Проиграть звуковой файл - - - - Play - Воспроизвести - - - - NotifyDialog - - - File Transfer - Передача файлов - - - - &Ok - OK - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Статус:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Принять - - - - Status - Состояние - - - - 00:00:00 - 00:00:00 - - - - Nickname - Ник - - - - &Reject - &Отклонить - - - - Dialpad - Номеронабиратель - - - - Audio Smileys - Аудио Улыбки - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Управление заблокированными пользователями - - - - Privacy Rules - Правила Конфиденциальности - - - - Always sign in as "Invisible" (appear offline to all users) - Всегда подключаться как "Невидимый" (не в сети для всех пользователей) - - - - Allow chats from - Разрешить текстовые сообщения от - - - - - Anyone - Всех - - - - - Only people from my contact list - Только людям из моего списка собеседников - - - - Allow calls from - Разрешить звонки от - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Отмена - - - - Save - Сохранить - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - Главное - - - - Network IDs (MSN, Jabber...) - Идентификаторы сетей(MSN, Jabber...) - - - - Advanced >> - Дополнительно >> - - - - Fill in all your network Id to stay connected with your contacts - Находиться в соединении с Вашими собеседниками, для всех Ваших идентификаторов сетей - - - - Contact - Собеседник - - - - Group: - Группа: - - - - Last Name: - Фамилия: - - - - First Name: - Имя: - - - - Details - Дополнительно - - - - Web/blog: - Страничка/Блог: - - - - Country: - Страна: - - - - State: - Регион: - - - - City: - Город: - - - - Gender: - Пол: - - - - Birth Date: - День Рождения: - - - - Email: - E-Mail: - - - - Notes - &Заметки - - - - Phone Numbers - Телефонные номера - - - - Home phone - Домашний телефон - - - - Mobile phone - Мобильный телефон - - - - dd MMMM yyyy - день месяц год - - - - Unknown - не указанный - - - - Male - Мужской - - - - Female - Женский - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Учетные записи - - - - Accounts Settings - Настройка Аккаунта - - - - QtAddAccount - - - Configure your voip account - Настройте ваш voip аккаунт - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Пожалуйста, заполните информацию - - - - Configure your SIP profile - Настройте ваш SIP профайл - - - - QtAddWengoAccount - - - Login - Учётная запись - - - - Please enter an email address. - Введите e-mail - - - - Please enter your email address<br/>and your password - Пожалуйста введите адрес Вашей электронной почты<br/> и Ваш пароль - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Отмена - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Удалить - - - - QtAdvancedSettings - - - Advanced - Дополнительные настройки - - - - Advanced Settings - Расширенные настройки - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Дополнительные настройки - - - - Audio - Аудио - - - - Audio Settings - Аудио настройки - - - - QtCallBar - - - +(country code) number or nickname - +(код страны) номер или прозвище - - - - QtCallForwardSettings - - - - Call Forward - Перенаправление звонка - - - - Call Forward Settings - Настройки переадресации звонков - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Сохранить как - - - - QtChatLogViewer - - - Edit Contact - Редактировать контакт - - - - QtChatTabWidget - - - Close chat - Закрыть текстовую беседу - - - - QtChatWidget - - - %1 is connected. - %1 подсоединено. - - - - %1 is disconnected. - %1 отсоединён. - - - - send - отправлено - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Редактировать контакт - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Звонок на SIP - - - - Call land line - Звонок на стационарный телефон - - - - Call Mobile - Звонок на мобильный телефон - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - Hold first interlocutor and call second one - Позвонить второму собеседнику и поставить первого в очередь задержки - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - Start Conference - Начать конференцию - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Да - - - - &No - &Нет - - - - Merge %1 with %2? - Соединить %1 с %2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Да - - - - &No - &Нет - - - - Home phone - Домашний телефон - - - - Mobile phone - Мобильный телефон - - - - @product@ - - - - - - Edit Contact - Редактировать контакт - - - - Do you really want to delete this contact? - Вы на самом деле хотите удалить собеседника? - - - - Start chat - Начать текстовое общение - - - - - Delete contact - Удалить собеседника - - - - Call - Позвонить - - - - Free call - - - - - Work phone - Рабочий телефон - - - - Send SMS - Отправить SMS - - - - Edit contact - Редактировать запись о собеседнике - - - - Block contact - Заблокировать собеседника - - - - Invite to conference - Пригласить на конференцию - - - - Go to website - Перейти на веб страницу - - - - Send file - Послать файл - - - - Forward to mobile phone - Перенапраивить на мобильный телефон - - - - QtContactWidget - - - No mobile phone number set - Номер мобильного телефона не задан - - - - No landline phone number set - Номер стационарного телефона не задан - - - - - Click here to call - Нажмите здесь, чтобы совершить звонок - - - - - Click here to set a phone number - Нажмите сдесь, чтобы установить номер телефона - - - - Click here to edit the contact - Нажмите здесь для редактирования данных собеседника - - - - Click here to send a SMS - Нажмите здесь для отправки SMS - - - - Click here to start a chat - Нажмите здесь для начала текстового общения - - - - Click here to start a free call - Нажмите здесь для начала бесплатного звонка - - - - Click here to send a file - Нажмите здесь для отправки файла - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Хотите ли вы прослушать Вашу голосовую почту? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Да - - - - &No - &Нет - - - - Choose a directory - Выбор каталога - - - - Overwrite File? - Перезаписать Файл? - - - - A file called %1 already exists.Do you want to overwrite it? - Файл с названием %1 уже существует. Хотите ли вы перезаписать его? - - - - - File size error - Ошибка в размере файла - - - - %1 exceeds the maximum authorized size. - %1 превышает максимально допустимый размер. - - - - %1 has size 0. - %1 имеет размер 0. - - - - %1 is a directory. - %1 папка. - - - - You can not send a directory. - Вы не можете отослать папку. - - - - %1 is a shortcut. - %1 ярлык. - - - - You can not send a shortcut. - Вы не можете послать ярлык. - - - - All Files (*.* *) - Все файлы - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Отмена - - - - Remove - Убрать - - - - - Pause - │П│а│у│з│а - - - - Starting - Идет запуск - - - - From: - Отправитель: - - - - To: - Получатель: - - - - Open - &Открыть - - - - Resume - Продолжить - - - - Waiting for anwser... - Ожидание ответа... - - - - Done - Завершено - - - - Failed - Завершено неудачно - - - - Paused - Воспроизведение приостановлено - - - - Paused by peer - Остановлен пользователем - - - - Cancelled - Отменено - - - - Cancelled by peer - Отменено пользователем - - - - - Downloading... - Принимается... - - - - Uploading... - Закачка... - - - - Waiting for peer... - Ожидание - - - - An error occured during the file transfer - Ошибка при передаче файлов - - - - This may be caused by : - Вероятно вызвано - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Главное - - - - General Settings - Общие Настройки - - - - QtHistory - - - Incoming call - Входящий звонок - - - - Outgoing call - Исходящий звонок - - - - Missed call - Пропущенне звонки - - - - Rejected call - Отказанный звонок - - - - Outgoing SMS - Исходящее SMS сообщение - - - - Do you want to call %1? - Вы хотите позвонить собеседнику %1? - - - - Chat session - Чат - - - - @product@ - Call History - - - - - - Type - Шрифт - - - - Name/ID - Имя/Идентификатор - - - - Date - Дата: - - - - Duration - Длительность - - - - QtHistoryWidget - - - Erase this entry - Стереть эту запись - - - - Open in SMS window - Открыть в окне SMS сообщений - - - - Call this peer - Позвонить этому пользователю - - - - Show chat log - Показать историю чата - - - - QtIMAccountManager - - - Cancel - Отмена - - - - @product@ - - - - - - &Delete - &Удалить - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Отключено - - - - Error: %1 - Ошибка: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Онлайн - - - - Invisible - Невидимка - - - - Away - Отсутствует - - - - Do not disturb - Не беспокоить - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Пожалуйста введите имя учётной записи - - - - QtIMAccountPresenceMenuManager - - - Cancel - Отмена - - - - @product@ - - - - - - &Delete - &Удалить - - - - Online - Онлайн - - - - Invisible - Невидимка - - - - Away - Отсутствует - - - - Do Not Disturb - Не беспокоить - - - - Disconnect - Отсоединиться - - - - Delete Account - Удалить аккаунт - - - - Are sure you want to delete the account <b>%1</b>? - Вы действительно хотите удалить аккаунтt <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Редактировать мои учётные записи - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Язык - - - - Language Settings - Настройка языков - - - - QtLogAccount - - - Invalid account - Неверный аккаунт - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Входящий звонок(мелодия звонка) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Звонок прекращён (звук повешенной трубки) - - - - Incoming chat - Входящие текстовое сообщение - - - - IM account connected - Связь с учётной записью IM установлена - - - - IM account disconnected - Связь с учётной записью IM прекращена - - - - Contact online - Собеседник в сети - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Выберите звуковой файл - - - - Sounds - Звуки - - - - QtPhoneCall - - - Status - Состояние - - - - Incoming Call - Входящий Звонок - - - - Resume - Продолжить - - - - Hang-up - Повесить трубку - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Ошибка - - - - Talking - Разговор - - - - Dialing - Набор номера - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Звонок - - - - Redirected - Переадресован - - - - Initialization... - Инициализация... - - - - Closed - Закрыто - - - - - Hold - Приостановить - - - - Add contact - Добавление собеседника - - - - Ca&ncel - &Отменить - - - - Talking - Conference - Разговор - Конференция - - - - Add a Contact - Добавить Собеседника - - - - QtPresenceMenuManager - - - Online - Онлайн - - - - Invisible - Невидимка - - - - Away - Отсутствует - - - - Do Not Disturb - Не беспокоить - - - - Log off - Выйти - - - - QtPrivacySettings - - - Privacy - Параметры конфиденциальности - - - - Privacy Settings - Параметры личных данных - - - - QtProfileBar - - - Click here to change your status - Нажмите здесь, чтобы сменить Ваш статус - - - - - active - активен - - - - voicemail - голосовая почта - - - - inactive - неактивен(-на) - - - - unauthorized - не санкционирован - - - - Set global presence to: - Изменить глобальное состояние на - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Дополнительно >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Собеседник должен иметь группу, настройте её пожалуйста. - - - - << Simple - << Простой вид - - - - Select your avatar - Выберите ваш Аватар - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Плохое название группы - - - - Group name cannot be empty - Название группы не может быть пустым - - - - QtSecuritySettings - - - Security - Безопасность - - - - Security Settings - Настройки безопасности - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Пожалуйста заполните поле для телефонного номера - - - - Do you want to continue? - Вы хотите продолжить? - - - - Your SMS has not been sent - Ваше SMS не было отослано - - - - Your SMS has been sent - Ваше SMS было отослано - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - Вы не можете послать пустое сообщение - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Не подсоединён - - - - Register done - Регистрация завершена - - - - Unregister done - Регистрация аннулирована - - - - Connecting - Идёт подключение - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Состояние - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Звонок на SIP - - - - Call land line - Звонок на стационарный телефон - - - - Call Mobile - Звонок на мобильный телефон - - - - Call @company@ - - - - - - Call - Позвонить - - - - Send SMS - Отправить SMS - - - - Online - Онлайн - - - - Invisible - Невидимка - - - - Away - Отсутствует - - - - Do Not Disturb - Не беспокоить - - - - Internet Connection Error - Ошибка при подключении к интернету - - - - Offline - Отключён - - - - Connecting... - Установка соединения... - - - - Send a SMS - Послать SMS - - - - Start a chat - Начать текстовое общение - - - - Place Call - Произвести звонок - - - - Send File - Послать файл - - - - Multiple Status - Multiple Status - - - - Unknown Status - Неизвестный статус - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Отмена - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Редактировать мои учётные записи - - - - Add a Contact - Добавить Собеседника - - - - Hide Unavailable Contacts - Спрятать недоступные контакты - - - - Show Unavailable Contacts - Показать недоступные контакты - - - - Hide Groups - Скрыть группы - - - - Show Groups - Показать группы - - - - You have unfinished call(s). - У вас есть незаконченные разговоры - - - - Are you sure you want to log off? - Вы уверены, что хотите отсоединиться? - - - - &Log Off - Отсоединиться - - - - Disable &Video Calls - Выключить аудио и видео звонки - - - - Enable &Video Calls - Включить аудио и видео звонки - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Конференция не может быть начата пока есть активные звонки</b><br><br>Закончите звонки и начните снова - - - - @product@ - Warning - - - - - - - Log &Off... - Отключиться - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Список собеседников - - - - QtUserProfile - - - Edit Contact - Редактировать контакт - - - - - &Authorize - &Аутентифицировать - - - - - &Block - &Блокировать - - - - Network error. - Ошибка сети. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Введён неверный адрес электронной почты или неверный пароль - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Видео - - - - - Normal - Удовлетворительно - - - - - Good - Хорошо - - - - - Very good - Очень хорошо - - - - - Excellent - Отлично - - - - Video Settings - Параметры видео - - - - QtVoicemailSettings - - - Voicemail - Голосовая почта - - - - Voicemail Settings - Настройки голосовой почты - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Дополнительные настройки - - - - General - Главное - - - - Accounts - Учетные записи - - - - Audio - Аудио - - - - Call Forward - Перенаправление звонка - - - - Language - Язык - - - - Privacy - Параметры конфиденциальности - - - - Video - Видео - - - - Voicemail - Голосовая почта - - - - security - Безопасность - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Отмена - - - - - - - Conference - Конференция - - - - Call - Позвонить - - - - Account - - - - - Add a Contact - Добавить Собеседника - - - - You have unfinished call(s). - У вас есть незаконченные разговоры - - - - @product@ - Warning - - - - - - - Home - Дома - - - - Are you sure you want to exit the application? - Вы уверены, что хотите выйти из приложения? - - - - &Exit - &Выход - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Отмена - - - - OK - Да - - - - Enter the new group name: - Введите имя новой группы: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Область - - - - Enable call encryption - Включить шифрование звонков - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Обновите Ваш список учётных записей и собеседников - - - - Yahoo! ID: - Yahoo! Идентификатор: - - - - MSN ID: - MSN Идентификатор: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk Идентификатор: - - - - exemple: username@server - Пример: юзер@сервер - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Отправить - - - - @product@ - SMS - - - - - - Click here to add a phone number - Нажмите здесь для добавления телефонного номера - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Поставьте вашу подпись здесь - - - - Signature: - Подпись: - - - - Phone number(s): - Номер(а) телефона: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Введите здесь номер(а) телефона <br>Они должны быть разделены символом & или ; или , - - - - SoftUpdateWindow - - - Cancel - Отмена - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Область - - - - VideoSettings - - - Normal - Удовлетворительно - - - - Good - Хорошо - - - - Very good - Очень хорошо - - - - Excellent - Отлично - - - - Enable video - Включить видео - - - - Webcam Selection - Выбор веб камеры - - - - Webcam device: - Устройство веб камеры: - - - - Webcam Preview - Предварительный просмотр изображения с веб камеры - - - - Connection Type - Тип соединения - - - - Video quality - Качество изображения - - - - Down (kbit/s) - Входящая скорость(Кбит/с) - - - - Up (kbit/s) - Исходящая скорость(Кбит/с) - - - - 0 to 512 - от 0 до 512 - - - - 0 to 128 - от 0 до 128 - - - - 512 to 2048 - от 512 до 2048 - - - - 128 to 256 - от 128 до 256 - - - - 2048+ - 2048 и выше - - - - 256+ - 256 и выше - - - - 8192+ - 8192 и выше - - - - 1024+ - 1024 и выше - - - - Video quality depends on your Internet connection bandwidth - Качество видео изображения зависит от пропускной способности Вашего интернет подключения - - - - Make a test video call - Произвести тестовый видео звонок - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Область - - - - Phone number of your voicemail: - Телефонный номер голосового ящика - - - - Please fill in here the information about your voicemail - Пожалуйста, заполните данные - - - - WengoConfigDialog - - - Cancel - Отмена - - - - Save - Сохранить - - - - Title - Заглавие - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Принять - - - - &Hidden - - - - - - &Tools - &Инструменты - - - - &Help - Справка (&H) - - - - &Actions - &Действия - - - - @company@ - - - - - - &Close - Закрыть - - - - Dialpad - Номеронабиратель - - - - @product@ - - - - - - Start Conference - Начать конференцию - - - - Send SMS - Отправить SMS - - - - Contacts - Контакты - - - - History - Журнал - - - - Clear &History - О&чистить журнал - - - - ToolBar - Панель инструментов - - - - Show/Hide Unavailable &Contacts - Показать/Спрятать Недоступных &Собеседников - - - - &Chat Sessions - &Сессии текстового разговора - - - - &All - &Все - - - - &HangUp - &Повесить трубку - - - - &Hold/Resume - &Приостановить/Продолжить - - - - Show/Hide &Groups - Показать/Скрыть &Группы - - - - &Outgoing Calls - &Исходящий звонок - - - - &Incoming Calls - &Входящий звонок - - - - &Missed Calls - &Пропущенный звонок - - - - Enable/Disable &Video Calls - Запретить/Разрешить &Видео Звонки - - - - Short Text &Messages (SMS) - Короткие &Сообщения (SMS) - - - - Rejected Calls - Отказанные звонки - - - - &Contacts - &Собеседники - - - - &About... - &О программе... - - - - Add &Contact... - Добавить контакт - - - - &Configuration... - &Конфигурация... - - - - Send SMS... - Оправить SMS - - - - View My &Profile... - Посмотреть мой профайл - - - - - View My Profile - Посмотреть мой профайл - - - - Start &Conference... - Начать конференцию - - - - &Find Contact... - Найти контакт - - - - Log &Off... - Отключиться - - - - - Log Off - Завершение сеанса - - - - Show &Chat Window - Показать окно чата - - - - - Show Chat Window - Показать окно чата - - - - Show &File Transfer - Показать скачки - - - - Add Contact - Добавить контакт - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Добавить - - - - SMS - SMS - - - - Conference - Конференция - - - - Wizard - - - Cancel - Отмена - - - - Finish - Закончить - - - - Next > - Далее > - - - - < Back - < Назад - - - - Simple Wizard - Step %1 of %2 - Простой мастер - Шаг %1 из %2 - - - - YahooSettings - - - Login: - Имя: - - - - Password: - Пароль: - - - - Yahoo! Settings - Yahoo! Settings - - - - Use Yahoo! Japan server - Use Yahoo! Japan server - - - - Forgot your Yahoo! password? - Forgot your Yahoo! password? - - - - Get a new Yahoo! Account - Get a new Yahoo! Account - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sk.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sk.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sk.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sk.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5405 +0,0 @@ - - - - - AIMSettings - - - Login: - Meno: - - - - Forgot your AIM password? - Zabudli ste svoje heslo? - - - - Get a new AIM Account - Založiť nové AIM konto - - - - Password: - Heslo : - - - - AIM Settings - AIM/ICQ Nastavenia - - - - AboutWindow - - - About - O Programe - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autori - - - - Close - Zavrieť - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Prenos súboru - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Prijať - - - - &Cancel - &Storno - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Súbor: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Prichádzajúci súbor</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Editovať profil - - - - AddAccount - - - Configure your account: - Nastaviť účet - - - - &Next - &Dopredu - - - - Need help? - Potrebujete pomoc? - - - - You don't have any account ? Click here - Nemáte žiadny účet? Kliknite sem - - - - &Back - &Späť - - - - Cancel - Storno - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Storno - - - - Contact Type (protocol): - Typ kontaktu (protokol) - - - - Contact ID: - Kontakt ID: - - - - Account: - Účet: - - - - Enable - Povolené - - - - Login - Prihlásiť - - - - Add - Pridať - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Heslo : - - - - Need help? - Potrebujete pomoc? - - - - &Back - &Späť - - - - Cancel - Storno - - - - @product@ - Login - - - - - - &Connect - &Pripojiť sa - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - Zobrazované meno: - - - - login / username: - login / uživateľské meno - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Heslo : - - - - Need help? - Potrebujete pomoc? - - - - &Back - &Späť - - - - Cancel - Storno - - - - @product@ - Login - - - - - - &Connect - &Pripojiť sa - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Prihlásenie</span><br><br><span>Zadajte Vaš e-mail a<br>heslo</span> - - - - Email Address: - E-mailová adresa: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Zavrieť - - - - Preference Name - Preferované meno - - - - Type - Typ - - - - Value - Hodnota - - - - Default Value - - - - - - Save - - - - - - Status - Stav: - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Pridať - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Štýl - - - - AudioSettings - - - Reset - Reset - - - - Audio Codecs - Audio kodeky - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Štýl - - - - AvatarWidget - - - Form - Štýl - - - - BrowserSoftUpdateWindow - - - Close - Zavrieť - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - Presmerovať všetky zmeškané hovory do hlasovej schránky - - - - Disable call forwarding - Zrušiť presmerovanie hovorov - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - &Kontakt - - - - &Tools - &Nástroje - - - - &Help - &Nápoveda - - - - &Actions - &Akcie - - - - Main Toolbar - Hlavný panel nástrojov - - - - - - Call Contact - Zavolať uživateľovi - - - - - - Send a File - Poslať súbor - - - - createChatConf - vytvoriťChatKonf - - - - - - Show Contact Info - Ukázať informácie o kontakte - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Nástroje - - - - &Actions - &Akcie - - - - Main Toolbar - Hlavný panel nástrojov - - - - - - Call Contact - Zavolať uživateľovi - - - - - - Send a File - Poslať súbor - - - - - - Show Contact Info - Ukázať informácie o kontakte - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - &Pridaj - - - - ChatToaster - - - Message - - - - - - Incoming Chat - Príchodzia správa - - - - ChatWidget - - - Form - Štýl - - - - ConferenceCallWidget - - - Cancel - Storno - - - - Start - Štart - - - - Phone number 2: - Telefónne číslo 2: - - - - Phone number 1: - Telefónne císlo 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - Storno - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Storno - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - ... - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Storno - - - - Form - Štýl - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Meno: - - - - Password: - Heslo : - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Storno - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Meno: - - - - Password: - Heslo : - - - - ICQ Settings - AIM/ICQ Nastavenia - - - - Forgot your ICQ password? - Zabudli ste svoje heslo? - - - - Get a new ICQ Account - Založiť nové AIM konto - - - - IMAccountManager - - - Close - Zavrieť - - - - Login - Prihlásiť - - - - Add - Pridať - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Storno - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Pridať - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Storno - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Meno: - - - - Password: - Heslo : - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Heslo : - - - - Need help? - Potrebujete pomoc? - - - - Cancel - Storno - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Účet: - - - - &Connect - &Pripojiť sa - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Meno: - - - - Password: - Heslo : - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Zavrieť - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Prenos súboru - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Prijať - - - - Status - Stav: - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Storno - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - Nastaviť účet - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - Nastaviť účet - - - - QtAddWengoAccount - - - Login - Prihlásiť - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Storno - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Storno - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Typ - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - Storno - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Storno - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Stav: - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Stav: - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Storno - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Storno - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Storno - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Štýl - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Storno - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Štýl - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Štýl - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Storno - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Prijať - - - - &Hidden - - - - - - &Tools - &Nástroje - - - - &Help - &Nápoveda - - - - &Actions - &Akcie - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Pridať - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Storno - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Meno: - - - - Password: - Heslo : - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sl.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sl.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sl.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sl.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4892 +0,0 @@ - - - - - AIMSettings - - - Login: - Prijava: - - - - Forgot your AIM password? - Ste pozabili svoje AIM geslo? - - - - Get a new AIM Account - Ustvari nov AIM račun - - - - Password: - Geslo: - - - - AIM Settings - Nastavitve AIM - - - - AboutWindow - - - About - O Programu - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Avtorji - - - - Close - Zapri - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Prenos datotek - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Sprejmi - - - - &Cancel - &Prekliči - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Stik: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Ime datoteke: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Datoteka, ki se prenaša k vam</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - Ur&ejenje profila - - - - AddAccount - - - Configure your account: - Urejanje svojega računa: - - - - &Next - &Naprej - - - - Need help? - Potrebujete pomoč? - - - - You don't have any account ? Click here - Še nimate računa? Kliknite tukaj - - - - &Back - Na&zaj - - - - Cancel - Prekliči - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Prekliči - - - - Contact Type (protocol): - Vrsta stika (protokol) - - - - Contact ID: - ID stika: - - - - Account: - Račun: - - - - Enable - Omogoči - - - - Login - Prijava - - - - Add - Dodaj - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Geslo: - - - - Need help? - Potrebujete pomoč? - - - - &Back - Na&zaj - - - - Cancel - Prekliči - - - - @product@ - Login - - - - - - &Connect - &Poveži - - - - Activate presence and chat (SIP/SIMPLE) - Aktiviraj prisotnost in klepet - - - - Displayname: - Prikazano ime: - - - - login / username: - prijava / uporabniško ime: - - - - Account name: - Ime računa: - - - - Proxy: - Posrednik: - - - - : - : - - - - Server: - Strežnik: - - - - SIP Domain / Realm: - Domena / območje SIP - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Nastavite svoj profil SIP</span><br><br><span>Vnesite podatke, ki so potrebni<br/>za povezavo z vašim računom SUP</span> - - - - Advanced - Napredeno - - - - AddWengoAccount - - - Password: - Geslo: - - - - Need help? - Potrebujete pomoč? - - - - &Back - Na&zaj - - - - Cancel - Prekliči - - - - @product@ - Login - - - - - - &Connect - &Poveži - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Prijava</span><br><br><span>Vnesite svoj naslov e-pošte in geslo</span> - - - - Email Address: - Naslov e-pošte: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Zapri - - - - Preference Name - Ime nastavitve - - - - Type - Vrsta - - - - Value - Vrednost - - - - Default Value - Privzeta vrednost - - - - Save - Shrani - - - - Status - Stanje - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Dodaj - - - - Advanced Settings - Napredne nastavitve - - - - Advanced Configuration Window - Okno z naprednimi nastavitvami - - - - Automatically answer incoming calls from - Samodejno odgovori na klice od - - - - Remove - Odstrani - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - OPOZORILO! Ta del je namenjen naprednim uporabnikom.<br>Napake v tem delu lahko onemogočijo delovanje programa. - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - &Samo ikone - - - - &Hidden - &Skrito - - - - Chat Theme - - - - - - Form - Obrazec - - - - AudioSettings - - - Reset - Ponastavi - - - - Audio Codecs - Zvočni kodeki - - - - &Input device: - &Vhodna naprava - - - - &Output device: - &Izhodna naprava - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Obrazec - - - - AvatarWidget - - - Form - Obrazec - - - - BrowserSoftUpdateWindow - - - Close - Zapri - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Tretji: - - - - 1st: - Prvi: - - - - 2nd: - Drugi: - - - - - - (+ country code) phone number - (+ številka države) telefonska številka - - - - Forward all unanswered calls to message box - Preusmeri vse neodgovorjene klice v Mapo s sporočili - - - - Disable call forwarding - Onemogoči preusmerjanje klicov - - - - Forward all unanswered calls to following phone numbers: - Preusmeri vse neodgovorjene klice na sledeče telefonske številke: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Na primer +3314500XXXX ( kjer je +33 številka države, v katero kličete, 14500XXXX telefonska številka prejemnika klica) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Dohodni klic - - - - Message - Sporočilo - - - - ChatLogViewer - - - Chat History - Zgodovina klepeta - - - - &Contact - &Stik - - - - &Tools - &Orodja - - - - &Help - &Pomoč - - - - &Actions - &Dejanja - - - - Main Toolbar - Glavna orodjarna - - - - - - Call Contact - Pokliči stik - - - - - - Send a File - Pošlji datoteko - - - - createChatConf - Ustvari klepetalno konferenco - - - - - - Show Contact Info - Pokaži podatke o stiku - - - - blockContact - Blokiraj stik - - - - &Save History As... - &Shrani zgodovino kot ... - - - - actionRestartChat - Ponovno začni klepet - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Stik - - - - &Tools - &Orodja - - - - &Actions - &Dejanja - - - - Main Toolbar - Glavna orodjarna - - - - - - Call Contact - Pokliči stik - - - - - - Send a File - Pošlji datoteko - - - - - - Show Contact Info - Pokaži podatke o stiku - - - - blockContact - Blokiraj stik - - - - &Save History As... - &Shrani zgodovino kot ... - - - - @company@ - - - - - - MainWindow - Glavno okno - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - &Zapri - - - - Conference - Konferenca - - - - ChatRoomInviteWidget - - - Chat room - Klepetalnica - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Klepetalnica</span></p></body></html> - - - - (Conference participants) - (udeleženci konference) - - - - &Remove - &Odstrani - - - - &Start - &Začni - - - - Group Name - Ime skupine - - - - &Add - &Dodaj - - - - ChatToaster - - - Message - Sporočilo - - - - Incoming Chat - Dohodni klepet - - - - ChatWidget - - - Form - Obrazec - - - - ConferenceCallWidget - - - Cancel - Prekliči - - - - Start - Prični - - - - Phone number 2: - Telefonska št. 2: - - - - Phone number 1: - Telefonska št. 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Začni - - - - Cancel - Prekliči - - - - ContactGroupPopupMenu - - - Remove Contact Group - Odstrani skupino stikov - - - - Rename Contact Group - Preimenuj skupino stikov - - - - Delete group - Zbriši skupino - - - - Do you really want to delete this group? - Ali res želite izbrisati to skupino? - - - - &Yes - &Da - - - - &No - &Ne - - - - ContactList - - - Contact List - Seznam stikov - - - - ContactWidget - - - No mobile phone number set - Nastavljene ni nobene številke mobilnega telefona - - - - No landline phone number set - Nastavljene ni nobene številke stacionarnega telefona - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Prekliči - - - - Program Failure - Napaka v programu - - - - Send - Pošlji - - - - Optional Information - Dodatni podatki - - - - Your Mail: - Vaša e-pošta: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Ni na voljo - - - - Click here to change your call forward settings - Klikni za nastavitev posredovanja klicev - - - - Call forward mode: - Način posredovanja klicev - - - - Purchase call out credits - Kupite kredite Wengo za izhodne klice - - - - Call Forward Method - Metoda posredovanja klicev - - - - Call Voice Mail - Kliči glasovno pošto - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Korenska mapa - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Da bi poslali zvoke sogovorniku, kliknite na razne predmete, ki spreminjajo barvo. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Kliknite za klic svoje glasovne pošte - - - - New Voice Mail: - Nova glasovna pošta - - - - Click here to see missed call(s) - Kliknite za pregled zgrešenih klicev - - - - Missed Call(s): - Zgrešeni klici - - - - FileTransferDialog - - - ... - ... - - - - Download - Prejemanje - - - - Upload - Pošiljanje - - - - Click here to change your download folder - Kliknite tukaj za spremembo mape za prejemanje - - - - Download folder: - Mapa za prejemanje: - - - - Clean all items in the list - Počisti seznam prenosov - - - - &Clean - &Počisti - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Prekliči - - - - Form - Obrazec - - - - Pause - Začasno ustavi - - - - <i>From:</i> - <i>Od:</i> - - - - GeneralSettings - - - When I double-click on a contact - Kadar dvakrat kliknem nek stik - - - - Call cell phone or land line if contact not online - Pokliči stacionarni ali prenosni telefon, če stik ni na zvezi. - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Stanje pripravljenosti - - - - minutes - minutah - - - - Show me as "Away" when I am inactive for: - Označi me kot "Odsoten" po: - - - - When I start my computer - Ko se prijavim v sistem - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Prijava: - - - - Password: - Geslo: - - - - GoogleTalk Settings - Nastavitve GoogleTalk - - - - Forgot your GoogleTalk password? - Ste pozabili svoje geslo za GoogleTalk? - - - - Get a new GoogleTalk Account - Ustvari nov račun GoogleTalk - - - - HttpProxyLoginWindow - - - Cancel - Prekliči - - - - HTTP Proxy Address: - Naslov posrednika HTTP: - - - - HTTP Proxy Port Number: - Številka vrat posrednika HTTP: - - - - HTTP Proxy Login: - Uporabniško ime na posredniku HTTP: - - - - HTTP Proxy Password: - Geslo na posredniku HTTP: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Overjanje pri posredniku HTTP</span><br><br><span>Vaš krajevni posrednik HTTP opravlja overjanje<br>Vnesite svoje uporabniško ime in geslo</span> - - - - OK - V redu - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Prijava: - - - - Password: - Geslo: - - - - ICQ Settings - Nastavitve ICQ - - - - Forgot your ICQ password? - Ste pozabili svoje geslo za ICQ? - - - - Get a new ICQ Account - Ustvari nov račun ICQ - - - - IMAccountManager - - - Close - Zapri - - - - Login - Prijava - - - - Add - Dodaj - - - - Delete - Izbriši - - - - Modify - Spremeni - - - - Protocol - Protokol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Prekliči - - - - Save - Shrani - - - - IM Account Settings - Nastavitve računa - - - - IMContactManager - - - Add - Dodaj - - - - Delete - Izbriši - - - - Contact Type (protocol) - Vrsta stika (protokol) - - - - Click on the add button below to add a new ID - Za dodajanje novega ID-ja kliknite na spodnji gumb Dodaj - - - - Contact ID - ID stika - - - - IMProfileWidget - - - - Enter your nickname here - Vnesite svoj vzdevek - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Dodaj račun za takojšnje sporočanje - - - - Add an IM account - Dodaj račun - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Prekliči - - - - OK - V redu - - - - Go Up - Pojdi gor - - - - Refresh - Osveži - - - - JabberSettings - - - Login: - Prijava: - - - - Password: - Geslo: - - - - Jabber Settings - Nastavitve za Jabber - - - - Connect Server: - Poveži se s tem strežnikom: - - - - <u>Advanced Options</u> - <u>Napredne možnosti</u> - - - - Require TLS - Zahtevaj TLS - - - - Port: - Vrata: - - - - Use TLS if available - Uporabi TLS, če je na voljo - - - - Allow plaintext authentication over unencrypted streams - Dopusti overjanje z navadnim besedilom brez šifriranja - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Vsili star SSL (vrata 5223) - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Vašega jezika še ni tu. Ste vedeli, da lahko na strani Launchpad sami začnete prevajati? - - - - More information here. - Več podatkov tukajle. - - - - LogAccount - - - Password: - Geslo: - - - - Need help? - Potrebujete pomoč? - - - - Cancel - Prekliči - - - - Delete - Izbriši - - - - @product@ - Login - - - - - - Account: - Račun: - - - - &Connect - &Poveži - - - - Forgot your @company@ password? - - - - - - &Modify - &Spremeni - - - - Configure a &New Profile - Nastavi &nov profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Prijava: - - - - Password: - Geslo: - - - - MSN Settings - Nastavitve za MSN - - - - Forgot your MSN password? - Ste pozabili svoje geslo za MSN? - - - - Get a new MSN Account - Ustvarite nov račun MSN - - - - Use HTTP method - Uporabi HTTP način - - - - MainWindow - - - MainWindow - Glavno okno - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Sprejmi klic - - - - Send Chat Message - Pošlji sporočilo klepeta - - - - Make Call - Pokliči - - - - Hang Up - Končaj klic - - - - ManageBlockedUsersSettings - - - Close - Zapri - - - - Unblock User - Odblokiraj uporabnika - - - - Manage blocked users - Uredi blokirane uporabnike - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Izberite dogodke, za katere naj se predvaja zvok. - - - - NotificationSettingsItem - - - Sound file - Zvočna datoteka - - - - Find a sound file - Najdi zvočno datoteko - - - - Play sound file - Predvajaj zvočno datoteko - - - - Play - Predvajaj - - - - NotifyDialog - - - File Transfer - Prenos datotek - - - - &Ok - &V redu - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Stanje:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Nadgradnja</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Sprejmi - - - - Status - Stanje - - - - 00:00:00 - 00:00:00 - - - - Nickname - Vzdevek - - - - &Reject - &Zavrni - - - - Dialpad - Številčnica - - - - Audio Smileys - Zvokovni smeškoti - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Uredi blokirane uporabnike - - - - Privacy Rules - Pravila zasebnosti: - - - - Always sign in as "Invisible" (appear offline to all users) - Vedno me prijavi kot "Neviden" (kot da nisem dosegljiv) - - - - Allow chats from - Dopusti klepet od - - - - - Anyone - Kodarkoli - - - - - Only people from my contact list - Samo ljudi z mojega seznama stikov - - - - Allow calls from - Dovoli klice od - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Prekliči - - - - Save - Shrani - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - Splošno - - - - Network IDs (MSN, Jabber...) - Omrežni ID (Jabber, ICQ ...) - - - - Advanced >> - Napredno >> - - - - Fill in all your network Id to stay connected with your contacts - Izpolnite obrazec s svojo omrežno identiteto, da bi ostali povezani s svojimi stiki - - - - Contact - Stik - - - - Group: - Skupina: - - - - Last Name: - Priimek: - - - - First Name: - Ime: - - - - Details - Podrobnosti - - - - Web/blog: - Splet/blog: - - - - Country: - Država: - - - - State: - Zv. država: - - - - City: - Mesto: - - - - Gender: - Spol: - - - - Birth Date: - Datum rojstva: - - - - Email: - E-pošta: - - - - Notes - Zapiski - - - - Phone Numbers - Telefonske številke - - - - Home phone - Domači telefon - - - - Mobile phone - Mobilni telefon - - - - dd MMMM yyyy - dd MMMM llll - - - - Unknown - Neznano - - - - Male - Moški - - - - Female - Ženska - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Računi - - - - Accounts Settings - Nastavitve računov - - - - QtAddAccount - - - Configure your voip account - Nastavite svoj račun VoIP - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Vnesite podatke, ki bodo omogočili vašemu<br/>programskemu telefonu, da se poveže<br/>z vašim računom SIP - - - - Configure your SIP profile - Nastavite svoj profil SIP - - - - QtAddWengoAccount - - - Login - Prijava - - - - Please enter an email address. - Vnesite svoj e-poštni naslov - - - - Please enter your email address<br/>and your password - Vnesite svoj e-poštni naslov in svoje geslo - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Prekliči - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Izbriši - - - - QtAdvancedSettings - - - Advanced - Napredeno - - - - Advanced Settings - Napredne nastavitve - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Napredeno - - - - Audio - Zvok - - - - Audio Settings - Nastavitve zvoka - - - - QtCallBar - - - +(country code) number or nickname - +(številka države) številka ali vzdevek - - - - QtCallForwardSettings - - - - Call Forward - Preusmeritev klica - - - - Call Forward Settings - Nastavitve za preusmerjanje klicev - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Shrani kot - - - - QtChatLogViewer - - - Edit Contact - Uredi stik - - - - QtChatTabWidget - - - Close chat - Zapri klepet - - - - QtChatWidget - - - %1 is connected. - %1 je povezan. - - - - %1 is disconnected. - %1 ni povezan. - - - - send - pošlji - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Uredi stik - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Pokliči SIP - - - - Call land line - Pokliči stacionarni telefon - - - - Call Mobile - Pokliči mobilni telefon - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Sedaj lahko obvestite svojega prvega sogovornika, da bo sodeloval v konferenčnem klicu.</b><br><br>Ko zaključite, kliknite na spodnji gumb. Vaš prvi sogovornik bo postavljen na čakanje, medtem pa lahko pokličete drugega sogovornika.<br> - - - - Hold first interlocutor and call second one - Čakanje za prvega sogovornika in klic drugega - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Sedaj lahko obvestite drugega sogovornika, da bo sodeloval v konferenčnem klicu.</b><br><br>Ko zaključite, kliknite na spodnji gumb. Tako začnete konferenco. - - - - Start Conference - Začni konferenco - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Da - - - - &No - &Ne - - - - Merge %1 with %2? - Združim %1 z %2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Da - - - - &No - &Ne - - - - Home phone - Domači telefon - - - - Mobile phone - Mobilni telefon - - - - @product@ - - - - - - Edit Contact - Uredi stik - - - - Do you really want to delete this contact? - Ali zares želite izbrisati ta stik? - - - - Start chat - Začni klepet - - - - - Delete contact - Izbriši stik - - - - Call - Kliči - - - - Free call - - - - - Work phone - Telefon na delovnem mestu - - - - Send SMS - Pošlji SMS - - - - Edit contact - Uredi stik - - - - Block contact - Blokiraj stik - - - - Invite to conference - Povabi na konferenco - - - - Go to website - Pojdi na spletno stran - - - - Send file - Pošlji datoteko - - - - Forward to mobile phone - Posreduj na Mobilni telefon - - - - QtContactWidget - - - No mobile phone number set - Nastavljene ni nobene številke mobilnega telefona - - - - No landline phone number set - Nastavljene ni nobene številke stacionarnega telefona - - - - - Click here to call - Kliknite tukaj za klic - - - - - Click here to set a phone number - Kliknite tukaj za vpis telefonske številke - - - - Click here to edit the contact - Kliknite tukaj za urejanje stika - - - - Click here to send a SMS - Kliknite tukaj za pošiljanje SMSa - - - - Click here to start a chat - Kliknite tukaj za pričetek klepeta - - - - Click here to start a free call - Kliknite tukaj za pričetek brezplačnega klica - - - - Click here to send a file - Kliknite tukaj za pošiljanje datoteke - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Želite klicati svojo glasovno pošto? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Da - - - - &No - &Ne - - - - Choose a directory - Izberite mapo - - - - Overwrite File? - Nadomestim datoteko? - - - - A file called %1 already exists.Do you want to overwrite it? - Datoteka z imenom %1 že obstaja. Ali jo želite nadomestiti? - - - - - File size error - Napaka glede velikosti datoteke - - - - %1 exceeds the maximum authorized size. - %1 presega največjo dovoljeno velikost. - - - - %1 has size 0. - %1 ima velikost 0. - - - - %1 is a directory. - %1 je mapa. - - - - You can not send a directory. - Ne morete poslati mape. - - - - %1 is a shortcut. - %1 je bližnjica. - - - - You can not send a shortcut. - Ne morete poslati bližnjice. - - - - All Files (*.* *) - Vse datoteke (*.*, *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Prekliči - - - - Remove - Odstrani - - - - - Pause - Začasno ustavi - - - - Starting - Zaganjam - - - - From: - Od: - - - - To: - Za: - - - - Open - Odpri - - - - Resume - Nadaljuj - - - - Waiting for anwser... - Čakajoč odgovor ... - - - - Done - Opravljeno - - - - Failed - Spodletelo - - - - Paused - Pavza - - - - Paused by peer - Ustavljeno na željo vrstnika - - - - Cancelled - Preklicano - - - - Cancelled by peer - Preklicano na željo vrstnika. - - - - - Downloading... - Sprejemanje ... - - - - Uploading... - Pošiljanje ... - - - - Waiting for peer... - Čakajoč odgovor vrstnika ... - - - - An error occured during the file transfer - Med prenosom datotek(e) je prišlo do napake - - - - This may be caused by : - Možni vzroki so: - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Splošno - - - - General Settings - Splošne nastavitve - - - - QtHistory - - - Incoming call - Dohodni klic - - - - Outgoing call - Odhodni klic - - - - Missed call - Zgrešeni klic - - - - Rejected call - Zavrnjeni klic - - - - Outgoing SMS - Odhodni SMS - - - - Do you want to call %1? - Želite poklicati %1? - - - - Chat session - Seja klepeta - - - - @product@ - Call History - - - - - - Type - Vrsta - - - - Name/ID - Ime/ID - - - - Date - Datum - - - - Duration - Trajanje - - - - QtHistoryWidget - - - Erase this entry - Zbriši ta vnos - - - - Open in SMS window - Odpri v SMS oknu - - - - Call this peer - Pokliči tega vrstnika - - - - Show chat log - Prikaži dnevnik klepeta - - - - QtIMAccountManager - - - Cancel - Prekliči - - - - @product@ - - - - - - &Delete - &Izbriši - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Brez povezave - - - - Error: %1 - Napaka: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Na zvezi - - - - Invisible - Neviden - - - - Away - Odsoten - - - - Do not disturb - Ne moti - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Vnesite uporabniško ime - - - - QtIMAccountPresenceMenuManager - - - Cancel - Prekliči - - - - @product@ - - - - - - &Delete - &Izbriši - - - - Online - Na zvezi - - - - Invisible - Neviden - - - - Away - Odsoten - - - - Do Not Disturb - Ne moti - - - - Disconnect - Prekini povezavo - - - - Delete Account - Izbriši račun - - - - Are sure you want to delete the account <b>%1</b>? - Ali zares želite izbrisati račun <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Uredi moj profil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Jezik - - - - Language Settings - Jezikovne natavitve - - - - QtLogAccount - - - Invalid account - Neveljaven račun - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Dohodni klic (zvonenje) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Zvok ob končanju klica - - - - Incoming chat - Dohodni klepet - - - - IM account connected - Vzpostavljena povezava z računom - - - - IM account disconnected - Prekinjena povezava z računom - - - - Contact online - Stik na zvezi - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Izberite zvočno datoteko - - - - Sounds - Zvoki - - - - QtPhoneCall - - - Status - Stanje - - - - Incoming Call - Dohodni klic - - - - Resume - Nadaljuj - - - - Hang-up - Prekini - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Napaka - - - - Talking - Pogovarjanje - - - - Dialing - Klicanje - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Zvonenje - - - - Redirected - Preusmerjeno - - - - Initialization... - Vspostavljanje ... - - - - Closed - Zaprto - - - - - Hold - Zadrži - - - - Add contact - Dodaj stik - - - - Ca&ncel - P&rekliči - - - - Talking - Conference - Pogovarjanje - konferenca - - - - Add a Contact - Dodaj stik - - - - QtPresenceMenuManager - - - Online - Na zvezi - - - - Invisible - Neviden - - - - Away - Odsoten - - - - Do Not Disturb - Ne moti - - - - Log off - Odjava - - - - QtPrivacySettings - - - Privacy - Zasebnost - - - - Privacy Settings - Nastavitve zasebnosti - - - - QtProfileBar - - - Click here to change your status - Kliknite tukaj za spremembo svojega stanja - - - - - active - dejaven - - - - voicemail - glasovna pošta - - - - inactive - nedejaven - - - - unauthorized - neavtoriziran - - - - Set global presence to: - Nastavi globalno prisotnost na: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Napredno >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Kontakt mora imeti skupino. Izberite jo. - - - - << Simple - << Enostavno - - - - Select your avatar - Izberite svojega avatarja - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Napačno ime skupine - - - - Group name cannot be empty - Ime skupine ne more biti prazno - - - - QtSecuritySettings - - - Security - Varnost - - - - Security Settings - Varnostne nastavitve - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Vnesite telefonsko številko. - - - - Do you want to continue? - Ali želite nadaljevati? - - - - Your SMS has not been sent - Vaš SMS ni bil poslan - - - - Your SMS has been sent - Vaš SMS je bil poslan - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - Ne morete poslati praznega sporočila. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Povezava ni vspostavljena - - - - Register done - Prijava uspela - - - - Unregister done - Odjava uspela - - - - Connecting - Povezovanje - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Stanje - - - - - - - - - - - - - @product@ - - - - - - Call SIP - Pokliči SIP - - - - Call land line - Pokliči stacionarni telefon - - - - Call Mobile - Pokliči mobilni telefon - - - - Call @company@ - - - - - - Call - Kliči - - - - Send SMS - Pošlji SMS - - - - Online - Na zvezi - - - - Invisible - Neviden - - - - Away - Odsoten - - - - Do Not Disturb - Ne moti - - - - Internet Connection Error - Napaka pri povezavi z Internetom - - - - Offline - Brez povezave - - - - Connecting... - Povezovanje ... - - - - Send a SMS - Pošlji SMS - - - - Start a chat - Začni klepet - - - - Place Call - Pokliči - - - - Send File - Pošlji datoteko - - - - Multiple Status - Več stanj - - - - Unknown Status - Neznano stanje - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Prekliči - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Uredi moj profil - - - - Add a Contact - Dodaj stik - - - - Hide Unavailable Contacts - Skrij nedostopne stike - - - - Show Unavailable Contacts - Pokaži nedostopne stike - - - - Hide Groups - Skrij skupine - - - - Show Groups - Pokaži skupine - - - - You have unfinished call(s). - Imate nedokončane klice - - - - Are you sure you want to log off? - Ali se zares želite odjaviti? - - - - &Log Off - &Odjava - - - - Disable &Video Calls - Onemogoči &video-klice - - - - Enable &Video Calls - Omogoči &video-klice - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Konference ni moč začeti, medtem ko potekajo navadni klici.</b><br>Zaključite vse klice in poskusite znova. - - - - @product@ - Warning - - - - - - - Log &Off... - &Odjava - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Seznam stikov - - - - QtUserProfile - - - Edit Contact - Uredi stik - - - - - &Authorize - &Avtoriziraj - - - - - &Block - &Blokiraj - - - - Network error. - Napaka glede omrežja. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Napačen e-mail ali geslo - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Navadno - - - - - Good - Dobro - - - - - Very good - Zelo Dobro - - - - - Excellent - Odlično - - - - Video Settings - Nastavitve za video - - - - QtVoicemailSettings - - - Voicemail - Glasovna pošta - - - - Voicemail Settings - Nastavitve glasovne pošte - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Napredeno - - - - General - Splošno - - - - Accounts - Računi - - - - Audio - Zvok - - - - Call Forward - Preusmeritev klica - - - - Language - Jezik - - - - Privacy - Zasebnost - - - - Video - Video - - - - Voicemail - Glasovna pošta - - - - security - varnost - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Prekliči - - - - - - - Conference - Konferenca - - - - Call - Kliči - - - - Account - - - - - Add a Contact - Dodaj stik - - - - You have unfinished call(s). - Imate nedokončane klice - - - - @product@ - Warning - - - - - - - Home - Domov - - - - Are you sure you want to exit the application? - Ali zares želte končati program? - - - - &Exit - &Končaj - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Prekliči - - - - OK - V redu - - - - Enter the new group name: - Vnesite novo ime skupine: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Obrazec - - - - Enable call encryption - Omogoči šifriranje klicev - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Posoobi moj profil - - - - Yahoo! ID: - Yahoo! ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - primer: uporabnik@strežnik - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ ID: - - - - AIM ID: - AIM ID: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Pošlji - - - - @product@ - SMS - - - - - - Click here to add a phone number - Kliknite tu, da bi dodali telefonsko številko - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Sem vnesite svoj podpis - - - - Signature: - Podpis: - - - - Phone number(s): - Telefonske številke: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Vnesite telefonske številke.<br>Če jih je več, jih ločite z znakom & ali ; ali pa , - - - - SoftUpdateWindow - - - Cancel - Prekliči - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Obrazec - - - - VideoSettings - - - Normal - Navadno - - - - Good - Dobro - - - - Very good - Zelo Dobro - - - - Excellent - Odlično - - - - Enable video - Omogoči video - - - - Webcam Selection - Izbira kamere - - - - Webcam device: - Kamera: - - - - Webcam Preview - Predogled kamere - - - - Connection Type - Vrsta povezave - - - - Video quality - Kvaliteta videa - - - - Down (kbit/s) - K meni (kbit/s) - - - - Up (kbit/s) - Od mene (kbit/s) - - - - 0 to 512 - 0 do 512 - - - - 0 to 128 - 0 do 128 - - - - 512 to 2048 - 512 do 2048 - - - - 128 to 256 - 128 do 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Kvaliteta videa je odvisna od hitrosti vaše povezave z Internetom. - - - - Make a test video call - Preizkusni video klic - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Obrazec - - - - Phone number of your voicemail: - Telefonska št. vaše glasovne pošte: - - - - Please fill in here the information about your voicemail - Vnesite podatke o vaši glasovni pošti - - - - WengoConfigDialog - - - Cancel - Prekliči - - - - Save - Shrani - - - - Title - Naslov - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Sprejmi - - - - &Hidden - &Skrito - - - - &Tools - &Orodja - - - - &Help - &Pomoč - - - - &Actions - &Dejanja - - - - @company@ - - - - - - &Close - &Zapri - - - - Dialpad - Številčnica - - - - @product@ - - - - - - Start Conference - Začni konferenco - - - - Send SMS - Pošlji SMS - - - - Contacts - Stiki - - - - History - Zgodovina - - - - Clear &History - &Počisti zgodovino - - - - ToolBar - Orodjarna - - - - Show/Hide Unavailable &Contacts - Pokaži/Skrij nedostopne stike - - - - &Chat Sessions - S&eje klepeta - - - - &All - &Vse - - - - &HangUp - &Prekini - - - - &Hold/Resume - &Zadrži/Nadaljuj - - - - Show/Hide &Groups - Pokaži/Skrij &skupine - - - - &Outgoing Calls - &Odhodni klici - - - - &Incoming Calls - Dohodn&i klici - - - - &Missed Calls - &Zgrešeni klici - - - - Enable/Disable &Video Calls - Vključi/Izključi &video klice - - - - Short Text &Messages (SMS) - Kratka &besedilna sporočila (SMS) - - - - Rejected Calls - Zavrnjeni klici - - - - &Contacts - &Stiki - - - - &About... - &O programu ... - - - - Add &Contact... - Dodaj &stik ... - - - - &Configuration... - &Nastavitve ... - - - - Send SMS... - Pošlji SMS ... - - - - View My &Profile... - Pokaži moj &profil ... - - - - - View My Profile - Pokaži moj profil - - - - Start &Conference... - Začni &konferenco ... - - - - &Find Contact... - &Najdi stik ... - - - - Log &Off... - &Odjava - - - - - Log Off - Odjava - - - - Show &Chat Window - P&okaži okno za klepet - - - - - Show Chat Window - Pokaži okno za klepet - - - - Show &File Transfer - Pok&aži prenašanje datotek - - - - Add Contact - Dodaj stik - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Dodaj - - - - SMS - SMS - - - - Conference - Konferenca - - - - Wizard - - - Cancel - Prekliči - - - - Finish - Dokončaj - - - - Next > - Naprej > - - - - < Back - < Nazaj - - - - Simple Wizard - Step %1 of %2 - Čarovnik - Korak %1 od %2 - - - - YahooSettings - - - Login: - Prijava: - - - - Password: - Geslo: - - - - Yahoo! Settings - Nastavitve Yahoo! - - - - Use Yahoo! Japan server - Uporabljaj japonski strežnik Yahoo! - - - - Forgot your Yahoo! password? - Ste pozabili svoje geslo za Yahoo!? - - - - Get a new Yahoo! Account - Ustvari nov račun Yahoo! - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sr.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sr.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sr.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sr.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5500 +0,0 @@ - - - - - AIMSettings - - - Login: - Login: - - - - Forgot your AIM password? - Zaboravili ste Vašu šifru za AIM? - - - - Get a new AIM Account - Napravite novi AIM nalog - - - - Password: - Šifra: - - - - AIM Settings - AIM/ICQ Podešavanja - - - - AboutWindow - - - About - O - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Autori - - - - Close - Zatvori - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Transfer fajla - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Prihvatam - - - - &Cancel - &Poništi - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - - - - - - Contact Type (protocol): - - - - - - Contact ID: - - - - - - Account: - - - - - - Enable - - - - - - Login - - - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Šifra: - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - - - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Šifra: - - - - Need help? - - - - - - &Back - - - - - - Cancel - - - - - - @product@ - Login - - - - - - &Connect - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Zatvori - - - - Preference Name - - - - - - Type - - - - - - Value - - - - - - Default Value - - - - - - Save - - - - - - Status - - - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - - - - - - Advanced Configuration Window - - - - - - Automatically answer incoming calls from - - - - - - Remove - - - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - - - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - - - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - - - - - - AvatarWidget - - - Form - - - - - - BrowserSoftUpdateWindow - - - Close - Zatvori - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - - - - - - 1st: - - - - - - 2nd: - - - - - - - - (+ country code) phone number - - - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - - - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - - - - - - &Tools - - - - - - &Actions - - - - - - Main Toolbar - - - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - - - - - - blockContact - - - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - - - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - - - - - - Incoming Chat - - - - - - ChatWidget - - - Form - - - - - - ConferenceCallWidget - - - Cancel - - - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - - - - - - ... - - - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - - - - - - Cancel - - - - - - ContactGroupPopupMenu - - - Remove Contact Group - - - - - - Rename Contact Group - - - - - - Delete group - - - - - - Do you really want to delete this group? - - - - - - &Yes - - - - - - &No - - - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - - - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - - - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - - - - - - Form - - - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Login: - - - - Password: - Šifra: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - - - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Login: - - - - Password: - Šifra: - - - - ICQ Settings - AIM/ICQ Podešavanja - - - - Forgot your ICQ password? - Zaboravili ste Vašu šifru za AIM? - - - - Get a new ICQ Account - Napravite novi AIM nalog - - - - IMAccountManager - - - Close - Zatvori - - - - Login - - - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - - - - - - Save - - - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - Napravite novi AIM nalog - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - - - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Login: - - - - Password: - Šifra: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Šifra: - - - - Need help? - - - - - - Cancel - - - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - - - - - - &Connect - - - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Login: - - - - Password: - Šifra: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Zatvori - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Transfer fajla - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - &Prihvatam - - - - Status - - - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - - - - - - Save - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - AIM/ICQ Podešavanja - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - - - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - - - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - - - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - - - - - - &No - - - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - - - - - - &No - - - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - - - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - - - - - - &No - - - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - - - - - - Remove - - - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - - - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - - - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Napravite novi AIM nalog - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - - - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - &Poništi - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - - - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Poništi - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Poništi - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - - - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - - - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - - - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - - - - - - UserFrame - - - Form - - - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - - - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - - - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - - - - - - Save - - - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Prihvatam - - - - &Hidden - - - - - - &Tools - - - - - - &Help - - - - - - &Actions - - - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - O - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - Transfer fajla - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - - - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Login: - - - - Password: - Šifra: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - Zaboravili ste Vašu šifru za AIM? - - - - Get a new Yahoo! Account - Napravite novi AIM nalog - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sv.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sv.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sv.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_sv.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4765 +0,0 @@ - - - - - AIMSettings - - - Login: - Inloggningsnamn: - - - - Forgot your AIM password? - Glömt ditt AIM-lösenord? - - - - Get a new AIM Account - Skaffa ett nytt AIM-konto - - - - Password: - Lösenord: - - - - AIM Settings - Inställningar för AIM - - - - AboutWindow - - - About - Om - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Upphovsmän - - - - Close - Stäng - - - - 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. - Detta program är fri programvara. Du kan distribuera det -och/eller modifiera det under villkoren i GNU General Public -License, publicerad av Free Software Foundation, antingen -version 2 eller (om du så vill) någon senare version. - - - - @product@ - About - @product@ - Om - - - - @product@, a voice over Internet phone - @product@, en klient för internettelefoni - - - - AcceptDialog - - - File Transfer - Filöverföring - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Acceptera - - - - &Cancel - &Avbryt - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Kontakt: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filnamn: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Inkommande fil</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - R&edigera min profil - - - - AddAccount - - - Configure your account: - Konfigurera ditt konto: - - - - &Next - &Nästa - - - - Need help? - Behöver du hjälp? - - - - You don't have any account ? Click here - Har du inte ett konto? Klicka här - - - - &Back - &Tillbaka - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Inloggning - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - <span style="font-size:16pt;">Konfigurera ditt VoIP-konto</span><br><br><span>Berätta för oss om ditt konto tillhandahålls<br/>av @company@ eller av någon annan tjänst</span> - - - - @company@ account - @company@-konto - - - - Generic SIP account - Allmänt SIP-konto - - - - AddIMContact - - - Cancel - Avbryt - - - - Contact Type (protocol): - Kontakttyp (protokoll): - - - - Contact ID: - Kontakt-id: - - - - Account: - Konto: - - - - Enable - Aktivera - - - - Login - Logga in - - - - Add - Lägg till - - - - @product@ - Add a Contact Account - @product@ - Lägg till ett kontaktkonto - - - - AddSIPAccount - - - Password: - Lösenord: - - - - Need help? - Behöver du hjälp? - - - - &Back - &Tillbaka - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Inloggning - - - - &Connect - &Anslut - - - - Activate presence and chat (SIP/SIMPLE) - Aktivera närvaro och chatt (SIP/SIMPLE) - - - - Displayname: - Visningsnamn: - - - - login / username: - inloggningsnamn / användarnamn: - - - - Account name: - Kontonamn: - - - - Proxy: - Proxyserver: - - - - : - : - - - - Server: - Server: - - - - SIP Domain / Realm: - SIP-domän: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">Konfigurera din SIP-profil</span><br><br><span>Fyll i information så<br/>din programtelefon kan ansluta till ditt<br/>SIP-konto</span> - - - - Advanced - Avancerat - - - - AddWengoAccount - - - Password: - Lösenord: - - - - Need help? - Behöver du hjälp? - - - - &Back - &Tillbaka - - - - Cancel - Avbryt - - - - @product@ - Login - @product@ - Inloggning - - - - &Connect - &Anslut - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Logga in</span><br><br><span>Ange din e-postadress och<br>lösenord</span> - - - - Email Address: - E-postadress: - - - - Click here if you don't have a @company@ account - Klicka här om du inte har ett @company@-konto - - - - Forgot your @company@ password? - Glömt ditt @company@-lösenord? - - - - AdvancedConfigWindow - - - Close - Stäng - - - - Preference Name - Inställningsnamn - - - - Type - Typ - - - - Value - Värde - - - - Default Value - Standardvärde - - - - Save - Spara - - - - Status - Status - - - - @product@ - Advanced Configuration - @product@ - Avancerad konfiguration - - - - AdvancedSettings - - - Add - Lägg till - - - - Advanced Settings - Avancerade inställningar - - - - Advanced Configuration Window - Avancerad konfiguration - - - - Automatically answer incoming calls from - Svara automatiskt på inkommande samtal från - - - - Remove - Ta bort - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Varning, den här delen är endast för erfarna användare.<br>Eventuella misstag kan skada programvaran. - - - - AppearanceSettings - - - Toolbar - Verktygsrad - - - - &Icons && Text - &Ikoner och text - - - - Icons &Only - Endast i&koner - - - - &Hidden - &Dold - - - - Chat Theme - Chattema - - - - Form - Formulär - - - - AudioSettings - - - Reset - Nollställ - - - - Audio Codecs - Ljudkodekar - - - - &Input device: - &Ingångsenhet: - - - - &Output device: - &Utgångsenhet: - - - - &Ringing device: - &Ringenhet: - - - - &Make a test call - Ri&ng ett testsamtal - - - - - Test - Testa - - - - &Advanced >> - &Avancerat >> - - - - &Half Duplex - &Halv duplex - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Formulär - - - - AvatarWidget - - - Form - Formulär - - - - BrowserSoftUpdateWindow - - - Close - Stäng - - - - @product@ - Update available - @product@ - Uppdatering finns tillgänglig - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Tredje: - - - - 1st: - Första: - - - - 2nd: - Andra: - - - - - - (+ country code) phone number - (+landskod) telefonnummer - - - - Forward all unanswered calls to message box - Vidarekoppla alla obesvarade samtal till röstbrevlåda - - - - Disable call forwarding - Inaktivera vidarekoppling - - - - Forward all unanswered calls to following phone numbers: - Vidarekoppla alla obesvarade samtal till följande telefonnummer: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Till exempel +3314500XXXX (+33 är landskoden och 14500XXXX är telefonnumret) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - Vidarekoppling av samtal är aktiv om du inte är ansluten till @company@, när din linje är upptagen eller 20 sekunder efter att du inte svarade på ett samtal. Du kan konfigurera upp till tre vidarekopplingar till fasttelefoner, mobiltelefoner eller röstmeddelande (om möjligt) - - - - CallToaster - - - Incoming Call - Inkommande samtal - - - - Message - Meddelande - - - - ChatLogViewer - - - Chat History - Chatthistorik - - - - &Contact - &Kontakt - - - - &Tools - &Verktyg - - - - &Help - &Hjälp - - - - &Actions - &Åtgärder - - - - Main Toolbar - Huvudverktygsrad - - - - - - Call Contact - Ring kontakt - - - - - - Send a File - Skicka en fil - - - - createChatConf - skapaChattKonf - - - - - - Show Contact Info - Visa kontaktinfo - - - - blockContact - blockeraKontakt - - - - &Save History As... - &Spara historik som... - - - - actionRestartChat - actionRestartChat - - - - @company@ - @company@ - - - - ChatMainWindow - - - &Contact - &Kontakt - - - - &Tools - &Verktyg - - - - &Actions - &Åtgärder - - - - Main Toolbar - Huvudverktygsrad - - - - - - Call Contact - Ring kontakt - - - - - - Send a File - Skicka en fil - - - - - - Show Contact Info - Visa kontaktinfo - - - - blockContact - blockeraKontakt - - - - &Save History As... - &Spara historik som... - - - - @company@ - @company@ - - - - MainWindow - Huvudfönster - - - - &Edit - R&edigera - - - - Cu&t - Klipp &ut - - - - Ctrl+X - Ctrl+X - - - - &Copy - &Kopiera - - - - Ctrl+C - Ctrl+C - - - - &Paste - Klistra &in - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - Starta chattkonferens - - - - &Close - &Stäng - - - - Conference - Konferens - - - - ChatRoomInviteWidget - - - Chat room - Chattrum - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chattrum</span></p></body></html> - - - - (Conference participants) - (Konferensdeltagare) - - - - &Remove - &Ta bort - - - - &Start - &Starta - - - - Group Name - Gruppnamn - - - - &Add - &Lägg till - - - - ChatToaster - - - Message - Meddelande - - - - Incoming Chat - Inkommande chatt - - - - ChatWidget - - - Form - Formulär - - - - ConferenceCallWidget - - - Cancel - Avbryt - - - - Start - Starta - - - - Phone number 2: - Telefonnummer 2: - - - - Phone number 1: - Telefonnummer 1: - - - - ... - ... - - - - @product@ - Create a Conference - @product@ - Skapa en konferens - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferens</span><br /><br />Ange två telefonnummer </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@-kontakt-ID för att</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">skapa en trevägskonferens.</p> - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - <span style=" font-size:18pt;">Konferens</span><br /><br />Ange två telefonnummer </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">eller @company@-kontakt-ID för att</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">skapa en trevägskonferens.</p> - - - - &Add >> - &Lägg till >> - - - - << &Remove - << &Ta bort - - - - Available Contacts - Tillgängliga kontakter - - - - &Start - &Starta - - - - Cancel - Avbryt - - - - ContactGroupPopupMenu - - - Remove Contact Group - Ta bort kontaktgrupp - - - - Rename Contact Group - Byt namn på kontaktgrupp - - - - Delete group - Ta bort grupp - - - - Do you really want to delete this group? - Vill du verkligen ta bort denna grupp? - - - - &Yes - &Ja - - - - &No - &Nej - - - - ContactList - - - Contact List - Kontaktlista - - - - ContactWidget - - - No mobile phone number set - Inget mobiltelefonnummer har ställts in - - - - No landline phone number set - Inget fasttelefonnummer har ställts in - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att redigera den här kontakten</p></body></html> - - - - CrashReport - - - Cancel - Avbryt - - - - Program Failure - Programfel - - - - Send - Skicka - - - - Optional Information - Valfri information - - - - Your Mail: - Din e-postadress: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Inte tillgänglig - - - - Click here to change your call forward settings - Klicka här för att ändra dina vidarekopplingsinställningar - - - - Call forward mode: - Läge för vidarekoppling: - - - - Purchase call out credits - Fyll på saldo för att ringa ut - - - - Call Forward Method - Metod för vidarekoppling - - - - Call Voice Mail - Ring upp röstbrevlåda - - - - Click here to buy @company@'s credits - Klicka här för att fylla på @company@-saldot - - - - DesktopService - - - Root Folder - Rotmapp - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - Klicka på de olika färgobjekten för att skicka ljud till den du pratar med. - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Klicka här för att ringa upp din röstbrevlåda - - - - New Voice Mail: - Nytt röstmeddelande: - - - - Click here to see missed call(s) - Klicka här för att se dina missade samtal - - - - Missed Call(s): - Missade samtal: - - - - FileTransferDialog - - - ... - ... - - - - Download - Hämta - - - - Upload - Skicka upp - - - - Click here to change your download folder - Klicka här för att ändra din hämtningsmapp - - - - Download folder: - Mapp för hämtningar: - - - - Clean all items in the list - Töm alla objekt i listan - - - - &Clean - &Töm - - - - @product@ - File Transfer Manager - @product@ - Hantera filöverföringar - - - - FileTransferItem - - - Cancel - Avbryt - - - - Form - Formulär - - - - Pause - Paus - - - - <i>From:</i> - <i>Från:</i> - - - - GeneralSettings - - - When I double-click on a contact - När jag dubbelklickar på en kontakt - - - - Call cell phone or land line if contact not online - Ring mobiltelefon eller hemtelefon om kontakten inte är ansluten - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Inaktivitetsstatus - - - - minutes - minuter - - - - Show me as "Away" when I am inactive for: - Visa mig som "Frånvarande" när jag är inaktiv i: - - - - When I start my computer - När jag startar min dator - - - - Automatically start @product@ - Starta @product@ automatiskt - - - - GoogleTalkSettings - - - Login: - Inloggningsnamn: - - - - Password: - Lösenord: - - - - GoogleTalk Settings - Inställningar för GoogleTalk - - - - Forgot your GoogleTalk password? - Glömt ditt GoogleTalk-lösenord? - - - - Get a new GoogleTalk Account - Skaffa ett nytt GoogleTalk-konto - - - - HttpProxyLoginWindow - - - Cancel - Avbryt - - - - HTTP Proxy Address: - Adress för HTTP-proxy: - - - - HTTP Proxy Port Number: - Portnummer för HTTP-proxy: - - - - HTTP Proxy Login: - Inloggningsnamn för HTTP-proxy: - - - - HTTP Proxy Password: - Lösenord för HTTP-proxy: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Autentisering för HTTP-proxy</span><br><br><span>Din lokala HTTP-proxy använder autentisering<br>Ange ditt inloggningsnamn och lösenord</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - @product@ - Lokal HTTP-proxy - - - - ICQSettings - - - Login: - Inloggningsnamn: - - - - Password: - Lösenord: - - - - ICQ Settings - Inställningar för ICQ - - - - Forgot your ICQ password? - Glömt ditt ICQ-lösenord? - - - - Get a new ICQ Account - Skaffa ett nytt ICQ-konto - - - - IMAccountManager - - - Close - Stäng - - - - Login - Logga in - - - - Add - Lägg till - - - - Delete - Ta bort - - - - Modify - Ändra - - - - Protocol - Protokoll - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - @product@ - Mina snabbmeddelandekonton (MSN, Jabber...) - - - - IMAccountTemplate - - - Cancel - Avbryt - - - - Save - Spara - - - - IM Account Settings - Inställningar för IM-konto - - - - IMContactManager - - - Add - Lägg till - - - - Delete - Ta bort - - - - Contact Type (protocol) - Kontakttyp (protokoll) - - - - Click on the add button below to add a new ID - Klicka på Lägg till-knappen nedan för att lägga till ett nytt id - - - - Contact ID - Kontakt-id - - - - IMProfileWidget - - - - Enter your nickname here - Ange ditt smeknamn här - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Lägg till ett snabbmeddelandekonto (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Lägg till ett IM-konto - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att ändra din avatar</p></body></html> - - - - ImageSelector - - - Cancel - Avbryt - - - - OK - OK - - - - Go Up - Gå uppåt - - - - Refresh - Uppdatera - - - - JabberSettings - - - Login: - Inloggningsnamn: - - - - Password: - Lösenord: - - - - Jabber Settings - Inställningar för Jabber - - - - Connect Server: - Anslutningsserver: - - - - <u>Advanced Options</u> - <u>Avancerade alternativ</u> - - - - Require TLS - Kräv TLS - - - - Port: - Port: - - - - Use TLS if available - Använd TLS om tillgängligt - - - - Allow plaintext authentication over unencrypted streams - Tillåt autentisering i klartext över okrypterade strömmar - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Tvinga gammal (port 5223) SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Ditt språk finns inte här. Du vet att du kan göra din egna översättning på Launchpad? - - - - More information here. - Mer information finns här. - - - - LogAccount - - - Password: - Lösenord: - - - - Need help? - Behöver du hjälp? - - - - Cancel - Avbryt - - - - Delete - Ta bort - - - - @product@ - Login - @product@ - Inloggning - - - - Account: - Konto: - - - - &Connect - &Anslut - - - - Forgot your @company@ password? - Glömt ditt @company@-lösenord? - - - - &Modify - Ä&ndra - - - - Configure a &New Profile - Konfigurera en &ny profil - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - <span style="font-size:16pt;">Logga in</span><br><br><span>Välj en tidigare använd profil<br/> eller fyll i information för att ansluta till ett<br/> @company@-konto</span> - - - - MSNSettings - - - Login: - Inloggningsnamn: - - - - Password: - Lösenord: - - - - MSN Settings - Inställningar för MSN - - - - Forgot your MSN password? - Glömt ditt MSN-lösenord? - - - - Get a new MSN Account - Skaffa ett nytt MSN-konto - - - - Use HTTP method - Använd HTTP-metod - - - - MainWindow - - - MainWindow - Huvudfönster - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Acceptera samtal - - - - Send Chat Message - Skicka chattmeddelande - - - - Make Call - Ring samtal - - - - Hang Up - Lägg på - - - - ManageBlockedUsersSettings - - - Close - Stäng - - - - Unblock User - Avblockera användare - - - - Manage blocked users - Hantera blockerade användare - - - - @product@ - Manage blocked users - @product@ - Hantera blockerade användare - - - - NoWengoAlert - - - @product@ - SMS - @product@ - SMS - - - - I have a @company@ account - Jag har ett @company@-konto - - - - Create a @company@ account - Skapa ett @company@-konto - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - För att skicka SMS behöver du vara inloggad med ett<br>@company@-konto och ha pengar på ditt @company@-konto. - - - - NotificationSettings - - - Select the events for which a sound should be played. - Välj de händelser för vilka ett ljud ska spelas upp. - - - - NotificationSettingsItem - - - Sound file - Ljudfil - - - - Find a sound file - Hitta en ljudfil - - - - Play sound file - Spela upp ljudfil - - - - Play - Spela upp - - - - NotifyDialog - - - File Transfer - Filöverföring - - - - &Ok - &Ok - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Uppgradera</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Acceptera - - - - Status - Status - - - - 00:00:00 - 00.00.00 - - - - Nickname - Smeknamn - - - - &Reject - &Neka - - - - Dialpad - Knappsats - - - - Audio Smileys - Ljudsmilisar - - - - - Communication is encrypted - Kommunikationen är krypterad - - - - PrivacySettings - - - Manage blocked users - Hantera blockerade användare - - - - Privacy Rules - Integritetsregler - - - - Always sign in as "Invisible" (appear offline to all users) - Logga alltid in som "Osynlig" (ser ut att vara frånkopplad) - - - - Allow chats from - Tillåt chattar från - - - - - Anyone - Vem som helst - - - - - Only people from my contact list - Endast personer i min kontaktlista - - - - Allow calls from - Tillåt samtal från - - - - When I sign into @company@ - När jag loggar in på @company@ - - - - ProfileDetails - - - Cancel - Avbryt - - - - Save - Spara - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Klicka för att ändra din avatar</p></body></html> - - - - General - Allmänt - - - - Network IDs (MSN, Jabber...) - Nätverks-id (MSN, Jabber...) - - - - Advanced >> - Avancerat >> - - - - Fill in all your network Id to stay connected with your contacts - Fyll i alla dina nätverks-id för att hålla kontakten med dina kontakter - - - - Contact - Kontakt - - - - Group: - Grupp: - - - - Last Name: - Efternamn: - - - - First Name: - Förnamn: - - - - Details - Detaljer - - - - Web/blog: - Webb/blogg: - - - - Country: - Land: - - - - State: - Län/Region: - - - - City: - Stad: - - - - Gender: - Kön: - - - - Birth Date: - Födelsedag: - - - - Email: - E-post: - - - - Notes - Noteringar - - - - Phone Numbers - Telefonnummer - - - - Home phone - Hemtelefon - - - - Mobile phone - Mobiltelefon - - - - dd MMMM yyyy - yyyy MMMM dd - - - - Unknown - Okänd - - - - Male - Man - - - - Female - Kvinna - - - - QObject - - - @product@ - @product@ - - - - QtAccountSettings - - - Accounts - Konton - - - - Accounts Settings - Kontoinställningar - - - - QtAddAccount - - - Configure your voip account - Konfigurera ditt voip-konto - - - - Please tell us if your account is provided<br/>by @company@ or by another service - Berätta för oss om ditt konto tillhandahålls<br/>av @company@ eller av en annan tjänst - - - - QtAddAccountUtils - - - Test - Testa - - - - Audio Test Call - Ljudtestsamtal - - - - Video Test Call - Videotestsamtal - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Fyll i information så att<br/>din programtelefon kan ansluta till<br/>ditt SIP-konto - - - - Configure your SIP profile - Konfigurera din SIP-profil - - - - QtAddWengoAccount - - - Login - Logga in - - - - Please enter an email address. - Ange en e-postadress. - - - - Please enter your email address<br/>and your password - Ange din e-postadress<br/>och ditt lösenord - - - - @product@ - Connexion - @product@ - Connexion - - - - QtAdvancedIMContactManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - Are sure you want to delete this IM contact? - - Är du säker på att du vill ta bort denna IM-kontakt? - - - - - &Delete - &Ta bort - - - - QtAdvancedSettings - - - Advanced - Avancerat - - - - Advanced Settings - Avancerade inställningar - - - - QtAppearanceSettings - - - - Me - Jag - - - - Hello - Hej - - - - How are you? - Hur mår du? - - - - - - Other - Övrigt - - - - I am fine - Jag mår bra - - - - Have to go - Måste tyvärr gå - - - - Bye - Hej då - - - - Appearance - Utseende - - - - Appearance Settings - Inställningar för utseende - - - - QtAudioSettings - - - - Advanced - Avancerat - - - - Audio - Ljud - - - - Audio Settings - Ljudinställningar - - - - QtCallBar - - - +(country code) number or nickname - +(landskod) nummer eller smeknamn - - - - QtCallForwardSettings - - - - Call Forward - Vidarekoppling - - - - Call Forward Settings - Inställningar för vidarekoppling - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Spara som - - - - QtChatLogViewer - - - Edit Contact - Redigera kontakt - - - - QtChatTabWidget - - - Close chat - Stäng chatt - - - - QtChatWidget - - - %1 is connected. - %1 är ansluten. - - - - %1 is disconnected. - %1 är frånkopplad. - - - - send - skicka - - - - Your file can not be sent: your contact must be connected on the @company@ network. - Din fil kan inte skickas: din kontakt måste vara ansluten till @company@-nätverket. - - - - Your contact wishes to send a file with @company@. - Din kontakt önskar att skicka en fil med @company@. - - - - Go to %1 to install it - Gå till %1 för att installera det - - - - %1 has joined the chat - %1 har kommit in i chatten - - - - %1 has left the chat - %1 har lämnat chatten - - - - QtChatWindow - - - Edit Contact - Redigera kontakt - - - - @product@ Chat - @product@ Chatt - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - Ring SIP - - - - Call land line - Ring fasttelefon - - - - Call Mobile - Ring mobiltelefon - - - - Call @company@ - Ring till @company@ - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>Du kan nu informera din första part att han/hon kommer att bli med i ett konferenssamtal.</b><br><br>När det är gjort kan du klicka på knappen nedan. Din första part kommer att sättas på vänt under tiden din andra part kommer att ringas upp.<br> - - - - Hold first interlocutor and call second one - Sätt första parten på vänt och ring upp den andra - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>Du kan nu informera din andra part att han/hon kommer att vara en part av ett konferenssamtal.</b><br><br>När det är gjort kan du klicka på knappen nedan för att påbörja konferensen. - - - - Start Conference - Starta konferens - - - - - @product@ - Proceed Conference - @product@ - Fortsätt till konferens - - - - QtContactList - - - &Yes - &Ja - - - - &No - &Nej - - - - Merge %1 with %2? - Sammanfoga %1 med %2? - - - - @product@ - Merge Contacts - @product@ - Sammanfoga kontakter - - - - QtContactManager - - - &Yes - &Ja - - - - &No - &Nej - - - - Home phone - Hemtelefon - - - - Mobile phone - Mobiltelefon - - - - @product@ - @product@ - - - - Edit Contact - Redigera kontakt - - - - Do you really want to delete this contact? - Vill du verkligen ta bort denna kontakt? - - - - Start chat - Starta chatt - - - - - Delete contact - Ta bort kontakt - - - - Call - Ring - - - - Free call - - - - - Work phone - Arbetstelefon - - - - Send SMS - Skicka SMS - - - - Edit contact - Redigera kontakt - - - - Block contact - Blockera kontakt - - - - Invite to conference - Bjud in till konferens - - - - Go to website - Gå till webbplats - - - - Send file - Skicka fil - - - - Forward to mobile phone - Vidarekoppla till mobiltelefon - - - - QtContactWidget - - - No mobile phone number set - Inget mobiltelefonnummer har ställts in - - - - No landline phone number set - Inget fasttelefonnummer har ställts in - - - - - Click here to call - Klicka här för att ringa - - - - - Click here to set a phone number - Klicka här för att ställa in ett telefonnummer - - - - Click here to edit the contact - Klicka här för att redigera kontakten - - - - Click here to send a SMS - Klicka här för att skicka ett SMS - - - - Click here to start a chat - Klicka här för att starta en chatt - - - - Click here to start a free call - Klicka här för att ringa ett gratissamtal - - - - Click here to send a file - Klicka här för att skicka en fil - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Vill du ringa upp din röstbrevlåda? - - - - @product@ - Voice Mail - @product@ - Röstbrevlåda - - - - QtFileTransfer - - - &Yes - &Ja - - - - &No - &Nej - - - - Choose a directory - Välj en katalog - - - - Overwrite File? - Skriv över fil? - - - - A file called %1 already exists.Do you want to overwrite it? - En fil med namnet %1 finns redan. Vill du skriva över den? - - - - - File size error - Filstorleksfel - - - - %1 exceeds the maximum authorized size. - %1 överstiger maximal behörig storlek. - - - - %1 has size 0. - %1 har en storlek på 0. - - - - %1 is a directory. - %1 är en katalog. - - - - You can not send a directory. - Du kan inte skicka en katalog. - - - - %1 is a shortcut. - %1 är en genväg. - - - - You can not send a shortcut. - Du kan inte skicka en genväg. - - - - All Files (*.* *) - Alla filer (*.* *) - - - - Please upgrade<br> your @product@ - Uppgradera<br> din @product@ - - - - Tell your contact<br> to upgrade<br> his @product@ - Tala om för din kontakt<br> att uppgradera<br> sin @product@ - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - Filen kan inte tas emot: du måste uppgradera ditt @product@ för att kunna ta emot den. - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - försöker skicka dig en fil men kontaktens @product@ måste uppgraderas för att kunna ta emot den. Informera kontakten om att uppgradera till senaste versionen. - - - - QtFileTransferItem - - - - - Cancel - Avbryt - - - - Remove - Ta bort - - - - - Pause - Paus - - - - Starting - Startar - - - - From: - Från: - - - - To: - Till: - - - - Open - Öppna - - - - Resume - Återuppta - - - - Waiting for anwser... - Väntar på svar... - - - - Done - Klar - - - - Failed - Misslyckades - - - - Paused - Pausad - - - - Paused by peer - Pausad av motpart - - - - Cancelled - Avbruten - - - - Cancelled by peer - Avbröts av motpart - - - - - Downloading... - Hämtar... - - - - Uploading... - Skickar upp... - - - - Waiting for peer... - Väntar på part... - - - - An error occured during the file transfer - Ett fel inträffade under filöverföringen - - - - This may be caused by : - Det här kan ha orsakats av : - - - - Your @product@ is not up to date. Please download the latest version on - Din @product@ är inte uppdaterad. Hämta den senaste versionen på - - - - The @company@ network may be temporarily unavailable. Please try later. - @company@-nätverket kan vara temporärt otillgängligt. Försök igen senare. - - - - QtGeneralSettings - - - General - Allmänt - - - - General Settings - Allmänna inställningar - - - - QtHistory - - - Incoming call - Inkommande samtal - - - - Outgoing call - Utgående samtal - - - - Missed call - Missade samtal - - - - Rejected call - Vägrade samtal - - - - Outgoing SMS - Utgående SMS - - - - Do you want to call %1? - Vill du ringa till %1? - - - - Chat session - Chattsession - - - - @product@ - Call History - @product@ - Samtalshistorik - - - - Type - Typ - - - - Name/ID - Namn/ID - - - - Date - Datum - - - - Duration - Längd - - - - QtHistoryWidget - - - Erase this entry - Radera denna post - - - - Open in SMS window - Öppna i SMS-fönster - - - - Call this peer - Ring den här parten - - - - Show chat log - Visa chattlogg - - - - QtIMAccountManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - &Delete - &Ta bort - - - - Are sure you want to delete this account? - - Är du säker på att du vill ta bort detta konto? - - - - - QtIMAccountMonitor - - - - - Disconnected - Frånkopplad - - - - Error: %1 - Fel: %1 - - - - Online - Ansluten - - - - Invisible - Osynlig - - - - Away - Frånvarande - - - - Do not disturb - Stör inte - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - QtIMAccountPlugin - - - @product@ - @product@ - - - - Please enter a login - Ange ett inloggningsnamn - - - - QtIMAccountPresenceMenuManager - - - Cancel - Avbryt - - - - @product@ - @product@ - - - - &Delete - &Ta bort - - - - Online - Ansluten - - - - Invisible - Osynlig - - - - Away - Frånvarande - - - - Do Not Disturb - Stör inte - - - - Disconnect - Koppla från - - - - Delete Account - Ta bort konto - - - - Are sure you want to delete the account <b>%1</b>? - Är du säker på att du vill ta bort kontot <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - Redigera min profil - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - %1 (%2) -%3 - - - - QtLanguagesSettings - - - Language - Språk - - - - Language Settings - Språkinställningar - - - - QtLogAccount - - - Invalid account - Ogiltigt konto - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - Välj en tidigare använd profil<br/> eller fyll i information för att ansluta till ett<br/> @company@-konto - - - - QtLoginDialog - - - @product@ - Connexion - @product@ - Connexion - - - - QtNotificationSettings - - - Incoming call (ringtone) - Inkommande samtal (rington) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Samtal bröts (lägg på luren-ton) - - - - Incoming chat - Inkommande chatt - - - - IM account connected - IM-konto ansluten - - - - IM account disconnected - IM-konto kopplade från - - - - Contact online - Kontakt ansluter - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Välj en ljudfil - - - - Sounds - Ljud - - - - QtPhoneCall - - - Status - Status - - - - Incoming Call - Inkommande samtal - - - - Resume - Återuppta - - - - Hang-up - Lägg på - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Fel - - - - Talking - Tal - - - - Dialing - Ringer - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Ringer - - - - Redirected - Vidarekopplad - - - - Initialization... - Initierar... - - - - Closed - Stängd - - - - - Hold - Parkera - - - - Add contact - Lägg till kontakt - - - - Ca&ncel - Av&bryt - - - - Talking - Conference - Tal - konferens - - - - Add a Contact - Lägg till en kontakt - - - - QtPresenceMenuManager - - - Online - Ansluten - - - - Invisible - Osynlig - - - - Away - Frånvarande - - - - Do Not Disturb - Stör inte - - - - Log off - Logga av - - - - QtPrivacySettings - - - Privacy - Konfidentialitet - - - - Privacy Settings - Integritetsinställningar - - - - QtProfileBar - - - Click here to change your status - Klicka här för att ändra din status - - - - - active - aktiv - - - - voicemail - röstbrevlåda - - - - inactive - inaktiv - - - - unauthorized - oauktoriserad - - - - Set global presence to: - Ställ in global närvaro till: - - - - Voice mail - Röstbrevlåda - - - - QtProfileDetails - - - Advanced >> - Avancerat >> - - - - - @product@ - @product@ - - - - A contact must have a group, please set a group. - En kontakt måste ha en grupp, sätt upp en grupp. - - - - << Simple - << Enkel - - - - Select your avatar - Välj din avatar - - - - @product@ - No Group Selected - @product@ - Ingen grupp har valts - - - - @company@ Avatars - @company@-avatarer - - - - QtRenameGroup - - - Bad group name - Felaktigt gruppnamn - - - - Group name cannot be empty - Gruppnamnet får inte vara tomt - - - - QtSecuritySettings - - - Security - Säkerhet - - - - Security Settings - Säkerhetsinställningar - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Fyll i ett telefonnummer. - - - - Do you want to continue? - Vill du fortsätta? - - - - Your SMS has not been sent - Ditt SMS har inte skickats - - - - Your SMS has been sent - Ditt SMS har skickats - - - - Your message is too long. -This will send - Ditt meddelande är för långt. -Det här kommer att skicka - - - - SMS. - - SMS. - - - - - You can not send an empty message. - Du kan inte skicka ett tomt meddelande. - - - - - - - @company@ SMS service - @company@ SMS-tjänst - - - - QtSoftUpdate - - - @product@ - Update failed - @product@ - Uppdatering misslyckades - - - - @product@ update failed to start: try to update @product@ manually - Uppdatering av @product@ misslyckades att starta: prova att uppdatera @product@ manuellt - - - - QtStatusBar - - - - Not connected - Inte ansluten - - - - Register done - Registrering färdig - - - - Unregister done - Avregistrering färdig - - - - Connecting - Ansluter - - - - Output volume is muted - Utgångsvolymen är tystad - - - - Output volume is 0 - Utgångsvolymen är 0 - - - - Click to adjust output volume - Klicka för att justera utgångsvolym - - - - Input volume is muted - Ingångsvolymen är tystad - - - - Input volume is 0 - Ingångsvolymen är 0 - - - - Click to adjust input volume - Klicka för att justera ingångsvolym - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Status - - - - - - - - - - - - - @product@ - @product@ - - - - Call SIP - Ring SIP - - - - Call land line - Ring fasttelefon - - - - Call Mobile - Ring mobiltelefon - - - - Call @company@ - Ring till @company@ - - - - Call - Ring - - - - Send SMS - Skicka SMS - - - - Online - Ansluten - - - - Invisible - Osynlig - - - - Away - Frånvarande - - - - Do Not Disturb - Stör inte - - - - Internet Connection Error - Internetanslutningsfel - - - - Offline - Frånkopplad - - - - Connecting... - Ansluter... - - - - Send a SMS - Skicka ett SMS - - - - Start a chat - Starta en chatt - - - - Place Call - Ring samtal - - - - Send File - Skicka fil - - - - Multiple Status - Fler status - - - - Unknown Status - Okänd status - - - - Quit @product@ - Avsluta @product@ - - - - QtToolBar - - - &Cancel - &Avbryt - - - - @product@ - Proceed Conference - @product@ - Fortsätt till konferens - - - - Edit My Profile - Redigera min profil - - - - Add a Contact - Lägg till en kontakt - - - - Hide Unavailable Contacts - Dölj otillgängliga kontakter - - - - Show Unavailable Contacts - Visa otillgängliga kontakter - - - - Hide Groups - Dölj grupper - - - - Show Groups - Visa grupper - - - - You have unfinished call(s). - Du har ofärdiga samtal. - - - - Are you sure you want to log off? - Är du säker på att du vill logga av? - - - - &Log Off - &Logga av - - - - Disable &Video Calls - Inaktivera &videosamtal - - - - Enable &Video Calls - Aktivera &videosamtal - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Konferensen kan inte påbörjas när det finns aktiva samtal.</b><br><br>Avsluta alla samtal och prova igen. - - - - @product@ - Warning - @product@ - Varning - - - - - Log &Off... - Logga a&v... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Kontaktlista - - - - QtUserProfile - - - Edit Contact - Redigera kontakt - - - - - &Authorize - &Auktorisera - - - - - &Block - &Blockera - - - - Network error. - Nätverksfel. - - - - - @product@ - Authorization Request - @product@ - Auktoriseringsbegäran - - - - QtUserProfileHandler - - - - @product@ - @product@ - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - Ett problem inträffade vid inläsning av din profil. -Den senaste säkerhetskopierade profilen har lästs -in: du kan ha förlorat de senast gjorda ändringarna - - - - Your profile could not be loaded. -Choose another profile or create a new one. - Din profil kunde inte läsas in. -Välj en annan profil eller skapa en ny. - - - - Wrong email/password entered - Felaktigt e-post/lösenord angavs - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - @product@ - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normal - - - - - Good - Bra - - - - - Very good - Mycket bra - - - - - Excellent - Otroligt bra - - - - Video Settings - Videoinställningar - - - - QtVoicemailSettings - - - Voicemail - Röstbrevlåda - - - - Voicemail Settings - Inställningar för röstbrevlåda - - - - QtWebDirectory - - - @product@ - Directory - @product@ - Katalog - - - - QtWengoConfigDialog - - - Advanced - Avancerat - - - - General - Allmänt - - - - Accounts - Konton - - - - Audio - Ljud - - - - Call Forward - Vidarekoppling - - - - Language - Språk - - - - Privacy - Konfidentialitet - - - - Video - Video - - - - Voicemail - Röstbrevlåda - - - - security - säkerhet - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Avbryt - - - - - - - Conference - Konferens - - - - Call - Ring - - - - Account - - - - - Add a Contact - Lägg till en kontakt - - - - You have unfinished call(s). - Du har ofärdiga samtal. - - - - @product@ - Warning - @product@ - Varning - - - - - Home - Hem - - - - Are you sure you want to exit the application? - Är du säker på att du vill avsluta programmet? - - - - &Exit - A&vsluta - - - - @product@ - Call Error - @product@ - Samtalsfel - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Avbryt - - - - OK - OK - - - - Enter the new group name: - Ange det nya gruppnamnet: - - - - @product@ - Rename Contact Group - @product@ - Byt namn på kontaktgrupp - - - - SecuritySettings - - - Form - Formulär - - - - Enable call encryption - Aktivera samtalskryptering - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - @product@ kan kryptera samtal med 128-bitars AES-kryptering och använda Diffie-Hellman för nyckelutbyte. - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Uppdatera din profil - - - - Yahoo! ID: - Yahoo!-id: - - - - MSN ID: - MSN-id: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk-id: - - - - exemple: username@server - exempel: användarnamn@server - - - - SIP ID: - SIP ID: - - - - ICQ ID: - ICQ-id: - - - - AIM ID: - AIM-id: - - - - @company@ ID: - @company@ ID: - - - - SmsWindow - - - Send - Skicka - - - - @product@ - SMS - @product@ - SMS - - - - Click here to add a phone number - Klicka här för att lägga till ett telefonnummer - - - - 0 /160 - 0 /160 - - - - Enter your signature here - Ange din signatur här - - - - Signature: - Signatur: - - - - Phone number(s): - Telefonnummer: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Ange telefonnumren här<br>De måste separeras med &, ; eller , - - - - SoftUpdateWindow - - - Cancel - Avbryt - - - - @product@ - Downloading update - @product@ - Hämtar uppdatering - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Formulär - - - - VideoSettings - - - Normal - Normal - - - - Good - Bra - - - - Very good - Mycket bra - - - - Excellent - Otroligt bra - - - - Enable video - Aktivera video - - - - Webcam Selection - Val av webbkamera - - - - Webcam device: - Webbkameraenhet: - - - - Webcam Preview - Förhandsvisning webbkamera - - - - Connection Type - Anslutningstyp - - - - Video quality - Videokvalitet - - - - Down (kbit/s) - Ner (kbit/s) - - - - Up (kbit/s) - Upp (kbit/s) - - - - 0 to 512 - 0 till 512 - - - - 0 to 128 - 0 till 128 - - - - 512 to 2048 - 512 till 2048 - - - - 128 to 256 - 128 till 256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - Videokvaliteten är beroende på bandbredden för din Internetanslutning - - - - Make a test video call - Gör ett testvideosamtal - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - @product@ - Video - - - - VoicemailSettings - - - Form - Formulär - - - - Phone number of your voicemail: - Telefonnummer till din röstbrevlåda: - - - - Please fill in here the information about your voicemail - Fyll i information om din röstbrevlåda - - - - WengoConfigDialog - - - Cancel - Avbryt - - - - Save - Spara - - - - Title - Titel - - - - @product@ - Configuration - @product@ - Konfiguration - - - - WengoPhoneWindow - - - &Accept - &Acceptera - - - - &Hidden - &Dold - - - - &Tools - &Verktyg - - - - &Help - &Hjälp - - - - &Actions - &Åtgärder - - - - @company@ - @company@ - - - - &Close - &Stäng - - - - Dialpad - Knappsats - - - - @product@ - @product@ - - - - Start Conference - Starta konferens - - - - Send SMS - Skicka SMS - - - - Contacts - Kontakter - - - - History - Historik - - - - Clear &History - Töm &historik - - - - ToolBar - Verktygsrad - - - - Show/Hide Unavailable &Contacts - Visa/Dölj otillgängliga &kontakter - - - - &Chat Sessions - &Chattsessioner - - - - &All - &Alla - - - - &HangUp - &Lägg på - - - - &Hold/Resume - &Parkera/Återuppta - - - - Show/Hide &Groups - Visa/Dölj &grupper - - - - &Outgoing Calls - &Utgående samtal - - - - &Incoming Calls - &Inkommande samtal - - - - &Missed Calls - &Missade samtal - - - - Enable/Disable &Video Calls - Aktivera/inaktivera &videosamtal - - - - Short Text &Messages (SMS) - Korta text&meddelanden (SMS) - - - - Rejected Calls - Vägrade samtal - - - - &Contacts - &Kontakter - - - - &About... - &Om... - - - - Add &Contact... - Lägg till &kontakt... - - - - &Configuration... - &Konfiguration... - - - - Send SMS... - Skicka SMS... - - - - View My &Profile... - Visa min &profil... - - - - - View My Profile - Visa min profil - - - - Start &Conference... - Starta &konferens... - - - - &Find Contact... - &Sök kontakt... - - - - Log &Off... - Logga a&v... - - - - - Log Off - Logga av - - - - Show &Chat Window - Visa &chattfönster - - - - - Show Chat Window - Visa chattfönster - - - - Show &File Transfer - Visa &filöverföring - - - - Add Contact - Lägg till kontakt - - - - View My @company@ Account... - Visa mitt @product@-konto... - - - - Ctrl+W - Ctrl+W - - - - @company@ &Forum... - @company@-&forum... - - - - @company@ &Wiki/FAQ... - @company@ &Wiki/Frågor och svar... - - - - Learn more about @company@ Services... - Lär dig mer om @company@ Services... - - - - Search - Sök - - - - Find @company@ Contacts - Sök efter @company@-kontakter - - - - &Quit - A&vsluta - - - - Ctrl+Q - Ctrl+Q - - - - &Text Under Icons - &Text under ikoner - - - - &Icons Only - Endast &ikoner - - - - Add - Lägg till - - - - SMS - SMS - - - - Conference - Konferens - - - - Wizard - - - Cancel - Avbryt - - - - Finish - Färdig - - - - Next > - Nästa > - - - - < Back - < Tillbaka - - - - Simple Wizard - Step %1 of %2 - Enkel guide - Steg %1 av %2 - - - - YahooSettings - - - Login: - Inloggningsnamn: - - - - Password: - Lösenord: - - - - Yahoo! Settings - Inställningar för Yahoo! - - - - Use Yahoo! Japan server - Använd Yahoo! Japan-server - - - - Forgot your Yahoo! password? - Glömt ditt Yahoo!-lösenord? - - - - Get a new Yahoo! Account - Skaffa ett nytt Yahoo!-konto - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_tr.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_tr.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_tr.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_tr.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4884 +0,0 @@ - - - - - AIMSettings - - - Login: - Giriş: - - - - Forgot your AIM password? - AIM parolanızı mı unuttunuz? - - - - Get a new AIM Account - Yeni bir AIM hesabı aç - - - - Password: - Parola: - - - - AIM Settings - AIM Ayarları - - - - AboutWindow - - - About - Hakkında - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Yazarlar - - - - Close - Kapat - - - - 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. - Bu program özgür bir yazılımdır; yeniden dağıtabilir ve/veya -Özgür Yazılım Vakfı (FSF) tarafından yayınlanan -GNU Genel Kamu Lisansı'nın ikinci ya da daha sonraki -bir sürümü doğrultusunda değiştirebilirsiniz. - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Dosya Transferi - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - Kabul et - - - - &Cancel - İptal - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Bağlantı: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Dosya adı: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Gelen dosya</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Kişisel bilgilerimi düzenle - - - - AddAccount - - - Configure your account: - Hesabınızı yapılandırın: - - - - &Next - & Sonraki - - - - Need help? - Yardıma ihtiyacınız var mı? - - - - You don't have any account ? Click here - Henüz bir hesabınız yok mu? Buraya tıklayın - - - - &Back - Geri - - - - Cancel - İptal - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - Genel SIP hesabı - - - - AddIMContact - - - Cancel - İptal - - - - Contact Type (protocol): - İletişim Tipi (protokol): - - - - Contact ID: - Bağlantı Kimliği: - - - - Account: - Hesap: - - - - Enable - Etkinleştir - - - - Login - Kullanıcı Adı: - - - - Add - Ekle - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Parola: - - - - Need help? - Yardıma ihtiyacınız var mı? - - - - &Back - Geri - - - - Cancel - İptal - - - - @product@ - Login - - - - - - &Connect - Bağlan - - - - Activate presence and chat (SIP/SIMPLE) - Bağlantı ve sohbet durumu (SIP/SIMPLE) bildirimini etkinleştir - - - - Displayname: - Ekran adı: - - - - login / username: - giriş / kullanıcıadı - - - - Account name: - Hesap adı: - - - - Proxy: - Vekil sunucu: - - - - : - : - - - - Server: - Sunucu: - - - - SIP Domain / Realm: - SIP Alan Adı: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">SIP profilinizi yapılandırın</span><br><br><span>Lütfen SIP hesabınıza<br/>bağlanmak için gerekli olan<br/>tüm bilgileri giriniz.</span> - - - - Advanced - Gelişmiş - - - - AddWengoAccount - - - Password: - Parola: - - - - Need help? - Yardıma ihtiyacınız var mı? - - - - &Back - Geri - - - - Cancel - İptal - - - - @product@ - Login - - - - - - &Connect - Bağlan - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Giriş</span><br><br><span>Lütfen e-posta adresi ve<br>parolanızı giriniz</span> - - - - Email Address: - E-posta Adresi: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Kapat - - - - Preference Name - Ayar Adı - - - - Type - Tür - - - - Value - Değer - - - - Default Value - Öntanımlı Değer - - - - Save - Kaydet - - - - Status - Durum - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Ekle - - - - Advanced Settings - Gelişmiş Ayarlar - - - - Advanced Configuration Window - Gelişmiş Yapılandırma Penceresi - - - - Automatically answer incoming calls from - Şu kişiden gelen çağrıları otomatik cevaplandır - - - - Remove - Kaldır - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Dikkat, bu bölüm deneyimli kullanıcılar içindir.<br> Yapılacak bir hata, yazılımın çalışmamasına neden olabilir. - - - - AppearanceSettings - - - Toolbar - Araç Çubuğu - - - - &Icons && Text - &Simgeler && Metin - - - - Icons &Only - Sadece Simgeler - - - - &Hidden - &Gizli - - - - Chat Theme - Sohbet Teması - - - - Form - Form - - - - AudioSettings - - - Reset - Sıfırla - - - - Audio Codecs - Ses Kodekleri - - - - &Input device: - &Girdi cihazı: - - - - &Output device: - &Çıktı cihazı: - - - - &Ringing device: - - - - - - &Make a test call - &Test çağrısı yap - - - - - Test - Test - - - - &Advanced >> - &Gelişmiş >> - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Form - - - - AvatarWidget - - - Form - Form - - - - BrowserSoftUpdateWindow - - - Close - Kapat - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - Üçüncü: - - - - 1st: - Birinci: - - - - 2nd: - İkinci: - - - - - - (+ country code) phone number - (+ ülke kodu) telefon numarası - - - - Forward all unanswered calls to message box - Cevapsız çağrıları mesaj kutusuna yönlendir - - - - Disable call forwarding - Çağrı yönlendirmeyi devre dışı bırak - - - - Forward all unanswered calls to following phone numbers: - Tüm cevaplandırılmamış çağrıları şu telefon numaralarına yönlendir: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Örneğin +3314500XXXX (+33 ülke kodu, 14500XXXX ise telefon numarası) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Gelen Çağrı - - - - Message - Mesaj - - - - ChatLogViewer - - - Chat History - Sohbet Geçmişi - - - - &Contact - Bağlantı - - - - &Tools - &Araçlar - - - - &Help - &Yardım - - - - &Actions - &Eylemler - - - - Main Toolbar - Ana Araç Çubuğu - - - - - - Call Contact - Bağlantıya Çağrı Yap - - - - - - Send a File - Dosya Gönder - - - - createChatConf - createChatConf - - - - - - Show Contact Info - Bağlantı Bilgilerini Göster - - - - blockContact - Bağlantıyı engelle - - - - &Save History As... - Geçmişi farklı kaydet... - - - - actionRestartChat - actionRestartChat - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - Bağlantı - - - - &Tools - &Araçlar - - - - &Actions - &Eylemler - - - - Main Toolbar - Ana Araç Çubuğu - - - - - - Call Contact - Bağlantıya Çağrı Yap - - - - - - Send a File - Dosya Gönder - - - - - - Show Contact Info - Bağlantı Bilgilerini Göster - - - - blockContact - Bağlantıyı engelle - - - - &Save History As... - Geçmişi farklı kaydet... - - - - @company@ - - - - - - MainWindow - Ana Pencere - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - Ctrl+C - - - - &Paste - Yapıştır - - - - Ctrl+V - Ctrl+V - - - - Start Chat Conference - - - - - - &Close - &Kapat - - - - Conference - Konferans - - - - ChatRoomInviteWidget - - - Chat room - Sohbet odası - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Sohbet odası</span></p></body></html> - - - - (Conference participants) - (Konferans katılımcıları) - - - - &Remove - Kaldır - - - - &Start - Başlat - - - - Group Name - Grup Adı - - - - &Add - Ekle - - - - ChatToaster - - - Message - Mesaj - - - - Incoming Chat - Gelen Sohbet - - - - ChatWidget - - - Form - Form - - - - ConferenceCallWidget - - - Cancel - İptal - - - - Start - Başlat - - - - Phone number 2: - Telefon numarası 2: - - - - Phone number 1: - Telefon numarası 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - Ekle >> - - - - << &Remove - << Kaldır - - - - Available Contacts - Erişilebilir Bağlantılar - - - - &Start - Başlat - - - - Cancel - İptal - - - - ContactGroupPopupMenu - - - Remove Contact Group - Bağlantı Grubunu Kaldır - - - - Rename Contact Group - Bağlantı Grubunu Yeniden İsimlendir - - - - Delete group - Grup Sil - - - - Do you really want to delete this group? - Gerçekten bu grubu silmek istiyor musunuz? - - - - &Yes - &Evet - - - - &No - &Hayır - - - - ContactList - - - Contact List - Bağlantı Listesi - - - - ContactWidget - - - No mobile phone number set - Henüz bir cep telefonu numarası girilmedi - - - - No landline phone number set - Henüz bir sabit telefon numarası girilmedi - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - İptal - - - - Program Failure - Program Hatası - - - - Send - Gönder - - - - Optional Information - Seçimlik Bilgiler - - - - Your Mail: - E-posta adresiniz: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Erişilebilir Değil - - - - Click here to change your call forward settings - Çağrı yönlendirme ayarlarını değiştirmek için buraya tıklayınız. - - - - Call forward mode: - Çağrı yönlendirme modu: - - - - Purchase call out credits - Kontör satın al - - - - Call Forward Method - Çağrı Yönlendirme Yöntemi - - - - Call Voice Mail - Sesli Mesaj Çağrısı yap - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - Kök Dizini - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Sesli mesaj sisteminiz için buraya tıklayın - - - - New Voice Mail: - Yeni Sesli Mesaj: - - - - Click here to see missed call(s) - Cevapsız çağrıları görmek için buraya tıklayın - - - - Missed Call(s): - Cevapsız Arama(lar): - - - - FileTransferDialog - - - ... - ... - - - - Download - İndir - - - - Upload - Gönder - - - - Click here to change your download folder - Dosya indirme dizinini değiştirmek için buraya tıklayın - - - - Download folder: - Dosya indirme dizini: - - - - Clean all items in the list - Listedeki tüm girdileri sil - - - - &Clean - Temizle - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - İptal - - - - Form - Form - - - - Pause - Ara ver - - - - <i>From:</i> - <i>Kimden:</i> - - - - GeneralSettings - - - When I double-click on a contact - Bir bağlantıya çift tıkladığımda - - - - Call cell phone or land line if contact not online - Bağlantı çevrimiçi değilsecebinden ya da sabit numarasından ara - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Boşta - - - - minutes - dakika - - - - Show me as "Away" when I am inactive for: - Şu süreden fazla bir süre aktif olmadığımda beni "Uzakta" işaretle: - - - - When I start my computer - Bilgisayarımı açtığımda - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Giriş: - - - - Password: - Parola: - - - - GoogleTalk Settings - GoogleTalk Ayarları - - - - Forgot your GoogleTalk password? - GoogleTalk parolanızı mı unuttunuz? - - - - Get a new GoogleTalk Account - Yeni bir GoogleTalk Hesabı Aç - - - - HttpProxyLoginWindow - - - Cancel - İptal - - - - HTTP Proxy Address: - HTTP Vekil Sunucu Adresleri: - - - - HTTP Proxy Port Number: - HTTP Vekil Sunucu Portları: - - - - HTTP Proxy Login: - HTTP Vekil Sunucu Girişi: - - - - HTTP Proxy Password: - HTTP Vekil Sunucu Parolası: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Vekil Sunucu Yetkilendirmesi</span><br><br><span>Yerel HTTP Vekil Sunucunuz yetkilendirme kullanıyor<br>Lütfen kullanıcı adı ve parolanızı girin</span> - - - - OK - Tamam - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Giriş: - - - - Password: - Parola: - - - - ICQ Settings - ICQ Ayarları - - - - Forgot your ICQ password? - AIM parolanızı mı unuttunuz? - - - - Get a new ICQ Account - Yeni bir ICQ hesabı aç - - - - IMAccountManager - - - Close - Kapat - - - - Login - Kullanıcı Adı: - - - - Add - Ekle - - - - Delete - Kaldır - - - - Modify - Değiştir - - - - Protocol - Protokol - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - İptal - - - - Save - Kaydet - - - - IM Account Settings - Hızlı Mesajlaşma Hesabı Ayarları - - - - IMContactManager - - - Add - Ekle - - - - Delete - Kaldır - - - - Contact Type (protocol) - İletişim Türü (protokol) - - - - Click on the add button below to add a new ID - Yeni kimlik eklemek için "Ekle" tuşuna basınız - - - - Contact ID - Bağlantı Kimliği - - - - IMProfileWidget - - - - Enter your nickname here - Takma adınızı buraya girin - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - Bir hızlı mesajlaşma hesabı ekle (MSN, AIM, GoogleTalk...) - - - - Add an IM account - Hızlı mesajlaşma hesabı ekle - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - İptal - - - - OK - Tamam - - - - Go Up - Yukarı Git - - - - Refresh - Yeniden yükle - - - - JabberSettings - - - Login: - Giriş: - - - - Password: - Parola: - - - - Jabber Settings - Jabber Ayarları - - - - Connect Server: - Sunucuya Bağlan: - - - - <u>Advanced Options</u> - <u>Gelişmiş Ayarlar</u> - - - - Require TLS - TLS gerekiyor - - - - Port: - Port: - - - - Use TLS if available - Varsa TLS'i kullan - - - - Allow plaintext authentication over unencrypted streams - Düz metin parola şifrelemesine izin ver - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - Eski SSL portunu (port 5223) kullanmaya zorla - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - Diliniz şu an için desteklenmiyor; Launchpad'i kullanarak WengoPhone'u dilinize çevirebileceğinizi biliyor musunuz? - - - - More information here. - Daha fazla bilgi için. - - - - LogAccount - - - Password: - Parola: - - - - Need help? - Yardıma ihtiyacınız var mı? - - - - Cancel - İptal - - - - Delete - Kaldır - - - - @product@ - Login - - - - - - Account: - Hesap: - - - - &Connect - Bağlan - - - - Forgot your @company@ password? - - - - - - &Modify - Düzenle - - - - Configure a &New Profile - Yeni Profili Yapılandır - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Giriş: - - - - Password: - Parola: - - - - MSN Settings - MSN Ayarları - - - - Forgot your MSN password? - MSN parolanızı mı unuttunuz? - - - - Get a new MSN Account - Yeni bir MSN hesabı aç - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Ana Pencere - - - - Command::terminate() - Command::terminate() - - - - Command::start() - Command::start() - - - - Accept Call - Çağrıyı Kabul Et - - - - Send Chat Message - Sohbet İletisi Gönder - - - - Make Call - Çağrı Yap - - - - Hang Up - Kapat - - - - ManageBlockedUsersSettings - - - Close - Kapat - - - - Unblock User - Kullanıcı üzerindeki engellemeyi kaldır - - - - Manage blocked users - Engellenmiş kullanıcıları yönet - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - Bir ses yürütmek istediğiniz durumlaru seçin. - - - - NotificationSettingsItem - - - Sound file - Ses dosyası - - - - Find a sound file - Ses dosyası bul - - - - Play sound file - Ses dosyasını oynat - - - - Play - Yürüt - - - - NotifyDialog - - - File Transfer - Dosya Transferi - - - - &Ok - Tamam - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Durum:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Sürüm yükselt</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - Kabul et - - - - Status - Durum - - - - 00:00:00 - 00:00:00 - - - - Nickname - Takma Ad - - - - &Reject - Reddet - - - - Dialpad - Tuşlar - - - - Audio Smileys - Sesli duygu simgeleri - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - Engellenmiş kullanıcıları yönet - - - - Privacy Rules - Gizlilik Kuralları - - - - Always sign in as "Invisible" (appear offline to all users) - Herzaman "Görünmez" modda bağlan (diğer kullanıcılara çevrimdışı gözük) - - - - Allow chats from - Şunlarla sohbete izin ver - - - - - Anyone - Herkes - - - - - Only people from my contact list - Sadece bağlantı listemdeki kişiler - - - - Allow calls from - Şu kişiden çağrılara izin ver: - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - İptal - - - - Save - Kaydet - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - Genel - - - - Network IDs (MSN, Jabber...) - Ağ kimlikleri (MSN, Jabber...) - - - - Advanced >> - Gelişmiş>> - - - - Fill in all your network Id to stay connected with your contacts - Bağlantılarınızla iletişim halinde olmak için tüm ağ kimliklerinizi doldurun - - - - Contact - Bağlantı - - - - Group: - Grup: - - - - Last Name: - Soyadı: - - - - First Name: - Adı: - - - - Details - Ayrıntılar - - - - Web/blog: - Web/Blog: - - - - Country: - Ülke: - - - - State: - İlçe: - - - - City: - İl: - - - - Gender: - Cinsiyet: - - - - Birth Date: - Doğum Tarihi: - - - - Email: - E-Posta: - - - - Notes - Notlar - - - - Phone Numbers - Telefon Numaraları - - - - Home phone - Ev telefonu - - - - Mobile phone - Cep telefonu - - - - dd MMMM yyyy - gg AAAA yyyy - - - - Unknown - Bilinmiyor - - - - Male - Bay - - - - Female - Bayan - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - Hesaplar - - - - Accounts Settings - Hesap Ayarları - - - - QtAddAccount - - - Configure your voip account - VoIP hesabınızı yapılandırın - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - Test - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - Lütfen yazılımın <br/>SIP hesabınıza bağlanabilmesi için<br/>gerekli bilgileri giriniz - - - - Configure your SIP profile - SIP profilinizi yapılandırın - - - - QtAddWengoAccount - - - Login - Kullanıcı Adı: - - - - Please enter an email address. - Lütfen bir e-posta adresi yazın - - - - Please enter your email address<br/>and your password - Lütfen e-posta adresinizi<br/>ve parolanızı girin - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - İptal - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - &Sil - - - - QtAdvancedSettings - - - Advanced - Gelişmiş - - - - Advanced Settings - Gelişmiş Ayarlar - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - Gelişmiş - - - - Audio - Ses - - - - Audio Settings - Ses Ayarları - - - - QtCallBar - - - +(country code) number or nickname - +(ülke kodu) numara ya da takma ad - - - - QtCallForwardSettings - - - - Call Forward - Çağrı Yönlendirme - - - - Call Forward Settings - Çağrı Yönlendirme Ayarları - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - Farklı Kaydet - - - - QtChatLogViewer - - - Edit Contact - Bağlantıları Düzenle - - - - QtChatTabWidget - - - Close chat - Sohbeti sonlandır - - - - QtChatWidget - - - %1 is connected. - %1 bağlı. - - - - %1 is disconnected. - %1 bağlı değil. - - - - send - gönder - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - Bağlantıları Düzenle - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - SIP Adresine Çağrı Yap - - - - Call land line - Sabit telefon hattını ara - - - - Call Mobile - Cep telefonunu ara - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - Birinci hattı beklemeye al ve ikinciyi ara - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - Konferans görüşme başlat - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Evet - - - - &No - &Hayır - - - - Merge %1 with %2? - %1 ve %2 bağlantılarını birleştireyim mi? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Evet - - - - &No - &Hayır - - - - Home phone - Ev telefonu - - - - Mobile phone - Cep telefonu - - - - @product@ - - - - - - Edit Contact - Bağlantıları Düzenle - - - - Do you really want to delete this contact? - Bu bağlantıyı silmek istediğinize emin misiniz? - - - - Start chat - Sohbet başlat - - - - - Delete contact - Bağlantıyı sil - - - - Call - Çağrı - - - - Free call - - - - - Work phone - İş telefonu - - - - Send SMS - SMS Gönder - - - - Edit contact - Bağlantıyı düzenle - - - - Block contact - Bağlantıyı engelle - - - - Invite to conference - Konferansa davet et - - - - Go to website - Web sayfasına git - - - - Send file - Dosya gönder - - - - Forward to mobile phone - Cep telefonuna yönlendir - - - - QtContactWidget - - - No mobile phone number set - Henüz bir cep telefonu numarası girilmedi - - - - No landline phone number set - Henüz bir sabit telefon numarası girilmedi - - - - - Click here to call - Çağrı başlatmak için buraya tıklayın - - - - - Click here to set a phone number - Bir telefon numarası atamak için buraya tıklayın - - - - Click here to edit the contact - Bağlantıyı düzenlemek için buraya tıklayın - - - - Click here to send a SMS - SMS göndermek için buraya tıklayın - - - - Click here to start a chat - Sohbet başlatmak için buraya tıklayın - - - - Click here to start a free call - Ücretsiz çağrı başlatmak için buraya tıklayın - - - - Click here to send a file - Dosya göndermek için buraya tıklayın - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - Sesli mesaj sisteminize çağrı bırakmak mı istiyorsunuz? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Evet - - - - &No - &Hayır - - - - Choose a directory - Dizin seçin - - - - Overwrite File? - Dosyanın üzerine yaz? - - - - A file called %1 already exists.Do you want to overwrite it? - %1 isimli dosya zaten mevcut. Üzerine yazmak mı istiyorsunuz? - - - - - File size error - Dosya boyutu hatası - - - - %1 exceeds the maximum authorized size. - %1 izin verilen maksimum boyutu aşıyor. - - - - %1 has size 0. - %1 boyutu 0. - - - - %1 is a directory. - %1 bir dizindir. - - - - You can not send a directory. - Dizin gönderemezsiniz. - - - - %1 is a shortcut. - %1 bir kısayoldur. - - - - You can not send a shortcut. - Kısayol gönderemezsiniz. - - - - All Files (*.* *) - Tüm dosyalar (*.* *) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - İptal - - - - Remove - Kaldır - - - - - Pause - Ara ver - - - - Starting - Başlıyor - - - - From: - Kimden: - - - - To: - Kime: - - - - Open - - - - - Resume - Geri Al - - - - Waiting for anwser... - Cevap için bekleniyor... - - - - Done - Bitti - - - - Failed - Başarısız - - - - Paused - Duraklatıldı - - - - Paused by peer - Ağ tarafından duraklatıldı - - - - Cancelled - İptal Edildi - - - - Cancelled by peer - Ağ tarafından iptal edildi - - - - - Downloading... - İndiriyor... - - - - Uploading... - Gönderiyor... - - - - Waiting for peer... - Karşı tarafı bekliyor... - - - - An error occured during the file transfer - Dosya iletimi sırasında bir hata gerçekleşti - - - - This may be caused by : - Bunun nedeni şu olabilir: - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - Genel - - - - General Settings - Genel Ayarlar - - - - QtHistory - - - Incoming call - Gelen Çağrı - - - - Outgoing call - Giden çağrılar - - - - Missed call - Cevapsız çağrı - - - - Rejected call - Reddedilen çağrı - - - - Outgoing SMS - Giden SMS'ler - - - - Do you want to call %1? - %1 bağlantısını aramak mı istiyorsunuz? - - - - Chat session - Sohbet oturumu - - - - @product@ - Call History - - - - - - Type - Tür - - - - Name/ID - İsim/Kimlik - - - - Date - Tarih - - - - Duration - Süre - - - - QtHistoryWidget - - - Erase this entry - Bu girdiyi sil - - - - Open in SMS window - SMS penceresinde Aç - - - - Call this peer - Bu ağa bağlan - - - - Show chat log - Sohbet kayıtlarını göster - - - - QtIMAccountManager - - - Cancel - İptal - - - - @product@ - - - - - - &Delete - &Sil - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - Bağlantı Kesildi - - - - Error: %1 - Hata: %1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - Çevrimiçi - - - - Invisible - Görünmez - - - - Away - Uzakta - - - - Do not disturb - Rahatsız etmeyin - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - Lütfen kullanıcı adını girin - - - - QtIMAccountPresenceMenuManager - - - Cancel - İptal - - - - @product@ - - - - - - &Delete - &Sil - - - - Online - Çevrimiçi - - - - Invisible - Görünmez - - - - Away - Uzakta - - - - Do Not Disturb - Rahatsız Etmeyin - - - - Disconnect - Bağlantıyı Kes - - - - Delete Account - Hesabı Sil - - - - Are sure you want to delete the account <b>%1</b>? - <b>%1</b> hesabını silmek için emin misiniz? - - - - QtIMProfileWidget - - - Edit My Profile - Profilimi Düzenle - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - Dil - - - - Language Settings - Dil Ayarları - - - - QtLogAccount - - - Invalid account - Geçersiz hesap - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - Gelen çağrı (zil sesi) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - Çağrı sona erdi (kapanma sinyali) - - - - Incoming chat - Gelen sohbet çağrısı - - - - IM account connected - Hızlı mesajlaşma hesabına bağlanıldı - - - - IM account disconnected - Hızlı mesajlaşma hesabı bağlantısı kesildi - - - - Contact online - Bağlantı çevrimiçi - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - Ses dosyasını seç - - - - Sounds - Sesler - - - - QtPhoneCall - - - Status - Durum - - - - Incoming Call - Gelen Çağrı - - - - Resume - Geri Al - - - - Hang-up - Kapat - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - Hata - - - - Talking - Konuşuyor - - - - Dialing - Arıyor - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - Çalıyor - - - - Redirected - Yönlendirildi - - - - Initialization... - Başlatılıyor... - - - - Closed - Kapalı - - - - - Hold - Beklet - - - - Add contact - Bağlantı ekle - - - - Ca&ncel - İptal Et - - - - Talking - Conference - Konuşuyor - Konferans - - - - Add a Contact - Bağlantı Ekle - - - - QtPresenceMenuManager - - - Online - Çevrimiçi - - - - Invisible - Görünmez - - - - Away - Uzakta - - - - Do Not Disturb - Rahatsız Etmeyin - - - - Log off - Çıkış - - - - QtPrivacySettings - - - Privacy - Gizlilik - - - - Privacy Settings - Gizlilik Seçenekleri - - - - QtProfileBar - - - Click here to change your status - Durumunuzu değiştirmek için buraya tıklayın - - - - - active - aktif - - - - voicemail - sesli mesaj - - - - inactive - aktif değil - - - - unauthorized - yetkilendirilmemiş - - - - Set global presence to: - Durumu ayarla: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - Gelişmiş>> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - Bağlantı bir gruba ait olmalı, lütfen bir grup atayın - - - - << Simple - << Basit - - - - Select your avatar - Görüntü resminizi seçin - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - Geçersiz grup ismi - - - - Group name cannot be empty - Grup adı boş bırakılamaz - - - - QtSecuritySettings - - - Security - Güvenlik - - - - Security Settings - Güvenlik Ayarları - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - Lütfen telefon numarasını girin - - - - Do you want to continue? - Devam etmek istiyor musunuz? - - - - Your SMS has not been sent - SMS'iniz gönderilmedi - - - - Your SMS has been sent - SMS'iniz gönderildi - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - Boş mesaj gönderemezsiniz. - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - Bağlı değil - - - - Register done - Kayıt işlemi tamamlandı - - - - Unregister done - Kayıt silme işlemi tamamlandı - - - - Connecting - Bağlanıyor - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Durum - - - - - - - - - - - - - @product@ - - - - - - Call SIP - SIP Adresine Çağrı Yap - - - - Call land line - Sabit telefon hattını ara - - - - Call Mobile - Cep telefonunu ara - - - - Call @company@ - - - - - - Call - Çağrı - - - - Send SMS - SMS Gönder - - - - Online - Çevrimiçi - - - - Invisible - Görünmez - - - - Away - Uzakta - - - - Do Not Disturb - Rahatsız Etmeyin - - - - Internet Connection Error - İnternet Bağlantı Hatası - - - - Offline - Çevrimdışı - - - - Connecting... - Bağlanıyor... - - - - Send a SMS - Bir SMS gönder - - - - Start a chat - Sohbet başlat - - - - Place Call - Çağrı Başlat - - - - Send File - Dosya Gönder - - - - Multiple Status - Çoklu Durum - - - - Unknown Status - Bilinmeyen Durum - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - İptal - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - Profilimi Düzenle - - - - Add a Contact - Bağlantı Ekle - - - - Hide Unavailable Contacts - Bağlı Olmayan Kişileri Gizle - - - - Show Unavailable Contacts - Erişilebilir Olmayan Bağlantıları Göster - - - - Hide Groups - Grupları Gizle - - - - Show Groups - Grupları Göster - - - - You have unfinished call(s). - Bitmeyen çağrı(ları)nız var. - - - - Are you sure you want to log off? - Oturumu kapatmak istediğinizden emin misiniz? - - - - &Log Off - Çevrimdışı ol - - - - Disable &Video Calls - Görüntülü Çağrıları Etkinleştir/Engelle - - - - Enable &Video Calls - Görüntülü Çağrıları Etkinleştir/Engelle - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>Etkin telefon çağrıları varken konferans başlatılamaz.</b><br><br>Tüm telefon çağrılarını sonlandırın ve yeniden deneyin. - - - - @product@ - Warning - - - - - - - Log &Off... - Çevrimdışı ol... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - Bağlantı listesi - - - - QtUserProfile - - - Edit Contact - Bağlantıları Düzenle - - - - - &Authorize - Yetkilendir - - - - - &Block - Engelle - - - - Network error. - Ağ hatası. - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - Yanlış e-posta/parola girildi - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - Video - - - - - Normal - Normal - - - - - Good - İyi - - - - - Very good - Çok İyi - - - - - Excellent - Mükemmel - - - - Video Settings - Video Ayarları - - - - QtVoicemailSettings - - - Voicemail - Telesekreter - - - - Voicemail Settings - Telesekreter Ayarları - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - Gelişmiş - - - - General - Genel - - - - Accounts - Hesaplar - - - - Audio - Ses - - - - Call Forward - Çağrı Yönlendirme - - - - Language - Dil - - - - Privacy - Gizlilik - - - - Video - Video - - - - Voicemail - Telesekreter - - - - security - güvenlik - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - İptal - - - - - - - Conference - Konferans - - - - Call - Çağrı - - - - Account - - - - - Add a Contact - Bağlantı Ekle - - - - You have unfinished call(s). - Bitmeyen çağrı(ları)nız var. - - - - @product@ - Warning - - - - - - - Home - Ev - - - - Are you sure you want to exit the application? - Uygulamadan çıkmak istediğinize emin misiniz? - - - - &Exit - Çıkış - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - İptal - - - - OK - Tamam - - - - Enter the new group name: - Yeni grup adını girin: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Form - - - - Enable call encryption - Çağrı şifrelemesini etkinleştir - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - Profilinizi güncelleyin - - - - Yahoo! ID: - Yahoo! Kimliği: - - - - MSN ID: - MSN Kimliği: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk Kimliği: - - - - exemple: username@server - örnek: kullanıcıadı@sunucu - - - - SIP ID: - SIP Kimliği: - - - - ICQ ID: - ICQ Kimliği: - - - - AIM ID: - AIM Kimliği: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Gönder - - - - @product@ - SMS - - - - - - Click here to add a phone number - Telefon numarası eklemek için buraya tıklayın - - - - 0 /160 - 0 /160 - - - - Enter your signature here - İmzanızı buraya girin - - - - Signature: - İmza: - - - - Phone number(s): - Telefon numaraları: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - Telefon numaralarını buraya girin<br>Numaralar & sembolü, noktalı virgül ya da virgül işareti ile ayrılmalı - - - - SoftUpdateWindow - - - Cancel - İptal - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Form - - - - VideoSettings - - - Normal - Normal - - - - Good - İyi - - - - Very good - Çok İyi - - - - Excellent - Mükemmel - - - - Enable video - Video'yu etkinleştir - - - - Webcam Selection - Web Kamerası Seçimi - - - - Webcam device: - Web kamerası aygıtı: - - - - Webcam Preview - Web Kamerası Ön Gösterimi - - - - Connection Type - Bağlantı Türü - - - - Video quality - Video kalitesi - - - - Down (kbit/s) - İndirme hızı (kbit/s) - - - - Up (kbit/s) - Gönderme hızı (kbit/s) - - - - 0 to 512 - 0-512 arası - - - - 0 to 128 - 0-128 arası - - - - 512 to 2048 - 512-2048 arası - - - - 128 to 256 - 128-256 arası - - - - 2048+ - 2048 ve üstü - - - - 256+ - 256 ve üstü - - - - 8192+ - 8192 ve üstü - - - - 1024+ - 1024 ve üstü - - - - Video quality depends on your Internet connection bandwidth - Görüntü kalitesi internet bağlantınızın bant genişliği ile doğru orantılıdır - - - - Make a test video call - Test amaçlı bir görüntülü çağrı başlat - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Form - - - - Phone number of your voicemail: - Telesekreterinizin telefon numarası: - - - - Please fill in here the information about your voicemail - Lütfen telesekreterinizle ilgili bilgileri buraya giriniz - - - - WengoConfigDialog - - - Cancel - İptal - - - - Save - Kaydet - - - - Title - Unvan - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - Kabul et - - - - &Hidden - &Gizli - - - - &Tools - &Araçlar - - - - &Help - &Yardım - - - - &Actions - &Eylemler - - - - @company@ - - - - - - &Close - &Kapat - - - - Dialpad - Tuşlar - - - - @product@ - - - - - - Start Conference - Konferans görüşme başlat - - - - Send SMS - SMS Gönder - - - - Contacts - Bağlantılar - - - - History - Geçmiş - - - - Clear &History - Geçmişi &Temizle - - - - ToolBar - Araç Çubuğu - - - - Show/Hide Unavailable &Contacts - Erişilemeyen Bağlantıları Göster/Gizle - - - - &Chat Sessions - Sohbet Oturumları - - - - &All - &Hepsi - - - - &HangUp - Kapat - - - - &Hold/Resume - Ara ver/Devam et - - - - Show/Hide &Groups - Grupları Göster/Gizle - - - - &Outgoing Calls - Giden Çağrılar - - - - &Incoming Calls - Gelen Çağrılar - - - - &Missed Calls - Cevapsız Çağrılar - - - - Enable/Disable &Video Calls - Görüntülü Çağrıları Etkinleştir/Engelle - - - - Short Text &Messages (SMS) - Kısa Mesajları Göster - - - - Rejected Calls - Reddedilen Çağrılar - - - - &Contacts - &Bağlantılar - - - - &About... - Hakkında... - - - - Add &Contact... - Bağlantı Ekle - - - - &Configuration... - &Yapılandırma... - - - - Send SMS... - SMS Gönder... - - - - View My &Profile... - Profilimi Görüntüle - - - - - View My Profile - Profilimi Görüntüle - - - - Start &Conference... - Konferans Başlat - - - - &Find Contact... - Bağlantı Bul - - - - Log &Off... - Çevrimdışı ol... - - - - - Log Off - Çevrimdışı Ol - - - - Show &Chat Window - Sohbet Penceresini Göster - - - - - Show Chat Window - Sohbet penceresini göster - - - - Show &File Transfer - Dosya iletimini göster - - - - Add Contact - Bağlantı Ekle - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Ekle - - - - SMS - SMS - - - - Conference - Konferans - - - - Wizard - - - Cancel - İptal - - - - Finish - Bitti - - - - Next > - Sonraki > - - - - < Back - < Önceki - - - - Simple Wizard - Step %1 of %2 - Hızlı Sihirbaz - %1/%2 adım - - - - YahooSettings - - - Login: - Giriş: - - - - Password: - Parola: - - - - Yahoo! Settings - Yahoo! Ayarları - - - - Use Yahoo! Japan server - Yahoo! Japonya sunucusunu kullan - - - - Forgot your Yahoo! password? - Yahoo! parolanızı mı unuttunuz? - - - - Get a new Yahoo! Account - Yeni Yahoo! hesabı aç - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_uz.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_uz.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_uz.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_uz.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5376 +0,0 @@ - - - - - AIMSettings - - - Login: - Логин: - - - - Forgot your AIM password? - AIM махфий сўзини унутдингизми? - - - - Get a new AIM Account - Янги AIM ҳисоб олиш - - - - Password: - Махфий сўз: - - - - AIM Settings - AIM/ICQ мосламалари - - - - AboutWindow - - - About - Ҳақида - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Муаллифлар - - - - Close - Ёпиш - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Файл узатиш - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Қабул қилиш - - - - &Cancel - &Бекор қилиш - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Боғланиш: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - - - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - Бекор қилиш - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Бекор қилиш - - - - Contact Type (protocol): - Алоқа тури (протокол) - - - - Contact ID: - Алоқа ID: - - - - Account: - Ҳисоб: - - - - Enable - Ёқиш - - - - Login - Кириш - - - - Add - - - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Махфий сўз: - - - - Need help? - - - - - - &Back - - - - - - Cancel - Бекор қилиш - - - - @product@ - Login - - - - - - &Connect - &Алоқа - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - Ҳисоб: - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Махфий сўз: - - - - Need help? - - - - - - &Back - - - - - - Cancel - Бекор қилиш - - - - @product@ - Login - - - - - - &Connect - &Алоқа - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Ёпиш - - - - Preference Name - - - - - - Type - Тури - - - - Value - Қиймати - - - - Default Value - Андоза қиймат - - - - Save - Сақлаш - - - - Status - Ҳолати - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - - - - - - Advanced Settings - Қўшимча мосламалар - - - - Advanced Configuration Window - Қўшимча мосламалар ойнаси - - - - Automatically answer incoming calls from - - - - - - Remove - Олиб ташлаш - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Шакл - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - Ауидо мосламалари - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Шакл - - - - AvatarWidget - - - Form - Шакл - - - - BrowserSoftUpdateWindow - - - Close - Ёпиш - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - учинчи: - - - - 1st: - - - - - - 2nd: - иккинчи: - - - - - - (+ country code) phone number - (+ давлат коди) телефон рақами - - - - Forward all unanswered calls to message box - - - - - - Disable call forwarding - - - - - - Forward all unanswered calls to following phone numbers: - - - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - - - - - - Message - Хабар - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - &Алоқа - - - - &Tools - &Ускуналар - - - - &Help - &Ёрдам - - - - &Actions - &Амаллар - - - - Main Toolbar - Асосий асбоблар панели - - - - - - Call Contact - - - - - - - - Send a File - - - - - - createChatConf - - - - - - - - Show Contact Info - Алоқа маълумотларни кўрсатиш - - - - blockContact - Алоқани бан қилиш - - - - &Save History As... - - - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Алоқа - - - - &Tools - &Ускуналар - - - - &Actions - &Амаллар - - - - Main Toolbar - Асосий асбоблар панели - - - - - - Call Contact - - - - - - - - Send a File - - - - - - - - Show Contact Info - Алоқа маълумотларни кўрсатиш - - - - blockContact - Алоқани бан қилиш - - - - &Save History As... - - - - - - @company@ - - - - - - MainWindow - - - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - - (Conference participants) - - - - - - &Remove - - - - - - &Start - &Бошлаш - - - - Group Name - - - - - - &Add - - - - - - ChatToaster - - - Message - Хабар - - - - Incoming Chat - - - - - - ChatWidget - - - Form - Шакл - - - - ConferenceCallWidget - - - Cancel - Бекор қилиш - - - - Start - - - - - - Phone number 2: - - - - - - Phone number 1: - Телефон рақами 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Бошлаш - - - - Cancel - Бекор қилиш - - - - ContactGroupPopupMenu - - - Remove Contact Group - Алоқа гуруҳини олиб ташлаш - - - - Rename Contact Group - Алоқа гуруҳини қайта номлаш - - - - Delete group - Гуруъни олиб ташлаш - - - - Do you really want to delete this group? - Ростдан ҳам ушбу гуруҳни олиб ташламоқчисиз? - - - - &Yes - &Ҳа - - - - &No - &Йўқ - - - - ContactList - - - Contact List - - - - - - ContactWidget - - - No mobile phone number set - Тармоқда ҳеч қандай қўлтелефони рақами топилмади - - - - No landline phone number set - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Бекор қилиш - - - - Program Failure - - - - - - Send - - - - - - Optional Information - - - - - - Your Mail: - Электрон почтангиз: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - - - - - - Click here to change your call forward settings - - - - - - Call forward mode: - - - - - - Purchase call out credits - - - - - - Call Forward Method - - - - - - Call Voice Mail - - - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - - - - - - Click here to call your voice mail - - - - - - New Voice Mail: - - - - - - Click here to see missed call(s) - - - - - - Missed Call(s): - - - - - - FileTransferDialog - - - ... - ... - - - - Download - - - - - - Upload - - - - - - Click here to change your download folder - - - - - - Download folder: - - - - - - Clean all items in the list - - - - - - &Clean - - - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Бекор қилиш - - - - Form - Шакл - - - - Pause - - - - - - <i>From:</i> - - - - - - GeneralSettings - - - When I double-click on a contact - - - - - - Call cell phone or land line if contact not online - - - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - - - - - - minutes - - - - - - Show me as "Away" when I am inactive for: - - - - - - When I start my computer - - - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Логин: - - - - Password: - Махфий сўз: - - - - GoogleTalk Settings - - - - - - Forgot your GoogleTalk password? - - - - - - Get a new GoogleTalk Account - - - - - - HttpProxyLoginWindow - - - Cancel - Бекор қилиш - - - - HTTP Proxy Address: - - - - - - HTTP Proxy Port Number: - - - - - - HTTP Proxy Login: - - - - - - HTTP Proxy Password: - - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - - OK - - - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Логин: - - - - Password: - Махфий сўз: - - - - ICQ Settings - AIM/ICQ мосламалари - - - - Forgot your ICQ password? - AIM махфий сўзини унутдингизми? - - - - Get a new ICQ Account - Янги AIM ҳисоб олиш - - - - IMAccountManager - - - Close - Ёпиш - - - - Login - Кириш - - - - Add - - - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Бекор қилиш - - - - Save - Сақлаш - - - - IM Account Settings - - - - - - IMContactManager - - - Add - - - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - Янги AIM ҳисоб олиш - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Бекор қилиш - - - - OK - - - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Логин: - - - - Password: - Махфий сўз: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Махфий сўз: - - - - Need help? - - - - - - Cancel - Бекор қилиш - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Ҳисоб: - - - - &Connect - &Алоқа - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Логин: - - - - Password: - Махфий сўз: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - - - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Ёпиш - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Файл узатиш - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Боғланиш: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Қабул қилиш - - - - Status - Ҳолати - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Бекор қилиш - - - - Save - Сақлаш - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - Ауидо мосламалари - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Кириш - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Бекор қилиш - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - Қўшимча мосламалар - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - Ауидо мосламалари - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Ҳа - - - - &No - &Йўқ - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Ҳа - - - - &No - &Йўқ - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - Тармоқда ҳеч қандай қўлтелефони рақами топилмади - - - - No landline phone number set - - - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Ҳа - - - - &No - &Йўқ - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Бекор қилиш - - - - Remove - Олиб ташлаш - - - - - Pause - - - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Тури - - - - Name/ID - - - - - - Date - - - - - - Duration - - - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - Алоқа маълумотларни кўрсатиш - - - - QtIMAccountManager - - - Cancel - Бекор қилиш - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Бекор қилиш - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Гуруъни олиб ташлаш - - - - Are sure you want to delete the account <b>%1</b>? - Ростдан ҳам ушбу гуруҳни олиб ташламоқчисиз? - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - Қўшимча мосламалар - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Ҳолати - - - - Incoming Call - - - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - Бекор қилиш - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - Қўшимча мосламалар - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - Ауидо мосламалари - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Ҳолати - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - Ҳолати - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Бекор қилиш - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - Мавжуд бўлган алоқалар - - - - Show Unavailable Contacts - Мавжуд бўлган алоқалар - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - Қўшимча мосламалар - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Бекор қилиш - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Бекор қилиш - - - - OK - - - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Шакл - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - - - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Бекор қилиш - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Шакл - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Шакл - - - - Phone number of your voicemail: - Телефон рақами 1: - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - Бекор қилиш - - - - Save - Сақлаш - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Қабул қилиш - - - - &Hidden - - - - - - &Tools - &Ускуналар - - - - &Help - &Ёрдам - - - - &Actions - &Амаллар - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - Ҳақида - - - - Add &Contact... - &Алоқа - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - &Алоқа - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - Алоқа маълумотларни кўрсатиш - - - - - Show Chat Window - Алоқа маълумотларни кўрсатиш - - - - Show &File Transfer - Файл узатиш - - - - Add Contact - &Алоқа - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - - - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Бекор қилиш - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Логин: - - - - Password: - Махфий сўз: - - - - Yahoo! Settings - Ауидо мосламалари - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - AIM махфий сўзини унутдингизми? - - - - Get a new Yahoo! Account - Янги AIM ҳисоб олиш - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_vi.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_vi.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_vi.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_vi.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5285 +0,0 @@ - - - - - AIMSettings - - - Login: - Tên đăng nhập - - - - Forgot your AIM password? - Bạn quên mật khẩu AIM? - - - - Get a new AIM Account - Tạo tài khoản AIM mới - - - - Password: - Mật khẩu - - - - AIM Settings - Thông số AIM/ICQ - - - - AboutWindow - - - About - Bản quyền - - - - Copyright (C)2008 Mbdsys - - - - - Authors - Tác giả - - - - Close - Đóng - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - Truyền file - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - &Chấp thuận - - - - &Cancel - &Huỷ bỏ - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Liên hệ: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Tên file: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Tên file đang nhận</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - &Sửa hồ sơ của tôi - - - - AddAccount - - - Configure your account: - - - - - - &Next - - - - - - Need help? - - - - - - You don't have any account ? Click here - - - - - - &Back - - - - - - Cancel - Huỷ - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - Huỷ - - - - Contact Type (protocol): - Loại địa chỉ - - - - Contact ID: - Định danh địa chỉ - - - - Account: - Tài khoản - - - - Enable - Có hiệu lực - - - - Login - Đăng nhập - - - - Add - Thêm - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - Mật khẩu - - - - Need help? - - - - - - &Back - - - - - - Cancel - Huỷ - - - - @product@ - Login - - - - - - &Connect - &Liên hệ - - - - Activate presence and chat (SIP/SIMPLE) - - - - - - Displayname: - - - - - - login / username: - - - - - - Account name: - Tài khoản - - - - Proxy: - - - - - - : - - - - - - Server: - - - - - - SIP Domain / Realm: - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - - Advanced - - - - - - AddWengoAccount - - - Password: - Mật khẩu - - - - Need help? - - - - - - &Back - - - - - - Cancel - Huỷ - - - - @product@ - Login - - - - - - &Connect - &Liên hệ - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:18pt;">Xác thực của HTTP Proxy</span><br><br><span>Proxy của bạn có sử dụng xác thực<br>Đề nghị nhập vào tên đăng nhập và mật khẩu của bạn</span> - - - - Email Address: - - - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - Đóng - - - - Preference Name - Tên qui ước - - - - Type - Loại - - - - Value - Giá trị - - - - Default Value - Giá trị mặc định - - - - Save - Lưu - - - - Status - Trạng thái - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - Thêm - - - - Advanced Settings - Cấu hình nâng cao - - - - Advanced Configuration Window - Cấu hình nâng cao - - - - Automatically answer incoming calls from - Tự động trả lời cuộc gọi từ - - - - Remove - Xoá - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - Cảnh báo, phần cấu hình này chỉ dành cho người dùng chuyên nghiệp.<br> Cấu hình sai tại đây có thể khiến chương trình ngưng hoạt động - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - Mẫu - - - - AudioSettings - - - Reset - - - - - - Audio Codecs - Biểu tượng âm thanh - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - Mẫu - - - - AvatarWidget - - - Form - Mẫu - - - - BrowserSoftUpdateWindow - - - Close - Đóng - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 3: - - - - 1st: - 1: - - - - 2nd: - 2: - - - - - - (+ country code) phone number - (+mã nước) số điện thoại - - - - Forward all unanswered calls to message box - Chuyển hướng tất cả các cuộc gọi không được trả lời sang hộp thư thoại - - - - Disable call forwarding - Huỷ bỏ chuyển hướng cuộc gọi - - - - Forward all unanswered calls to following phone numbers: - Chuyển hướng tất cả các cuộc gọi không được tôi trả lời sang các số điện thoại sau: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - Ví dụ: +3314500XXXX (+33 là mã nước và 14500XXXX là số điện thoại cần gọi) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - Cuộc gọi đến - - - - Message - Tin nhắn - - - - ChatLogViewer - - - Chat History - - - - - - &Contact - &Liên hệ - - - - &Tools - &Công cụ - - - - &Help - &Trợ giúp - - - - &Actions - &Tác vụ - - - - Main Toolbar - Thanh công cụ - - - - - - Call Contact - Gọi điện - - - - - - Send a File - Gửi file - - - - createChatConf - Tạo phòng Chat - - - - - - Show Contact Info - Hiển thị thông tin đối tác - - - - blockContact - Khoá liên hệ - - - - &Save History As... - &Lưu nội dung chat ... - - - - actionRestartChat - - - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - &Liên hệ - - - - &Tools - &Công cụ - - - - &Actions - &Tác vụ - - - - Main Toolbar - Thanh công cụ - - - - - - Call Contact - Gọi điện - - - - - - Send a File - Gửi file - - - - - - Show Contact Info - Hiển thị thông tin đối tác - - - - blockContact - Khoá liên hệ - - - - &Save History As... - &Lưu nội dung chat ... - - - - @company@ - - - - - - MainWindow - Màn hình chính - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - Phòng Chat - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Phòng Chat</span></p></body></html> - - - - (Conference participants) - (Người tham dự phòng Chat) - - - - &Remove - &Loại bỏ - - - - &Start - &Bắt đầu - - - - Group Name - Tên Nhóm - - - - &Add - &Thêm - - - - ChatToaster - - - Message - Tin nhắn - - - - Incoming Chat - Tin nhắn mới - - - - ChatWidget - - - Form - Mẫu - - - - ConferenceCallWidget - - - Cancel - Huỷ - - - - Start - Bắt đầu - - - - Phone number 2: - Số điện thoại thứ 2: - - - - Phone number 1: - Số điện thoại thứ 1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - &Bắt đầu - - - - Cancel - Huỷ - - - - ContactGroupPopupMenu - - - Remove Contact Group - Xóa nhóm liên lạc - - - - Rename Contact Group - Đổi tên nhóm liên lạc - - - - Delete group - Xóa nhóm - - - - Do you really want to delete this group? - Bạn muốn xóa nhóm liên lạc này? - - - - &Yes - &Có - - - - &No - &Không - - - - ContactList - - - Contact List - Danh sách liên lạc - - - - ContactWidget - - - No mobile phone number set - Không có số di động tương ứng - - - - No landline phone number set - Không có số cố định tương ứng - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - Huỷ - - - - Program Failure - Sự cố chương trình - - - - Send - Gửi - - - - Optional Information - Thông tin tùy chọn - - - - Your Mail: - Địa chỉ E-mail của bạn: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - Vắng mặt - - - - Click here to change your call forward settings - Bấm vào đây để thay đổi dịch vụ chuyển hướng cuộc gọi - - - - Call forward mode: - Chế độ chuyển hướng cuộc gọi: - - - - Purchase call out credits - Mua phút gọi ra - - - - Call Forward Method - Phương thức chuyển hướng cuộc gọi - - - - Call Voice Mail - Truy nhập Hộp thư thoại - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - Gọi số Hộp thư thoại - - - - New Voice Mail: - Tin nhắn thoại mới: - - - - Click here to see missed call(s) - Xem danh sách cuộc gọi nhỡ - - - - Missed Call(s): - Các cuộc gọi nhỡ: - - - - FileTransferDialog - - - ... - ... - - - - Download - Tải file - - - - Upload - Nạp file - - - - Click here to change your download folder - Bấm vào đây để thay đổi dịch vụ chuyển hướng cuộc gọi - - - - Download folder: - Thư mục tải file về: - - - - Clean all items in the list - - - - - - &Clean - &Xóa - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - Huỷ - - - - Form - Mẫu - - - - Pause - Tạm ngừng - - - - <i>From:</i> - <i>Từ:</i> - - - - GeneralSettings - - - When I double-click on a contact - Khi tôi nhấp đúp vào một Liên lạc - - - - Call cell phone or land line if contact not online - Gọi số di động hoặc cố định nếu đối tác không online - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - Trạng thái chờ - - - - minutes - phút - - - - Show me as "Away" when I am inactive for: - Tự động hiển thị "Đi vắng" nếu tôi không hoạt động trong: - - - - When I start my computer - Khi máy tính khởi động - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - Tên đăng nhập - - - - Password: - Mật khẩu - - - - GoogleTalk Settings - Cấu hình GoogleTalk - - - - Forgot your GoogleTalk password? - Quên mật khẩu GoogleTalk - - - - Get a new GoogleTalk Account - Tạo một tài khoản GoogleTalk mới - - - - HttpProxyLoginWindow - - - Cancel - Huỷ - - - - HTTP Proxy Address: - Địa chỉ HTTP Proxy - - - - HTTP Proxy Port Number: - Cổng HTTP Proxy - - - - HTTP Proxy Login: - Tên đăng nhập HTTP Proxy - - - - HTTP Proxy Password: - Mật khẩu HTTP Proxy - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">Xác thực của HTTP Proxy</span><br><br><span>Proxy của bạn có sử dụng xác thực<br>Đề nghị nhập vào tên đăng nhập và mật khẩu của bạn</span> - - - - OK - OK - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - Tên đăng nhập - - - - Password: - Mật khẩu - - - - ICQ Settings - Thông số AIM/ICQ - - - - Forgot your ICQ password? - Bạn quên mật khẩu AIM? - - - - Get a new ICQ Account - Tạo tài khoản AIM mới - - - - IMAccountManager - - - Close - Đóng - - - - Login - Đăng nhập - - - - Add - Thêm - - - - Delete - - - - - - Modify - - - - - - Protocol - Giao thức - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - Huỷ - - - - Save - Lưu - - - - IM Account Settings - - - - - - IMContactManager - - - Add - Thêm - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - WengoPhone - Các tài khoản tin nhắn của bạn (Yahoo, MSN,Jabber) - - - - Add an IM account - Tạo tài khoản AIM mới - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - Huỷ - - - - OK - OK - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - Tên đăng nhập - - - - Password: - Mật khẩu - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - Mật khẩu - - - - Need help? - - - - - - Cancel - Huỷ - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - Tài khoản - - - - &Connect - &Liên hệ - - - - Forgot your @company@ password? - - - - - - &Modify - &Change - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - Tên đăng nhập - - - - Password: - Mật khẩu - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - Màn hình chính - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - Đóng - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - Truyền file - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Liên hệ: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Phòng Chat</span></p></body></html> - - - - PhoneCallWidget - - - &Accept - &Chấp thuận - - - - Status - Trạng thái - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - Biểu tượng âm thanh - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - Huỷ - - - - Save - Lưu - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - - - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - Cấu hình âm thanh - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - Đăng nhập - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - Huỷ - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - - - - - - Advanced Settings - Cấu hình nâng cao - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - - - - - - Audio - - - - - - Audio Settings - Cấu hình âm thanh - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - Cấu hình chuyển hướng cuộc gọi - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - &Có - - - - &No - &Không - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - &Có - - - - &No - &Không - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - Không có số di động tương ứng - - - - No landline phone number set - Không có số cố định tương ứng - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - &Có - - - - &No - &Không - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - Huỷ - - - - Remove - Xoá - - - - - Pause - Tạm ngừng - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - Cấu hình cơ bản - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - Loại - - - - Name/ID - Tên/Số định danh - - - - Date - Ngày - - - - Duration - Thời lượng - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - Hiển thị thông tin đối tác - - - - QtIMAccountManager - - - Cancel - Huỷ - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - Huỷ - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - Xóa nhóm - - - - Are sure you want to delete the account <b>%1</b>? - Bạn muốn xóa nhóm liên lạc này? - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - Cấu hình nâng cao - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - Trạng thái - - - - Incoming Call - Cuộc gọi đến - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - Huỷ - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - Cấu hình nâng cao - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - - - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - Cấu hình âm thanh - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - Trạng thái - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - Trạng thái chờ - - - - Unknown Status - Trạng thái - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - &Huỷ bỏ - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - Các liên lạc hiện hành - - - - Show Unavailable Contacts - Các liên lạc hiện hành - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - Tin nhắn thoại mới: - - - - Voicemail Settings - Cấu hình cơ bản - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - - - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - Tin nhắn thoại mới: - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - &Huỷ bỏ - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - Huỷ - - - - OK - OK - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - Mẫu - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - Gửi - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - Huỷ - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - Mẫu - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - Mẫu - - - - Phone number of your voicemail: - Gọi số Hộp thư thoại - - - - Please fill in here the information about your voicemail - Gọi số Hộp thư thoại - - - - WengoConfigDialog - - - Cancel - Huỷ - - - - Save - Lưu - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - &Chấp thuận - - - - &Hidden - - - - - - &Tools - &Công cụ - - - - &Help - &Trợ giúp - - - - &Actions - &Tác vụ - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - Bản quyền - - - - Add &Contact... - &Liên hệ - - - - &Configuration... - - - - - - Send SMS... - Send text message... - - - - View My &Profile... - - - - - - - View My Profile - &Sửa hồ sơ của tôi - - - - Start &Conference... - - - - - - &Find Contact... - &Liên hệ - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - Hiển thị thông tin đối tác - - - - - Show Chat Window - Hiển thị thông tin đối tác - - - - Show &File Transfer - Truyền file - - - - Add Contact - &Liên hệ - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - Thêm - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - Huỷ - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - Tên đăng nhập - - - - Password: - Mật khẩu - - - - Yahoo! Settings - Cấu hình âm thanh - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - Bạn quên mật khẩu AIM? - - - - Get a new Yahoo! Account - Tạo tài khoản AIM mới - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_CN.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_CN.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_CN.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_CN.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4898 +0,0 @@ - - - - - AIMSettings - - - Login: - 登录: - - - - Forgot your AIM password? - 忘记了你的AIM密码? - - - - Get a new AIM Account - 获得一个新的AIM帐号 - - - - Password: - 密码: - - - - AIM Settings - AIM 设置 - - - - AboutWindow - - - About - 关于 - - - - Copyright (C)2008 Mbdsys - - - - - Authors - 作者 - - - - Close - 关闭 - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - 文件传输 - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - 接受(&A) - - - - &Cancel - 取消(&C) - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">联系人: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">文件名称: </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>要接受的文件</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - 修改我的信息(&E) - - - - AddAccount - - - Configure your account: - 配置你的帐户: - - - - &Next - 下一个(&N) - - - - Need help? - 需要帮助? - - - - You don't have any account ? Click here - 你还没有帐户?点击这里 - - - - &Back - 后退(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - 取消 - - - - Contact Type (protocol): - 联系人类别 - - - - Contact ID: - 联系人 ID: - - - - Account: - 帐号: - - - - Enable - 确定 - - - - Login - 登录 - - - - Add - 添加 - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - 密码: - - - - Need help? - 需要帮助? - - - - &Back - 后退(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - &Connect - 连接(&C) - - - - Activate presence and chat (SIP/SIMPLE) - 激活存在和聊天(SIP/SIMPLE) - - - - Displayname: - 显示的名字: - - - - login / username: - 登录/用户名: - - - - Account name: - 账户名称: - - - - Proxy: - 代理: - - - - : - - - - - Server: - 服务器: - - - - SIP Domain / Realm: - SIP 域名/领域: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">配置你的 SIP 配置</span><br><br><span>请输入信息以便<br/>你的软件电话来连接你的<br/> SIP 帐户</span> - - - - Advanced - 高级 - - - - AddWengoAccount - - - Password: - 密码: - - - - Need help? - 需要帮助? - - - - &Back - 后退(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - &Connect - 连接(&C) - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">登录</span><br><br><span>请输入你的电子信箱和<br>密码</span> - - - - Email Address: - 电子邮件地址: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - 关闭 - - - - Preference Name - 偏爱的名称 - - - - Type - 类別 - - - - Value - 数值 - - - - Default Value - 默认数值 - - - - Save - 保存 - - - - Status - 状态 - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - 添加 - - - - Advanced Settings - 高级设置 - - - - Advanced Configuration Window - 高级配置窗口 - - - - Automatically answer incoming calls from - 自动接听来电,如果它来自 - - - - Remove - 移除 - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - 警告,这部分只针对高级用户。<br>任何错误可以严重损坏软件 - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - 表格 - - - - AudioSettings - - - Reset - 重新设定 - - - - Audio Codecs - 音频编解码器 - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - 表格 - - - - AvatarWidget - - - Form - 表格 - - - - BrowserSoftUpdateWindow - - - Close - 关闭 - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 第三 - - - - 1st: - 第一 - - - - 2nd: - 第二 - - - - - - (+ country code) phone number - (+国家码)电话号码 - - - - Forward all unanswered calls to message box - 转移所有未接来电到信箱 - - - - Disable call forwarding - 取消呼叫转移 - - - - Forward all unanswered calls to following phone numbers: - 转移所有的未接来电到一下的电话号码: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - 例如+3314500XXXX (+33是国家码,14500XXXX是电话号码) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - 来电 - - - - Message - 消息 - - - - ChatLogViewer - - - Chat History - 聊天历史 - - - - &Contact - 联系人(&C) - - - - &Tools - 工具(&T) - - - - &Help - 帮助(&H) - - - - &Actions - 操作(&A) - - - - Main Toolbar - 主工具栏 - - - - - - Call Contact - 呼叫联系人 - - - - - - Send a File - 发送文件 - - - - createChatConf - 建立聊天会议 - - - - - - Show Contact Info - 显示联系人信息 - - - - blockContact - 禁止联系人 - - - - &Save History As... - 保存历史记录为...(&S) - - - - actionRestartChat - actionRestartChat - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - 联系人(&C) - - - - &Tools - 工具(&T) - - - - &Actions - 操作(&A) - - - - Main Toolbar - 主工具栏 - - - - - - Call Contact - 呼叫联系人 - - - - - - Send a File - 发送文件 - - - - - - Show Contact Info - 显示联系人信息 - - - - blockContact - 禁止联系人 - - - - &Save History As... - 保存历史记录为...(&S) - - - - @company@ - - - - - - MainWindow - 主要窗口 - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - 关闭(&C) - - - - Conference - 会议 - - - - ChatRoomInviteWidget - - - Chat room - 聊天室 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">聊天室</span></p></body></html> - - - - (Conference participants) - (会议参加者) - - - - &Remove - 移除(&R) - - - - &Start - 开始(&S) - - - - Group Name - 群组名称 - - - - &Add - 添加(&A) - - - - ChatToaster - - - Message - 消息 - - - - Incoming Chat - 新消息 - - - - ChatWidget - - - Form - 表格 - - - - ConferenceCallWidget - - - Cancel - 取消 - - - - Start - 开始: - - - - Phone number 2: - 电话号码2: - - - - Phone number 1: - 电话号码1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - 开始(&S) - - - - Cancel - 取消 - - - - ContactGroupPopupMenu - - - Remove Contact Group - 移动联系组 - - - - Rename Contact Group - 重命名联系组 - - - - Delete group - 删除组 - - - - Do you really want to delete this group? - 你确实想删除这个组吗? - - - - &Yes - 是的(&Y) - - - - &No - 否(&N) - - - - ContactList - - - Contact List - 联系人列表 - - - - ContactWidget - - - No mobile phone number set - 没有设置手机号码 - - - - No landline phone number set - 没有设置座机号码 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - 取消 - - - - Program Failure - 程序故障 - - - - Send - 发送 - - - - Optional Information - 可选信息 - - - - Your Mail: - 你的邮箱: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - 不可用 - - - - Click here to change your call forward settings - 点击这里修改你的呼叫转移设置 - - - - Call forward mode: - 呼叫转移模式: - - - - Purchase call out credits - 购买call out话费 - - - - Call Forward Method - 呼叫转移方式 - - - - Call Voice Mail - 呼叫语音邮箱 - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - 根文件夹 - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - 点击变换颜色的条目上来发送声音给你的谈话者。 - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - 点击这里呼叫你的语音信箱 - - - - New Voice Mail: - 新的语音邮件: - - - - Click here to see missed call(s) - 点击这里查看未接来电 - - - - Missed Call(s): - 未接来电: - - - - FileTransferDialog - - - ... - ... - - - - Download - 下载 - - - - Upload - 上载 - - - - Click here to change your download folder - 点击这里来改变你的下载文件夹 - - - - Download folder: - 下载文件夹: - - - - Clean all items in the list - 清除列表上的所有条目 - - - - &Clean - 消除(&C) - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - 取消 - - - - Form - 表格 - - - - Pause - 暂停 - - - - <i>From:</i> - <i>从:</i> - - - - GeneralSettings - - - When I double-click on a contact - 当我双击一个联系人 - - - - Call cell phone or land line if contact not online - 当联系人不在线,呼叫手机或座机 - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - 空闲状态 - - - - minutes - 分钟 - - - - Show me as "Away" when I am inactive for: - 显示为“离开”,当我处于非活动状态 - - - - When I start my computer - 当我启动我的电脑 - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - 登录: - - - - Password: - 密码: - - - - GoogleTalk Settings - GoogleTalk设置 - - - - Forgot your GoogleTalk password? - 忘记了你的GoogleTalk密码? - - - - Get a new GoogleTalk Account - 获得一个新的GoogleTalk帐号 - - - - HttpProxyLoginWindow - - - Cancel - 取消 - - - - HTTP Proxy Address: - HTTP代理地址: - - - - HTTP Proxy Port Number: - HTTP代理端口号: - - - - HTTP Proxy Login: - HTTP代理用户名: - - - - HTTP Proxy Password: - HTTP代理密码: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP代理鉴定</span><br><br><span>你的本地HTTP代理用户鉴定<br>请输入你的用户名和密码</span> - - - - OK - 确定 - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - 登录: - - - - Password: - 密码: - - - - ICQ Settings - ICQ 设置 - - - - Forgot your ICQ password? - 忘记你的 ICQ 密码了? - - - - Get a new ICQ Account - 获取一个新的 ICQ 帐户 - - - - IMAccountManager - - - Close - 关闭 - - - - Login - 登录 - - - - Add - 添加 - - - - Delete - 删除 - - - - Modify - 修改 - - - - Protocol - 协议 - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - 取消 - - - - Save - 保存 - - - - IM Account Settings - IM帐户设置 - - - - IMContactManager - - - Add - 添加 - - - - Delete - 删除 - - - - Contact Type (protocol) - 联系人类别(协议) - - - - Click on the add button below to add a new ID - 点击添加按钮来添加一个新的帐号 - - - - Contact ID - 联系人帐号 - - - - IMProfileWidget - - - - Enter your nickname here - 在这里输入你的昵称 - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - 添加一个即时信息帐户(MSN,AIM,Google Talk...) - - - - Add an IM account - 添加一个 IM 帐户 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - 取消 - - - - OK - 确定 - - - - Go Up - 上一层 - - - - Refresh - 更新 - - - - JabberSettings - - - Login: - 登录: - - - - Password: - 密码: - - - - Jabber Settings - Jabber设置 - - - - Connect Server: - 连接服务器: - - - - <u>Advanced Options</u> - <u>高级选项</u> - - - - Require TLS - 需要TLS - - - - Port: - 端口: - - - - Use TLS if available - 如果可以使用TLS - - - - Allow plaintext authentication over unencrypted streams - 允许未加密流下的纯文本验证 - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - 强制旧的(端口5223)SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - 你的语言不在这里,你知道你可以在 Lauchpad 上翻译自己的语言吗? - - - - More information here. - 更多信息在这里。 - - - - LogAccount - - - Password: - 密码: - - - - Need help? - 需要帮助? - - - - Cancel - 取消 - - - - Delete - 删除 - - - - @product@ - Login - - - - - - Account: - 帐号: - - - - &Connect - 连接(&C) - - - - Forgot your @company@ password? - - - - - - &Modify - 修改(&M) - - - - Configure a &New Profile - 配置一个新的配置(&N) - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - 登录: - - - - Password: - 密码: - - - - MSN Settings - MSN设置 - - - - Forgot your MSN password? - 忘记了你的MSN密码? - - - - Get a new MSN Account - 获得一个新的MSN帐号 - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - 主要窗口 - - - - Command::terminate() - 指令::终止() - - - - Command::start() - 指令::开始() - - - - Accept Call - 接电话 - - - - Send Chat Message - 发送信息 - - - - Make Call - 打电话 - - - - Hang Up - 挂断 - - - - ManageBlockedUsersSettings - - - Close - 关闭 - - - - Unblock User - 取消阻止用户 - - - - Manage blocked users - 管理被阻止的用户 - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - 选择声音要被播放的事件 - - - - NotificationSettingsItem - - - Sound file - 声音文件 - - - - Find a sound file - 寻找一个声音文件 - - - - Play sound file - 播放声音文件 - - - - Play - 播放 - - - - NotifyDialog - - - File Transfer - 文件传输 - - - - &Ok - 确定(&O) - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">状态:</span> ...</p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">升级</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - PhoneCallWidget - - - &Accept - 接受(&A) - - - - Status - 状态 - - - - 00:00:00 - 00:00:00 - - - - Nickname - 别名 - - - - &Reject - 拒绝(&R) - - - - Dialpad - 拨号盘 - - - - Audio Smileys - 音频笑脸 - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - 管理被阻止的用户 - - - - Privacy Rules - 隐私规则 - - - - Always sign in as "Invisible" (appear offline to all users) - 总是显示“离线”(显示为脱机) - - - - Allow chats from - 允许即时信息自 - - - - - Anyone - 任何人 - - - - - Only people from my contact list - 只有我的联系人 - - - - Allow calls from - 允许呼叫自 - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - 取消 - - - - Save - 保存 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - 常规 - - - - Network IDs (MSN, Jabber...) - 网络名称(MSN,Jabber...) - - - - Advanced >> - 高级 >> - - - - Fill in all your network Id to stay connected with your contacts - 填写你所有的网络名称以和你的联系人保持联系 - - - - Contact - 联系人 - - - - Group: - 群组: - - - - Last Name: - 姓: - - - - First Name: - 名: - - - - Details - 详细资料 - - - - Web/blog: - Web/blog: - - - - Country: - 国家/地区: - - - - State: - 状态: - - - - City: - 城市: - - - - Gender: - 性别: - - - - Birth Date: - 生日 - - - - Email: - 电子邮件: - - - - Notes - 注释 - - - - Phone Numbers - 电话号码 - - - - Home phone - 家庭电话 - - - - Mobile phone - 手机 - - - - dd MMMM yyyy - 日日月月年年年年 - - - - Unknown - 未知 - - - - Male - - - - - Female - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - 帐户 - - - - Accounts Settings - 帐户设置 - - - - QtAddAccount - - - Configure your voip account - 配置你的 voip 帐户 - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - 请填写下列信息来<br/>允许你的软件电话连接到你的 <br/>SIP 帐户 - - - - Configure your SIP profile - 配置你的 SIP 配置 - - - - QtAddWengoAccount - - - Login - 登录 - - - - Please enter an email address. - 请输入一个电子邮件地址。 - - - - Please enter your email address<br/>and your password - 请输入你的电邮地址<br/>和你的密码 - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - 取消 - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - 删除(&D) - - - - QtAdvancedSettings - - - Advanced - 高级 - - - - Advanced Settings - 高级设置 - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - 高级 - - - - Audio - 音频 - - - - Audio Settings - 音频设置 - - - - QtCallBar - - - +(country code) number or nickname - +(国家编码)电话号码或者昵称 - - - - QtCallForwardSettings - - - - Call Forward - 呼叫转移 - - - - Call Forward Settings - 呼叫转移设置 - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - 另存为 - - - - QtChatLogViewer - - - Edit Contact - 编辑联系人 - - - - QtChatTabWidget - - - Close chat - 关闭聊天 - - - - QtChatWidget - - - %1 is connected. - %1已经连接。 - - - - %1 is disconnected. - %1没有连接。 - - - - send - 发送 - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - 编辑联系人 - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - 呼叫SIP - - - - Call land line - 拨打座机 - - - - Call Mobile - 拨打手机 - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - <b>你现在可以通知你的第一个聊天对象他准备成为会议呼叫的一部分。</b><br><br>当做完之后,点击下面的按钮。你的第一个聊天对象将会被暂停,当你的第二个聊天对象被呼叫时。<br> - - - - Hold first interlocutor and call second one - 暂停第一个谈话并呼叫第二个 - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - <b>你现在可以通知你的聊天者他准备成为会议的一部分。</b><br><br>当这个完成后,点击下面的按钮来开始会议。 - - - - Start Conference - 开始会议 - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - 是的(&Y) - - - - &No - 否(&N) - - - - Merge %1 with %2? - 合并%1和%2? - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - 是的(&Y) - - - - &No - 否(&N) - - - - Home phone - 家庭电话 - - - - Mobile phone - 手机 - - - - @product@ - - - - - - Edit Contact - 编辑联系人 - - - - Do you really want to delete this contact? - 你确实想删除这个联系人吗? - - - - Start chat - 开始聊天 - - - - - Delete contact - 删除联系人 - - - - Call - 呼叫 - - - - Free call - - - - - Work phone - 工作电话 - - - - Send SMS - 发送短消息 - - - - Edit contact - 修改联系人 - - - - Block contact - 阻止联系人 - - - - Invite to conference - 邀请到会议 - - - - Go to website - 查看网页 - - - - Send file - 发送文件 - - - - Forward to mobile phone - 转移到移动电话 - - - - QtContactWidget - - - No mobile phone number set - 没有设置手机号码 - - - - No landline phone number set - 没有设置座机号码 - - - - - Click here to call - 点击这里拨打电话 - - - - - Click here to set a phone number - 点击这里以设置一个电话号码 - - - - Click here to edit the contact - 点击这里以编辑联系人 - - - - Click here to send a SMS - 点击这里以发送一个短信 - - - - Click here to start a chat - 点击这里以开始一个聊天 - - - - Click here to start a free call - 点击这里以开始一个免费通话 - - - - Click here to send a file - 点击这里以发送一个文件 - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - 你想呼叫你的语音信箱吗? - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - 是的(&Y) - - - - &No - 否(&N) - - - - Choose a directory - 选择一个目录 - - - - Overwrite File? - 覆盖文件? - - - - A file called %1 already exists.Do you want to overwrite it? - 一个叫%1的文件已经存在。你想覆盖它吗? - - - - - File size error - 文件大小错误 - - - - %1 exceeds the maximum authorized size. - %1超过最大允许大小。 - - - - %1 has size 0. - %1 的大小为0 - - - - %1 is a directory. - %1 是一个目录。 - - - - You can not send a directory. - 你不能够发送一个目录。 - - - - %1 is a shortcut. - %1 是一个链接 - - - - You can not send a shortcut. - 你不能够发送一个链接 - - - - All Files (*.* *) - 所有文件(*.**) - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - 取消 - - - - Remove - 移除 - - - - - Pause - 暂停 - - - - Starting - 正在开始 - - - - From: - 来自: - - - - To: - 到: - - - - Open - 打开 - - - - Resume - 继续 - - - - Waiting for anwser... - 等待答复... - - - - Done - 完成 - - - - Failed - 失败 - - - - Paused - 暂停 - - - - Paused by peer - 被好友暂停 - - - - Cancelled - 取消 - - - - Cancelled by peer - 被好友取消 - - - - - Downloading... - 下载中... - - - - Uploading... - 上传中... - - - - Waiting for peer... - 等待对等点... - - - - An error occured during the file transfer - 在文件传输时发生了一个错误 - - - - This may be caused by : - 这有可能是导致的由: - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - 常规 - - - - General Settings - 常规设定 - - - - QtHistory - - - Incoming call - 呼进电话 - - - - Outgoing call - 拨出电话 - - - - Missed call - 未接来电 - - - - Rejected call - 拒绝的来电 - - - - Outgoing SMS - 已发短信 - - - - Do you want to call %1? - 你想呼叫%1吗? - - - - Chat session - 聊天会话 - - - - @product@ - Call History - - - - - - Type - 类別 - - - - Name/ID - 名称/帐号 - - - - Date - 日期 - - - - Duration - 耗时 - - - - QtHistoryWidget - - - Erase this entry - 去掉这个入口 - - - - Open in SMS window - 以短信窗口打开 - - - - Call this peer - 呼叫这个人 - - - - Show chat log - 显示聊天日志 - - - - QtIMAccountManager - - - Cancel - 取消 - - - - @product@ - - - - - - &Delete - 删除(&D) - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - 已断网 - - - - Error: %1 - 错误:%1 - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - %1 (%2/%3) - - - - Online - 在线 - - - - Invisible - 隐身 - - - - Away - 离开 - - - - Do not disturb - 不要打扰 - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - 请输入一个注册名 - - - - QtIMAccountPresenceMenuManager - - - Cancel - 取消 - - - - @product@ - - - - - - &Delete - 删除(&D) - - - - Online - 在线 - - - - Invisible - 隐身 - - - - Away - 离开 - - - - Do Not Disturb - 请勿打扰 - - - - Disconnect - 断开连接 - - - - Delete Account - 删除帐户 - - - - Are sure you want to delete the account <b>%1</b>? - 你确认要删除帐户 <b>%1</b>? - - - - QtIMProfileWidget - - - Edit My Profile - 修改我的资料 - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - 语言 - - - - Language Settings - 语言设置 - - - - QtLogAccount - - - Invalid account - 无效的帐户 - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - 来电(铃音) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - 结束通话(挂起音) - - - - Incoming chat - 文本信息 - - - - IM account connected - IM帐户已连接 - - - - IM account disconnected - IM帐户未连接 - - - - Contact online - 联系人在线 - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - 选择一个声音文件 - - - - Sounds - 声音 - - - - QtPhoneCall - - - Status - 状态 - - - - Incoming Call - 来电 - - - - Resume - 继续 - - - - Hang-up - 挂断 - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - 错误 - - - - Talking - 通话中 - - - - Dialing - 拨号中 - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - 响铃中 - - - - Redirected - 重新开始 - - - - Initialization... - 初始化... - - - - Closed - 已关闭 - - - - - Hold - 挂起 - - - - Add contact - 添加联系人 - - - - Ca&ncel - 取消(&N) - - - - Talking - Conference - 谈话 - 会议 - - - - Add a Contact - 添加一个联系人 - - - - QtPresenceMenuManager - - - Online - 在线 - - - - Invisible - 隐身 - - - - Away - 离开 - - - - Do Not Disturb - 请勿打扰 - - - - Log off - 注销 - - - - QtPrivacySettings - - - Privacy - 隐私 - - - - Privacy Settings - 隐私设置 - - - - QtProfileBar - - - Click here to change your status - 点击这里以改变你的状态 - - - - - active - 激活 - - - - voicemail - 语音邮件 - - - - inactive - 非活动 - - - - unauthorized - 未授权 - - - - Set global presence to: - 设定全局 presence 到: - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - 高级 >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - 一个联系人需要有一个组,请设立一个组 - - - - << Simple - 《简单的 - - - - Select your avatar - 选择你的化身 - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - 无效的组名 - - - - Group name cannot be empty - 组名不能是空的 - - - - QtSecuritySettings - - - Security - 安全更新 - - - - Security Settings - 安全设置 - - - - BETA - BETA - - - - QtSms - - - Please fill in a phone number. - 请填写一个电话号码 - - - - Do you want to continue? - 你希望继续吗? - - - - Your SMS has not been sent - 你的短信没有发出 - - - - Your SMS has been sent - 你的短信已经发出 - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - 您不能发送一个空消息。 - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - 未连接 - - - - Register done - 注册完毕 - - - - Unregister done - 未注册 - - - - Connecting - 连接中 - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - 状态 - - - - - - - - - - - - - @product@ - - - - - - Call SIP - 呼叫SIP - - - - Call land line - 拨打座机 - - - - Call Mobile - 拨打手机 - - - - Call @company@ - - - - - - Call - 呼叫 - - - - Send SMS - 发送短消息 - - - - Online - 在线 - - - - Invisible - 隐身 - - - - Away - 离开 - - - - Do Not Disturb - 请勿打扰 - - - - Internet Connection Error - 网络连接错误 - - - - Offline - 离线 - - - - Connecting... - 连接中... - - - - Send a SMS - 发送一个短信 - - - - Start a chat - 开始一个文本聊天 - - - - Place Call - 拨打电话 - - - - Send File - 发送文件 - - - - Multiple Status - 多重状态 - - - - Unknown Status - 未知状态 - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - 取消(&C) - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - 修改我的资料 - - - - Add a Contact - 添加一个联系人 - - - - Hide Unavailable Contacts - 隐藏不可用的联系人 - - - - Show Unavailable Contacts - 显示不可用的联系人 - - - - Hide Groups - 隐藏组 - - - - Show Groups - 显示组 - - - - You have unfinished call(s). - 你有没有完成的呼叫。 - - - - Are you sure you want to log off? - 你确认要登出吗? - - - - &Log Off - 登出(&L) - - - - Disable &Video Calls - 禁止视频呼叫(&V) - - - - Enable &Video Calls - 启用视频呼叫(&V) - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - <b>会议不能够被开始,如果还有活动的电话呼叫的话。</b><br><br>结束所有的电话呼叫并重新开始。 - - - - @product@ - Warning - - - - - - - Log &Off... - 注销(&O)... - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - 联系人名单 - - - - QtUserProfile - - - Edit Contact - 编辑联系人 - - - - - &Authorize - 批准(&A) - - - - - &Block - 阻止(&B) - - - - Network error. - 网络错误。 - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - 错误的电邮/密码 - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - 视频 - - - - - Normal - 正常 - - - - - Good - - - - - - Very good - 很好 - - - - - Excellent - 优秀 - - - - Video Settings - 视频设置 - - - - QtVoicemailSettings - - - Voicemail - 语音邮件 - - - - Voicemail Settings - 语音邮件设置 - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - 高级 - - - - General - 常规 - - - - Accounts - 帐户 - - - - Audio - 音频 - - - - Call Forward - 呼叫转移 - - - - Language - 语言 - - - - Privacy - 隐私 - - - - Video - 视频 - - - - Voicemail - 语音邮件 - - - - security - 安全 - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - 取消(&C) - - - - - - - Conference - 会议 - - - - Call - 呼叫 - - - - Account - - - - - Add a Contact - 添加一个联系人 - - - - You have unfinished call(s). - 你有没有完成的呼叫。 - - - - @product@ - Warning - - - - - - - Home - 主页 - - - - Are you sure you want to exit the application? - 你确定要退出这个程序吗? - - - - &Exit - 退出(&E) - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - 取消 - - - - OK - 确定 - - - - Enter the new group name: - 输入新的组名: - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - 表格 - - - - Enable call encryption - 启用呼叫加密 - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - 更新你的资料 - - - - Yahoo! ID: - Yahoo!名称: - - - - MSN ID: - MSN 名称: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk 名称: - - - - exemple: username@server - 实例:用户名@服务器 - - - - SIP ID: - SIP 名称: - - - - ICQ ID: - ICQ 名称: - - - - AIM ID: - AIM 名称: - - - - @company@ ID: - - - - - - SmsWindow - - - Send - 发送 - - - - @product@ - SMS - - - - - - Click here to add a phone number - 点击这里已添加一个电话号码 - - - - 0 /160 - 0/160 - - - - Enter your signature here - 在这里输入你的签名 - - - - Signature: - 签名: - - - - Phone number(s): - 电话号码: - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - 在这里输入电话号码<br>它们必须通过 & 或者; 或,来隔开 - - - - SoftUpdateWindow - - - Cancel - 取消 - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - 表格 - - - - VideoSettings - - - Normal - 正常 - - - - Good - - - - - Very good - 很好 - - - - Excellent - 优秀 - - - - Enable video - 启用视频 - - - - Webcam Selection - 网络摄像头选择 - - - - Webcam device: - 网络视频设备 - - - - Webcam Preview - 网络摄像头预览 - - - - Connection Type - 连接类别 - - - - Video quality - 视频质量 - - - - Down (kbit/s) - 下载(kbit/s) - - - - Up (kbit/s) - 上载(kbit/s) - - - - 0 to 512 - 0至512 - - - - 0 to 128 - 0至128 - - - - 512 to 2048 - 512至2048 - - - - 128 to 256 - 128至256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - 视频质量取决于你的网络带宽 - - - - Make a test video call - 进行一个视频聊天测试 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - 表格 - - - - Phone number of your voicemail: - 你的语音邮件的电话号码: - - - - Please fill in here the information about your voicemail - 请在这里填写关于你的语音邮件的信息 - - - - WengoConfigDialog - - - Cancel - 取消 - - - - Save - 保存 - - - - Title - 标题 - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - 接受(&A) - - - - &Hidden - - - - - - &Tools - 工具(&T) - - - - &Help - 帮助(&H) - - - - &Actions - 操作(&A) - - - - @company@ - - - - - - &Close - 关闭(&C) - - - - Dialpad - 拨号盘 - - - - @product@ - - - - - - Start Conference - 开始会议 - - - - Send SMS - 发送短消息 - - - - Contacts - 联系人 - - - - History - 历史 - - - - Clear &History - 清除历史(&H) - - - - ToolBar - 工具栏 - - - - Show/Hide Unavailable &Contacts - 显示/隐藏 离线联系人 - - - - &Chat Sessions - 聊天会话(&C) - - - - &All - 全部(&A) - - - - &HangUp - 挂断(&H) - - - - &Hold/Resume - 暂停/继续(&H) - - - - Show/Hide &Groups - 显示/隐藏组(&G) - - - - &Outgoing Calls - 呼出电话(&O) - - - - &Incoming Calls - 来电(&I) - - - - &Missed Calls - 未接电话(&M) - - - - Enable/Disable &Video Calls - 使用/禁止视频通话(&V) - - - - Short Text &Messages (SMS) - 短信(SMS) - - - - Rejected Calls - 拒绝的通话 - - - - &Contacts - 联系人(&C) - - - - &About... - 关于(&A)... - - - - Add &Contact... - 添加联系人(&C)... - - - - &Configuration... - 配置(&C)... - - - - Send SMS... - 发送短信... - - - - View My &Profile... - 查看我的配置(&P)... - - - - - View My Profile - 查看我的配置 - - - - Start &Conference... - 开始会议(&C)... - - - - &Find Contact... - 查找联系人(&F)... - - - - Log &Off... - 注销(&O)... - - - - - Log Off - 注销 - - - - Show &Chat Window - 显示聊天窗口(&C) - - - - - Show Chat Window - 显示聊天窗口 - - - - Show &File Transfer - 显示文件传输(_F) - - - - Add Contact - 添加联系人 - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - 添加 - - - - SMS - 短信 - - - - Conference - 会议 - - - - Wizard - - - Cancel - 取消 - - - - Finish - 完成 - - - - Next > - 下一个 > - - - - < Back - < 返回 - - - - Simple Wizard - Step %1 of %2 - 简单向导 - 步骤%1 在 %2 中 - - - - YahooSettings - - - Login: - 登录: - - - - Password: - 密码: - - - - Yahoo! Settings - Yahoo!设置 - - - - Use Yahoo! Japan server - 使用Yahoo!日本服务器 - - - - Forgot your Yahoo! password? - 忘记你的Yahoo!密码? - - - - Get a new Yahoo! Account - 获得一个新的Yahoo!帐号 - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_HK.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_HK.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_HK.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh_HK.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,5295 +0,0 @@ - - - - - AIMSettings - - - Login: - 登入: - - - - Forgot your AIM password? - 忘記了你的AIM密碼? - - - - Get a new AIM Account - 取得一個新的AIM帳號 - - - - Password: - 密碼: - - - - AIM Settings - AIM 設定 - - - - AboutWindow - - - About - 關於 - - - - Copyright (C)2008 Mbdsys - - - - - Authors - 著作群 - - - - Close - 關閉 - - - - 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. - - - - - - @product@ - About - - - - - - @product@, a voice over Internet phone - - - - - - AcceptDialog - - - File Transfer - 檔案傳輸 - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - 測試.bmp - - - - &Accept - 接受(&A) - - - - &Cancel - 取消(&C) - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">聯絡:</span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">檔案名稱 : </span></p></body></html> - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>要接收的文件</h1></span></p></body></html> - - - - AccountSettings - - - &Edit my profile - 修改我的顯示信息(&E) - - - - AddAccount - - - Configure your account: - 設定你的帳戶: - - - - &Next - 下一頁(&N) - - - - Need help? - 需要幫助? - - - - You don't have any account ? Click here - 沒有任何帳戶?請按此處 - - - - &Back - 回到上一頁(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - - @company@ account - - - - - - Generic SIP account - - - - - - AddIMContact - - - Cancel - 取消 - - - - Contact Type (protocol): - 聯絡人類別 - - - - Contact ID: - 聯絡人ID: - - - - Account: - 帳戶: - - - - Enable - 啟用 - - - - Login - 登入 - - - - Add - 添加 - - - - @product@ - Add a Contact Account - - - - - - AddSIPAccount - - - Password: - 密碼: - - - - Need help? - 需要幫助? - - - - &Back - 回到上一頁(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - &Connect - 連接(&C) - - - - Activate presence and chat (SIP/SIMPLE) - 啟用出席資料及聊天功能 (SIP/SIMPLE) - - - - Displayname: - 顯示名稱: - - - - login / username: - 登入/用戶名稱: - - - - Account name: - 帳戶名稱: - - - - Proxy: - 代理: - - - - : - - - - - Server: - 伺服器: - - - - SIP Domain / Realm: - SIP 域名: - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - <span style="font-size:16pt;">SIP 設定</span><br><br><span>請填入你的資料<br/>讓 WengoPhone 能夠登錄你的 SIP 帳戶</span> - - - - Advanced - 進階 - - - - AddWengoAccount - - - Password: - 密碼: - - - - Need help? - 需要幫助? - - - - &Back - 回到上一頁(&B) - - - - Cancel - 取消 - - - - @product@ - Login - - - - - - &Connect - 連接(&C) - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - <span style="font-size:16pt;">Login</span><br><br><span>請輸入你的電郵地址及密碼</span> - - - - Email Address: - 電郵地址: - - - - Click here if you don't have a @company@ account - - - - - - Forgot your @company@ password? - - - - - - AdvancedConfigWindow - - - Close - 關閉 - - - - Preference Name - 顯示名稱 - - - - Type - 類型 - - - - Value - - - - - Default Value - 預設值 - - - - Save - 儲存 - - - - Status - 狀態 - - - - @product@ - Advanced Configuration - - - - - - AdvancedSettings - - - Add - 添加 - - - - Advanced Settings - 進階設定 - - - - Advanced Configuration Window - 進階設定視窗 - - - - Automatically answer incoming calls from - 自動接聽來電,如果它來自 - - - - Remove - 刪除 - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - 警告,這部分只針對高級用戶。<br>任何錯誤皆可能會對軟件造成嚴重損壞。 - - - - AppearanceSettings - - - Toolbar - - - - - - &Icons && Text - - - - - - Icons &Only - - - - - - &Hidden - - - - - - Chat Theme - - - - - - Form - 格式 - - - - AudioSettings - - - Reset - 重設 - - - - Audio Codecs - 音訊編碼解碼器 - - - - &Input device: - - - - - - &Output device: - - - - - - &Ringing device: - - - - - - &Make a test call - - - - - - - Test - - - - - - &Advanced >> - - - - - - &Half Duplex - - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - 格式 - - - - AvatarWidget - - - Form - 格式 - - - - BrowserSoftUpdateWindow - - - Close - 關閉 - - - - @product@ - Update available - - - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - CallForwardSettings - - - 3rd: - 第三: - - - - 1st: - 第一: - - - - 2nd: - 第二: - - - - - - (+ country code) phone number - (+國家碼)電話號碼 - - - - Forward all unanswered calls to message box - 轉移所有未接來電至信箱 - - - - Disable call forwarding - 取消來電轉駁 - - - - Forward all unanswered calls to following phone numbers: - 轉移所有未接來電至以下電話號碼: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - 例如+3314500XXXX (+33是國際電話區號,14500XXXX是電話號碼) - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - - CallToaster - - - Incoming Call - 來電 - - - - Message - 訊息 - - - - ChatLogViewer - - - Chat History - 聊天紀錄 - - - - &Contact - 聯絡人(&C) - - - - &Tools - 工具(&T) - - - - &Help - 幫助(&H) - - - - &Actions - 活動(&A) - - - - Main Toolbar - 主工具欄 - - - - - - Call Contact - 致電聯絡人 - - - - - - Send a File - 傳送檔案 - - - - createChatConf - 建立聊天會議 - - - - - - Show Contact Info - 顯示聯絡人信息 - - - - blockContact - 禁止聯絡人 - - - - &Save History As... - 保存記錄為... (&S) - - - - actionRestartChat - actionRestartChat - - - - @company@ - - - - - - ChatMainWindow - - - &Contact - 聯絡人(&C) - - - - &Tools - 工具(&T) - - - - &Actions - 活動(&A) - - - - Main Toolbar - 主工具欄 - - - - - - Call Contact - 致電聯絡人 - - - - - - Send a File - 傳送檔案 - - - - - - Show Contact Info - 顯示聯絡人信息 - - - - blockContact - 禁止聯絡人 - - - - &Save History As... - 保存記錄為... (&S) - - - - @company@ - - - - - - MainWindow - 主視窗 - - - - &Edit - - - - - - Cu&t - - - - - - Ctrl+X - - - - - - &Copy - - - - - - Ctrl+C - - - - - - &Paste - - - - - - Ctrl+V - - - - - - Start Chat Conference - - - - - - &Close - - - - - - Conference - - - - - - ChatRoomInviteWidget - - - Chat room - 聊天室 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - (Conference participants) - (參與討論者) - - - - &Remove - 移除(&R) - - - - &Start - 開始(&S) - - - - Group Name - 群組名稱 - - - - &Add - 添加(&A) - - - - ChatToaster - - - Message - 訊息 - - - - Incoming Chat - 新聊天信息 - - - - ChatWidget - - - Form - 格式 - - - - ConferenceCallWidget - - - Cancel - 取消 - - - - Start - 開始 - - - - Phone number 2: - 電話號碼2: - - - - Phone number 1: - 電話號碼1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - - &Add >> - - - - - - << &Remove - - - - - - Available Contacts - - - - - - &Start - 開始(&S) - - - - Cancel - 取消 - - - - ContactGroupPopupMenu - - - Remove Contact Group - 移動聯絡群組 - - - - Rename Contact Group - 重新命名聯絡群組 - - - - Delete group - 移除聯絡群組 - - - - Do you really want to delete this group? - 你確定要把這個聯絡群組刪除嗎? - - - - &Yes - 是(&Y) - - - - &No - 否(&N) - - - - ContactList - - - Contact List - 聯絡人清單 - - - - ContactWidget - - - No mobile phone number set - 沒有設定手機電話號碼 - - - - No landline phone number set - 沒有設定固網電話號碼 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - - CrashReport - - - Cancel - 取消 - - - - Program Failure - 程式故障 - - - - Send - 發送 - - - - Optional Information - 選擇性填上的資訊 - - - - Your Mail: - 你的電郵地址: - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - 無法使用 - - - - Click here to change your call forward settings - 按此修改你的來電轉駁設定 - - - - Call forward mode: - 來電轉駁模式: - - - - Purchase call out credits - 購買 call out 點數 - - - - Call Forward Method - 來電轉駁方式 - - - - Call Voice Mail - 致電留言信箱 - - - - Click here to buy @company@'s credits - - - - - - DesktopService - - - Root Folder - 根資料夾 - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - 傳送聲音至對話者 - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - 按此致電你的留言信箱 - - - - New Voice Mail: - 新的語音: - - - - Click here to see missed call(s) - 按此查看未接來電 - - - - Missed Call(s): - 未接來電: - - - - FileTransferDialog - - - ... - ... - - - - Download - 下載 - - - - Upload - 上載 - - - - Click here to change your download folder - 按此轉換下載資料夾 - - - - Download folder: - 下載資料夾: - - - - Clean all items in the list - 清除清單上的項目 - - - - &Clean - 清理(&C) - - - - @product@ - File Transfer Manager - - - - - - FileTransferItem - - - Cancel - 取消 - - - - Form - 格式 - - - - Pause - 暫停 - - - - <i>From:</i> - <i>來自:</i> - - - - GeneralSettings - - - When I double-click on a contact - 當我雙擊一個聯絡人 - - - - Call cell phone or land line if contact not online - 當聯絡人不在線,致電手提電話或固網電話 - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - 空閒狀態 - - - - minutes - 分鐘 - - - - Show me as "Away" when I am inactive for: - 顯示為「離開」,當我處於非活動狀態 - - - - When I start my computer - 當我啟動我的電腦 - - - - Automatically start @product@ - - - - - - GoogleTalkSettings - - - Login: - 登入: - - - - Password: - 密碼: - - - - GoogleTalk Settings - GoogleTalk 設定 - - - - Forgot your GoogleTalk password? - 忘記了你的 GoogleTalk 密碼? - - - - Get a new GoogleTalk Account - 獲得一個新的 GoogleTalk 帳號 - - - - HttpProxyLoginWindow - - - Cancel - 取消 - - - - HTTP Proxy Address: - HTTP代理地址: - - - - HTTP Proxy Port Number: - HTTP代理端號碼: - - - - HTTP Proxy Login: - HTTP代理用戶名稱: - - - - HTTP Proxy Password: - HTTP代理密碼: - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>你的本地HTTP代理使用密碼驗証<br>請登入</span> - - - - OK - 確定 - - - - @product@ - Local HTTP Proxy - - - - - - ICQSettings - - - Login: - 登入: - - - - Password: - 密碼: - - - - ICQ Settings - ICQ 設定 - - - - Forgot your ICQ password? - - - - - - Get a new ICQ Account - - - - - - IMAccountManager - - - Close - 關閉 - - - - Login - 登入 - - - - Add - 添加 - - - - Delete - - - - - - Modify - - - - - - Protocol - - - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - - IMAccountTemplate - - - Cancel - 取消 - - - - Save - 儲存 - - - - IM Account Settings - - - - - - IMContactManager - - - Add - 添加 - - - - Delete - - - - - - Contact Type (protocol) - - - - - - Click on the add button below to add a new ID - - - - - - Contact ID - - - - - - IMProfileWidget - - - - Enter your nickname here - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - - Add an IM account - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - ImageSelector - - - Cancel - 取消 - - - - OK - 確定 - - - - Go Up - - - - - - Refresh - - - - - - JabberSettings - - - Login: - 登入: - - - - Password: - 密碼: - - - - Jabber Settings - - - - - - Connect Server: - - - - - - <u>Advanced Options</u> - - - - - - Require TLS - - - - - - Port: - - - - - - Use TLS if available - - - - - - Allow plaintext authentication over unencrypted streams - - - - - - 5222 - - - - - - Force old (port 5223) SSL - - - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - - More information here. - - - - - - LogAccount - - - Password: - 密碼: - - - - Need help? - 需要幫助? - - - - Cancel - 取消 - - - - Delete - - - - - - @product@ - Login - - - - - - Account: - 帳戶: - - - - &Connect - 連接(&C) - - - - Forgot your @company@ password? - - - - - - &Modify - - - - - - Configure a &New Profile - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - - MSNSettings - - - Login: - 登入: - - - - Password: - 密碼: - - - - MSN Settings - - - - - - Forgot your MSN password? - - - - - - Get a new MSN Account - - - - - - Use HTTP method - - - - - - MainWindow - - - MainWindow - 主視窗 - - - - Command::terminate() - - - - - - Command::start() - - - - - - Accept Call - - - - - - Send Chat Message - - - - - - Make Call - - - - - - Hang Up - - - - - - ManageBlockedUsersSettings - - - Close - 關閉 - - - - Unblock User - - - - - - Manage blocked users - - - - - - @product@ - Manage blocked users - - - - - - NoWengoAlert - - - @product@ - SMS - - - - - - I have a @company@ account - - - - - - Create a @company@ account - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - - NotificationSettingsItem - - - Sound file - - - - - - Find a sound file - - - - - - Play sound file - - - - - - Play - - - - - - NotifyDialog - - - File Transfer - 檔案傳輸 - - - - &Ok - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - - PhoneCallWidget - - - &Accept - 接受(&A) - - - - Status - 狀態 - - - - 00:00:00 - - - - - - Nickname - - - - - - &Reject - - - - - - Dialpad - - - - - - Audio Smileys - - - - - - - Communication is encrypted - - - - - - PrivacySettings - - - Manage blocked users - - - - - - Privacy Rules - - - - - - Always sign in as "Invisible" (appear offline to all users) - - - - - - Allow chats from - - - - - - - Anyone - - - - - - - Only people from my contact list - - - - - - Allow calls from - - - - - - When I sign into @company@ - - - - - - ProfileDetails - - - Cancel - 取消 - - - - Save - 儲存 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - - General - - - - - - Network IDs (MSN, Jabber...) - - - - - - Advanced >> - 進階 >> - - - - Fill in all your network Id to stay connected with your contacts - - - - - - Contact - - - - - - Group: - - - - - - Last Name: - - - - - - First Name: - - - - - - Details - - - - - - Web/blog: - - - - - - Country: - - - - - - State: - - - - - - City: - - - - - - Gender: - - - - - - Birth Date: - - - - - - Email: - - - - - - Notes - - - - - - Phone Numbers - - - - - - Home phone - - - - - - Mobile phone - - - - - - dd MMMM yyyy - - - - - - Unknown - - - - - - Male - - - - - - Female - - - - - - QObject - - - @product@ - - - - - - QtAccountSettings - - - Accounts - - - - - - Accounts Settings - - - - - - QtAddAccount - - - Configure your voip account - - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - - QtAddAccountUtils - - - Test - - - - - - Audio Test Call - - - - - - Video Test Call - - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - - Configure your SIP profile - - - - - - QtAddWengoAccount - - - Login - 登入 - - - - Please enter an email address. - - - - - - Please enter your email address<br/>and your password - - - - - - @product@ - Connexion - - - - - - QtAdvancedIMContactManager - - - Cancel - 取消 - - - - @product@ - - - - - - Are sure you want to delete this IM contact? - - - - - - - &Delete - - - - - - QtAdvancedSettings - - - Advanced - 進階 - - - - Advanced Settings - 進階設定 - - - - QtAppearanceSettings - - - - Me - - - - - - Hello - - - - - - How are you? - - - - - - - - Other - - - - - - I am fine - - - - - - Have to go - - - - - - Bye - - - - - - Appearance - - - - - - Appearance Settings - - - - - - QtAudioSettings - - - - Advanced - 進階 - - - - Audio - - - - - - Audio Settings - - - - - - QtCallBar - - - +(country code) number or nickname - - - - - - QtCallForwardSettings - - - - Call Forward - - - - - - Call Forward Settings - - - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - - - - - - QtChatLogViewer - - - Edit Contact - - - - - - QtChatTabWidget - - - Close chat - - - - - - QtChatWidget - - - %1 is connected. - - - - - - %1 is disconnected. - - - - - - send - - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - - Your contact wishes to send a file with @company@. - - - - - - Go to %1 to install it - - - - - - %1 has joined the chat - - - - - - %1 has left the chat - - - - - - QtChatWindow - - - Edit Contact - - - - - - @product@ Chat - - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - - Hold first interlocutor and call second one - - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - - Start Conference - - - - - - - @product@ - Proceed Conference - - - - - - QtContactList - - - &Yes - 是(&Y) - - - - &No - 否(&N) - - - - Merge %1 with %2? - - - - - - @product@ - Merge Contacts - - - - - - QtContactManager - - - &Yes - 是(&Y) - - - - &No - 否(&N) - - - - Home phone - - - - - - Mobile phone - - - - - - @product@ - - - - - - Edit Contact - - - - - - Do you really want to delete this contact? - - - - - - Start chat - - - - - - - Delete contact - - - - - - Call - - - - - - Free call - - - - - Work phone - - - - - - Send SMS - - - - - - Edit contact - - - - - - Block contact - - - - - - Invite to conference - - - - - - Go to website - - - - - - Send file - - - - - - Forward to mobile phone - - - - - - QtContactWidget - - - No mobile phone number set - 沒有設定手機電話號碼 - - - - No landline phone number set - 沒有設定固網電話號碼 - - - - - Click here to call - - - - - - - Click here to set a phone number - - - - - - Click here to edit the contact - - - - - - Click here to send a SMS - - - - - - Click here to start a chat - - - - - - Click here to start a free call - - - - - - Click here to send a file - - - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - - - - - - @product@ - Voice Mail - - - - - - QtFileTransfer - - - &Yes - 是(&Y) - - - - &No - 否(&N) - - - - Choose a directory - - - - - - Overwrite File? - - - - - - A file called %1 already exists.Do you want to overwrite it? - - - - - - - File size error - - - - - - %1 exceeds the maximum authorized size. - - - - - - %1 has size 0. - - - - - - %1 is a directory. - - - - - - You can not send a directory. - - - - - - %1 is a shortcut. - - - - - - You can not send a shortcut. - - - - - - All Files (*.* *) - - - - - - Please upgrade<br> your @product@ - - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - - QtFileTransferItem - - - - - Cancel - 取消 - - - - Remove - 刪除 - - - - - Pause - 暫停 - - - - Starting - - - - - - From: - - - - - - To: - - - - - - Open - - - - - - Resume - - - - - - Waiting for anwser... - - - - - - Done - - - - - - Failed - - - - - - Paused - - - - - - Paused by peer - - - - - - Cancelled - - - - - - Cancelled by peer - - - - - - - Downloading... - - - - - - Uploading... - - - - - - Waiting for peer... - - - - - - An error occured during the file transfer - - - - - - This may be caused by : - - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - - QtGeneralSettings - - - General - - - - - - General Settings - - - - - - QtHistory - - - Incoming call - - - - - - Outgoing call - - - - - - Missed call - - - - - - Rejected call - - - - - - Outgoing SMS - - - - - - Do you want to call %1? - - - - - - Chat session - - - - - - @product@ - Call History - - - - - - Type - 類型 - - - - Name/ID - 名稱/帳戶 - - - - Date - 日期 - - - - Duration - 持續時間 - - - - QtHistoryWidget - - - Erase this entry - - - - - - Open in SMS window - - - - - - Call this peer - - - - - - Show chat log - - - - - - QtIMAccountManager - - - Cancel - 取消 - - - - @product@ - - - - - - &Delete - - - - - - Are sure you want to delete this account? - - - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - - Error: %1 - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do not disturb - - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - - QtIMAccountPlugin - - - @product@ - - - - - - Please enter a login - - - - - - QtIMAccountPresenceMenuManager - - - Cancel - 取消 - - - - @product@ - - - - - - &Delete - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Disconnect - - - - - - Delete Account - - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - - QtIMProfileWidget - - - Edit My Profile - - - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - - QtLanguagesSettings - - - Language - - - - - - Language Settings - - - - - - QtLogAccount - - - Invalid account - - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - - QtNotificationSettings - - - Incoming call (ringtone) - - - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - - - - - - Incoming chat - - - - - - IM account connected - - - - - - IM account disconnected - - - - - - Contact online - - - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - - - - - - Sounds - - - - - - QtPhoneCall - - - Status - 狀態 - - - - Incoming Call - 來電 - - - - Resume - - - - - - Hang-up - - - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - - - - - - Talking - - - - - - Dialing - - - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - - - - - - Redirected - - - - - - Initialization... - - - - - - Closed - - - - - - - Hold - - - - - - Add contact - - - - - - Ca&ncel - - - - - - Talking - Conference - - - - - - Add a Contact - - - - - - QtPresenceMenuManager - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Log off - - - - - - QtPrivacySettings - - - Privacy - - - - - - Privacy Settings - - - - - - QtProfileBar - - - Click here to change your status - - - - - - - active - - - - - - voicemail - - - - - - inactive - - - - - - unauthorized - - - - - - Set global presence to: - - - - - - Voice mail - - - - - - QtProfileDetails - - - Advanced >> - 進階 >> - - - - - @product@ - - - - - - A contact must have a group, please set a group. - - - - - - << Simple - - - - - - Select your avatar - - - - - - @product@ - No Group Selected - - - - - - @company@ Avatars - - - - - - QtRenameGroup - - - Bad group name - - - - - - Group name cannot be empty - - - - - - QtSecuritySettings - - - Security - - - - - - Security Settings - - - - - - BETA - - - - - - QtSms - - - Please fill in a phone number. - - - - - - Do you want to continue? - - - - - - Your SMS has not been sent - - - - - - Your SMS has been sent - - - - - - Your message is too long. -This will send - - - - - - SMS. - - - - - - - You can not send an empty message. - - - - - - - - - @company@ SMS service - - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - - @product@ update failed to start: try to update @product@ manually - - - - - - QtStatusBar - - - - Not connected - - - - - - Register done - - - - - - Unregister done - - - - - - Connecting - - - - - - Output volume is muted - - - - - - Output volume is 0 - - - - - - Click to adjust output volume - - - - - - Input volume is muted - - - - - - Input volume is 0 - - - - - - Click to adjust input volume - - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - 狀態 - - - - - - - - - - - - - @product@ - - - - - - Call SIP - - - - - - Call land line - - - - - - Call Mobile - - - - - - Call @company@ - - - - - - Call - - - - - - Send SMS - - - - - - Online - - - - - - Invisible - - - - - - Away - - - - - - Do Not Disturb - - - - - - Internet Connection Error - - - - - - Offline - - - - - - Connecting... - - - - - - Send a SMS - - - - - - Start a chat - - - - - - Place Call - - - - - - Send File - - - - - - Multiple Status - - - - - - Unknown Status - - - - - - Quit @product@ - - - - - - QtToolBar - - - &Cancel - 取消(&C) - - - - @product@ - Proceed Conference - - - - - - Edit My Profile - - - - - - Add a Contact - - - - - - Hide Unavailable Contacts - - - - - - Show Unavailable Contacts - - - - - - Hide Groups - - - - - - Show Groups - - - - - - You have unfinished call(s). - - - - - - Are you sure you want to log off? - - - - - - &Log Off - - - - - - Disable &Video Calls - - - - - - Enable &Video Calls - - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - - @product@ - Warning - - - - - - - Log &Off... - - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - - - - - - QtUserProfile - - - Edit Contact - - - - - - - &Authorize - - - - - - - &Block - - - - - - Network error. - - - - - - - @product@ - Authorization Request - - - - - - QtUserProfileHandler - - - - @product@ - - - - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - Wrong email/password entered - - - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - - QtVideoSettings - - - Video - - - - - - - Normal - - - - - - - Good - - - - - - - Very good - - - - - - - Excellent - - - - - - Video Settings - - - - - - QtVoicemailSettings - - - Voicemail - - - - - - Voicemail Settings - - - - - - QtWebDirectory - - - @product@ - Directory - - - - - - QtWengoConfigDialog - - - Advanced - 進階 - - - - General - - - - - - Accounts - - - - - - Audio - - - - - - Call Forward - - - - - - Language - - - - - - Privacy - - - - - - Video - - - - - - Voicemail - - - - - - security - - - - - - Notifications - - - - - QtWengoPhone - - - &Cancel - 取消(&C) - - - - - - - Conference - - - - - - Call - - - - - - Account - - - - - Add a Contact - - - - - - You have unfinished call(s). - - - - - - @product@ - Warning - - - - - - - Home - - - - - - Are you sure you want to exit the application? - - - - - - &Exit - - - - - - @product@ - Call Error - - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - 取消 - - - - OK - 確定 - - - - Enter the new group name: - - - - - - @product@ - Rename Contact Group - - - - - - SecuritySettings - - - Form - 格式 - - - - Enable call encryption - - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - - - - - - Yahoo! ID: - - - - - - MSN ID: - - - - - - Jabber/GoogleTalk ID: - - - - - - exemple: username@server - - - - - - SIP ID: - - - - - - ICQ ID: - - - - - - AIM ID: - - - - - - @company@ ID: - - - - - - SmsWindow - - - Send - 發送 - - - - @product@ - SMS - - - - - - Click here to add a phone number - - - - - - 0 /160 - - - - - - Enter your signature here - - - - - - Signature: - - - - - - Phone number(s): - - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - - SoftUpdateWindow - - - Cancel - 取消 - - - - @product@ - Downloading update - - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - 格式 - - - - VideoSettings - - - Normal - - - - - - Good - - - - - - Very good - - - - - - Excellent - - - - - - Enable video - - - - - - Webcam Selection - - - - - - Webcam device: - - - - - - Webcam Preview - - - - - - Connection Type - - - - - - Video quality - - - - - - Down (kbit/s) - - - - - - Up (kbit/s) - - - - - - 0 to 512 - - - - - - 0 to 128 - - - - - - 512 to 2048 - - - - - - 128 to 256 - - - - - - 2048+ - - - - - - 256+ - - - - - - 8192+ - - - - - - 1024+ - - - - - - Video quality depends on your Internet connection bandwidth - - - - - - Make a test video call - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - - VoicemailSettings - - - Form - 格式 - - - - Phone number of your voicemail: - - - - - - Please fill in here the information about your voicemail - - - - - - WengoConfigDialog - - - Cancel - 取消 - - - - Save - 儲存 - - - - Title - - - - - - @product@ - Configuration - - - - - - WengoPhoneWindow - - - &Accept - 接受(&A) - - - - &Hidden - - - - - - &Tools - 工具(&T) - - - - &Help - 幫助(&H) - - - - &Actions - 活動(&A) - - - - @company@ - - - - - - &Close - - - - - - Dialpad - - - - - - @product@ - - - - - - Start Conference - - - - - - Send SMS - - - - - - Contacts - - - - - - History - - - - - - Clear &History - - - - - - ToolBar - - - - - - Show/Hide Unavailable &Contacts - - - - - - &Chat Sessions - - - - - - &All - - - - - - &HangUp - - - - - - &Hold/Resume - - - - - - Show/Hide &Groups - - - - - - &Outgoing Calls - - - - - - &Incoming Calls - - - - - - &Missed Calls - - - - - - Enable/Disable &Video Calls - - - - - - Short Text &Messages (SMS) - - - - - - Rejected Calls - - - - - - &Contacts - - - - - - &About... - - - - - - Add &Contact... - - - - - - &Configuration... - - - - - - Send SMS... - - - - - - View My &Profile... - - - - - - - View My Profile - - - - - - Start &Conference... - - - - - - &Find Contact... - - - - - - Log &Off... - - - - - - - Log Off - - - - - - Show &Chat Window - - - - - - - Show Chat Window - - - - - - Show &File Transfer - - - - - - Add Contact - - - - - - View My @company@ Account... - - - - - - Ctrl+W - - - - - - @company@ &Forum... - - - - - - @company@ &Wiki/FAQ... - - - - - - Learn more about @company@ Services... - - - - - - Search - - - - - - Find @company@ Contacts - - - - - - &Quit - - - - - - Ctrl+Q - - - - - - &Text Under Icons - - - - - - &Icons Only - - - - - - Add - 添加 - - - - SMS - - - - - - Conference - - - - - - Wizard - - - Cancel - 取消 - - - - Finish - - - - - - Next > - - - - - - < Back - - - - - - Simple Wizard - Step %1 of %2 - - - - - - YahooSettings - - - Login: - 登入: - - - - Password: - 密碼: - - - - Yahoo! Settings - - - - - - Use Yahoo! Japan server - - - - - - Forgot your Yahoo! password? - - - - - - Get a new Yahoo! Account - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh.ts qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh.ts --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh.ts 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/lang/qtwengophone_zh.ts 1970-01-01 00:00:00.000000000 +0000 @@ -1,4745 +0,0 @@ - - - - - AIMSettings - - - Password: - 密码 - - - - Login: - 登录 - - - - Forgot your AIM password? - 忘记了你的AIM密码? - - - - Get a new AIM Account - 获得一个新的AIM帐号 - - - - AIM Settings - - - - - AboutWindow - - - About - 关于 - - - - Copyright (C)2008 Mbdsys - - - - - Authors - 作者 - - - - Close - 关闭 - - - - 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. - - - - - @product@ - About - - - - - @product@, a voice over Internet phone - - - - - AcceptDialog - - - File Transfer - 文件传输 - - - - toto@wengo.fr - toto@wengo.fr - - - - test.bmp - test.bmp - - - - &Accept - 接受 - - - - &Cancel - 取消 - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Contact: </span></p></body></html> - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;">Filename: </span></p></body></html> - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-weight:600;"><h1>Incoming file</h1></span></p></body></html> - - - - - AccountSettings - - - &Edit my profile - &修改我的信息 - - - - AddAccount - - - Configure your account: - - - - - &Next - - - - - Need help? - 需要帮助? - - - - You don't have any account ? Click here - - - - - &Back - - - - - Cancel - 取消 - - - - @product@ - Login - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - - - @company@ account - - - - - Generic SIP account - - - - - AddIMContact - - - Contact Type (protocol): - 联系人类别 - - - - Contact ID: - 联系人ID - - - - Account: - 帐号 - - - - Enable - 启用 - - - - Login - 登陆 - - - - Add - 添加 - - - - Cancel - 取消 - - - - @product@ - Add a Contact Account - - - - - AddSIPAccount - - - &Back - - - - - &Connect - - - - - Activate presence and chat (SIP/SIMPLE) - - - - - Password: - 密码 - - - - Displayname: - - - - - login / username: - - - - - Account name: - - - - - Proxy: - - - - - : - - - - - Server: - - - - - SIP Domain / Realm: - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - - - Advanced - 高级 - - - - Need help? - 需要帮助? - - - - Cancel - 取消 - - - - @product@ - Login - - - - - AddWengoAccount - - - &Back - - - - - &Connect - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - - - Password: - 密码 - - - - Email Address: - 电邮地址: - - - - Need help? - 需要帮助? - - - - Cancel - 取消 - - - - @product@ - Login - - - - - Click here if you don't have a @company@ account - - - - - Forgot your @company@ password? - - - - - AdvancedConfigWindow - - - Close - 关闭 - - - - Preference Name - 偏爱的名称 - - - - Status - 状态 - - - - Type - 类别 - - - - Value - 数值 - - - - Default Value - 默认数值 - - - - Save - 保存 - - - - @product@ - Advanced Configuration - - - - - AdvancedSettings - - - Add - 添加 - - - - Advanced Settings - 高级设置 - - - - Advanced Configuration Window - 高级配置窗口 - - - - Automatically answer incoming calls from - 自动接听来电,如果它来自 - - - - Remove - 移动 - - - - Warning, this part is for advanced users.<br>Any mistake can badly damage the software. - - - - - AppearanceSettings - - - Form - 表格 - - - - Toolbar - - - - - &Icons && Text - - - - - Icons &Only - - - - - &Hidden - - - - - Chat Theme - - - - - AudioSettings - - - Reset - - - - - Audio Codecs - - - - - &Input device: - - - - - &Output device: - - - - - &Ringing device: - - - - - &Make a test call - - - - - - Test - - - - - &Advanced >> - - - - - &Half Duplex - - - - - Be aware, this section is for power users only. -Any change in the order of your codec list may cause problems running your @product@: you might not be able to call your contacts anymore. - - - - - AvatarFrame - - - Form - 表格 - - - - AvatarWidget - - - Form - 表格 - - - - BrowserSoftUpdateWindow - - - Close - 关闭 - - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - - - @product@ - Update available - - - - - CallForwardSettings - - - 3rd: - 第三 - - - - 1st: - 第一 - - - - 2nd: - 第二 - - - - - - (+ country code) phone number - (+国家码)电话号码 - - - - Forward all unanswered calls to message box - 转移所有未接来电到信箱 - - - - Disable call forwarding - 取消呼叫转移 - - - - Forward all unanswered calls to following phone numbers: - 转移所有的未接来电到一下的电话号码: - - - - For example +3314500XXXX (+33 is the country code and 14500XXXX is the phone number) - - - - - Call forwarding is active if you're not connected to @company@, when your line is busy or 20 seconds after you did not answer a call. You can configure up to three call forwards to landlines, mobile phones or voice mail (if applicable) - - - - - CallToaster - - - Incoming Call - 来电 - - - - Message - 消息 - - - - ChatLogViewer - - - Chat History - - - - - &Contact - &联系人 - - - - &Tools - &工具 - - - - &Help - &帮助 - - - - &Actions - &活动 - - - - Main Toolbar - 主要工具栏 - - - - - - Call Contact - 呼叫联系人 - - - - - - Send a File - 发送文件 - - - - createChatConf - 建立聊天会议 - - - - - - Show Contact Info - 显示联系人信息 - - - - blockContact - 禁止联系人 - - - - &Save History As... - &保存历史记录为... - - - - actionRestartChat - - - - - @company@ - - - - - ChatMainWindow - - - MainWindow - 主要窗口 - - - - &Contact - &联系人 - - - - &Tools - &工具 - - - - &Actions - &活动 - - - - Main Toolbar - 主要工具栏 - - - - - - Call Contact - 呼叫联系人 - - - - - - Send a File - 发送文件 - - - - - - Show Contact Info - 显示联系人信息 - - - - blockContact - 禁止联系人 - - - - &Save History As... - &保存历史记录为... - - - - @company@ - - - - - &Edit - - - - - &Close - &关闭 - - - - Cu&t - - - - - Ctrl+X - - - - - &Copy - - - - - Ctrl+C - - - - - &Paste - - - - - Ctrl+V - - - - - Start Chat Conference - - - - - Conference - 会议 - - - - ChatRoomInviteWidget - - - Chat room - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:MS Shell Dlg; font-size:8.25pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:12pt; font-weight:600;">Chat room</span></p></body></html> - - - - - (Conference participants) - - - - - &Remove - - - - - &Start - - - - - Group Name - - - - - &Add - - - - - ChatToaster - - - Message - 消息 - - - - Incoming Chat - 新消息 - - - - ChatWidget - - - Form - 表格 - - - - ConferenceCallWidget - - - Cancel - 取消 - - - - Start - 开始 - - - - Phone number 2: - 电话号码2: - - - - Phone number 1: - 电话号码1: - - - - ... - ... - - - - @product@ - Create a Conference - - - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - ConferenceInviteWidget - - - <span style=" font-size:18pt;">Conference</span><br /><br />Please enter two phone numbers </p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">or @company@ contact ID in order</p><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">to create a 3-way conference.</p> - - - - - &Add >> - - - - - << &Remove - - - - - Available Contacts - - - - - &Start - - - - - Cancel - 取消 - - - - ContactGroupPopupMenu - - - Remove Contact Group - 移动联系组 - - - - Rename Contact Group - 重命名联系组 - - - - Delete group - 删除组 - - - - Do you really want to delete this group? - 你确实想删除这个组吗? - - - - &Yes - 是的 - - - - &No - - - - - ContactList - - - Contact List - 联系人列表 - - - - ContactWidget - - - No mobile phone number set - 没有设置手机号码 - - - - No landline phone number set - 没有设置座机号码 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to edit this contact</p></body></html> - - - - - CrashReport - - - Program Failure - - - - - Send - 发送 - - - - Cancel - 取消 - - - - Optional Information - - - - - Your Mail: - - - - - The @product@ execution failed and has generated a diagnostic file. -This file contains useful information to solve the problem you are encountering. -Thanks for your contribution. - -The @product@ Development Team. - - - - - In order to help the developers you can complete this report. This step is optional. - - - - - Use Case Description: - - - - - CreditWidget - - - Not Available - 不可用 - - - - Click here to change your call forward settings - 点击这里修改你的呼叫转移设置 - - - - Call forward mode: - 呼叫转移模式: - - - - Purchase call out credits - 购买call out话费 - - - - Call Forward Method - 呼叫转移方式 - - - - Call Voice Mail - - - - - Click here to buy @company@'s credits - - - - - DesktopService - - - Root Folder - - - - - DialpadWidget - - - Click on the various color changing items to send sounds to your interlocutor. - - - - - EventWidget - - - - 0 - 0 - - - - Click here to call your voice mail - 点击这里呼叫你的语音信箱 - - - - New Voice Mail: - 新的语音邮件: - - - - Click here to see missed call(s) - 点击这里查看未接来电 - - - - Missed Call(s): - 未接来电: - - - - FileTransferDialog - - - Download - 下载 - - - - Upload - 上传 - - - - Click here to change your download folder - - - - - ... - ... - - - - Download folder: - 下载文件夹: - - - - Clean all items in the list - - - - - &Clean - 清理 - - - - @product@ - File Transfer Manager - - - - - FileTransferItem - - - Cancel - 取消 - - - - Form - 表格 - - - - Pause - 暂停 - - - - <i>From:</i> - - - - - GeneralSettings - - - When I double-click on a contact - 当我双击一个联系人 - - - - Call cell phone or land line if contact not online - 当联系人不在线,呼叫手机或座机 - - - - Prefere start a free call if applicable - - - - - Start in background mode - - - - - Prefere start a chat - - - - - Idle status - 空闲状态 - - - - minutes - 分钟 - - - - Show me as "Away" when I am inactive for: - 显示为“离开”,当我处于非活动状态 - - - - When I start my computer - 当我启动我的电脑 - - - - Automatically start @product@ - - - - - GoogleTalkSettings - - - Password: - 密码 - - - - Login: - 登录 - - - - GoogleTalk Settings - GoogleTalk设置 - - - - Forgot your GoogleTalk password? - 忘记了你的GoogleTalk密码? - - - - Get a new GoogleTalk Account - 获得一个新的GoogleTalk帐号 - - - - HttpProxyLoginWindow - - - Cancel - 取消 - - - - HTTP Proxy Address: - HTTP代理地址: - - - - HTTP Proxy Port Number: - HTTP代理端口号: - - - - HTTP Proxy Login: - HTTP代理用户名: - - - - HTTP Proxy Password: - HTTP代理密码: - - - - OK - - - - - <span style="font-size:18pt;">HTTP Proxy Authentication</span><br><br><span>Your local HTTP proxy uses authentication<br>Please enter your login and password</span> - - - - - @product@ - Local HTTP Proxy - - - - - ICQSettings - - - ICQ Settings - - - - - Password: - 密码 - - - - Login: - 登录 - - - - Forgot your ICQ password? - - - - - Get a new ICQ Account - - - - - IMAccountManager - - - Close - 关闭 - - - - Login - 登陆 - - - - Add - 添加 - - - - Protocol - 协议 - - - - Delete - 删除 - - - - Modify - 修改 - - - - @product@ - My Instant Messaging Accounts (MSN, Jabber...) - - - - - IMAccountTemplate - - - Cancel - 取消 - - - - Save - 保存 - - - - IM Account Settings - IM帐户设置 - - - - IMContactManager - - - Add - 添加 - - - - Delete - 删除 - - - - Contact ID - 联系人帐号 - - - - Contact Type (protocol) - 联系人类别(协议) - - - - Click on the add button below to add a new ID - 点击添加按钮来添加一个新的帐号 - - - - IMProfileWidget - - - - Enter your nickname here - 在这里输入你的昵称 - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - - - Add an IM account - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - ImageSelector - - - OK - - - - - Cancel - 取消 - - - - Go Up - - - - - Refresh - - - - - JabberSettings - - - Password: - 密码 - - - - Login: - 登录 - - - - Jabber Settings - Jabber设置 - - - - Connect Server: - 连接服务器: - - - - <u>Advanced Options</u> - <u>高级选项</u> - - - - Require TLS - 需要TLS - - - - Port: - 端口: - - - - Use TLS if available - 如果可以使用TLS - - - - Allow plaintext authentication over unencrypted streams - 允许未加密流下的纯文本验证 - - - - 5222 - 5222 - - - - Force old (port 5223) SSL - 强制旧的(端口5223)SSL - - - - Resource: - - - - - LanguagesSettings - - - Your language is not here, do you know that you can do your own translation on Launchpad? - - - - - More information here. - - - - - LogAccount - - - &Modify - - - - - &Connect - - - - - Password: - 密码 - - - - Account: - 帐号 - - - - Delete - 删除 - - - - Need help? - 需要帮助? - - - - Configure a &New Profile - - - - - Cancel - 取消 - - - - @product@ - Login - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - - - Forgot your @company@ password? - - - - - MSNSettings - - - Password: - 密码 - - - - Login: - 登录 - - - - MSN Settings - MSN设置 - - - - Forgot your MSN password? - 忘记了你的MSN密码? - - - - Get a new MSN Account - 获得一个新的MSN帐号 - - - - Use HTTP method - - - - - MainWindow - - - MainWindow - 主要窗口 - - - - Command::terminate() - - - - - Command::start() - - - - - Accept Call - - - - - Send Chat Message - - - - - Make Call - - - - - Hang Up - - - - - ManageBlockedUsersSettings - - - Close - 关闭 - - - - Unblock User - 取消阻止用户 - - - - Manage blocked users - 管理被阻止的用户 - - - - @product@ - Manage blocked users - - - - - NoWengoAlert - - - @product@ - SMS - - - - - I have a @company@ account - - - - - Create a @company@ account - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - NotificationSettings - - - Select the events for which a sound should be played. - - - - - NotificationSettingsItem - - - Sound file - 声音文件 - - - - Find a sound file - 寻找一个声音文件 - - - - Play sound file - 播放声音文件 - - - - Play - - - - - NotifyDialog - - - File Transfer - 文件传输 - - - - &Ok - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px; font-family:MS Shell Dlg;"><span style=" font-weight:600;">Status:</span> ...</p></body></html> - - - - - <html><head><meta name="qrichtext" content="1" /></head><body style=" white-space: pre-wrap; font-family:Sans Serif; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"><p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"><span style=" font-size:16pt; font-weight:600;">Upgrade</span></p><p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p></body></html> - - - - - PhoneCallWidget - - - Status - 状态 - - - - 00:00:00 - 0/160 {00:00:00?} - - - - Nickname - 昵称 - - - - &Accept - 接受 - - - - &Reject - - - - - Dialpad - 拨号盘 - - - - Audio Smileys - - - - - - Communication is encrypted - - - - - PrivacySettings - - - Manage blocked users - 管理被阻止的用户 - - - - Privacy Rules - 隐私规则 - - - - Always sign in as "Invisible" (appear offline to all users) - 总是显示“离线”(显示为脱机) - - - - Allow chats from - 允许即时信息自 - - - - - Anyone - 任何人 - - - - - Only people from my contact list - 只有我的联系人 - - - - Allow calls from - 允许呼叫自 - - - - When I sign into @company@ - - - - - ProfileDetails - - - Cancel - 取消 - - - - Save - 保存 - - - - General - 常规 - - - - Network IDs (MSN, Jabber...) - 网络ID(MSN,Jabber...) - - - - Advanced >> - 高级>> - - - - Fill in all your network Id to stay connected with your contacts - 填写你所有的网络ID以和你的联系人保持联系 - - - - Phone Numbers - 电话号码 - - - - Home phone - 家庭电话 - - - - Mobile phone - 手机 - - - - Contact - 联系人 - - - - Group: - - - - - Last Name: - - - - - First Name: - - - - - Details - 详细资料 - - - - Web/blog: - Web/blog: - - - - Country: - 国家 - - - - State: - - - - - City: - 城市: - - - - Gender: - 性别: - - - - Birth Date: - 生日 - - - - Email: - 电邮: - - - - dd MMMM yyyy - 日 月 年 - - - - Unknown - 未知 - - - - Male - - - - - Female - - - - - Notes - 注释 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - - - QObject - - - @product@ - - - - - QtAccountSettings - - - Accounts - 帐户 - - - - Accounts Settings - - - - - QtAddAccount - - - Configure your voip account - - - - - Please tell us if your account is provided<br/>by @company@ or by another service - - - - - QtAddAccountUtils - - - Test - - - - - Audio Test Call - - - - - Video Test Call - - - - - QtAddSIPAccount - - - Your profile name already exists! - - - - - Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account - - - - - Configure your SIP profile - - - - - QtAddWengoAccount - - - Please enter an email address. - - - - - Please enter your email address<br/>and your password - 请输入你的电邮地址<br/>和你的密码 - - - - Login - 登陆 - - - - @product@ - Connexion - - - - - QtAdvancedIMContactManager - - - Are sure you want to delete this IM contact? - - - - - - &Delete - &删除 - - - - Cancel - 取消 - - - - @product@ - - - - - QtAdvancedSettings - - - Advanced - 高级 - - - - Advanced Settings - 高级设置 - - - - QtAppearanceSettings - - - - Me - - - - - Hello - - - - - How are you? - - - - - - - Other - - - - - I am fine - - - - - Have to go - - - - - Bye - - - - - Appearance - - - - - Appearance Settings - - - - - QtAudioSettings - - - Audio - 音频 - - - - Audio Settings - 音频设置 - - - - - Advanced - 高级 - - - - QtCallBar - - - +(country code) number or nickname - +(国家编码)电话号码或者昵称 - - - - QtCallForwardSettings - - - - Call Forward - 呼叫转移 - - - - Call Forward Settings - 呼叫转移设置 - - - - To configure call forward settings you need to<BR> be logged in with a @company@ account. - - - - - QtChatHistoryWidget - - - Save As - 保存为 - - - - QtChatLogViewer - - - Edit Contact - 修改联系人 - - - - QtChatTabWidget - - - Close chat - 关闭聊天 - - - - QtChatWidget - - - send - 发送 - - - - %1 is connected. - - - - - %1 is disconnected. - - - - - Your file can not be sent: your contact must be connected on the @company@ network. - - - - - Your contact wishes to send a file with @company@. - - - - - Go to %1 to install it - - - - - %1 has joined the chat - - - - - %1 has left the chat - - - - - QtChatWindow - - - Edit Contact - 修改联系人 - - - - @product@ Chat - - - - - %1 is typing - - - - - QtConferenceCallWidget - - - Call SIP - 呼叫SIP - - - - Call land line - 拨打座机 - - - - Call Mobile - 拨打手机 - - - - Call @company@ - - - - - QtContactCallListWidget - - - <b>You can now inform your first interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.<br> - - - - - Hold first interlocutor and call second one - - - - - <b>You can now inform your second interlocutor he is going to be part of a conference call.</b><br><br>When it's done, click the button below to start the conference. - - - - - Start Conference - - - - - - @product@ - Proceed Conference - - - - - QtContactList - - - &Yes - 是的 - - - - &No - - - - - Merge %1 with %2? - 合并%1和%2? - - - - @product@ - Merge Contacts - - - - - QtContactManager - - - &Yes - 是的 - - - - &No - - - - - Home phone - 家庭电话 - - - - Mobile phone - 手机 - - - - Edit Contact - 修改联系人 - - - - - Delete contact - 删除联系人 - - - - Do you really want to delete this contact? - 你确实想删除这个联系人吗? - - - - Call - 呼叫 - - - - Free call - - - - - Work phone - 工作电话 - - - - Send SMS - 发送SMS - - - - Edit contact - 修改联系人 - - - - Block contact - 阻止联系人 - - - - Start chat - 开始聊天 - - - - Invite to conference - 邀请到会议 - - - - Go to website - - - - - Send file - - - - - Forward to mobile phone - - - - - @product@ - - - - - QtContactWidget - - - - Click here to call - 点击这里拨打电话 - - - - - Click here to set a phone number - 点击这里以设置一个电话号码 - - - - Click here to edit the contact - 点击这里以编辑联系人 - - - - Click here to send a SMS - 点击这里以发送一个短信 - - - - Click here to start a chat - 点击这里以开始一个聊天 - - - - Click here to start a free call - 点击这里以开始一个免费通话 - - - - Click here to send a file - - - - - No landline phone number set - 没有设置座机号码 - - - - No mobile phone number set - 没有设置手机号码 - - - - QtCrashReport - - - %1 Crash Report - - - - - QtEventWidget - - - Do you want to call your voice mail? - 你想呼叫你的语音信箱吗? - - - - @product@ - Voice Mail - - - - - QtFileTransfer - - - &Yes - 是的 - - - - &No - - - - - Choose a directory - 选择一个目录 - - - - Overwrite File? - 覆盖文件? - - - - A file called %1 already exists.Do you want to overwrite it? - 一个叫%1的文件已经存在。你想覆盖它吗? - - - - - File size error - - - - - %1 exceeds the maximum authorized size. - - - - - %1 has size 0. - - - - - %1 is a directory. - - - - - You can not send a directory. - - - - - %1 is a shortcut. - - - - - You can not send a shortcut. - - - - - All Files (*.* *) - - - - - Please upgrade<br> your @product@ - - - - - Tell your contact<br> to upgrade<br> his @product@ - - - - - The file cannot be received:you must upgrade your @product@ in order to receive it. - - - - - is trying to send you a file but his @product@ must be upgraded in order to receive it.Tell him to download the latest version. - - - - - QtFileTransferItem - - - - - Cancel - 取消 - - - - Remove - 移动 - - - - - Pause - 暂停 - - - - Starting - 开始 - - - - From: - 来自: - - - - To: - 到: - - - - Open - 打开 - - - - Resume - 继续 - - - - Waiting for anwser... - 等待答复... - - - - Done - 完成 - - - - Failed - 失败 - - - - Paused - 暂停 - - - - Paused by peer - 被好友暂停 - - - - Cancelled - 取消 - - - - Cancelled by peer - 被好友取消 - - - - - Downloading... - 下载中... - - - - Uploading... - 上传中... - - - - Waiting for peer... - - - - - An error occured during the file transfer - - - - - This may be caused by : - - - - - Your @product@ is not up to date. Please download the latest version on - - - - - The @company@ network may be temporarily unavailable. Please try later. - - - - - QtGeneralSettings - - - General - 常规 - - - - General Settings - 普通设置 - - - - QtHistory - - - Incoming call - 呼进电话 - - - - Outgoing call - 拨出电话 - - - - Missed call - 未接来电 - - - - Rejected call - 拒绝的来电 - - - - Outgoing SMS - 已发短信 - - - - Do you want to call %1? - 你想呼叫%1吗? - - - - Chat session - - - - - @product@ - Call History - - - - - Type - 类别 - - - - Name/ID - 名称/帐号 - - - - Date - 时间 - - - - Duration - 持续时间 - - - - QtHistoryWidget - - - Erase this entry - 去掉这个入口 - - - - Open in SMS window - 以短信窗口打开 - - - - Call this peer - 呼叫这个人 - - - - Show chat log - - - - - QtIMAccountManager - - - Cancel - 取消 - - - - &Delete - &删除 - - - - Are sure you want to delete this account? - - - - - - @product@ - - - - - QtIMAccountMonitor - - - - - Disconnected - - - - - Error: %1 - - - - - %1 (%2/%3) - %1 is message, %2 is currentStep, %3 is totalSteps - - - - - Online - 在线 - - - - Invisible - 隐身 - - - - Away - 离开 - - - - Do not disturb - - - - - QtIMAccountPlugin - - - Please enter a login - 请输入一个注册名 - - - - @product@ - - - - - QtIMAccountPresenceMenuManager - - - Online - 在线 - - - - Away - 离开 - - - - Do Not Disturb - 请勿打扰 - - - - Invisible - 隐身 - - - - Disconnect - - - - - Delete Account - - - - - Are sure you want to delete the account <b>%1</b>? - - - - - &Delete - &删除 - - - - Cancel - 取消 - - - - @product@ - - - - - QtIMProfileWidget - - - Edit My Profile - 修改我的资料 - - - - %1 (%2) -%3 - %1 is login, %2 is protocol, %3 is status - - - - - QtLanguagesSettings - - - Language - 语言 - - - - Language Settings - - - - - QtLogAccount - - - Invalid account - - - - - Warning - - - - - Do you really want to delete this profile - - - - - Yes - - - - - No - - - - - Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account - - - - - QtLoginDialog - - - @product@ - Connexion - - - - - QtNotificationSettings - - - Incoming call (ringtone) - 来电(铃音) - - - - Outgoing call (ringtone) - - - - - Call closed (hang up tone) - 结束通话(挂起音) - - - - Incoming chat - 文本信息 - - - - IM account connected - IM帐户已连接 - - - - IM account disconnected - IM帐户未连接 - - - - Contact online - 联系人在线 - - - - Notifications - - - - - Notifications Settings - - - - - QtNotificationSettingsItem - - - Choose a sound file - 选择一个声音文件 - - - - Sounds - 声音 - - - - QtPhoneCall - - - Status - 状态 - - - - Incoming Call - 来电 - - - - Resume - 继续 - - - - Hang-up - 挂断 - - - - - Hold - 挂起 - - - - Add contact - 添加联系人 - - - - Transfert call - - - - - QuteCom - Information - - - - - You must enter a phone number before forwarding - - - - - Error - 错误 - - - - Talking - 通话中 - - - - Dialing - 拨号中 - - - - User busy - - - - - Call Rejected - - - - - User/number not found - - - - - User not available - - - - - - Ringing - 响铃中 - - - - Redirected - 重新开始 - - - - Initialization... - 初始化 - - - - Closed - 关闭 - - - - Ca&ncel - - - - - Talking - Conference - - - - - Add a Contact - 添加一个联系人 - - - - QtPresenceMenuManager - - - Online - 在线 - - - - Away - 离开 - - - - Do Not Disturb - 请勿打扰 - - - - Invisible - 隐身 - - - - Log off - - - - - QtPrivacySettings - - - Privacy - 隐私 - - - - Privacy Settings - - - - - QtProfileBar - - - Click here to change your status - 点击这里以改变你的状态 - - - - - active - 激活 - - - - voicemail - 语音邮件 - - - - inactive - 非活动 - - - - unauthorized - 未授权 - - - - Set global presence to: - - - - - Voice mail - - - - - QtProfileDetails - - - Advanced >> - 高级>> - - - - A contact must have a group, please set a group. - 一个联系人需要有一个组,请设立一个组 - - - - << Simple - 《简单的 - - - - Select your avatar - - - - - - @product@ - - - - - @product@ - No Group Selected - - - - - @company@ Avatars - - - - - QtRenameGroup - - - Bad group name - 无效的组名 - - - - Group name cannot be empty - 组名不能是空的 - - - - QtSecuritySettings - - - Security - - - - - Security Settings - - - - - BETA - - - - - QtSms - - - Please fill in a phone number. - 请填写一个电话号码 - - - - Do you want to continue? - 你希望继续吗? - - - - Your SMS has not been sent - 你的短信没有发出 - - - - Your SMS has been sent - 你的短信已经发出 - - - - You can not send an empty message. - - - - - Your message is too long. -This will send - - - - - SMS. - - - - - - - - - @company@ SMS service - - - - - QtSoftUpdate - - - @product@ - Update failed - - - - - @product@ update failed to start: try to update @product@ manually - - - - - QtStatusBar - - - - Not connected - 未连接 - - - - Register done - 注册完毕 - - - - Unregister done - 未注册 - - - - Connecting - 连接中 - - - - Output volume is muted - - - - - Output volume is 0 - - - - - Click to adjust output volume - - - - - Input volume is muted - - - - - Input volume is 0 - - - - - Click to adjust input volume - - - - - An error occured: Server error. - - - - - An error occured: Timeout. - - - - - An error occured: Authentication error. - - - - - QtSystray - - - Status - 状态 - - - - Call SIP - 呼叫SIP - - - - Call land line - 拨打座机 - - - - Call Mobile - 拨打手机 - - - - Call - 呼叫 - - - - Send SMS - 发送SMS - - - - Internet Connection Error - 网络连接错误 - - - - Send a SMS - 发送一个短信 - - - - Start a chat - 开始一个文本聊天 - - - - Place Call - 拨打电话 - - - - Away - 离开 - - - - Online - 在线 - - - - Offline - 离线 - - - - Invisible - 隐身 - - - - Do Not Disturb - 请勿打扰 - - - - Connecting... - 连接中... - - - - Send File - - - - - Multiple Status - - - - - Unknown Status - - - - - - - - - - - - - - @product@ - - - - - Quit @product@ - - - - - Call @company@ - - - - - QtToolBar - - - Edit My Profile - 修改我的资料 - - - - Add a Contact - 添加一个联系人 - - - - Hide Unavailable Contacts - - - - - Show Unavailable Contacts - - - - - Hide Groups - - - - - Show Groups - - - - - You have unfinished call(s). - - - - - Are you sure you want to log off? - - - - - &Log Off - - - - - &Cancel - 取消 - - - - Disable &Video Calls - - - - - Enable &Video Calls - - - - - <b>Conference can't be started while there are active phone calls.</b><br><br>Finish all phone calls and try again. - - - - - @product@ - Proceed Conference - - - - - @product@ - Warning - - - - - - Log &Off... - - - - - Log &On... - - - - - QtTreeViewDelegate - - - Contacts list - 联系人名单 - - - - QtUserProfile - - - Edit Contact - 修改联系人 - - - - - &Authorize - &批准 - - - - - &Block - &阻止 - - - - Network error. - - - - - - @product@ - Authorization Request - - - - - QtUserProfileHandler - - - A problem occured while loading your profile. -The last backuped profile has been loaded: -you may have lost last changes made - - - - - Your profile could not be loaded. -Choose another profile or create a new one. - - - - - - @product@ - - - - - Wrong email/password entered - 错误的电邮/密码 - - - - Wrong login/password entered - - - - - Connection error - - - - - Unexpected error (code: %1 - - - - - QtVideoQt - - - @product@ - - - - - QtVideoSettings - - - Video - 视频 - - - - - Normal - 正常 - - - - - Good - - - - - - Very good - 很好 - - - - - Excellent - 非常好 - - - - Video Settings - 视频设置 - - - - QtVoicemailSettings - - - Voicemail - - - - - Voicemail Settings - - - - - QtWebDirectory - - - @product@ - Directory - - - - - QtWengoConfigDialog - - - Language - 语言 - - - - General - 常规 - - - - Accounts - 帐户 - - - - Advanced - 高级 - - - - Audio - 音频 - - - - Call Forward - 呼叫转移 - - - - Privacy - 隐私 - - - - Video - 视频 - - - - Voicemail - - - - - security - - - - - Notifications - - - - - QtWengoPhone - - - Call - 呼叫 - - - - Account - - - - - Add a Contact - 添加一个联系人 - - - - - Home - 主页 - - - - - - - Conference - 会议 - - - - You have unfinished call(s). - - - - - Are you sure you want to exit the application? - - - - - &Exit - - - - - &Cancel - 取消 - - - - @product@ - Call Error - - - - - @product@ - Warning - - - - - Please hold all the phone calls before placing a new one - - - - - Can't place a call, you are not connected - - - - - You must enter a phone number - - - - - An error has occured trying to place the call - - - - - RenameGroupDialog - - - Cancel - 取消 - - - - OK - - - - - Enter the new group name: - 输入新的组名: - - - - @product@ - Rename Contact Group - - - - - SecuritySettings - - - Form - 表格 - - - - Enable call encryption - - - - - @product@ can encrypt calls using the AES 128-bits encryption system and Diffie-Hellman for key exchange. - - - - - Note: Your contacts need to enable this option for the call to be encrypted. To know whether this call is indeed encrypted, please check on the bottom of your @product@ window : an icon "lock” appears during the call when it is encrypted. - - - - - SimpleIMContactManager - - - - - - - Update your profile - 更新你的资料 - - - - Yahoo! ID: - Yahoo!ID: - - - - MSN ID: - MSN ID: - - - - Jabber/GoogleTalk ID: - Jabber/GoogleTalk ID: - - - - exemple: username@server - - - - - SIP ID: - - - - - ICQ ID: - - - - - AIM ID: - - - - - @company@ ID: - - - - - SmsWindow - - - Send - 发送 - - - - Click here to add a phone number - 点击这里已添加一个电话号码 - - - - 0 /160 - 0/160 - - - - Enter your signature here - 在这里输入你的签名 - - - - Signature: - 签名: - - - - Phone number(s): - - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - - - @product@ - SMS - - - - - SoftUpdateWindow - - - Cancel - 取消 - - - - @product@ - Downloading update - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - - - StatusBarWidget - - - - ... - ... - - - - UserFrame - - - Form - 表格 - - - - VideoSettings - - - Normal - 正常 - - - - Good - - - - - Very good - 很好 - - - - Excellent - 非常好 - - - - Enable video - 启用视频 - - - - Webcam Selection - 网络摄像头选择 - - - - Webcam device: - 网络视频设备 - - - - Webcam Preview - 网络摄像头预览 - - - - Connection Type - 连接类别 - - - - Video quality - 视频质量 - - - - Down (kbit/s) - 降低(kbit/s) - - - - Up (kbit/s) - 提高(kbit/s) - - - - 0 to 512 - 0至512 - - - - 0 to 128 - 0至128 - - - - 512 to 2048 - 512至2048 - - - - 128 to 256 - 128至256 - - - - 2048+ - 2048+ - - - - 256+ - 256+ - - - - 8192+ - 8192+ - - - - 1024+ - 1024+ - - - - Video quality depends on your Internet connection bandwidth - 视频质量取决于你的网络带宽 - - - - Make a test video call - 进行一个视频聊天测试 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">When used for the first time we recommend that you select the normal video quality mode, then you can try different modes to find out the most suitable one.</p> -<p style="-qt-paragraph-type:empty; margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;"></p> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Go to <a href="http://test.lvcm.com"><span style=" text-decoration: underline; color:#0000ff;">test.lvcm.com</span></a> to determine your Internet connection bandwidth.</p></body></html> - - - - - VideoWindow - - - ... - ... - - - - @product@ - Video - - - - - VoicemailSettings - - - Form - 表格 - - - - Phone number of your voicemail: - - - - - Please fill in here the information about your voicemail - - - - - WengoConfigDialog - - - Cancel - 取消 - - - - Save - 保存 - - - - Title - - - - - @product@ - Configuration - - - - - WengoPhoneWindow - - - &Accept - 接受 - - - - &Tools - &工具 - - - - &Help - &帮助 - - - - &Actions - &活动 - - - - Contacts - 联系人 - - - - History - 历史 - - - - Dialpad - 拨号盘 - - - - &Contacts - &联系人 - - - - Clear &History - 清理&历史 - - - - ToolBar - 工具栏 - - - - &Close - &关闭 - - - - Show/Hide Unavailable &Contacts - 显示/隐藏 离线联系人 - - - - &Chat Sessions - &聊天 - - - - &All - &所有 - - - - &HangUp - 挂断 - - - - &Hold/Resume - 暂停/继续 - - - - Show/Hide &Groups - 显示/隐藏 组 - - - - &Outgoing Calls - &呼出电话 - - - - &Incoming Calls - &来电 - - - - &Missed Calls - &未接电话 - - - - Enable/Disable &Video Calls - 使用/禁止 视频通话 - - - - Short Text &Messages (SMS) - 短信(SMS) - - - - Rejected Calls - 拒绝的通话 - - - - &About... - - - - - Add &Contact... - - - - - &Configuration... - - - - - Send SMS... - - - - - Send SMS - 发送SMS - - - - View My &Profile... - - - - - - View My Profile - - - - - Start &Conference... - - - - - Start Conference - - - - - &Find Contact... - - - - - Log &Off... - - - - - - Log Off - - - - - Show &Chat Window - - - - - - Show Chat Window - - - - - Show &File Transfer - - - - - Add Contact - - - - - @product@ - - - - - @company@ - - - - - View My @company@ Account... - - - - - Ctrl+W - - - - - @company@ &Forum... - - - - - Add - 添加 - - - - SMS - SMS - - - - Conference - 会议 - - - - @company@ &Wiki/FAQ... - - - - - Learn more about @company@ Services... - - - - - Search - - - - - Find @company@ Contacts - - - - - &Quit - - - - - Ctrl+Q - - - - - &Text Under Icons - - - - - &Icons Only - - - - - &Hidden - - - - - Wizard - - - Simple Wizard - Step %1 of %2 - - - - - Cancel - 取消 - - - - Finish - - - - - Next > - - - - - < Back - - - - - YahooSettings - - - Yahoo! Settings - - - - - Password: - 密码 - - - - Login: - 登录 - - - - Use Yahoo! Japan server - - - - - Forgot your Yahoo! password? - - - - - Get a new Yahoo! Account - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddAccount.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddAccount.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddAccount.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,680 +0,0 @@ - - AddAccount - - - - 0 - 0 - 415 - 285 - - - - @product@ - Login - - - - 0 - - - 6 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 233 - 231 - 227 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 106 - 104 - 100 - - - - - - - 255 - 255 - 255 - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - <span style="font-size:16pt;">Configure your voip account</span><br><br><span>Please tell us if your account is provided<br/>by @company@ or by another service</span> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 100 - - - - - - - 0 - - - 6 - - - - - You don't have any account ? Click here - - - - - - - Qt::Horizontal - - - - 20 - 20 - - - - - - - - Qt::Horizontal - - - - 20 - 20 - - - - - - - - - - Qt::Horizontal - - - - - - - Configure your account: - - - - - - - @company@ account - - - true - - - - - - - Generic SIP account - - - - - - - Qt::Vertical - - - - 201 - 43 - - - - - - - - Qt::Horizontal - - - - - - - 0 - - - 6 - - - - - - - - :/pics/help.png - - - - - - - Need help? - - - - - - - Qt::Horizontal - - - - 0 - 29 - - - - - - - - &Back - - - - - - - &Next - - - true - - - - - - - Cancel - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - newWengo - newSIP - nextButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddSIPAccount.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddSIPAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddSIPAccount.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddSIPAccount.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,799 +0,0 @@ - - AddSIPAccount - - - - 0 - 0 - 397 - 463 - - - - @product@ - Login - - - - 0 - - - 6 - - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 233 - 231 - 227 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 106 - 104 - 100 - - - - - - - 255 - 255 - 255 - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - <span style="font-size:16pt;">Configure your SIP profile</span><br><br><span>Please fill in the information which will<br/>allow your softphone to connect to your<br/>SIP account</span> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 100 - - - - - - - 0 - - - 6 - - - - - : - - - - - - - Password: - - - - - - - - - - - - - - - - - - - Proxy: - - - - - - - QLineEdit::Password - - - - - - - - 7 - 0 - 2 - 0 - - - - - - - - SIP Domain / Realm: - - - - - - - - 7 - 0 - 1 - 0 - - - - 5 - - - - - - - - - - Server: - - - - - - - Account name: - - - - - - - Qt::Horizontal - - - - - - - Displayname: - - - - - - - login / username: - - - - - - - 0 - - - 6 - - - - - Advanced - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 6 - - - - - Qt::LeftToRight - - - Activate presence and chat (SIP/SIMPLE) - - - - - - - - - - Qt::Vertical - - - - 20 - 16 - - - - - - - - Qt::Horizontal - - - - - - - 0 - - - 6 - - - - - - - - :/pics/help.png - - - - - - - Need help? - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - &Back - - - - - - - &Connect - - - true - - - - - - - Cancel - - - - - - - - - - ExpandButton - QToolButton -
qtutil/ExpandButton.h
-
- - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - accountname - login - password - realm - displayname - registerServer - proxyServer - proxyPort - activateSIMPLE - backButton - loginButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddWengoAccount.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddWengoAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/AddWengoAccount.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/AddWengoAccount.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,505 +0,0 @@ - - - - - AddWengoAccount - - - - 0 - 0 - 387 - 279 - - - - @product@ - Login - - - - 0 - - - 6 - - - - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 0 - 0 - 0 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 255 - 255 - 255 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please enter your email address and<br>password</span> - - - 100 - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - Click here if you don't have a @company@ account - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - - - Qt::Horizontal - - - - - - - 0 - - - 6 - - - - - QLineEdit::Password - - - - - - - Password: - - - - - - - - - - - 0 - 0 - 0 - 0 - - - - Forgot your @company@ password? - - - - - - - Email Address: - - - - - - - - - Qt::Vertical - - - - 251 - 44 - - - - - - - - Qt::Horizontal - - - - - - - 0 - - - 6 - - - - - - - - :/pics/help.png - - - - - - - Need help? - - - - - - - Qt::Horizontal - - - - 0 - 31 - - - - - - - - &Back - - - - - - - &Connect - - - true - - - - - - - Cancel - - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
- 0 - -
-
- - email - password - backButton - loginButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/ILogin.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/ILogin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/ILogin.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/ILogin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,42 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "ILogin.h" - -ILogin::ILogin(QtLoginDialog * qtLoginDialog, CUserProfileHandler & cUserProfileHandler) - : _cUserProfileHandler(cUserProfileHandler) - , _backPage(QtLoginDialog::LogAccount) -{ - _loginDialog = qtLoginDialog; -} - -ILogin::~ILogin() { -} - -void ILogin::load(const SipAccount & sipAccount) { - load(sipAccount.getUserProfileName()); -} - -void ILogin::setBackPage(QtLoginDialog::LoginDialogPage backPage) { - _backPage = backPage; -} - -void ILogin::goBack() { - _loginDialog->changePage(_backPage); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/ILogin.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/ILogin.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/ILogin.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/ILogin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,98 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef ILOGIN_H -#define ILOGIN_H - -#include "QtLoginDialog.h" - -#include - -#include - -#include -#include - -#include - -/** - * Qt login window. - * - * @author Xavier Desjardins - */ -class ILogin : public QWidget { - Q_OBJECT -public: - - ILogin(QtLoginDialog * qtLoginDialog, CUserProfileHandler & cUserProfileHandler) ; - - virtual ~ILogin(); - - /** - * loads and uses a sipaccount to initialize widget value - * - * @param sipAccountName name of the SipAccount to be loaded - */ - virtual void load(std::string sipAccountName) = 0; - - /** - * loads and uses a sipaccount to initialize widget value - * - * @param sipAccount SipAccount to be loaded - */ - virtual void load(const SipAccount & sipAccount); - - /** - * Initialze the page. Called when the page is shown. - */ - virtual void initPage() = 0; - - /** - * Sets the text of infoLabel to 'message' and colorize it to normal color. - */ - virtual void setInfoMessage() = 0; - - /** - * Sets the text of infoLabel to 'message' and colorize it to red. - */ - virtual void setErrorMessage(const QString & message) = 0; - - /** - * Sets the login label. - */ - virtual void setLoginLabel(const QString & message) = 0; - - virtual void setBackPage(QtLoginDialog::LoginDialogPage); - -private Q_SLOTS: - - virtual void languageChanged() = 0; - - void goBack(); - -protected: - - QtLoginDialog * _loginDialog; - - CUserProfileHandler & _cUserProfileHandler; - - QtLoginDialog::LoginDialogPage _backPage; -}; - -#endif //ILOGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/LogAccount.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/LogAccount.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/LogAccount.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/LogAccount.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,750 +0,0 @@ - - LogAccount - - - - 0 - 0 - 420 - 336 - - - - @product@ - Login - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 0 - 0 - 0 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 234 - 229 - 220 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 255 - 255 - 255 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 212 - 208 - 200 - - - - - - - 64 - 64 - 64 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 255 - 255 - 255 - - - - - - - 233 - 231 - 227 - - - - - - - 128 - 128 - 128 - - - - - - - 141 - 139 - 133 - - - - - - - 106 - 104 - 100 - - - - - - - 255 - 255 - 255 - - - - - - - 106 - 104 - 100 - - - - - - - 212 - 208 - 200 - - - - - - - 212 - 208 - 200 - - - - - - - 0 - 0 - 0 - - - - - - - 10 - 36 - 106 - - - - - - - 255 - 255 - 255 - - - - - - - 0 - 0 - 255 - - - - - - - 255 - 0 - 255 - - - - - - - 232 - 232 - 232 - - - - - - - - <span style="font-size:16pt;">Login</span><br><br><span>Please choose a previously used profile<br/> or fill in the informations to connect to a<br/> @company@ account</span> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 100 - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 86 - 20 - - - - - - - - Qt::Horizontal - - - - 85 - 20 - - - - - - - - Configure a &New Profile - - - - - - - - - Qt::Horizontal - - - - - - - Qt::Vertical - - - - 41 - 23 - - - - - - - - 6 - - - 0 - - - - - - - - :/pics/help.png - - - - - - - Need help? - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - &Connect - - - true - - - true - - - - - - - Cancel - - - - - - - - - Qt::Horizontal - - - - 20 - 31 - - - - - - - - Qt::Horizontal - - - - 20 - 31 - - - - - - - - 0 - - - 6 - - - - - false - - - - - - - Password: - - - - - - - &Modify - - - - - - - Account: - - - - - - - QLineEdit::Password - - - - - - - - 0 - 0 - - - - Forgot your @company@ password? - - - - - - - Delete - - - - - - - - - - LinkLabel - QLabel -
qtutil/LinkLabel.h
-
-
- - createNewAccount - accountComboBox - passwordLineEdit - modifyButton - loginButton - - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,111 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAddAccount.h" -#include "QtLoginDialog.h" - -#include "ui_AddAccount.h" - -#include - -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -QtAddAccount::QtAddAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) - : ILogin(qtLoginDialog, cUserProfileHandler) { - - _ui = new Ui::AddAccount(); - _ui->setupUi(this); - - LANGUAGE_CHANGE(this); - - WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); - - SAFE_CONNECT(_ui->createNewAccountLabel, SIGNAL(linkActivated(const QString &)), - SLOT(createAccountClicked(const QString &))); - SAFE_CONNECT(_ui->nextButton, SIGNAL(clicked()), SLOT(nextClicked())); - SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); - SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); - SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); -} - -QtAddAccount::~QtAddAccount() { - OWSAFE_DELETE(_ui); -} - -void QtAddAccount::createAccountClicked(const QString & /*url*/) { - WsUrl::showWengoAccountCreation(); -} - -void QtAddAccount::helpButtonClicked() { - WsUrl::showWikiPage(); -} - -void QtAddAccount::nextClicked() { - if (_ui->newWengo->isChecked()) { - _loginDialog->changePage(QtLoginDialog::AddWengoAccount); - } else if (_ui->newSIP->isChecked()) { - _loginDialog->changePage(QtLoginDialog::AddSIPAccount); - } - _loginDialog->currentPage()->setBackPage(QtLoginDialog::AddAccount); -} - -void QtAddAccount::setInfoMessage() { - setLoginLabel(tr("Please tell us if your account is provided
by @company@ or by another service")); -} - -void QtAddAccount::setErrorMessage(const QString & message) { - setLoginLabel(QString("%1").arg(message)); -} - -void QtAddAccount::setLoginLabel(const QString & message) { - QString loginLabel = QString("" + - tr("Configure your voip account") + "
%1").arg(message); - _ui->loginLabel->setText(loginLabel); -} - -void QtAddAccount::languageChanged() { - _ui->retranslateUi(this); -} - -void QtAddAccount::load(std::string sipAccountName) { - setInfoMessage(); -} - -void QtAddAccount::initPage() { - _ui->nextButton->setDefault(true); - setInfoMessage(); -} - -void QtAddAccount::keyPressEvent(QKeyEvent *event) { - if (event->key()==Qt::Key_Return) { - nextClicked(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTADDACCOUNT_H -#define OWQTADDACCOUNT_H - -#include "ILogin.h" - -class CUserProfileHandler; -class QtLoginDialog; -class QWidget; - -namespace Ui { class AddAccount; } - -/** - * Qt login window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtAddAccount : public ILogin { - Q_OBJECT -public: - - QtAddAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); - - ~QtAddAccount(); - - virtual void load(std::string sipAccountName); - -private Q_SLOTS: - - void createAccountClicked(const QString & url); - - void helpButtonClicked(); - - void nextClicked(); - - virtual void languageChanged(); - -private: - - virtual void setInfoMessage(); - - virtual void setErrorMessage(const QString & message); - - virtual void setLoginLabel(const QString & message); - - void keyPressEvent(QKeyEvent * event); - - void initPage(); - - Ui::AddAccount * _ui; -}; - -#endif //OWQTADDACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "QtAddAccountUtils.h" - -#include -#include -#include - -#include - -namespace QtAddAccountUtils { - -static void addContact(UserProfile* userProfile, const std::string& groupId, const std::string& name, const std::string& sipAddress) { - Contact& contact = userProfile->getContactList().createContact(); - contact.setGroupId(groupId); - contact.setFirstName(name); - - IMContact imContact(EnumIMProtocol::IMProtocolSIP, sipAddress); - contact.addIMContact(imContact); -} - -void addTestContacts(UserProfile* userProfile, const std::string& audioTestCallAddress, const std::string& videoTestCallAddress) { - if (audioTestCallAddress.empty() && videoTestCallAddress.empty()) { - return; - } - - std::string groupName = QCoreApplication::translate("QtAddAccountUtils", "Test").toStdString(); - userProfile->getContactList().addContactGroup(groupName); - std::string groupId = userProfile->getContactList().getContactGroupIdFromName(groupName); - - if (!audioTestCallAddress.empty()) { - std::string name = QCoreApplication::translate("QtAddAccountUtils", "Audio Test Call").toStdString(); - addContact(userProfile, groupId, name, audioTestCallAddress); - } - - if (!videoTestCallAddress.empty()) { - std::string name = QCoreApplication::translate("QtAddAccountUtils", "Video Test Call").toStdString(); - addContact(userProfile, groupId, name, videoTestCallAddress); - } -} - -} // namespace diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddAccountUtils.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,39 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTADDACCOUNTUTILS_H -#define QTADDACCOUNTUTILS_H - -#include - -class UserProfile; - -/** - * This namespace contains code used to initialize new users contact - * list. It's shared between QtAddWengoAccount and QtAddSipAccount - */ -namespace QtAddAccountUtils { - -/** - * Add test contacts to the user contact list, if addresses are not empty - */ -void addTestContacts(UserProfile* userProfile, const std::string& audioTestCallAddress, const std::string& videoTestCallAddress); - -} - -#endif /* QTADDACCOUNTUTILS_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,344 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAddSIPAccount.h" - -#include "QtAddAccountUtils.h" -#include "QtLoginDialog.h" - -#include "ui_AddSIPAccount.h" - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -QtAddSIPAccount::QtAddSIPAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) - :ILogin(qtLoginDialog, cUserProfileHandler) - , _reducedHeight(0) { - - _ui = new Ui::AddSIPAccount(); - _ui->setupUi(this); - - LANGUAGE_CHANGE(this); - - WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); - - // mandatory lines - SAFE_CONNECT(_ui->login, SIGNAL(textChanged(QString)), SLOT(aMandatoryLineHasChanged())); - SAFE_CONNECT(_ui->realm, SIGNAL(textChanged(QString)), SLOT(aMandatoryLineHasChanged())); - //// - - SAFE_CONNECT(_ui->advButton, SIGNAL(toggled(bool)), SLOT(showAdvancedSettings(bool))); - SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); - SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); - SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); - SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); - - showAdvancedSettings(false); - - aMandatoryLineHasChanged(); -} - -QtAddSIPAccount::~QtAddSIPAccount() { - OWSAFE_DELETE(_ui); -} - -void QtAddSIPAccount::loginClicked() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - std::string accountname(_ui->accountname->text().toLocal8Bit()); - if (profileNameExists(accountname)) { - //checks if profile name exists - setErrorMessage(tr("Your profile name already exists!")); - return; - } - - std::string login = (const char *) _ui->login->text().trimmed().toLocal8Bit(); - std::string password = (const char *) _ui->password->text().trimmed().toLocal8Bit(); - std::string realm = (const char *) _ui->realm->text().trimmed().toLocal8Bit(); - std::string displayname = (const char *)_ui->displayname->text().toLocal8Bit(); - std::string registerServer = (const char *) _ui->registerServer->text().trimmed().toLocal8Bit(); - int registerPort = config.getSipRegisterPort(); - std::string proxyServer = (const char *) _ui->proxyServer->text().trimmed().toLocal8Bit(); - int proxyPort = _ui->proxyPort->text().toInt(); - - //fill ampty lines - if (password.empty()) { - password = login; - } - if (registerServer.empty()) { - registerServer = realm; - } - if (proxyServer.empty()) { - proxyServer = registerServer; - } - if (proxyPort==0) { - proxyPort = 5060; - } - if (accountname.empty()) { - accountname = login + "@" + registerServer; - } - if (displayname.empty()) { - displayname = accountname; - } - //// - - //create sip account - SipAccount sipAccount(login, login, password, realm, - registerServer, registerPort, proxyServer, proxyPort, - true/*_ui->rememberPassword->isChecked()*/, - _ui->activateSIMPLE->isChecked()); - sipAccount.setDisplayName(displayname); - sipAccount.setVisibleName(accountname); - //// - - if (_modify) - { - //if modifying old profile is deleted - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(_accountName); - SipAccount * tmpSipAccount = userProfile->getSipAccount(); - tmpSipAccount->setUsername(login); - tmpSipAccount->setIdentity(login); - tmpSipAccount->setRealm(realm); - tmpSipAccount->setPassword(password); - tmpSipAccount->setDisplayName(displayname); - tmpSipAccount->setVisibleName(accountname); - tmpSipAccount->setRegisterServerHostname(registerServer); - tmpSipAccount->setSIPProxyServerHostname(proxyServer); - tmpSipAccount->setSIPProxyServerPort(proxyPort); - tmpSipAccount->enablePIM(_ui->activateSIMPLE->isChecked()); - tmpSipAccount->setRememberPassword(true); - - UserProfileFileStorage userProfileStorage(*userProfile); - userProfileStorage.save(tmpSipAccount->getFullIdentity()); - - _cUserProfileHandler.setCurrentUserProfile(tmpSipAccount->getFullIdentity(), SipAccount::empty); - - _loginDialog->accept(); - return; - } - // Looking for the selected profile, if modifiyng profile automatically added - else if (!_cUserProfileHandler.userProfileExists(sipAccount.getFullIdentity())) - { - // The selected profile does not exist. Creating a new one. - UserProfile userProfile; - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QtAddAccountUtils::addTestContacts(&userProfile,config.getSipAudioTestCall(),config.getSipVideoTestCall()); - - userProfile.setSipAccount(sipAccount, false /* needInitialization */); - UserProfileFileStorage userProfileStorage(userProfile); - userProfileStorage.save(sipAccount.getFullIdentity()); - } - _cUserProfileHandler.setCurrentUserProfile(sipAccount.getFullIdentity(), sipAccount); - - _loginDialog->accept(); -} - -void QtAddSIPAccount::helpButtonClicked() { - WsUrl::showWikiPage(); -} - -void QtAddSIPAccount::setInfoMessage() { - setLoginLabel(tr("Please fill in the information which will
allow your softphone to connect to your
SIP account")); -} - -void QtAddSIPAccount::setErrorMessage(const QString & message) { - setLoginLabel(QString("%1").arg(message)); -} - -void QtAddSIPAccount::setLoginLabel(const QString & message) { - QString loginLabel = QString("" + - tr("Configure your SIP profile") + "
%1").arg(message); - _ui->loginLabel->setText(loginLabel); -} - -void QtAddSIPAccount::languageChanged() { - _ui->retranslateUi(this); -} - -void QtAddSIPAccount::load(const SipAccount & sipAccount) { - if (sipAccount.getType() == SipAccount::SipAccountTypeBasic) { - //loads the sip acccount - _ui->login->setText(QString::fromLocal8Bit(sipAccount.getIdentity().c_str())); - _ui->password->setText(QString::fromLocal8Bit(sipAccount.getPassword().c_str())); - _ui->realm->setText(QString::fromLocal8Bit(sipAccount.getRealm().c_str())); - _ui->displayname->setText(QString::fromLocal8Bit(sipAccount.getDisplayName().c_str())); - _ui->registerServer->setText(QString::fromLocal8Bit(sipAccount.getRegisterServerHostname().c_str())); - _ui->proxyServer->setText(QString::fromLocal8Bit(sipAccount.getSIPProxyServerHostname().c_str())); - //_ui->registerPort->setText(QString::number(sipAccount.getRegisterServerPort())); - _ui->proxyPort->setText(QString::number(sipAccount.getSIPProxyServerPort())); - _ui->accountname->setText(QString::fromLocal8Bit(sipAccount.getVisibleName().c_str())); - _ui->activateSIMPLE->setChecked(sipAccount.isPIMEnabled()); - _accountName = sipAccount.getFullIdentity(); - _visibleName = sipAccount.getVisibleName(); - setInfoMessage(); - //sets variable _modify to true - setModify(); - } else { - LOG_DEBUG("SIP getType() = SipAccount::SipAccountTypeWengo"); - //_loginDialog->changePage(QtLoginDialog::AddWengoAccount, sipAccount); - } -} - -void QtAddSIPAccount::load(std::string sipAccountName) { - //load userprofile - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); - if (userProfile && userProfile->hasSipAccount()) { - //tests account type - if (!userProfile->hasWengoAccount()) { - SipAccount * sipAccount = userProfile->getSipAccount(); - //loads the sip acccount - _ui->login->setText(QString::fromLocal8Bit(sipAccount->getIdentity().c_str())); - _ui->password->setText(QString::fromLocal8Bit(sipAccount->getPassword().c_str())); - _ui->realm->setText(QString::fromLocal8Bit(sipAccount->getRealm().c_str())); - _ui->displayname->setText(QString::fromLocal8Bit(sipAccount->getDisplayName().c_str())); - _ui->registerServer->setText(QString::fromLocal8Bit(sipAccount->getRegisterServerHostname().c_str())); - _ui->proxyServer->setText(QString::fromLocal8Bit(sipAccount->getSIPProxyServerHostname().c_str())); - //_ui->registerPort->setText(QString::number(sipAccount->getRegisterServerPort())); - _ui->proxyPort->setText(QString::number(sipAccount->getSIPProxyServerPort())); - _ui->accountname->setText(QString::fromLocal8Bit(sipAccount->getVisibleName().c_str())); - _ui->activateSIMPLE->setChecked(sipAccount->isPIMEnabled()); - _accountName = sipAccount->getFullIdentity(); - _visibleName = sipAccount->getVisibleName(); - setInfoMessage(); - //sets variable _modify to true - setModify(); - } else { - //should be loaded as a wengo account - _loginDialog->changePage(QtLoginDialog::AddWengoAccount, sipAccountName); - } - } else { - _loginDialog->changePage(QtLoginDialog::AddAccount); - } -} - -void QtAddSIPAccount::initPage() { - _ui->accountname->setFocus(); - _ui->loginButton->setDefault(true); - setInfoMessage(); - _modify = false; - _accountName = ""; - _visibleName = ""; - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _ui->realm->setText(QString::fromLocal8Bit(config.getSipRealm().c_str())); - _ui->registerServer->setText(QString::fromLocal8Bit(config.getSipRegisterServer().c_str())); - _ui->proxyServer->setText(QString::fromLocal8Bit(config.getSipProxyServer().c_str())); - _ui->proxyPort->setText(QString::number(config.getSipProxyPort())); - _ui->activateSIMPLE->setChecked(config.getSipSimpleSupport()); -} - -void QtAddSIPAccount::aMandatoryLineHasChanged() { - - std::string login = (const char *) _ui->login->text().toLocal8Bit(); - std::string realm = (const char *) _ui->realm->text().toLocal8Bit(); - - if ( !login.empty() && - !realm.empty() - ) { - _ui->loginButton->setEnabled(true); - } else { - _ui->loginButton->setEnabled(false); - } -} - - -void QtAddSIPAccount::showAdvancedSettings(bool show) { - if (show && _reducedHeight == 0) { - // First time we show the advanced settins. Store dialog height, will - // be used if the user hide the advanced settings - _reducedHeight = _loginDialog->height(); - } - - _ui->frame->setVisible(show); - _ui->label_server->setVisible(show); - _ui->label_proxy->setVisible(show); - _ui->registerServer->setVisible(show); - _ui->proxyServer->setVisible(show); - _ui->label_proxyport->setVisible(show); - _ui->proxyPort->setVisible(show); - - if (!show && _reducedHeight != 0) { - // Make sure height is reduced to the size before expanding settings - _loginDialog->setMinimumHeight(_reducedHeight); - _loginDialog->resize(_loginDialog->width(), _reducedHeight); - } - - if (show) { - // If we try to show advanced settings a second time, the height will - // remain _reducedHeight, this code makes sure we get back to the old - // size - this->layout()->invalidate(); - _loginDialog->layout()->invalidate(); - int height = _loginDialog->layout()->minimumSize().height(); - _loginDialog->resize(_loginDialog->width(), height); - } -} - -void QtAddSIPAccount::setModify(){ - _modify=true; -} - -bool QtAddSIPAccount::profileNameExists(std::string visibleName) { - - std::vector profileNames = _cUserProfileHandler.getUserProfileNames(true); - std::vector visibleNames; - - for (std::vector::const_iterator it = profileNames.begin();it != profileNames.end();++it) { - - UserProfile userProfile; - SipAccount * sipaccount = NULL; - - if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, *it)) { - sipaccount = userProfile.getSipAccount(); - if (sipaccount) { - std::string temp = sipaccount->getVisibleName(); - - //if modifying old profile name is not added to the _visibleName vector - //if adding profile all current profile names added to the _visibleName vector - if (temp.compare(_visibleName) != 0 || !_modify) - visibleNames.push_back(temp); - } - } - } - //search if there is another account name as the one adding - for (std::vector::const_iterator it = visibleNames.begin();it != visibleNames.end();++it) { - if (visibleName.compare(*it) == 0) { - return true; - } - } - - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddSIPAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,87 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTADDSIPACCOUNT_H -#define OWQTADDSIPACCOUNT_H - -#include "ILogin.h" - -class CUserProfileHandler; -class QtLoginDialog; -class QWidget; - -namespace Ui { class AddSIPAccount; } - -/** - * Qt login window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtAddSIPAccount : public ILogin { - Q_OBJECT -public: - - QtAddSIPAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); - - ~QtAddSIPAccount(); - - virtual void load(const SipAccount & sipAccount); - - virtual void load(std::string sipAccountName); - - virtual void initPage(); - -private Q_SLOTS: - - void loginClicked(); - - void helpButtonClicked(); - - void aMandatoryLineHasChanged(); - - virtual void languageChanged(); - - void showAdvancedSettings(bool state); - -private: - - virtual void setInfoMessage(); - - virtual void setErrorMessage(const QString & message); - - virtual void setLoginLabel(const QString & message); - - virtual void setModify(); - - virtual bool profileNameExists(std::string profileName); - - Ui::AddSIPAccount * _ui; - - int _reducedHeight; - - bool _modify; - //name of account that will be modified - std::string _accountName; - //visible name of account that will be modified - std::string _visibleName; -}; - -#endif //OWQTADDSIPACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,182 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAddWengoAccount.h" - -#include "QtAddAccountUtils.h" -#include "QtLoginDialog.h" - -#include "ui_AddWengoAccount.h" - -#include - -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -QtAddWengoAccount::QtAddWengoAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) - :ILogin(qtLoginDialog, cUserProfileHandler){ - - _ui = new Ui::AddWengoAccount(); - _ui->setupUi(this); - - LANGUAGE_CHANGE(this); - - WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); - - SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); - SAFE_CONNECT(_ui->backButton, SIGNAL(clicked()), SLOT(goBack())); - SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); - SAFE_CONNECT(_ui->createWengoAccountLabel, SIGNAL(linkActivated(const QString &)), SLOT(createAccountButtonClicked())); - SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString &)), SLOT(forgotPasswordButtonClicked())); -} - -QtAddWengoAccount::~QtAddWengoAccount() { - OWSAFE_DELETE(_ui); -} - -void QtAddWengoAccount::createAccountButtonClicked() { - WsUrl::showWengoAccountCreation(); -} - -void QtAddWengoAccount::helpButtonClicked() { - WsUrl::showWikiPage(); -} - -void QtAddWengoAccount::forgotPasswordButtonClicked() { - WsUrl::showLostPasswordPage(); -} - -void QtAddWengoAccount::loginClicked() { - std::string login = _ui->email->text().trimmed().toStdString(); - - // check if login is an email address - if (login.find("@", 0) == login.npos) { - - QMessageBox::warning(this, tr("@product@ - Connexion"), - tr("Please enter an email address."), - QMessageBox::Ok, QMessageBox::NoButton); - - return; - } - //// - - std::string password = _ui->password->text().trimmed().toStdString(); - if (!login.empty() && !password.empty()) { - WengoAccount wengoAccount(login, password, true/*_ui->rememberPassword->isChecked()*/); - wengoAccount.setVisibleName(login); - - // Looking for the selected profile - if (!_cUserProfileHandler.userProfileExists(login)) { - // The selected profile does not exist. Create it. - UserProfile userProfile; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QtAddAccountUtils::addTestContacts(&userProfile, - config.getWengoAudioTestCall(), - config.getWengoVideoTestCall() - ); - - userProfile.setSipAccount(wengoAccount, false /* needInitialization */); - UserProfileFileStorage userProfileStorage(userProfile); - userProfileStorage.save(login); - } - _cUserProfileHandler.setCurrentUserProfile(login, wengoAccount); - _loginDialog->accept(); - } -} - -void QtAddWengoAccount::setInfoMessage() { - setLoginLabel(tr("Please enter your email address
and your password")); -} - -void QtAddWengoAccount::setErrorMessage(const QString & message) { - setLoginLabel(QString("%1").arg(message)); -} - -void QtAddWengoAccount::setLoginLabel(const QString & message) { - QString loginLabel = QString("" + - tr("Login") + "
%1").arg(message); - _ui->loginLabel->setText(loginLabel); -} - -void QtAddWengoAccount::languageChanged() { - _ui->retranslateUi(this); -} - -void QtAddWengoAccount::load(const SipAccount & sipAccount) { - if (sipAccount.getType() == SipAccount::SipAccountTypeWengo) { - const WengoAccount & wengoAccount = dynamic_cast(sipAccount); - _ui->email->setText(QString::fromStdString(wengoAccount.getWengoLogin())); - _ui->password->setText(QString::fromStdString(wengoAccount.getWengoPassword())); - setInfoMessage(); - } else { - LOG_DEBUG("SIP getType() = SipAccount::SipAccountTypeBasic"); - //_loginDialog->changePage(QtLoginDialog::AddSIPAccount, sipAccount); - } -} - -void QtAddWengoAccount::load(std::string sipAccountName) { - //load userprofile - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); - if (userProfile && userProfile->hasSipAccount()) { - //tests account type - if (userProfile->hasWengoAccount()) { - //loads the wengo acccount - WengoAccount * wengoAccount = userProfile->getWengoAccount(); - _ui->email->setText(QString::fromStdString(wengoAccount->getWengoLogin())); - _ui->password->setText(QString::fromStdString(wengoAccount->getWengoPassword())); - setInfoMessage(); - } else { - //should be loaded as a sip account - _loginDialog->changePage(QtLoginDialog::AddSIPAccount, sipAccountName); - } - } else { - _loginDialog->changePage(QtLoginDialog::AddAccount); - } - OWSAFE_DELETE(userProfile); -} - -void QtAddWengoAccount::initPage() { - _ui->email->setFocus(); - _ui->loginButton->setDefault(true); - setInfoMessage(); -} - -void QtAddWengoAccount::keyPressEvent(QKeyEvent *event) { - if (event->key()==Qt::Key_Return) { - loginClicked(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtAddWengoAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTADDWENGOACCOUNT_H -#define OWQTADDWENGOACCOUNT_H - -#include "ILogin.h" - -class CUserProfileHandler; -class QtLoginDialog; -class QWidget; - -namespace Ui { class AddWengoAccount; } - -/** - * Qt login window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtAddWengoAccount : public ILogin { - Q_OBJECT -public: - - QtAddWengoAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); - - ~QtAddWengoAccount(); - - virtual void load(std::string sipAccountName); - - virtual void load(const SipAccount & sipAccount); - - virtual void initPage(); - -private Q_SLOTS: - - void createAccountButtonClicked(); - - void helpButtonClicked(); - - void forgotPasswordButtonClicked(); - - void loginClicked(); - - virtual void languageChanged(); - -private: - - virtual void setInfoMessage(); - - virtual void setErrorMessage(const QString & message); - - virtual void setLoginLabel(const QString & message); - - void keyPressEvent(QKeyEvent * event); - - Ui::AddWengoAccount * _ui; -}; - -#endif //OWQTADDWENGOACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,277 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtLogAccount.h" -#include "QtLoginDialog.h" - -#include "ui_LogAccount.h" - -#include - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -#include - -QtLogAccount::QtLogAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler) - :ILogin(qtLoginDialog, cUserProfileHandler){ - - _ui = new Ui::LogAccount(); - _ui->setupUi(this); - - LANGUAGE_CHANGE(this); - - WidgetBackgroundImage::setBackgroundImage(_ui->loginLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustHeight); - - SAFE_CONNECT(_ui->createNewAccount, SIGNAL(clicked()), SLOT(createAccountButtonClicked())); - SAFE_CONNECT(_ui->loginButton, SIGNAL(clicked()), SLOT(loginClicked())); - SAFE_CONNECT_RECEIVER(_ui->cancelButton, SIGNAL(clicked()), _loginDialog, SLOT(reject())); - SAFE_CONNECT(_ui->modifyButton, SIGNAL(clicked()), SLOT(modifyClicked())); - SAFE_CONNECT(_ui->helpLabel, SIGNAL(linkActivated(const QString &)), SLOT(helpButtonClicked())); - SAFE_CONNECT(_ui->forgotPasswordLabel, SIGNAL(linkActivated(const QString &)), SLOT(forgotPasswordButtonClicked())); - SAFE_CONNECT(_ui->deleteButton, SIGNAL(clicked()), SLOT(deleteClicked())); - -#ifndef CUSTOM_ACCOUNT - _ui->forgotPasswordLabel->hide(); -#endif -} - -QtLogAccount::~QtLogAccount() { - OWSAFE_DELETE(_ui); -} - -void QtLogAccount::setValidAccount(SipAccount sipAccount) { - ILogin::load(sipAccount); - setInfoMessage(); -} - -void QtLogAccount::createAccountButtonClicked() { - _loginDialog->changePage(QtLoginDialog::AddAccount); -} - -void QtLogAccount::helpButtonClicked() { - WsUrl::showWikiPage(); -} - -void QtLogAccount::forgotPasswordButtonClicked() { - WsUrl::showLostPasswordPage(); -} - -void QtLogAccount::setAccountName(const QString & name) { - _ui->accountComboBox->setEditText(name); -} - -void QtLogAccount::setPassword(const QString & password) { - _ui->passwordLineEdit->setText(password); -} - -void QtLogAccount::setRememberPassword(bool /*remember*/) { -} - -void QtLogAccount::initPage() { - _ui->accountComboBox->clear(); - _ui->passwordLineEdit->setText(""); - std::vector profileNames = _cUserProfileHandler.getUserProfileNames(true); - - if (profileNames.size() > 0) { - - std::string lastUsed = ConfigManager::getInstance().getCurrentConfig().getProfileLastUsedName(); - std::string lastUsedIndex = ""; - - // finds all userprofiles - for (std::vector::const_iterator it = profileNames.begin(); - it != profileNames.end(); - ++it) { - - UserProfile userProfile; - std::string tmpname; - SipAccount * sipaccount = NULL; - - //gets userprofile - if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, *it)) { - - //gets sipaccount - sipaccount = userProfile.getSipAccount(); - if (sipaccount) { - - //finds and displays visible name, saves real userprofile name - tmpname = sipaccount->getVisibleName(); - profileMap[tmpname] = (*it); - _ui->accountComboBox->addItem(QString::fromLocal8Bit(tmpname.c_str())); - - //finds last used index - if ((*it)==lastUsed) { - lastUsedIndex = tmpname; - } - } - } - } - //// - - //default value - _ui->accountComboBox->setCurrentIndex(_ui->accountComboBox->findText(QString::fromLocal8Bit(lastUsedIndex.c_str()))); - currentIndexChanged(QString::fromStdString(lastUsedIndex)); - - SAFE_CONNECT(_ui->accountComboBox, SIGNAL(currentIndexChanged(const QString &)), - SLOT(currentIndexChanged(const QString &))); - } else { - _loginDialog->changePage(QtLoginDialog::AddAccount); - return; - } - - _ui->accountComboBox->setFocus(); - _ui->loginButton->setDefault(true); - setInfoMessage(); - _ui->passwordLineEdit->setEnabled(false); -} - -void QtLogAccount::currentIndexChanged(const QString & profileName) { - UserProfile userProfile; - if (_cUserProfileHandler.getUserProfileHandler().LoadUserProfileFromName(&userProfile, profileMap[std::string(profileName.toLocal8Bit())])) { - SipAccount * sipaccount = userProfile.getSipAccount(); - if (sipaccount) { - if (sipaccount->isPasswordRemembered()) { - setPassword(QString::fromStdString(sipaccount->getUserPassword())); - setRememberPassword(true); - } else { - setPassword(QString::fromStdString("")); - setRememberPassword(false); - } - } - } -} - -void QtLogAccount::loginClicked() { - - std::string login = profileMap[std::string( _ui->accountComboBox->currentText().toLocal8Bit()) ]; - - /*** et le password !! ***/ - if (!login.empty()) { - - // Looking for the selected profile - if (!_cUserProfileHandler.userProfileExists(login)) { - // The selected profile does not exist. normally should NOT happen !! - setErrorMessage(tr("Invalid account")); - } else { - _cUserProfileHandler.setCurrentUserProfile(login, SipAccount::empty); - } - - _loginDialog->accept(); - } -} - -void QtLogAccount::modifyClicked() { - - std::string login = profileMap[std::string( _ui->accountComboBox->currentText().toLocal8Bit()) ]; - - if (!login.empty()) { - - // Looking for the selected profile - if (!_cUserProfileHandler.userProfileExists(login)) { - // The selected profile does not exist. normally should NOT happen !! - _loginDialog->changePage(QtLoginDialog::AddAccount); - } else { - - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(login); - - if (userProfile) { - if (userProfile->hasWengoAccount()) - { - //wengo account - _loginDialog->changePage(QtLoginDialog::AddWengoAccount, login); - } else if (userProfile->hasSipAccount()) { - //"generic" sip account - _loginDialog->changePage(QtLoginDialog::AddSIPAccount, login); - } - _loginDialog->currentPage()->setBackPage(QtLoginDialog::LogAccount); - } - } - } -} - -void QtLogAccount::deleteClicked() { - std::string login = profileMap[ std::string(_ui->accountComboBox->currentText().toLocal8Bit()) ]; - - if (!login.empty()){ - if (_cUserProfileHandler.userProfileExists(login)){ - //profile exists - int buttonClicked = QMessageBox::question(this, - tr("Warning"), - tr("Do you really want to delete this profile"), - tr("Yes"), tr("No")); - if (buttonClicked != 0) - return; - - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(login); - UserProfileHandler &userProfileHandler = _cUserProfileHandler.getUserProfileHandler(); - userProfileHandler.deleteUserProfile(*userProfile); - - initPage(); - } - } -} - -void QtLogAccount::setInfoMessage() { - setLoginLabel(tr("Please choose a previously used profile
or fill in the informations to connect to a
@company@ account")); -} - -void QtLogAccount::setErrorMessage(const QString & message) { - setLoginLabel(QString("%1").arg(message)); -} - -void QtLogAccount::setLoginLabel(const QString & message) { - QString loginLabel = QString("Login
%1").arg(message); - _ui->loginLabel->setText(loginLabel); -} - -void QtLogAccount::languageChanged() { - _ui->retranslateUi(this); -} - -void QtLogAccount::load(std::string sipAccountName) { - - //load userprofile - UserProfile * userProfile = _cUserProfileHandler.getUserProfileHandler().getUserProfile(sipAccountName); - if (userProfile) { - // Add and select the given SipAccount - _ui->accountComboBox->addItem(QString::fromStdString(sipAccountName)); - _ui->accountComboBox->setCurrentIndex(_ui->accountComboBox->findText(QString::fromStdString(sipAccountName))); - setInfoMessage(); - - SipAccount * sipAccount = userProfile->getSipAccount(); - setPassword(QString::fromStdString(sipAccount->getUserPassword())); - } else { - _loginDialog->changePage(QtLoginDialog::AddAccount); - } - - OWSAFE_DELETE(userProfile); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLogAccount.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,102 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTLOGACCOUNT_H -#define OWQTLOGACCOUNT_H - -#include "ILogin.h" - -#include - -class CUserProfileHandler; -class QtLoginDialog; -class QWidget; - -namespace Ui { class LogAccount; } - -/** - * Qt login window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtLogAccount : public ILogin { - Q_OBJECT -public: - - QtLogAccount(QtLoginDialog * qtLoginDialog, QWidget* parent, CUserProfileHandler & cUserProfileHandler); - - ~QtLogAccount(); - - /** - * Add the given SipAccount to the profile list and select it as default. - */ - void setValidAccount(SipAccount sipAccount); - - virtual void load(std::string sipAccountName); - - virtual void initPage(); - -private Q_SLOTS: - - void createAccountButtonClicked(); - - void helpButtonClicked(); - - void forgotPasswordButtonClicked(); - - void currentIndexChanged(const QString & profileName); - - void loginClicked(); - - void modifyClicked(); - - void deleteClicked(); - - virtual void languageChanged(); - -private: - - void setAccountName(const QString & name); - - void setPassword(const QString & password); - - void setRememberPassword(bool remember); - - virtual void setInfoMessage(); - - virtual void setErrorMessage(const QString & message); - - virtual void setLoginLabel(const QString & message); - - /** - * Initializes the widgets. - */ - void init(); - - /** - * map of profile - */ - std::map profileMap; - - Ui::LogAccount * _ui; -}; - -#endif //OWQTLOGACCOUNT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtLoginDialog.h" - -#include "QtAddAccount.h" -#include "QtAddWengoAccount.h" -#include "QtAddSIPAccount.h" -#include "QtLogAccount.h" - -#include -#include - -#include - -#include -#include -#include - -#include - -#include - - -#include - -#include - -QtLoginDialog::QtLoginDialog(QtWengoPhone * qtWengoPhone, CUserProfileHandler & cUserProfileHandler) - :QDialog(qtWengoPhone->getWidget()), - _qtWengoPhone(qtWengoPhone) { - - _centralWidget = new QStackedWidget(this); - _loginPage.push_back(new QtAddAccount(this, _centralWidget, cUserProfileHandler)); - _loginPage.push_back(new QtAddWengoAccount(this, _centralWidget, cUserProfileHandler)); - _loginPage.push_back(new QtAddSIPAccount(this, _centralWidget, cUserProfileHandler)); - _loginPage.push_back(new QtLogAccount(this, _centralWidget, cUserProfileHandler)); - SAFE_CONNECT(this, SIGNAL(rejected()), SLOT(loginRejected())); - - _centralWidget->addWidget(_loginPage[AddAccount]); - _centralWidget->addWidget(_loginPage[AddWengoAccount]); - _centralWidget->addWidget(_loginPage[AddSIPAccount]); - _centralWidget->addWidget(_loginPage[LogAccount]); - - setWindowTitle(tr("@product@ - Connexion")); - - QVBoxLayout * layout = new QVBoxLayout(this); - layout->addWidget(_centralWidget); - - changePage(LogAccount); -} - -QtLoginDialog::~QtLoginDialog() { -} - -void QtLoginDialog::changePage(int newPage, std::string sipAccountName) { - if ( (newPage >= 0) && (newPage < _centralWidget->count())) - { - int page = newPage ; - - #ifndef CUSTOM_ACCOUNT - if( page == 0) - { - page = 2; - } - #endif - - _centralWidget->setCurrentIndex(page); - _loginPage[page]->initPage(); - if (!sipAccountName.empty()) { - _loginPage[page]->load(sipAccountName); - } - } -} - -ILogin* QtLoginDialog::currentPage() const { - return _loginPage[_centralWidget->currentIndex()]; -} - -void QtLoginDialog::loginRejected() { - _qtWengoPhone->getQtToolBar().enableMenuBar(); -} - -void QtLoginDialog::setInvalidAccount(const SipAccount & sipAccount) { - if (sipAccount.getType() == SipAccount::SipAccountTypeWengo) { - //wengo account - changePage(AddWengoAccount); - _loginPage[AddWengoAccount]->load(sipAccount); - } else { - //"generic" sip account - changePage(AddSIPAccount); - _loginPage[AddSIPAccount]->load(sipAccount); - } -} - -void QtLoginDialog::setValidAccount(SipAccount sipAccount) { - changePage(LogAccount); - _loginPage[LogAccount]->load(sipAccount); - _loginPage[LogAccount]->setInfoMessage(); -} - -void QtLoginDialog::setInfoMessage() { - _loginPage[_centralWidget->currentIndex()]->setInfoMessage(); -} - -void QtLoginDialog::setErrorMessage(const QString & message) { - _loginPage[_centralWidget->currentIndex()]->setErrorMessage(message); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/login/QtLoginDialog.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTLOGINDIALOG_H -#define OWQTLOGINDIALOG_H - -#include - -#include -#include - -#include - -class CUserProfileHandler; -class QStackedWidget; -class QtWengoPhone; -class ILogin; - -/** - * Qt login window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - * @author Xavier Desjardins - */ -class QtLoginDialog : public QDialog { - Q_OBJECT -public: - - enum LoginDialogPage { - AddAccount, - AddWengoAccount, - AddSIPAccount, - LogAccount - }; - - QtLoginDialog(QtWengoPhone * qtWengoPhone, CUserProfileHandler & cUserProfileHandler); - - ~QtLoginDialog(); - - void changePage(int newPage, std::string sipAccountName = ""); - - void setInfoMessage(); - - void setErrorMessage(const QString & message); - - QtWengoPhone * getQtWengoPhone() { - return _qtWengoPhone; - } - - ILogin* currentPage() const; - -public Q_SLOTS: - /** - * login cancelled -- enable toolbar menu. - */ - void loginRejected(); - - /** - * Init login entry and display a message on the login to say that the - * login/password is invalid. - */ - void setInvalidAccount(const SipAccount & sipAccount); - - /** - * Add the given SipAccount to the profile list and select it as default. - */ - void setValidAccount(SipAccount sipAccount); - -private: - - QtWengoPhone * _qtWengoPhone; - - QStackedWidget * _centralWidget; - - std::vector _loginPage; -}; - -#endif //OWQTLOGINDIALOG_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtMacApplication.h" - -#include - -#include -#include -#include - -#include - -/** - * QtMacApplicationObjC interface. - * - * This class will receive events from Cocoa and resend them to our C++ - * equivalent (QtMacApplication). - * - * @author Philippe Bernery - */ -@interface QtMacApplicationObjC : NSObject -{ - /** QtMacApplication instance. */ - QtMacApplication * _qtMacApplication; -} - -- (id) initWithQtMacApplicationInstance:(QtMacApplication *)qtMacApplication; -- (void) appReopen:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; -- (void) getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent; - -@end - - -@implementation QtMacApplicationObjC - -- (id) initWithQtMacApplicationInstance:(QtMacApplication *)qtMacApplication -{ - NSAutoreleasePool *pool = [NSAutoreleasePool new]; - - [super init]; - - // Member intialization - _qtMacApplication = qtMacApplication; - //// - - // Register event handlers - - // Event handler for wengo:// handling - [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self - andSelector:@selector(getUrl:withReplyEvent:) - forEventClass:kInternetEventClass - andEventID:kAEGetURL]; - - // Event handle for reopen event. Emitted when the Dock icon is clicked - // Or when the application icon has been double-clicked. - [[NSAppleEventManager sharedAppleEventManager] setEventHandler:self - andSelector:@selector(appReopen:withReplyEvent:) - forEventClass:kCoreEventClass - andEventID:kAEReopenApplication]; - - //// - - [pool release]; - - return self; -} - -- (void) dealloc -{ - NSAutoreleasePool *pool = [NSAutoreleasePool new]; - - // Unregister event handlers - [[NSAppleEventManager sharedAppleEventManager] removeEventHandlerForEventClass:kInternetEventClass - andEventID:kAEGetURL]; - - [[NSAppleEventManager sharedAppleEventManager] removeEventHandlerForEventClass:kCoreEventClass - andEventID:kAEReopenApplication]; - //// - - [pool release]; - - [super dealloc]; -} - -- (void) getUrl:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent -{ - NSString * url = [[event descriptorAtIndex:1] stringValue]; - std::string strUrl = [url cStringUsingEncoding:NSUTF8StringEncoding]; - _qtMacApplication->openURLRequestEvent(strUrl); -} - -- (void) appReopen:(NSAppleEventDescriptor *)event withReplyEvent:(NSAppleEventDescriptor *)replyEvent -{ - _qtMacApplication->applicationReopenEvent(); -} - -@end - - -struct QtMacApplicationPrivate { - QtMacApplicationObjC * _qtMacApplicationObjC; -}; - - -QtMacApplication::QtMacApplication(int & argc, char ** argv) - : QApplication(argc, argv) - , d(new QtMacApplicationPrivate) { - - d->_qtMacApplicationObjC = [[QtMacApplicationObjC alloc] initWithQtMacApplicationInstance:this]; -} - -QtMacApplication::~QtMacApplication() { - [d->_qtMacApplicationObjC release]; - delete d; -} - -void QtMacApplication::applicationReopenEvent() { - applicationMustShow(); -} - -void QtMacApplication::openURLRequestEvent(const std::string & url) { - // Put the received url in WengoPhone instance in case of no object is currently - // registered to the Signal. - // FIXME: Is this still necessary? - std::string call = String(url).split("/")[1]; - WengoPhone::getInstance().setStartupCall(call); - - openURLRequest(QString::fromUtf8(url.c_str())); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/macosx/QtMacApplication.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTMACAPPLICATION_H -#define OWQTMACAPPLICATION_H - -#include - -class QtMacApplicationPrivate; - -/** - * QApplication subclass for MacOS X. - * - * @author Philippe Bernery - */ -class QtMacApplication : public QApplication { - Q_OBJECT -public: - - QtMacApplication(int & argc, char ** argv); - - virtual ~QtMacApplication(); - - /** - * @name Event called by QtMacApplicationObjC. - * These must not be called from outside. - * @{ - */ - - /** A reopen event has been emitted. */ - void applicationReopenEvent(); - - /** A getURL event has been emitted. */ - void openURLRequestEvent(const std::string & url); - - /** - * @} - */ - -Q_SIGNALS: - - /** kHICommandShowAll received. */ - void applicationMustShow(); - - /** Emitted when user tried to access wengo:// */ - void openURLRequest(QString url); - -private: - QtMacApplicationPrivate* const d; -}; - -#endif //OWQTMACAPPLICATION_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/presentation/qt/macosx/template.app/Contents/Resources/qutecom.icns differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/NoWengoAlert.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/NoWengoAlert.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/NoWengoAlert.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/NoWengoAlert.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,220 +0,0 @@ - - - - - NoWengoAlert - - - - 0 - 0 - 303 - 101 - - - - - MS Shell Dlg 2 - 8 - 50 - false - false - false - false - - - - @product@ - SMS - - - - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 21 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - MS Shell Dlg 2 - 8 - 50 - false - false - false - false - - - - I have a @company@ account - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - Create a @company@ account - - - - - - - Qt::Horizontal - - - - 16 - 20 - - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - To send a SMS, you need to be logged in with a<br>@company@ account and to have @company@'s credits. - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - - 20 - 21 - - - - - - - - - - - haveBtn - clicked() - NoWengoAlert - accept() - - - 278 - 253 - - - 96 - 254 - - - - - createBtn - clicked() - NoWengoAlert - reject() - - - 369 - 253 - - - 179 - 282 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/PhoneCallWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/PhoneCallWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/PhoneCallWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/PhoneCallWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,765 +0,0 @@ - - PhoneCallWidget - - - - 0 - 0 - 284 - 418 - - - - - - - - - - - - 0 - 128 - 0 - - - - - - - 0 - 128 - 0 - - - - - - - 0 - 128 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 221 - 255 - 221 - - - - - - - 0 - 128 - 0 - - - - - - - - - 0 - 128 - 0 - - - - - - - 0 - 128 - 0 - - - - - - - 0 - 128 - 0 - - - - - - - 255 - 255 - 255 - - - - - - - 221 - 255 - 221 - - - - - - - 0 - 128 - 0 - - - - - - - - - 127 - 127 - 127 - - - - - - - 127 - 127 - 127 - - - - - - - 106 - 104 - 100 - - - - - - - 221 - 255 - 221 - - - - - - - 221 - 255 - 221 - - - - - - - 0 - 128 - 0 - - - - - - - - true - - - QFrame::Box - - - QFrame::Plain - - - - 6 - - - 0 - - - - - - 0 - 0 - - - - Communication is encrypted - - - - - - :/pics/phonecall/encryption.png - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignTop - - - - - - - - - - - - 0 - 128 - 0 - - - - - - - - - 0 - 128 - 0 - - - - - - - - - 0 - 128 - 0 - - - - - - - - Communication is encrypted - - - - - - - - - - 6 - - - 0 - - - - - - 0 - 0 - - - - Status - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - 00:00:00 - - - - - - - - - 0 - - - 0 - - - - - - 0 - 0 - - - - Nickname - - - Qt::PlainText - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - true - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - - - - 0 - 0 - - - - QFrame::NoFrame - - - 1 - - - 0 - - - - - 0 - - - 0 - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - - 0 - 0 - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - - - 0 - - - 0 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 50 - 0 - - - - QFrame::NoFrame - - - - - - Qt::AlignHCenter|Qt::AlignTop - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - Qt::Vertical - - - QSizePolicy::Expanding - - - - 20 - 40 - - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - 0 - 0 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - &Accept - - - - :/pics/actions/accept-phone.png:/pics/actions/accept-phone.png - - - true - - - - - - - &Reject - - - - :/pics/actions/hangup-phone.png:/pics/actions/hangup-phone.png - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - 0 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - - - - - :/pics/actions/hangup-phone.png:/pics/actions/hangup-phone.png - - - - - - - - - - - :/pics/actions/hold-phone.png:/pics/actions/hold-phone.png - - - - - - - - - - - :/pics/config/call-forward.png:/pics/config/call-forward.png - - - - - - - - - - - :/pics/actions/add-contact.png:/pics/actions/add-contact.png - - - - - - - - - - - :/pics/iconbar/conference.png:/pics/iconbar/conference.png - - - - - - - Dialpad - - - - - - - :/pics/dialpad/dialpad.png:/pics/dialpad/dialpad.png - - - true - - - - - - - Audio Smileys - - - - - - - :/pics/dialpad/audiosmileys.png:/pics/dialpad/audiosmileys.png - - - true - - - - - - - Qt::Horizontal - - - - 0 - 20 - - - - - - - - - - - - - WidgetRatioEnforcer - QFrame -
qtutil/WidgetRatioEnforcer.h
- 1 -
-
- - rejectButton - acceptButton - hangupButton - holdButton - forwardButton - addContactButton - createConf - dialpadButton - smileysButton - - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,89 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include "QtAudioSmileysWindow.h" - -#include -#include -#include -#include -#include - -#include "../QtDialpad.h" - -QtAudioSmileysWindow::QtAudioSmileysWindow(CDtmfThemeManager& cDtmfThemeManager, QtWengoPhone* qtWengoPhone) -: QFrame(0, Qt::Popup) -, _button(0) { - setFrameStyle(QFrame::StyledPanel | QFrame::Plain); - - _dialpad = new QtDialpad(cDtmfThemeManager, qtWengoPhone); - - QVBoxLayout* layout = new QVBoxLayout(this); - layout->setMargin(2); - _dialpad->layout()->setMargin(0); - layout->addWidget(_dialpad); -} - - -void QtAudioSmileysWindow::setButton(QAbstractButton* button) { - _button = button; -} - -void QtAudioSmileysWindow::showEvent(QShowEvent*) { - if (!_button) { - return; - } - - QRect rect = QApplication::desktop()->screenGeometry(_button); - int windowWidth = sizeHint().width(); - int windowHeight = sizeHint().height(); - - QPoint point = _button->parentWidget()->mapToGlobal(_button->pos()); - - // Make sure the dialog fit in the screen horizontally - if (point.x() + windowWidth > rect.right()) { - point.setX(point.x() + _button->width() - windowWidth); - } - - // Make sure the dialog fit in the screen vertically - if (point.y() + _button->height() + windowHeight > rect.bottom()) { - point.setY(point.y() - windowHeight); - } else { - point.setY(point.y() + _button->height()); - } - move(point); -} - -void QtAudioSmileysWindow::hideEvent(QHideEvent*) { - // This is a bit hackish: the window hide itself when one click outside it - // (because it has the Qt::Popup flag). In this case we want to uncheck its - // associated button. But we don't want to do so if the user clicked on - // the button, otherwise events will get mixed and the window will - // reappear. - QPoint cursorPos = QCursor::pos(); - cursorPos = _button->mapFromGlobal(cursorPos); - if (_button->isChecked() && !_button->rect().contains(cursorPos)) { - _button->blockSignals(true); - _button->setChecked(false); - _button->blockSignals(false); - } -} - -QtDialpad* QtAudioSmileysWindow::dialpad() const { - return _dialpad; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtAudioSmileysWindow.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTAUDIOSMILEYSWINDOW_H -#define QTAUDIOSMILEYSWINDOW_H - -#include - -class CDtmfThemeManager; -class QtWengoPhone; -class QtDialpad; - -class QShowEvent; -class QHideEvent; -class QAbstractButton; - -class QtAudioSmileysWindow : public QFrame { - Q_OBJECT -public: - QtAudioSmileysWindow(CDtmfThemeManager&, QtWengoPhone*); - void setButton(QAbstractButton*); - - QtDialpad* dialpad() const; - -protected: - virtual void showEvent(QShowEvent*); - virtual void hideEvent(QHideEvent*); - -private: - QtDialpad* _dialpad; - QAbstractButton* _button; -}; - -#endif /* AUDIOSMILEYSWINDOW_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,241 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtContactCallListWidget.h" - -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include - -#include -#include - -#include - -QtContactCallListWidget::QtContactCallListWidget(CWengoPhone & cWengoPhone, QWidget * parent) - : QWidget(parent), - _cWengoPhone(cWengoPhone) { - - // Setup our sunken frame - QFrame * frame = new QFrame(this); - frame->setFrameStyle(QFrame::StyledPanel | QFrame::Sunken); - - QVBoxLayout* layout = new QVBoxLayout(this); -#if defined(OS_MACOSX) - layout->setMargin(10); -#else - layout->setMargin(0); -#endif - layout->addWidget(frame); - - // Create _content - - // We need to create a separate "content" widget, because if we call - // setBackgroundRole(QPalette::Base) on "frame" the "Base" color will be - // visible in the corners of the frame. - _content = new QWidget(frame); - _content->setBackgroundRole(QPalette::Base); - _content->setAutoFillBackground(true); - - // Add _content to frame - layout = new QVBoxLayout(frame); - layout->setMargin(0); - layout->addWidget(_content); - - // Create a layout for _content. This layout will hold all the QtPhoneCall - // widgets - layout = new QVBoxLayout(_content); - layout->setMargin(0); - //// - - //Leads to a crash in conference call when - //everybody hangs up - //setAttribute(Qt::WA_DeleteOnClose, true); - - _conferenceState = CS_CallingFirst; -} - -QtContactCallListWidget::~QtContactCallListWidget() { -} - -void QtContactCallListWidget::addPhoneCall(QtPhoneCall * qtPhoneCall) { - _phoneCallList.append(qtPhoneCall); - - qtPhoneCall->getWidget()->setParent(_content); - - // Add separator if necessary - if (_content->layout()->count() > 0) { - QFrame * separator = new QFrame(_content); - separator->setFrameStyle(QFrame::HLine | QFrame::Sunken); - separator->setFixedHeight(4); - _content->layout()->addWidget(separator); - } - - _content->layout()->addWidget(qtPhoneCall->getWidget()); - SAFE_CONNECT(qtPhoneCall, SIGNAL(destroyed(QObject*)), - SLOT(slotQtPhoneCallDestroyed(QObject*))); - - if (qtPhoneCall->getCPhoneCall().getPhoneCall().getConferenceCall()) { - SAFE_CONNECT(qtPhoneCall, SIGNAL(startedTalking(QtPhoneCall*)), - SLOT(slotStartedTalking(QtPhoneCall*)) ); - } -} - -void QtContactCallListWidget::slotStartedTalking(QtPhoneCall * qtPhoneCall) { - //QMutexLocker locker(&_mutex); - - //Hack - //Fix a crash in conference mode when QtPhoneCall comes NULL while - //this function is not ended - _qtPhoneCall = qtPhoneCall; - - switch (_conferenceState) { - case CS_CallingFirst: - QMessageBox::information( - this, - tr("@product@ - Proceed Conference"), - tr("You can now inform your first interlocutor he is going to be part of a conference call.

" - "When it's done, click the button below. Your first interlocutor will be put on hold, while your second interlocutor will be called.
"), - tr("Hold first interlocutor and call second one") - ); - - if (_qtPhoneCall) { - _qtPhoneCall->holdOrResume(); - _conferenceState = CS_FirstOnHold; - } - return; - - case CS_FirstOnHold: - QMessageBox::information( - this, - tr("@product@ - Proceed Conference"), - tr("You can now inform your second interlocutor he is going to be part of a conference call.

" - "When it's done, click the button below to start the conference."), - tr("Start Conference") - ); - - if (_qtPhoneCall) { - _qtPhoneCall->holdOrResume(); - _conferenceState = CS_Started; - } - return; - - case CS_Started: - // Nothing to do - break; - } -} - -void QtContactCallListWidget::hangup() { - QMutexLocker locker(&_mutex); - - QtPhoneCall * phone; - - QtPhoneCallList::iterator iter; - - for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { - phone = (*iter); - - phone->rejectCall(); - } - _phoneCallList.clear(); -} - -bool QtContactCallListWidget::hasPhoneCall(PhoneCall * phoneCall) { - QMutexLocker locker(&_mutex); - - QtPhoneCallList::iterator iter; - QtPhoneCall * tmp = NULL; - for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { - tmp = (*iter); - if (tmp->getCPhoneCall().getPhoneCall().getCallId() == phoneCall->getCallId()) { - return true; - } - } - return false; -} - -QtPhoneCall * QtContactCallListWidget::takeQtPhoneCall(PhoneCall * phoneCall) { - QMutexLocker locker(&_mutex); - - QtPhoneCallList::iterator iter; - for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { - QtPhoneCall * qtphoneCall = *iter; - if (qtphoneCall->getCPhoneCall().getPhoneCall().getPeerSipAddress().getUserName() == - phoneCall->getPeerSipAddress().getUserName()) { - _content->layout()->removeWidget(qtphoneCall->getWidget()); - _phoneCallList.erase(iter); - return qtphoneCall; - } - } - return NULL; -} - -QtPhoneCall * QtContactCallListWidget::getFirstQtPhoneCall() { - if (_phoneCallList.count() == 0) { - return NULL; - } - return _phoneCallList[0]; -} - -bool QtContactCallListWidget::hasActivePhoneCall() { - QMutexLocker locker(&_mutex); - - QtPhoneCallList::iterator iter; - for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { - if ((*iter)->getCPhoneCall().getState() == EnumPhoneCallState::PhoneCallStateTalking) { - return true; - } - } - return false; -} - -void QtContactCallListWidget::slotQtPhoneCallDestroyed(QObject * qtPhoneCall) { - QMutexLocker locker(&_mutex); - - QtPhoneCallList::iterator iter; - QtPhoneCall * tmp = NULL; - for (iter = _phoneCallList.begin(); iter != _phoneCallList.end(); iter++) { - tmp = (*iter); - if (tmp == qtPhoneCall) { - _phoneCallList.erase(iter); - break; - } - } - if (_phoneCallList.size() == 0) { - aboutToClose(); - close(); - QTabWidget * tabWidget = qobject_cast(parentWidget()->parentWidget()); - if (!tabWidget) { - LOG_FATAL("parent QWidget is not a QTabWidget"); - } - int index = tabWidget->indexOf(this); - tabWidget->removeTab(index); - } - _qtPhoneCall = NULL; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtContactCallListWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,82 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTCONTACTCALLLISTWIDGET_H -#define QTCONTACTCALLLISTWIDGET_H - -#include -#include - -class PhoneCall; -class ConferenceCall; -class CWengoPhone; -class QtPhoneCall; - -namespace Ui { class ContactCallListWidget; } - - -class QtContactCallListWidget : public QWidget { - Q_OBJECT -public: - - QtContactCallListWidget(CWengoPhone & cWengoPhone, QWidget * parent); - - ~QtContactCallListWidget(); - - void addPhoneCall(QtPhoneCall * qtPhoneCall); - - bool hasPhoneCall(PhoneCall * phoneCall); - - bool hasActivePhoneCall(); - - QtPhoneCall * takeQtPhoneCall(PhoneCall * phoneCall); - - QtPhoneCall * getFirstQtPhoneCall(); - -Q_SIGNALS: - void aboutToClose(); - -public Q_SLOTS: - - void hangup(); - - void slotStartedTalking(QtPhoneCall* phoneCall); - -private Q_SLOTS: - - void slotQtPhoneCallDestroyed(QObject * qtPhoneCall); - -private: - - QWidget * _content; - - CWengoPhone & _cWengoPhone; - - QMutex _mutex; - - enum ConferenceState { CS_CallingFirst, CS_FirstOnHold, CS_Started }; - ConferenceState _conferenceState; - - typedef QList < QtPhoneCall * > QtPhoneCallList; - QtPhoneCallList _phoneCallList; - - QtPhoneCall * _qtPhoneCall; -}; - -#endif //QTCONTACTCALLLISTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,888 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPhoneCall.h" - -#include "ui_PhoneCallWidget.h" - -#ifdef XV_HWACCEL - #include "QtVideoXV.h" -#endif - -#include "QtVideoQt.h" -#include "QtPhoneCallEventFilter.h" -#include "../toaster/QtCallToaster.h" -#include "../QtDialpad.h" - -#include "QtAudioSmileysWindow.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -#include -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -// If a PSTN number is shorter than this length, we assume it's a special sip -// account, like 333 for Wengo -static const int PSTN_NUMBER_MIN_LENGTH = 4; - -static const int LOCAL_FRAME_WIDTH = 64; -static const int LOCAL_FRAME_HEIGHT = 64; -static const int LOCAL_FRAME_MARGIN = 7; - -// See wifo/phapi/phmedia-video.c -static const int NOWEBCAM_FILL_VALUE = 128; - -static const int NOWEBCAM_SAMPLE_COUNT = 200; - -// Minimum width of buttons shown when we are in "talking" state. Defined to avoid square buttons -// under MacOS X -static const int TALKING_BUTTON_MIN_WIDTH = 50; - -/** - * Helper function to determine if image is a real webcam or not: - * If the remote user has no webcam, then wifo will send us a yuv image filled - * with NOWEBCAM_FILL_VALUE bytes. - */ -static bool isRealWebcamVideoFrame(piximage* image) { - if (image->palette != PIX_OSI_YUV420P) { - return true; - } - - int step = (image->width * image->height * 3 / 2) / NOWEBCAM_SAMPLE_COUNT; - - for (int sample=0; sample < NOWEBCAM_SAMPLE_COUNT; ++sample) { - if (image->data[sample * step] != NOWEBCAM_FILL_VALUE) { - return true; - } - } - - return false; -} - -static void setButtonAction(QPushButton* button, QAction* action) { - button->disconnect(); - SAFE_CONNECT_RECEIVER(button, SIGNAL(clicked()), action, SLOT(trigger())); - button->setIcon(action->icon()); - button->setEnabled(action->isEnabled()); - button->setToolTip(action->toolTip()); -} - -static void flashMainWindow(QWidget* window) { - if (window->isActiveWindow()) { - return; - } - - if (!window->isVisible()) { - // Make sure the window appears on the taskbar, - // otherwise it won't flash... - window->showMinimized(); - } - - WidgetUtils::flashWindow(window); -} - -QtPhoneCall::QtPhoneCall(CPhoneCall & cPhoneCall) - : QObject(NULL), - _cPhoneCall(cPhoneCall) { - - _qtWengoPhone = (QtWengoPhone *) _cPhoneCall.getCWengoPhone().getPresentation(); - _videoWindow = NULL; - _closed = false; - _duration = 0; - - _callToaster = NULL; - _remoteVideoFrame = NULL; - _localVideoFrame = NULL; - _hold = false; - _videoMode = VM_None; - - _mutex = new QMutex(QMutex::Recursive); - - _phoneCallWidget = new QWidget(NULL); - - _ui = new Ui::PhoneCallWidget(); - _ui->setupUi(_phoneCallWidget); - _ui->encryptionFrame->hide(); - //_ui->videoContainer->hide(); - _ui->labelStack->setCurrentWidget(_ui->avatarPage); - _ui->buttonStack->setCurrentWidget(_ui->ringingPage); - - _phoneCallWidget->setAutoFillBackground(true); - - std::string tmpDisplayName = _cPhoneCall.getPhoneCall().getPeerSipAddress().getDisplayName(); - QString userName = QString::fromUtf8(tmpDisplayName.c_str()); - - if (userName.isEmpty()) { - userName = QString::fromStdString(_cPhoneCall.getPhoneCall().getPeerSipAddress().getUserName()); - } - QPixmap avatarPixmap = loadContactAvatar(userName); - initAvatarLabel(avatarPixmap); - - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - // On MacOSX getVideoEnable causes quite a lot of work, like listing the - // available devices. Therefore we keep the result instead of asking it - // everytime it's needed. - _videoEnabledInConfig = config.getVideoEnable(); - - //init flip - PhoneLine & phoneLine = dynamic_cast < PhoneLine & > (_cPhoneCall.getPhoneCall().getPhoneLine()); - phoneLine.flipVideoImage(config.getVideoFlipEnable()); - //// - - userName = getDisplayName(userName); - -#ifndef OS_MACOSX - //With Qt4.2, the button background is set to _phoneCallWidget background - //color on Windows and Linux, setting autoFillBackground to true prevents - //this. - //We don't want to do this on OSX, because on this platform setting - //autoFillBackground to true paints horizontal stripes behind the buttons. - Q_FOREACH(QPushButton* button, _phoneCallWidget->findChildren()) { - button->setAutoFillBackground(true); - } - //// -#endif - - Q_FOREACH(QPushButton* button, _ui->talkingPage->findChildren()) { - button->setMinimumWidth(TALKING_BUTTON_MIN_WIDTH); - } - - // Set bold ourself: if we do it from Designer it alters the font name (at - // least with Qt 4.1) - QFont font(_ui->nickNameLabel->font()); - font.setBold(true); - _ui->nickNameLabel->setFont(font); - - _ui->nickNameLabel->setText(userName); - updateNickNameToolTip(); - - _ui->statusLabel->setToolTip(tr("Status")); - - // Accept call - SAFE_CONNECT(_ui->acceptButton, SIGNAL(clicked()), SLOT(acceptCall())); - - // Reject call - SAFE_CONNECT(_ui->rejectButton, SIGNAL(clicked()), SLOT(rejectCall())); - - // Tweak ui when we are the caller - if (!isIncoming()) { - _ui->acceptButton->hide(); - _ui->rejectButton->setText(tr("Ca&ncel")); - } - - // Hang up - _actionHangupCall = new QAction(QIcon(":/pics/actions/hangup-phone.png"), tr("Hang-up"), _phoneCallWidget); - SAFE_CONNECT(_actionHangupCall, SIGNAL(triggered()), SLOT(rejectCall())); - setButtonAction(_ui->hangupButton, _actionHangupCall); - - //Hold - _actionHold = new QAction(_phoneCallWidget); - SAFE_CONNECT(_actionHold, SIGNAL(triggered()), SLOT(holdOrResume())); - -#ifndef DISABLE_MANUAL_CALL_FORWARD - //Call forward - SAFE_CONNECT(_ui->forwardButton, SIGNAL(clicked()), SLOT(callTransfer()) ); - _ui->forwardButton->setToolTip(tr("Transfert call")); -#else - _ui->forwardButton->hide(); -#endif - - //Add contact - _actionAddContact = new QAction(QIcon(":/pics/actions/add-contact.png"), tr("Add contact"), _phoneCallWidget); - SAFE_CONNECT(_actionAddContact, SIGNAL(triggered()), SLOT(addContact())); - setButtonAction(_ui->addContactButton, _actionAddContact); - //// - - SAFE_CONNECT(_ui->dialpadButton, SIGNAL(toggled(bool)), SLOT(toggleDialpad(bool)) ); - SAFE_CONNECT(_ui->smileysButton, SIGNAL(toggled(bool)), SLOT(toggleSmileys(bool)) ); - SAFE_CONNECT(_ui->createConf, SIGNAL(clicked()), SLOT(createConf()) ); - - - //Computes the call duration - _callTimer = new QTimer(_phoneCallWidget); - SAFE_CONNECT(_callTimer, SIGNAL(timeout()), SLOT(updateCallDuration())); - - QtPhoneCallEventFilter * filter = new QtPhoneCallEventFilter(_phoneCallWidget); - _phoneCallWidget->installEventFilter(filter); - - flashMainWindow(_qtWengoPhone->getWidget()); - showToaster(userName, avatarPixmap); - - if (!_cPhoneCall.getPhoneCall().getConferenceCall()) { - _qtWengoPhone->addPhoneCall(this); - } else { - hideConfButton(); - _qtWengoPhone->addToConference(this); - } - - updateStatusLabel(); - updateHoldAction(); - - //update toolbar (menus) - if (_qtWengoPhone) { - _qtWengoPhone->getQtToolBar().updateMenuActions(); - } - //// - - _ui->acceptButton->setFocus(); - - _ui->smileysButton->setVisible(false); -} - -QtPhoneCall::~QtPhoneCall() { - if (_remoteVideoFrame) { - pix_free(_remoteVideoFrame); - } - if (_localVideoFrame) { - pix_free(_localVideoFrame); - } - - OWSAFE_DELETE(_ui); - OWSAFE_DELETE(_mutex); -} - -void QtPhoneCall::initAvatarLabel(const QPixmap& pixmap) { - if (pixmap.hasAlpha()) { - // Paint avatar over a background if it's transparent (doing so for - // full opaque images looks ugly) - QPixmap bg(":/pics/phonecall/avatar_background.png"); - QPainter painter(&bg); - painter.drawPixmap( - (bg.width() - pixmap.width()) / 2, - (bg.height() - pixmap.height()) / 2, - pixmap); - painter.end(); - _ui->avatarLabel->setPixmap(bg); - } else { - _ui->avatarLabel->setPixmap(pixmap); - } - - _ui->labelStack->setCurrentWidget(_ui->avatarPage); -} - -QPixmap QtPhoneCall::loadContactAvatar(const QString& userName) { - - QPixmap pixmap; - - QtContactList * qtContactList = _qtWengoPhone->getQtContactList(); - if (qtContactList) { - CContactList & cContactList = qtContactList->getCContactList(); - - IMContact imContact(EnumIMProtocol::IMProtocolWengo, userName.toStdString()); - std::string contactId = cContactList.findContactThatOwns(imContact); - ContactProfile contactProfile = cContactList.getContactProfile(contactId); - - std::string data = contactProfile.getIcon().getData(); - if (!data.empty()) { - pixmap.loadFromData((uchar *) data.c_str(), data.size()); - } - } - - if (pixmap.isNull()) { - // User is not in contact list, or has no avatar defined, use default - // avatar instead - std::string data = AvatarList::getInstance().getDefaultAvatarPicture().getData(); - pixmap.loadFromData((uchar*) data.c_str(), data.size()); - } - - return pixmap; -} - - -void QtPhoneCall::updateHoldAction() { - if (_hold) { - _actionHold->setToolTip(tr("Resume")); - _actionHold->setIcon(QIcon(":/pics/actions/resume-phone.png")); - } else { - _actionHold->setToolTip(tr("Hold")); - _actionHold->setIcon(QIcon(":/pics/actions/hold-phone.png")); - } - setButtonAction(_ui->holdButton, _actionHold); -} - - -void QtPhoneCall::updateNickNameToolTip() { - QString toolTip = QString::fromStdString(_cPhoneCall.getPeerSipAddress()); - if (!_codecs.isEmpty()) { - toolTip += QString(" (%1)").arg(_codecs); - } - _ui->nickNameLabel->setToolTip(toolTip); -} - - -QString QtPhoneCall::getDisplayName(QString str) -{ - QString tmpUserName = str; - - CWengoPhone & cWengoPhone = _cPhoneCall.getCWengoPhone(); - CUserProfile* cUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if(cUserProfile) - { - std::string uuid = cUserProfile->getCContactList().findContactThatOwns(str.toStdString()); - if(!uuid.empty()) - { - ContactProfile contactProfile = cUserProfile->getCContactList().getContactProfile(uuid); - if(!contactProfile.getShortDisplayName().empty()) - tmpUserName = QString::fromStdString(contactProfile.getShortDisplayName()); - } - } - return tmpUserName; -} - -void QtPhoneCall::stateChangedEvent(EnumPhoneCallState::PhoneCallState state) { - std::string codecs; - if (_cPhoneCall.getAudioCodecUsed() != CodecList::AudioCodecError) { - codecs += CodecList::toString(_cPhoneCall.getAudioCodecUsed()); - } - if (_cPhoneCall.getVideoCodecUsed() != CodecList::VideoCodecError) { - codecs += "/" + CodecList::toString(_cPhoneCall.getVideoCodecUsed()); - } - _codecs = QString::fromStdString(codecs); - updateNickNameToolTip(); - - updateStatusLabel(); - - //update toolbar (menus) - if (_qtWengoPhone) { - _qtWengoPhone->getQtToolBar().updateMenuActions(); - } - - switch (state) { - case EnumPhoneCallState::PhoneCallStateTalking: - _ui->buttonStack->setCurrentWidget(_ui->talkingPage); - _duration = 0; - _callTimer->start(1000); - _actionHangupCall->setEnabled(true); - - _ui->encryptionFrame->setVisible(isCallEncrypted()); - - startedTalking(this); - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - case EnumPhoneCallState::PhoneCallStateRinging: - case EnumPhoneCallState::PhoneCallStateRingingStart: - case EnumPhoneCallState::PhoneCallStateRingingStop: - case EnumPhoneCallState::PhoneCallStateIncoming: - _actionHangupCall->setEnabled(true); - break; - - case EnumPhoneCallState::PhoneCallStateHold: - _hold = true; - updateHoldAction(); - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - _hold = false; - updateHoldAction(); - break; - - case EnumPhoneCallState::PhoneCallStateUnknown: - case EnumPhoneCallState::PhoneCallStateError: - case EnumPhoneCallState::PhoneCallStateMissed: - case EnumPhoneCallState::PhoneCallStateRedirected: - case EnumPhoneCallState::PhoneCallStateBusy: - case EnumPhoneCallState::PhoneCallStateRejected: - case EnumPhoneCallState::PhoneCallStateUserNotFound: - case EnumPhoneCallState::PhoneCallStateUserNotAvailable: - break; - - case EnumPhoneCallState::PhoneCallStateClosed: - LOG_FATAL("should never reach this case since PPhoneCall::close() is done for this purpose"); - break; - - default: - LOG_FATAL("unknown PhoneCallState=" + EnumPhoneCallState::toString(state)); - } -} - -void QtPhoneCall::initVideo(piximage* remoteVideoFrame, piximage* localVideoFrame) { - _remoteVideoFrame = remoteVideoFrame; - _localVideoFrame = localVideoFrame; - - if (!isRealWebcamVideoFrame(remoteVideoFrame)) { - if (_videoEnabledInConfig) { - _videoMode = VM_LocalOnly; - } else { - _videoMode = VM_None; - } - return; - } - - // We only get there if we receive a real video from the remote user - - if (_videoEnabledInConfig) { - _videoMode = VM_Both; - } else { - _videoMode = VM_RemoteOnly; - } - // Hide avatar label to save space for the video - //_ui->avatarLabel->hide(); - -#ifdef XV_HWACCEL - if (config.getXVideoEnable()) { - _videoWindow = new QtVideoXV(_phoneCallWidget, remoteVideoFrame->width, remoteVideoFrame->height, - localVideoFrame->width, localVideoFrame->height); - if (!_videoWindow->isInitialized()) { - OWSAFE_DELETE(_videoWindow); - } - } -#endif - - // We can fallback from a failure in QtVideoXV - if (!_videoWindow) { - _videoWindow = new QtVideoQt(_ui->videoContainer); - SAFE_CONNECT(_videoWindow, SIGNAL(toggleFlipVideoImageSignal()), SLOT(toggleFlipVideoImage())); - } - - // Init videoContainer - double ratio = remoteVideoFrame->width / double(remoteVideoFrame->height); - _ui->videoContainer->setRatio(ratio); - _ui->videoContainer->setChild(_videoWindow->getWidget()); - QTimer::singleShot(0, _videoWindow->getWidget(), SLOT(show())); - //_ui->videoContainer->show(); - _ui->labelStack->setCurrentWidget(_ui->videoPage); -} - -void QtPhoneCall::videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame) { - - QMutexLocker locker(_mutex); - - //FIXME hack to prevent a crash - if (_closed) { - return; - } - - if (_videoMode == VM_None) { - initVideo(remoteVideoFrame, localVideoFrame); - } - - if (_videoMode == VM_RemoteOnly || _videoMode == VM_Both) { - _videoWindow->showImage(remoteVideoFrame, localVideoFrame); - } - - if (_videoMode == VM_LocalOnly) { - QImage image; - QSize size(_localVideoFrame->width, _localVideoFrame->height); - size.scale(LOCAL_FRAME_WIDTH, LOCAL_FRAME_HEIGHT, Qt::KeepAspectRatio); - if (size.width() & 1) { - size.setWidth(size.width() + 1); - } - if (size.height() & 1) { - size.setHeight(size.height() + 1); - } - QtVideoQt::convertPixImageToQImage(_localVideoFrame, size, &image); - QPixmap avatarPix = *_ui->avatarLabel->pixmap(); - QPainter painter(&avatarPix); - painter.drawImage( - avatarPix.width() - size.width() - LOCAL_FRAME_MARGIN, - avatarPix.height() - size.height() - LOCAL_FRAME_MARGIN, - image); - painter.end(); - _ui->avatarLabel->setPixmap(avatarPix); - } -} - -void QtPhoneCall::acceptCall() { - _ui->statusLabel->setText(tr("Initialization...")); - _cPhoneCall.accept(); - if (_callToaster) { - _callToaster->close(); - } -} - -void QtPhoneCall::rejectCall() { - LOG_DEBUG("phone call hangup"); - switch (_cPhoneCall.getState()) { - case EnumPhoneCallState::PhoneCallStateClosed: - case EnumPhoneCallState::PhoneCallStateError: - case EnumPhoneCallState::PhoneCallStateResumed: - case EnumPhoneCallState::PhoneCallStateTalking: - case EnumPhoneCallState::PhoneCallStateDialing: - case EnumPhoneCallState::PhoneCallStateRinging: - case EnumPhoneCallState::PhoneCallStateRingingStart: - case EnumPhoneCallState::PhoneCallStateRingingStop: - case EnumPhoneCallState::PhoneCallStateIncoming: - case EnumPhoneCallState::PhoneCallStateHold: - case EnumPhoneCallState::PhoneCallStateRedirected: - case EnumPhoneCallState::PhoneCallStateBusy: - case EnumPhoneCallState::PhoneCallStateRejected: - case EnumPhoneCallState::PhoneCallStateUserNotFound: - case EnumPhoneCallState::PhoneCallStateUserNotAvailable: - _cPhoneCall.hangUp(); - break; - default: - LOG_DEBUG("call rejected"); - } -} - -//--start my dirty hack -void QtPhoneCall::callTransfer() { - - std::string forwardNumber = _qtWengoPhone->getQtCallBar().getPhoneComboBoxCurrentText(); - if (forwardNumber.length()>0){ - _cPhoneCall.blindTransfer(forwardNumber); - _qtWengoPhone->getQtCallBar().clearPhoneComboBoxEditText(); - } - else { - QString titel = tr("QuteCom - Information"); - QString message = tr("You must enter a phone number before forwarding"); - QMessageBox::information(_qtWengoPhone->getWidget(), titel, message ); - } -} -//-- end my dirty hack - -void QtPhoneCall::holdOrResume() { - if (_hold) { - _cPhoneCall.resume(); - } else { - _cPhoneCall.hold(); - } - updateHoldAction(); -} - -void QtPhoneCall::updateCallDuration() { - _duration++; - updateStatusLabel(); -} - -void QtPhoneCall::updateStatusLabel() { - QString text; - switch (_cPhoneCall.getState()) { - case EnumPhoneCallState::PhoneCallStateError: - text = tr("Error"); - break; - - case EnumPhoneCallState::PhoneCallStateResumed: - case EnumPhoneCallState::PhoneCallStateTalking: - if (_cPhoneCall.getPhoneCall().getConferenceCall()) { - text = tr("Talking - Conference"); - } else { - text = tr("Talking"); - } - break; - - case EnumPhoneCallState::PhoneCallStateDialing: - text = tr("Dialing"); - break; - - case EnumPhoneCallState::PhoneCallStateBusy: - text = tr("User busy"); - break; - - case EnumPhoneCallState::PhoneCallStateRejected: - text = tr("Call Rejected"); - break; - - case EnumPhoneCallState::PhoneCallStateUserNotFound: - text = tr("User/number not found"); - break; - - case EnumPhoneCallState::PhoneCallStateUserNotAvailable: - text = tr("User not available"); - break; - - case EnumPhoneCallState::PhoneCallStateRinging: - text = tr("Ringing"); - break; - - case EnumPhoneCallState::PhoneCallStateRingingStart: - text = tr("Ringing"); - break; - - case EnumPhoneCallState::PhoneCallStateIncoming: - text = tr("Incoming Call"); - break; - - case EnumPhoneCallState::PhoneCallStateHold: - text = tr("Hold"); - break; - - case EnumPhoneCallState::PhoneCallStateRedirected: - text = tr("Redirected"); - break; - - default: - break; - } - _ui->statusLabel->setText(text); - - QTime time; - time = time.addSecs(_duration); - _ui->durationLabel->setText(time.toString(Qt::TextDate)); -} - -bool QtPhoneCall::isIncoming() const { - return (_cPhoneCall.getState() == EnumPhoneCallState::PhoneCallStateIncoming); -} - -void QtPhoneCall::showToaster(const QString & userName, const QPixmap& pixmap) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - if (!isIncoming()) { - return; - } - - //Shows toaster for incoming chats? - if (!config.getNotificationShowToasterOnIncomingCall()) { - return; - } - - OWSAFE_DELETE(_callToaster); - _callToaster = new QtCallToaster(); - _callToaster->setMessage(userName); - _callToaster->setPixmap(pixmap); - - SAFE_CONNECT(_callToaster, SIGNAL(pickUpButtonClicked()), SLOT(acceptCall())); - SAFE_CONNECT(_callToaster, SIGNAL(hangUpButtonClicked()), SLOT(rejectCall())); - _callToaster->show(); -} - -void QtPhoneCall::close() { - //FIXME hack to prevent a crash - _closed = true; - - if (_callToaster) { - _callToaster->close(); - } - - _callTimer->disconnect(); - _callTimer->stop(); - OWSAFE_DELETE(_callTimer); - - _actionHangupCall->setEnabled(false); - _ui->statusLabel->setText(tr("Closed")); - if (_videoWindow) { - if (_videoWindow->isFullScreen()) { - _videoWindow->unFullScreen(); - } - } - - //update toolbar (menus) - if (_qtWengoPhone) { - _qtWengoPhone->getQtToolBar().updateMenuActions(); - } - //// - - //TODO: disconnect from flipWebcamButtonClicked - OWSAFE_DELETE(_videoWindow); - OWSAFE_DELETE(_phoneCallWidget); - deleteLater(); -} - -void QtPhoneCall::toggleFlipVideoImage() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - PhoneLine & phoneLine = dynamic_cast < PhoneLine & > (_cPhoneCall.getPhoneCall().getPhoneLine()); - bool flip = !config.getVideoFlipEnable(); - phoneLine.flipVideoImage(flip); - config.set(Config::VIDEO_ENABLE_FLIP_KEY, flip); -} - -/** - * Helper function trying to determine if a username is a PSTN number. - */ -static bool isPSTNUserName(const QString& userName) { - for (int pos=0; pos < userName.size(); ++pos) { - if (!userName[0].isDigit()) { - return false; - } - } - - return userName.size() >= PSTN_NUMBER_MIN_LENGTH; -} - -void QtPhoneCall::addContact() { - CWengoPhone & cWengoPhone = _cPhoneCall.getCWengoPhone(); - CUserProfile* cUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (!cUserProfile) { - LOG_WARN("No user profile defined. This should not happen"); - return; - } - - ContactProfile contactProfile; - QtProfileDetails qtProfileDetails(*cUserProfile, contactProfile, _phoneCallWidget->window(), tr("Add a Contact")); - - // Fill some QtProfileDetails fields - PhoneCall& call = _cPhoneCall.getPhoneCall(); - SipAddress sipAddress = call.getPeerSipAddress(); - - QString rawSipAddress = QString::fromStdString(sipAddress.getRawSipAddress()); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString wengoRealm = QString::fromStdString( config.getWengoRealm() ); - if (rawSipAddress.contains(wengoRealm)) { - // Wengo server - QString userName; - userName = QString::fromUtf8(sipAddress.getDisplayName().c_str()); - if (userName.isEmpty()) { - userName = QString::fromUtf8(sipAddress.getUserName().c_str()); - } - if (isPSTNUserName(userName)) { - // User name is the phone number - qtProfileDetails.setHomePhone(userName); - } else { - // User name is the name of the Wengo account - qtProfileDetails.setWengoName(userName); - } - } else { - // External SIP server - QString address = QString::fromStdString(sipAddress.getSipAddress()); - if (address.startsWith("sip:")) { - address = address.mid(4); - } - qtProfileDetails.setSipAddress(address); - } - //// - - if (qtProfileDetails.show()) { - // WARNING: if the user hang up while the dialog is shown, 'this' won't - // be valid anymore. Therefore we must not use any field of 'this' - // here. - cUserProfile->getCContactList().addContact(contactProfile); - } -} - -bool QtPhoneCall::isCallEncrypted() { - return _cPhoneCall.isCallEncrypted(); -} - - -/** - * Hide the other audio smileys window if it's open and uncheck its button - */ -static void hideOtherPopupWindow(QPushButton* button, QtAudioSmileysWindow* window) { - button->blockSignals(true); - button->setChecked(false); - button->blockSignals(false); - if (window) { - window->hide(); - } -} - -/** - * Show an audio smileys window - */ -static void togglePopupWindow(QtAudioSmileysWindow* window, bool on) { - if (on) { - window->show(); - } else { - if (window) { - window->hide(); - } - } -} - -void QtPhoneCall::toggleDialpad(bool on) { - if (_ui->smileysButton->isChecked()) { - hideOtherPopupWindow(_ui->smileysButton, _smileysWindow.get()); - } - if (on) { - if (!_dialpadWindow.get()) { - CDtmfThemeManager& manager = _qtWengoPhone->getCWengoPhone().getCDtmfThemeManager(); - _dialpadWindow.reset( new QtAudioSmileysWindow(manager, _qtWengoPhone) ); - _dialpadWindow->dialpad()->setThemeMode(QtDialpad::ThemeModeDefaultOnly); - _dialpadWindow->setButton(_ui->dialpadButton); - } - } - - togglePopupWindow(_dialpadWindow.get(), on); -} - -void QtPhoneCall::toggleSmileys(bool on) { - if (_ui->dialpadButton->isChecked()) { - hideOtherPopupWindow(_ui->dialpadButton, _dialpadWindow.get()); - } - if (on) { - if (!_smileysWindow.get()) { - CDtmfThemeManager& manager = _qtWengoPhone->getCWengoPhone().getCDtmfThemeManager(); - _smileysWindow.reset( new QtAudioSmileysWindow(manager, _qtWengoPhone) ); - _smileysWindow->dialpad()->setThemeMode(QtDialpad::ThemeModeAudioSmileysOnly); - _smileysWindow->setButton(_ui->smileysButton); - } - } - - togglePopupWindow(_smileysWindow.get(), on); -} - -void QtPhoneCall::createConf() -{ - QString address = QString::fromStdString(_cPhoneCall.getPeerSipAddress()); - - if(address.contains("@")) - address = address.section("@",0,0); - - if (address.startsWith("sip:")) { - address = address.mid(4); - } - - // - - QtConferenceCallWidget conferenceDialog(_qtWengoPhone->getWidget(), _qtWengoPhone->getCWengoPhone(), &_cPhoneCall.getPhoneCall().getPhoneLine(),false); - conferenceDialog.setFirstPeer(address.toStdString()); - if(conferenceDialog.exec()) - { - if(address != conferenceDialog.getSecondPeer()) - { - _ui->createConf->hide(); - _qtWengoPhone->addToConference(conferenceDialog.getSecondPeer(),&_cPhoneCall.getPhoneCall()); - } - } -} - -void QtPhoneCall::hideConfButton() -{ - _ui->createConf->hide(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,47 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPhoneCallEventFilter.h" - -#include -#include - -QtPhoneCallEventFilter::QtPhoneCallEventFilter(QObject * parent) : QObject(parent) { -} - -bool QtPhoneCallEventFilter::eventFilter(QObject * obj, QEvent * event) { - switch (event->type()) { - case QEvent::MouseButtonPress: - // paintEvent(dynamic_cast(event)); - - mouseEvent(dynamic_cast < QMouseEvent * > (event)); - - return true; - break; - default: - return QObject::eventFilter(obj, event); - } -} - -void QtPhoneCallEventFilter::mouseEvent(QMouseEvent * e) { - if (e->button() == Qt::RightButton) { - QPoint p = QPoint(e->globalPos()); - openPopup(p.x(), p.y()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCallEventFilter.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,45 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTPHONECALLEVENTFILTER_H -#define QTPHONECALLEVENTFILTER_H - -#include - -class QMouseEvent; -class QEvent; - -class QtPhoneCallEventFilter : public QObject { - Q_OBJECT -public: - - QtPhoneCallEventFilter(QObject * parent = 0); - -Q_SIGNALS: - - void openPopup(int x, int y); - -protected: - - bool eventFilter(QObject * obj, QEvent * event); - - void mouseEvent(QMouseEvent * e); -}; - -#endif //QTPHONECALLEVENTFILTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,180 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTPHONECALL_H -#define OWQTPHONECALL_H - -#include - -#include - -#include - -#include - -class PhoneCall; -class CPhoneCall; -class QtVideo; -class QtWengoPhone; -class QtCallToaster; -class QtAudioSmileysWindow; - -class QMenu; -class QAction; -class QTimer; -class QWidget; -class QMutex; -class QPixmap; -namespace Ui { class PhoneCallWidget; } - -/** - * Qt Presentation component for PhoneCall. - * - * @author Tanguy Krotoff - * @author Jerome Wagner - * @author Mathieu Stute - * @author Philippe Bernery - */ -class QtPhoneCall : public QObject, public PPhoneCall { - Q_OBJECT -public: - enum VideoMode { VM_None, VM_LocalOnly, VM_RemoteOnly, VM_Both }; - - QtPhoneCall(CPhoneCall & cPhoneCall); - - virtual ~QtPhoneCall(); - - void updatePresentation() { } - - QWidget * getWidget() const { - return _phoneCallWidget; - } - - CPhoneCall & getCPhoneCall() const { - return _cPhoneCall; - } - - bool isIncoming() const; - - void stateChangedEvent(EnumPhoneCallState::PhoneCallState state); - - void videoFrameReceivedEvent(piximage * remoteVideoFrame, piximage * localVideoFrame); - - void close(); - - void hideConfButton(); - /** - * @see PhoneCall::isCallEncrypted - */ - bool isCallEncrypted(); - -Q_SIGNALS: - void startedTalking(QtPhoneCall*); - -public Q_SLOTS: - - void holdOrResume(); - - void acceptCall(); - - void rejectCall(); - - void callTransfer(); - - void toggleFlipVideoImage(); - -private Q_SLOTS: - - void updateCallDuration(); - void updateStatusLabel(); - - void addContact(); - - void toggleSmileys(bool); - - void toggleDialpad(bool); - - void createConf(); - -private: - void initVideo(piximage* remoteVideoFrame, piximage* localVideoFrame); - - void showToaster(const QString & userName, const QPixmap& avatarPixmap); - - /*static*/ QString getDisplayName(QString str); - - QMenu * createMenu() const; - - QMenu * createInviteMenu() const; - - void updateHoldAction(); - - void updateNickNameToolTip(); - - QPixmap loadContactAvatar(const QString& userName); - - void initAvatarLabel(const QPixmap& pixmap); - - Ui::PhoneCallWidget * _ui; - - QWidget * _phoneCallWidget; - - CPhoneCall & _cPhoneCall; - - QtWengoPhone * _qtWengoPhone; - - QtVideo * _videoWindow; - - QAction * _actionHangupCall; - - QAction * _actionHold; - - QAction * _actionAddContact; - - /** Computes the call duration. */ - QTimer * _callTimer; - - int _duration; - - bool _hold; - - VideoMode _videoMode; - - QString _codecs; - - //buffers to free in desctructor - piximage * _remoteVideoFrame; - piximage * _localVideoFrame; - - //FIXME hack in order to prevent a crash - bool _closed; - - bool _videoEnabledInConfig; - - /** protect videoFrameReceivedEvent */ - QMutex * _mutex; - - QtCallToaster * _callToaster; - - std::auto_ptr _dialpadWindow; - - std::auto_ptr _smileysWindow; -}; - -#endif //OWQTPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,44 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtVideo.h" - -#include "ui_VideoWindow.h" - -#include - -QtVideo::QtVideo(QWidget * parent) { - _videoWindow = new QWidget(parent); - - _ui = new Ui::VideoWindow(); - _ui->setupUi(_videoWindow); -}; - -QtVideo::~QtVideo() { - delete _ui; -}; - -void QtVideo::toggleFullScreen() { - if (isFullScreen()) { - unFullScreen(); - } else { - fullScreen(); - } -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideo.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,71 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTVIDEO_H -#define OWQTVIDEO_H - -#include - -#include - -#include - -class QSize; -class QWidget; -namespace Ui { class VideoWindow; } - -/** - * Plugin interface for different video backends (Qt, XV, DirectX, OpenGL...) - * - * @author Mathieu Stute - * @author Tanguy Krotoff - */ -class QtVideo : public QObject, Interface { -public: - - QtVideo(QWidget * parent); - - virtual ~QtVideo(); - - virtual void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) = 0; - - QWidget * getWidget() const { - return _videoWindow; - } - - virtual QSize getFrameSize() const = 0; - - virtual bool isInitialized() const = 0; - - virtual bool isFullScreen() const = 0; - - virtual void unFullScreen() = 0; - - virtual void fullScreen() = 0; - - void toggleFullScreen(); - -protected: - - Ui::VideoWindow * _ui; - - QWidget * _videoWindow; -}; - -#endif //OWQTVIDEO_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,360 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtVideoQt.h" - -#include "ui_VideoWindow.h" - -#include -#include - -#include - -#include - -#include -#include - -#include - -#include - -#if defined OS_WINDOWS && defined CC_MSVC - #include -#endif - -static const int MAX_WIDTH = 640; -static const int MAX_HEIGHT = 480; -static double IGNORE_RATIO_DELTA = 0.2; - - -static void setFullScreenDesktopResolution(int width, int height) { -#if defined OS_WINDOWS && defined CC_MSVC - //TODO put inside LibUtil - - int nModeExist; - int nModeSwitch; - DEVMODE devMode; - memset(&devMode, 0, sizeof(DEVMODE)); - - //Tries to switch to desktop resolution 640x480 - //Uses less processor time if the desktop resolution is lower - devMode.dmSize = sizeof(DEVMODE); - EnumDisplaySettings(NULL, 0, &devMode); - for (int i = 1; ;i++) { - nModeExist = EnumDisplaySettings(NULL, i, &devMode); - if (nModeExist == 0) { - //End of modes, bail out. - break; - } - if ((devMode.dmBitsPerPel == 32) && (devMode.dmPelsWidth == width) && (devMode.dmPelsHeight == height)) { - nModeSwitch = ChangeDisplaySettings(&devMode, CDS_FULLSCREEN); - break; - } - } -#endif -} - - -static void restoreDesktopResolution() { -#if defined OS_WINDOWS && defined CC_MSVC - //Restores previous resolution - ChangeDisplaySettings(NULL, 0); -#endif -} - - -static QSize desktopResolution() { - return QApplication::desktop()->screenGeometry().size(); -} - - -void QtVideoQt::convertPixImageToQImage(piximage* pixImage, const QSize& size, QImage* image) { - Q_ASSERT(image); - // No need to realloc the image buffer if it's already of the right size - if (image->size() != size || image->format() != QImage::Format_RGB32) { - *image = QImage(size, QImage::Format_RGB32); - } - - // This is a bit ugly. We do not create the piximage with pix_alloc but - // initialize the piximage fields ourself. This make it possible to point - // the data field to the QImage buffer, saving an alloc and a memcpy. - piximage resizedPixImage; - resizedPixImage.palette = PIX_OSI_RGB32; - resizedPixImage.width = image->width(); - resizedPixImage.height = image->height(); - resizedPixImage.data = image->bits(); - - pix_convert(PIX_NO_FLAG, &resizedPixImage, pixImage); -} - -QtVideoQt::QtVideoQt(QWidget * parent) - : QtVideo(parent) - , _fullScreen(false) - , _detached(false) - { - _videoWindow->setMaximumSize(MAX_WIDTH, MAX_HEIGHT); - - _ui->frame->installEventFilter(this); - - // Set a black background - QPalette palette = _ui->frame->palette(); - palette.setColor(_ui->frame->backgroundRole(), Qt::black); - - // Set QPalette::Window too, because it will be used when the video window - // will be detached, see documentation of QWidget::setAutoFillBackground() - palette.setColor(QPalette::Window, Qt::black); - - _ui->frame->setAutoFillBackground(true); - _ui->frame->setPalette(palette); - //// - - PaintEventFilter * paintFilter = new PaintEventFilter(this, SLOT(paintEvent())); - _ui->frame->installEventFilter(paintFilter); - - connect(_ui->flipButton, SIGNAL(clicked()), SLOT(flipWebcamButtonClicked())); - connect(_ui->fullScreenButton, SIGNAL(clicked()), SLOT(fullScreenButtonClicked())); - connect(_ui->attachDetachButton, SIGNAL(clicked()), SLOT(toggleAttachDetach())); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - _showLocalVideo = config.getVideoEnable(); -} - -QtVideoQt::~QtVideoQt() { - if (_detached) { - // If _ui->frame is detached, it won't be automatically deleted by Qt - OWSAFE_DELETE(_ui->frame); - } -} - -QSize QtVideoQt::getFrameSize() const { - return _ui->frame->frameRect().size(); -} - -QSize QtVideoQt::compensateForFullScreenRatio(QSize imageSize) { - if (_normalDesktopResolution == _fullScreenDesktopResolution) { - // Don't do anything if resolution is the same, since we already have - // a big black border - return imageSize; - } - - double imageRatio = imageSize.width() / double(imageSize.height()); - double normalRatio = _normalDesktopResolution.width() / double(_normalDesktopResolution.height()); - double fullScreenRatio = _fullScreenDesktopResolution.width() / double(_fullScreenDesktopResolution.height()); - - if (qAbs(imageRatio - normalRatio) < IGNORE_RATIO_DELTA) { - // If the image and normal ratios are close enough, just stretch - // the image, to avoid thin black stripes - return _fullScreenDesktopResolution; - } else { - // Keep image ratio, but compensate the difference between normal and - // fullscreen ratios. - imageSize.setHeight(int(imageSize.height() * normalRatio / fullScreenRatio)); - imageSize.scale(_fullScreenDesktopResolution, Qt::KeepAspectRatio); - return imageSize; - } -} - -void QtVideoQt::showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) { - QSize size(remoteVideoFrame->width, remoteVideoFrame->height); - - QSize maxSize = _ui->frame->size(); - if (maxSize.width() > MAX_WIDTH && maxSize.height() > MAX_HEIGHT) { - maxSize = QSize(MAX_WIDTH, MAX_HEIGHT); - } - size.scale(maxSize, Qt::KeepAspectRatio); - - if (_fullScreen) { - size = compensateForFullScreenRatio(size); - } - - // Make sure dimensions are even, otherwise we get green lines - size = QSize(size.width() & ~1, size.height() & ~1); - - convertPixImageToQImage(remoteVideoFrame, size, &_image); - - //If we want to embed the local webcam picture, we do it here - if (_showLocalVideo) { - const unsigned offset_x = 10; - const unsigned offset_y = 10; - const unsigned ratio = 5; - const unsigned border_size = 1; - const QBrush border_color = Qt::black; - - //Force the ratio of the remote frame on the webcam frame (ignoring the webcam's aspect ratio) - unsigned width = (size.width() / ratio) & ~1; - unsigned height = (size.height() / ratio) & ~1; - unsigned posx = size.width() - width - offset_x; - unsigned posy = size.height() - height - offset_y; - - QImage localImage; - QSize localSize(width, height); - convertPixImageToQImage(localVideoFrame, localSize, &localImage); - - QPainter painter; - painter.begin(&_image); - //Draw a 1-pixel border around the local embedded frame - painter.fillRect(posx - border_size, posy - border_size, width + 2 * border_size, - height + 2 * border_size, border_color); - //Embed the image - painter.drawImage(posx, posy, localImage); - painter.end(); - } - - _ui->frame->update(); -} - -void QtVideoQt::paintEvent() { - if (!_image.isNull()) { - QPainter painter(_ui->frame); - - if (_fullScreen) { - painter.fillRect(_ui->frame->rect(), Qt::black); - } - - int xpos = (_ui->frame->width() - _image.width()) / 2; - int ypos = (_ui->frame->height() - _image.height()) / 2; - - painter.drawImage(xpos, ypos, _image); - - if (!_fullScreen && !_detached) { - // Depending on the frame size, the video may leave one row or - // column of pixel empty. This looks bad under the Osd buttons. - // To avoid this bad appearance, we draw a thin black border - // around the video. - painter.setPen(Qt::black); - painter.drawRect(0, 0, _ui->frame->width() - 1, _ui->frame->height() - 1); - } - } -} - -void QtVideoQt::fullScreenButtonClicked() { - _ui->frame->setFocus(); - - if (!_fullScreen) { - this->fullScreen(); - } else { - this->unFullScreen(); - } -} - -void QtVideoQt::flipWebcamButtonClicked() { - toggleFlipVideoImageSignal(); -} - -void QtVideoQt::fullScreen() { - _ui->fullScreenButton->setIcon(QIcon(":/pics/video_unfullscreen.png")); - - QLayout * layout = _videoWindow->layout(); - layout->removeWidget(_ui->frame); - - _ui->frame->setParent(NULL); - - _normalDesktopResolution = desktopResolution(); - setFullScreenDesktopResolution(MAX_WIDTH, MAX_HEIGHT); - _fullScreenDesktopResolution = desktopResolution(); - - _fullScreen = true; - _ui->attachDetachButton->hide(); - _ui->frame->showFullScreen(); -} - -void QtVideoQt::unFullScreen() { - _ui->fullScreenButton->setIcon(QIcon(":/pics/video_fullscreen.png")); - - // Call showNormal instead of show because otherwise, next time you detach - // the frame, it won't have any window decoration (at least on Mac OSX). - // - // We also need to do this before reparenting the frame otherwise it won't - // work. - _ui->frame->showNormal(); - _fullScreen = false; - _ui->attachDetachButton->show(); - - restoreDesktopResolution(); - - if (!_detached) { - _ui->frame->setParent(_videoWindow); - QLayout * layout = _videoWindow->layout(); - layout->addWidget(_ui->frame); - } -} - -void QtVideoQt::toggleAttachDetach() { - QString iconName; - if (_detached) { - // Attach - _ui->frame->setParent(_videoWindow); - _videoWindow->layout()->addWidget(_ui->frame); - iconName = ":/pics/video_detach.png"; - } else { - // Detach - _videoWindow->layout()->removeWidget(_ui->frame); - _ui->frame->setParent(0); - - QSize size = _image.size(); - size.scale(MAX_WIDTH, MAX_HEIGHT, Qt::KeepAspectRatio); - _ui->frame->resize(size); - - QRect desktopRect = QApplication::desktop()->availableGeometry(_videoWindow->window()); - int posX = desktopRect.x() + (desktopRect.width() - size.width()) / 2; - int posY = desktopRect.y() + (desktopRect.height() - size.height()) / 2; - _ui->frame->move(posX, posY); - - _ui->frame->show(); - iconName = ":/pics/video_attach.png"; - _ui->frame->window()->setWindowTitle(tr("@product@")); - } - _detached = ! _detached; - _ui->attachDetachButton->setIcon(QIcon(iconName)); -} - - -bool QtVideoQt::eventFilter(QObject * object, QEvent * event) { - if (event->type() == QEvent::KeyPress) { - QKeyEvent * keyEvent = static_cast(event); - - if (keyEvent->key() == Qt::Key_Escape) { - unFullScreen(); - return true; - } else if ((keyEvent->key() == Qt::Key_F) && (keyEvent->modifiers() == Qt::ControlModifier)) { - toggleFullScreen(); - return true; - } - - } else if (event->type() == QEvent::MouseButtonDblClick) { - toggleFullScreen(); - return true; - } else if (event->type() == QEvent::Close) { - if (_detached) { - // If the user closes the detached video window, we want the video - // to get attached back - toggleAttachDetach(); - event->ignore(); - return true; - } else if (_fullScreen) { - // Same for fullscreen, if the user presses Alt+F4 - unFullScreen(); - event->ignore(); - return true; - } - } - - return false; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoQt.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTVIDEOQT_H -#define OWQTVIDEOQT_H - -#include "QtVideo.h" - -#include - -class QtVideoQtEventManager; - -class QSize; -class QImage; - -class QtVideoQt : public QtVideo { - Q_OBJECT -public: - - QtVideoQt(QWidget * parent); - - ~QtVideoQt(); - - void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame); - - QSize getFrameSize() const; - - bool isInitialized() const { - return true; - } - - bool isFullScreen() const { - return _fullScreen; - } - - void fullScreen(); - - void unFullScreen(); - - static void convertPixImageToQImage(piximage* pixImage, const QSize& size, QImage* image); - -Q_SIGNALS: - - void toggleFlipVideoImageSignal(); - -protected: - virtual bool eventFilter(QObject*, QEvent*); - -private Q_SLOTS: - void toggleAttachDetach(); - - void paintEvent(); - - void fullScreenButtonClicked(); - - void flipWebcamButtonClicked(); - -private: - /** Current frame to show inside the video window. */ - QImage _image; - - bool _fullScreen; - - bool _detached; - - bool _showLocalVideo; - - /** Store desktop resolution before switching to fullscreen */ - QSize _normalDesktopResolution; - QSize _fullScreenDesktopResolution; - - /** - * Recompute size to compensate for the ratio differences between normal - * and fullscreen resolutions - */ - QSize compensateForFullScreenRatio(QSize); -}; - - -#endif //OWQTVIDEOQT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,128 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtVideoXV.h" - -#include "ui_VideoWindow.h" - -#include - -#include - -#include - -QtVideoXV::QtVideoXV(QWidget * parent, - int remoteVideoFrameWidth, int remoteVideoFrameHeight, - int localVideoFrameWidth, int localVideoFrameHeight) - : QtVideo(parent) { - - //flipButton - connect(_ui->flipButton, SIGNAL(clicked()), SLOT(flipWebcamButtonClicked())); - - //fullScreenButton - connect(_ui->fullScreenButton, SIGNAL(clicked()), SLOT(fullScreenButtonClicked())); - - _remoteWindow = new XVWindow(); - _remoteDisplay=XOpenDisplay(NULL); - if (_remoteWindow->init(_remoteDisplay, DefaultRootWindow(_remoteDisplay), - 0, 0, remoteVideoFrameWidth * 2, remoteVideoFrameHeight * 2, remoteVideoFrameWidth, remoteVideoFrameHeight)) { - _localWindow = new XVWindow(); - LOG_DEBUG("remote window initialization: success"); - - _localDisplay=XOpenDisplay(NULL); - if (_localWindow->init(_localDisplay, _remoteWindow->getWindow(), 0, 0, localVideoFrameWidth, localVideoFrameHeight, localVideoFrameWidth, localVideoFrameHeight)) { - - _remoteWindow->registerSlave(_localWindow); - _localWindow->registerMaster(_remoteWindow); - LOG_DEBUG("local window initialization: success"); - - } else { - delete _localWindow; - XCloseDisplay(_localDisplay); - _localWindow = NULL; - - //TODO in this case to have the local video image - //we must compute the final image - - LOG_DEBUG("local window initialization: failed"); - } - - } else { - delete _remoteWindow; - XCloseDisplay(_remoteDisplay); - _remoteWindow = NULL; - _localWindow = NULL; - LOG_DEBUG("remote window initialization: failed"); - } -} - -QtVideoXV::~QtVideoXV() { - if (_remoteWindow) { - _remoteWindow->registerSlave(NULL); - if (_localWindow) { - _localWindow->registerMaster(NULL); - delete _localWindow; - XCloseDisplay(_localDisplay); - } - delete _remoteWindow; - XCloseDisplay(_remoteDisplay); - } -} - -bool QtVideoXV::isFullScreen() const { - return _remoteWindow->isFullScreen(); -} - -QSize QtVideoXV::getFrameSize() const { - return _ui->frame->frameRect().size(); -} - -void QtVideoXV::showImage(piximage * remoteVideoFrame, piximage * localVideoFrame) { - if (_remoteWindow) { - _remoteWindow->putFrame(remoteVideoFrame->data, remoteVideoFrame->width, remoteVideoFrame->height); - if (_localWindow) { - _localWindow->putFrame(localVideoFrame->data, localVideoFrame->width, localVideoFrame->height); - } - } -} - -void QtVideoXV::flipWebcamButtonClicked() { - static bool flip = true; - - IWebcamDriver * driver = WebcamDriver::getInstance(); - driver->flipHorizontally(flip); - - flip = !flip; -} - -void QtVideoXV::fullScreenButtonClicked() { - _remoteWindow->toggleFullscreen(); -} - -void QtVideoXV::unFullScreen() { - if (isFullScreen()) { - _remoteWindow->toggleFullscreen(); - } -} - -void QtVideoXV::fullScreen() { - if (!isFullScreen()) { - _remoteWindow->toggleFullscreen(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/QtVideoXV.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTVIDEOXV_H -#define OWQTVIDEOXV_H - -#include "QtVideo.h" -#include "XVWindow.h" - -class QFrame; -class XVWindow; - -class QtVideoXV : public QtVideo { - Q_OBJECT -public: - - QtVideoXV(QWidget * parent, int remoteVideoFrameWidth, int remoteVideoFrameHeight, int localVideoFrameWidth, int localVideoFrameHeight); - - ~QtVideoXV(); - - void showImage(piximage * remoteVideoFrame, piximage * localVideoFrame); - - QSize getFrameSize() const; - - bool isInitialized() const { - return (_remoteWindow != NULL); - } - - bool isFullScreen() const; - - void unFullScreen(); - - void fullScreen(); - -private Q_SLOTS: - - void flipWebcamButtonClicked(); - - void fullScreenButtonClicked(); - -private: - - XVWindow * _localWindow; - - Display* _localDisplay; - - XVWindow * _remoteWindow; - - Display* _remoteDisplay; -}; - -#endif //OWQTVIDEOXV_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/VideoWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/VideoWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/VideoWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/VideoWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,119 +0,0 @@ - - VideoWindow - - - - 0 - 0 - 401 - 343 - - - - @product@ - Video - - - - 0 - - - 0 - - - - - - 0 - - - 2 - - - - - Qt::Horizontal - - - - 281 - 34 - - - - - - - - Qt::Vertical - - - - 34 - 221 - - - - - - - - :/pics/video_fullscreen.png - - - - 26 - 26 - - - - - - - - ... - - - :/pics/video_detach.png - - - - 26 - 26 - - - - - - - - :/pics/video_flip.png - - - - 26 - 26 - - - - - - - - - - - - OsdButton - QToolButton -
qtutil/OsdButton.h
-
-
- - flipButton - fullScreenButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,586 +0,0 @@ -/* - * XVWindow.cpp - XVWindow - * High-level class offering X-Video hardware acceleration - * - * Matthias Schneider - * 22-June-2006: minor bugfix on aspect ratio calculating, varios cosmetic changes - * 07-May-2006: initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, v2, as - * published by the Free Software Foundation - * - * 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. - * - * Copyright (C) 2006 Matthias Schneider - */ - -#include "XVWindow.h" - -#include - -#define GUID_I420_PLANAR 0x30323449 - -#define wm_LAYER 1 -#define wm_FULLSCREEN 2 -#define wm_STAYS_ON_TOP 4 -#define wm_ABOVE 8 -#define wm_BELOW 16 -#define wm_NETWM (wm_FULLSCREEN | wm_STAYS_ON_TOP | wm_ABOVE | wm_BELOW) - -#define WIN_LAYER_ONBOTTOM 2 -#define WIN_LAYER_NORMAL 4 -#define WIN_LAYER_ONTOP 6 -#define WIN_LAYER_ABOVE_DOCK 10 - -#define _NET_WM_STATE_REMOVE 0 /* remove/unset property */ -#define _NET_WM_STATE_ADD 1 /* add/set property */ -#define _NET_WM_STATE_TOGGLE 2 /* toggle property */ - -#define MWM_HINTS_FUNCTIONS (1L << 0) -#define MWM_HINTS_DECORATIONS (1L << 1) -#define MWM_FUNC_RESIZE (1L << 1) -#define MWM_FUNC_MOVE (1L << 2) -#define MWM_FUNC_MINIMIZE (1L << 3) -#define MWM_FUNC_MAXIMIZE (1L << 4) -#define MWM_FUNC_CLOSE (1L << 5) -#define MWM_DECOR_ALL (1L << 0) -#define MWM_DECOR_MENU (1L << 4) - -#define DEFAULT_SLAVE_RATIO 5 -#define DEFAULT_X 1 -#define DEFAULT_Y 1 - -typedef struct { - int flags; - long functions; - long decorations; - long input_mode; - long state; -} MotifWmHints; - -extern XvImage * XvShmCreateImage(Display *, XvPortID, int, char *, int, int, XShmSegmentInfo *); - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -XVWindow::XVWindow() { - // initialize class variables - _master = NULL; - _slave = NULL; - _XVPort = 0; - _state.fullscreen = false; - _state.ontop = false; - _state.decoration = true; - _display = NULL; - _XVWindow = 0; - _XShmInfo.shmaddr = NULL; - _gc = NULL; - _isInitialized = false; - _XVImage = NULL; -} - -int XVWindow::init(Display* dp, Window rootWindow, int x, int y, int windowWidth, int windowHeight, int imageWidth, int imageHeight) { - - // local variables needed for creation of window and initialization of XV extension - unsigned int i; - unsigned int ver, rel, req, ev, err, adapt; - XSetWindowAttributes xswattributes; - XWindowAttributes xwattributes; - XVisualInfo xvinfo; - XvAdaptorInfo *xvainfo; - unsigned int candidateXVPort=0; - unsigned int busyPorts=0; - - _display=dp; - _rootWindow=rootWindow; - _state.origLayer=0; - - // initialize atoms - WM_DELETE_WINDOW = XInternAtom(_display, "WM_DELETE_WINDOW", False); - XA_WIN_PROTOCOLS = XInternAtom(_display, "_WIN_PROTOCOLS", False); - XA_NET_SUPPORTED = XInternAtom(_display, "_NET_SUPPORTED", False); - XA_NET_WM_STATE = XInternAtom(_display, "_NET_WM_STATE", False); - XA_NET_WM_STATE_FULLSCREEN = XInternAtom(_display, "_NET_WM_STATE_FULLSCREEN", False); - XA_NET_WM_STATE_ABOVE = XInternAtom(_display, "_NET_WM_STATE_ABOVE", False); - XA_NET_WM_STATE_STAYS_ON_TOP = XInternAtom(_display, "_NET_WM_STATE_STAYS_ON_TOP", False); - XA_NET_WM_STATE_BELOW = XInternAtom(_display, "_NET_WM_STATE_BELOW", False); - - XGetWindowAttributes(_display, _rootWindow, &xwattributes); - XMatchVisualInfo(_display, DefaultScreen(_display), xwattributes.depth, TrueColor, &xvinfo); - - // define window properties and create the window - xswattributes.colormap = XCreateColormap(_display, _rootWindow, xvinfo.visual, AllocNone); - xswattributes.event_mask = StructureNotifyMask | ExposureMask; - xswattributes.background_pixel = 0; - xswattributes.border_pixel = 0; - _XVWindow = XCreateWindow(_display, _rootWindow, x, y, windowWidth, windowHeight, 0, xvinfo.depth, - InputOutput, xvinfo.visual, CWBackPixel|CWBorderPixel|CWColormap|CWEventMask, &xswattributes); - - // define inputs events - XSelectInput(_display, _XVWindow, StructureNotifyMask | KeyPressMask | ButtonPressMask); - - setSizeHints(DEFAULT_X,DEFAULT_Y, imageWidth, imageHeight, windowWidth, windowHeight); - - // map the window - XMapWindow(_display, _XVWindow); - - XSetWMProtocols(_display, _XVWindow, &WM_DELETE_WINDOW,1); - - // check if SHM XV window is possible - if (Success != XvQueryExtension(_display, &ver, &rel, &req, &ev, &err)) { - LOG_DEBUG("[x11] XQueryExtension failed"); - return 0; - } - if (!XShmQueryExtension(_display)) { - LOG_DEBUG("[x11] XQueryShmExtension failed"); - return 0; - } - if (Success != XvQueryAdaptors(_display, _rootWindow, &adapt, &xvainfo)) { - LOG_DEBUG("[x11] XQueryAdaptor failed"); XFree(xvainfo); - return 0; - } - - // look for a usable XV port - for (i = 0; i < adapt && _XVPort == 0; i++) { - if ((xvainfo[i].type & XvInputMask) && (xvainfo[i].type & XvImageMask)) { - for (candidateXVPort = xvainfo[i].base_id; candidateXVPort < xvainfo[i].base_id + xvainfo[i].num_ports; ++candidateXVPort) - if (!XvGrabPort(_display, candidateXVPort, CurrentTime)) { - _XVPort = candidateXVPort; - break; - } else { - LOG_DEBUG("[x11] Could not grab port: " + String::fromNumber(candidateXVPort)); - ++busyPorts; - } - } - } - XvFreeAdaptorInfo(xvainfo); - - if (!_XVPort) { - if (busyPorts) { - LOG_WARN("[x11] Could not find free Xvideo port - maybe another process is already using it."); - } else { - LOG_WARN("[x11] It seems there is no Xvideo support for your video card available."); - } - return 0; - } else { - LOG_WARN("[x11] Use XVideo port: " + String::fromNumber(_XVPort)); - } - - _gc = XCreateGC(_display, _XVWindow, 0, 0); - - // create the shared memory portion - _XVImage = XvShmCreateImage(_display, _XVPort, GUID_I420_PLANAR, 0, imageWidth, imageHeight, &_XShmInfo); - - _XShmInfo.shmid = shmget(IPC_PRIVATE, _XVImage->data_size, IPC_CREAT | 0777); - _XShmInfo.shmaddr = (char *) shmat(_XShmInfo.shmid, 0, 0); - _XVImage->data = _XShmInfo.shmaddr; - _XShmInfo.readOnly = False; - if (!XShmAttach(_display, &_XShmInfo)) { - LOG_WARN("[x11] XShmAttach failed"); - return 0; - } else { - _isInitialized = true; - } - - // detect the window manager type - _wmType=getWMType(); - - return 1; -} - -XVWindow::~XVWindow() { - if (_isInitialized && _XShmInfo.shmaddr) { - XShmDetach(_display, &_XShmInfo); - shmdt(_XShmInfo.shmaddr); - } - if (_XVImage) { - XFree(_XVImage); - } - if (_gc) { - XFree(_gc); - } - if (_XVWindow) { - XUnmapWindow(_display, _XVWindow); - XDestroyWindow(_display, _XVWindow); - } -} - -void XVWindow::putFrame(uint8_t* frame, uint16_t width, uint16_t height) { - XEvent event; - - if ((width!= _XVImage->width) || (height!=_XVImage->height)) { - printf ("[x11] dynamic switching of resolution not supported\n"); - return; - } - - // event handling - while (XPending(_display)) { - XNextEvent(_display, &event); - if (event.type == ClientMessage) { -// if "closeWindow" is clicked do nothing right now (window is closed from the Qt Gui -// if (event.xclient.format == 32 && event.xclient.data.l[0] == (signed) WM_DELETE_WINDOW) exit(0); - } - // the window size has changed - if (event.type == ConfigureNotify) { - XConfigureEvent* xce = (XConfigureEvent*) &event; - // if a slave window exists it has to be resized as well - if (_slave) { _slave->resize( - xce->width - (int)(xce->width / DEFAULT_SLAVE_RATIO), - xce->height - (int)(_slave->getYUVHeight() * xce->width / DEFAULT_SLAVE_RATIO / _slave->getYUVWidth()), - (int)(xce->width / DEFAULT_SLAVE_RATIO), - (int)(_slave->getYUVHeight() * xce->width / DEFAULT_SLAVE_RATIO / _slave->getYUVWidth())); - } - - // if we are a slave window the master window takes care of aspect ration - if (_master) { - _state.curX=0; - _state.curY=0; - _state.curWidth=xce->width; - _state.curHeight=xce->height; - // if we are a master window we have to recalculate the window size (important for non 4:3 screens) - } else { - if ((xce->width*_XVImage->height/_XVImage->width)>xce->height) { - _state.curX=(int)((xce->width-(xce->height*_XVImage->width/_XVImage->height))/2); - _state.curY=0; - _state.curWidth=(int)(xce->height*_XVImage->width/_XVImage->height); - _state.curHeight=xce->height; - } else if ((xce->height*_XVImage->width/_XVImage->height)>xce->width) { - _state.curX=0; - _state.curY=(int)((xce->height-(xce->width*_XVImage->height/_XVImage->width))/2); - _state.curWidth=xce->width; - _state.curHeight=(int)(xce->width*_XVImage->height/_XVImage->width); - } else { - _state.curX=0; - _state.curY=0; - _state.curWidth=xce->width; - _state.curHeight=xce->height; - } - } - } - - // a key is pressed - if (event.type == KeyPress) { - XKeyEvent* xke = (XKeyEvent*) &event; - switch (xke->keycode) { - case 41: toggleFullscreen(); // "f" - break; - case 40: setDecoration(!_state.decoration); // "d" - break; - case 32: toggleOntop(); // "o" - break; - case 9: if (_state.fullscreen) { toggleFullscreen(); } // esc - break; - } - } - - // a mouse button is clicked - if (event.type == ButtonPress) { - if (_master) { - _master->toggleFullscreen(); - } else { - toggleFullscreen(); - } - } - } - - // copy image to shared memory - memcpy(_XVImage->data, frame, (int) (_XVImage->width * _XVImage->height * 3 /2)); - - XvShmPutImage(_display, _XVPort, _XVWindow, _gc, _XVImage, 0, 0, _XVImage->width, _XVImage->height, - _state.curX, _state.curY, _state.curWidth, _state.curHeight, True); - - XFlush(_display); -} - -void XVWindow::toggleFullscreen() { - int newX, newY, newWidth, newHeight; - Window childWindow; - XWindowAttributes xwattributes; - - if (_state.fullscreen) { - // not needed with EWMH fs - if ( ! (_wmType & wm_FULLSCREEN) ) { - newX = _state.oldx; - newY = _state.oldy; - newWidth = _state.oldWidth; - newHeight = _state.oldHeight; - setDecoration(true); - } - - // removes fullscreen state if wm supports EWMH - setEWMHFullscreen(_NET_WM_STATE_REMOVE); - } else { - // sets fullscreen state if wm supports EWMH - setEWMHFullscreen(_NET_WM_STATE_ADD); - - // not needed with EWMH fs - save window coordinates/size and discover fullscreen window size - if ( ! (_wmType & wm_FULLSCREEN) ) { - newX = 0; - newY = 0; - newWidth = DisplayWidth(_display, DefaultScreen(_display)); - newHeight = DisplayHeight(_display, DefaultScreen(_display)); - - setDecoration(false); - XFlush(_display); - XTranslateCoordinates(_display, _XVWindow, RootWindow(_display, DefaultScreen(_display)), - 0,0,&_state.oldx,&_state.oldy, &childWindow); - XGetWindowAttributes(_display, _XVWindow, &xwattributes); - _state.oldWidth = xwattributes.width; - _state.oldHeight = xwattributes.height; - } - } - // not needed with EWMH fs - create a screen-filling window on top and turn of decorations - if (!(_wmType & wm_FULLSCREEN) ) { - setSizeHints(newX, newY, _XVImage->width, _XVImage->height, newWidth, newHeight); - setLayer((!_state.fullscreen) ? 0 : 1); - XMoveResizeWindow(_display, _XVWindow, newX, newY, newWidth, newHeight); - } - - /* some WMs lose ontop after fullscreeen */ - if ((_state.fullscreen) & _state.ontop) { - setLayer(1); - } - - XMapRaised(_display, _XVWindow); - XRaiseWindow(_display, _XVWindow); - XFlush(_display); - _state.fullscreen=!_state.fullscreen; -} - -void XVWindow::setEWMHFullscreen(int action) { - if (_wmType & wm_FULLSCREEN) { - - // create an event event to toggle fullscreen mode - XEvent xev; - xev.xclient.type = ClientMessage; - xev.xclient.serial = 0; - xev.xclient.send_event = True; - xev.xclient.message_type = XInternAtom(_display, "_NET_WM_STATE", False); - xev.xclient.window = _XVWindow; - xev.xclient.format = 32; - xev.xclient.data.l[0] = action; - xev.xclient.data.l[1] = XInternAtom(_display, "_NET_WM_STATE_FULLSCREEN", False); - xev.xclient.data.l[2] = 0; - xev.xclient.data.l[3] = 0; - xev.xclient.data.l[4] = 0; - - // send the event to the window - if (!XSendEvent(_display, _rootWindow, False, SubstructureRedirectMask | SubstructureNotifyMask, &xev)) { - LOG_DEBUG("[x11] setEWMHFullscreen failed"); - } - } -} - -void XVWindow::toggleOntop() { - setLayer((_state.ontop) ? 0 : 1); - _state.ontop=!_state.ontop; -} - -void XVWindow::setLayer(int layer) { - Window mRootWin = RootWindow(_display, DefaultScreen(_display)); - XClientMessageEvent xev; - memset(&xev, 0, sizeof(xev)); - char *state; - - if (_wmType & wm_LAYER) { - - if (!_state.origLayer) { - _state.origLayer = getGnomeLayer(); - } - xev.type = ClientMessage; - xev.display = _display; - xev.window = _XVWindow; - xev.message_type = XA_WIN_LAYER; - xev.format = 32; - xev.data.l[0] = layer ? WIN_LAYER_ABOVE_DOCK : _state.origLayer; - xev.data.l[1] = CurrentTime; - LOG_DEBUG("[x11] Layered style stay on top (layer " + String::fromNumber(xev.data.l[0]) + ")."); - XSendEvent(_display, mRootWin, False, SubstructureNotifyMask, (XEvent *) & xev); - - } else if (_wmType & wm_NETWM) { - - xev.type = ClientMessage; - xev.message_type = XA_NET_WM_STATE; - xev.display = _display; - xev.window = _XVWindow; - xev.format = 32; - xev.data.l[0] = layer; - - if (_wmType & wm_STAYS_ON_TOP) xev.data.l[1] = XA_NET_WM_STATE_STAYS_ON_TOP; - else if (_wmType & wm_ABOVE) xev.data.l[1] = XA_NET_WM_STATE_ABOVE; - else if (_wmType & wm_FULLSCREEN) xev.data.l[1] = XA_NET_WM_STATE_FULLSCREEN; - else if (_wmType & wm_BELOW) xev.data.l[1] = XA_NET_WM_STATE_BELOW; - - XSendEvent(_display, mRootWin, False, SubstructureRedirectMask, (XEvent *) & xev); - state = XGetAtomName(_display, xev.data.l[1]); - LOG_DEBUG("[x11] NET style stay on top (layer" + String::fromNumber(layer) + "). Using state" + state); - XFree(state); - } -} - -int XVWindow::getWMType() { - unsigned int i; - int wmType = 0; - int metacityHack=0; - unsigned long nitems; - Atom *args = NULL; - - // check if WM supports layers - if (getWindowProperty(XA_WIN_PROTOCOLS, &args, &nitems)) { - LOG_DEBUG("[x11] Detected wm supports layers."); - for (i = 0; i < nitems; i++) { - if (args[i] == XA_WIN_LAYER) { - wmType |= wm_LAYER; - metacityHack |= 1; - } else { - metacityHack |= 2; - } - } - XFree(args); - - // metacity WM reports that it supports layers, but it is not really truth :-) - if (wmType && (metacityHack == 1)) { - wmType ^= wm_LAYER; - LOG_DEBUG("[x11] Using workaround for Metacity bugs."); - } - } - - // NETWM - if (getWindowProperty(XA_NET_SUPPORTED, &args, &nitems)) { - LOG_DEBUG("[x11] Detected wm supports NetWM."); - for (i = 0; i < nitems; i++) { - wmType |= getSupportedState(args[i]); - } - XFree(args); - } - - // unknown WM - if (wmType == 0) { - LOG_DEBUG("[x11] Unknown wm type..."); - } - return wmType; -} - -void XVWindow::getWindowSize(unsigned int* windowWidth, unsigned int* windowHeight) { - unsigned int ud; Window _dw; int temp; - XGetGeometry(_display, _XVWindow, &_dw, &temp, &temp, windowWidth, windowHeight, &ud, &ud); -} - -void XVWindow::resize (int x, int y, int windowWidth, int windowHeight) { - XMoveResizeWindow(_display, _XVWindow, x, y, windowWidth, windowHeight); -} - -int XVWindow::getWindowProperty(Atom type, Atom ** args, unsigned long *nitems) { - int format; - unsigned long bytesafter; - return (Success == XGetWindowProperty(_display, _rootWindow, type, 0, 16384, False, - AnyPropertyType, &type, &format, nitems, &bytesafter, (unsigned char **) args) && *nitems > 0); -} - -int XVWindow::getSupportedState(Atom atom) { - if (atom==XA_NET_WM_STATE_FULLSCREEN) { return wm_FULLSCREEN; }; - if (atom==XA_NET_WM_STATE_ABOVE) { return wm_ABOVE; }; - if (atom==XA_NET_WM_STATE_STAYS_ON_TOP) { return wm_STAYS_ON_TOP; }; - if (atom==XA_NET_WM_STATE_BELOW) { return wm_BELOW; }; - return 0; -} - -void XVWindow::setSizeHints(int x, int y, int imageWidth, int imageHeight, int windowWidth, int windowHeight) { - XSizeHints xshints; - - xshints.flags = PPosition | PSize | PAspect | PMinSize; - - xshints.min_aspect.x = imageWidth; - xshints.min_aspect.y = imageHeight; - xshints.max_aspect.x = imageWidth; - xshints.max_aspect.y = imageHeight; - - xshints.x = x; - xshints.y = y; - xshints.width = windowWidth; - xshints.height = windowHeight; - xshints.min_width = 25; - xshints.min_height = 25; - - XSetStandardProperties(_display, _XVWindow, "Video", "Video", None, NULL, 0, &xshints); -} - -void XVWindow::setDecoration(bool d) { - - static unsigned int oldDecor = MWM_DECOR_ALL; - static unsigned int oldFuncs = MWM_FUNC_MOVE | MWM_FUNC_CLOSE | MWM_FUNC_MINIMIZE | - MWM_FUNC_MAXIMIZE | MWM_FUNC_RESIZE; - Atom motifHints; - MotifWmHints setHints; - MotifWmHints* getHints = NULL; - - Atom mType; - int mFormat; - unsigned long mn, mb; - - motifHints = XInternAtom(_display, "_MOTIF_WM_HINTS", 0); - if (motifHints != None) { - memset(&setHints, 0, sizeof(setHints)); - - if (!d) { - XGetWindowProperty(_display, _XVWindow, motifHints, 0, 20, False, motifHints, &mType, - &mFormat, &mn, &mb, (unsigned char **) &getHints); - if (getHints) { - if (getHints->flags & MWM_HINTS_DECORATIONS) oldDecor = getHints->decorations; - if (getHints->flags & MWM_HINTS_FUNCTIONS) oldFuncs = getHints->functions; - XFree(getHints); - } - - setHints.decorations = 0; - } else { - setHints.functions = oldFuncs; - setHints.decorations = oldDecor; - } - - setHints.flags = MWM_HINTS_FUNCTIONS | MWM_HINTS_DECORATIONS; - - XChangeProperty(_display, _XVWindow, motifHints, motifHints, 32, - PropModeReplace, (unsigned char *) &setHints, 5); - _state.decoration=!_state.decoration; - } -} - -int XVWindow::getGnomeLayer() { - Atom type; - int format; - unsigned long nitems; - unsigned long bytesafter; - unsigned short *args = NULL; - - if (XGetWindowProperty(_display, _XVWindow, XA_WIN_LAYER, 0, 16384, False, AnyPropertyType, &type, &format, &nitems, - &bytesafter, (unsigned char **) &args) == Success && nitems > 0 && args) { - LOG_DEBUG("[x11] original window layer is" + String::fromNumber(*args)); - return *args; - } - return WIN_LAYER_NORMAL; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phonecall/XVWindow.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,165 +0,0 @@ -/* - * XVWindow.h - XVWindow - * High-level class offering X-Video hardware acceleration - * - * Matthias Schneider - * 31-August-2006: fixed some memory leaks - * 22-June-2006: varios cosmetic changes - * 07-May-2006: initial version - * - * This program is free software; you can redistribute it and/or modify - * it under the terms of the GNU General Public License, v2, as - * published by the Free Software Foundation - * - * 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. - * - * Copyright (C) 2006 Matthias Schneider - */ - -#ifndef OWXVWINDOW_H -#define OWXVWINDOW_H - -#include - -#include -#include -#include -#include -#include -#include - -/** - * String: wrapper/helper. - * - * This class provides XVideo support under Linux if it is supported by the graphics hardware and driver. - * XVideo makes use of hardware capabilities in order to do - * - colorspace transformation - * - scaling - * - anti-aliasing - * - * This class features a fullscreen mode, an always-on-top mode and allows to enable and disable the window - * manager decorations. A picture-in-picture functionality is provided by registering a second XVWindow class - * window as a slave window. This class should work with most if not all window managers. It has to initialized - * with the display and window where it shall appear and the original image and intial window size - * After having been initialized successfully a frame is passed via putFrame which takes care of the presentation. - * - * @author Matthias Schneider - */ -class XVWindow { -public: - - XVWindow(); - ~XVWindow(); - int init(Display * dp, Window rootWindow, int x, int y, int windowWidth, int windowHeight, int imageWidth, int imageHeight); - void putFrame(uint8_t * frame, uint16_t width, uint16_t height); - void toggleFullscreen(); - void toggleOntop(); - - void resize(int x, int y, int windowWidth, int windowHeight); - void getWindowSize(unsigned int* windowWidth, unsigned int* windowHeight); - - bool isFullScreen() const { - return (_state.fullscreen); - }; - - Window getWindow() const { - return (_XVWindow); - }; - - int getYUVWidth() const { - return (_XVImage->width); - }; - - int getYUVHeight() const { - return (_XVImage->height); - }; - - void registerMaster(XVWindow * master) { - _master = master; - }; - - void registerSlave(XVWindow * slave) { - _slave = slave; - }; - -private: - - Display *_display; - Window _rootWindow; - Window _XVWindow; - unsigned int _XVPort; - GC _gc; - XvImage * _XVImage; - XShmSegmentInfo _XShmInfo; - int _wmType; - - typedef struct { - bool fullscreen; - bool ontop; - bool decoration; - int oldx; - int oldy; - int oldWidth; - int oldHeight; - int curX; - int curY; - int curWidth; - int curHeight; - int origLayer; - } State; - - State _state; - XVWindow * _master; - XVWindow * _slave; - - Atom XA_NET_SUPPORTED; - Atom XA_WIN_PROTOCOLS; - Atom XA_WIN_LAYER; - Atom XA_NET_WM_STATE; - Atom XA_NET_WM_STATE_FULLSCREEN; - Atom XA_NET_WM_STATE_ABOVE; - Atom XA_NET_WM_STATE_STAYS_ON_TOP; - Atom XA_NET_WM_STATE_BELOW; - Atom WM_DELETE_WINDOW; - - /** - * Sets the layer for the window. - */ - void setLayer(int layer); - - /** - * Fullscreen for ewmh WMs. - */ - void setEWMHFullscreen(int action); - - void setDecoration(bool d); - void setSizeHints(int x, int y, int imageWidth, int imageHeight, int windowWidth, int windowHeight); - - /** - * Detects window manager type. - */ - int getWMType(); - - int getGnomeLayer(); - - /** - * Tests an atom. - */ - int getSupportedState(Atom atom); - - /** - * Returns the root window's. - */ - int getWindowProperty(Atom type, Atom ** args, unsigned long * nitems); - - bool _isInitialized; -}; - -#endif //OWXVWINDOW_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPhoneLine.h" - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include - -#if defined(OS_MACOSX) - #include -#endif - -QtPhoneLine::QtPhoneLine(CPhoneLine & cPhoneLine) - : QObjectThreadSafe(NULL), - _cPhoneLine(cPhoneLine) { - - _activeCPhoneCall = NULL; - _qtWengoPhone = static_cast(_cPhoneLine.getCWengoPhone().getPresentation()); - - stateChangedEvent += boost::bind(&QtPhoneLine::stateChangedEventHandler, this, _1); - phoneCallCreatedEvent += boost::bind(&QtPhoneLine::phoneCallCreatedEventHandler, this, _1); - phoneCallClosedEvent += boost::bind(&QtPhoneLine::phoneCallClosedEventHandler, this, _1); - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::initThreadSafe, this)); - postEvent(event); -} - -QtPhoneLine::~QtPhoneLine() { -} - -void QtPhoneLine::initThreadSafe() { - //callButton - SAFE_CONNECT(&_qtWengoPhone->getQtCallBar(), SIGNAL(callButtonClicked()), SLOT(callButtonClicked())); - -#ifdef OS_MACOSX - // openURLRequest - QtMacApplication * macApp = dynamic_cast(QApplication::instance()); - SAFE_CONNECT_TYPE(macApp, SIGNAL(openURLRequest(QString)), SLOT(openURLRequest(QString)), Qt::QueuedConnection); -#endif -} - -void QtPhoneLine::stateChangedEventHandler(EnumPhoneLineState::PhoneLineState state) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::stateChangedEventHandlerThreadSafe, this, _1), state); - postEvent(event); -} - -void QtPhoneLine::stateChangedEventHandlerThreadSafe(EnumPhoneLineState::PhoneLineState state) { - _qtWengoPhone->getQtStatusBar().updatePhoneLineState(state); - _qtWengoPhone->getQtSystray().phoneLineStateChanged(state); - _qtWengoPhone->updatePresentation(); -} - -void QtPhoneLine::phoneCallCreatedEventHandler(CPhoneCall & cPhoneCall) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::phoneCallCreatedEventHandlerThreadSafe, this, _1), cPhoneCall); - postEvent(event); -} - -void QtPhoneLine::phoneCallCreatedEventHandlerThreadSafe(CPhoneCall & cPhoneCall) { - _activeCPhoneCall = &cPhoneCall; -} - -void QtPhoneLine::phoneCallClosedEventHandler(CPhoneCall & cPhoneCall) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtPhoneLine::phoneCallClosedEventHandlerThreadSafe, this, _1), cPhoneCall); - postEvent(event); -} - -void QtPhoneLine::phoneCallClosedEventHandlerThreadSafe(CPhoneCall & cPhoneCall) { - if (_activeCPhoneCall == &cPhoneCall) { - _activeCPhoneCall = NULL; - } -} - -void QtPhoneLine::callButtonClicked() { - if (_activeCPhoneCall) { - _activeCPhoneCall->accept(); - _qtWengoPhone->getQtCallBar().setEnabledCallButton(false); - } -} - -void QtPhoneLine::openURLRequest(QString url) { - // Resetting in case of synchronization problem - // FIXME: Is this still necessary? - WengoPhone::getInstance().setStartupCall(std::string()); - //// - - _cPhoneLine.makeCall((url.split("//")[1]).toStdString()); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/phoneline/QtPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,83 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTPHONELINE_H -#define OWQTPHONELINE_H - -#include - -#include - -#include - -class CPhoneLine; -class CWengoPhone; -class CPhoneCall; -class QtPhoneCall; -class QtWengoPhone; - -class QtPhoneLine : public QObjectThreadSafe, public PPhoneLine, public Trackable { - Q_OBJECT -public: - - QtPhoneLine(CPhoneLine & cPhoneLine); - - virtual ~QtPhoneLine(); - - virtual void updatePresentation() {} - -private Q_SLOTS: - - void callButtonClicked(); - - /** @see QtMacApplication::openURLRequestEvent */ - void openURLRequest(QString url); - -private: - - virtual void initThreadSafe(); - - /** - * Handles state of the associated PhoneLine and dispatch it to - * the systray and the status bar. - * @param state the new state of the PhoneLine. - */ - void stateChangedEventHandler(EnumPhoneLineState::PhoneLineState state); - - /** - * @see QtPhoneLine::stateChangedEventHandler - */ - void stateChangedEventHandlerThreadSafe(EnumPhoneLineState::PhoneLineState state); - - void phoneCallCreatedEventHandler(CPhoneCall & cPhoneCall); - - void phoneCallCreatedEventHandlerThreadSafe(CPhoneCall & cPhoneCall); - - void phoneCallClosedEventHandler(CPhoneCall & cPhoneCall); - - void phoneCallClosedEventHandlerThreadSafe(CPhoneCall & cPhoneCall); - - CPhoneLine & _cPhoneLine; - - QtWengoPhone * _qtWengoPhone; - - CPhoneCall * _activeCPhoneCall; -}; - -#endif //OWQTPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/ProfileDetails.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/ProfileDetails.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/ProfileDetails.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/ProfileDetails.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,536 +0,0 @@ - - ProfileDetails - - - - 0 - 0 - 427 - 494 - - - - - 6 - - - 6 - - - - - 0 - - - - General - - - - 9 - - - 6 - - - - - Network IDs (MSN, Jabber...) - - - - 6 - - - 6 - - - - - - 5 - 7 - 0 - 0 - - - - - - - - Advanced >> - - - :/pics/config/advanced.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - false - - - Fill in all your network Id to stay connected with your contacts - - - false - - - Qt::AlignJustify|Qt::AlignVCenter - - - true - - - - - - - - - - Phone Numbers - - - - 6 - - - 6 - - - - - - 0 - 5 - 0 - 0 - - - - Home phone - - - :/pics/contact/landline.png - - - - - - - 255 - - - - - - - 255 - - - - - - - - 0 - 5 - 0 - 0 - - - - Mobile phone - - - :/pics/contact/mobile.png - - - - - - - - - - Qt::LeftToRight - - - Contact - - - - 6 - - - 6 - - - - - 0 - - - 6 - - - - - Group: - - - - - - - 255 - - - - - - - 255 - - - - - - - Last Name: - - - - - - - First Name: - - - - - - - - 7 - 0 - 0 - 0 - - - - true - - - 25 - - - - - - - - - - 90 - 90 - - - - - 90 - 90 - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - :/pics/avatar_background.png - - - - 90 - 90 - - - - true - - - - - - - - - - - Details - - - - 9 - - - 6 - - - - - 13 - - - Web/blog: - - - :/pics/contact/home.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Qt::Horizontal - - - - - - - Country: - - - - - - - State: - - - - - - - City: - - - - - - - Qt::Horizontal - - - - - - - Gender: - - - - - - - Birth Date: - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - 13 - - - Email: - - - :/pics/edit.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - - - - 255 - - - - - - - 255 - - - - - - - 255 - - - - - - - dd MMMM yyyy - - - - - - - - Unknown - - - - - Male - - - - - Female - - - - - - - - true - - - - - - - - Notes - - - - 9 - - - 6 - - - - - - - - - - - - 0 - - - 6 - - - - - Cancel - - - - - - - Save - - - true - - - true - - - - - - - Qt::Horizontal - - - - 91 - 32 - - - - - - - - - - tabWidget - groupComboBox - avatarPixmapButton - firstNameLineEdit - lastNameLineEdit - mobilePhoneLineEdit - homePhoneLineEdit - advancedButton - saveButton - cancelButton - emailLineEdit - webLineEdit - countryComboBox - stateLineEdit - cityLineEdit - genderComboBox - birthDate - notesEdit - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,429 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtProfileDetails.h" - -#include "ui_ProfileDetails.h" - -#include - -#include -#include -#include - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#ifdef OS_WINDOWS - #include -#endif - -static const char * PNG_FORMAT = "PNG"; - -QtProfileDetails::QtProfileDetails(CUserProfile & cUserProfile, - ContactProfile & contactProfile, QWidget * parent, const QString & windowTitle) - : QObject(parent), - _cUserProfile(cUserProfile), - _profile(contactProfile) { - - init(parent); - _profileDetailsWindow->setWindowTitle(tr("@product@") + " - " + windowTitle); - - //FIXME we should keep in memory the UUID of the group - std::vector< std::pair > tmp = _cUserProfile.getCContactList().getContactGroups(); - for (std::vector< std::pair >::const_iterator it = tmp.begin(); - it != tmp.end(); ++it) { - - _ui->groupComboBox->addItem(QString::fromUtf8((*it).second.c_str()), QString::fromStdString((*it).first.c_str())); - std::string str1 = (*it).first; - std::string str2 = contactProfile.getGroupId(); - if (str1 == str2) { - _ui->groupComboBox->setCurrentIndex(_ui->groupComboBox->findText(QString::fromUtf8((*it).second.c_str()))); - } - } - - //QtSimpleIMContactManager - _qtIMContactManager = new QtSimpleIMContactManager(contactProfile, _cUserProfile, _profileDetailsWindow); - int index = _ui->imStackedWidget->addWidget(_qtIMContactManager->getWidget()); - _ui->imStackedWidget->setCurrentIndex(index); - - SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); - SAFE_CONNECT(_ui->mobilePhoneLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateSaveButtonState())); - SAFE_CONNECT(_ui->homePhoneLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateSaveButtonState())); - - //saveButton - updateSaveButtonState(); - SAFE_CONNECT(_ui->saveButton, SIGNAL(clicked()), SLOT(saveContact())); - - //avatarPixmapButton - _ui->avatarPixmapButton->setToolTip(""); - //_ui->avatarPixmapButton->setEnabled(false); - SAFE_CONNECT(_ui->avatarPixmapButton, SIGNAL(clicked()), SLOT(changeUserProfileAvatar())); - _ui->myProfileLabel->hide(); -} - -QtProfileDetails::QtProfileDetails(CUserProfile & cUserProfile, - UserProfile & userProfile, QWidget * parent, const QString & windowTitle) - : QObject(parent), - _cUserProfile(cUserProfile), - _profile(userProfile) { - - init(parent); - _profileDetailsWindow->setWindowTitle(tr("@product@") + " - " + windowTitle); - - //Not needed for UserProfile - _ui->groupLabel->hide(); - _ui->groupComboBox->hide(); - - //QtIMAccountManager - QtIMAccountManager * qtIMAccountManager = - new QtIMAccountManager((UserProfile &) _profile, false, _profileDetailsWindow); - int index = _ui->imStackedWidget->addWidget(qtIMAccountManager->getWidget()); - _ui->imStackedWidget->setCurrentIndex(index); - _ui->advancedButton->hide(); - /// no more simple mode - - //saveButton - SAFE_CONNECT(_ui->saveButton, SIGNAL(clicked()), SLOT(saveUserProfile())); - - //avatarPixmapButton - SAFE_CONNECT(_ui->avatarPixmapButton, SIGNAL(clicked()), SLOT(changeUserProfileAvatar())); -} - -void QtProfileDetails::init(QWidget * parent) { - _profileDetailsWindow = new QDialog(parent); - - _ui = new Ui::ProfileDetails(); - _ui->setupUi(_profileDetailsWindow); - - populateCountryList(); - - SAFE_CONNECT(_ui->cancelButton, SIGNAL(clicked()), SLOT(cancelButtonClicked())); - SAFE_CONNECT(_ui->advancedButton, SIGNAL(clicked()), SLOT(advancedButtonClicked())); - SAFE_CONNECT(_ui->websiteButton, SIGNAL(clicked()), SLOT(websiteButtonClicked())); - SAFE_CONNECT(_ui->emailButton, SIGNAL(clicked()), SLOT(emailButtonClicked())); - - _qtIMContactManager = NULL; - - readProfile(); -} - -void QtProfileDetails::populateCountryList() { - _ui->countryComboBox->addItems(StringListConvert::toQStringList(CountryList::getCountryList())); -} - -int QtProfileDetails::show() { - return _profileDetailsWindow->exec(); -} - -void QtProfileDetails::readProfile() { - _ui->firstNameLineEdit->setText(QString::fromUtf8(_profile.getFirstName().c_str())); - _ui->lastNameLineEdit->setText(QString::fromUtf8(_profile.getLastName().c_str())); - _ui->genderComboBox->setCurrentIndex((int) _profile.getSex()); - - Date date = _profile.getBirthdate(); - _ui->birthDate->setDate(QDate(date.getYear(), date.getMonth(), date.getDay())); - - StreetAddress address = _profile.getStreetAddress(); - _ui->countryComboBox->setCurrentIndex(_ui->countryComboBox->findText(QString::fromUtf8(address.getCountry().c_str()))); - _ui->cityLineEdit->setText(QString::fromUtf8(address.getCity().c_str())); - _ui->stateLineEdit->setText(QString::fromUtf8(address.getStateProvince().c_str())); - - _ui->mobilePhoneLineEdit->setText(QString::fromStdString(_profile.getMobilePhone())); - _ui->homePhoneLineEdit->setText(QString::fromStdString(_profile.getHomePhone())); - - _ui->emailLineEdit->setText(QString::fromStdString(_profile.getPersonalEmail())); - _ui->webLineEdit->setText(QString::fromStdString(_profile.getWebsite())); - - _ui->notesEdit->setPlainText(QString::fromUtf8(_profile.getNotes().c_str())); - - updateAvatarButton(); -} - -void QtProfileDetails::updateAvatarButton() { - std::string backgroundPixmapFilename = ":/pics/avatar_background.png"; - std::string foregroundPixmapData = _profile.getIcon().getData(); - - _ui->avatarPixmapButton->setIcon(PixmapMerging::merge(foregroundPixmapData, backgroundPixmapFilename)); -} - -void QtProfileDetails::saveProfile() { - _profile.setFirstName(_ui->firstNameLineEdit->text().toUtf8().data()); - - _profile.setLastName(_ui->lastNameLineEdit->text().toUtf8().data()); - - QDate date = _ui->birthDate->date(); - _profile.setBirthdate(Date(date.day(), date.month(), date.year())); - - _profile.setSex((EnumSex::Sex) _ui->genderComboBox->currentIndex()); - - StreetAddress address; - address.setCountry(_ui->countryComboBox->currentText().toUtf8().data()); - address.setStateProvince(_ui->stateLineEdit->text().toUtf8().data()); - address.setCity(_ui->cityLineEdit->text().toUtf8().data()); - - _profile.setStreetAddress(address); - - _profile.setMobilePhone(_ui->mobilePhoneLineEdit->text().remove(" ").toStdString()); - _profile.setHomePhone(_ui->homePhoneLineEdit->text().remove(" ").toStdString()); - - _profile.setPersonalEmail(_ui->emailLineEdit->text().toStdString()); - _profile.setWebsite(_ui->webLineEdit->text().toStdString()); - - _profile.setNotes(_ui->notesEdit->toPlainText().toUtf8().constData()); -} - -ContactProfile & QtProfileDetails::fillAndGetContactProfile() { - - if (_qtIMContactManager) { - _qtIMContactManager->saveIMContacts(); - } - - saveProfile(); - - return (ContactProfile &) _profile; -} - -void QtProfileDetails::saveContact() { - - if (_ui->groupComboBox->currentText().isEmpty()) { - QMessageBox::warning(_profileDetailsWindow, - tr("@product@ - No Group Selected"), - tr("A contact must have a group, please set a group."), - QMessageBox::NoButton, - QMessageBox::NoButton, - QMessageBox::Ok); - - return; - } - - ContactProfile & contactProfile = fillAndGetContactProfile(); - - int index = _ui->groupComboBox->findText(_ui->groupComboBox->currentText()); - QVariant groupId; - groupId = _ui->groupComboBox->itemData(index); - //If the group does not exist - if (groupId.isNull()) { - std::string groupName = std::string(_ui->groupComboBox->currentText().toUtf8().data()); - _cUserProfile.getCContactList().addContactGroup(groupName); - groupId = QString::fromStdString(_cUserProfile.getCContactList().getContactGroupIdFromName(groupName)); - } - - contactProfile.setGroupId(groupId.toString().toStdString()); - - _profileDetailsWindow->accept(); -} - -void QtProfileDetails::saveUserProfile() { - saveProfile(); - - _profileDetailsWindow->accept(); -} - -void QtProfileDetails::cancelButtonClicked() { - _profileDetailsWindow->reject(); -} - -void QtProfileDetails::changeUserProfileAvatar() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString startDir = QString::fromStdString(config.getResourcesDir()) + "pics/avatars"; - - ImageSelector avatarSelector(_profileDetailsWindow); - avatarSelector.setWindowTitle(tr("Select your avatar")); - avatarSelector.setCurrentDir(startDir); - - // Add Wengo avatar dir - int iconSize = ImageSelector::START_DIR_ICON_SIZE; - QPixmap wengoPixmap = QPixmap(startDir + "/default-avatar.png"); - wengoPixmap = wengoPixmap.scaled(iconSize, iconSize, Qt::KeepAspectRatio, Qt::SmoothTransformation); - avatarSelector.addStartDirItem(startDir, tr("@company@ Avatars"), wengoPixmap); - - // Add desktop dirs - DesktopService* service = DesktopService::getInstance(); - QStringList startDirList = service->startFolderList(); - Q_FOREACH(QString startDir, startDirList) { - QString name = service->userFriendlyNameForPath(startDir); - QPixmap pix = service->pixmapForPath(startDir, iconSize); - avatarSelector.addStartDirItem(startDir, name, pix); - } - //// - - if (!avatarSelector.exec()) { - return; - } - - setAvatarImage(avatarSelector.path()); - updateAvatarButton(); - -#ifdef OS_WINDOWS - BringWindowToTop(_profileDetailsWindow->winId()); -#endif -} - -void QtProfileDetails::setAvatarImage(const QString& path) { - //Size of Wengo avatars - QSize size(96, 96); - //Image is scaled to not save a big picture in userprofile.xml - QImage image(path); - image = image.scaled(size, Qt::KeepAspectRatio, Qt::SmoothTransformation); - - QBuffer buffer; - buffer.open(QIODevice::ReadWrite); - image.save(&buffer, PNG_FORMAT); - buffer.close(); - - QByteArray byteArray = buffer.data(); - std::string data(byteArray.data(), byteArray.size()); - - OWPicture picture = OWPicture::pictureFromData(data); - QFileInfo fileInfo(path); - picture.setFilename(fileInfo.fileName().toStdString()); - - _profile.setIcon(picture); -} - -void QtProfileDetails::advancedButtonClicked() { - - // save modifications before changing of mode - fillAndGetContactProfile(); - //// - - if (_qtIMContactManager->getContactManagerMode() == QtIMContactManagerInterface::contactManagerModeSimple) { - //Simple mode -> advanced mode - _ui->advancedButton->setText(tr("<< Simple")); - - //QtAdvancedIMContactManager - QtAdvancedIMContactManager * qtIMContactManager = - new QtAdvancedIMContactManager((ContactProfile &) _profile, _cUserProfile, _profileDetailsWindow); - - _ui->imStackedWidget->removeWidget(_qtIMContactManager->getWidget()); - OWSAFE_DELETE(_qtIMContactManager); - - int index = _ui->imStackedWidget->addWidget(qtIMContactManager->getWidget()); - _ui->imStackedWidget->setCurrentIndex(index); - _qtIMContactManager = qtIMContactManager; - SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); - - } else /*if (_qtIMContactManager->getContactManagerMode() == QtIMContactManagerInterface::contactManagerModeAdvanced)*/ { - //Advanced mode -> simple mode - _ui->advancedButton->setText(tr("Advanced >>")); - - //QtSimpleIMContactManager - QtSimpleIMContactManager * qtIMContactManager = - new QtSimpleIMContactManager((ContactProfile &) _profile, _cUserProfile, _profileDetailsWindow); - - _ui->imStackedWidget->removeWidget(_qtIMContactManager->getWidget()); - OWSAFE_DELETE(_qtIMContactManager); - - int index = _ui->imStackedWidget->addWidget(qtIMContactManager->getWidget()); - _ui->imStackedWidget->setCurrentIndex(index); - _qtIMContactManager = qtIMContactManager; - SAFE_CONNECT(_qtIMContactManager, SIGNAL(contentHasChanged()), SLOT(updateSaveButtonState())); - } -} - -void QtProfileDetails::websiteButtonClicked() { - String website = _ui->webLineEdit->text().toStdString(); - if (!website.empty()) { - if (!website.contains("http://")) { - website = "http://" + website; - } - WebBrowser::openUrl(website); - } -} - -void QtProfileDetails::emailButtonClicked() { - std::string email = _ui->emailLineEdit->text().toStdString(); - if (!email.empty()) { - WebBrowser::openUrl("mailto:" + email); - } -} - -void QtProfileDetails::setGroup(const QString & group) { - _ui->groupComboBox->setEditText(group); -} - -void QtProfileDetails::setFirstName(const QString & firstName) { - _ui->firstNameLineEdit->setText(firstName); -} - -void QtProfileDetails::setLastName(const QString & lastName) { - _ui->lastNameLineEdit->setText(lastName); -} - -void QtProfileDetails::setCountry(const QString & country) { - _ui->countryComboBox->setEditText(country); -} - -void QtProfileDetails::setCity(const QString & city) { - _ui->cityLineEdit->setText(city); -} - -void QtProfileDetails::setState(const QString & state) { - _ui->stateLineEdit->setText(state); -} - -void QtProfileDetails::setWebsite(const QString & website) { - _ui->webLineEdit->setText(website); -} - -void QtProfileDetails::setHomePhone(const QString & homePhone) { - _ui->homePhoneLineEdit->setText(homePhone); -} - -void QtProfileDetails::setWengoName(const QString & wengoName) { - - _qtIMContactManager->setWengoName(wengoName); -} - -void QtProfileDetails::setSipAddress(const QString & sipAddress) { - _qtIMContactManager->setSipAddress(sipAddress); -} - -void QtProfileDetails::updateSaveButtonState() { - - if ((!_ui->mobilePhoneLineEdit->text().isEmpty()) || - (!_ui->homePhoneLineEdit->text().isEmpty()) || - _qtIMContactManager->couldBeSaved() - ) { - _ui->saveButton->setEnabled(true); - } else { - _ui->saveButton->setEnabled(false); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtProfileDetails.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,145 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTPROFILEDETAILS_H -#define OWQTPROFILEDETAILS_H - -#include - -#include - -class UserProfile; -class ContactProfile; -class CUserProfile; -class Profile; -class QtIMContactManagerInterface; - -class QImage; -class QWidget; -class QDialog; -namespace Ui { class ProfileDetails; } - -/** - * Profile/Contact/UserProfile details window. - * - * @see Profile - * @see UserProfile - * @see Contact - * @author Tanguy Krotoff - */ -class QtProfileDetails : public QObject, NonCopyable { - Q_OBJECT -public: - - QtProfileDetails(CUserProfile & cUserProfile, ContactProfile & contactProfile, QWidget * parent, const QString & windowTitle); - - QtProfileDetails(CUserProfile & cUserProfile, UserProfile & userProfile, QWidget * parent, const QString & windowTitle); - - int show(); - - QDialog * getWidget() const { - return _profileDetailsWindow; - } - - void setWengoName(const QString & wengoName); - - void setGroup(const QString & group); - - void setFirstName(const QString & firstName); - - void setLastName(const QString & lastName); - - void setCountry(const QString & country); - - void setCity(const QString & city); - - void setState(const QString & state); - - void setWebsite(const QString & website); - - void setHomePhone(const QString & homePhone); - - void setSipAddress(const QString & sipAddress); - -public Q_SLOTS: - - void changeUserProfileAvatar(); - -private Q_SLOTS: - - void updateSaveButtonState(); - - void saveContact(); - - void saveUserProfile(); - - void cancelButtonClicked(); - - /** - * Switch from simple mode to advanced mode. - * - * The button advanced from QtSimpleIMContactManager has been clicked. - * Changes _ui->imStackedWidget widget. - */ - void advancedButtonClicked(); - - /** - * Shows the contact web page. - */ - void websiteButtonClicked(); - - /** - * Shows the contact email. - */ - void emailButtonClicked(); - -private: - - ContactProfile & fillAndGetContactProfile(); - - void init(QWidget * parent); - - /** Populates the country list widget. */ - void populateCountryList(); - - void readProfile(); - - void updateAvatarButton(); - - void saveProfile(); - - void setAvatarImage(const QString& path); - - Ui::ProfileDetails * _ui; - - QDialog * _profileDetailsWindow; - - CUserProfile & _cUserProfile; - - Profile & _profile; - - QtIMContactManagerInterface * _qtIMContactManager; - - /** - * QtProfileDetails shows a Contact rather than a UserProfile if true. - */ - bool _showContact; -}; - -#endif //QTPROFILEDETAILS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,233 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtUserProfile.h" - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include - -#include - -#include - -QtUserProfile::QtUserProfile(CUserProfile & cUserProfile, QtWengoPhone & qtWengoPhone) - : QObjectThreadSafe(NULL), - _qtWengoPhone(qtWengoPhone), - _cUserProfile(cUserProfile) { - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtUserProfile::initThreadSafe, this)); - postEvent(event); -} - -void QtUserProfile::initThreadSafe() { - qRegisterMetaType("IMContact"); - - SAFE_CONNECT_TYPE(this, SIGNAL(loginStateChangedEventHandlerSignal(SipAccount *, int)), - SLOT(loginStateChangedEventHandlerSlot(SipAccount *, int)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(networkDiscoveryStateChangedEventHandlerSignal(SipAccount *, int)), - SLOT(networkDiscoveryStateChangedEventHandlerSlot(SipAccount *, int)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(authorizationRequestEventHandlerSignal(PresenceHandler *, IMContact, QString)), - SLOT(authorizationRequestEventHandlerSlot(PresenceHandler *, IMContact, QString)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(incomingSubscribeEventHandlerSignal(PresenceHandler *,const QString&,int,const QString&, const QString&)), - SLOT(incomingSubscribeEventHandlerSlot(PresenceHandler *,const QString&,int,const QString&,const QString&)), Qt::QueuedConnection); - - QtBrowserWidget* browserWidget = _qtWengoPhone.getQtBrowserWidget(); - if (browserWidget) { - browserWidget->loadDefaultURL(); - } -} - -QtUserProfile::~QtUserProfile() { - LOG_DEBUG("QtUserProfile"); -} - -void QtUserProfile::updatePresentation() { -} - -void QtUserProfile::updatePresentationThreadSafe() { -} - -void QtUserProfile::loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state) { - loginStateChangedEventHandlerSignal(&sender, (int) state); -} - -void QtUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state) { - networkDiscoveryStateChangedEventHandlerSignal(&sender, (int) state); -} - -void QtUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message) { - authorizationRequestEventHandlerSignal(&sender, imContact, QString::fromStdString(message)); -} - -void QtUserProfile::incomingSubscribeEventHandler(PresenceHandler & sender,const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType) -{ - incomingSubscribeEventHandlerSignal(&sender, QString::fromStdString(imaccountId), sid,QString::fromStdString(from), QString::fromStdString(evtType)); -} - -void QtUserProfile::loginStateChangedEventHandlerSlot(SipAccount * sender, int iState) { - EnumSipLoginState::SipLoginState state = (EnumSipLoginState::SipLoginState) iState; - - switch (state) { - case EnumSipLoginState::SipLoginStateReady: - _qtWengoPhone.getQtBrowserWidget()->loadDefaultURL(); - break; - - case EnumSipLoginState::SipLoginStateConnected: - _qtWengoPhone.getQtBrowserWidget()->loadDefaultURL(); - break; - - case EnumSipLoginState::SipLoginStateDisconnected: - _qtWengoPhone.getQtBrowserWidget()->loadDefaultURL(); - break; - - case EnumSipLoginState::SipLoginStatePasswordError: - LOG_DEBUG("SipLoginStatePasswordError"); - break; - - case EnumSipLoginState::SipLoginStateNetworkError: - { - CUserProfileHandler & handler = _qtWengoPhone.getCWengoPhone().getCUserProfileHandler(); - QtLoginDialog dlg(&_qtWengoPhone, handler); - dlg.setValidAccount((WengoAccount &) *sender); - dlg.setErrorMessage(tr("Network error.")); - dlg.exec(); - } - break; - case EnumSipLoginState::SipLoginStateProgress: - _qtWengoPhone.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); - _qtWengoPhone.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); - break; - - default: - LOG_FATAL("unknown state=" + String::fromNumber(state)); - } - - _qtWengoPhone.updatePresentation(); -} - -void QtUserProfile::networkDiscoveryStateChangedEventHandlerSlot(SipAccount * /*sender*/, int /*iState*/) { - - //SipAccount::NetworkDiscoveryState state = (SipAccount::NetworkDiscoveryState) iState; -} - -void QtUserProfile::incomingSubscribeEventHandlerSlot(PresenceHandler * sender,const QString & imaccountId,int sid,const QString & from, const QString& evtType) -{ - QString request = QString("%1 wants to see the presence state.\n") - .arg(from); - - - int buttonClicked = QMessageBox::question(_qtWengoPhone.getWidget(), - tr("@product@ - Authorization Request"), request, - tr("&Authorize"), tr("&Block")); - - if (buttonClicked == 0) { - //TODO: give a personal message - - IMAccount * imAccount = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(imaccountId.toStdString()); - if(imAccount) - { - IMContact imContact(*imAccount,from.toStdString()); - if (_cUserProfile.getCContactList().findContactThatOwns(imContact).empty()) - { - - ContactProfile contactProfile; - contactProfile.addIMContact(imContact); - QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _qtWengoPhone.getWidget(), tr("Edit Contact")); - if (qtProfileDetails.show()) { - _cUserProfile.getCContactList().addContact(contactProfile); - } - } - } - //sender->authorizeContact(imContact, true, String::null); - //_cUserProfile.getUserProfile() - sender->acceptSubscription(sid,imaccountId.toStdString()); - - } else { - sender->rejectSubscription(sid,imaccountId.toStdString()); - //TODO: give a personal message - //TODO: avoid direct access to model (as we are in the GUI thread) - //sender->authorizeContact(imContact, false, String::null); - } -} - -void QtUserProfile::authorizationRequestEventHandlerSlot(PresenceHandler * sender, - IMContact imContact, QString message) { - - IMAccount * imAccount = _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(imContact.getIMAccountId()); - if (imAccount) { - QString request = QString("%1 (from %2) wants to see the presence state of %3.\n") - .arg(QString::fromStdString(imContact.getContactId())) - .arg(QString::fromStdString(EnumIMProtocol::toString(imContact.getProtocol()))) - .arg(QString::fromStdString(imAccount->getLogin())); - - if (!message.isEmpty()) { - request += QString("%1\n").arg(message); - } - - int buttonClicked = QMessageBox::question(_qtWengoPhone.getWidget(), - tr("@product@ - Authorization Request"), request, - tr("&Authorize"), tr("&Block")); - - if (buttonClicked == 0) { - //TODO: give a personal message - - if (_cUserProfile.getCContactList().findContactThatOwns(imContact).empty()) { - //If the contact is not in our ContactList - ContactProfile contactProfile; - contactProfile.addIMContact(imContact); - QtProfileDetails qtProfileDetails(_cUserProfile, contactProfile, _qtWengoPhone.getWidget(), tr("Edit Contact")); - if (qtProfileDetails.show()) { - _cUserProfile.getCContactList().addContact(contactProfile); - } - } - sender->authorizeContact(imContact, true, String::null); - - } else { - //TODO: give a personal message - //TODO: avoid direct access to model (as we are in the GUI thread) - sender->authorizeContact(imContact, false, String::null); - } - OWSAFE_DELETE(imAccount); - } else { - LOG_ERROR("IMAccount not found!"); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTUSERPROFILE_H -#define OWQTUSERPROFILE_H - -#include - -#include - -#include - -#include - -class CUserProfile; -class QtWengoPhone; - -/** - * Qt implementation of UserProfile Presentation layer. - * - * @author Philippe Bernery - */ -class QtUserProfile : public QObjectThreadSafe, public PUserProfile { - Q_OBJECT -public: - - /** - * @param parenWidget Parent widget. Used for Dialog created during events. - */ - QtUserProfile(CUserProfile & cUserProfile, QtWengoPhone & qtWengoPhone); - - virtual ~QtUserProfile(); - - void loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state); - - void networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state); - - void authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message); - - void incomingSubscribeEventHandler(PresenceHandler & sender, - const std::string & imaccountId,int sid,const std::string & from,const std::string & evtType); - -Q_SIGNALS: - - //FIXME: here we should be very careful with pointer as - // we are changing the Thread and pointer may not be valid when used. - void loginStateChangedEventHandlerSignal(SipAccount * sender, int iState); - - void networkDiscoveryStateChangedEventHandlerSignal(SipAccount * sender, int iState); - - void authorizationRequestEventHandlerSignal(PresenceHandler * sender, - IMContact imContact, QString message); - - void incomingSubscribeEventHandlerSignal(PresenceHandler * sender, - const QString& imaccountId,int sid,const QString& from, const QString& evtType); - -private Q_SLOTS: - - void loginStateChangedEventHandlerSlot(SipAccount * sender, int iState); - - void networkDiscoveryStateChangedEventHandlerSlot(SipAccount * sender, int iState); - - void authorizationRequestEventHandlerSlot(PresenceHandler * sender, - IMContact imContact, QString message); - - void incomingSubscribeEventHandlerSlot(PresenceHandler * sender, - const QString& imaccountId,int sid,const QString& from, const QString& evtType); - -private: - - void initThreadSafe(); - - void updatePresentation(); - - void updatePresentationThreadSafe(); - - QtWengoPhone & _qtWengoPhone; - - CUserProfile & _cUserProfile; -}; - -#endif //OWQTUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,227 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtUserProfileHandler.h" - -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -#include -#include - -QtUserProfileHandler::QtUserProfileHandler(CUserProfileHandler & cUserProfileHandler, - QtWengoPhone & qtWengoPhone) - : QObject(&qtWengoPhone), - _cUserProfileHandler(cUserProfileHandler), - _qtWengoPhone(qtWengoPhone),_qtLoginDialog(0) { - - //Connection for UserProfile change - SAFE_CONNECT_TYPE(this, SIGNAL(setCurrentUserProfileEventHandlerSignal()), - SLOT(setCurrentUserProfileEventHandlerSlot()), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(noCurrentUserProfileSetEventHandlerSignal()), - SLOT(noCurrentUserProfileSetEventHandlerSlot()), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(currentUserProfileWillDieEventHandlerSignal()), - SLOT(currentUserProfileWillDieEventHandlerSlot()), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(userProfileInitializedEventHandlerSignal()), - SLOT(userProfileInitializedEventHandlerSlot()), Qt::QueuedConnection); - qRegisterMetaType("SipAccount"); - qRegisterMetaType("WengoAccount"); - qRegisterMetaType("EnumSipLoginState::SipLoginState"); - SAFE_CONNECT_TYPE(this, SIGNAL(sipAccountConnectionFailedEventHandlerSignal(SipAccount*, EnumSipLoginState::SipLoginState)), - SLOT(sipAccountConnectionFailedEventHandlerSlot(SipAccount*, EnumSipLoginState::SipLoginState)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(profileLoadedFromBackupsEventHandlerSignal(QString)), - SLOT(profileLoadedFromBackupsEventHandlerSlot(QString)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(profileCannotBeLoadedEventHandlerSignal(QString)), - SLOT(profileCannotBeLoadedEventHandlerSlot(QString)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(sipNetworkErrorEventHandlerSignal(SipAccount*)), - SLOT(sipNetworkErrorEventHandlerSlot(SipAccount*)), Qt::QueuedConnection); -} - -void QtUserProfileHandler::updatePresentation() { -} - -void QtUserProfileHandler::noCurrentUserProfileSetEventHandler() { - noCurrentUserProfileSetEventHandlerSignal(); -} - -void QtUserProfileHandler::currentUserProfileWillDieEventHandler() { - currentUserProfileWillDieEventHandlerSignal(); -} - -void QtUserProfileHandler::userProfileInitializedEventHandler() { - userProfileInitializedEventHandlerSignal(); -} - -void QtUserProfileHandler::sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState state) { - // We need to clone the SipAccount because we don't want to pass a - // reference of the original, and doing a simple copy would produce a - // SipAccount instance, even if the reference is in fact a WengoAccount. - sipAccountConnectionFailedEventHandlerSignal(sipAccount.clone(), state); -} - -void QtUserProfileHandler::profileLoadedFromBackupsEventHandler(std::string profileName) { - profileLoadedFromBackupsEventHandlerSignal(QString::fromStdString(profileName)); -} - -void QtUserProfileHandler::profileCannotBeLoadedEventHandler(std::string profileName) { - profileCannotBeLoadedEventHandlerSignal(QString::fromStdString(profileName)); -} - -void QtUserProfileHandler::networkErrorEventHandler(const SipAccount & sipAccount) { - sipNetworkErrorEventHandlerSignal(sipAccount.clone()); -} - -void QtUserProfileHandler::noCurrentUserProfileSetEventHandlerSlot() { - showLoginWindow(); -} - -void QtUserProfileHandler::setCurrentUserProfileEventHandler() { - setCurrentUserProfileEventHandlerSignal(); -} - -void QtUserProfileHandler::setCurrentUserProfileEventHandlerSlot() { - _qtWengoPhone.setCurrentUserProfileEventHandlerSlot(); -} - -void QtUserProfileHandler::currentUserProfileWillDieEventHandlerSlot() { - if(!_qtLoginDialog) - { - _qtWengoPhone.currentUserProfileWillDieEventHandlerSlot(); - _cUserProfileHandler.currentUserProfileReleased(); - - // For some reason, if we call showLoginWindow directly, the CPU is at 100% - // on MacOS X. Delaying showLoginWindow with a timer solves it. - QTimer::singleShot(0, this, SLOT(showLoginWindow())); - } -} - -void QtUserProfileHandler::userProfileInitializedEventHandlerSlot() { - _qtWengoPhone.userProfileInitializedEventHandlerSlot(); -} - -void QtUserProfileHandler::profileLoadedFromBackupsEventHandlerSlot(QString profileName) { - QMessageBox::warning(_qtWengoPhone.getWidget(), tr("@product@"), - tr("A problem occured while loading your profile.\n" - "The last backuped profile has been loaded: \n" - "you may have lost last changes made"), - QMessageBox::Ok, QMessageBox::NoButton); -} - -void QtUserProfileHandler::profileCannotBeLoadedEventHandlerSlot(QString profileName) { - QMessageBox::warning(_qtWengoPhone.getWidget(), tr("@product@"), - tr("Your profile could not be loaded.\n" - "Choose another profile or create a new one."), - QMessageBox::Ok, QMessageBox::NoButton); -} - -void QtUserProfileHandler::showLoginWindow() { - - _qtWengoPhone.uninstallQtBrowserWidget(); - if(!_qtLoginDialog) - { - if(!_qtLoginDialog) - _qtLoginDialog = new QtLoginDialog(&_qtWengoPhone, _cUserProfileHandler); - if (_qtLoginDialog->exec() == QDialog::Accepted) { - //_qtWengoPhone.installQtBrowserWidget(); - _qtWengoPhone.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); - _qtWengoPhone.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); - } - delete _qtLoginDialog; - _qtLoginDialog = 0; - } -} - -void QtUserProfileHandler::showLoginWindowWithWengoAccount(const WengoAccount & wengoAccount) { - - if(!_qtLoginDialog ) - { - _qtLoginDialog = new QtLoginDialog(&_qtWengoPhone, _cUserProfileHandler); - - _qtLoginDialog->setValidAccount(wengoAccount); - if (_qtLoginDialog->exec() == QDialog::Accepted) { - _qtWengoPhone.installQtBrowserWidget(); - _qtWengoPhone.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); - _qtWengoPhone.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); - } - delete _qtLoginDialog; - _qtLoginDialog = 0; - } -} - -void QtUserProfileHandler::sipNetworkErrorEventHandlerSlot(SipAccount* sipAccount) { - /*_qtWengoPhone.uninstallQtBrowserWidget(); - - QtLoginDialog dlg(&_qtWengoPhone, _cUserProfileHandler); - dlg.setInvalidAccount(*sipAccount); - dlg.setErrorMessage(tr("Network error.")); - if (dlg.exec() == QDialog::Accepted) { - _qtWengoPhone.installQtBrowserWidget(); - } - delete sipAccount;*/ -} - -void QtUserProfileHandler::sipAccountConnectionFailedEventHandlerSlot(SipAccount* sipAccount, EnumSipLoginState::SipLoginState state) { - LOG_DEBUG("error: %d", state); - // FIXME: Why do we do different things depending on the account type? - if (sipAccount->getType() == SipAccount::SipAccountTypeWengo) { - _qtWengoPhone.uninstallQtBrowserWidget(); - } else { - _qtWengoPhone.currentUserProfileWillDieEventHandlerSlot(); - _cUserProfileHandler.currentUserProfileReleased(); - } - - if(!_qtLoginDialog) - { - _qtLoginDialog =new QtLoginDialog(&_qtWengoPhone, _cUserProfileHandler); - _qtLoginDialog->setInvalidAccount(*sipAccount); - QString message; - if (state == EnumSipLoginState::SipLoginStatePasswordError) { - if (sipAccount->getType() == SipAccount::SipAccountTypeWengo) { - message = tr("Wrong email/password entered"); - } else { - message = tr("Wrong login/password entered"); - } - } else if (state == EnumSipLoginState::SipLoginStateNetworkError) { - message = tr("Connection error"); - } else { - message = tr("Unexpected error (code: %1").arg(int(state)); - } - _qtLoginDialog->setErrorMessage(message); - - delete sipAccount; - - if (_qtLoginDialog->exec() == QDialog::Accepted) { - _qtWengoPhone.installQtBrowserWidget(); - _qtWengoPhone.getQtStatusBar().updatePhoneLineState(EnumPhoneLineState::PhoneLineStateProgress); - _qtWengoPhone.getQtSystray().phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); - } - delete _qtLoginDialog; - _qtLoginDialog = 0; - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profile/QtUserProfileHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,164 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTUSERPROFILEHANDLER_H -#define OWQTUSERPROFILEHANDLER_H - -#include - -#include - -#include - -class CUserProfileHandler; -class QtLoginDialog; -class QtWengoPhone; - -/** - * Qt implementation of UserProfileHandler Presentation layer. - * - * @author Philippe Bernery - */ -class QtUserProfileHandler : public QObject, public PUserProfileHandler { - Q_OBJECT -public: - - QtUserProfileHandler(CUserProfileHandler & cUserProfileHandler, QtWengoPhone & qtWengoPhone); - - virtual void setCurrentUserProfileEventHandler(); - - virtual void noCurrentUserProfileSetEventHandler(); - - virtual void currentUserProfileWillDieEventHandler(); - - virtual void userProfileInitializedEventHandler(); - - virtual void sipAccountConnectionFailedEventHandler(const SipAccount & sipAccount, EnumSipLoginState::SipLoginState); - - virtual void profileLoadedFromBackupsEventHandler(std::string profileName); - - virtual void profileCannotBeLoadedEventHandler(std::string profileName); - - virtual void networkErrorEventHandler(const SipAccount & sipAccount); - - virtual void updatePresentation(); - -Q_SIGNALS: - - /** - * @see noCurrentUserProfileSetEventHandler - */ - void noCurrentUserProfileSetEventHandlerSignal(); - - /** - * @see currentUserProfileWillDieEventHandler - */ - void currentUserProfileWillDieEventHandlerSignal(); - - /** - * @see userProfileInitializedEventHandler - */ - void userProfileInitializedEventHandlerSignal(); - - /** - * @see sipAccountConnectionFailedEventHandler - */ - void sipAccountConnectionFailedEventHandlerSignal(SipAccount* sipAccount, EnumSipLoginState::SipLoginState); - - /** - * @see profileLoadedFromBackupsEventHandler - */ - void profileLoadedFromBackupsEventHandlerSignal(QString profileName); - - /** - * @see profileCannotBeLoadedEventHandler - */ - void profileCannotBeLoadedEventHandlerSignal(QString profileName); - - /** - * @see networkErrorEventHandler - */ - void sipNetworkErrorEventHandlerSignal(SipAccount* sipAccount); - - void setCurrentUserProfileEventHandlerSignal(); - -public Q_SLOTS: - - /** - * Show the Profile chooser window. - */ - void showLoginWindow(); - - /** - * Show the Profile chooser window with the given WengoAccount. - * - */ - void showLoginWindowWithWengoAccount(const WengoAccount & wengoAccount); - -private Q_SLOTS: - - /** - * @see noCurrentUserProfileSetEventHandler - */ - void noCurrentUserProfileSetEventHandlerSlot(); - - /** - * @see currentUserProfileWillDieEventHandler - */ - void currentUserProfileWillDieEventHandlerSlot(); - - /** - * @see userProfileInitializedEventHandler - */ - void userProfileInitializedEventHandlerSlot(); - - /** - * @see sipAccountConnectionFailedEventHandler - */ - void sipAccountConnectionFailedEventHandlerSlot(SipAccount* sipAccount, EnumSipLoginState::SipLoginState); - - /** - * @see profileLoadedFromBackupsEventHandler - */ - void profileLoadedFromBackupsEventHandlerSlot(QString profileName); - - /** - * @see profileCannotBeLoadedEventHandler - */ - void profileCannotBeLoadedEventHandlerSlot(QString profileName); - - /** - * @see networkErrorEventHandler - */ - void sipNetworkErrorEventHandlerSlot(SipAccount* sipAccount); - - void setCurrentUserProfileEventHandlerSlot(); - -private: - - /** Link to control layer. */ - CUserProfileHandler & _cUserProfileHandler; - - /** Link to QtWengoPhone to create needed objects. */ - QtWengoPhone & _qtWengoPhone; - - QtLoginDialog * _qtLoginDialog; -}; - -#endif //OWQTUSERPROFILEHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/CreditWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/CreditWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/CreditWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/CreditWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,100 +0,0 @@ - - - - - CreditWidget - - - - 0 - 0 - 243 - 78 - - - - - 0 - - - 0 - - - - - Call Forward Method - - - Not Available - - - - - - - Click here to change your call forward settings - - - Call forward mode: - - - :/pics/profilebar/credit/call_forward.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - 13 - - - Click here to buy @company@'s credits - - - Purchase call out credits - - - :/pics/profilebar/credit/wengos.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - Call Voice Mail - - - :/pics/profilebar/event/voicemessage_new.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - - callForwardButton - buyCreditsButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/EventWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/EventWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/EventWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/EventWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,118 +0,0 @@ - - - - - EventWidget - - - - 0 - 0 - 291 - 27 - - - - - 0 - - - 0 - - - - - 0 - - - 6 - - - - - 0 - - - - - - - Click here to call your voice mail - - - New Voice Mail: - - - :/pics/profilebar/event/voicemessage_new.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - - - 0 - - - 6 - - - - - Click here to see missed call(s) - - - Missed Call(s): - - - :/pics/profilebar/event/call_missed.png - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - 0 - - - - - - - - - Qt::Horizontal - - - - 47 - 24 - - - - - - - - - missedCallButton - voiceMailButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/IMProfileWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/IMProfileWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/IMProfileWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/IMProfileWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,135 +0,0 @@ - - - - - IMProfileWidget - - - - 0 - 0 - 311 - 78 - - - - - 0 - - - 0 - - - - - 0 - - - 0 - - - - - - 13 - 0 - 0 - 0 - - - - QFrame::NoFrame - - - QFrame::Raised - - - - - - - Add an instant messaging account (MSN, AIM, GoogleTalk...) - - - Add an IM account - - - :/pics/add.png - - - - 22 - 22 - - - - Qt::ToolButtonTextBesideIcon - - - true - - - - - - - - - Enter your nickname here - - - Enter your nickname here - - - - - - - <html><head><meta name="qrichtext" content="1" /><style type="text/css"> -p, li { white-space: pre-wrap; } -</style></head><body style=" font-family:'Sans Serif'; font-size:9pt; font-weight:400; font-style:normal; text-decoration:none;"> -<p style=" margin-top:0px; margin-bottom:0px; margin-left:0px; margin-right:0px; -qt-block-indent:0; text-indent:0px;">Click to change your avatar</p></body></html> - - - :/pics/avatar_background.png - - - - 70 - 70 - - - - true - - - - - - - - - ToolTipLineEdit - QLineEdit -
ToolTipLineEditProxy.h
- 0 - -
- - ScrollFrame - QFrame -
qtutil/ScrollFrame.h
- 0 - -
-
- - avatarButton - aliasLineEdit - addIMAccountButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,114 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtCreditWidget.h" - -#include "ui_CreditWidget.h" - -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include - - - -#include -#include - -#include - -#include - -QtCreditWidget::QtCreditWidget(QWidget * parent) - : QObject(parent) - , _cWengoPhone(0) - , _userProfile(0) { - - _creditWidget = new QWidget(parent); - - _ui = new Ui::CreditWidget(); - _ui->setupUi(_creditWidget); - - SAFE_CONNECT(_ui->callForwardButton, SIGNAL(clicked()), SLOT(callForwardModeClicked())); - SAFE_CONNECT(_ui->buyCreditsButton, SIGNAL(clicked()), SLOT(buyCreditsClicked())); - - //voiceMailButton - SAFE_CONNECT(_ui->voiceMailButton, SIGNAL(clicked()), SLOT(voiceMailClicked())); - - LANGUAGE_CHANGE(_creditWidget); -} - -QtCreditWidget::~QtCreditWidget() { - OWSAFE_DELETE(_ui); -} - -void QtCreditWidget::init(CWengoPhone* cWengoPhone, UserProfile* userProfile) { - _cWengoPhone = cWengoPhone; - _userProfile = userProfile; - bool isWengo = _userProfile->hasWengoAccount(); - _ui->callForwardLabel->setVisible(isWengo); - _ui->callForwardButton->setVisible(isWengo); - _ui->buyCreditsButton->setVisible(isWengo); -} - -QWidget * QtCreditWidget::getWidget() const { - return _creditWidget; -} - -void QtCreditWidget::updatePresentation() { - if (!_callForwardMode.isEmpty()) { - _ui->callForwardLabel->setText(_callForwardMode); - } -} - -void QtCreditWidget::setCallForwardMode(const QString & callForwardMode) { - _callForwardMode = callForwardMode; - updatePresentation(); -} - -void QtCreditWidget::buyCreditsClicked() { - Q_ASSERT(_userProfile->hasWengoAccount()); - WsUrl::showWengoBuyWengos(); -} - -void QtCreditWidget::callForwardModeClicked() { - Q_ASSERT(_userProfile->hasWengoAccount()); - QtWengoConfigDialog* dialog = QtWengoConfigDialog::showInstance(*_cWengoPhone); - dialog->showCallForwardPage(); -} - -void QtCreditWidget::languageChanged() { - _ui->retranslateUi(_creditWidget); - updatePresentation(); -} - -void QtCreditWidget::voiceMailClicked() { - IPhoneLine * phoneLine = _userProfile->getActivePhoneLine(); - if (phoneLine) { - phoneLine->makeCall(_userProfile->getSipAccount()->getVoicemailNumber()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtCreditWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCREDITWIDGET_H -#define OWQTCREDITWIDGET_H - -#include -#include - -class CWengoPhone; -class UserProfile; - -class QWidget; -namespace Ui { class CreditWidget; } - -/** - * Credit widget of the profile bar - * - * Shows the Wengo's credit available for the user + call forward status. - * - * @author Mathieu Stute - */ -class QtCreditWidget : public QObject { - Q_OBJECT -public: - - QtCreditWidget(QWidget * parent); - - void init(CWengoPhone*, UserProfile *); - - virtual ~QtCreditWidget(); - - void setCallForwardMode(const QString & callForwardMode); - - QWidget * getWidget() const; - - void updatePresentation(); - -private Q_SLOTS: - - void buyCreditsClicked(); - - void callForwardModeClicked(); - - void voiceMailClicked(); - - void languageChanged(); - -private: - - bool isWengoConnexion(); - - CWengoPhone * _cWengoPhone; - - UserProfile * _userProfile; - - QWidget * _creditWidget; - - QString _callForwardMode; - - Ui::CreditWidget * _ui; -}; - -#endif //OWQTCREDITWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,126 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEventWidget.h" - -#include "ui_EventWidget.h" - -#include - -#include -#include - -#include -#include - -#include -#include - -#include - -#include - -static const char * VOICE_MAIL_CALL = "123"; - -QtEventWidget::QtEventWidget(CWengoPhone & cWengoPhone, CUserProfile & cUserProfile, QWidget * parent) - : QObjectThreadSafe(NULL), - _cUserProfile(cUserProfile), - _cWengoPhone(cWengoPhone) { - - _voiceMailCount = 0; - _missedCallCount = 0; - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtEventWidget::initThreadSafe, this)); - postEvent(event); -} - -QtEventWidget::~QtEventWidget() { - OWSAFE_DELETE(_ui); -} - -void QtEventWidget::initThreadSafe() { - _eventWidget = new QWidget(); - - _ui = new Ui::EventWidget(); - _ui->setupUi(_eventWidget); - - //missedCallButton - SAFE_CONNECT(_ui->missedCallButton, SIGNAL(clicked()), SLOT(missedCallClicked())); - - //voiceMailButton - SAFE_CONNECT(_ui->voiceMailButton, SIGNAL(clicked()), SLOT(voiceMailClicked())); - - LANGUAGE_CHANGE(_eventWidget); - - updatePresentation(); -} - -QWidget * QtEventWidget::getWidget() const { - return _eventWidget; -} - -void QtEventWidget::updatePresentation() { - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtEventWidget::updatePresentationThreadSafe, this)); - postEvent(event); -} - -void QtEventWidget::updatePresentationThreadSafe() { - _ui->voiceMailCountLabel->setText(QString("%1").arg(_voiceMailCount)); - _ui->missedCallCountLabel->setText(QString("%1").arg(_missedCallCount)); -} - -void QtEventWidget::setVoiceMail(int count) { - _voiceMailCount = count; - updatePresentation(); -} - -void QtEventWidget::setMissedCall(int count) { - _missedCallCount = count; - updatePresentation(); -} - -void QtEventWidget::voiceMailClicked() { - - QMessageBox mb(tr("@product@ - Voice Mail"), - tr("Do you want to call your voice mail?"), - QMessageBox::Question, - QMessageBox::Yes | QMessageBox::Default, - QMessageBox::No | QMessageBox::Escape, - QMessageBox::NoButton, _eventWidget); - - if (mb.exec() == QMessageBox::Yes) { - IPhoneLine * phoneLine = _cUserProfile.getUserProfile().getActivePhoneLine(); - if (phoneLine) { - phoneLine->makeCall(VOICE_MAIL_CALL); - } - } -} - -void QtEventWidget::missedCallClicked() { - //Shows the history tab - PWengoPhone * pWengoPhone = (PWengoPhone *) _cWengoPhone.getPresentation(); - pWengoPhone->showHistory(); -} - -void QtEventWidget::languageChanged() { - _ui->retranslateUi(_eventWidget); - updatePresentationThreadSafe(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtEventWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,81 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTEVENTWIDGET_H -#define OWQTEVENTWIDGET_H - -#include - -class CUserProfile; -class CWengoPhone; - -class QWidget; -namespace Ui { class EventWidget; } - -/** - * Event widget of the profile bar. - * - * Shows missed calls and voice mail messages. - * - * @author Mathieu Stute - */ -class QtEventWidget : public QObjectThreadSafe { - Q_OBJECT -public: - - QtEventWidget(CWengoPhone & cWengoPhone, CUserProfile & cUserProfile, QWidget * parent); - - ~QtEventWidget(); - - void setVoiceMail(int count); - - void setMissedCall(int count); - - void updatePresentation(); - - QWidget * getWidget() const; - -private Q_SLOTS: - - void voiceMailClicked(); - - void missedCallClicked(); - - void languageChanged(); - -private: - - void initThreadSafe(); - - void updatePresentationThreadSafe(); - - CUserProfile & _cUserProfile; - - CWengoPhone & _cWengoPhone; - - QWidget * _eventWidget; - - Ui::EventWidget * _ui; - - int _voiceMailCount; - - int _missedCallCount; -}; - -#endif //OWQTEVENTWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,110 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountPresenceMenuManager.h" - -#include - -#include -#include - -#include - -#include - -#include -#include -#include -#include - -QtIMAccountPresenceMenuManager::QtIMAccountPresenceMenuManager(QObject* parent, CUserProfile& cUserProfile, std::string imAccountId) - : QObject(parent) - , _cUserProfile(cUserProfile) - , _imAccountId(imAccountId) -{ - _disconnectAction = new QAction(this); - _disconnectAction->setText(tr("Disconnect")); - SAFE_CONNECT(_disconnectAction, SIGNAL(triggered(bool)), SLOT(disconnect()) ); -} - -void QtIMAccountPresenceMenuManager::addPresenceActions(QMenu* menu) { - addPresenceAction( - menu, EnumPresenceState::PresenceStateOnline, - QPixmap(":/pics/status/online.png"), tr("Online")); - - addPresenceAction( - menu, EnumPresenceState::PresenceStateAway, - QPixmap(":/pics/status/away.png"), tr("Away")); - - addPresenceAction( - menu, EnumPresenceState::PresenceStateDoNotDisturb, - QPixmap(":/pics/status/donotdisturb.png"), tr("Do Not Disturb")); - - addPresenceAction( - menu, EnumPresenceState::PresenceStateInvisible, - QPixmap(":/pics/status/invisible.png"), tr("Invisible")); - - menu->addAction(_disconnectAction); - - // We don't want the user to delete his Wengo or SIP account, so add "delete - // account entry" for all protocols, except Wengo or SIP - std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); - EnumIMProtocol::IMProtocol protocol = imAccount->getProtocol(); - if (protocol != EnumIMProtocol::IMProtocolWengo && protocol != EnumIMProtocol::IMProtocolSIP) { - menu->addSeparator(); - menu->addAction(tr("Delete Account"), this, SLOT(deleteAccount()) ); - } - - SAFE_CONNECT(menu, SIGNAL(aboutToShow()), SLOT(updateActions()) ); -} - -void QtIMAccountPresenceMenuManager::updateActions() { - std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); - _disconnectAction->setEnabled(imAccount->isConnected()); -} - -void QtIMAccountPresenceMenuManager::addPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text) { - QAction* action = menu->addAction(pix, text, this, SLOT(slotPresenceActionTriggered()) ); - _actionToState[action] = state; -} - -void QtIMAccountPresenceMenuManager::slotPresenceActionTriggered() { - EnumPresenceState::PresenceState state = _actionToState[sender()]; - _cUserProfile.getUserProfile().setPresenceState(state, _imAccountId); -} - -void QtIMAccountPresenceMenuManager::disconnect() { - _cUserProfile.getUserProfile().getConnectHandler().disconnect(_imAccountId); -} - -void QtIMAccountPresenceMenuManager::deleteAccount() { - std::auto_ptr imAccount ( _cUserProfile.getUserProfile().getIMAccountManager().getIMAccount(_imAccountId) ); - QString login = QString::fromStdString(imAccount->getLogin()); - QString message = - tr("Are sure you want to delete the account %1?") - .arg(login); - - int result = QMessageBox::question(QApplication::activeWindow(), - tr("@product@"), message, - tr("&Delete"), tr("Cancel")); - - if (result == 0) { - _cUserProfile.getUserProfile().removeIMAccount(*imAccount); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMAccountPresenceMenuManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTIMACCOUNTPRESENCEMENUMANAGER_H -#define QTIMACCOUNTPRESENCEMENUMANAGER_H - -#include -#include - -#include -#include - -class CUserProfile; -class QAction; -class QIcon; -class QMenu; -class QPixmap; -class QString; - - -/** - * This class manages the menu actions for an IM account - * - * @author Aurelien Gateau - */ -class QtIMAccountPresenceMenuManager : public QObject { - Q_OBJECT -public: - QtIMAccountPresenceMenuManager(QObject* parent, CUserProfile&, std::string imAccountId); - - /** - * Fills menu with actions to modify the IM account presence - */ - void addPresenceActions(QMenu* menu); - -private Q_SLOTS: - void slotPresenceActionTriggered(); - void disconnect(); - void deleteAccount(); - void updateActions(); - -private: - void addPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text); - - QMap _actionToState; - CUserProfile& _cUserProfile; - std::string _imAccountId; - QAction* _disconnectAction; -}; - -#endif // QTIMACCOUNTPRESENCEMENUMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,484 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMProfileWidget.h" - -#include "ui_IMProfileWidget.h" - -#include "QtIMAccountPresenceMenuManager.h" - -#include -#include -#include -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include - -#include -#include -#include - -#include -#include -#include - -#include "imaccount/QtIMAccountSettings.h" - -const int ACCOUNT_ICON_WIDTH = 28; -const int ACCOUNT_ICON_HEIGHT = 22; - -static QPixmap createAccountButtonPixmap(EnumIMProtocol::IMProtocol imProtocol, QtIMAccountMonitor::ConnectionState connectionState, EnumPresenceState::PresenceState presenceState) { - QString name = ":pics/protocols/"; - - // Append protocol name - switch (imProtocol) { - case EnumIMProtocol::IMProtocolMSN: - name += "msn"; - break; - - case EnumIMProtocol::IMProtocolYahoo: - name += "yahoo"; - break; - - case EnumIMProtocol::IMProtocolAIM: - name += "aim"; - break; - - case EnumIMProtocol::IMProtocolICQ: - name += "icq"; - break; - - case EnumIMProtocol::IMProtocolJabber: - name += "jabber"; - break; - - case EnumIMProtocol::IMProtocolGoogleTalk: - name += "google-talk"; - break; - - case EnumIMProtocol::IMProtocolWengo: - name += "wengo"; - break; - - case EnumIMProtocol::IMProtocolFaceBook: - name += "facebook"; - break; - - case EnumIMProtocol::IMProtocolMySpace: - name += "myspace"; - break; - - case EnumIMProtocol::IMProtocolSkype: - name += "skype"; - break; - - case EnumIMProtocol::IMProtocolTwitter: - name += "twitter"; - break; - - case EnumIMProtocol::IMProtocolSIPSIMPLE: - case EnumIMProtocol::IMProtocolSIP: - name += "sip"; - break; - - case EnumIMProtocol::IMProtocolUnknown: - case EnumIMProtocol::IMProtocolAll: - LOG_FATAL("Protocol should not be " + EnumIMProtocol::toString(imProtocol)); - } - - // Special cases: Disconnected or failure - if (connectionState == QtIMAccountMonitor::StateDisconnected - || connectionState == QtIMAccountMonitor::StateFailure) { - name += "_off"; - } - - // Load pix - name += ".png"; - QPixmap protocolPix; - if (!protocolPix.load(name)) { - LOG_WARN(QString("Could not load icon " + name).toStdString()); - return QPixmap(); - } - - // Load overlay - QPixmap overlay; - // Append connection state - switch (connectionState) { - case QtIMAccountMonitor::StateConnected: - { - QString presenceString = QString::fromStdString(EnumPresenceState::toString(presenceState)); - overlay.load( - QString(":pics/protocols/overlay_presence_%1.png").arg(presenceString) - ); - } - break; - - case QtIMAccountMonitor::StateConnecting: - overlay.load(":pics/protocols/overlay_progress.png"); - break; - - case QtIMAccountMonitor::StateFailure: - overlay.load(":pics/protocols/overlay_error.png"); - break; - - case QtIMAccountMonitor::StateDisconnected: - break; - } - - // Paint overlay - QPixmap pix(ACCOUNT_ICON_WIDTH, ACCOUNT_ICON_HEIGHT); - pix.fill(QColor(0,0,0,0)); - QPainter painter(&pix); - painter.drawPixmap(pix.width() - protocolPix.width(), 0, protocolPix); - if (!overlay.isNull()) { - painter.drawPixmap(0, pix.height() - overlay.height(), overlay); - } - painter.end(); - - return pix; -} - - -QtIMProfileWidget::QtIMProfileWidget(QWidget * parent) - : QObject(parent) - , _cUserProfile(0) - , _qtImAccountMonitor(0) { - - _imProfileWidget = new QWidget(parent); - - _ui = new Ui::IMProfileWidget(); - _ui->setupUi(_imProfileWidget); - - // Init addIMAccountButton - // FIXME: This is copied from QtIMAccountManager ctor and should be - // factorized -#ifdef MULTIIMWRAPPER - QMenu * addIMAccountMenu = new QMenu(_ui->addIMAccountButton); - SAFE_CONNECT(addIMAccountMenu, SIGNAL(triggered(QAction *)), SLOT(addIMAccount(QAction *))); - - addIMAccountMenu->addAction(QIcon(":pics/protocols/msn.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMSN)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/aim.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolAIM)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/icq.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolICQ)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/yahoo.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolYahoo)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/jabber.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolJabber)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/google-talk.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolGoogleTalk)); - - addIMAccountMenu->addAction(QIcon(":pics/protocols/facebook.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolFaceBook)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/myspace.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolMySpace)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/skype.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolSkype)); - addIMAccountMenu->addAction(QIcon(":pics/protocols/twitter.png"), - QtEnumIMProtocol::toString(QtEnumIMProtocol::IMProtocolTwitter)); - - _ui->addIMAccountButton->setPopupMode(QToolButton::InstantPopup); - _ui->addIMAccountButton->setMenu(addIMAccountMenu); -#else - _ui->addIMAccountButton->hide(); -#endif - //// - - LANGUAGE_CHANGE(_imProfileWidget); - - //Widget connections - SAFE_CONNECT(_ui->aliasLineEdit, SIGNAL(returnPressed()), SLOT(aliasTextChanged())); - SAFE_CONNECT(_ui->avatarButton, SIGNAL(clicked()), SLOT(changeAvatarClicked())); - - //Init _accountFrame - _accountFrame = new QFrame(); - _accountFrameLayout = new QHBoxLayout(_accountFrame); - _accountFrameLayout->setMargin(0); - _accountFrameLayout->setSpacing(0); - - // Change size constraint to make sure the frame get resized when we add - // buttons to it - _accountFrameLayout->setSizeConstraint(QLayout::SetFixedSize); - _ui->accountScrollFrame->setChild(_accountFrame); - _ui->accountScrollFrame->setScrollStep(ACCOUNT_ICON_WIDTH / 2); - _imProfileWidget->setEnabled(false); -} - -QtIMProfileWidget::~QtIMProfileWidget() { - OWSAFE_DELETE(_ui); -} - -void QtIMProfileWidget::init(CUserProfile* cUserProfile, QtIMAccountMonitor* qtImAccountMonitor) { - _cUserProfile = cUserProfile; - _qtImAccountMonitor = qtImAccountMonitor; - - //UserProfile changed event connection - _cUserProfile->getUserProfile().profileChangedEvent += - boost::bind(&QtIMProfileWidget::profileChangedEventHandler, this); - - // IMAccountMonitor connections - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountAdded(QString)), - SLOT(addAccountButton(QString)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountRemoved(QString)), - SLOT(removeAccountButton(QString)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountUpdated(QString)), - SLOT(updateAccountButton(QString)), Qt::QueuedConnection); - - _imProfileWidget->setEnabled(true); - updateWidgets(); -} - -QWidget * QtIMProfileWidget::getWidget() const { - return _imProfileWidget; -} - -void QtIMProfileWidget::addAccountButton(QString imAccountId) { - // Check the button does not already exists - AccountIdToButton::const_iterator it = _accountIdToButton.find(imAccountId); - if (it != _accountIdToButton.end()) { - LOG_WARN("there is already a button for account " + imAccountId.toStdString()); - return; - } - - // Look for the account - IMAccount * imAccount = - _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId.toStdString()); - - if (!imAccount) { - LOG_WARN("Account does not exist"); - return; - } - - // Recreate all buttons. This is a bit brutal, but adding an account is not - // done very often, so it's not that bad. - // If it becomes necessary to just add the button, the - // addAccountButton(const IMAccount*) should be modified to insert the - // button at the correct position - createAccountButtons(); -} - -void QtIMProfileWidget::addAccountButton(const IMAccount* account) { - // Create button - - QString id = QString::fromStdString(account->getUUID()); - AccountIdToButton::const_iterator it = _accountIdToButton.find(id); - if (it != _accountIdToButton.end()) { - LOG_WARN("there is already a button for account " + id.toStdString()); - return; - } - - QToolButton* button = new QToolButton(_accountFrame); - button->setAutoRaise(true); - button->setIconSize(QSize(ACCOUNT_ICON_WIDTH, ACCOUNT_ICON_HEIGHT)); - button->setPopupMode(QToolButton::InstantPopup); - - // Add menu - QMenu* menu = new QMenu(button); - QAction* action = menu->addAction(QString::fromStdString(account->getLogin())); - action->setEnabled(false); - menu->addAction(action); - menu->addSeparator(); - - QtIMAccountPresenceMenuManager* manager = new QtIMAccountPresenceMenuManager(menu, *_cUserProfile, account->getUUID()); - manager->addPresenceActions(menu); - button->setMenu(menu); - - // Integrate button - _accountFrameLayout->addWidget(button); - - _accountIdToButton[id] = button; - updateAccountButton(id); -} - -void QtIMProfileWidget::removeAccountButton(QString imAccountId) { - AccountIdToButton::iterator it = _accountIdToButton.find(imAccountId); - if (it == _accountIdToButton.end()) { - LOG_WARN("No button exists for account with id " + imAccountId.toStdString()); - return; - } - OWSAFE_DELETE(it->second); - _accountIdToButton.erase(it); - updateAddIMAccountButton(); -} - -void QtIMProfileWidget::updateAccountButton(QString imAccountId) { - // Look for the corresponding button - AccountIdToButton::const_iterator it = _accountIdToButton.find(imAccountId); - if (it == _accountIdToButton.end()) { - // Button does not exist - LOG_WARN("There is no button for account " + imAccountId.toStdString()); - return; - } - QToolButton* button = it->second; - - // Look for the account - IMAccount * imAccount = - _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId.toStdString()); - - if (!imAccount) { - // Account does not exist, this probably means the account has been - // removed - LOG_DEBUG("Account " + imAccountId.toStdString() + " does not exist"); - return; - } - - // Get account info - EnumIMProtocol::IMProtocol imProtocol = imAccount->getProtocol(); - QString protocolString = QString::fromStdString(EnumIMProtocol::toString(imProtocol)); - QString login = QString::fromStdString(imAccount->getLogin()); - EnumPresenceState::PresenceState presenceState = imAccount->getPresenceState(); - - OWSAFE_DELETE(imAccount); - - QtIMAccountMonitor::IMAccountInfoAutoPtr info = _qtImAccountMonitor->getIMAccountInfo(imAccountId); - QtIMAccountMonitor::ConnectionState connectionState = info->connectionState(); - QString message = info->message(); - // Init button - QPixmap protocolPix = createAccountButtonPixmap(imProtocol, connectionState, presenceState); - button->setIcon(protocolPix); - - QString toolTip = tr("%1 (%2)\n%3", "%1 is login, %2 is protocol, %3 is status") - .arg(login) - .arg(protocolString) - .arg(message); - button->setToolTip(toolTip); -} - -void QtIMProfileWidget::changeAvatarClicked() { - QtProfileDetails qtProfileDetails(*_cUserProfile, _cUserProfile->getUserProfile(), _imProfileWidget, tr("Edit My Profile")); - //TODO UserProfile must be updated if QtProfileDetails was accepted - qtProfileDetails.changeUserProfileAvatar(); - updateAvatar(); -} - -void QtIMProfileWidget::updateWidgets() { - if (!_cUserProfile) { - return; - } - - if (!_cUserProfile->getUserProfile().getAlias().empty()) { - _ui->aliasLineEdit->setText(QString::fromUtf8(_cUserProfile->getUserProfile().getAlias().c_str())); - } - - //aliasTextChanged(); - - updateAvatar(); - - createAccountButtons(); -} - -void QtIMProfileWidget::createAccountButtons() { - // Remove existing buttons - resetAccountButton(); - - // Sort accounts, using the same order as the meta presence - IMAccountList imAccountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); - QtIMAccountHelper::QtIMAccountPtrVector imAccountPtrVector; - QtIMAccountHelper::copyListToPtrVector(imAccountList, &imAccountPtrVector); - std::sort(imAccountPtrVector.begin(), imAccountPtrVector.end(), QtIMAccountHelper::compareIMAccountPtrs); - - // Updates IMAccounts icons status - QtIMAccountHelper::QtIMAccountPtrVector::const_iterator - it = imAccountPtrVector.begin(), - end = imAccountPtrVector.end(); - - for (; it!=end; ++it) { - addAccountButton(*it); - } - - updateAddIMAccountButton(); -} - -// FIXME: This is copied from QtIMAccountManager ctor and should be -// factorized -void QtIMProfileWidget::addIMAccount(QAction * action) { - QString protocolName = action->text(); - QtEnumIMProtocol::IMProtocol imProtocol = QtEnumIMProtocol::toIMProtocol(protocolName); - QtIMAccountSettings(_cUserProfile->getUserProfile(), imProtocol, _imProfileWidget); -} - -void QtIMProfileWidget::updateAvatar() { - std::string backgroundPixmapFilename = ":/pics/avatar_background.png"; - std::string foregroundPixmapData = _cUserProfile->getUserProfile().getIcon().getData(); - - _ui->avatarButton->setIcon(PixmapMerging::merge(foregroundPixmapData, backgroundPixmapFilename)); -} - -void QtIMProfileWidget::updateAddIMAccountButton() { - IMAccountList imAccountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); - if (imAccountList.size() >= 2) { - _ui->addIMAccountButton->setToolButtonStyle(Qt::ToolButtonIconOnly); - } else { - _ui->addIMAccountButton->setToolButtonStyle(Qt::ToolButtonTextBesideIcon); - } - -} - -void QtIMProfileWidget::showImAccountManager() { - QtIMAccountManager imAccountManager(_cUserProfile->getUserProfile(), - true, _imProfileWidget); -} - -void QtIMProfileWidget::aliasTextChanged() { - //Update alias text - std::string alias(_ui->aliasLineEdit->text().toUtf8().constData()); - _cUserProfile->getUserProfile().setAlias(alias, NULL); - - _ui->aliasLineEdit->update(); -} - -void QtIMProfileWidget::profileChangedEventHandler() { - typedef ThreadEvent0 MyThreadEvent; - MyThreadEvent * event = new MyThreadEvent(boost::bind(&QtIMProfileWidget::updateWidgets, this)); - PFactory::postEvent(event); -} - -void QtIMProfileWidget::languageChanged() { - _ui->retranslateUi(_imProfileWidget); - updateWidgets(); -} - -void QtIMProfileWidget::resetAccountButton() -{ - AccountIdToButton::iterator - buttonIt = _accountIdToButton.begin(), - buttonEnd = _accountIdToButton.end(); - for (; buttonIt!=buttonEnd; ++buttonIt) { - delete buttonIt->second; - } - _accountIdToButton.clear(); -} - -void QtIMProfileWidget::reset() -{ - resetAccountButton(); - - _cUserProfile = 0; - _qtImAccountMonitor = 0; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtIMProfileWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,122 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTIMPROFILEWIDGET_H -#define OWQTIMPROFILEWIDGET_H - -#include -#include - -#include - -#include - -class CWengoPhone; -class CUserProfile; -class QtIMAccountMonitor; - -class QAction; -class QFrame; -class QHBoxLayout; -class QToolButton; -class QWidget; - -namespace Ui { class IMProfileWidget; } - -/** - * Shows a summary of the user profile + its IM accounts. - * - * Inside the profile bar at the top of the main window. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class QtIMProfileWidget : public QObject, public Trackable { - Q_OBJECT -public: - QtIMProfileWidget(QWidget * parent); - - ~QtIMProfileWidget(); - - QWidget * getWidget() const; - - void init(CUserProfile*, QtIMAccountMonitor*); - - void resetAccountButton(); - -public Q_SLOTS: - void addAccountButton(QString imAccountId); - - void removeAccountButton(QString imAccountId); - - void updateAccountButton(QString imAccountId); - - void reset(); - - -private Q_SLOTS: - - void changeAvatarClicked(); - - void aliasTextChanged(); - - void languageChanged(); - - void addIMAccount(QAction * action); - -private: - void addAccountButton(const IMAccount* imAccount); - - /** - * @see UserProfile::profileChangedEvent - */ - void profileChangedEventHandler(); - - void updateAvatar(); - - void createAccountButtons(); - - /** - * Internal code factorization. - */ - void showImAccountManager(); - - void updateWidgets(); - - /** - * Show/hide text on the IM account button depending on the number of IM - * accounts - */ - void updateAddIMAccountButton(); - - Ui::IMProfileWidget * _ui; - QFrame * _accountFrame; - QHBoxLayout * _accountFrameLayout; - - typedef std::map AccountIdToButton; - AccountIdToButton _accountIdToButton; - - QWidget * _imProfileWidget; - - CUserProfile * _cUserProfile; - - QtIMAccountMonitor* _qtImAccountMonitor; -}; - -#endif //OWQTIMPROFILEWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,513 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtProfileBar.h" - -#include "QtIMProfileWidget.h" -#include "QtEventWidget.h" -#include "QtCreditWidget.h" - -#include -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include - -#include -#include -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -static const char* STATUS_LABEL_OFF_TEMPLATE = ":/pics/profilebar/bar_start_status_%1.png"; -static const char* STATUS_LABEL_ON_TEMPLATE = ":/pics/profilebar/bar_on_start_status_%1.png"; - -// These constants are used to find the position of the state "ball" in the -// profilebar pixmap -static const int STATUS_LABEL_CENTERX = 26; -static const int STATUS_LABEL_CENTERY = 32; -static const int STATUS_LABEL_RADIUS = 10; - -// Defines position of the expand indicator in the picture. used in -// createPixmapWithExpandIndicator -static const int EXPAND_INDICATOR_OFFSET = 4; - - -/** - * This helper functions blit an expand indicator (or contract if @expand is - * false) over the pixmap whose name is @name - */ -static QPixmap createPixmapWithExpandIndicator(const QString& name, bool expand) { - QPixmap bg(":/pics/profilebar/" + name); - - QString indicatorName; - if (expand) { - indicatorName = "indicator_expand.png"; - } else { - indicatorName = "indicator_contract.png"; - } - QPixmap indicator(":/pics/profilebar/" + indicatorName); - - QPainter painter(&bg); - - int top = (bg.height() - indicator.height()) / 2; - painter.drawPixmap(EXPAND_INDICATOR_OFFSET, top, indicator); - - return bg; -} - - -QtProfileBar::QtProfileBar(QWidget * parent) - : QFrame(parent), - _cUserProfile(0), - _cWengoPhone(0), - _qtImAccountMonitor(0) { - - setSizePolicy(QSizePolicy::Expanding, QSizePolicy::Fixed); - QVBoxLayout* mainLayout = new QVBoxLayout(this); - mainLayout->setMargin(0); - mainLayout->setSpacing(0); - - //The layout containing our three "labels" (status, nickname and credit) - QHBoxLayout* labelLayout = new QHBoxLayout(); - labelLayout->setMargin(0); - labelLayout->setSpacing(0); - - mainLayout->addLayout(labelLayout); - - //The status widget - _statusLabel = new WengoStyleLabel(this); - _statusLabel->setToolTip(tr("Click here to change your status")); - _statusLabel->setSizePolicy(QSizePolicy::Fixed, QSizePolicy::Fixed); - - //Nickname label - _nicknameLabel = new WengoStyleLabel(this, WengoStyleLabel::Normal); -#ifdef DISABLE_VOICE_MAIL - _nicknameLabel->setPixmaps( - QPixmap(), //no start - createPixmapWithExpandIndicator("bar_end.png", true), //end - //createPixmapWithExpandIndicator("bar_separator.png", true), //end - QPixmap(":/pics/profilebar/bar_fill.png"), //fill - QPixmap(), //no start - //createPixmapWithExpandIndicator("bar_on_separator_left.png", false), //end - createPixmapWithExpandIndicator("bar_end.png", false), //end - QPixmap(":/pics/profilebar/bar_fill.png") //fill - ); -#else - _nicknameLabel->setPixmaps( - QPixmap(), //no start - createPixmapWithExpandIndicator("bar_separator.png", true), //end - QPixmap(":/pics/profilebar/bar_fill.png"), //fill - QPixmap(), //no start - createPixmapWithExpandIndicator("bar_on_separator_left.png", false), //end - QPixmap(":/pics/profilebar/bar_fill.png") //fill - ); -#endif - _nicknameLabel->setTextColor(Qt::white); - - //The credit label - _creditLabel = new WengoStyleLabel(this); - _creditLabel->setPixmaps(QPixmap(), //no start - createPixmapWithExpandIndicator("bar_end.png", true), - QPixmap(":/pics/profilebar/bar_fill.png"), - QPixmap(), //no start - createPixmapWithExpandIndicator("bar_on_end.png", false), - QPixmap(":/pics/profilebar/bar_fill.png") - ); - _creditLabel->setTextColor(Qt::white); - - //Add the labels - labelLayout->addWidget(_statusLabel); - labelLayout->addWidget(_nicknameLabel); - labelLayout->addWidget(_creditLabel); - - //create internal widgets - _qtImProfileWidget = new QtIMProfileWidget(this); - _qtImProfileWidget->getWidget()->setVisible(false); - _qtImProfileWidget->getWidget()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - mainLayout->addWidget(_qtImProfileWidget->getWidget()); - - _creditWidget = new QtCreditWidget(this); - _creditWidget->getWidget()->setVisible(false); - _creditWidget->getWidget()->setSizePolicy(QSizePolicy::Preferred, QSizePolicy::Fixed); - mainLayout->addWidget(_creditWidget->getWidget()); - - //init label tracking vars - _currentLabel = 0; - _labelWidget[_nicknameLabel] = _qtImProfileWidget->getWidget(); - _labelWidget[_creditLabel] = _creditWidget->getWidget(); - //// - - //Objects connection - SAFE_CONNECT(_statusLabel, SIGNAL(clicked()), SLOT(statusClicked())); - SAFE_CONNECT(_nicknameLabel, SIGNAL(clicked()), SLOT(nicknameClicked())); - SAFE_CONNECT(_creditLabel, SIGNAL(clicked()), SLOT(creditClicked())); - - qRegisterMetaType("IMAccount"); - - SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoWengosEvent(float)), - SLOT(wsInfoWengosEventSlot(float)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoVoiceMailEvent(int)), - SLOT(wsInfoVoiceMailEventSlot(int)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(wsInfoLandlineNumberEvent(const QString &)), - SLOT(wsInfoLandlineNumberEventSlot(const QString &)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(wsCallForwardInfoEvent(const QString &)), - SLOT(wsCallForwardInfoEventSlot(const QString &)), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(this, SIGNAL(phoneLineCreatedEvent()), - SLOT(phoneLineCreatedEventSlot()), Qt::QueuedConnection); - -#ifdef DISABLE_VOICE_MAIL - _creditLabel->hide(); -#endif - - reset(); -} - -QtProfileBar::~QtProfileBar() { -} - -void QtProfileBar::init(CWengoPhone* cWengoPhone, CUserProfile* cUserProfile, QtIMAccountMonitor* qtImAccountMonitor) { - _cWengoPhone = cWengoPhone; - _cUserProfile = cUserProfile; - _qtImAccountMonitor = qtImAccountMonitor; - - // Init creditLabel - if (_cUserProfile->getUserProfile().hasWengoAccount()) { - _creditLabel->setText(QChar(0x20ac) + QString(" 0.00")); - } else { - _creditLabel->setText(tr("Voice mail")); - } - - // Init widgets - _qtImProfileWidget->init(_cUserProfile, _qtImAccountMonitor); - _creditWidget->init(cWengoPhone, &_cUserProfile->getUserProfile()); - - // Connect _cUserProfile - _cUserProfile->getUserProfile().wsInfoCreatedEvent += - boost::bind(&QtProfileBar::wsInfoCreatedEventHandler, this, _1, _2); - - _cUserProfile->getUserProfile().phoneLineCreatedEvent += - boost::bind(&QtProfileBar::phoneLineCreatedEventHandler, this, _1, _2); - - // Connect qtImAccountMonitor - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountAdded(QString)), - SLOT(updateStatusLabel()), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountRemoved(QString)), - SLOT(updateStatusLabel()), Qt::QueuedConnection); - SAFE_CONNECT_TYPE(_qtImAccountMonitor, SIGNAL(imAccountUpdated(QString)), - SLOT(updateStatusLabel()), Qt::QueuedConnection); - - //Check if events already occured - //FIXME: must not use model class - if (_cUserProfile->getUserProfile().getActivePhoneLine()) { - phoneLineCreatedEventHandler(_cUserProfile->getUserProfile(), *_cUserProfile->getUserProfile().getActivePhoneLine()); - } - - if (_cUserProfile->getUserProfile().getWsInfo()) { - wsInfoCreatedEventHandler(_cUserProfile->getUserProfile(), *_cUserProfile->getUserProfile().getWsInfo()); - } - //// - - updateStatusLabel(); - setEnabled(true); -} - -void QtProfileBar::reset() { - setEnabled(false); - _cUserProfile = 0; - _qtImAccountMonitor = 0; - - _statusLabel->setPixmaps( - QPixmap(":/pics/profilebar/bar_start_status_offline.png"), - QPixmap(), - QPixmap(), - QPixmap(":/pics/profilebar/bar_on_start_status_offline.png"), - QPixmap(), - QPixmap() - ); - - _nicknameLabel->setText(""); - _creditLabel->setText(""); - - _qtImProfileWidget->reset(); -} - -void QtProfileBar::updateStatusLabel() { - if(_cUserProfile) - { - // Create pixmap - IMAccountList accountList = _cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); - QtPresencePixmapHelper helper(accountList); - QPixmap off = helper.createPixmap(STATUS_LABEL_OFF_TEMPLATE, - STATUS_LABEL_CENTERX, - STATUS_LABEL_CENTERY, - STATUS_LABEL_RADIUS); - QPixmap on = helper.createPixmap(STATUS_LABEL_ON_TEMPLATE, - STATUS_LABEL_CENTERX, - STATUS_LABEL_CENTERY, - STATUS_LABEL_RADIUS); - - _statusLabel->setPixmaps(off, - QPixmap(), //no end - QPixmap(), //no fill - on, - QPixmap(), //no end - QPixmap() - ); //no fill - _statusLabel->update(); - - // Sort account using the same order as in the status pixmap - QtIMAccountHelper::QtIMAccountPtrVector vector; - QtIMAccountHelper::copyListToPtrVector(accountList, &vector); - std::sort(vector.begin(), vector.end(), QtIMAccountHelper::compareIMAccountPtrs); - //// - - // Create tooltip - QStringList tooltipLines; - QtIMAccountHelper::QtIMAccountPtrVector::const_iterator - it = vector.begin(), - end = vector.end(); - - QList list; - - for (;it!=end; ++it) - { - const IMAccount* imAccount = *it; - if(!list.contains(imAccount->getUUID())) - { - QString login = QString::fromStdString(imAccount->getLogin()); - QString protocol = QString::fromStdString( EnumIMProtocol::toString(imAccount->getProtocol()) ); - QString id = QString::fromStdString(imAccount->getUUID()); - QtIMAccountMonitor::IMAccountInfoAutoPtr info = _qtImAccountMonitor->getIMAccountInfo(id); - - if(info.get()) - { - QString line = QString("%1 (%2): %3").arg(login).arg(protocol).arg(info->message()); - tooltipLines.append(line); - } - list.append(imAccount->getUUID()); - } - } - _statusLabel->setToolTip(tooltipLines.join("
\n")); - } -} - -void QtProfileBar::statusClicked() { - - // no presence when user got a SIPAccount without presence and no IMAccount - if (_cUserProfile) { - - UserProfile & userProfile = _cUserProfile->getUserProfile(); - SipAccount * sipAccount = userProfile.getSipAccount(); - - if (userProfile.getIMAccountManager().getIMAccountListCopy().size() <= 1) { - if (!sipAccount /*|| !sipAccount->isPIMEnabled()*/) { - return; - } - } - } - //// - - // by default we crete the menu - createStatusMenu(); -} - -void QtProfileBar::nicknameClicked() { - toggleLabel(_nicknameLabel); -} - -void QtProfileBar::creditClicked() { - toggleLabel(_creditLabel); -} - -void QtProfileBar::toggleLabel(WengoStyleLabel* label) { - setUpdatesEnabled(false); - Q_ASSERT(_cUserProfile); - Q_ASSERT(label); - if (_currentLabel) { - // Hide current - _currentLabel->setSelected(false); - _labelWidget[_currentLabel]->hide(); - } - - if (label == _currentLabel) { - // Clicked on current, no more _currentLabel - _currentLabel = 0; - } else { - // Clicked on another label, there is a new _currentLabel - label->setSelected(true); - Q_ASSERT(_labelWidget.contains(label)); - - // Make sure all internal widgets are at the same height - // Only do so for wengo accounts because in the case of a SIP account, - // the credit widget is quite empty - if (_cUserProfile->getUserProfile().hasWengoAccount()) { - int imProfileHeight = _qtImProfileWidget->getWidget()->minimumSizeHint().height(); - int creditHeight = _creditWidget->getWidget()->minimumSizeHint().height(); - int height = qMax(imProfileHeight, creditHeight); - _qtImProfileWidget->getWidget()->setFixedHeight(height); - _creditWidget->getWidget()->setFixedHeight(height); - } - - _labelWidget[label]->show(); - _currentLabel = label; - } - - setUpdatesEnabled(true); -} - -void QtProfileBar::createStatusMenu() { - QMenu* menu = new QMenu(this); - QtPresenceMenuManager* manager = new QtPresenceMenuManager(menu, - &_cWengoPhone->getCUserProfileHandler(), - dynamic_cast(_cWengoPhone->getPresentation()) - ); - - QAction* action = menu->addAction(tr("Set global presence to:")); - action->setEnabled(false); - manager->addPresenceActions(menu); - - QPoint p = _statusLabel->pos(); - p.setY(p.y() + _statusLabel->rect().bottom() - 18); - menu->popup(mapToGlobal(p)); -} - -void QtProfileBar::wsInfoCreatedEventHandler(UserProfile & sender, WsInfo & wsInfo) { - wsInfo.wsInfoWengosEvent += boost::bind(&QtProfileBar::wsInfoWengosEventHandler, this, _1, _2, _3, _4); - wsInfo.wsInfoVoiceMailEvent += boost::bind(&QtProfileBar::wsInfoVoiceMailEventHandler, this, _1, _2, _3, _4); - wsInfo.wsInfoLandlineNumberEvent += boost::bind(&QtProfileBar::wsInfoLandlineNumberEventHandler, this, _1, _2, _3, _4); - wsInfo.wsCallForwardInfoEvent += boost::bind(&QtProfileBar::wsCallForwardInfoEventHandler, this, _1, _2, _3, _4, _5, _6, _7, _8); - - wsInfo.getWengosCount(true); - wsInfo.getUnreadVoiceMail(true); - wsInfo.getCallForwardInfo(true); - wsInfo.getLandlineNumber(true); - wsInfo.execute(); -} - -void QtProfileBar::wsInfoWengosEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, float wengos) { - if (status == WsInfo::WsInfoStatusOk) { - wsInfoWengosEvent(wengos); - } -} - -void QtProfileBar::wsInfoVoiceMailEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, int voicemail) { - if (status == WsInfo::WsInfoStatusOk) { - wsInfoVoiceMailEvent(voicemail); - } -} - -void QtProfileBar::wsInfoLandlineNumberEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string number) { - if (status == WsInfo::WsInfoStatusOk) { - wsInfoLandlineNumberEvent(QString::fromStdString(number)); - } -} - -void QtProfileBar::wsCallForwardInfoEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, - WsInfo::WsInfoCallForwardMode mode, bool voicemail, std::string dest1, std::string dest2, std::string dest3) { - - if (status == WsInfo::WsInfoStatusOk) { - - switch(mode) { - case WsInfo::WsInfoCallForwardModeVoicemail: - wsCallForwardInfoEvent(tr("active") + " (" + tr("voicemail") + ")"); - break; - case WsInfo::WsInfoCallForwardModeNumber: - wsCallForwardInfoEvent(tr("active") + " (" + QString::fromStdString(dest1) + ")"); - break; - case WsInfo::WsInfoCallForwardModeDisabled: - wsCallForwardInfoEvent(tr("inactive")); - break; - case WsInfo::WsInfoCallForwardModeUnauthorized: - wsCallForwardInfoEvent(tr("unauthorized")); - break; - } - } -} - -void QtProfileBar::phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine) { - phoneLineCreatedEvent(); -} - -void QtProfileBar::phoneLineCreatedEventSlot() { - if(_cUserProfile) - { - _nicknameLabel->setText(" " + QString::fromLocal8Bit(_cUserProfile->getUserProfile().getSipAccount()->getDisplayName().c_str())); - } -} - -void QtProfileBar::paintEvent(QPaintEvent * event) { - if (_currentLabel) { - QRect r = rect(); - - QLinearGradient lg(QPointF(1, r.top()), QPointF(1, r.bottom())); - - lg.setColorAt(0, palette().color(QPalette::Window)); - QColor dest = palette().color(QPalette::Window); - - float red = ((float) dest.red()) / 1.3f; - float blue = ((float) dest.blue()) / 1.3f; - float green = ((float) dest.green()) / 1.3f; - - dest = QColor((int) red, (int) green, (int) blue); - lg.setColorAt(1, dest); - - QPainter painter(this); - painter.fillRect(r, QBrush(lg)); - painter.end(); - } else { - QFrame::paintEvent(event); - } -} - -void QtProfileBar::wsInfoWengosEventSlot(float wengos) { - //0x20ac is the unicode code for the euros currency symbol - _creditLabel->setText(QString() + QChar(0x20ac) + QString(" %1").arg(wengos)); -} - -void QtProfileBar::wsInfoVoiceMailEventSlot(int count) { - // FIXME: Show VoiceMail info somewhere -} - -void QtProfileBar::wsInfoLandlineNumberEventSlot(const QString & number) { - // FIXME: Show landline number somewhere -} - -void QtProfileBar::wsCallForwardInfoEventSlot(const QString & mode) { - _creditWidget->setCallForwardMode(mode); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/profilebar/QtProfileBar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTPROFILEBAR_H -#define QTPROFILEBAR_H - -#include - -#include -#include - -#include - -#include -#include -#include - -class QGridLayout; - -class QtIMAccountMonitor; -class QtIMProfileWidget; -class QtEventWidget; -class QtCreditWidget; - -class CHistory; -class CUserProfile; -class CWengoPhone; -class ConnectHandler; -class IPhoneLine; -class PresenceHandler; -class UserProfile; -class WengoStyleLabel; - -/** - * Profile bar: shows the user profile at the top of the main window. - * - * TODO refactor, class too big, no .ui file ect... - * - * @author Mathieu Stute - * @author Tanguy Krotoff - */ -class QtProfileBar : public QFrame, public Trackable { - Q_OBJECT -public: - - QtProfileBar(QWidget * parent); - - void init(CWengoPhone*, CUserProfile*, QtIMAccountMonitor*); - - void reset(); - - ~QtProfileBar(); - -public Q_SLOTS: - - void statusClicked(); - - void nicknameClicked(); - - void creditClicked(); - -Q_SIGNALS: - void wsInfoWengosEvent(float wengos); - void wsInfoVoiceMailEvent(int count); - void wsInfoLandlineNumberEvent(const QString & number); - void wsCallForwardInfoEvent(const QString & mode); - void phoneLineCreatedEvent(); - -private Q_SLOTS: - - void wsInfoWengosEventSlot(float wengos); - void wsInfoVoiceMailEventSlot(int count); - void wsInfoLandlineNumberEventSlot(const QString & number); - void wsCallForwardInfoEventSlot(const QString & mode); - void phoneLineCreatedEventSlot(); - - void updateStatusLabel(); - -private: - - /** - * Initializes widgets content. - */ - void init(); - - void wsInfoCreatedEventHandler(UserProfile & sender, WsInfo & wsInfo); - - void wsInfoWengosEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, float wengos); - - void wsInfoVoiceMailEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, int voicemail); - - void wsInfoLandlineNumberEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, std::string number); - - void wsCallForwardInfoEventHandler(WsInfo & sender, int id, WsInfo::WsInfoStatus status, - WsInfo::WsInfoCallForwardMode mode, bool voicemail, std::string dest1, std::string dest2, std::string dest3); - - void phoneLineCreatedEventHandler(UserProfile & sender, IPhoneLine & phoneLine); - - void createStatusMenu(); - - void paintEvent(QPaintEvent * event); - - void toggleLabel(WengoStyleLabel*); - - WengoStyleLabel * _statusLabel; - - WengoStyleLabel * _nicknameLabel; - - WengoStyleLabel * _creditLabel; - - WengoStyleLabel * _currentLabel; - - QMap _labelWidget; - - QtIMProfileWidget * _qtImProfileWidget; - - QtCreditWidget * _creditWidget; - - QPixmap _statusPixmap; - - CUserProfile * _cUserProfile; - - CWengoPhone * _cWengoPhone; - - QtIMAccountMonitor* _qtImAccountMonitor; -}; - -#endif //QTPROFILEBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtAbout.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtAbout.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtAbout.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtAbout.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,70 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtAbout.h" - -#include "ui_AboutWindow.h" - -#include - -#include -#include -#include - -#include - -QtAbout::QtAbout(QWidget * parent) { - _aboutDialog = new QDialog(parent); - - _ui = new Ui::AboutWindow(); - _ui->setupUi(_aboutDialog); - - /* Set a formatted text to the build id label. */ - _ui->wengoPhoneBuildIdStringLabel->setText("" + - QString(QObject::tr("@product@")) + " " + - QString(WengoPhoneBuildId::getVersion()) + " rev" + - QString(WengoPhoneBuildId::getSvnRevision()) + "-" + - QString::number(WengoPhoneBuildId::getBuildId()) + ""); - - QFile file(":/AUTHORS"); - if (file.open(QFile::ReadOnly)) { - QString authors = QString::fromUtf8(file.readAll()); - file.close(); - _ui->authorsTextEdit->setPlainText(authors); - } else { - LOG_ERROR("couldn't locate file=" + file.fileName().toStdString()); - } - - /* Set a formatted text to dependencies version label. */ - _ui->versionLabel->setText("Qt: " + QString(qVersion()) + "
" + - "Boost: " + QString(WengoPhoneBuildId::getBoostVersion()) + "
" + - "LibPurple: " + QString(WengoPhoneBuildId::getPurpleVersion()) + "
" + - "GLib: " + QString(WengoPhoneBuildId::getGLibVersion()) + "
" + - "cURL: " + QString(WengoPhoneBuildId::getCurlVersion()) + "
" + - "TinyXML: " + QString(WengoPhoneBuildId::getTinyXmlVersion()) + "
" + - "FFmpeg's libavcodec: " + QString(WengoPhoneBuildId::getAvcodecVersion()) -#ifndef OS_MACOSX - + "
" + "PortAudio: " + QString(WengoPhoneBuildId::getPortaudioVersion()) -#endif - ); -} - -QtAbout::~QtAbout() { - OWSAFE_DELETE(_ui); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtAbout.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtAbout.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtAbout.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtAbout.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,52 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTABOUT_H -#define OWQTABOUT_H - -#include - -class QWidget; -class QDialog; -namespace Ui { class AboutWindow; } - -/** - * About dialog window: shows copyright, license, authors... - * - * @author Tanguy Krotoff - */ -class QtAbout : NonCopyable { -public: - - QtAbout(QWidget * parent); - - ~QtAbout(); - - QDialog * getWidget() const { - return _aboutDialog; - } - -private: - - Ui::AboutWindow * _ui; - - QDialog * _aboutDialog; -}; - -#endif //OWQTABOUT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,170 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtBrowserWidget.h" -#include "QtWengoPhone.h" - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include - -#include -#include -#include - -const QString ANCHOR_DIALPAD = "qutecom_dial"; -const QString ANCHOR_CONTACTLIST = "qutecom_phonebook"; -const QString ANCHOR_ADDCONTACT = "qutecom_addcontact"; -const QString ANCHOR_SECRET_PERMANENT = "qutecom_secret_permanent"; -const QString ANCHOR_SFR_FR = "qutecom_sfr_fr"; -const QString ANCHOR_MON_COMPTE = "qutecom_mon_compte"; -const QString ANCHOR_REPONDEUR = "qutecom_repondeur"; - -QtBrowserWidget::QtBrowserWidget(QtWengoPhone & qtWengoPhone) - : _qtWengoPhone(qtWengoPhone) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - base_path = QString::fromStdString(config.getResourcesDir()); -#if defined (OS_WINDOWS) - base_path = base_path.replace("\\","/"); -#endif - - _qtBrowser = new QWebView(_qtWengoPhone.getWidget()); - _qtBrowser->setContextMenuPolicy(Qt::NoContextMenu); - _qtBrowser ->page()->mainFrame()->setScrollBarPolicy(Qt::Horizontal,Qt::ScrollBarAlwaysOff); - _qtBrowser ->page()->mainFrame()->setScrollBarPolicy(Qt::Vertical,Qt::ScrollBarAlwaysOff); - - //SAFE_CONNECT(&_qtWengoPhone, SIGNAL(userProfileDeleted()), SLOT(slotUserProfileDeleted())); - - _qtBrowser ->page()->setLinkDelegationPolicy(QWebPage::DelegateAllLinks); - connect(_qtBrowser,SIGNAL(linkClicked(const QUrl &)),this,SLOT(linkClicked_slot(const QUrl &))); -} - -QtBrowserWidget::~QtBrowserWidget() -{ - OWSAFE_DELETE(_qtBrowser); -} - -QWidget * QtBrowserWidget::getWidget() const -{ - return _qtBrowser; -} - -void QtBrowserWidget::slotUserProfileDeleted() -{ - _qtBrowser->load(QUrl(base_path + "/webpages/windows/sip.html")); -} - -void QtBrowserWidget::loadProgressURL() -{ - _qtBrowser->load(QUrl(base_path + "/webpages/windows/loading.html")); -} - -void QtBrowserWidget::loadDefaultURL() -{ - _qtBrowser->load(QUrl(base_path + "/webpages/windows/sip.html")); -} - -void QtBrowserWidget::linkClicked_slot(const QUrl & url) -{ - QString surl = url.toString(); - - if(surl.contains(ANCHOR_CONTACTLIST)) - { - //QStringList list = surl.split(ANCHOR_CONTACTLIST); - //if(list.count() == 2) - //{ - openwengo_phonebook_signal(); - //} - } - /*else if(surl.contains(ANCHOR_HISTORY)) - { - QStringList list = surl.split(ANCHOR_CONTACTLIST); - if(list.count() == 2) - { - openwengo_log_signal(); - } - } - else if(surl.contains(ANCHOR_CONFIGURATION)) - { - QStringList list = surl.split(ANCHOR_CONTACTLIST); - if(list.count() == 2) - { - openwengo_configuration_signal(); - } - }*/ - else if(surl.contains(ANCHOR_DIALPAD)) - { - //QStringList list = surl.split(ANCHOR_CONTACTLIST); - //if(list.count() == 2) - //{ - openwengo_dial_signal(); - //} - } - - else if(surl.contains(ANCHOR_ADDCONTACT)) - { - //QStringList list = surl.split(ANCHOR_CONTACTLIST); - //if(list.count() == 2) - //{ - openwengo_addcontact_signal(); - //} - } - /*else if(surl.contains(ANCHOR_SELFCARE)) - { - QStringList list = surl.split(ANCHOR_CONTACTLIST); - if(list.count() == 2) - { - openwengo_selfcare_signal(); - } - } - else if(surl.contains(ANCHOR_FORUM)) - { - QStringList list = surl.split(ANCHOR_CONTACTLIST); - if(list.count() == 2) - { - openwengo_forum_signal(); - } - } - else if(surl.contains(ANCHOR_SHOWSMARTDIRECTORY)) - { - //QStringList list = surl.split(ANCHOR_CONTACTLIST); - //if(list.count() == 2) - //{ - openwengo_smartdirectory_signal(); - //} - }*/ - else - { - WebBrowser::openUrl(url.toString().toStdString()); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtBrowserWidget.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTBROWSERWIDGET_H -#define OWQTBROWSERWIDGET_H - -#include - -#include - -#include - -#include -#include -#include - -class QtWengoPhone; - -/** - * Embedded HTML browser widget inside the main window. - * - * Works only under Windows for the moment using a ActiveX control. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ - -class QtWebPage :public QWebPage -{ -protected: - bool acceptNavigationRequest(QWebFrame *frame, const QNetworkRequest &request, NavigationType type) - { - //if(type == QWebPage::NavigationTypeOther) - // QDesktopServices::openUrl(request.url()); - - return QWebPage::acceptNavigationRequest(frame,request,type); - } -}; - -class QtBrowserWidget : public QObject, NonCopyable { - Q_OBJECT -public: - - QtBrowserWidget(QtWengoPhone & qtWengoPhone); - - ~QtBrowserWidget(); - - QWidget * getWidget() const; - - /** - * Loads the default URL, loaded at startup. - */ - void loadDefaultURL(); - - /** - * Loads the URL when the user is connecting. - */ - void loadProgressURL(); - -private Q_SLOTS: - - /** - * delete the browser. - */ - void slotUserProfileDeleted(); - - void linkClicked_slot(const QUrl & url); - -private: - - QtWengoPhone & _qtWengoPhone; - - QWebView * _qtBrowser; - - QString base_path; - -Q_SIGNALS: - void openwengo_phonebook_signal(); - void openwengo_log_signal(); - void openwengo_configuration_signal(); - void openwengo_dial_signal(); - void openwengo_addcontact_signal(); - void openwengo_selfcare_signal(); - void openwengo_forum_signal(); - void openwengo_smartdirectory_signal(); - void openwengo_secret_permanent_signal(); -}; - -#endif //OWQTBROWSERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtDialpad.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtDialpad.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtDialpad.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtDialpad.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,308 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtDialpad.h" - -#include "ui_DialpadWidget.h" - -#include "QtSVGDialpad.h" -#include "QtWengoPhone.h" - -#include -#include -#include - -#include - -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include - -const char* DEFAULT_THEME = "default"; -const char* JUNGLE_THEME = "Jungle"; - -QtDialpad::QtDialpad(CDtmfThemeManager & cDtmfThemeManager, QtWengoPhone * qtWengoPhone) - : QWidget(NULL), - _cDtmfThemeManager(cDtmfThemeManager) - { - - _qtWengoPhone = qtWengoPhone; - - _ui = new Ui::DialpadWidget(); - _ui->setupUi(this); - - SAFE_CONNECT(_ui->zeroButton, SIGNAL(clicked()), SLOT(zeroButtonClicked())); - SAFE_CONNECT(_ui->oneButton, SIGNAL(clicked()), SLOT(oneButtonClicked())); - SAFE_CONNECT(_ui->twoButton, SIGNAL(clicked()), SLOT(twoButtonClicked())); - SAFE_CONNECT(_ui->threeButton, SIGNAL(clicked()), SLOT(threeButtonClicked())); - SAFE_CONNECT(_ui->fourButton, SIGNAL(clicked()), SLOT(fourButtonClicked())); - SAFE_CONNECT(_ui->fiveButton, SIGNAL(clicked()), SLOT(fiveButtonClicked())); - SAFE_CONNECT(_ui->sixButton, SIGNAL(clicked()), SLOT(sixButtonClicked())); - SAFE_CONNECT(_ui->sevenButton, SIGNAL(clicked()), SLOT(sevenButtonClicked())); - SAFE_CONNECT(_ui->eightButton, SIGNAL(clicked()), SLOT(eightButtonClicked())); - SAFE_CONNECT(_ui->nineButton, SIGNAL(clicked()), SLOT(nineButtonClicked())); - SAFE_CONNECT(_ui->starButton, SIGNAL(clicked()), SLOT(starButtonClicked())); - SAFE_CONNECT(_ui->poundButton, SIGNAL(clicked()), SLOT(poundButtonClicked())); - - //add UpComboBox - SAFE_CONNECT(_ui->audioSmileysComboBox, SIGNAL(activated(const QString &)), - SLOT(setCurrentTheme(const QString &))); - SAFE_CONNECT(_ui->audioSmileysComboBox, SIGNAL(popupDisplayed()), - SLOT(refreshComboBox())); - - //add svg viewer - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyZeroSelected()), SLOT(zeroButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyOneSelected()), SLOT(oneButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyTwoSelected()), SLOT(twoButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyThreeSelected()), SLOT(threeButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyFourSelected()), SLOT(fourButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyFiveSelected()), SLOT(fiveButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keySixSelected()), SLOT(sixButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keySevenSelected()), SLOT(sevenButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyEightSelected()), SLOT(eightButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyNineSelected()), SLOT(nineButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyStarSelected()), SLOT(starButtonClicked())); - SAFE_CONNECT(_ui->qtSVGDialpad, SIGNAL(keyPoundSelected()), SLOT(poundButtonClicked())); - - setThemeMode(ThemeModeAll); - setFocusPolicy(Qt::StrongFocus); - - _ui->audioSmileysComboBox->hide(); -} - -QtDialpad::~QtDialpad() { - OWSAFE_DELETE(_ui); -} - -void QtDialpad::fillComboBox() { - _ui->audioSmileysComboBox->clear(); - - //comboBox Construction - std::list themeList = _cDtmfThemeManager.getThemeList(); - - // Move DEFAULT_THEME to the beginning of the list - std::list::iterator it = std::find(themeList.begin(), themeList.end(), DEFAULT_THEME); - if (it != themeList.end()) { - themeList.erase(it); - themeList.push_front(DEFAULT_THEME); - } else { - LOG_WARN("Could find default theme '" + std::string(DEFAULT_THEME) + "'"); - } - //// - - for (std::list::const_iterator it = themeList.begin(); it != themeList.end(); ++it) { - std::string theme = *it; - - if (theme == DEFAULT_THEME && _themeMode == ThemeModeAudioSmileysOnly) { - // Skip default theme - continue; - } - - - - std::string icon = _cDtmfThemeManager.getDtmfTheme(theme)->getRepertory() + - _cDtmfThemeManager.getDtmfTheme(theme)->getImageFile(); - - _ui->audioSmileysComboBox->addItem(QIcon(QString::fromStdString(icon)), QString::fromStdString(theme), QVariant()); - - // Ugly workaround to insert a separator after the "default dialpad" entry - if (theme == DEFAULT_THEME) { - _ui->audioSmileysComboBox->addItem(""); - - QAbstractItemView* view = _ui->audioSmileysComboBox->view(); - QModelIndex index = view->model()->index(view->model()->rowCount() - 1, 0); - QFrame* separator = new QFrame(view); - separator->setFrameStyle(QFrame::HLine | QFrame::Sunken); - view->setIndexWidget(index, separator); - } - } -} - -void QtDialpad::refreshComboBox(){ - if (_cDtmfThemeManager.refreshDtmfThemes()) { - - //save current text - QString selectOne = _ui->audioSmileysComboBox->currentText(); - - //refill the combobox - fillComboBox(); - - //load current text with is new position (if possible) - int pos = _ui->audioSmileysComboBox->findText(selectOne); - if (pos != -1) { - _ui->audioSmileysComboBox->setCurrentIndex(pos); - } - } -} - -void QtDialpad::playTone(const std::string & tone) { - - _cDtmfThemeManager.playTone( - _ui->audioSmileysComboBox->currentText().toStdString(), - tone - ); - _qtWengoPhone->dialpad(tone); -} - -void QtDialpad::oneButtonClicked() { - playTone("1"); -} - -void QtDialpad::twoButtonClicked() { - playTone("2"); -} - -void QtDialpad::threeButtonClicked() { - playTone("3"); -} - -void QtDialpad::fourButtonClicked() { - playTone("4"); -} - -void QtDialpad::fiveButtonClicked() { - playTone("5"); -} - -void QtDialpad::sixButtonClicked() { - playTone("6"); -} - -void QtDialpad::sevenButtonClicked() { - playTone("7"); -} - -void QtDialpad::eightButtonClicked() { - playTone("8"); -} - -void QtDialpad::nineButtonClicked() { - playTone("9"); -} - -void QtDialpad::zeroButtonClicked() { - playTone("0"); -} - -void QtDialpad::starButtonClicked() { - playTone("*"); -} - -void QtDialpad::poundButtonClicked() { - playTone("#"); -} - -void QtDialpad::setCurrentTheme(const QString & newThemeName) { - // We don't want the user to select the separator - if (newThemeName.isEmpty()) { - _ui->audioSmileysComboBox->setCurrentIndex(_ui->audioSmileysComboBox->findText(DEFAULT_THEME)); - return; - } - - LOG_DEBUG(newThemeName.toStdString()); - - const DtmfTheme * newTheme = _cDtmfThemeManager.getDtmfTheme(newThemeName.toStdString()); - - if (newTheme->getDialpadMode() == DtmfTheme::svg) { - - //change theme - _ui->qtSVGDialpad->setNewTheme(newTheme->getRepertory()); - - //active QtSVGDialpad - _ui->stackedWidget->setCurrentWidget(_ui->svgDialpadPage); - - //force repaint - _ui->qtSVGDialpad->update(); - - } else { - _ui->stackedWidget->setCurrentWidget(_ui->classicDialpadPage); - } -} - -void QtDialpad::setThemeMode(ThemeMode themeMode) { - _themeMode = themeMode; - if (_themeMode == ThemeModeDefaultOnly) { - _ui->topFrame->hide(); - } else { - _ui->topFrame->show(); - fillComboBox(); - } - setCurrentTheme(_ui->audioSmileysComboBox->itemText(0)); -} - -void QtDialpad::keyPressEvent(QKeyEvent * event) -{ - switch( event->key() ) - { - case Qt::Key_0: - playTone("0"); - break; - case Qt::Key_1: - playTone("1"); - break; - case Qt::Key_2: - playTone("2"); - break; - case Qt::Key_3: - playTone("3"); - break; - case Qt::Key_4: - playTone("4"); - break; - case Qt::Key_5: - playTone("5"); - break; - case Qt::Key_6: - playTone("6"); - break; - case Qt::Key_7: - playTone("7"); - break; - case Qt::Key_8: - playTone("8"); - break; - case Qt::Key_9: - playTone("9"); - break; - case Qt::Key_Asterisk: - playTone("*"); - break; - case Qt::Key_Plus: - playTone("#"); - break; - case Qt::Key_Backspace: - _qtWengoPhone->dialpadBackspace(); - break; - case Qt::Key_Enter: - case Qt::Key_Return: - _qtWengoPhone->dialpadEnter(); - default: - QWidget::keyPressEvent(event); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtDialpad.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtDialpad.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtDialpad.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtDialpad.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,105 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTDIALPAD_H -#define OWQTDIALPAD_H - -#include - -#include - -#include - -class QtWengoPhone; -class CDtmfThemeManager; -class QtSVGDialpad; -class QStringList; -class UpQComboBox; - -namespace Ui { class DialpadWidget; } - -/** - * Dialpad widget: where the user clicks for DTMF. - * - * @author Tanguy Krotoff - */ -class QtDialpad : public QWidget, NonCopyable { - Q_OBJECT -public: - enum ThemeMode { ThemeModeAll, ThemeModeDefaultOnly, ThemeModeAudioSmileysOnly }; - - QtDialpad(CDtmfThemeManager & cDtmfThemeManager, QtWengoPhone * qtWengoPhone); - - ~QtDialpad(); - - void setThemeMode(ThemeMode); - -private Q_SLOTS: - - void oneButtonClicked(); - - void twoButtonClicked(); - - void threeButtonClicked(); - - void fourButtonClicked(); - - void fiveButtonClicked(); - - void sixButtonClicked(); - - void sevenButtonClicked(); - - void eightButtonClicked(); - - void nineButtonClicked(); - - void zeroButtonClicked(); - - void starButtonClicked(); - - void poundButtonClicked(); - - void setCurrentTheme(const QString & newThemeName); - - void refreshComboBox(); - -private: - - void fillComboBox(); - - void playTone(const std::string & tone); - - Ui::DialpadWidget * _ui; - - QtWengoPhone * _qtWengoPhone; - - CDtmfThemeManager & _cDtmfThemeManager; - - QtSVGDialpad * _qtSVGDialpad; - - UpQComboBox * _audioSmileysComboBox; - - ThemeMode _themeMode; - -protected: - void keyPressEvent(QKeyEvent * event); -}; - -#endif //OWQTDIALPAD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,173 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtEnumIMProtocol.h" - -#include -#include - -#include - -typedef std::map ProtocolMap; -static ProtocolMap _protocolMap; - -static void init() { - if (!_protocolMap.empty()) { - return; - } - _protocolMap[QtEnumIMProtocol::IMProtocolMSN] = "MSN"; - _protocolMap[QtEnumIMProtocol::IMProtocolYahoo] = "Yahoo"; - _protocolMap[QtEnumIMProtocol::IMProtocolAIM] = "AIM"; - _protocolMap[QtEnumIMProtocol::IMProtocolICQ] = "ICQ"; - _protocolMap[QtEnumIMProtocol::IMProtocolJabber] = "Jabber"; - _protocolMap[QtEnumIMProtocol::IMProtocolGoogleTalk] = "GoogleTalk"; - _protocolMap[QtEnumIMProtocol::IMProtocolSIPSIMPLE] = "SIP/SIMPLE"; - _protocolMap[QtEnumIMProtocol::IMProtocolWengo] = "Wengo"; - - _protocolMap[QtEnumIMProtocol::IMProtocolFaceBook] = "FaceBook"; - _protocolMap[QtEnumIMProtocol::IMProtocolMySpace] = "MySpace"; - _protocolMap[QtEnumIMProtocol::IMProtocolSkype] = "Skype"; - _protocolMap[QtEnumIMProtocol::IMProtocolTwitter] = "Twitter"; -} - -QString QtEnumIMProtocol::toString(IMProtocol protocol) { - init(); - QString tmp = _protocolMap[protocol]; - if (tmp.isEmpty()) { - LOG_FATAL("unknown IMProtocol=" + String::fromNumber(protocol)); - } - return tmp; -} - -QtEnumIMProtocol::IMProtocol QtEnumIMProtocol::toIMProtocol(const QString & protocol) { - init(); - for (ProtocolMap::const_iterator it = _protocolMap.begin(); - it != _protocolMap.end(); ++it) { - - if ((*it).second == protocol) { - return (*it).first; - } - } - - LOG_FATAL("unknown protocol=" + protocol.toStdString()); - return IMProtocolUnknown; -} - -QtEnumIMProtocol::IMProtocol QtEnumIMProtocol::toIMProtocol(EnumIMProtocol::IMProtocol protocol) { - IMProtocol imProtocol = IMProtocolUnknown; - - switch (protocol) { - case EnumIMProtocol::IMProtocolMSN: - imProtocol = IMProtocolMSN; - break; - - case EnumIMProtocol::IMProtocolYahoo: - imProtocol = IMProtocolYahoo; - break; - - case EnumIMProtocol::IMProtocolAIM: - imProtocol = IMProtocolAIM; - break; - - case EnumIMProtocol::IMProtocolICQ: - imProtocol = IMProtocolICQ; - break; - - case EnumIMProtocol::IMProtocolJabber: - imProtocol = IMProtocolJabber; - break; - - case EnumIMProtocol::IMProtocolGoogleTalk: - imProtocol = IMProtocolGoogleTalk; - break; - - case EnumIMProtocol::IMProtocolSIPSIMPLE: - imProtocol = IMProtocolSIPSIMPLE; - break; - - case EnumIMProtocol::IMProtocolWengo: - imProtocol = IMProtocolWengo; - break; - - case EnumIMProtocol::IMProtocolFaceBook: - imProtocol = IMProtocolFaceBook; - break; - - case EnumIMProtocol::IMProtocolMySpace: - imProtocol = IMProtocolMySpace; - break; - - case EnumIMProtocol::IMProtocolSkype: - imProtocol = IMProtocolSkype; - break; - - case EnumIMProtocol::IMProtocolTwitter: - imProtocol = IMProtocolTwitter; - break; - - default: - LOG_FATAL("unknown IM protocol=" + String::fromNumber(protocol)); - } - - return imProtocol; -} - -EnumIMProtocol::IMProtocol QtEnumIMProtocol::toModelIMProtocol(IMProtocol protocol) { - switch (protocol) { - case IMProtocolUnknown: - return EnumIMProtocol::IMProtocolUnknown; - - case IMProtocolMSN: - return EnumIMProtocol::IMProtocolMSN; - - case IMProtocolYahoo: - return EnumIMProtocol::IMProtocolYahoo; - - case IMProtocolAIM: - return EnumIMProtocol::IMProtocolAIM; - - case IMProtocolICQ: - return EnumIMProtocol::IMProtocolICQ; - - case IMProtocolJabber: - case IMProtocolGoogleTalk: - return EnumIMProtocol::IMProtocolJabber; - - case IMProtocolSIPSIMPLE: - return EnumIMProtocol::IMProtocolSIPSIMPLE; - - case IMProtocolWengo: - return EnumIMProtocol::IMProtocolWengo; - - case IMProtocolFaceBook: - return EnumIMProtocol::IMProtocolFaceBook; - - case IMProtocolMySpace: - return EnumIMProtocol::IMProtocolMySpace; - - case IMProtocolSkype: - return EnumIMProtocol::IMProtocolSkype; - - case IMProtocolTwitter: - return EnumIMProtocol::IMProtocolTwitter; - } - - LOG_FATAL("unknown IM protocol=" + String::fromNumber(protocol)); - return EnumIMProtocol::IMProtocolUnknown; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtEnumIMProtocol.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,93 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTENUMIMPROTOCOL_H -#define OWQTENUMIMPROTOCOL_H - -#include - -#include - -#include - -/** - * Instant Messaging protocols. - * - * This class duplicates EnumIMProtocol because - * protocols at network level are not always the one that we want to show - * to the user. - * - * For example at network level there is no GoogleTalk protocol but just Jabber protocol; - * at graphical level there is a GoogleTalk protocol for the user because it's easier. - * - * @see EnumIMProtocol - * @author Philippe Bernery - * @author Tanguy Krotoff - */ -class QtEnumIMProtocol : NonCopyable { -public: - - enum IMProtocol { - IMProtocolUnknown, - IMProtocolMSN, - IMProtocolYahoo, - IMProtocolAIM, - IMProtocolICQ, - IMProtocolJabber, - IMProtocolGoogleTalk, - IMProtocolSIPSIMPLE, - IMProtocolWengo, - IMProtocolFaceBook, - IMProtocolMySpace, - IMProtocolSkype, - IMProtocolTwitter - }; - - /** - * Converts a protocol into a string. - * - * @return the string - */ - static QString toString(IMProtocol protocol); - - /** - * Converts a string into a protocol. - * - * @return the protocol - */ - static IMProtocol toIMProtocol(const QString & protocol); - - //static QPixmap getPixmap(IMProtocol protocol); - - /** - * Converts an EnumIMProtocol into a QtEnumIMProtocol. - * - * @return the protocol - */ - static IMProtocol toIMProtocol(EnumIMProtocol::IMProtocol protocol); - - /** - * Converts a QtEnumIMProtocol to an EnumIMProtocol. - * - * @return the protocol - */ - static EnumIMProtocol::IMProtocol toModelIMProtocol(IMProtocol protocol); -}; - -#endif //OWQTENUMIMPROTOCOL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtFactory.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtFactory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtFactory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtFactory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,230 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtFactory.h" - -#include "QtWengoPhone.h" -#include "QtWengoStyle.h" -#include "chat/QtChatHandler.h" -#include "contactlist/QtContactList.h" -#include "history/QtHistory.h" -#include "phoneline/QtPhoneLine.h" -#include "phonecall/QtPhoneCall.h" -#include "profile/QtUserProfile.h" -#include "profile/QtUserProfileHandler.h" -#include "webservices/sms/QtSms.h" -#include "webservices/softupdate/QtSoftUpdate.h" -#include "QtDialpad.h" - -#include -#include -#include -#include -#include - -#include - -#include -#include - -#include -#include - -#ifndef OS_WINDOWS - #include -#else - #include "WinApp.h" -#endif - -#if defined(OS_LINUX) -#include -#endif - -#if defined(OS_MACOSX) - #include "macosx/QtMacApplication.h" -#endif - -PFactory * PFactory::_factory = NULL; - -QtFactory::QtFactory(int & argc, char * argv[]) { -#if defined(OS_LINUX) - // FIXME: Disable Qt Glib event loop, because it conflicts with Gaim -// setenv("QT_NO_GLIB", "1", 1); -#endif - -#if defined(OS_MACOSX) - _app = new QtMacApplication(argc, argv); - - std::string qtPlugins = Path::getApplicationPrivateFrameworksDirPath() + - File::convertPathSeparators("plugins/"); - QCoreApplication::addLibraryPath(QString::fromStdString(qtPlugins)); -#else - -#ifndef OS_WINDOWS - _app = new QApplication(argc, argv); -#else - _app = new WinApp(argc, argv); -#endif - - QCoreApplication::addLibraryPath("."); -#endif - - Q_INIT_RESOURCE(qtutil); - - //QtWengoStyle - QtWengoStyle * qtWengoStyle = new QtWengoStyle(); - _app->setStyle(qtWengoStyle); - - //Filter for post event (=thread event) - ThreadEventFilter * threadEventFilter = new ThreadEventFilter(); - _app->installEventFilter(threadEventFilter); - - reset(); - _qtWengoPhone = NULL; - _qtUserProfileHandler = NULL; - - // Integrate QDesktopServices with WebBrowser, this way we can use the - // QLabel::openExternalLinks property. - QDesktopServices::setUrlHandler("http", this, "openUrl" ); - QDesktopServices::setUrlHandler("https", this, "openUrl" ); -} - -void QtFactory::processEvents() { - _app->processEvents(); -} - -int QtFactory::exec() { - return _app->exec(); -} - -void QtFactory::reset() { - //Objects are deleted by the class who constructs them. - //So we can set the pointer to NULL safely. - _qtContactList = NULL; - _qtChatHandler = NULL; - _qtSms = NULL; - _qtSoftUpdate = NULL; - _qtHistory = NULL; - _qtDialpad = NULL; -} - -PWengoPhone * QtFactory::createPresentationWengoPhone(CWengoPhone & cWengoPhone, bool runInBackground) { - _cWengoPhone = &cWengoPhone; -#ifdef OS_WINDOWS - _app->setCWengoPhone(_cWengoPhone); -#endif - if (!_qtWengoPhone) { - _qtWengoPhone = new QtWengoPhone(cWengoPhone); - } - - if (!runInBackground) { - _qtWengoPhone->getWidget()->show(); - } - - return _qtWengoPhone; -} - -PUserProfile * QtFactory::createPresentationUserProfile(CUserProfile & cUserProfile) { - //FIXME: QtWengoPhone must be instanciated before any QtUserProfile - return new QtUserProfile(cUserProfile, *_qtWengoPhone); -} - -PUserProfileHandler * QtFactory::createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) { - if (!_qtUserProfileHandler) { - //FIXME: QtWengoPhone must be instanciated before _qtUserProfileHandler - _qtUserProfileHandler = new QtUserProfileHandler(cUserProfileHandler, *_qtWengoPhone); - } - - return _qtUserProfileHandler; -} - -PPhoneLine * QtFactory::createPresentationPhoneLine(CPhoneLine & cPhoneLine) { - //FIXME: memory leak? - QtPhoneLine * qtPhoneLine = new QtPhoneLine(cPhoneLine); - return qtPhoneLine; -} - -PPhoneCall * QtFactory::createPresentationPhoneCall(CPhoneCall & cPhoneCall) { - //FIXME: memory leak? - QtPhoneCall * qtPhoneCall = new QtPhoneCall(cPhoneCall); - return qtPhoneCall; -} - -PContactList * QtFactory::createPresentationContactList(CContactList & cContactList) { - if (!_qtContactList) { - if (!_cWengoPhone) { - LOG_FATAL("PWengoPhone must be created before PContactList"); - } - _qtContactList = new QtContactList(cContactList, *_cWengoPhone); - } - return _qtContactList; -} - -PChatHandler * QtFactory::createPresentationChatHandler(CChatHandler & cChatHandler) { - if (!_qtChatHandler) { - if (!_qtWengoPhone) { - LOG_FATAL("PWengoPhone must be created before PContactList"); - } else { - _qtChatHandler = new QtChatHandler(cChatHandler, *_qtWengoPhone); - } - } - return _qtChatHandler; -} - -PSms * QtFactory::createPresentationSms(CSms & cSms) { - if (!_qtSms) { - _qtSms = new QtSms(cSms); - } - return _qtSms; -} - -PSoftUpdate * QtFactory::createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) { - if (!_qtSoftUpdate) { - _qtSoftUpdate = new QtSoftUpdate(cSoftUpdate); - } - return _qtSoftUpdate; -} - -PHistory * QtFactory::createPresentationHistory(CHistory & cHistory) { - if (!_qtHistory) { - _qtHistory = new QtHistory(cHistory); - } - return _qtHistory; -} - -PConferenceCall * QtFactory::createPresentationConferenceCall(CConferenceCall & cConferenceCall) { - return NULL; -} - -void QtFactory::postEventImpl(IThreadEvent * event) { - QCoreApplication::postEvent(this, new QtThreadEvent(event)); -} - -//DtmfThemeManager -void QtFactory::createPresentationDtmfThemeManager(CDtmfThemeManager & _cDtmfThemeManager) { - if (!_qtDialpad) { - _qtDialpad = new QtDialpad(_cDtmfThemeManager, _qtWengoPhone); - _qtWengoPhone->setQtDialpad(_qtDialpad); - } -} - -void QtFactory::openUrl(const QUrl& url) { - std::string urlString = url.toString().toStdString(); - WebBrowser::openUrl(urlString); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtFactory.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,144 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTFACTORY_H -#define OWQTFACTORY_H - -#include - -#include - -#include - -class PWengoPhone; -class CWengoPhone; -class PUserProfile; -class CUserProfile; -class PUserProfileHandler; -class CUserProfileHandler; -class PPhoneLine; -class CPhoneLine; -class PPhoneCall; -class CPhoneCall; -class PContactList; -class CContactList; -class PChatHandler; -class CChatHandler; -class PSms; -class CSms; -class PSoftUpdate; -class CSoftUpdate; -class PHistory; -class CHistory; -class PConferenceCall; -class CConferenceCall; -class CDtmfThemeManager; - -class QtContactList; -class QtChatHandler; -class QtSms; -class QtSoftUpdate; -class QtHistory; -class CWengoPhone; -class QtWengoPhone; -class QtUserProfileHandler; -class QtDialpad; - -class QUrl; - -#ifndef OS_WINDOWS - class QApplication; -#else - class WinApp; -#endif - -class QtFactory : public QObject, public PFactory { - Q_OBJECT -public: - - QtFactory(int & argc, char * argv[]); - - void processEvents(); - - int exec(); - - void reset(); - - PWengoPhone * createPresentationWengoPhone(CWengoPhone & cWengoPhone, bool runInBackground); - - PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile); - - PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler); - - PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine); - - PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall); - - PContactList * createPresentationContactList(CContactList & cContactList); - - PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler); - - PSms * createPresentationSms(CSms & cSms); - - PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate); - - PHistory * createPresentationHistory(CHistory & cHistory); - - PConferenceCall * createPresentationConferenceCall(CConferenceCall & cConferenceCall); - - //DtmfThemeManager - void createPresentationDtmfThemeManager(CDtmfThemeManager & _cDtmfThemeManager); - -public Q_SLOTS: - /** - * Slot to integrate WebBrowser with QDesktopServices - */ - void openUrl(const QUrl& url); - -private: - - void postEventImpl(IThreadEvent * event); - -#ifndef OS_WINDOWS - QApplication * _app; -#else - WinApp *_app; -#endif - - QtContactList * _qtContactList; - - QtChatHandler * _qtChatHandler; - - QtSms * _qtSms; - - QtSoftUpdate * _qtSoftUpdate; - - QtHistory * _qtHistory; - - CWengoPhone * _cWengoPhone; - - QtWengoPhone * _qtWengoPhone; - - QtUserProfileHandler * _qtUserProfileHandler; - - //DtmfThemeManager - QtDialpad * _qtDialpad; -}; - -#endif //OWQTFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtHttpProxyLogin.h" - -#include "ui_HttpProxyLoginWindow.h" - -#include - -#include - -QtHttpProxyLogin::QtHttpProxyLogin(QWidget * parent, const std::string & proxyAddress, unsigned proxyPort) - : QObject(parent) { - - _httpProxyLoginWindow = new QDialog(parent); - - _ui = new Ui::HttpProxyLoginWindow(); - _ui->setupUi(_httpProxyLoginWindow); - - WidgetBackgroundImage::setBackgroundImage(_ui->httpProxyLabel, ":pics/headers/login.png", WidgetBackgroundImage::AdjustSize); - - //addressLineEdit - _ui->addressLineEdit->setText(QString::fromStdString(proxyAddress)); - - //portLineEdit - _ui->portLineEdit->setText(QString::number(proxyPort)); -} - -std::string QtHttpProxyLogin::getLogin() const { - return _ui->loginLineEdit->text().toStdString(); -} - -std::string QtHttpProxyLogin::getPassword() const { - return _ui->passwordLineEdit->text().toStdString(); -} - -std::string QtHttpProxyLogin::getProxyAddress() const { - return _ui->addressLineEdit->text().toStdString(); -} - -unsigned QtHttpProxyLogin::getProxyPort() const { - return _ui->portLineEdit->text().toUInt(); -} - -int QtHttpProxyLogin::show() { - return _httpProxyLoginWindow->exec(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtHttpProxyLogin.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTHTTPPROXYLOGIN_H -#define QTHTTPPROXYLOGIN_H - -#include - -#include - -#include - -class QWidget; -class QDialog; -namespace Ui { class HttpProxyLoginWindow; } - -/** - * Window asking for the local HTTP proxy login/password. - * - * @author Tanguy Krotoff - */ -class QtHttpProxyLogin : public QObject, NonCopyable { - Q_OBJECT -public: - - QtHttpProxyLogin(QWidget * parent, const std::string & proxyAddress, unsigned proxyPort); - - QDialog * getWidget() const { - return _httpProxyLoginWindow; - } - - std::string getLogin() const; - - std::string getPassword() const; - - std::string getProxyAddress() const; - - unsigned getProxyPort() const; - -public Q_SLOTS: - - int show(); - -private: - - Ui::HttpProxyLoginWindow * _ui; - - QDialog * _httpProxyLoginWindow; -}; - -#endif //QTHTTPPROXYLOGIN_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIdle.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIdle.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIdle.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIdle.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIdle.h" - -#include -#include -#include - -#define LOGGER_COMPONENT "QtIdle" -#include -#include - -#include - -#include - -QtIdle::QtIdle(UserProfile & userProfile, QObject * parent) - : QObjectThreadSafe(parent), - _userProfile(userProfile) { - - _idle = NULL; - _autoAway = false; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.valueChangedEvent += boost::bind(&QtIdle::configChangedEventHandler, this, _1); - - //Init the idle class - configChangedEventHandler(Config::GENERAL_AWAY_TIMER_KEY); -} - -QtIdle::~QtIdle() { -} - -void QtIdle::setOnlineIMAccountsAway() { - _onlineIMAccountIdList.clear(); - IMAccountManager& imAccountManager = _userProfile.getIMAccountManager(); - IMAccountList imAccountList = imAccountManager.getIMAccountListCopy(); - - IMAccountList::const_iterator - it = imAccountList.begin(), - end = imAccountList.end(); - for (; it!=end; ++it) { - if (it->getPresenceState() == EnumPresenceState::PresenceStateOnline) { - std::string id = it->getUUID(); - _onlineIMAccountIdList.append(id); - - _userProfile.setPresenceState(EnumPresenceState::PresenceStateAway, id); - } - } -} - -void QtIdle::restoreOnlineIMAccounts() { - Q_FOREACH(std::string id, _onlineIMAccountIdList) { - _userProfile.setPresenceState(EnumPresenceState::PresenceStateOnline, id); - } -} - -void QtIdle::slotSecondsIdle(int seconds) { - LOG_DEBUG("seconds=%d", seconds); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - int autoAwaySeconds = config.getGeneralAwayTimer() * 60; - - if (_autoAway) { - if (seconds < autoAwaySeconds) { - LOG_DEBUG("No longer away"); - restoreOnlineIMAccounts(); - _autoAway = false; - } - } else { - if (seconds > autoAwaySeconds) { - LOG_DEBUG("Auto away"); - setOnlineIMAccountsAway(); - _autoAway = true; - } - } -} - -void QtIdle::configChangedEventHandler(const std::string & key) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtIdle::configChangedEventHandlerThreadSafe, this, _1), key); - postEvent(event); -} - -void QtIdle::configChangedEventHandlerThreadSafe(std::string key) { - if (key != Config::GENERAL_AWAY_TIMER_KEY) { - return; - } - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - int interval = config.getGeneralAwayTimer(); - if (interval != Config::NO_AWAY_TIMER) { - if (!_idle) { - _idle = new Idle(this); - SAFE_CONNECT(_idle, SIGNAL(secondsIdle(int)), SLOT(slotSecondsIdle(int)) ); - } - _idle->start(); - } else { - OWSAFE_DELETE(_idle); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIdle.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIdle.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIdle.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIdle.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTIDLE_H -#define OWQTIDLE_H - -#include - -#include - -#include - -class Settings; -class UserProfile; -class Idle; - -/** - * Detects idle status for IM presence. - * - * @see Idle - * @author Tanguy Krotoff - */ -class QtIdle : public QObjectThreadSafe, public Trackable { - Q_OBJECT -public: - - QtIdle(UserProfile & userProfile, QObject * parent); - - virtual ~QtIdle(); - -private Q_SLOTS: - void slotSecondsIdle(int); - -private: - - void initThreadSafe() { } - - void configChangedEventHandler(const std::string & key); - - void configChangedEventHandlerThreadSafe(std::string key); - - /** - * Set presence of all online IMAccounts to away - */ - void setOnlineIMAccountsAway(); - - /** - * Restore IMAccounts which were changed from away to online by - * setOnlineIMAccountsAway - */ - void restoreOnlineIMAccounts(); - - UserProfile & _userProfile; - - QList _onlineIMAccountIdList; - - Idle * _idle; - - bool _autoAway; -}; - -#endif //OWQTIDLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountHelper.h" - -#include - -namespace QtIMAccountHelper { - -void copyListToPtrVector(const IMAccountList& list, QtIMAccountPtrVector* vector) { - IMAccountList::const_iterator - it = list.begin(), - end = list.end(); - - for (; it!=end; ++it) { - vector->push_back(& (*it) ); - } -} - -static int protocolOrder(EnumIMProtocol::IMProtocol protocol) { - switch (protocol) { - case EnumIMProtocol::IMProtocolWengo: - return 0; - - case EnumIMProtocol::IMProtocolSIPSIMPLE: - case EnumIMProtocol::IMProtocolSIP: - return 10; - - case EnumIMProtocol::IMProtocolYahoo: - return 20; - - case EnumIMProtocol::IMProtocolMSN: - return 30; - - case EnumIMProtocol::IMProtocolAIM: - return 40; - - case EnumIMProtocol::IMProtocolICQ: - return 50; - - case EnumIMProtocol::IMProtocolJabber: - return 60; - - case EnumIMProtocol::IMProtocolGoogleTalk: - return 70; - - case EnumIMProtocol::IMProtocolFaceBook: - return 80; - - case EnumIMProtocol::IMProtocolMySpace: - return 90; - - case EnumIMProtocol::IMProtocolSkype: - return 100; - - case EnumIMProtocol::IMProtocolTwitter: - return 100; - - case EnumIMProtocol::IMProtocolUnknown: - case EnumIMProtocol::IMProtocolAll: - LOG_FATAL("Protocol should not be " + EnumIMProtocol::toString(protocol)); - return -1; - } - - LOG_FATAL("Unhandled protocol: " + EnumIMProtocol::toString(protocol)); - return -1; -} - -bool compareIMAccountPtrs(const IMAccount* account1, const IMAccount* account2) { - int protocol1Order = protocolOrder(account1->getProtocol()); - int protocol2Order = protocolOrder(account2->getProtocol()); - - if (protocol1Order != protocol2Order) { - return protocol1Order < protocol2Order; - } - - return account1->getLogin() < account2->getLogin(); -} - -} // namespace diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountHelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTIMACCOUNTHELPER_H -#define QTIMACCOUNTHELPER_H - -#include -#include - -/** - * This namespace contains code to sort an IMAccountList. - * @see QtIMProfileWidget - * @see QtMultiPresenceStatusHelper - * - * @author Aurelien Gateau - */ -namespace QtIMAccountHelper { - -/** - * The vector which will contains the sorted list. We must use a vector because - * one can't run std::sort on a list. - */ -typedef std::vector QtIMAccountPtrVector; - -/** - * Copy the account list to the provided vector - * @param list the list to copy - * @param vector a pointer to a QtIMAccountPtrVector - */ -void copyListToPtrVector(const IMAccountList& list, QtIMAccountPtrVector* vector); - -/** - * Returns true if account1 is "less than" account2 - */ -bool compareIMAccountPtrs(const IMAccount* account1, const IMAccount* account2); - -} // namespace - - -#endif /* QTIMACCOUNTHELPER_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,228 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtIMAccountMonitor.h" - -#include - -#include -#include -#include - -#include -#include - -#include - -#include - - -QtIMAccountMonitor::QtIMAccountMonitor(QObject* parent, CUserProfile* cUserProfile) -: QObject(parent) -, _cUserProfile(cUserProfile) { - - UserProfile& userProfile = _cUserProfile->getUserProfile(); - - // imAccountManager - IMAccountManager& imAccountManager = userProfile.getIMAccountManager(); - - imAccountManager.imAccountAddedEvent += - boost::bind(&QtIMAccountMonitor::imAccountAddedEventHandler, this, _2); - - imAccountManager.imAccountRemovedEvent += - boost::bind(&QtIMAccountMonitor::imAccountRemovedEventHandler, this, _2); - - // connectHandler - ConnectHandler& connectHandler = userProfile.getConnectHandler(); - - connectHandler.connectedEvent += - boost::bind(&QtIMAccountMonitor::connectedEventHandler, this, _2); - - connectHandler.disconnectedEvent += - boost::bind(&QtIMAccountMonitor::disconnectedEventHandler, this, _2, _3, _4); - - connectHandler.connectionProgressEvent += - boost::bind(&QtIMAccountMonitor::connectionProgressEventHandler, this, _2, _3, _4, _5); - - // presenceHandler - PresenceHandler & presenceHandler = userProfile.getPresenceHandler(); - presenceHandler.myPresenceStatusEvent += - boost::bind(&QtIMAccountMonitor::myPresenceStatusEventHandler, this, _2, _3); - - // Initialize the map with existing accounts - { - QMutexLocker lock(&_imAccountInfoMapMutex); - IMAccountList imAccountList = userProfile.getIMAccountManager().getIMAccountListCopy(); - IMAccountList::const_iterator - it = imAccountList.begin(), - end = imAccountList.end(); - - for (; it!=end; ++it) { - IMAccountInfo info; - if (it->isConnected()) { - info._state = StateConnected; - info._message = connectedMessageForIMAccount(*it); - } else { - info._state = StateDisconnected; - info._message = tr("Disconnected"); - } - - QString id = QString::fromStdString(it->getUUID()); - _imAccountInfoMap[id] = info; - } - } -} - -void QtIMAccountMonitor::imAccountAddedEventHandler(std::string imAccountId) { - QString id = QString::fromStdString(imAccountId); - - std::auto_ptr imAccount (_cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId)); - if (!imAccount.get()) { - LOG_FATAL("No such id " + imAccountId); - } - - IMAccountInfo info; - if (imAccount->isConnected()) { - info._state = StateConnected; - info._message = connectedMessageForIMAccount(*imAccount); - } else { - info._state = StateDisconnected; - info._message = tr("Disconnected"); - } - - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap[id] = info; - } - - imAccountAdded(id); -} - -void QtIMAccountMonitor::imAccountRemovedEventHandler(std::string imAccountId) { - QString id = QString::fromStdString(imAccountId); - - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap.remove(id); - } - imAccountRemoved(id); -} - -void QtIMAccountMonitor::connectedEventHandler(std::string imAccountId) { - QString id = QString::fromStdString(imAccountId); - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap[id]._state = StateConnected; - _imAccountInfoMap[id]._message = connectedMessageForIMAccountId(imAccountId); - } - imAccountUpdated(id); -} - -void QtIMAccountMonitor::disconnectedEventHandler(std::string imAccountId, bool connectionError, std::string reason) { - QString id = QString::fromStdString(imAccountId); - ConnectionState state; - - QString message; - if (connectionError) { - state = StateFailure; - message = tr("Error: %1").arg(QString::fromUtf8(reason.c_str())); - } else { - state = StateDisconnected; - message = tr("Disconnected"); - } - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap[id]._state = state; - _imAccountInfoMap[id]._message = message; - } - imAccountUpdated(id); -} - -void QtIMAccountMonitor::connectionProgressEventHandler(std::string imAccountId, int currentStep, int totalSteps, std::string infoMessage) { - QString id = QString::fromStdString(imAccountId); - - QString message = tr("%1 (%2/%3)", "%1 is message, %2 is currentStep, %3 is totalSteps") - .arg(QString::fromStdString(infoMessage)) - .arg(currentStep + 1) - .arg(totalSteps); - - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap[id]._state = StateConnecting; - _imAccountInfoMap[id]._message = message; - } - imAccountUpdated(id); -} - -void QtIMAccountMonitor::myPresenceStatusEventHandler(std::string imAccountId, EnumPresenceState::MyPresenceStatus status) { - - if (status == EnumPresenceState::MyPresenceStatusOk) { - QString id = QString::fromStdString(imAccountId); - { - QMutexLocker lock(&_imAccountInfoMapMutex); - _imAccountInfoMap[id]._state = StateConnected; - _imAccountInfoMap[id]._message = connectedMessageForIMAccountId(imAccountId); - } - imAccountUpdated(id); - } -} -QtIMAccountMonitor::IMAccountInfoAutoPtr QtIMAccountMonitor::getIMAccountInfo(const QString& imAccountId) const { - QMutexLocker lock(&_imAccountInfoMapMutex); - if (!_imAccountInfoMap.contains(imAccountId)) { - LOG_WARN("no account found with id " + imAccountId.toStdString()); - return IMAccountInfoAutoPtr(); - } - return IMAccountInfoAutoPtr( new IMAccountInfo(_imAccountInfoMap[imAccountId]) ); -} - -QString QtIMAccountMonitor::connectedMessageForIMAccountId(std::string imAccountId) { - std::auto_ptr imAccount( _cUserProfile->getUserProfile().getIMAccountManager().getIMAccount(imAccountId) ); - if (!imAccount.get()) { - LOG_FATAL("no account found with id " + imAccountId); - } - QString message = connectedMessageForIMAccount(*imAccount); - return message; -} - -QString QtIMAccountMonitor::connectedMessageForIMAccount(const IMAccount& imAccount) { - EnumPresenceState::PresenceState state = imAccount.getPresenceState(); - switch (state) { - case EnumPresenceState::PresenceStateOnline: - return tr("Online"); - - case EnumPresenceState::PresenceStateInvisible: - return tr("Invisible"); - - case EnumPresenceState::PresenceStateAway: - return tr("Away"); - - case EnumPresenceState::PresenceStateDoNotDisturb: - return tr("Do not disturb"); - - case EnumPresenceState::PresenceStateOffline: - case EnumPresenceState::PresenceStateUserDefined: - case EnumPresenceState::PresenceStateUnknown: - case EnumPresenceState::PresenceStateMulti: - case EnumPresenceState::PresenceStateUnavailable: - LOG_ERROR("Should not get called with a presence of " + EnumPresenceState::toString(state)); - return QString::null; - } - LOG_FATAL("Unhandled presence value " + EnumPresenceState::toString(state)); - return QString::null; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtIMAccountMonitor.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,130 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTIMACCOUNTMONITOR_H -#define QTIMACCOUNTMONITOR_H - -#include - -#include -#include - -#include -#include -#include -#include - -class CUserProfile; -class IMAccount; - - -/** - * This class monitors the changes in the IM accounts of the user. - * It knows about the connection state and details as well as the IM presence. - * It stores transient info not stored in the model, like the fact that the IM - * account is connecting (neither disconnected nor connected yet) or the info - * message of an account which is connecting. - * - * It will emits Qt signals when IM acccounts are added/removed/updated (@see - * imAccountAdded, @see imAccountRemoved, @see imAccountUpdated). - * - * These signals are emitted from the model thread. - * - * @author Aurelien Gateau - */ -class QtIMAccountMonitor : public QObject, public Trackable, private NonCopyable { -Q_OBJECT -public: - enum ConnectionState { - StateDisconnected, /** IM account is disconnected */ - StateConnecting, /** IM account is trying to connect. Use getIMAccountInfo().message() to know more. */ - StateConnected, /** IM account is connected */ - StateFailure /** IM account failed to connect. Use getIMAccountInfo().message() to know more. */ - }; - - /** - * This class gathers the IMAccount information. - */ - class IMAccountInfo { - public: - ConnectionState connectionState() const { - return _state; - } - - QString message() const { - return _message; - } - - private: - ConnectionState _state; - QString _message; - - friend class QtIMAccountMonitor; - }; - - typedef std::auto_ptr IMAccountInfoAutoPtr; - - QtIMAccountMonitor(QObject* parent, CUserProfile*); - - /** - * Returns an auto_ptr to the IMAccountInfo for account imAccountid. If - * there is no such account, the auto_ptr will point to 0. - */ - IMAccountInfoAutoPtr getIMAccountInfo(const QString& imAccountId) const; - -Q_SIGNALS: - /** - * Emitted when an IM account has been added. - * This signal is emitted in the model thread. - */ - void imAccountAdded(QString imAccountId); - - /** - * Emitted when an IM account has been added. - * This signal is emitted in the model thread. - */ - void imAccountRemoved(QString imAccountId); - - /** - * Emitted when an IM account has been added. - * This signal is emitted in the model thread. - */ - void imAccountUpdated(QString imAccountId); - -private: - typedef QMap IMAccountInfoMap; - - void imAccountAddedEventHandler(std::string imAccountId); - void imAccountRemovedEventHandler(std::string imAccountId); - - void connectedEventHandler(std::string imAccountId); - void disconnectedEventHandler(std::string imAccountId, bool connectionError, std::string reason); - void connectionProgressEventHandler(std::string imAccountId, int currentStep, int totalSteps, std::string infoMessage); - - void myPresenceStatusEventHandler(std::string imAccountId, EnumPresenceState::MyPresenceStatus status); - - QString connectedMessageForIMAccountId(std::string imAccountId); - QString connectedMessageForIMAccount(const IMAccount& imAccount); - - CUserProfile* _cUserProfile; - - IMAccountInfoMap _imAccountInfoMap; - mutable QMutex _imAccountInfoMapMutex; -}; - -#endif /* QTIMACCOUNTMONITOR_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtLanguage.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtLanguage.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtLanguage.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtLanguage.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,198 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtLanguage.h" - -#include -#include -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -static const char * LANGUAGE_FILE_EXTENSION = "qm"; -static const char * LANG_DIR = "lang"; - -static const char * BRANDING_FILENAME = "config/branding.xml"; - -static KeywordTranslator::KeywordHash readKeywordHash(const std::string& fileName) { - FileReader reader(fileName); - KeywordTranslator::KeywordHash hash; - if (!reader.open()) { - LOG_ERROR("Couldn't open file " + fileName); - return hash; - } - - std::string data = reader.read(); - - Settings settings; - SettingsXMLSerializer serializer(settings); - serializer.unserialize(data); - - StringList list = settings.getAllKeys(); - StringList::const_iterator - it = list.begin(), - end = list.end(); - for (; it!=end; ++it) { - std::string keyword = *it; - std::string value = settings.getStringKeyValue(keyword); - hash[QString::fromStdString(keyword)] = QString::fromUtf8(value.c_str()); - } - - return hash; -} - -QtLanguage::QtLanguage(QObject * parent) - : QObjectThreadSafe(parent) { - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.valueChangedEvent += boost::bind(&QtLanguage::configChangedEventHandler, this, _1); - - _qtTranslator = new QTranslator(QCoreApplication::instance()); - - KeywordTranslator::KeywordHash hash = readKeywordHash(config.getResourcesDir() + "/" + BRANDING_FILENAME); - - _appTranslator = new KeywordTranslator(QCoreApplication::instance()); - _appTranslator->setKeywordHash(hash); - _appTranslator->setFallbackTranslator(_qtTranslator); - QCoreApplication::installTranslator(_appTranslator); - - loadLanguageFromConfig(); -} - -QtLanguage::~QtLanguage() { -} - -void QtLanguage::configChangedEventHandler(const std::string & key) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtLanguage::configChangedEventHandlerThreadSafe, this, _1), key); - postEvent(event); -} - -void QtLanguage::configChangedEventHandlerThreadSafe(const std::string & key) { - if (key == Config::LANGUAGE_KEY) { - loadLanguageFromConfig(); - } -} - -QString QtLanguage::getLocaleFileName() { - QString localeName; - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (config.getLanguage() == Config::LANGUAGE_AUTODETECT_KEYVALUE) { - localeName = QLocale::system().name(); - if (localeName == "C") { - // No locale defined, just get out - return QString::null; - } - } else { - localeName = QString::fromStdString(config.getLanguage()); - } - return localeName; -} - -QString QtLanguage::getQtLocaleFileName() { - QString localeName = QtLanguage::getLocaleFileName(); - if (!localeName.isEmpty()) { - return "qt_" + localeName; - } else { - return QString::null; - } -} - -QString QtLanguage::getWengoPhoneLocaleFileName() { - QString localeName = QtLanguage::getLocaleFileName(); - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString langDir = QString::fromStdString(config.getResourcesDir()) + LANG_DIR; - if (!localeName.isEmpty()) { - return langDir + QDir::separator() + "qtwengophone_" + localeName; - } else { - return QString::null; - } -} - -void QtLanguage::loadLanguageFromConfig() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString qtTranslationName = getQtLocaleFileName(); - - QString langDir = QString::fromStdString(config.getResourcesDir()) + LANG_DIR; - bool qtTranslationLoaded = _qtTranslator->load(qtTranslationName, langDir); - -#ifdef QT_TRANSLATION_DIR - if (!qtTranslationLoaded) { - qtTranslationLoaded = _qtTranslator->load(qtTranslationName, QT_TRANSLATION_DIR); - } -#endif - if (!qtTranslationLoaded) { - LOG_INFO("no Qt translation available for locale '" + getLocaleFileName().toStdString() + "'"); - } - - LOG_DEBUG(getWengoPhoneLocaleFileName().toStdString()); - if (!_appTranslator->load(getWengoPhoneLocaleFileName())) { - LOG_INFO("no application translation available for locale '" + getLocaleFileName().toStdString() + "'"); - } -} - -static QString getIso639CodeFromFileName(const QString & fileName) { - // qtwengophone_en.qm -> en - QRegExp rx("qtwengophone_([^.]+)"); - rx.indexIn(fileName); - QStringList list = rx.capturedTexts(); - if (list.size() != 2) { - return QString(); - } - QString code = list[1]; - //code.replace("_", "-"); - return code/*.toLower()*/; -} - -QStringList QtLanguage::getAvailableLanguages() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - QStringList languageList; - QDir dir(QString::fromStdString(config.getResourcesDir()) + LANG_DIR); - - Q_FOREACH(QFileInfo fileInfo, dir.entryInfoList()) { - - if (fileInfo.isFile() && - fileInfo.size() && - (fileInfo.completeSuffix().toStdString() == LANGUAGE_FILE_EXTENSION)) { - - QString iso639Code = getIso639CodeFromFileName(fileInfo.fileName()); - if (iso639Code.isEmpty()) { - // This can happen if the translation dir contains other files - // (like Qt translations) - continue; - } - std::string language = LanguageList::getLanguageName(iso639Code.toStdString()); - languageList += QString::fromUtf8(language.c_str()); - } - } - - return languageList; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtLanguage.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtLanguage.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtLanguage.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtLanguage.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,73 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTLANGUAGE_H -#define OWQTLANGUAGE_H - -#include - -#include - -class Settings; - -class QString; -class QStringList; -class QTranslator; - -class KeywordTranslator; - -/** - * Changes the language of the application. - * - * TODO QtLanguage should be renamed to QtLocale - * - * @see QTranslator - * @author Tanguy Krotoff - */ -class QtLanguage : public QObjectThreadSafe, public Trackable { - Q_OBJECT -public: - - QtLanguage(QObject * parent); - - ~QtLanguage(); - - static QStringList getAvailableLanguages(); - - static QString getWengoPhoneLocaleFileName(); - -private: - - void initThreadSafe() { } - - void loadLanguageFromConfig(); - - void configChangedEventHandler(const std::string & key); - - void configChangedEventHandlerThreadSafe(const std::string & key); - - static QString getLocaleFileName(); - - static QString getQtLocaleFileName(); - - QTranslator * _qtTranslator; - KeywordTranslator * _appTranslator; -}; - -#endif //OWQTLANGUAGE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtNoWengoAlert.h" - -#include "ui_NoWengoAlert.h" - -#include - -//#include -//#include - -#include -#include - -#include - -#include -#include - -#include - -QtNoWengoAlert::QtNoWengoAlert(QWidget * parent, QtWengoPhone & qtWengoPhone) - : _qtWengoPhone(qtWengoPhone){ - - _NoWengoAlert = new QDialog(parent); - - _ui = new Ui::NoWengoAlert(); - _ui->setupUi(_NoWengoAlert); - - SAFE_CONNECT(_ui->haveBtn, SIGNAL(clicked()), SLOT(haveButtonClicked())); - SAFE_CONNECT(_ui->createBtn, SIGNAL(clicked()), SLOT(createButtonClicked())); -} - -QtNoWengoAlert::QtNoWengoAlert(QWidget * parent, QtWengoPhone & qtWengoPhone, QString title, QString maintext) - : _qtWengoPhone(qtWengoPhone){ - - _NoWengoAlert = new QDialog(parent); - - _ui = new Ui::NoWengoAlert(); - _ui->setupUi(_NoWengoAlert); - - _NoWengoAlert->setWindowTitle(title); - _ui->mainText->setText(maintext); - - SAFE_CONNECT(_ui->haveBtn, SIGNAL(clicked()), SLOT(haveButtonClicked())); - SAFE_CONNECT(_ui->createBtn, SIGNAL(clicked()), SLOT(createButtonClicked())); -} - -QtNoWengoAlert::~QtNoWengoAlert() { - OWSAFE_DELETE(_ui); -} - -void QtNoWengoAlert::haveButtonClicked() { - //dear user enjoy a disconnection.... - _qtWengoPhone.getQtToolBar().logOff(); -} - -void QtNoWengoAlert::createButtonClicked() { - WsUrl::showWengoAccountCreation(); -} - -void QtNoWengoAlert::setDialogText(QString newtext) { - _ui->mainText->setText(newtext); -} - -void QtNoWengoAlert::setTitle(QString newtitle) { - _NoWengoAlert->setWindowTitle(newtitle); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtNoWengoAlert.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTNOWENGOALERT_H -#define OWQTNOWENGOALERT_H - -#include - -class QWidget; -class QDialog; -class QtWengoPhone; - -namespace Ui { class NoWengoAlert; } - -/** - * Pop up Alert when user does not have a wengo account - * - * @author Xavier Desjardins - */ -class QtNoWengoAlert : public QObject { - Q_OBJECT -public: - - QtNoWengoAlert(QWidget * parent, QtWengoPhone & qtWengoPhone); - - QtNoWengoAlert(QWidget * parent, QtWengoPhone & qtWengoPhone, QString title, QString maintext); - - ~QtNoWengoAlert(); - - QDialog * getQDialog() const { - return _NoWengoAlert; - } - - void setDialogText(QString newtext); - - void setTitle(QString newtitle); - -private Q_SLOTS: - - void haveButtonClicked(); - - void createButtonClicked(); - -private: - - Ui::NoWengoAlert * _ui; - - QDialog * _NoWengoAlert; - - QtWengoPhone & _qtWengoPhone; -}; - -#endif //OWQTNOWENGOALERT_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,77 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPresenceMenuManager.h" - -#include - -#include -#include - -#include -#include - -#include - -#include - - -QtPresenceMenuManager::QtPresenceMenuManager(QObject* parent, CUserProfileHandler* cUserProfileHandler, QtWengoPhone * qtWengoPhone) - : QObject(parent), - _cUserProfileHandler(cUserProfileHandler), - _qtWengoPhone(qtWengoPhone) { -} - -void QtPresenceMenuManager::addPresenceActions(QMenu* menu) { - addGlobalPresenceAction( - menu, EnumPresenceState::PresenceStateOnline, - QPixmap(":/pics/status/online.png"), tr("Online")); - - addGlobalPresenceAction( - menu, EnumPresenceState::PresenceStateAway, - QPixmap(":/pics/status/away.png"), tr("Away")); - - addGlobalPresenceAction( - menu, EnumPresenceState::PresenceStateDoNotDisturb, - QPixmap(":/pics/status/donotdisturb.png"), tr("Do Not Disturb")); - - addGlobalPresenceAction( - menu, EnumPresenceState::PresenceStateInvisible, - QPixmap(":/pics/status/invisible.png"), tr("Invisible")); - - menu->addSeparator(); - QAction* logOffAction = menu->addAction(tr("Log off"), this, SLOT(logOff()) ); - - bool connected = _cUserProfileHandler->getCUserProfile()->getUserProfile().isConnected(); - logOffAction->setEnabled(connected); -} - -void QtPresenceMenuManager::addGlobalPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text) { - QAction* action = menu->addAction(pix, text, this, SLOT(slotGlobalPresenceActionTriggered()) ); - _actionToState[action] = state; -} - -void QtPresenceMenuManager::slotGlobalPresenceActionTriggered() { - EnumPresenceState::PresenceState state = _actionToState[sender()]; - _cUserProfileHandler->getCUserProfile()->getUserProfile().setAllPresenceState(state); -} - -void QtPresenceMenuManager::logOff() { - _qtWengoPhone->getQtToolBar().logOff(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresenceMenuManager.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QTPRESENCEMENUMANAGER_H -#define QTPRESENCEMENUMANAGER_H - -#include -#include - -#include - -class CUserProfileHandler; -class QAction; -class QMenu; -class QPixmap; -class QString; -class QtWengoPhone; - - -/** - * This class manages the menu actions for the global presence - * - * @author Aurelien Gateau - */ -class QtPresenceMenuManager : public QObject { - Q_OBJECT -public: - QtPresenceMenuManager(QObject * parent, CUserProfileHandler * cUserProfileHandler, - QtWengoPhone * qtWengoPhone); - - /** - * Fills menu with actions to modify the global presence - */ - void addPresenceActions(QMenu* menu); - -private Q_SLOTS: - void slotGlobalPresenceActionTriggered(); - void logOff(); - -private: - void addGlobalPresenceAction(QMenu* menu, EnumPresenceState::PresenceState state, const QPixmap& pix, const QString& text); - - QMap _actionToState; - CUserProfileHandler* _cUserProfileHandler; - - QtWengoPhone * _qtWengoPhone; -}; - -#endif // QTPRESENCEMENUMANAGER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,124 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtPresencePixmapHelper.h" - -#include -#include -#include - -#include -#include - -#include - -#include "QtIMAccountHelper.h" - - -static QPainterPath createArcPath(int centerX, int centerY, int radius, int startAngle, int stopAngle) { - QPainterPath path; - path.moveTo(centerX, centerY); - path.arcTo(centerX - radius, centerY - radius, 2*radius, 2*radius, startAngle, stopAngle - startAngle + 1); - return path; -} - - -QPixmap QtPresencePixmapHelper::compose(QPixmap pix1, QPixmap pix2, int startAngle, int stopAngle) { - QPixmap out(pix1); - QPainter painter(&out); - QPainterPath path = createArcPath(_centerX, _centerY, _radius, startAngle, stopAngle); - painter.setClipPath(path); - painter.drawPixmap(0, 0, pix2); - painter.end(); - return out; -} - - -QtPresencePixmapHelper::QtPresencePixmapHelper(const IMAccountList& imAccountList) { - // Create a sorted vector of accounts - QtIMAccountHelper::QtIMAccountPtrVector imAccountPtrVector; - QtIMAccountHelper::copyListToPtrVector(imAccountList, &imAccountPtrVector); - std::sort(imAccountPtrVector.begin(), imAccountPtrVector.end(), QtIMAccountHelper::compareIMAccountPtrs); - //// - - QtIMAccountHelper::QtIMAccountPtrVector::const_iterator - it = imAccountPtrVector.begin(), - end = imAccountPtrVector.end(); - - QList list; - - for (; it!=end; ++it) - { - if(!list.contains((*it)->getUUID())) - { - EnumPresenceState::PresenceState state; - if ((*it)->isConnected()) { - state = (*it)->getPresenceState(); - } else { - state = EnumPresenceState::PresenceStateOffline; - } - _summary.push_back(state); - list.append((*it)->getUUID()); - } - } -} - - -QPixmap QtPresencePixmapHelper::createPixmap(const QString& tmpl, int centerX, int centerY, int radius) { - QtPresencePixmapHelper::PresenceSummary::const_reverse_iterator - it = _summary.rbegin(), - end = _summary.rend(); - - _centerX = centerX; - _centerY = centerY; - _radius = radius; - - int total = _summary.size(); - - int angle = 90 + 360 / total; - int newAngle; - - QString presenceString = QString::fromStdString( EnumPresenceState::toString(*it) ); - QString name = tmpl.arg(presenceString); - QPixmap out(name); - if (out.isNull()) { - LOG_WARN("Image " + name.toStdString() + " does not exist"); - return QPixmap(); - } - - ++it; - for (; it!=end; ++it) { - presenceString = QString::fromStdString( EnumPresenceState::toString(*it) ); - QString name = tmpl.arg(presenceString); - QPixmap pix(name); - if (pix.isNull()) { - LOG_WARN("Image " + name.toStdString() + " does not exist"); - continue; - } - - newAngle = angle + 360 / total; - - out = compose(out, pix, angle, newAngle); - - angle = newAngle; - } - - return out; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtPresencePixmapHelper.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,65 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef QTPRESENCEPIXMAPHELPER_H -#define QTPRESENCEPIXMAPHELPER_H - -#include - -#include - -class IMAccountList; -class QPixmap; -class QString; - -/** - * This is a small helper class to generate status pixmaps for QtProfileBar and - * QtSystray - * - * @author Aurelien Gateau - */ -class QtPresencePixmapHelper { -public: - QtPresencePixmapHelper(const IMAccountList& accountList); - - /** - * Create a status pixmap according to the presence of the various accounts - * If the accounts are not all using the same presence, it will return a - * pixmap containing pies of the corresponding presence images. - * - * @param name: template for presence image names. %1 will be replaced - * by the string representation of the presence. - * @param centerX: X coordinate of the center - * @param centerY: Y coordinate of the center - * @param radius: radius of the circle - */ - QPixmap createPixmap(const QString& name, int centerX, int centerY, int radius); - -private: - typedef std::list PresenceSummary; - PresenceSummary _summary; - - int _centerX; - int _centerY; - int _radius; - - QPixmap compose(QPixmap pix1, QPixmap pix2, int startAngle, int stopAngle); -}; - - -#endif /* QTPRESENCEPIXMAPHELPER_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,195 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSVGDialpad.h" - -#include -#include - -#include -#include -#include -#include - -#include - -#include -#include - -//QRgb -> #AARRGGBB -static const unsigned COLOR_0 = 0xFF000000; -static const unsigned COLOR_1 = 0xFFFF0000; -static const unsigned COLOR_2 = 0xFF00FF00; -static const unsigned COLOR_3 = 0xFFFFFF00; -static const unsigned COLOR_4 = 0xFF0000FF; -static const unsigned COLOR_5 = 0xFFFF00FF; -static const unsigned COLOR_6 = 0xFF00FFFF; -static const unsigned COLOR_7 = 0xFF990000; -static const unsigned COLOR_8 = 0xFF99FF00; -static const unsigned COLOR_9 = 0xFF9900FF; -static const unsigned COLOR_POUND = 0xFF99FFFF; -static const unsigned COLOR_STAR = 0xFF999999; - -QtSVGDialpad::QtSVGDialpad(QWidget* parent) - : QFrame(parent) { - - _svgMask = new QSvgRenderer(); - _mask = new QImage(); - - _svgimage = new QSvgRenderer(); - - _svgLayer = new QSvgRenderer(); - SAFE_CONNECT(_svgimage, SIGNAL(repaintNeeded()), SLOT(update())); - - setMouseTracking(true); -} - -void QtSVGDialpad::setNewTheme(const std::string & themeRepertory) { - - //destroy old theme - OWSAFE_DELETE(_svgMask); - OWSAFE_DELETE(_svgimage); - OWSAFE_DELETE(_svgLayer); - OWSAFE_DELETE(_mask); - - //new repertory - _repertory = themeRepertory; - - //new mask - _svgMask = new QSvgRenderer(QString::fromStdString(_repertory + "dialpad_mask.svg"), this); - _mask = new QImage(); - - //new image - _svgimage = new QSvgRenderer(QString::fromStdString(_repertory + "dialpad_image.svg"), this); - - //reinitialize layer - _svgLayer = new QSvgRenderer(); -} - -QtSVGDialpad::~QtSVGDialpad() { - OWSAFE_DELETE(_svgMask); - OWSAFE_DELETE(_svgimage); - OWSAFE_DELETE(_svgLayer); - OWSAFE_DELETE(_mask); -} - -void QtSVGDialpad::changeLayerFile(const std::string & newLayerFile) { - - QFile layerFile(QString::fromStdString(_repertory + newLayerFile)); - - if ( (newLayerFile != _layerFile) && (layerFile.exists()) ) { - - //delete old layer - OWSAFE_DELETE(_svgLayer); - - if(newLayerFile.empty()) { - //construct new empty layer - _svgLayer = new QSvgRenderer(this); - } else { - //construct new layer - _svgLayer = new QSvgRenderer(layerFile.fileName(), this); - SAFE_CONNECT(_svgLayer, SIGNAL(repaintNeeded()), SLOT(update())); - } - - //save _layerFile - _layerFile = newLayerFile; - - update(); - } -} - -void QtSVGDialpad::mouseMoveEvent(QMouseEvent *event) { - - //get mouse pos - QPoint pos = event->pos(); - - //get pixel color - if (_mask->valid(pos.x(), pos.y())) { - switch(_mask->pixel(pos.x(), pos.y())) { - case COLOR_0: changeLayerFile("layer_0.svg"); break; - case COLOR_1: changeLayerFile("layer_1.svg"); break; - case COLOR_2: changeLayerFile("layer_2.svg"); break; - case COLOR_3: changeLayerFile("layer_3.svg"); break; - case COLOR_4: changeLayerFile("layer_4.svg"); break; - case COLOR_5: changeLayerFile("layer_5.svg"); break; - case COLOR_6: changeLayerFile("layer_6.svg"); break; - case COLOR_7: changeLayerFile("layer_7.svg"); break; - case COLOR_8: changeLayerFile("layer_8.svg"); break; - case COLOR_9: changeLayerFile("layer_9.svg"); break; - case COLOR_POUND: changeLayerFile("layer_pound.svg"); break; - case COLOR_STAR: changeLayerFile("layer_star.svg"); break; - default: changeLayerFile(""); - } - } else { - changeLayerFile(""); - } -} - -void QtSVGDialpad::mouseReleaseEvent(QMouseEvent * event) { - - if (event->button() == Qt::LeftButton) { - - //get mouse pos - QPoint pos = event->pos(); - - //get pixel color - switch(_mask->pixel(pos.x(), pos.y())) { - case COLOR_0: keyZeroSelected(); break; - case COLOR_1: keyOneSelected(); break; - case COLOR_2: keyTwoSelected(); break; - case COLOR_3: keyThreeSelected(); break; - case COLOR_4: keyFourSelected(); break; - case COLOR_5: keyFiveSelected(); break; - case COLOR_6: keySixSelected(); break; - case COLOR_7: keySevenSelected(); break; - case COLOR_8: keyEightSelected(); break; - case COLOR_9: keyNineSelected(); break; - case COLOR_POUND: keyPoundSelected(); break; - case COLOR_STAR: keyStarSelected(); break; - } - } -} - -void QtSVGDialpad::paintEvent(QPaintEvent *) { - - //mask - if (_svgMask->isValid()) { - if (_mask->size() != size()) { - OWSAFE_DELETE(_mask); - _mask = new QImage(size(), QImage::Format_ARGB32_Premultiplied); - QPainter pm(_mask); - pm.setViewport(0, 0, width(), height()); - pm.eraseRect(0, 0, width(), height()); - _svgMask->render(&pm); - } - } - - QPainter pi(this); - pi.setViewport(0, 0, width(), height()); - - //image - if (_svgimage->isValid()) { - _svgimage->render(&pi); - } - - //layer - if (_svgLayer->isValid()) { - _svgLayer->render(&pi); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSVGDialpad.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSVGDIALPAD_H -#define OWQTSVGDIALPAD_H - -#include - -#include - -#include - -class QSvgRenderer; -class QImage; - -/** - * SVG Dialpad widget - * - * @author Xavier Desjardins - */ -class QtSVGDialpad : public QFrame, NonCopyable { - Q_OBJECT -public: - - QtSVGDialpad(QWidget* parent=0); - - ~QtSVGDialpad(); - - void setNewTheme(const std::string & themeRepertory); - -Q_SIGNALS: - - void keyZeroSelected(); - - void keyOneSelected(); - - void keyTwoSelected(); - - void keyThreeSelected(); - - void keyFourSelected(); - - void keyFiveSelected(); - - void keySixSelected(); - - void keySevenSelected(); - - void keyEightSelected(); - - void keyNineSelected(); - - void keyStarSelected(); - - void keyPoundSelected(); - -private: - - inline void changeLayerFile(const std::string & newLayerFile); - - void paintEvent(QPaintEvent * event); - - void mouseReleaseEvent(QMouseEvent * event); - - void mouseMoveEvent(QMouseEvent * event); - - QImage * _mask; - - QSvgRenderer * _svgMask; - - QSvgRenderer * _svgLayer; - - QSvgRenderer * _svgimage; - - std::string _repertory; - - std::string _layerFile; -}; - -#endif //OWQTSVGDIALPAD_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSystray.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSystray.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSystray.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSystray.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,421 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSystray.h" - -#include "QtWengoPhone.h" -#include "QtPresenceMenuManager.h" -#include "QtPresencePixmapHelper.h" -#include "QtIMAccountMonitor.h" -#include "QtNoWengoAlert.h" - -#include "contactlist/QtContactListManager.h" -#include "contactlist/QtContactMenu.h" -#include "webservices/sms/QtSms.h" - -#include -#include -#include - -#include -#include - -#include -#include - -#include -#include - -#include - -#if defined(OS_MACOSX) - #include "macosx/QtMacApplication.h" -#endif - -#ifdef OS_WINDOWS - #include -#endif - -static const char* SYSTRAY_ICON_TEMPLATE=":/pics/systray/%1.png"; -static const int SYSTRAY_ICON_CENTERX=8; -static const int SYSTRAY_ICON_CENTERY=9; -static const int SYSTRAY_ICON_RADIUS=16; - -#if defined(OS_MACOSX) -void qt_mac_set_dock_menu(QMenu *menu); -#endif - -QtSystray::QtSystray(QObject * parent) - : QObjectThreadSafe(NULL) { - - _qtWengoPhone = (QtWengoPhone *) parent; - - _callMenu = NULL; - - //Check Internet connection status - NetworkObserver::getInstance().connectionIsDownEvent += - boost::bind(&QtSystray::connectionIsDownEventHandler, this); - - NetworkObserver::getInstance().connectionIsUpEvent += - boost::bind(&QtSystray::connectionIsUpEventHandler, this); - - //trayMenu - _trayMenu = new QMenu(_qtWengoPhone->getWidget()); - SAFE_CONNECT(_trayMenu, SIGNAL(aboutToShow()), SLOT(setTrayMenu())); - - //trayIcon - _trayIcon = new QSystemTrayIcon(QPixmap(":pics/status/online.png"),_qtWengoPhone->getWidget()); - _trayIcon->setContextMenu(_trayMenu); - _trayIcon->setToolTip(tr("@product@")); - - SAFE_CONNECT(_trayIcon, SIGNAL(activated(QSystemTrayIcon::ActivationReason)), SLOT(activated(QSystemTrayIcon::ActivationReason))); - phoneLineStateChanged(EnumPhoneLineState::PhoneLineStateProgress); - -#if !defined(OS_MACOSX) - _trayIcon->show(); -#endif - //systray re-initialization - SAFE_CONNECT(_qtWengoPhone, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); - - setTrayMenu(); - - LANGUAGE_CHANGE(_trayIcon); -} - -QtSystray::~QtSystray() { -} - -void QtSystray::setTrayMenu() { - _trayMenu->clear(); - - //openAction -#if defined(OS_MACOSX) - // On Mac OS X, clicking the Dock icon should show the application thus the - // 'Open WengoPhone' entry is not necessary. We get the Dock Icon click event - // from our QtMacApplication class. - QtMacApplication * qMacApp = dynamic_cast(QApplication::instance()); - SAFE_CONNECT_RECEIVER(qMacApp, SIGNAL(applicationMustShow()), _qtWengoPhone->getWidget(), SLOT(show())); -#endif - - //Start a call session - _callMenu = new QMenu(tr("Call")); - _callMenu->setIcon(QIcon(":/pics/contact/call.png")); - updateMenu(); - _trayMenu->addMenu(_callMenu); - - //Change status menu - if (_qtWengoPhone->getCWengoPhone().getCUserProfileHandler().getCUserProfile()) { - _trayMenu->addMenu(createStatusMenu()); - } - -#if !defined(OS_MACOSX) - // There is already a Quit on Mac OS X - QAction * quitAction = _trayMenu->addAction(QIcon(":/pics/exit.png"), tr("Quit @product@")); - SAFE_CONNECT_RECEIVER(quitAction, SIGNAL(triggered()), _qtWengoPhone, SLOT(prepareToExitApplication())); - - _trayIcon->setContextMenu(_trayMenu); -#else - qt_mac_set_dock_menu(_trayMenu); -#endif - - -} - -QMenu * QtSystray::createStatusMenu() { - CWengoPhone & cWengoPhone = _qtWengoPhone->getCWengoPhone(); - - CUserProfileHandler& cUserProfileHandler = cWengoPhone.getCUserProfileHandler(); - QMenu * menu = new QMenu(_qtWengoPhone->getWidget()); - menu->setTitle(tr("Status")); - QtPresenceMenuManager * manager = new QtPresenceMenuManager(menu, - &cUserProfileHandler,_qtWengoPhone); - manager->addPresenceActions(menu); - - return menu; -} - -void QtSystray::updateMenu() { - CWengoPhone & cWengoPhone = _qtWengoPhone->getCWengoPhone(); - -#ifndef DISABLE_SMS - //sendSmsMenu - QMenu * sendSmsMenu = new QMenu(_qtWengoPhone->getWidget()); - sendSmsMenu->setTitle(tr("Send a SMS")); - sendSmsMenu->setIcon(QIcon(":/pics/contact/sms.png")); - SAFE_CONNECT(sendSmsMenu, SIGNAL(triggered(QAction *)), SLOT(sendSms(QAction *))); - sendSmsMenu->clear(); - - QAction * sendSmsBlankAction = sendSmsMenu->addAction(QIcon(":/pics/contact/sms.png"), tr("Send SMS")); - sendSmsBlankAction->setData(String::null); - _trayMenu->addMenu(sendSmsMenu); - QtContactMenu::populateMobilePhoneMenu(sendSmsMenu, cWengoPhone); - /// -#endif - //startChatMenu - QMenu * startChatMenu = new QMenu(_qtWengoPhone->getWidget()); - startChatMenu->setIcon(QIcon(":/pics/contact/chat.png")); - SAFE_CONNECT(startChatMenu, SIGNAL(triggered(QAction *)), SLOT(startChat(QAction *))); - startChatMenu->clear(); - startChatMenu->setTitle(tr("Start a chat")); - _trayMenu->addMenu(startChatMenu); - QtContactMenu::populateChatMenu(startChatMenu, cWengoPhone); - /// - - //call menu - QAction * placeCallBlankAction = _callMenu->addAction(QIcon(":/pics/contact/call.png"), tr("Place Call")); - placeCallBlankAction->setData(String::null); - - //callWengoMenu - QMenu * callWengoMenu = new QMenu(_qtWengoPhone->getWidget()); - callWengoMenu->setTitle(tr("Call @company@")); - SAFE_CONNECT(callWengoMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); - callWengoMenu->clear(); - _callMenu->addMenu(callWengoMenu); - QtContactMenu::populateWengoCallMenu(callWengoMenu, cWengoPhone); - /// - - //callMobileMenu - QMenu * callMobileMenu = new QMenu(_qtWengoPhone->getWidget()); - callMobileMenu->setTitle(tr("Call Mobile")); - SAFE_CONNECT(callMobileMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); - callMobileMenu->clear(); - _callMenu->addMenu(callMobileMenu); - QtContactMenu::populateMobilePhoneMenu(callMobileMenu, cWengoPhone); - /// - - //callLandlineMenu - QMenu * callLandlineMenu = new QMenu(_qtWengoPhone->getWidget()); - callLandlineMenu->setTitle(tr("Call land line")); - SAFE_CONNECT(callLandlineMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); - callLandlineMenu->clear(); - _callMenu->addMenu(callLandlineMenu); - QtContactMenu::populateHomePhoneMenu(callLandlineMenu, cWengoPhone); - /// - - //callSIPMenu - QMenu * callSIPMenu = new QMenu(_qtWengoPhone->getWidget()); - callSIPMenu->setTitle(tr("Call SIP")); - SAFE_CONNECT(callSIPMenu, SIGNAL(triggered(QAction *)), SLOT(makeCall(QAction *))); - callSIPMenu->clear(); - _callMenu->addMenu(callSIPMenu); - QtContactMenu::populateSipCallMenu(callSIPMenu, cWengoPhone); - /// - -#ifndef DISABLE_FILETRANSFER - //sendFileMenu - QMenu * sendFileMenu = new QMenu(_qtWengoPhone->getWidget()); - sendFileMenu->setTitle(tr("Send File")); - sendFileMenu->setIcon(QIcon(":/pics/actions/send_file.png")); - SAFE_CONNECT(sendFileMenu, SIGNAL(triggered(QAction *)), SLOT(sendFile(QAction *))); - sendFileMenu->clear(); - _trayMenu->addMenu(sendFileMenu); - //TODO: call a new method populateFreeCallMenu with contactId - QtContactMenu::populateWengoUsersContactId(sendFileMenu, cWengoPhone); - /// -#endif -} - -void QtSystray::updateSystrayIcon() { - CWengoPhone & cWengoPhone = _qtWengoPhone->getCWengoPhone(); - CUserProfile * cUserProfile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - - if(cUserProfile) - { - IMAccountList accountList = cUserProfile->getUserProfile().getIMAccountManager().getIMAccountListCopy(); - QtPresencePixmapHelper helper(accountList); - QPixmap icon = helper.createPixmap(SYSTRAY_ICON_TEMPLATE, - SYSTRAY_ICON_CENTERX, - SYSTRAY_ICON_CENTERY, - SYSTRAY_ICON_RADIUS); - _trayIcon->setIcon(icon); - - EnumPresenceState::PresenceState presenceState = cUserProfile->getUserProfile().getPresenceState(); - - switch (presenceState) { - case EnumPresenceState::PresenceStateAway: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Away")); - break; - case EnumPresenceState::PresenceStateOnline: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Online")); - break; - case EnumPresenceState::PresenceStateOffline: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Offline")); - break; - case EnumPresenceState::PresenceStateInvisible: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Invisible")); - break; - case EnumPresenceState::PresenceStateDoNotDisturb: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Do Not Disturb")); - break; - case EnumPresenceState::PresenceStateMulti: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Multiple Status")); - break; - case EnumPresenceState::PresenceStateUnknown: - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Unknown Status")); - break; - default: - LOG_FATAL("unknown presenceState=" + String::fromNumber(presenceState)); - break; - } - } -} - -void QtSystray::userProfileDeleted() { - connectionStateEventHandlerThreadSafe(false); -} - -void QtSystray::phoneLineStateChanged(EnumPhoneLineState::PhoneLineState state) { - bool connected = false; - - switch (state) { - case EnumPhoneLineState::PhoneLineStateUnknown: - break; - case EnumPhoneLineState::PhoneLineStateServerError: - break; - case EnumPhoneLineState::PhoneLineStateTimeout: - break; - case EnumPhoneLineState::PhoneLineStateOk: - connected = true; - break; - case EnumPhoneLineState::PhoneLineStateClosed: - break; - case EnumPhoneLineState::PhoneLineStateProgress: - _trayIcon->setIcon(QPixmap(":/pics/systray/connecting.png")); - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Connecting...")); - return; - default: - LOG_FATAL("unknown state=" + EnumPhoneLineState::toString(state)); - }; - - //connectionStateEventHandlerThreadSafe(connected); -} - -void QtSystray::connectionIsDownEventHandler() { - //typedef PostEvent1 MyPostEvent; - //MyPostEvent * event = new MyPostEvent(boost::bind(&QtSystray::connectionStateEventHandlerThreadSafe, this, _1), false); - //FIXME Replaced by phoneLineStateChanged() - //postEvent(event); -} - -void QtSystray::connectionIsUpEventHandler() { - //typedef PostEvent1 MyPostEvent; - //MyPostEvent * event = new MyPostEvent(boost::bind(&QtSystray::connectionStateEventHandlerThreadSafe, this, _1), true); - //FIXME Replaced by phoneLineStateChanged() - //postEvent(event); -} - -void QtSystray::connectionStateEventHandlerThreadSafe(bool connected) { - if (connected) - { - //_trayIcon->setIcon(QPixmap(":/pics/systray/connecting.png")); - //_trayIcon->setToolTip(tr("@product@") + " - " + tr("Connecting...")); - //updateSystrayIcon(); - } - else { - _trayIcon->setIcon(QPixmap(":/pics/systray/disconnected.png")); - _trayIcon->setToolTip(tr("@product@") + " - " + tr("Internet Connection Error")); - } -} - -void QtSystray::toggleMainWindow() { - // If the wengophone is hidden or minimized, show & raise it, otherwise hide it - if (_qtWengoPhone->getWidget()->isHidden() || _qtWengoPhone->getWidget()->isMinimized() ) { - _qtWengoPhone->getWidget()->showNormal(); - _qtWengoPhone->getWidget()->raise(); - } else { - _qtWengoPhone->getWidget()->hide(); - } -} - -void QtSystray::hide() { - _trayIcon->hide(); -} - -void QtSystray::makeCall(QAction * action) { - CWengoPhone & cWengoPhone = _qtWengoPhone->getCWengoPhone(); - if (action) { - LOG_DEBUG("call=" + action->data().toString().toStdString()); - cWengoPhone.getCUserProfileHandler().getCUserProfile()->makeCall(action->data().toString().toStdString()); - } else { - LOG_FATAL("QAction cannot be NULL"); - } -} - -void QtSystray::startChat(QAction * action) { - if (action) { - QtContactListManager * contactListManager = QtContactListManager::getInstance(); - if (contactListManager) { - LOG_DEBUG("chat=" + action->data().toString().toStdString()); - contactListManager->startChat(action->data().toString()); - } else { - LOG_FATAL("QtContactListManager cannot be NULL"); - } - } else { - LOG_FATAL("QAction cannot be NULL"); - } -} - -void QtSystray::sendSms(QAction * action) { - CWengoPhone & cWengoPhone = _qtWengoPhone->getCWengoPhone(); - if (action) { - CUserProfile * cuserprofile = cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cuserprofile) { - if (_qtWengoPhone->getQtSms() && - cuserprofile->getUserProfile().hasWengoAccount() && - cuserprofile->getUserProfile().getWengoAccount()->isConnected()) { - - _qtWengoPhone->getQtSms()->getWidget()->show(); - _qtWengoPhone->getWidget()->show(); - _qtWengoPhone->getWidget()->setWindowState(_qtWengoPhone->getWidget()->windowState() & ~Qt::WindowMinimized | Qt::WindowActive); - _qtWengoPhone->getQtSms()->setPhoneNumber(action->data().toString()); - } else { - QtNoWengoAlert noWengoAlert(NULL, *_qtWengoPhone); - noWengoAlert.getQDialog()->exec(); - } - } - } else { - LOG_FATAL("QAction cannot be NULL"); - } -} - -void QtSystray::sendFile(QAction * action) { - if (action) { - QtContactListManager * contactListManager = QtContactListManager::getInstance(); - if (contactListManager) { - LOG_DEBUG("sendfile=" + action->data().toString().toStdString()); - contactListManager->sendFile(action->data().toString()); - } - } else { - LOG_FATAL("QAction cannot be NULL"); - } -} - -void QtSystray::languageChanged() { - updateMenu(); -} - -void QtSystray::activated ( QSystemTrayIcon::ActivationReason reason) { -#if defined(OS_LINUX) - if( reason == QSystemTrayIcon::Trigger) - toggleMainWindow(); -#else - if( reason == QSystemTrayIcon::DoubleClick) - toggleMainWindow(); -#endif -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSystray.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSystray.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtSystray.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtSystray.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,106 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSYSTRAY_H -#define OWQTSYSTRAY_H - -#include - -#include - -#include - -#include -#include - -class QtWengoPhone; - -class QMenu; -class QAction; -class QPoint; - -/** - * Systray class. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class QtSystray : public QObjectThreadSafe, public Trackable { - Q_OBJECT -public: - - QtSystray(QObject * parent); - - ~QtSystray(); - - void phoneLineStateChanged(EnumPhoneLineState::PhoneLineState state); - -public Q_SLOTS: - - void updateSystrayIcon(); - - void setTrayMenu(); - - void hide(); - -private Q_SLOTS: - - void toggleMainWindow(); - - void makeCall(QAction * action); - - void startChat(QAction * action); - - void sendSms(QAction * action); - - void sendFile(QAction * action); - - /** - * Re-initializes the systray. - */ - void userProfileDeleted(); - - void languageChanged(); - - void activated ( QSystemTrayIcon::ActivationReason ); - -private: - - void connectionIsUpEventHandler(); - - void connectionIsDownEventHandler(); - - void connectionStateEventHandlerThreadSafe(bool connected); - - QMenu * createStatusMenu(); - - void updateMenu(); - - void initThreadSafe() { } - - QtWengoPhone * _qtWengoPhone; - - QMenu * _trayMenu; - - QMenu * _callMenu; - - QSystemTrayIcon * _trayIcon; -}; - -#endif //OWQTSYSTRAY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtToolBar.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtToolBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtToolBar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtToolBar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,701 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtToolBar.h" - -#include "ui_WengoPhoneWindow.h" - -#include - -#include "QtWengoPhone.h" -#include "QtAbout.h" -#include "QtNoWengoAlert.h" -#include "profile/QtProfileDetails.h" -#include "profile/QtUserProfileHandler.h" -#include "config/QtWengoConfigDialog.h" -#include "webservices/sms/QtSms.h" -#include "phonecall/QtContactCallListWidget.h" -#include "phonecall/QtPhoneCall.h" -#include "contactlist/QtContactList.h" -#include "filetransfer/QtFileTransfer.h" -#include "filetransfer/QtFileTransferWidget.h" -#include "conference/QtConferenceCallWidget.h" - -#include "webdirectory/QtWebDirectory.h" - -#include -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -//#include - -static const int TOOLBAR_BUTTON_MINIMUM_WIDTH = 60; - -void QtToolBar::connectOrHide(bool condition, QAction* action, QObject* receiver, const char* slot) { - if (condition) { - SAFE_CONNECT_RECEIVER(action, SIGNAL(triggered()), receiver, slot); - } else { -#if QT_VERSION >= 0x040200 - Q_FOREACH(QWidget* widget, action->associatedWidgets()) { - widget->removeAction(action); - } -#else - Q_FOREACH(QMenu* menu, _ui->menuBar->findChildren()) { - menu->removeAction(action); - } - _ui->toolBar->removeAction(action); -#endif - } -} - - -void QtToolBar::connectOrHide(WsUrl::Page page, QAction* action, QObject* receiver, const char* slot) { - connectOrHide(WsUrl::hasPage(page), action, receiver, slot); -} - - -QtToolBar::QtToolBar(QtWengoPhone & qtWengoPhone, Ui::WengoPhoneWindow * qtWengoPhoneUi, QWidget * parent) - : QObject(parent), - _qtWengoPhone(qtWengoPhone), - _cWengoPhone(_qtWengoPhone.getCWengoPhone()) { - - _ui = qtWengoPhoneUi; - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - bool canSendSms = config.getSmsFeatureEnabled(); - bool canDoConference = config.getAudioConferenceFeatureEnabled(); - - SAFE_CONNECT(&_qtWengoPhone, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); - - // actions initialization - _userIsLogged = false; - updateActionsAccordingToUserStatus(); - //// - - //menuWengo - connectOrHide(WsUrl::Account, _ui->actionShowWengoAccount, this, SLOT(showWengoAccount()) ); - SAFE_CONNECT(_ui->actionEditMyProfile, SIGNAL(triggered()), SLOT(editMyProfile())); - SAFE_CONNECT(_ui->actionLogOff, SIGNAL(triggered()), SLOT(logOff())); - connectOrHide(WsUrl::CallOut, _ui->actionWengoServices, this, SLOT(showWengoServices()) ); - SAFE_CONNECT_RECEIVER(_ui->actionClose, SIGNAL(triggered()), &_qtWengoPhone, SLOT(closeWindow())); - SAFE_CONNECT_RECEIVER(_ui->actionQuit, SIGNAL(triggered()), &_qtWengoPhone, SLOT(prepareToExitApplication())); - - //menuContacts - SAFE_CONNECT(_ui->actionAddContact, SIGNAL(triggered()), SLOT(addContact())); - connectOrHide(WsUrl::Directory, _ui->actionSearchWengoContact, this, SLOT(searchWengoContact()) ); - SAFE_CONNECT(_ui->actionShowHideOfflineContacts, SIGNAL(triggered()), SLOT(showHideOfflineContacts())); - SAFE_CONNECT(_ui->actionShowHideContactGroups, SIGNAL(triggered()), SLOT(showHideContactGroups())); - - //menuActions - connectOrHide(canDoConference, _ui->actionCreateConferenceCall, this, SLOT(createConferenceCall())); - connectOrHide(canSendSms, _ui->actionSendSms, this, SLOT(sendSms())); - SAFE_CONNECT(_ui->actionAcceptCall, SIGNAL(triggered()), SLOT(acceptCall())); - SAFE_CONNECT(_ui->actionHangUpCall, SIGNAL(triggered()), SLOT(hangUpCall())); - SAFE_CONNECT(_ui->actionHoldResumeCall, SIGNAL(triggered()), SLOT(holdResumeCall())); - - //menuHelp - connectOrHide(WsUrl::Forum, _ui->actionShowWengoForum, this, SLOT(showWengoForum())); - connectOrHide(WsUrl::FAQ, _ui->actionWengoFAQ, this, SLOT(showWengoFAQ())); - SAFE_CONNECT(_ui->actionShowAbout, SIGNAL(triggered()), SLOT(showAbout())); - - //menuTools - SAFE_CONNECT(_ui->actionShowConfig, SIGNAL(triggered()), SLOT(showConfig())); - SAFE_CONNECT(_ui->actionShowFileTransfer, SIGNAL(triggered()), SLOT(showFileTransferWindow())); - SAFE_CONNECT(_ui->actionToggleVideo, SIGNAL(triggered()), SLOT(toggleVideo())); - - //menuClearHistory - SAFE_CONNECT(_ui->actionClearOutgoingCalls, SIGNAL(triggered()), SLOT(clearHistoryOutgoingCalls())); - SAFE_CONNECT(_ui->actionClearIncomingCalls, SIGNAL(triggered()), SLOT(clearHistoryIncomingCalls())); - SAFE_CONNECT(_ui->actionClearMissedCalls, SIGNAL(triggered()), SLOT(clearHistoryMissedCalls())); - SAFE_CONNECT(_ui->actionClearRejectedCalls, SIGNAL(triggered()), SLOT(clearHistoryRejectedCalls())); - SAFE_CONNECT(_ui->actionClearChatSessions, SIGNAL(triggered()), SLOT(clearHistoryChatSessions())); - connectOrHide(canSendSms, _ui->actionClearSms, this, SLOT(clearHistorySms())); - SAFE_CONNECT(_ui->actionClearAll, SIGNAL(triggered()), SLOT(clearHistoryAll())); - - //Open chat window button - _ui->actionOpenChatWindow->setEnabled(false); - SAFE_CONNECT(_ui->actionOpenChatWindow, SIGNAL(triggered()), SLOT(showChatWindow())); - - //Get notified of config changes - config.valueChangedEvent += boost::bind(&QtToolBar::configChangedEventHandler, this, _1); - SAFE_CONNECT(this, SIGNAL(configChanged(QString)), SLOT(slotConfigChanged(QString)) ); - - // Update toolbar mode - updateToolBar(); - - //a menu is about to be displayed - SAFE_CONNECT(_ui->menuActions, SIGNAL(aboutToShow()), SLOT(updateMenuActions())); - -#ifndef CUSTOM_ACCOUNT - _ui->actionSearchWengoContact->setVisible(false); -#endif - -#ifdef DISABLE_SMS - _ui->actionClearSms->setVisible(false); - _ui->actionSendSms->setVisible(false); -#endif - -#ifdef DISABLE_FILETRANSFER - _ui->actionShowFileTransfer->setVisible(false); -#endif - -} - -QtToolBar::~QtToolBar() { -} - -QWidget * QtToolBar::getWidget() const { - return _qtWengoPhone.getWidget(); -} - -void QtToolBar::showWengoAccount() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - //WARNING should not be called when no UserProfile set - WsUrl::showWengoAccount(); - } -} - -void QtToolBar::editMyProfile() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - QWidget * parent = qobject_cast(sender()->parent()); - - //FIXME this method should not be called if no UserProfile has been set - QtProfileDetails qtProfileDetails(*_cWengoPhone.getCUserProfileHandler().getCUserProfile(), - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile(), - parent, tr("Edit My Profile")); - - //TODO UserProfile must be updated if QtProfileDetails was accepted - qtProfileDetails.show(); - } -} - -void QtToolBar::addContact() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - QWidget * parent = qobject_cast(sender()->parent()); - - //FIXME this method should not be called if no UserProfile has been set - ContactProfile contactProfile; - QtProfileDetails qtProfileDetails(*_cWengoPhone.getCUserProfileHandler().getCUserProfile(), - contactProfile, parent, tr("Add a Contact")); - if (qtProfileDetails.show()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().addContact(contactProfile); - } - } -} - -void QtToolBar::showConfig() { - QtWengoConfigDialog::showInstance(_cWengoPhone); -} - -void QtToolBar::updateShowHideOfflineContactsAction() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString text; - if (config.getShowOfflineContacts()) { - text = tr("Hide Unavailable Contacts"); - } else { - text = tr("Show Unavailable Contacts"); - } - - _ui->actionShowHideOfflineContacts->setText(text); -} - -void QtToolBar::updateShowHideContactGroupsAction() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString text; - if (config.getShowGroups()) { - text = tr("Hide Groups"); - } else { - text = tr("Show Groups"); - } - - _ui->actionShowHideContactGroups->setText(text); -} - -void QtToolBar::updateToggleVideoAction() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - bool videoEnabled = config.getVideoEnable(); - QString text; - if (videoEnabled) { - text = tr("Disable &Video Calls"); - } else { - text = tr("Enable &Video Calls"); - } - - _ui->actionToggleVideo->setText(text); - _ui->actionToggleVideo->setEnabled(!config.getVideoWebcamDevice().empty()); -} - -void QtToolBar::showWengoForum() { - WsUrl::showWengoForum(); -} - -void QtToolBar::showWengoServices() { - WsUrl::showWengoCallOut(); -} - -void QtToolBar::searchWengoContact() { - - QtWebDirectory * qtWebDirectory = _qtWengoPhone.getQtWebDirectory(); - if (qtWebDirectory) { - qtWebDirectory->raise(); - } -} - -void QtToolBar::showAbout() { - QWidget * parent = qobject_cast(sender()->parent()); - static QtAbout * qtAbout = new QtAbout(parent); - qtAbout->getWidget()->show(); -} - -void QtToolBar::sendSms() { - - CUserProfile * cuserprofile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cuserprofile) { - if (cuserprofile->getUserProfile().hasWengoAccount()) { - QtSms * qtSms = _qtWengoPhone.getQtSms(); - if (qtSms) { - QWidget * parent = qobject_cast(sender()->parent()); - qtSms->getWidget()->setParent(parent, Qt::Dialog); - qtSms->getWidget()->show(); - } - return; - } else { - QtNoWengoAlert noWengoAlert(NULL, _qtWengoPhone); - noWengoAlert.getQDialog()->exec(); - } - } -} - -void QtToolBar::createConferenceCall() { - - CUserProfile * cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cUserProfile) { - - IPhoneLine * phoneLine = cUserProfile->getUserProfile().getActivePhoneLine(); - if (phoneLine) { - if (phoneLine->getActivePhoneCall()) { - QMessageBox::information( - _qtWengoPhone.getWidget(), - tr("@product@ - Proceed Conference"), - tr("Conference can't be started while there are active phone calls.

" - "Finish all phone calls and try again.") - ); - } else { - QtConferenceCallWidget conferenceDialog(_qtWengoPhone.getWidget(), _cWengoPhone, phoneLine); - conferenceDialog.exec(); - } - } - } -} - -void QtToolBar::showWengoFAQ() { - WsUrl::showWengoFAQ(); -} - -void QtToolBar::showHideOfflineContacts() { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - if (qtContactList) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::GENERAL_SHOW_OFFLINE_CONTACTS_KEY, !config.getShowOfflineContacts()); - qtContactList->updatePresentation(); - - updateShowHideOfflineContactsAction(); - } -} - -void QtToolBar::showHideContactGroups() { - QtContactList * qtContactList = _qtWengoPhone.getQtContactList(); - if (qtContactList) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::GENERAL_SHOW_GROUPS_KEY, !config.getShowGroups()); - qtContactList->updatePresentation(); - - updateShowHideContactGroupsAction(); - } -} - -void QtToolBar::toggleVideo() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.set(Config::VIDEO_ENABLE_KEY, !config.getVideoEnable()); -} - -void QtToolBar::clearHistoryOutgoingCalls() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::OutgoingCall); - } -} - -void QtToolBar::clearHistoryIncomingCalls() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::IncomingCall); - } -} - -void QtToolBar::clearHistoryMissedCalls() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::MissedCall); - } -} - -void QtToolBar::clearHistoryRejectedCalls() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::RejectedCall); - } -} - -void QtToolBar::clearHistoryChatSessions() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::ChatSession); - } -} - -void QtToolBar::clearHistorySms() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::OutgoingSmsOk); - } -} - -void QtToolBar::clearHistoryAll() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile() && - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCHistory()->clear(HistoryMemento::Any); - } -} - -void QtToolBar::logOff() { - if (_userIsLogged) { - // check for pending calls - CUserProfile *cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cUserProfile) { - CPhoneLine *cPhoneLine = cUserProfile->getCPhoneLine(); - if (cPhoneLine) { - if (cPhoneLine->hasPendingCalls()) { - - if (QMessageBox::question( - _qtWengoPhone.getWidget(), - tr("@product@ - Warning"), - tr("You have unfinished call(s).") + "\n" + - tr("Are you sure you want to log off?"), - tr("&Log Off"), - tr("&Cancel") - ) == 1) { - return; - } - } - } - } - //// - // Close Chat - _qtWengoPhone.closeChatWindow (); - - // disable menubar and toolbar to avoid crashes - //_ui->menuBar->setEnabled(false); - _ui->actionLogOff->setEnabled(false); - _ui->toolBar->setEnabled(false); - //// - } - - // Calling this when the user has already been logged off is harmless and - // will bring the login dialog. - _cWengoPhone.getCUserProfileHandler().logOff(); -} - -int QtToolBar::findFirstCallTab() { - QtContactCallListWidget * widget; - for (int i = 0; i < _ui->tabWidget->count(); i++) { - widget = dynamic_cast(_ui->tabWidget->widget(i)); - if (widget) { - return i; - } - } - return -1; -} - -void QtToolBar::acceptCall() { - int callIndex = findFirstCallTab(); - if (callIndex == -1) { - return; - } - QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); - if (!widget) { - return; - } - - QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); - if (qtPhoneCall) { - qtPhoneCall->acceptCall(); - } -} - -void QtToolBar::holdResumeCall() { - int callIndex = findFirstCallTab(); - if (callIndex == -1) { - return; - } - QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); - if (!widget) { - return; - } - - QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); - if (qtPhoneCall) { - qtPhoneCall->holdOrResume(); - } -} - -void QtToolBar::hangUpCall() { - int callIndex = findFirstCallTab(); - if (callIndex == -1) { - return; - } - QtContactCallListWidget * widget; - - widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); - if (!widget) { - return; - } - widget->hangup(); -} - -void QtToolBar::updateMenuActions() { - - bool accept = false, holdResume = false, hangUp = false; - - int callIndex = findFirstCallTab(); - if (callIndex > 0) { - - QtContactCallListWidget * widget = (QtContactCallListWidget *) _ui->tabWidget->widget(callIndex); - if (widget) { - - QtPhoneCall * qtPhoneCall = widget->getFirstQtPhoneCall(); - - if (qtPhoneCall) { - - switch (qtPhoneCall->getCPhoneCall().getState()) { - - case EnumPhoneCallState::PhoneCallStateResumed: - case EnumPhoneCallState::PhoneCallStateTalking: { - holdResume = true; - hangUp = true; - break; - } - - case EnumPhoneCallState::PhoneCallStateDialing: - case EnumPhoneCallState::PhoneCallStateRinging: { - hangUp = true; - break; - } - - case EnumPhoneCallState::PhoneCallStateIncoming: { - accept = true; - hangUp = true; - break; - } - - case EnumPhoneCallState::PhoneCallStateHold: { - holdResume= true; - hangUp = true; - break; - } - - case EnumPhoneCallState::PhoneCallStateError: { - hangUp = true; - break; - } - - // other cases -> set all to false - case EnumPhoneCallState::PhoneCallStateMissed : - case EnumPhoneCallState::PhoneCallStateRedirected: - case EnumPhoneCallState::PhoneCallStateClosed: - case EnumPhoneCallState::PhoneCallStateUnknown: - default: { - //accept = holdResume = hangUp = false; - } - } - } - } - } - - _ui->actionAcceptCall->setEnabled(accept); - _ui->actionHangUpCall->setEnabled(hangUp); - _ui->actionHoldResumeCall->setEnabled(holdResume); -} - -void QtToolBar::showChatWindow() { - QWidget * chatWindow = _qtWengoPhone.getChatWindow(); - if (chatWindow) { - chatWindow->showNormal(); - chatWindow->activateWindow(); - } -} - -void QtToolBar::showFileTransferWindow() { - - QtFileTransfer * fileTransfer = _qtWengoPhone.getFileTransfer(); - if (fileTransfer) { - fileTransfer->getFileTransferWidget()->show(); - } -} - -void QtToolBar::retranslateUi() { - updateShowHideContactGroupsAction(); - updateShowHideOfflineContactsAction(); - updateToggleVideoAction(); - updateActionsAccordingToUserStatus(); -} - -void QtToolBar::configChangedEventHandler(const std::string & key) { - configChanged(QString::fromStdString(key)); -} - -void QtToolBar::slotConfigChanged(QString qkey) { - std::string key = qkey.toStdString(); - if (key == Config::VIDEO_ENABLE_KEY || key == Config::VIDEO_WEBCAM_DEVICE_KEY) { - updateToggleVideoAction(); - } - - if (key == Config::GENERAL_TOOLBARMODE_KEY) { - updateToolBar(); - } -} - -void QtToolBar::updateToolBar() { - -#if defined(OS_MACOSX) - EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::ToolBarModeIconsOnly; -#else - Config & config = ConfigManager::getInstance().getCurrentConfig(); - std::string text = config.getToolBarMode(); - EnumToolBarMode::ToolBarMode toolBarMode = EnumToolBarMode::toToolBarMode(text); -#endif - - if (toolBarMode == EnumToolBarMode::ToolBarModeHidden) { - _ui->toolBar->hide(); - - } else if (toolBarMode == EnumToolBarMode::ToolBarModeIconsOnly) { - _ui->toolBar->show(); - _ui->toolBar->setToolButtonStyle(Qt::ToolButtonIconOnly); - - // Restore icon width in case it was set by TextUnderIcon mode - QSize size = _ui->toolBar->iconSize(); - size.setWidth(size.height()); - _ui->toolBar->setIconSize(size); - - } else if (toolBarMode == EnumToolBarMode::ToolBarModeTextUnderIcons) { - _ui->toolBar->show(); - _ui->toolBar->setToolButtonStyle(Qt::ToolButtonTextUnderIcon); - QSize size = _ui->toolBar->iconSize(); - size.setWidth(TOOLBAR_BUTTON_MINIMUM_WIDTH); - _ui->toolBar->setIconSize(size); - - } else { - LOG_WARN("Unknown toolbar mode: " + toolBarMode); - } -} - -void QtToolBar::userProfileDeleted() { - _userIsLogged = false; - updateActionsAccordingToUserStatus(); -} - -void QtToolBar::userProfileIsInitialized() { - _userIsLogged = true; - updateActionsAccordingToUserStatus(); -} - -void QtToolBar::enableMenuBar() { - _ui->menuBar->setEnabled(true); -} - -void QtToolBar::updateActionsAccordingToUserStatus() { - // We need to use a boolean to keep trace of the user status because when - // userProfileDeleted is called, the user profile is still alive, even if - // it's not for a long time. - if (_userIsLogged) { - _ui->actionLogOff->setText(tr("Log &Off...")); - } else { - _ui->actionLogOff->setText(tr("Log &On...")); - } - //_ui->menuBar->setEnabled(_userIsLogged); - _ui->toolBar->setEnabled(_userIsLogged); - - // This list contains all actions which needs a logged user to work - QList loggedInActions; - loggedInActions - << _ui->actionShowWengoAccount - << _ui->actionAddContact - << _ui->actionSendSms - << _ui->actionEditMyProfile - << _ui->actionCreateConferenceCall - << _ui->actionShowHideOfflineContacts - << _ui->actionClearChatSessions - << _ui->actionClearAll - << _ui->actionSearchWengoContact - << _ui->actionAcceptCall - << _ui->actionHangUpCall - << _ui->actionHoldResumeCall - << _ui->actionShowHideContactGroups - << _ui->actionOpenChatWindow - << _ui->actionClearOutgoingCalls - << _ui->actionClearIncomingCalls - << _ui->actionClearMissedCalls - << _ui->actionToggleVideo - << _ui->actionClearSms - << _ui->actionShowFileTransfer - << _ui->actionClearRejectedCalls - ; - Q_FOREACH(QAction* action, loggedInActions) { - action->setEnabled(_userIsLogged); - } - -} - -void QtToolBar::tryingToConnect() -{ - _ui->actionLogOff->setText(tr("Log &Off...")); - _ui->actionLogOff->setEnabled(true); -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtToolBar.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtToolBar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtToolBar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtToolBar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,179 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTTOOLBAR_H -#define OWQTTOOLBAR_H - -#include - -#include - -#include - -class QtWengoPhone; -class CWengoPhone; - -class QAction; -class QMenu; -class QWidget; - -namespace Ui { class WengoPhoneWindow; } - -/** - * Tool bar and menu actions from the main window. - * - * @author Tanguy Krotoff - */ -class QtToolBar : public QObject, NonCopyable { - Q_OBJECT -public: - - QtToolBar(QtWengoPhone & qtWengoPhone, Ui::WengoPhoneWindow * qtWengoPhoneUi, QWidget * parent); - - ~QtToolBar(); - - QWidget * getWidget() const; - - - /** - * Makes sure the toggle actions (like show/hide hidden contacts and - * show/hide groups) are correctly translated - */ - void retranslateUi(); - - /** - * Configure toolbar according to the settings from the config file - */ - void updateToolBar(); - -Q_SIGNALS: - void configChanged(QString key); - -public Q_SLOTS: - - void showWengoAccount(); - - void editMyProfile(); - - void addContact(); - - void showConfig(); - - void showWengoForum(); - - void showAbout(); - - void sendSms(); - - void showWengoFAQ(); - - void showWengoServices(); - - void showHideContactGroups(); - - void showHideOfflineContacts(); - - void createConferenceCall(); - - void clearHistoryOutgoingCalls(); - - void clearHistoryIncomingCalls(); - - void clearHistoryMissedCalls(); - - void clearHistoryRejectedCalls(); - - void clearHistoryChatSessions(); - - void clearHistorySms(); - - void clearHistoryAll(); - - void searchWengoContact(); - - void logOff(); - - void acceptCall(); - - void holdResumeCall(); - - void hangUpCall(); - - void showChatWindow(); - - void showFileTransferWindow(); - - void toggleVideo(); - - void slotConfigChanged(QString key); - - void userProfileIsInitialized(); - - void enableMenuBar(); - - void updateMenuActions(); - - void tryingToConnect(); - -private Q_SLOTS: - - /** - * the userProfile has been deleted - */ - void userProfileDeleted(); - -private: - void updateActionsAccordingToUserStatus(); - - /** - * Ugly code to remove. - */ - int findFirstCallTab(); - - void updateShowHideContactGroupsAction(); - - void updateShowHideOfflineContactsAction(); - - void updateToggleVideoAction(); - - void configChangedEventHandler(const std::string & key); - - /** - * If page exists, connect action to receiver::slot, otherwise, remove - * action from any widget it's connected to (menu, toolbar...) - */ - void connectOrHide(WsUrl::Page page, QAction* action, QObject* receiver, const char* slot); - - - /** - * If condition is true, connect action to receiver::slot, otherwise, - * remove action from any widget it's connected to (menu, toolbar...) - */ - void connectOrHide(bool condition, QAction* action, QObject* receiver, const char* slot); - - QtWengoPhone & _qtWengoPhone; - - CWengoPhone & _cWengoPhone; - - Ui::WengoPhoneWindow * _ui; - - bool _userIsLogged; -}; - -#endif //OWQTTOOLBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoPhone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,902 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtWengoPhone.h" - -#include "ui_WengoPhoneWindow.h" - -#include -#include - -#include - -#include "QtSystray.h" -#include "QtHttpProxyLogin.h" -#include "QtDialpad.h" -#include "QtIdle.h" -#include "QtLanguage.h" -#include "QtToolBar.h" -#include "QtBrowserWidget.h" -#include "QtIMAccountMonitor.h" -#include "callbar/QtCallBar.h" -#include "callbar/QtPhoneComboBox.h" -#include "contactlist/QtContactList.h" -#include "filetransfer/QtFileTransfer.h" -#include "history/QtHistoryWidget.h" -#include "imaccount/QtIMAccountManager.h" -#include "phonecall/QtContactCallListWidget.h" -#include "phonecall/QtPhoneCall.h" -#include "profile/QtProfileDetails.h" -#include "profilebar/QtProfileBar.h" -#include "statusbar/QtStatusBar.h" -#include "webservices/sms/QtSms.h" - -#include "webdirectory/QtWebDirectory.h" - -#include -#include -#include -#include -#include - -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -#include -#include - -#include -#include -#include -#include -#include - -#include - -#if defined(OS_MACOSX) - #include -#endif - -static const char * CSS_DIR = "css"; - -using namespace std; - -QtWengoPhone::QtWengoPhone(CWengoPhone & cWengoPhone) - : QObjectThreadSafe(NULL), - _cWengoPhone(cWengoPhone) { - - _wengoPhoneWindow = NULL; - _qtSystray = NULL; - _qtSms = NULL; - _qtContactList = NULL; - _qtHistoryWidget = NULL; - _qtContactCallListWidget = NULL; - _qtIdle = NULL; - _qtLanguage = NULL; - _qtStatusBar = NULL; - _qtFileTransfer = NULL; - _qtBrowserWidget = NULL; - _chatWindow = NULL; - _activeTabBeforeCall = NULL; - _qtWebDirectory = NULL; - - NetworkProxyDiscovery::getInstance().proxyNeedsAuthenticationEvent += - boost::bind(&QtWengoPhone::proxyNeedsAuthenticationEventHandler, this, _1, _2); - NetworkProxyDiscovery::getInstance().wrongProxyAuthenticationEvent += - boost::bind(&QtWengoPhone::wrongProxyAuthenticationEventHandler, this, _1, _2); - - //Check if the event has not already been sent - if (NetworkProxyDiscovery::getInstance().getState() == - NetworkProxyDiscovery::NetworkProxyDiscoveryStateNeedsAuthentication) { - proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery::getInstance(), - NetworkProxyDiscovery::getInstance().getNetworkProxy()); - } - - qRegisterMetaType("QVariant"); - - //Initialize libwebcam for the Qt thread. - WebcamDriver::apiInitialize(); - //// - - initUi(); - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtWengoPhone::initThreadSafe, this)); - postEvent(event); -} - -QtWengoPhone::~QtWengoPhone() { - //TODO delete created objects -} - -void QtWengoPhone::initUi() { - // Init parts of the UI which do not rely on Control layer - QApplication::setQuitOnLastWindowClosed(false); - - loadStyleSheets(); - - //Translation - _qtLanguage = new QtLanguage(this); - - _wengoPhoneWindow = new QMainWindow(NULL); - - _ui = new Ui::WengoPhoneWindow(); - _ui->setupUi(_wengoPhoneWindow); - _ui->tabWidget->setDocumentMode(true); - -#ifndef CUSTOM_ACCOUNT - _ui->actionShowWengoAccount->setVisible(false); -#endif - -#ifdef DISABLE_FILETRANSFER - _ui->actionShowFileTransfer->setVisible(false); -#endif - -#ifdef OS_MACOSX - _ui->actionShowAbout->setMenuRole(QAction::AboutRole); - _ui->actionShowConfig->setMenuRole(QAction::PreferencesRole); - _ui->actionQuit->setMenuRole(QAction::QuitRole); - //fixMacOSXMenus(); -#endif - - LANGUAGE_CHANGE(_wengoPhoneWindow); - -#ifdef OS_LINUX - const std::string &applicationIconPath = ConfigManager::getInstance().getCurrentConfig().getApplicationIconPath(); - _wengoPhoneWindow->setWindowIcon(QIcon(QString::fromStdString(applicationIconPath))); -#endif - - //Install the close event filter - CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(closeWindow())); - _wengoPhoneWindow->installEventFilter(closeEventFilter); - - //QtCallBar - _ui->callBar->getQtPhoneComboBox()->setQtWengoPhone(this); - - //QtToolBar - _qtToolBar = new QtToolBar(*this, _ui, _wengoPhoneWindow); - - //phoneComboBox - SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxClicked()), SLOT(phoneComboBoxClicked())); - - //Buttons initialization - initCallButtons(); - - //QtStatusBar - _qtStatusBar = new QtStatusBar(this, _ui->statusBar); - -#if defined(CUSTOM_ACCOUNT) - _qtWebDirectory = new QtWebDirectory(0); -#endif - - installQtBrowserWidget(); - -#if defined(OS_MACOSX) - _wengoPhoneWindow->setUnifiedTitleAndToolBarOnMac(true); -#endif - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - mainWindowGeometry(config); -} - -void QtWengoPhone::initThreadSafe() { - // The code in this method relies on the Control layer - _qtSystray = new QtSystray(this); - - updatePresentation(); -} - -void QtWengoPhone::loadStyleSheets() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QDir dir(QString::fromStdString(config.getResourcesDir()) + CSS_DIR); - - QStringList filters; - filters << "*.css"; - QStringList cssList; - Q_FOREACH(QFileInfo fileInfo, dir.entryInfoList(filters)) { - QString path = fileInfo.absoluteFilePath(); - QFile file(path); - if (!file.open(QIODevice::ReadOnly)) { - LOG_WARN("Can't open " + path.toStdString()); - continue; - } - QByteArray content = file.readAll(); - cssList << QString::fromUtf8(content); - } - QString styleSheet = cssList.join("\n"); - qApp->setStyleSheet(styleSheet); -} - -void QtWengoPhone::mainWindowGeometry(Config & config) { - //default position and size given by Qt - QPoint defaultPos = _wengoPhoneWindow->pos(); - QSize defaultSize = _wengoPhoneWindow->size(); - - int profileWidth = config.getProfileWidth(); - if (profileWidth == 0) { - // Make sure the toolbar is fully visible - profileWidth = qMax( - _ui->toolBar->sizeHint().width(), - _wengoPhoneWindow->sizeHint().width() - ); - } - - int profileHeight = config.getProfileHeight(); - - //Main window size and position saved - _wengoPhoneWindow->resize(profileWidth, profileHeight); - _wengoPhoneWindow->move(QPoint(config.getProfilePosX(), config.getProfilePoxY())); - - //tests if the Wengophone is visible, if not sends it back to its default position and size - QDesktopWidget* desktop = QApplication::desktop(); - if (desktop->screenNumber(_wengoPhoneWindow) == -1) { - LOG_DEBUG("Main window is NOT visible !!"); - _wengoPhoneWindow->resize(defaultSize); - _wengoPhoneWindow->move(defaultPos); - } -} - -QWidget * QtWengoPhone::getWidget() const { - return _wengoPhoneWindow; -} - -QtProfileBar * QtWengoPhone::getQtProfileBar() const { - return _ui->profileBar; -} - -QtBrowserWidget * QtWengoPhone::getQtBrowserWidget() const { - return _qtBrowserWidget; -} - -CWengoPhone & QtWengoPhone::getCWengoPhone() const { - return _cWengoPhone; -} - -void QtWengoPhone::setQtSms(QtSms * qtSms) { - _qtSms = qtSms; -} - -QtSms * QtWengoPhone::getQtSms() const { - return _qtSms; -} - -QtWebDirectory * QtWengoPhone::getQtWebDirectory() const { - return _qtWebDirectory; -} - -QtToolBar & QtWengoPhone::getQtToolBar() const { - return *_qtToolBar; -} - -QtStatusBar & QtWengoPhone::getQtStatusBar() const { - return *_qtStatusBar; -} - -QtSystray & QtWengoPhone::getQtSystray() const { - return *_qtSystray; -} - -QtCallBar & QtWengoPhone::getQtCallBar() const { - return *_ui->callBar; -} - -void QtWengoPhone::setChatWindow(QWidget * chatWindow) { - if (!chatWindow) { - _chatWindow = NULL; - _ui->actionOpenChatWindow->setEnabled(false); - } - else { - _chatWindow = chatWindow; - _ui->actionOpenChatWindow->setEnabled(true); - } -} - -QWidget * QtWengoPhone::getChatWindow() const { - return _chatWindow; -} - -void QtWengoPhone::closeChatWindow() { - if (_chatWindow) - { - ((QtChatWindow *)_chatWindow)->closeAllTabs (); - } -} - -void QtWengoPhone::setQtContactList(QtContactList * qtContactList) { - _qtContactList = qtContactList; - - if (!_ui->tabContactList->layout()) { - Widget::createLayout(_ui->tabContactList); - } - - _ui->tabContactList->layout()->addWidget(_qtContactList->getWidget()); - - LOG_DEBUG("QtContactList added"); -} - -QtContactList * QtWengoPhone::getQtContactList() const { - return _qtContactList; -} - -void QtWengoPhone::setQtHistoryWidget(QtHistoryWidget * qtHistoryWidget) { - _qtHistoryWidget = qtHistoryWidget; - _qtHistoryWidget->setQtToolBar(_qtToolBar); - _qtHistoryWidget->setQtCallBar(_ui->callBar); - - if (!_ui->tabHistory->layout()) { - Widget::createLayout(_ui->tabHistory); - } - - _qtHistoryWidget->getWidget()->setParent(_ui->tabHistory); - _ui->tabHistory->layout()->addWidget(_qtHistoryWidget->getWidget()); - - LOG_DEBUG("QtHistoryWidget added"); -} - -void QtWengoPhone::setQtDialpad(QtDialpad * qtDialpad) { - Widget::createLayout(_ui->tabDialpad)->addWidget(qtDialpad); - LOG_DEBUG("QtDialpad added"); -} - -void QtWengoPhone::initCallButtons() { - //callButton - SAFE_CONNECT(_ui->callBar, SIGNAL(callButtonClicked()), SLOT(callButtonClicked())); - enableCallButton(); - - //hangUpButton - SAFE_CONNECT(_ui->callBar, SIGNAL(hangUpButtonClicked()), SLOT(hangUpButtonClicked())); - _ui->callBar->setEnabledHangUpButton(false); - - //phoneComboBox - SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxReturnPressed()), SLOT(callButtonClicked())); - SAFE_CONNECT(_ui->callBar, SIGNAL(phoneComboBoxEditTextChanged(const QString &)), SLOT(enableCallButton())); -} - -void QtWengoPhone::enableCallButton() { - std::string phoneNumber = _ui->callBar->getPhoneComboBoxCurrentText(); - _ui->callBar->setEnabledCallButton(!phoneNumber.empty()); -} - -void QtWengoPhone::hangUpButtonClicked() { - QtContactCallListWidget * widget = - dynamic_cast(_ui->tabWidget->currentWidget()); - if (widget) { - widget->hangup(); - } -} - -void QtWengoPhone::callButtonClicked() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - std::string phoneNumber = _ui->callBar->getPhoneComboBoxCurrentText(); - if (!phoneNumber.empty()) { - CUserProfile * cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - cUserProfile->makeCallErrorEvent += boost::bind(&QtWengoPhone::makeCallErrorEventHandler, this, _2); - cUserProfile->makeCall(phoneNumber); - } - _ui->callBar->clearPhoneComboBoxEditText(); - } -} - -void QtWengoPhone::setActiveTabBeforeCallCurrent() { - _ui->tabWidget->setCurrentWidget(_activeTabBeforeCall); -} - -void QtWengoPhone::makeCallErrorEventHandler(EnumMakeCallError::MakeCallError error) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtWengoPhone::makeCallErrorEventHandlerThreadSafe, this, _1), error); - postEvent(event); -} - -void QtWengoPhone::makeCallErrorEventHandlerThreadSafe(EnumMakeCallError::MakeCallError error) { - QString message; - switch (error) { - case EnumMakeCallError::CallNotHeld: - message = tr("Please hold all the phone calls before placing a new one"); - break; - case EnumMakeCallError::NotConnected: - message = tr("Can't place a call, you are not connected"); - break; - case EnumMakeCallError::EmptyPhoneNumber: - message = tr("You must enter a phone number"); - break; - case EnumMakeCallError::SipError: - message = tr("An error has occured trying to place the call"); - break; - case EnumMakeCallError::NoError: - LOG_FATAL("Should not happen"); - break; - } - QMessageBox::warning(_wengoPhoneWindow, tr("@product@ - Call Error"), - message, QMessageBox::Ok); -} - -void QtWengoPhone::addPhoneCall(QtPhoneCall * qtPhoneCall) { - _activeTabBeforeCall = _ui->tabWidget->currentWidget(); - - QtContactCallListWidget * qtContactCallListWidget = new QtContactCallListWidget(_cWengoPhone, NULL); - SAFE_CONNECT(qtContactCallListWidget, SIGNAL(aboutToClose()), SLOT(setActiveTabBeforeCallCurrent()) ); - _ui->tabWidget->addTab(qtContactCallListWidget, tr("Call")); - _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); - qtContactCallListWidget->addPhoneCall(qtPhoneCall); - - _ui->callBar->setEnabledHangUpButton(true); - - if (qtPhoneCall->isIncoming()) { - _ui->callBar->setEnabledCallButton(true); - } -} - -void QtWengoPhone::addToConference(QString phoneNumber, PhoneCall * targetCall) { - //FIXME conference has to be 100% rewritten... - /*bool conferenceAlreadyStarted = false; - - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - int nbtab = _ui->tabWidget->count(); - - for (int i = 0; i < nbtab; i++) { - if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) { - return; - } - - for (int j = 0; j < _ui->tabWidget->count(); j++) { - QtContactCallListWidget * qtContactCallListWidget = dynamic_cast(_ui->tabWidget->widget(j)); - if (qtContactCallListWidget) { - if (qtContactCallListWidget->hasPhoneCall(targetCall)) { - _ui->tabWidget->setTabText(j, tr("Conference")); - IPhoneLine * phoneLine = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine(); - - if (phoneLine != NULL) { - if (!conferenceAlreadyStarted) { - conferenceAlreadyStarted = true; - ConferenceCall * confCall = new ConferenceCall(*phoneLine); - confCall->addPhoneCall(*targetCall); - confCall->addPhoneNumber(phoneNumber.toStdString()); - } - } else { - LOG_DEBUG("phoneLine is NULL"); - } - } - } - } - } - }*/ - - if (!_cWengoPhone.getCUserProfileHandler().getCUserProfile()) - return; - - IPhoneLine * phoneLine = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile().getActivePhoneLine(); - if(!phoneLine) - return; - - for (int i = 0; i < _ui->tabWidget->count(); i++) - { - if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) - return; - } - - ConferenceCall * confCall = new ConferenceCall(*phoneLine); - targetCall->setConferenceCall(confCall); - - PhoneCall * phoneCall2 = confCall->getPhoneCall(phoneNumber.toStdString()); - - QtContactCallListWidget * qtContactCallListWidgetTarget = 0; - QtPhoneCall * qtPhoneTarget = 0; - QtPhoneCall * qtPhoneCall2 = 0; - int index2 = -1; - - for (int j = 0; j < _ui->tabWidget->count(); j++) - { - QtContactCallListWidget * qtContactCallListWidget = dynamic_cast(_ui->tabWidget->widget(j)); - if (qtContactCallListWidget) - { - if (!qtContactCallListWidgetTarget && qtContactCallListWidget->hasPhoneCall(targetCall)) - { - _ui->tabWidget->setTabText(j, tr("Conference")); - - qtContactCallListWidgetTarget = qtContactCallListWidget; - qtPhoneTarget = qtContactCallListWidgetTarget->takeQtPhoneCall(targetCall); - } - else if(!qtPhoneCall2 && qtContactCallListWidget->hasPhoneCall(phoneCall2)) - { - qtPhoneCall2 = qtContactCallListWidget->takeQtPhoneCall(phoneCall2); - index2 = j; - - } - } - } - - if( qtContactCallListWidgetTarget) - { - if(qtPhoneCall2) - { - qtPhoneCall2->hideConfButton(); - qtContactCallListWidgetTarget->addPhoneCall(qtPhoneCall2); - _ui->tabWidget->removeTab(index2); - } - if(qtPhoneTarget) - { - qtPhoneTarget->hideConfButton(); - qtContactCallListWidgetTarget->addPhoneCall(qtPhoneTarget); - } - } - - QString address = QString::fromStdString(targetCall->getPeerSipAddress().getSipAddress()); - - if(address.contains("@")) - address = address.section("@",0,0); - - if (address.startsWith("sip:")) { - address = address.mid(4); - } - - confCall->addPhoneNumber(address.toStdString()); - confCall->addPhoneNumber(phoneNumber.toStdString()); - - if(phoneCall2) - phoneCall2->setConferenceCall(confCall); - - if(qtContactCallListWidgetTarget) - qtContactCallListWidgetTarget->slotStartedTalking(qtPhoneTarget); -} - -void QtWengoPhone::addToConference(QtPhoneCall * qtPhoneCall) { - - QtContactCallListWidget * qtContactCallListWidget; - - int nbtab = _ui->tabWidget->count(); - - for (int i = 0; i < nbtab; i++) { - if (_ui->tabWidget->tabText(i) == QString(tr("Conference"))) { - //i is the index of the conference tab - qtContactCallListWidget = (QtContactCallListWidget *) _ui->tabWidget->widget(i); - qtContactCallListWidget->addPhoneCall(qtPhoneCall); - _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); - return; - } - } - - _activeTabBeforeCall = _ui->tabWidget->currentWidget(); - - //conference tab not found, create a new one - qtContactCallListWidget = new QtContactCallListWidget(_cWengoPhone,_wengoPhoneWindow); - SAFE_CONNECT(qtContactCallListWidget, SIGNAL(aboutToClose()), SLOT(setActiveTabBeforeCallCurrent()) ); - _ui->tabWidget->addTab(qtContactCallListWidget, tr("Conference")); - _ui->tabWidget->setCurrentWidget(qtContactCallListWidget); - qtContactCallListWidget->addPhoneCall(qtPhoneCall); - _ui->callBar->setEnabledHangUpButton(true); -} - -QtFileTransfer * QtWengoPhone::getFileTransfer() const { - return _qtFileTransfer; -} - -void QtWengoPhone::updatePresentation() { - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtWengoPhone::updatePresentationThreadSafe, this)); - postEvent(event); -} - -void QtWengoPhone::updatePresentationThreadSafe() { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - //disabled some actions if no SIP Account is used - bool hasSipAccount = _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile().hasSipAccount(); - - _ui->actionShowWengoAccount->setEnabled(_cWengoPhone.getCUserProfileHandler().getCUserProfile()->getUserProfile().hasWengoAccount()); - _ui->actionSendSms->setEnabled(hasSipAccount); - _ui->actionCreateConferenceCall->setEnabled(hasSipAccount); - _ui->actionSearchWengoContact->setEnabled(hasSipAccount); - } -} - -void QtWengoPhone::dialpad(const std::string & tone) { - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - _ui->callBar->setPhoneComboBoxEditText(_ui->callBar->getPhoneComboBoxCurrentText() + tone); - } -} - -void QtWengoPhone::dialpadBackspace() { - int s; - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - s = _ui->callBar->getPhoneComboBoxCurrentText().size(); - if(s>0) - { - std::string str = _ui->callBar->getPhoneComboBoxCurrentText(); - str.resize(s-1); - _ui->callBar->setPhoneComboBoxEditText(str); - } - } -} - -void QtWengoPhone::dialpadEnter() { - callButtonClicked(); -} - -void QtWengoPhone::prepareToExitApplication() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - - // check for pending calls - CUserProfile *cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - if (cUserProfile) { - CPhoneLine *cPhoneLine = cUserProfile->getCPhoneLine(); - if (cPhoneLine) { - if (cPhoneLine->hasPendingCalls()) { - - if (QMessageBox::question( - getWidget(), - tr("@product@ - Warning"), - tr("You have unfinished call(s).") + "\n" + - tr("Are you sure you want to exit the application?"), - tr("&Exit"), - tr("&Cancel") - ) == 1) { - return; - } - } - } - } - //// - - - _qtSystray->hide(); - - //Save the window size - QSize winsize = _wengoPhoneWindow->size(); - config.set(Config::PROFILE_WIDTH_KEY, winsize.width()); - config.set(Config::PROFILE_HEIGHT_KEY, winsize.height()); - - //Save the window position - QPoint winpos = _wengoPhoneWindow->pos(); - config.set(Config::PROFILE_POSX_KEY, winpos.x()); - config.set(Config::PROFILE_POSY_KEY, winpos.y()); - - QApplication::closeAllWindows(); - QCoreApplication::processEvents(); - - //destroyed chatWindow so that chats are saved - OWSAFE_DELETE(_chatWindow); - //// - - _cWengoPhone.terminate(); -} - -void QtWengoPhone::phoneComboBoxClicked() { - - _ui->callBar->clearPhoneComboBox(); - _ui->callBar->clearPhoneComboBoxEditText(); -} - -void QtWengoPhone::exitEvent() { - QCoreApplication::exit(EXIT_SUCCESS); -} - -void QtWengoPhone::showHistory() { - _ui->tabWidget->setCurrentWidget(_ui->tabHistory); -} - -void QtWengoPhone::currentUserProfileWillDieEventHandlerSlot() { - //Signal for re-initializing graphical components - //when there is no user profile anymore - userProfileDeleted(); - - // Reset _qtIMAccountMonitor so that it does not emit signals anymore - _qtIMAccountMonitor.reset(0); - - OWSAFE_DELETE(_qtFileTransfer); - OWSAFE_DELETE(_qtIdle); - _ui->profileBar->reset(); - - if (_qtContactList) { - _ui->tabContactList->layout()->removeWidget(_qtContactList->getWidget()); - OWSAFE_DELETE(_qtContactList); - } - - if (_qtHistoryWidget) { - _ui->tabHistory->layout()->removeWidget(_qtHistoryWidget->getWidget()); - OWSAFE_DELETE(_qtHistoryWidget); - } - - uninstallQtBrowserWidget(); -} - -void QtWengoPhone::userProfileInitializedEventHandlerSlot() { - CUserProfile * cUserProfile = _cWengoPhone.getCUserProfileHandler().getCUserProfile(); - - //Idle detection - //FIXME: QtIdle must not use UserProfile but CUserProfile - _qtIdle = new QtIdle(cUserProfile->getUserProfile(), _wengoPhoneWindow); - - // Create account monitor - _qtIMAccountMonitor.reset( new QtIMAccountMonitor(0, cUserProfile) ); - - //Create the profilebar - _ui->profileBar->init(&_cWengoPhone, cUserProfile, _qtIMAccountMonitor.get()); - - // Systray - SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountAdded(QString)), - _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); - SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountUpdated(QString)), - _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); - SAFE_CONNECT_RECEIVER_TYPE(_qtIMAccountMonitor.get(), SIGNAL(imAccountRemoved(QString)), - _qtSystray, SLOT(updateSystrayIcon()), Qt::QueuedConnection); - - _qtSystray->setTrayMenu(); - _qtSystray->updateSystrayIcon(); - - _qtFileTransfer = new QtFileTransfer(this, _cWengoPhone.getWengoPhone().getCoIpManager()); - - //menu - _qtToolBar->userProfileIsInitialized(); -} - -void QtWengoPhone::proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = - new MyPostEvent(boost::bind(&QtWengoPhone::proxyNeedsAuthenticationEventHandlerThreadSafe, this, _1), networkProxy); - postEvent(event); -} - -void QtWengoPhone::wrongProxyAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = - new MyPostEvent(boost::bind(&QtWengoPhone::proxyNeedsAuthenticationEventHandlerThreadSafe, this, _1), networkProxy); - postEvent(event); -} - -void QtWengoPhone::proxyNeedsAuthenticationEventHandlerThreadSafe(NetworkProxy networkProxy) { - static QtHttpProxyLogin * httpProxy = - new QtHttpProxyLogin(getWidget(), - networkProxy.getServer(), networkProxy.getServerPort()); - - int ret = httpProxy->show(); - - if (ret == QDialog::Accepted) { - NetworkProxy myNetworkProxy; - myNetworkProxy.setServer(httpProxy->getProxyAddress()); - myNetworkProxy.setServerPort(httpProxy->getProxyPort()); - myNetworkProxy.setLogin(httpProxy->getLogin()); - myNetworkProxy.setPassword(httpProxy->getPassword()); - - NetworkProxyDiscovery::getInstance().setProxySettings(myNetworkProxy); - } -} - -void QtWengoPhone::closeWindow() { - _wengoPhoneWindow->hide(); -} - -//#if defined(OS_MACOSX) -//void QtWengoPhone::fixMacOSXMenus() { - // Avoids translation of these menus on Mac OS X. Thus Qt - // will put these under the Application menu - //_ui->actionShowConfig->setText("Preferences"); - //_ui->actionShowAbout->setText("About"); - //_ui->actionShowAbout->setText("Close"); -//} -//#endif - -void QtWengoPhone::languageChanged() { -//#if defined(OS_MACOSX) - //fixMacOSXMenus(); -//#endif - LOG_DEBUG("retranslate main window ui"); - _ui->retranslateUi(_wengoPhoneWindow); - _qtToolBar->retranslateUi(); - - Config & config = ConfigManager::getInstance().getCurrentConfig(); - if (_qtBrowserWidget) { - _ui->tabWidget->setTabText(_qtBrowserWidgetTabIndex, tr("Home")); - } - - if (_qtHistoryWidget) { - _qtHistoryWidget->retranslateUi(); - } - - _ui->menuWengo->setTitle(tr("Account")); -} - -void QtWengoPhone::showAddContact(ContactInfo contactInfo) { - - ensureVisible(); - - if (_cWengoPhone.getCUserProfileHandler().getCUserProfile()) { - - //FIXME this method should not be called if no UserProfile has been set - ContactProfile contactProfile; - QtProfileDetails qtProfileDetails(*_cWengoPhone.getCUserProfileHandler().getCUserProfile(), - contactProfile, _wengoPhoneWindow, tr("Add a Contact")); - - //FIXME to remove when wdeal will be able to handle SIP presence - if (contactInfo.group == "WDeal") { - qtProfileDetails.setHomePhone(QUrl::fromPercentEncoding(QByteArray(contactInfo.sip.c_str()))); - } else { - qtProfileDetails.setWengoName(QUrl::fromPercentEncoding(QByteArray(contactInfo.wengoName.c_str()))); - } - /// - - if (contactInfo.group == "WDeal") { - qtProfileDetails.setFirstName(QUrl::fromPercentEncoding(QByteArray(contactInfo.wdealServiceTitle.c_str()))); - } else { - qtProfileDetails.setFirstName(QUrl::fromPercentEncoding(QByteArray(contactInfo.firstname.c_str()))); - } - - qtProfileDetails.setLastName(QUrl::fromPercentEncoding(QByteArray(contactInfo.lastname.c_str()))); - qtProfileDetails.setCountry(QUrl::fromPercentEncoding(QByteArray(contactInfo.country.c_str()))); - qtProfileDetails.setCity(QUrl::fromPercentEncoding(QByteArray(contactInfo.city.c_str()))); - qtProfileDetails.setState(QUrl::fromPercentEncoding(QByteArray(contactInfo.state.c_str()))); - qtProfileDetails.setGroup(QUrl::fromPercentEncoding(QByteArray(contactInfo.group.c_str()))); - qtProfileDetails.setWebsite(QUrl::fromPercentEncoding(QByteArray(contactInfo.website.c_str()))); - - if (qtProfileDetails.show()) { - _cWengoPhone.getCUserProfileHandler().getCUserProfile()->getCContactList().addContact(contactProfile); - } - } -} - -void QtWengoPhone::bringMainWindowToFront() { - ensureVisible(); -} - -void QtWengoPhone::ensureVisible() { - _wengoPhoneWindow->activateWindow(); - _wengoPhoneWindow->showNormal(); - _wengoPhoneWindow->raise(); -} - -void QtWengoPhone::installQtBrowserWidget() -{ - if(!_qtBrowserWidget) - { - _qtBrowserWidget = new QtBrowserWidget(*this); - _qtBrowserWidgetTabIndex = _ui->tabWidget->insertTab(0,_qtBrowserWidget->getWidget(), tr("Home")); - _ui->tabWidget->setCurrentIndex(0); - } - _qtBrowserWidget->loadProgressURL(); -} - -void QtWengoPhone::uninstallQtBrowserWidget() -{ - //if (_qtBrowserWidget) { - // _ui->tabWidget->widget(_qtBrowserWidgetTabIndex)->layout()->removeWidget(_qtBrowserWidget->getWidget()); - // _ui->tabWidget->removeTab(_qtBrowserWidgetTabIndex); - // OWSAFE_DELETE(_qtBrowserWidget); - //} - _qtBrowserWidget->loadDefaultURL(); -} - -void QtWengoPhone::setCurrentUserProfileEventHandlerSlot() -{ - _qtBrowserWidget->loadProgressURL(); - _qtToolBar->tryingToConnect(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,269 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTWENGOPHONE_H -#define OWQTWENGOPHONE_H - -#include - -#include -#include - -#include - -#include - -#include -#include - -#include -#include -#include - -#include -#include - -class CWengoPhone; -class Config; -class ContactInfo; -class IMContact; -class PPhoneLine; -class PhoneCall; -class PresenceHandler; -class QtCallBar; -class QtContactCallListWidget; -class QtContactList; -class QtFileTransfer; -class QtHistoryWidget; -class QtIdle; -class QtLanguage; -class QtPhoneCall; -class QtProfileBar; -class QtSms; -class QtStatusBar; -class QtToolBar; -class QtSystray; -class QtToaster; -class QtBrowserWidget; -class QtDialpad; -class UserProfile; -class QtPhoneComboBox; -class QtIMAccountMonitor; - -class QtWebDirectory; - -class QWidget; -class QMenu; -namespace Ui { class WengoPhoneWindow; } - -/** - * Qt Presentation component for WengoPhone. - * - * @author Tanguy Krotoff - */ -class QtWengoPhone : public QObjectThreadSafe, public PWengoPhone, public Trackable { - Q_OBJECT -public: - - QtWengoPhone(CWengoPhone & cWengoPhone); - - ~QtWengoPhone(); - - void addPhoneCall(QtPhoneCall * qtPhoneCall); - - void addToConference(QtPhoneCall * qtPhoneCall); - - void updatePresentation(); - - void dialpad(const std::string & tone); - - void dialpadBackspace(); - - void dialpadEnter(); - - void connectionStatusEventHandler(int totalSteps, int currentStep, const std::string & infoMsg); - - QWidget * getWidget() const; - - void setQtDialpad(QtDialpad * qtDialpad); - - void setQtContactList(QtContactList * qtContactList); - QtContactList * getQtContactList() const; - - void setQtHistoryWidget(QtHistoryWidget * qtHistoryWidget); - - void setQtSms(QtSms * qtSms); - QtSms * getQtSms() const; - - QtStatusBar & getQtStatusBar() const; - - QtFileTransfer * getFileTransfer() const; - - QtToolBar & getQtToolBar() const; - - QtCallBar & getQtCallBar() const; - - QtSystray & getQtSystray() const; - - QtLanguage & getQtLanguage() const; - - QtProfileBar * getQtProfileBar() const; - - CWengoPhone & getCWengoPhone() const; - - QtWebDirectory * getQtWebDirectory() const; - - void setChatWindow(QWidget * chatWindow); - QWidget * getChatWindow() const; - void closeChatWindow (); - - void showHistory(); - - void ensureVisible(); - - void showAddContact(ContactInfo contactInfo); - - virtual void bringMainWindowToFront(); - - void installQtBrowserWidget(); - - void uninstallQtBrowserWidget(); - - QtBrowserWidget * getQtBrowserWidget() const; - -public Q_SLOTS: - - void currentUserProfileWillDieEventHandlerSlot(); - - void userProfileInitializedEventHandlerSlot(); - - void hangUpButtonClicked(); - - void prepareToExitApplication(); - - void addToConference(QString phoneNumber, PhoneCall * targetCall); - - void setCurrentUserProfileEventHandlerSlot(); - -private Q_SLOTS: - - void callButtonClicked(); - - void enableCallButton(); - - void phoneComboBoxClicked(); - - void closeWindow(); - - void languageChanged(); - - void setActiveTabBeforeCallCurrent(); - -Q_SIGNALS: - - /** - * Current user profile has been deleted. - * - * Graphical components should be re-initialized: - * QtContactList, QtHistoryWidget, QtProfileBar are removed. - * QtSystray, QtBrowserWidget have to be re-initialized. - */ - void userProfileDeleted(); - -private: - void initUi(); - - void initThreadSafe(); - - /** - * Set the geometry of the mainwindow (position and size). - * - * Load last size and position. If the mainwindow is not visible use default values. - */ - void mainWindowGeometry(Config & config); - - /** - * Initializes pickup and hangup buttons inside the main window. - * - * This is called by QtPhoneCall to re-initialize the buttons - * since QtPhoneCall modifies the behaviour of this buttons. - */ - void initCallButtons(); - - void updatePresentationThreadSafe(); - - void proxyNeedsAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy); - - void proxyNeedsAuthenticationEventHandlerThreadSafe(NetworkProxy networkProxy); - - void wrongProxyAuthenticationEventHandler(NetworkProxyDiscovery & sender, NetworkProxy networkProxy); - - void makeCallErrorEventHandler(EnumMakeCallError::MakeCallError); - - void makeCallErrorEventHandlerThreadSafe(EnumMakeCallError::MakeCallError); - - void exitEvent(); - -//#ifdef OS_MACOSX -// void fixMacOSXMenus(); -//#endif - - void loadStyleSheets(); - - /** Direct link to the control. */ - CWengoPhone & _cWengoPhone; - - Ui::WengoPhoneWindow * _ui; - - QMainWindow * _wengoPhoneWindow; - - QtSystray * _qtSystray; - - QtSms * _qtSms; - - QtContactList * _qtContactList; - - QtHistoryWidget * _qtHistoryWidget; - - QtContactCallListWidget * _qtContactCallListWidget; - - QtIdle * _qtIdle; - - QtLanguage * _qtLanguage; - - QtToolBar * _qtToolBar; - - QtStatusBar * _qtStatusBar; - - QtFileTransfer * _qtFileTransfer; - - QtBrowserWidget * _qtBrowserWidget; - - int _qtBrowserWidgetTabIndex; - - QWidget * _chatWindow; - - QWidget * _activeTabBeforeCall; - - std::auto_ptr _qtIMAccountMonitor; - - QtWebDirectory * _qtWebDirectory; -}; - -#endif //OWQTWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoStyle.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoStyle.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoStyle.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoStyle.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,95 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtWengoStyle.h" - -#include - -#include -#include - -QtWengoStyle::QtWengoStyle() { - QString styleName = QApplication::style()->objectName(); - _systemStyle = QStyleFactory::create(styleName); - _plastiqueStyle = new QPlastiqueStyle(); -} - -QtWengoStyle::~QtWengoStyle() { - OWSAFE_DELETE(_systemStyle); - OWSAFE_DELETE(_plastiqueStyle); -} - -void QtWengoStyle::drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, - QPainter * painter, const QWidget * widget) const { - -#if defined(OS_MACOSX) - //QToolButton - //Changes QToolButton style under MacOSX - if (control == CC_ToolButton) { - _plastiqueStyle->drawComplexControl(control, option, painter, widget); - return; - } -#endif - -#if defined(OS_WINDOWS) - //QToolButton - //Changes QToolButton style under Windows if it's not using the application - //palette. We do so because Windows theme does not allow custom background - //colors for tool buttons. - if (control == CC_ToolButton && !option->palette.isCopyOf(QApplication::palette())) { - _plastiqueStyle->drawComplexControl(control, option, painter, widget); - return; - } -#endif - - _systemStyle->drawComplexControl(control, option, painter, widget); -} - -void QtWengoStyle::drawControl(ControlElement element, const QStyleOption * option, - QPainter * painter, const QWidget * widget) const { - - //QToolbar - //Removes the ugly toolbar bottom line - if (element == CE_ToolBar) { - return; - } - - _systemStyle->drawControl(element, option, painter, widget); -} - -void QtWengoStyle::drawPrimitive(PrimitiveElement element, const QStyleOption * option, - QPainter * painter, const QWidget * widget) const { - - //QStatusBar - //Removes the ugly frame/marging around the status bar icons under Windows - if (element == PE_FrameStatusBar) { - return; - } - - _systemStyle->drawPrimitive(element, option, painter, widget); -} - -int QtWengoStyle::styleHint(StyleHint hint, const QStyleOption * option, const QWidget * widget, QStyleHintReturn * returnData) const { - // Make sure rows of list views are fully selected, instead of only items. - if (hint == SH_ItemView_ShowDecorationSelected) { - return true; - } - - return _systemStyle->styleHint(hint, option, widget, returnData); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoStyle.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoStyle.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/QtWengoStyle.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/QtWengoStyle.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,150 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTWENGOSTYLE_H -#define OWQTWENGOSTYLE_H - -#include - -#ifdef OS_MACOSX - #include - typedef QMacStyle BaseStyle; -#else - #include - typedef QCommonStyle BaseStyle; -#endif - -/** - * General Qt style for correcting some bugs or ugly style. - * - * - Removes the ugly toolbar bottom line - * - Changes QToolButton style under MacOSX - * - Removes the ugly frame/marging around the status bar icons under Windows - * - * @author Tanguy Krotoff - */ -class QtWengoStyle : public BaseStyle { -public: - - QtWengoStyle(); - - ~QtWengoStyle(); - - void drawComplexControl(ComplexControl control, const QStyleOptionComplex * option, - QPainter * painter, const QWidget * widget = 0) const; - - void drawControl(ControlElement element, const QStyleOption * option, - QPainter * painter, const QWidget * widget = 0) const; - - void drawPrimitive(PrimitiveElement element, const QStyleOption * option, - QPainter * painter, const QWidget * widget = 0) const; - - /** - * Overloaded to make sure rows of list views are fully selected, instead - * of only items. - */ - int styleHint(StyleHint hint, const QStyleOption * option = 0, const QWidget * widget = 0, QStyleHintReturn * returnData = 0) const; - -#ifndef OS_MACOSX - void drawItemPixmap(QPainter * painter, const QRect & rectangle, int alignment, const QPixmap & pixmap) const { - _systemStyle->drawItemPixmap(painter, rectangle, alignment, pixmap); - } - - void drawItemText(QPainter * painter, const QRect & rectangle, int alignment, const QPalette & palette, - bool enabled, const QString & text, QPalette::ColorRole textRole = QPalette::NoRole) const { - _systemStyle->drawItemText(painter, rectangle, alignment, palette, enabled, text, textRole); - } - - QPixmap generatedIconPixmap(QIcon::Mode iconMode, const QPixmap & pixmap, const QStyleOption * option) const { - return _systemStyle->generatedIconPixmap(iconMode, pixmap, option); - } - - SubControl hitTestComplexControl(ComplexControl control, const QStyleOptionComplex * option, const QPoint & position, const QWidget * widget = 0) const { - return _systemStyle->hitTestComplexControl(control, option, position, widget); - } - - QRect itemPixmapRect(const QRect & rectangle, int alignment, const QPixmap & pixmap) const { - return _systemStyle->itemPixmapRect(rectangle, alignment, pixmap); - } - - QRect itemTextRect(const QFontMetrics & metrics, const QRect & rectangle, int alignment, bool enabled, const QString & text) const { - return _systemStyle->itemTextRect(metrics, rectangle, alignment, enabled, text); - } - - int pixelMetric(PixelMetric metric, const QStyleOption * option = 0, const QWidget * widget = 0) const { - return _systemStyle->pixelMetric(metric, option, widget); - } - - void polish(QWidget * widget) { - _systemStyle->polish(widget); - } - - void polish(QApplication * application) { - _systemStyle->polish(application); - } - - void polish(QPalette & palette) { - _systemStyle->polish(palette); - } - - QSize sizeFromContents(ContentsType type, const QStyleOption * option, const QSize & contentsSize, const QWidget * widget = 0) const { - return _systemStyle->sizeFromContents(type, option, contentsSize, widget); - } - - QIcon standardIcon(StandardPixmap standardIcon, const QStyleOption * option = 0, const QWidget * widget = 0) const { - return _systemStyle->standardIcon(standardIcon, option, widget); - } - - QPalette standardPalette() const { - return _systemStyle->standardPalette(); - } - - /* - QPixmap standardPixmap(StandardPixmap standardPixmap, const QStyleOption * option = 0, const QWidget * widget = 0) const { - return _systemStyle->standardPixmap(standardPixmap, option, widget); - }*/ - - QRect subControlRect(ComplexControl control, const QStyleOptionComplex * option, SubControl subControl, const QWidget * widget = 0) const { - return _systemStyle->subControlRect(control, option, subControl, widget); - } - - QRect subElementRect(SubElement element, const QStyleOption * option, const QWidget * widget = 0) const { - return _systemStyle->subElementRect(element, option, widget); - } - - void unpolish(QWidget * widget) { - _systemStyle->unpolish(widget); - } - - void unpolish(QApplication * application) { - _systemStyle->unpolish(application); - } - -#endif - -private: - - QStyle * _systemStyle; - - /** Used on MacOS X for QToolButton appearance. */ - QStyle * _plastiqueStyle; - -}; - -#endif //OWQTWENGOSTYLE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,304 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtStatusBar.h" - -#include "ui_StatusBarWidget.h" - -#include -#include -#include - -#include -#include -#include -#include -#include - -#include -#include - -#include -#include -#include -#include -#include -#include -#include - -static const char * MNG_FORMAT = "MNG"; - -QtStatusBar::QtStatusBar(QtWengoPhone* qtWengoPhone, QStatusBar * statusBar) - : QWidget(statusBar) - { - - _ui = new Ui::StatusBarWidget(); - _ui->setupUi(this); - _statusBar = statusBar; - _statusBar->addPermanentWidget(this, 1); - - _audioOutputWindow = 0; - _outputVolumeSlider = 0; - - _audioInputWindow = 0; - _inputVolumeSlider = 0; - - SAFE_CONNECT(this, SIGNAL(audioOutputConfigChanged()), SLOT(updateAudioOutputUi())); - SAFE_CONNECT(this, SIGNAL(audioInputConfigChanged()), SLOT(updateAudioInputUi())); - LANGUAGE_CHANGE(this); - - createAudioOutputWindow(); - createAudioInputWindow(); - - //sip label - _sipConnectionMovie = new QMovie(":/pics/statusbar/network_status_connecting.mng", MNG_FORMAT, this); - _sipConnectionMovie->start(); - _ui->sipLabel->setMovie(_sipConnectionMovie); - //// - - //sound buttons - Config & config = ConfigManager::getInstance().getCurrentConfig(); - config.valueChangedEvent += boost::bind(&QtStatusBar::checkSoundConfig, this, _1); - //// - - //status bar re-initialization - SAFE_CONNECT(qtWengoPhone, SIGNAL(userProfileDeleted()), SLOT(userProfileDeleted())); - - init(); -} - -QtStatusBar::~QtStatusBar() { - OWSAFE_DELETE(_ui); -} - -void QtStatusBar::showMessage(const QString & message, int timeout) { - _statusBar->showMessage(message, timeout); -} - -void QtStatusBar::checkSoundConfig(const std::string & key) { - if (key == Config::AUDIO_OUTPUT_DEVICEID_KEY) { - updateAudioOutputUi(); - } else if (key == Config::AUDIO_INPUT_DEVICEID_KEY) { - updateAudioInputUi(); - } -} - -void QtStatusBar::updateAudioOutputUi() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - VolumeControl outputVolumeControl(config.getAudioOutputDeviceId()); - QString message; - bool error = false; - - if (outputVolumeControl.isMuted()) { - error = true; - message = tr("Output volume is muted"); - } else if (outputVolumeControl.getLevel() == 0) { - error = true; - message = tr("Output volume is 0"); - } - if (error) { - _ui->audioOutputButton->setIcon(QPixmap(":/pics/statusbar/output_volume_error.png")); - _ui->audioOutputButton->setToolTip(message); - } else { - _ui->audioOutputButton->setIcon(QPixmap(":/pics/statusbar/output_volume_ok.png")); - _ui->audioOutputButton->setToolTip(tr("Click to adjust output volume")); - } - - if (_outputVolumeSlider) { - initVolumeSlider(_outputVolumeSlider); - } -} - -void QtStatusBar::updateAudioInputUi() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - VolumeControl inputVolumeControl(config.getAudioInputDeviceId()); - QString message; - bool error = false; - - if (inputVolumeControl.isMuted()) { - error = true; - message = tr("Input volume is muted"); - } else if (inputVolumeControl.getLevel() == 0) { - error = true; - message = tr("Input volume is 0"); - } - if (error) { - _ui->audioInputButton->setIcon(QPixmap(":/pics/statusbar/input_volume_error.png")); - _ui->audioInputButton->setToolTip(message); - } else { - _ui->audioInputButton->setIcon(QPixmap(":/pics/statusbar/input_volume_ok.png")); - _ui->audioInputButton->setToolTip(tr("Click to adjust input volume")); - } - - if (_inputVolumeSlider) { - initVolumeSlider(_inputVolumeSlider); - } -} - -void QtStatusBar::userProfileDeleted() { - QPixmap pixmap(":/pics/statusbar/network_status_error.png"); - _ui->sipLabel->setPixmap(pixmap); - _ui->sipLabel->setToolTip(tr("Not connected")); -} - -void QtStatusBar::updatePhoneLineState(EnumPhoneLineState::PhoneLineState state) { - - QString tooltip; - QString pixmap; - - //Stops animated pixmap - OWSAFE_DELETE(_sipConnectionMovie); - switch (state) { - case EnumPhoneLineState::PhoneLineStateUnknown: - tooltip = tr("Not connected"); - pixmap = ":/pics/statusbar/network_status_error.png"; - break; - - case EnumPhoneLineState::PhoneLineStateServerError: - tooltip = tr("An error occured: Server error."); - pixmap = ":/pics/statusbar/network_status_error.png"; - break; - - case EnumPhoneLineState::PhoneLineStateTimeout: - tooltip = tr("An error occured: Timeout."); - pixmap = ":/pics/statusbar/network_status_error.png"; - break; - - case EnumPhoneLineState::PhoneLineStateAuthenticationError: - tooltip = tr("An error occured: Authentication error."); - pixmap = ":/pics/statusbar/network_status_error.png"; - break; - - case EnumPhoneLineState::PhoneLineStateOk: - tooltip = tr("Register done"); - pixmap = ":/pics/statusbar/network_status_ok.png"; - break; - - case EnumPhoneLineState::PhoneLineStateClosed: - tooltip = tr("Unregister done"); - pixmap = ":/pics/statusbar/network_status_error.png"; - break; - - case EnumPhoneLineState::PhoneLineStateProgress: - _sipConnectionMovie = new QMovie(":/pics/statusbar/network_status_connecting.mng", MNG_FORMAT, this); - _sipConnectionMovie->start(); - _ui->sipLabel->setMovie(_sipConnectionMovie); - _ui->sipLabel->setToolTip(tr("Connecting")); - return; - - default: - LOG_FATAL("unknown state=" + EnumPhoneLineState::toString(state)); - }; - - _ui->sipLabel->setPixmap(pixmap); - _ui->sipLabel->setToolTip(tooltip); -} - -void QtStatusBar::init() { - updateAudioOutputUi(); - updateAudioInputUi(); -} - -void QtStatusBar::languageChanged() { - _ui->retranslateUi(this); - init(); -} - -static DropDownWindow* createDropDownWindow(QAbstractButton* button) { - DropDownWindow* window = new DropDownWindow(button); - - window->setFrameStyle(QFrame::StyledPanel | QFrame::Plain); - int width = button->minimumSize().width(); - window->setFixedWidth(width); - - return window; -} - -static QSlider* createSlider(DropDownWindow* window) { - QSlider* slider = new QSlider(window); - - // Set to range documented in VolumeControl class - slider->setMinimum(0); - slider->setMaximum(100); - slider->setFixedHeight(100); - - QHBoxLayout* layout = new QHBoxLayout(window); - layout->setMargin(2); - layout->addWidget(slider); - - // A bit bigger than the slider so that it has some space above and below it - window->setFixedHeight(110); - - return slider; -} - -void QtStatusBar::createAudioOutputWindow() { - _audioOutputWindow = createDropDownWindow(_ui->audioOutputButton); - _outputVolumeSlider = createSlider(_audioOutputWindow); - initVolumeSlider(_outputVolumeSlider); - - SAFE_CONNECT(_outputVolumeSlider, SIGNAL(valueChanged(int)), - SLOT(setVolume(int)) ); -} - -void QtStatusBar::createAudioInputWindow() { - _audioInputWindow = createDropDownWindow(_ui->audioInputButton); - _inputVolumeSlider = createSlider(_audioInputWindow); - initVolumeSlider(_inputVolumeSlider); - - SAFE_CONNECT(_inputVolumeSlider, SIGNAL(valueChanged(int)), - SLOT(setVolume(int)) ); -} - -void QtStatusBar::initVolumeSlider(QSlider* slider) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - StringList deviceId; - if (slider == _outputVolumeSlider) { - deviceId = config.getAudioOutputDeviceId(); - } else { - deviceId = config.getAudioInputDeviceId(); - } - AudioDevice audioDevice(deviceId); - VolumeControl volumeControl(audioDevice); - - slider->blockSignals(true); - slider->setValue(volumeControl.getLevel()); - slider->blockSignals(false); -} - -void QtStatusBar::setVolume(int value) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - StringList deviceId; - if (sender() == _outputVolumeSlider) { - deviceId = config.getAudioOutputDeviceId(); - } else { - deviceId = config.getAudioInputDeviceId(); - } - AudioDevice audioDevice(deviceId); - VolumeControl volumeControl(audioDevice); - volumeControl.setLevel(value); - - // FIXME: Remove this once/if the AudioDevice gets capable of notifying us - // of volume changes (from us and from the outside world). - if (sender() == _outputVolumeSlider) { - updateAudioOutputUi(); - } else { - updateAudioInputUi(); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/QtStatusBar.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,116 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSTATUSBAR_H -#define OWQTSTATUSBAR_H - -#include -#include - -#include - -class DropDownWindow; -class Settings; -class QSlider; -class QStatusBar; -class QMovie; -class QWidget; - -class QtWengoPhone; - -namespace Ui { class StatusBarWidget; } - -/** - * Main window status bar. - * - * Contains status icons for Internet connection, sound status, SIP (network) status... - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class QtStatusBar : public QWidget, public Trackable { - Q_OBJECT -public: - - QtStatusBar(QtWengoPhone* qtWengoPhone, QStatusBar * statusBar); - - ~QtStatusBar(); - - /** - * @see QStatusBar::showMessage() - */ - void showMessage(const QString & message, int timeout = 0); - - /** - * Update sip connection icon. - * @param state the new state of the PhoneLine - */ - void updatePhoneLineState(EnumPhoneLineState::PhoneLineState state); - -Q_SIGNALS: - void audioOutputConfigChanged(); - - void audioInputConfigChanged(); - -private Q_SLOTS: - - /** - * Re-initializes the status bar. - */ - void userProfileDeleted(); - - void languageChanged(); - - void updateAudioOutputUi(); - - void updateAudioInputUi(); - - void setVolume(int); - -private: - - /** - * Initializes widgets content. - */ - void init(); - - void initVolumeSlider(QSlider*); - - /** - * @see QtStatusBar::updateSoundIcon - */ - void checkSoundConfig(const std::string & key); - - void createAudioOutputWindow(); - - void createAudioInputWindow(); - - QStatusBar * _statusBar; - - Ui::StatusBarWidget * _ui; - - QMovie * _sipConnectionMovie; - - DropDownWindow * _audioOutputWindow; - QSlider * _outputVolumeSlider; - DropDownWindow * _audioInputWindow; - QSlider * _inputVolumeSlider; -}; - -#endif //OWQTSTATUSBAR_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/StatusBarWidget.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/StatusBarWidget.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/statusbar/StatusBarWidget.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/statusbar/StatusBarWidget.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,134 +0,0 @@ - - StatusBarWidget - - - - 0 - 0 - 96 - 22 - - - - - 0 - 0 - 0 - 0 - - - - - 0 - - - 0 - - - - - - 0 - 1 - 0 - 0 - - - - - 32 - 0 - - - - - 32 - 16777215 - - - - - - - :/pics/statusbar/network_status_error.png - - - Qt::AlignCenter - - - - - - - - 32 - 22 - - - - - 32 - 22 - - - - ... - - - :/pics/statusbar/output_volume_ok.png - - - - 22 - 22 - - - - true - - - true - - - - - - - - 32 - 22 - - - - - 32 - 22 - - - - ... - - - :/pics/statusbar/input_volume_ok.png - - - - 22 - 22 - - - - true - - - true - - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/IQtToaster.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/IQtToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/IQtToaster.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/IQtToaster.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWIQTTOASTER_H -#define OWIQTTOASTER_H - -#include - -class QString; -class QPixmap; - -/** - * Shows a toaster when a phone call or a chat is incoming. - * - * A toaster is a small window in the lower right of the desktop. - * - * @author Tanguy Krotoff - */ -class IQtToaster : Interface { -public: - - /** - * Sets the toaster window message. - * - * @param message toaster message - */ - virtual void setMessage(const QString & message) = 0; - - /** - * Sets the toaster window picture. - * - * @param pixmap toaster picture - */ - virtual void setPixmap(const QPixmap & pixmap) = 0; - - /** - * Shows the toaster window. - */ - virtual void show() = 0; - - /** - * Closes the toaster window. - */ - virtual void close() = 0; -}; - -#endif //OWIQTTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,96 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtCallToaster.h" - -#include "QtToaster.h" - -#include "ui_QtCallToaster.h" - -#include - -#include - -#include - -QtCallToaster::QtCallToaster() - : QObject(NULL) { - - _callToasterWidget = new QWidget(NULL); - - _ui = new Ui::CallToaster(); - _ui->setupUi(_callToasterWidget); - - _ui->hangUpButton->setPixmaps(QPixmap(":/pics/toaster/hangup.png"), - QPixmap(), - QPixmap(), - QPixmap(":/pics/toaster/hangup.png"), - QPixmap(), - QPixmap()); - - _ui->pickUpButton->setPixmaps(QPixmap(":/pics/toaster/pickup.png"), - QPixmap(), - QPixmap(), - QPixmap(":/pics/toaster/pickup.png"), - QPixmap(), - QPixmap()); - - _ui->pickUpButton->setMinimumSize(QSize(48, 56)); - _ui->pickUpButton->setMaximumSize(QSize(48, 56)); - SAFE_CONNECT(_ui->pickUpButton, SIGNAL(clicked()), SLOT(pickUpButtonSlot())); - - _ui->hangUpButton->setMinimumSize(QSize(28, 56)); - _ui->hangUpButton->setMaximumSize(QSize(28, 56)); - SAFE_CONNECT(_ui->hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonSlot())); - - SAFE_CONNECT(_ui->closeButton, SIGNAL(clicked()), SLOT(close())); - - _toaster = new QtToaster(_callToasterWidget, _ui->windowFrame); - _toaster->setTimeOnTop(10000); -} - -QtCallToaster::~QtCallToaster() { - OWSAFE_DELETE(_ui); -} - -void QtCallToaster::setMessage(const QString & message) { - _ui->messageLabel->setText(message); -} - -void QtCallToaster::setPixmap(const QPixmap & pixmap) { - _ui->pixmapLabel->setPixmap(pixmap); -} - -void QtCallToaster::show() { - _toaster->show(); -} - -void QtCallToaster::close() { - _toaster->close(); -} - -void QtCallToaster::hangUpButtonSlot() { - hangUpButtonClicked(); - close(); -} - -void QtCallToaster::pickUpButtonSlot() { - pickUpButtonClicked(); - close(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCALLTOASTER_H -#define OWQTCALLTOASTER_H - -#include "IQtToaster.h" - -#include - -class QtToaster; - -class QWidget; -class QString; -class QPixmap; -namespace Ui { class CallToaster; } - -/** - * Shows a toaster when a phone call is incoming. - * - * @author Tanguy Krotoff - */ -class QtCallToaster : public QObject, public IQtToaster { - Q_OBJECT -public: - - QtCallToaster(); - - ~QtCallToaster(); - - void setMessage(const QString & message); - - void setPixmap(const QPixmap & pixmap); - - void show(); - -public Q_SLOTS: - - void close(); - -Q_SIGNALS: - - void hangUpButtonClicked(); - - void pickUpButtonClicked(); - -private Q_SLOTS: - - void hangUpButtonSlot(); - - void pickUpButtonSlot(); - -private: - - Ui::CallToaster * _ui; - - QWidget * _callToasterWidget; - - QtToaster * _toaster; -}; - -#endif //OWQTCALLTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtCallToaster.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,504 +0,0 @@ - - - - - CallToaster - - - - 0 - 0 - 400 - 300 - - - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - 6 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - QFrame::NoFrame - - - :/pics/toaster/pickup.png - - - - - - - QFrame::NoFrame - - - :/pics/toaster/hangup.png - - - - - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 0 - - - - - - Sans Serif - 9 - 75 - false - true - false - false - - - - Incoming Call - - - 10 - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - 0 - 0 - 0 - 0 - - - - - 22 - 22 - - - - - 22 - 22 - - - - :/pics/close_normal.png - - - true - - - - - - - - - 0 - - - 0 - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - Message - - - Qt::AlignCenter - - - - - - - - - - - - - - WengoStyleLabel - QLabel -
WengoStyleLabelProxy.h
- 0 - -
-
- - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,78 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtChatToaster.h" - -#include "ui_QtChatToaster.h" - -#include "QtToaster.h" - -#include - -#include - -#include - -QtChatToaster::QtChatToaster() - : QObject(NULL) { - - _chatToasterWidget = new QWidget(NULL); - - _ui = new Ui::ChatToaster(); - _ui->setupUi(_chatToasterWidget); - - _ui->chatButton->setPixmaps(QPixmap(":/pics/toaster/chat.png"), - QPixmap(), - QPixmap(), - QPixmap(":/pics/toaster/chat.png"), - QPixmap(), - QPixmap()); - - SAFE_CONNECT(_ui->chatButton, SIGNAL(clicked()), SLOT(chatButtonSlot())); - - SAFE_CONNECT(_ui->closeButton, SIGNAL(clicked()), SLOT(close())); - - _toaster = new QtToaster(_chatToasterWidget, _ui->windowFrame); - _toaster->setTimeOnTop(5000); -} - -QtChatToaster::~QtChatToaster() { - OWSAFE_DELETE(_ui); -} - -void QtChatToaster::setMessage(const QString & message) { - _ui->messageLabel->setText(message); -} - -void QtChatToaster::setPixmap(const QPixmap & pixmap) { - _ui->pixmapLabel->setPixmap(pixmap); -} - -void QtChatToaster::show() { - _toaster->show(); -} - -void QtChatToaster::close() { - _toaster->close(); -} - -void QtChatToaster::chatButtonSlot() { - chatButtonClicked(); - close(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTCHATTOASTER_H -#define OWQTCHATTOASTER_H - -#include "IQtToaster.h" - -#include - -class QtToaster; - -class QWidget; -class QString; -class QPixmap; -namespace Ui { class ChatToaster; } - -/** - * Shows a toaster when a chat is incoming. - * - * @author Tanguy Krotoff - */ -class QtChatToaster : public QObject, public IQtToaster { - Q_OBJECT -public: - - QtChatToaster(); - - ~QtChatToaster(); - - void setMessage(const QString & message); - - void setPixmap(const QPixmap & pixmap); - - void show(); - -public Q_SLOTS: - - void close(); - -Q_SIGNALS: - - void chatButtonClicked(); - -private Q_SLOTS: - - void chatButtonSlot(); - -private: - - Ui::ChatToaster * _ui; - - QWidget * _chatToasterWidget; - - QtToaster * _toaster; -}; - -#endif //OWQTCHATTOASTER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtChatToaster.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,495 +0,0 @@ - - - - - ChatToaster - - - - 0 - 0 - 400 - 300 - - - - - 0 - - - 0 - - - - - QFrame::StyledPanel - - - QFrame::Raised - - - - 0 - - - 0 - - - - - 6 - - - 0 - - - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - :/pics/toaster/chat.png - - - - - - - - - 0 - - - 0 - - - - - - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 234 - 229 - 220 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 0 - 0 - 0 - - - 255 - 255 - 255 - - - 212 - 208 - 200 - - - 64 - 64 - 64 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 255 - 255 - 255 - - - 233 - 231 - 227 - - - 128 - 128 - 128 - - - 141 - 139 - 133 - - - 106 - 104 - 100 - - - 255 - 255 - 255 - - - 106 - 104 - 100 - - - 212 - 208 - 200 - - - 212 - 208 - 200 - - - 0 - 0 - 0 - - - 10 - 36 - 106 - - - 255 - 255 - 255 - - - 0 - 0 - 255 - - - 255 - 0 - 255 - - - 232 - 232 - 232 - - - - - - Message - - - Qt::AlignCenter - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - Qt::Horizontal - - - - 40 - 20 - - - - - - - - - - 0 - - - 0 - - - - - - 0 - 0 - 0 - 0 - - - - - 22 - 22 - - - - - 22 - 22 - - - - :/pics/close_normal.png - - - true - - - - - - - Qt::Horizontal - - - - 225 - 22 - - - - - - - - - Sans Serif - 9 - 75 - false - true - false - false - - - - Incoming Chat - - - 10 - - - - - - - - - - - - - - WengoStyleLabel - QLabel -
WengoStyleLabelProxy.h
- 0 - -
-
- - chatButton - closeButton - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtToaster.h" - -#include -#include - -#include -#include - -#include - -#ifdef OS_MACOSX -#include -#endif - -static const unsigned TIME_TO_SHOW = 20; - -QtToaster::QtToaster(QWidget * toaster, QFrame * toasterWindowFrame) - : QObject(toaster) { - - _timer = NULL; - _show = true; - - _toaster = toaster; - _toaster->setParent(_toaster->parentWidget(), Qt::FramelessWindowHint | Qt::WindowStaysOnTopHint); - -#ifdef OS_MACOSX - // Make sure the other windows of the application are not raised when the - // toaster appears - WId wid = _toaster->winId(); - SetWindowGroup((WindowRef)wid, NULL); -#else - _toaster->setWindowFlags(_toaster->windowFlags() | Qt::ToolTip); -#endif - - WidgetBackgroundImage::setBackgroundImage(toasterWindowFrame, ":pics/toaster/toaster-background.png", WidgetBackgroundImage::AdjustSize); - - _toaster->resize(184, 128); -} - -void QtToaster::setTimeOnTop(unsigned time) { - _timeOnTop = time; -} - -void QtToaster::close() { - if (_timer) { - _timer->stop(); - } - _toaster->close(); -} - -void QtToaster::show() { - //10 pixels of margin -#if !defined(OS_WINDOWS) - static const int MARGIN_X = 30; -#else - static const int MARGIN_X = 10; -#endif - - QDesktopWidget * desktop = QApplication::desktop(); - QRect screenGeometry = desktop->screenGeometry(desktop->primaryScreen()); - - _toaster->move(screenGeometry.right() - _toaster->size().width() - MARGIN_X, screenGeometry.bottom()); - - _toaster->show(); - - _timer = new QTimer(this); - SAFE_CONNECT(_timer, SIGNAL(timeout()), SLOT(changeToasterPosition())); - _timer->start(TIME_TO_SHOW); -} - -void QtToaster::changeToasterPosition() { - QDesktopWidget * desktop = QApplication::desktop(); - QPoint p = _toaster->pos(); - - //Toaster is showing slowly - if (_show) { - _toaster->move(p.x(), p.y() - 3); - - QRect desktopGeometry = desktop->availableGeometry(desktop->primaryScreen()); - - if (p.y() < (desktopGeometry.bottom() - _toaster->size().height() - 5)) { - //Toaster should be hidden now - _show = false; - _timer->stop(); - //Waits 5 seconds with the toaster on top - _timer->start(_timeOnTop); - } - } - - //Toaster is hiding slowly - else { - _toaster->move(p.x(), p.y() + 3); - - QRect screenGeometry = desktop->screenGeometry(desktop->primaryScreen()); - - _timer->stop(); - _timer->start(TIME_TO_SHOW); - - if (p.y() > (screenGeometry.bottom())) { - //Closes the toaster -> hide it completely - close(); - } - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/QtToaster.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,68 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTTOASTER_H -#define OWQTTOASTER_H - -#include - -class QWidget; -class QTimer; -class QFrame; - -/** - * This class codes the algorithm that show/hide the toaster. - * - * This class helps factorizing the code between QtCallToaster and QtChatToaster. - * - * @author Tanguy Krotoff - */ -class QtToaster : public QObject { - Q_OBJECT -public: - - QtToaster(QWidget * toaster, QFrame * toasterWindowFrame); - - /** - * Sets the time with the toaster on top. - * - * @param time time toaster on top in milliseconds - */ - void setTimeOnTop(unsigned time); - - void show(); - - void close(); - -private Q_SLOTS: - - void changeToasterPosition(); - -private: - - QWidget * _toaster; - - QTimer * _timer; - - bool _show; - - unsigned _timeOnTop; -}; - -#endif //OWQTTOASTER_H Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/toaster/toaster.jpg and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/presentation/qt/toaster/toaster.jpg differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/ToolTipLineEditProxy.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/ToolTipLineEditProxy.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/ToolTipLineEditProxy.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/ToolTipLineEditProxy.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtWebDirectory.h" - -#include - -#include -#include - -#include - -QtWebDirectory::QtWebDirectory(QWidget * parent) - : QWebView(parent) { - CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(CloseEventFilterSlot())); - installEventFilter(closeEventFilter); - - setContextMenuPolicy(Qt::NoContextMenu); - - resize(715, 569); - LANGUAGE_CHANGE(this); - init(); -} - -QtWebDirectory::~QtWebDirectory() { -} - -void QtWebDirectory::raise() { - show(); - QWidget::raise(); -} - -void QtWebDirectory::init() { - load(QUrl(QString::fromStdString(WsUrl::getWengoDirectoryUrl()))); - setWindowTitle(tr("@product@ - Directory")); -} - -void QtWebDirectory::languageChanged() { - init(); -} - -void QtWebDirectory::CloseEventFilterSlot() { - load(QUrl(QString::fromStdString(WsUrl::getWengoDirectoryUrl()))); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webdirectory/QtWebDirectory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,53 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTWEBDIRECTORY_H -#define OWQTWEBDIRECTORY_H - -#include - -#include - -/** - * Embedded HTML browser widget for the web directory. - * - * @author Mathieu Stute - */ -class QtWebDirectory : public QWebView { - Q_OBJECT -public: - - QtWebDirectory(QWidget * parent); - - ~QtWebDirectory(); - - void raise(); - -private Q_SLOTS: - - void CloseEventFilterSlot(); - - void languageChanged(); - -private: - - void init(); -}; - -#endif //OWQTBROWSERWIDGET_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,334 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSms.h" - -#include "ui_SmsWindow.h" - -#include -#include - -#include -#include -#include - -#include - -#include -#include -#include -#include -#include - -#include - -QtSms::QtSms(CSms & cSms) - : QObjectThreadSafe(NULL), - _cSms(cSms) { - - _cSms.smsStatusEvent += boost::bind(&QtSms::smsStatusEventHandler, this, _1, _2, _3); - _qtWengoPhone = (QtWengoPhone *) _cSms.getCWengoPhone().getPresentation(); - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSms::initThreadSafe, this)); - postEvent(event); -} - -QtSms::~QtSms() { - _qtWengoPhone->setQtSms(NULL); - OWSAFE_DELETE(_ui); -} - -void QtSms::initThreadSafe() { - - _smsWindow = new QDialog(_qtWengoPhone->getWidget()); - _ui = new Ui::SmsWindow(); - _ui->setupUi(_smsWindow); - - _mobilePhoneMenu = new QMenu(_smsWindow); - - SAFE_CONNECT(_ui->sendButton, SIGNAL(clicked()), SLOT(sendButtonClicked())); - SAFE_CONNECT(_ui->smsText, SIGNAL(textChanged()), SLOT(updateCounter())); - SAFE_CONNECT(_ui->signatureLineEdit, SIGNAL(textChanged(const QString &)), SLOT(updateCounter())); - - SAFE_CONNECT( _ui->addContactToolButton, SIGNAL(clicked()), SLOT(addContactToolButtonClicked())); - SAFE_CONNECT(_mobilePhoneMenu, SIGNAL(triggered(QAction *)), SLOT(updatePhoneNumberLineEdit(QAction *))); - - CloseEventFilter * closeEventFilter = new CloseEventFilter(this, SLOT(CloseEventFilterSlot())); - _smsWindow->installEventFilter(closeEventFilter); - - loadSignature(); - _qtWengoPhone->setQtSms(this); -} - -void QtSms::clear() { - - setText(QString()); -} - -void QtSms::setPhoneNumber(const QString & phoneNumber) { - - _ui->phoneComboBox->clear(); - if (!phoneNumber.isEmpty()) { - _ui->phoneComboBox->lineEdit()->setText(phoneNumber); - } -} - -void QtSms::addPhoneNumber(const QString & phoneNumber) { - - if (!phoneNumber.isEmpty()) { - if (_ui->phoneComboBox->lineEdit()->text().isEmpty()) { - _ui->phoneComboBox->lineEdit()->setText(phoneNumber); - } else { - _ui->phoneComboBox->lineEdit()->setText(_ui->phoneComboBox->lineEdit()->text() + "; " + phoneNumber); - } - } -} - -void QtSms::setSignature(const QString & signature) { - - _ui->signatureLineEdit->setText(signature); -} - -void QtSms::setText(const QString & text) { - - int pos = text.lastIndexOf(SIGNATURE_SEPARATOR); - QString mess = text; - if (pos != -1) { - //extract the signature - setSignature(text.right(text.length() - pos - SIGNATURE_LENGTH)); - mess = text.left(pos); - } - - _ui->smsText->clear(); - - QString fontSize = "9"; -#if defined(OS_MACOSX) - fontSize = "13"; -#endif - - _ui->smsText->setHtml("" - "" - "

" - + mess - + "

"); - updateCounter(); -} - -void QtSms::updateCounter() { - - int textLength = _ui->smsText->toPlainText().length(); - int signatureLength = _ui->signatureLineEdit->text().length(); - - QString counterText = QString::number(textLength + signatureLength) + "/"; - if (signatureLength) { - counterText += QString::number(MAX_LENGTH - SIGNATURE_LENGTH); - } else { - counterText += QString::number(MAX_LENGTH); - } - _ui->counterLabel->setText(counterText); - - // update counterLabel color - QPalette palette = _ui->counterLabel->palette(); - if (!isSmsLengthOk()) { - palette.setColor(QPalette::WindowText, Qt::red); - } else { - palette.setColor(QPalette::WindowText, Qt::black); - } - _ui->counterLabel->setPalette(palette); -} - -void QtSms::sendButtonClicked() { - - //check phoneNumber. - if (_ui->phoneComboBox->currentText().isEmpty()) { - - QMessageBox::warning(_smsWindow, - tr("@company@ SMS service"), - tr("Please fill in a phone number.") - ); - return; - } - - //check smsText. - if (_ui->smsText->toPlainText().isEmpty()) { - - QMessageBox::warning(_smsWindow, - tr("@company@ SMS service"), - tr("You can not send an empty message.") - ); - return; - } - - //Validate SMS length before sending - if (!isSmsLengthOk()) { - - int neededMessages = getNeededMessages(); - - int ret = QMessageBox::question(_smsWindow, - tr("@company@ SMS service"), - tr("Your message is too long.\n" - "This will send ") + QString::number(neededMessages) + tr(" SMS.\n") + tr("Do you want to continue?"), - QMessageBox::Yes, - QMessageBox::No - ); - - if (ret == QMessageBox::No) { - return; - } - } - - _ui->sendButton->setEnabled(false); - memorizeSignature(); - sendSms(); -} - -void QtSms::smsStatusEventHandler(WsSms & sender, int smsId, EnumSmsState::SmsState state) { - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSms::smsStatusEventHandlerThreadSafe, this, state)); - postEvent(event); -} - -void QtSms::smsStatusEventHandlerThreadSafe(EnumSmsState::SmsState state) { - - QString smsStatus = String::null; - switch (state) { - case EnumSmsState::SmsStateError: - smsStatus = tr("Your SMS has not been sent"); - break; - case EnumSmsState::SmsStateOk: - smsStatus = tr("Your SMS has been sent"); - break; - default: - LOG_FATAL("unknown SmsStatus=" + String::fromNumber(state)); - } - - _ui->sendButton->setEnabled(true); - QMessageBox::information(_smsWindow, tr("@company@ SMS service"), smsStatus); -} - -QString QtSms::getCompleteMessage() const { - - QString completeMessage = _ui->smsText->toPlainText(); - QString signature = _ui->signatureLineEdit->text(); - if (!signature.isEmpty()) { - completeMessage += SIGNATURE_SEPARATOR; - completeMessage += _ui->signatureLineEdit->text(); - } - - return completeMessage; -} - -int QtSms::getMessageLength() const { - - return getCompleteMessage().length(); -} - -void QtSms::sendSms() { - - // format Converts to UTF-8 - std::string numbers; - QString temp = _ui->phoneComboBox->currentText(); - QStringList phoneNumbers = temp.split(QRegExp(",|;|&")); - for (int i = 0; i < phoneNumbers.size(); i++) { - QString number = phoneNumbers[i].remove(" "); - if (i == 0) { - numbers += std::string(number.toUtf8().constData()); - } else { - numbers += ";" + std::string(number.toUtf8().constData()); - } - } - - QStringList messages = splitMessage(); - for (int i = 0; i < messages.size(); i++) { - - if (!messages[i].isEmpty()) { - std::string sms(messages[i].toUtf8().constData()); - _cSms.sendSMS(numbers, sms); - } - } -} - -QStringList QtSms::splitMessage() const { - - QStringList toReturn; - QString message = getCompleteMessage(); - int i; - - for (i = 0; i < getNeededMessages(); i++) { - QString temp = message.mid(i * MAX_LENGTH, MAX_LENGTH); - toReturn += temp; - } - - return toReturn; -} - -int QtSms::getNeededMessages() const { - - return ((getMessageLength() / MAX_LENGTH) + 1); -} - -void QtSms::memorizeSignature() { - - CUserProfile * cUserProfile = _qtWengoPhone->getCWengoPhone().getCUserProfileHandler().getCUserProfile(); - QString signature = _ui->signatureLineEdit->text(); - - if (cUserProfile && (!signature.isEmpty())) { - - UserProfile & userProfile = cUserProfile->getUserProfile(); - userProfile.setSmsSignature(signature.toStdString()); - } -} - -void QtSms::loadSignature() { - - CUserProfile * cUserProfile = _qtWengoPhone->getCWengoPhone().getCUserProfileHandler().getCUserProfile(); - QString signature = _ui->signatureLineEdit->text(); - - if (cUserProfile) { - - UserProfile & userProfile = cUserProfile->getUserProfile(); - std::string signature = userProfile.getSmsSignature(); - - if (!signature.empty()) { - - _ui->signatureLineEdit->setText(QString::fromStdString(signature)); - } - } -} - -void QtSms::addContactToolButtonClicked() { - _mobilePhoneMenu->clear(); - QtContactMenu::populateMobilePhoneMenu(_mobilePhoneMenu, _qtWengoPhone->getCWengoPhone()); - QPoint point = _ui->addContactToolButton->pos(); - point.setX(point.x() + _ui->addContactToolButton->rect().width()); - _mobilePhoneMenu->popup(_smsWindow->mapToGlobal(point)); -} - -void QtSms::updatePhoneNumberLineEdit(QAction * action) { - - if (action) { - QString data = action->data().toString(); - addPhoneNumber(data); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/QtSms.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,224 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSMS_H -#define OWQTSMS_H - -#include - -#include - -#include - -#include - -#include - -class QtWengoPhone; - -class QWidget; -class QPushButton; -class QTextEdit; -class QDialog; -class QMenu; -class QAction; -namespace Ui { class SmsWindow; } - -static const QString SIGNATURE_SEPARATOR = " -- "; -static const int SIGNATURE_LENGTH = 4; -static const int MAX_LENGTH = 160; - -/** - * Qt Presentation component for SMS. - * - * @author Tanguy Krotoff - * @author Mathieu Stute - */ -class QtSms : public QObjectThreadSafe, public PSms, public Trackable { - Q_OBJECT -public: - - /** - * Constructor. - */ - QtSms(CSms & cSms); - - /** - * Destructor. - */ - virtual ~QtSms(); - - /** - * Return a pointer to the widget. - * - * @return the sms widget. - */ - QWidget * getWidget() const { return (QWidget*)_smsWindow; } - - /** - * @see Presentation::updatePresentation. - */ - void updatePresentation() {} - - /** - * Set the phone number(s). - * - * @param phoneNumber the phone number. - */ - void setPhoneNumber(const QString & phoneNumber); - - /** - * Add a phone number. - * - * @param phoneNumber the phone number to add. - */ - void addPhoneNumber(const QString & phoneNumber); - - /** - * Set the message text. - * - * @param text the text. - */ - void setText(const QString & text); - - /** - * Set the signature. - * - * @param signature the signature. - */ - void setSignature(const QString & signature); - - /** - * Clear signature, phone box and textedit. - */ - void clear(); - -private Q_SLOTS: - - /** - * Update the counter label. - */ - void updateCounter(); - - /** - * The user has clicked the send button. - */ - void sendButtonClicked(); - - /** - * The user has clicked the add contact button. - */ - void addContactToolButtonClicked(); - - /** - * The user has clicked on a menu entry. - */ - void updatePhoneNumberLineEdit(QAction * action); - - /** - * Call when the dialog is closed. - */ - void CloseEventFilterSlot() { clear(); } - -private: - - /** - * Send sms(s) via control layer. - */ - void sendSms(); - - /** - * Split the sms into several sms if needed. - * TODO: put this in the model layer - * - * @return the sms list. - */ - QStringList splitMessage() const; - - /** - * Return the number of sms(s) needed to send the message. - * TODO: put this in the model layer - * - * @return the number of sms(s) needed. - */ - int getNeededMessages() const; - - /** - * Return the length of the sms. - * - * @return the length of the sms. - */ - int getMessageLength() const; - - /** - * Gets the complete sms: text + signature. - * - * @return the complete message. - */ - QString getCompleteMessage() const; - - /** - * Check if the message could be send via one sms. - * - * @return the complete message. - */ - bool isSmsLengthOk() const { return (getCompleteMessage().length() <= MAX_LENGTH); } - - /** - * Init thread safe. - */ - void initThreadSafe(); - - /** - * UpdatePresentation thread safe. - */ - void updatePresentationThreadSafe() {} - - /** - * Sms status event handler. - */ - void smsStatusEventHandler(WsSms & sender, int smsId, EnumSmsState::SmsState state); - - /** - * Sms status event handler thread safe. - */ - void smsStatusEventHandlerThreadSafe(EnumSmsState::SmsState state); - - /** - * Memorize in the current UserProfile. - */ - void memorizeSignature(); - - /** - * Load the signature from the current UserProfile. - */ - void loadSignature(); - - CSms & _cSms; - - QtWengoPhone * _qtWengoPhone; - - QMenu * _mobilePhoneMenu; - - Ui::SmsWindow * _ui; - - QDialog * _smsWindow; -}; - -#endif //OWQTSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/SmsWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/SmsWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/sms/SmsWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/sms/SmsWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,158 +0,0 @@ - - - - - SmsWindow - - - - 0 - 0 - 386 - 279 - - - - @product@ - SMS - - - true - - - - 9 - - - 6 - - - - - - 28 - 28 - - - - Click here to add a phone number - - - - - - :/pics/iconbar/add_contact.png - - - - 22 - 22 - - - - true - - - - - - - false - - - 0 /160 - - - Qt::AlignRight|Qt::AlignTrailing|Qt::AlignVCenter - - - - - - - Send - - - :/pics/contact/sms.png - - - - - - - - 7 - 0 - 0 - 0 - - - - Enter your signature here - - - 16 - - - - - - - Signature: - - - - - - - false - - - - - - - - 1 - 5 - 0 - 0 - - - - Phone number(s): - - - - - - - - 7 - 0 - 0 - 0 - - - - Enter phone number(s) here<br>They must be separated by & or ; or , - - - true - - - - - - - - phoneComboBox - addContactToolButton - smsText - signatureLineEdit - sendButton - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/BrowserSoftUpdateWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,131 +0,0 @@ - - - - - BrowserSoftUpdateWindow - - - - 0 - 0 - 387 - 129 - - - - @product@ - Update available - - - - 9 - - - 6 - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Close - - - - - - - - - 0 - - - 6 - - - - - - 0 - 0 - 0 - 0 - - - - :/pics/update.png - - - - - - - 13 - - - <html><head></head><body>An update is available, click <span style=" text-decoration: underline; color:#0000ff;">here</span> to download the new version<br /><br />Version: %1<br />File Size: %2 (MB)<br /></body></html> - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 10 - - - - - - - - - - - - closeButton - clicked() - BrowserSoftUpdateWindow - reject() - - - 263 - 159 - - - 179 - 197 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtBrowserSoftUpdate.h" - -#include "ui_BrowserSoftUpdateWindow.h" - -#include - -#include -#include - -#include -#include - -#include - -#include - -QtBrowserSoftUpdate::QtBrowserSoftUpdate(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize, QWidget * parent) - : QObject(parent) { - - _downloadUrl = downloadUrl; - _softUpdateWindow = new QDialog(parent); - - _ui = new Ui::BrowserSoftUpdateWindow(); - _ui->setupUi(_softUpdateWindow); - - QString originalLabelText = _ui->updateTextLabel->text() - .arg(QString::fromStdString(version)) - .arg(fileSize); - _ui->updateTextLabel->setText(originalLabelText); - - MousePressEventFilter * mouseFilter = new MousePressEventFilter(this, SLOT(showWengoDownloadWebPage())); - _ui->updateTextLabel->installEventFilter(mouseFilter); - - _softUpdateWindow->exec(); -} - -QtBrowserSoftUpdate::~QtBrowserSoftUpdate() { - OWSAFE_DELETE(_ui); -} - -void QtBrowserSoftUpdate::showWengoDownloadWebPage() { - //WsUrl::showWengoDownload(); - WebBrowser::openUrl(_downloadUrl); - _softUpdateWindow->accept(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtBrowserSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,61 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTBROWSERSOFTUPDATE_H -#define OWQTBROWSERSOFTUPDATE_H - -#include - -#include - -#include - -class QDialog; -namespace Ui { class BrowserSoftUpdateWindow; } - -/** - * Shows a window with the a clickable link to the WengoPhone download page. - * - * @author Tanguy Krotoff - */ -class QtBrowserSoftUpdate : public QObject, NonCopyable { - Q_OBJECT -public: - - QtBrowserSoftUpdate(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize, QWidget * parent); - - ~QtBrowserSoftUpdate(); - -private Q_SLOTS: - - void showWengoDownloadWebPage(); - -private: - - Ui::BrowserSoftUpdateWindow * _ui; - - QDialog * _softUpdateWindow; - - std::string _downloadUrl; -}; - -#endif //OWQTBROWSERSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,175 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "QtSoftUpdate.h" - -#include "ui_SoftUpdateWindow.h" - -#include "QtBrowserSoftUpdate.h" - -#include - -#include -#include - -#include -#include - -#include - -#include -#include -#include -#include - -#include - -#include - -static const char * UPDATE_PROGRAM = "update.exe"; - -QtSoftUpdate::QtSoftUpdate(CSoftUpdate & cSoftUpdate) - : QObjectThreadSafe(NULL), - _cSoftUpdate(cSoftUpdate) { - - _softUpdater = NULL; - _ui = NULL; - - _qtWengoPhone = (QtWengoPhone *) _cSoftUpdate.getCWengoPhone().getPresentation(); - - updateWengoPhoneEvent += boost::bind(&QtSoftUpdate::updateWengoPhoneEventHandler, this, _1, _2, _3, _4); - - typedef PostEvent0 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::initThreadSafe, this)); - postEvent(event); -} - -void QtSoftUpdate::initThreadSafe() { -} - -QtSoftUpdate::~QtSoftUpdate() { - OWSAFE_DELETE(_softUpdater); - OWSAFE_DELETE(_ui); -} - -void QtSoftUpdate::updateWengoPhoneEventHandler(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize) { - - typedef PostEvent4 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::updateWengoPhoneEventHandlerThreadSafe, - this, _1, _2, _3, _4), downloadUrl, buildId, version, fileSize); - postEvent(event); -} - -void QtSoftUpdate::updateWengoPhoneEventHandlerThreadSafe(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize) { - -#ifdef OS_WINDOWS - _softUpdateWindow = new QDialog(_qtWengoPhone->getWidget()); - - _ui = new Ui::SoftUpdateWindow(); - _ui->setupUi(_softUpdateWindow); - - SAFE_CONNECT(_softUpdateWindow, SIGNAL(rejected()), SLOT(abortDownload())); - - //updateTextLabel - _originalLabelText = _ui->updateTextLabel->text() - .arg(QString::fromStdString(version)) - .arg(QString::fromStdString(downloadUrl)) - .arg(fileSize); - _ui->updateTextLabel->setText(_originalLabelText); - - //Deletes previous update program - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString update_path = QString::fromStdString(config.getConfigDir())+ UPDATE_PROGRAM; - QFile file(update_path); - file.remove(); - file.close(); - - _softUpdater = new SoftUpdater(downloadUrl, update_path.toStdString()); - _softUpdater->dataReadProgressEvent += boost::bind(&QtSoftUpdate::dataReadProgressEventHandler, this, _1, _2, _3); - _softUpdater->downloadFinishedEvent += boost::bind(&QtSoftUpdate::downloadFinishedEventHandler, this, _1); - _softUpdater->start(); - - _softUpdateWindow->exec(); -#else - QtBrowserSoftUpdate(downloadUrl, buildId, version, fileSize, _qtWengoPhone->getWidget()); -#endif -} - -void QtSoftUpdate::dataReadProgressEventHandler(double bytesDone, double bytesTotal, unsigned downloadSpeed) { - typedef PostEvent3 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::dataReadProgressEventHandlerThreadSafe, this, _1, _2, _3), bytesDone, bytesTotal, downloadSpeed); - postEvent(event); -} - -void QtSoftUpdate::dataReadProgressEventHandlerThreadSafe(double bytesDone, double bytesTotal, unsigned downloadSpeed) { - LOG_DEBUG("progress=" + String::fromDouble(bytesDone)); - - //progressBar - _ui->progressBar->setRange(0, (int)bytesTotal); - _ui->progressBar->setValue((int)bytesDone); - - _ui->updateTextLabel->setText(_originalLabelText.arg(downloadSpeed)); - - QApplication::processEvents(); -} - -void QtSoftUpdate::downloadFinishedEventHandler(HttpRequest::Error error) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&QtSoftUpdate::downloadFinishedEventHandlerThreadSafe, this, _1), error); - postEvent(event); -} - -void QtSoftUpdate::downloadFinishedEventHandlerThreadSafe(HttpRequest::Error error) { - LOG_DEBUG("download finished"); - - if (error == HttpRequest::NoError) { - //Terminates the thread from the model - _cSoftUpdate.getCWengoPhone().terminate(); - - launchUpdateProcess(); - } else { - disconnect(_softUpdateWindow, SIGNAL(rejected()), this, SLOT(abortDownload())); - _softUpdateWindow->reject(); - } -} - -void QtSoftUpdate::abortDownload() { - _softUpdater->abort(); -} - -void QtSoftUpdate::launchUpdateProcess() { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - QString update_path = "\""+QString::fromStdString(config.getConfigDir())+ UPDATE_PROGRAM+"\""; - QProcess * updateProcess = new QProcess(); - SAFE_CONNECT(updateProcess, SIGNAL(error(QProcess::ProcessError)), SLOT(updateProcessError(QProcess::ProcessError))); - updateProcess->start(update_path); -} - -void QtSoftUpdate::updateProcessError(QProcess::ProcessError error) { - QMessageBox::critical(_qtWengoPhone->getWidget(), - tr("@product@ - Update failed"), - tr("@product@ update failed to start: try to update @product@ manually")); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/QtSoftUpdate.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,123 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWQTSOFTUPDATE_H -#define OWQTSOFTUPDATE_H - -#include - -#include - -#include - -#include - -#include -#include - -class CWengoPhone; -class SoftUpdater; -class CSoftUpdate; -class QtWengoPhone; - -class QDialog; -namespace Ui { class SoftUpdateWindow; } - -/** - * Shows a Qt progress dialog when downloading a WengoPhone update. - * - * Starts the update.exe process (the NSIS installer under Windows). - * - * @author Tanguy Krotoff - */ -class QtSoftUpdate : public QObjectThreadSafe, public PSoftUpdate, public Trackable { - Q_OBJECT -public: - - QtSoftUpdate(CSoftUpdate & cSoftUpdate); - - virtual ~QtSoftUpdate(); - - void updatePresentation() { } - -private Q_SLOTS: - - void abortDownload(); - - /** - * An error occured while starting the update process. - * - * @param error update process launching error - */ - void updateProcessError(QProcess::ProcessError error); - -private: - - void initThreadSafe(); - - void updatePresentationThreadSafe() { } - - void updateWengoPhoneEventHandler(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize); - - void updateWengoPhoneEventHandlerThreadSafe(const std::string & downloadUrl, - unsigned long long buildId, - const std::string & version, - unsigned fileSize); - - /** - * @see SoftUpdater::dataReadProgressEvent - */ - void dataReadProgressEventHandler(double bytesDone, double bytesTotal, unsigned downloadSpeed); - - void dataReadProgressEventHandlerThreadSafe(double bytesDone, double bytesTotal, unsigned downloadSpeed); - - /** - * @see SoftUpdater::downloadFinishedEvent - */ - void downloadFinishedEventHandler(HttpRequest::Error error); - - void downloadFinishedEventHandlerThreadSafe(HttpRequest::Error error); - - /** - * Launches the update process (the NSIS installer under Windows). - */ - void launchUpdateProcess(); - - QtWengoPhone * _qtWengoPhone; - - CSoftUpdate & _cSoftUpdate; - - /** SoftUpdater. */ - SoftUpdater * _softUpdater; - - /** Original progress dialog label text. */ - QString _originalLabelText; - - Ui::SoftUpdateWindow * _ui; - - /** - * Progress dialog. - */ - QDialog * _softUpdateWindow; -}; - -#endif //OWQTSOFTUPDATE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/webservices/softupdate/SoftUpdateWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,145 +0,0 @@ - - - - - SoftUpdateWindow - - - - 0 - 0 - 290 - 177 - - - - @product@ - Downloading update - - - - 9 - - - 6 - - - - - 0 - - - 6 - - - - - Downloading @product@ update... - -Version: %1 -URL: %2 -File Size: %3 (MB) -Speed: %4 (kB/s) - - - Qt::AlignLeading|Qt::AlignLeft|Qt::AlignVCenter - - - 10 - - - - - - - - 0 - 0 - 0 - 0 - - - - :/pics/update.png - - - - - - - false - - - Qt::Horizontal - - - - - - - - - 0 - - - 6 - - - - - Qt::Horizontal - - - - 131 - 31 - - - - - - - - Cancel - - - - - - - - - Qt::Vertical - - - - 20 - 40 - - - - - - - - - - - - - cancelButton - clicked() - SoftUpdateWindow - reject() - - - 363 - 226 - - - 179 - 239 - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WengoPhoneWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WengoPhoneWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WengoPhoneWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WengoPhoneWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,527 +0,0 @@ - - WengoPhoneWindow - - - - 0 - 0 - 350 - 511 - - - - - 333 - 510 - - - - @product@ - - - - true - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - - - - QFrame::NoFrame - - - QFrame::Raised - - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - 0 - - - - - false - - - 0 - - - - Contacts - - - - - History - - - - - Dialpad - - - - - - - - - - - - 0 - 0 - - - - 1 - - - - - - - - - 0 - 0 - 350 - 19 - - - - - &Help - - - - - - - - - &Actions - - - - - - - - - - - &Contacts - - - - - - - - - - &Tools - - - - Clear &History - - - - - - - - - - - - - - - - - - - - - - - - @company@ - - - - - - - - - - - - - - - - - - - - Qt::CustomContextMenu - - - ToolBar - - - false - - - Qt::Horizontal - - - - 32 - 32 - - - - Qt::ToolButtonTextUnderIcon - - - TopToolBarArea - - - false - - - - - - - - - false - - - View My @company@ Account... - - - - - - - - &Close - - - Ctrl+W - - - - - @company@ &Forum... - - - - - &About... - - - - - :/pics/iconbar/add_contact.png - - - Add &Contact... - - - Add - - - Add Contact - - - - - &Configuration... - - - - - :/pics/iconbar/sms.png - - - Send SMS... - - - SMS - - - Send SMS - - - - - :/pics/config/imaccounts.png - - - View My &Profile... - - - View My Profile - - - View My Profile - - - - - :/pics/iconbar/conference.png - - - Start &Conference... - - - Conference - - - Start Conference - - - - - @company@ &Wiki/FAQ... - - - - - Learn more about @company@ Services... - - - - - - - - Show/Hide Unavailable &Contacts - - - - - &Chat Sessions - - - - - &All - - - - - :/pics/iconbar/search_contact.png - - - &Find Contact... - - - Search - - - Find @company@ Contacts - - - - - - - - &Accept - - - - - - - - &HangUp - - - - - - - - &Hold/Resume - - - - - - - - Show/Hide &Groups - - - - - Log &Off... - - - Log Off - - - Log Off - - - - - :/pics/iconbar/chat.png - - - Show &Chat Window - - - Show Chat Window - - - Show Chat Window - - - - - &Outgoing Calls - - - - - &Incoming Calls - - - - - &Missed Calls - - - - - - - - Enable/Disable &Video Calls - - - - - Short Text &Messages (SMS) - - - - - false - - - - - - Show &File Transfer - - - - - - - - Rejected Calls - - - - - &Quit - - - Ctrl+Q - - - Qt::ApplicationShortcut - - - - - true - - - &Text Under Icons - - - - - true - - - &Icons Only - - - - - true - - - &Hidden - - - - - - QtProfileBar - QFrame -
profilebar/QtProfileBar.h
- 1 -
- - QtCallBar - QFrame -
callbar/QtCallBar.h
- 1 -
-
- - tabWidget - - - - - -
diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WengoStyleLabelProxy.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WengoStyleLabelProxy.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WengoStyleLabelProxy.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WengoStyleLabelProxy.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,20 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include Binary files /tmp/0iIV8W1Cxu/qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/win32/application.ico and /tmp/yAPW56qEKw/qutecom-2.2+dfsg1/wengophone/src/presentation/qt/win32/application.ico differ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/win32/application.rc qutecom-2.2+dfsg1/wengophone/src/presentation/qt/win32/application.rc --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/win32/application.rc 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/win32/application.rc 1970-01-01 00:00:00.000000000 +0000 @@ -1,43 +0,0 @@ -//Icon with lowest ID value placed first to ensure application icon -//remains consistent on all systems. -IDI_ICON1 ICON "${CMAKE_CURRENT_SOURCE_DIR}/win32/application.ico" - -#ifndef Q_CC_BOR - #if defined(UNDER_CE) && UNDER_CE >= 400 - #include - #else - #include - #endif -#endif - -VS_VERSION_INFO VERSIONINFO - FILEVERSION ${APPLICATION_VERSION_1},${APPLICATION_VERSION_2},${APPLICATION_VERSION_3},${APPLICATION_VERSION_4} - PRODUCTVERSION ${APPLICATION_VERSION_1},${APPLICATION_VERSION_2},${APPLICATION_VERSION_3},${APPLICATION_VERSION_4} - FILEFLAGSMASK 0x3fL -#ifdef DEBUG - FILEFLAGS VS_FF_DEBUG -#else - FILEFLAGS 0x0L -#endif - FILEOS VOS__WINDOWS32 - FILETYPE VFT_APP - FILESUBTYPE 0x0L - BEGIN - BLOCK "StringFileInfo" - BEGIN - BLOCK "040904B0" - BEGIN - VALUE "ProductName", "${APPLICATION_NAME}\0" - VALUE "ProductVersion", "${APPLICATION_VERSION}\0" - VALUE "Comments", "${APPLICATION_NAME}, a voice over Internet phone\0" - VALUE "CompanyName", "Wengo\0" - VALUE "LegalCopyright", "Copyright (C) 2004-2006 Wengo\0" - VALUE "LegalTrademarks", "Wengo\0" - VALUE "FileDescription", "${APPLICATION_NAME}\0" - VALUE "FileVersion", "${APPLICATION_VERSION}\0" - VALUE "InternalName", "${APPLICATION_NAME}\0" - VALUE "OriginalFilename", "${BINARY_NAME}.exe\0" - END - END - END -/* End of Version info */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WinApp.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WinApp.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WinApp.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WinApp.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,58 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WinApp.h" - -#include - -#include - -#include - -#define MY_WM_TERM WM_USER + 684 -#define MY_WM_EXIT WM_USER + 685 - -WinApp::WinApp(int & argc, char ** argv) : QApplication(argc, argv) { -} - -bool WinApp::winEventFilter(MSG * msg, long * result) { - - if (msg->message == (MY_WM_TERM)) { - if (_cWengoPhone) { - LOG_INFO("Disable serialization"); - _cWengoPhone->enableSerialization(false); - } - return true; - - } else if (msg->message == (MY_WM_EXIT)) { - if (_cWengoPhone) { - LOG_INFO("Terminating"); - _cWengoPhone->enableSerialization(false); - // "wait" for pending serialization to be finished - Sleep(1000); - exit(1); - } - } - - return false; -} - -void WinApp::setCWengoPhone(CWengoPhone *cWengoPhone) { - _cWengoPhone = cWengoPhone; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WinApp.h qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WinApp.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/qt/WinApp.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/qt/WinApp.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2007 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -/** - * @author Mathieu Stute - */ - -#ifndef OWWINAPP_H -#define OWWINAPP_H - -#include - -class CWengoPhone; - -class WinApp : public QApplication { - Q_OBJECT -public: - - WinApp(int & argc, char ** argv); - - void setCWengoPhone(CWengoPhone *cWengoPhone); - - bool winEventFilter(MSG * msg, long * result); - -private: - - CWengoPhone *_cWengoPhone; -}; - -#endif //OWWINAPP_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/Doxyfile qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/Doxyfile --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/Doxyfile 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/Doxyfile 1970-01-01 00:00:00.000000000 +0000 @@ -1,265 +0,0 @@ -# Doxyfile 1.4.4 - -#--------------------------------------------------------------------------- -# Project related configuration options -#--------------------------------------------------------------------------- -PROJECT_NAME = WengoPhoneNG library to use via XPCOM -PROJECT_NUMBER = -OUTPUT_DIRECTORY = doc -CREATE_SUBDIRS = NO -OUTPUT_LANGUAGE = English -USE_WINDOWS_ENCODING = YES -BRIEF_MEMBER_DESC = YES -REPEAT_BRIEF = YES -ABBREVIATE_BRIEF = "The $name class" \ - "The $name widget" \ - "The $name file" \ - is \ - provides \ - specifies \ - contains \ - represents \ - a \ - an \ - the -ALWAYS_DETAILED_SEC = NO -INLINE_INHERITED_MEMB = NO -FULL_PATH_NAMES = NO -STRIP_FROM_PATH = -STRIP_FROM_INC_PATH = -SHORT_NAMES = NO -JAVADOC_AUTOBRIEF = YES -MULTILINE_CPP_IS_BRIEF = NO -DETAILS_AT_TOP = NO -INHERIT_DOCS = YES -DISTRIBUTE_GROUP_DOC = NO -SEPARATE_MEMBER_PAGES = NO -TAB_SIZE = 8 -ALIASES = -OPTIMIZE_OUTPUT_FOR_C = NO -OPTIMIZE_OUTPUT_JAVA = NO -SUBGROUPING = YES -#--------------------------------------------------------------------------- -# Build related configuration options -#--------------------------------------------------------------------------- -EXTRACT_ALL = YES -EXTRACT_PRIVATE = YES -EXTRACT_STATIC = YES -EXTRACT_LOCAL_CLASSES = NO -EXTRACT_LOCAL_METHODS = NO -HIDE_UNDOC_MEMBERS = NO -HIDE_UNDOC_CLASSES = NO -HIDE_FRIEND_COMPOUNDS = NO -HIDE_IN_BODY_DOCS = NO -INTERNAL_DOCS = NO -CASE_SENSE_NAMES = NO -HIDE_SCOPE_NAMES = NO -SHOW_INCLUDE_FILES = YES -INLINE_INFO = YES -SORT_MEMBER_DOCS = YES -SORT_BRIEF_DOCS = NO -SORT_BY_SCOPE_NAME = NO -GENERATE_TODOLIST = YES -GENERATE_TESTLIST = YES -GENERATE_BUGLIST = YES -GENERATE_DEPRECATEDLIST= YES -ENABLED_SECTIONS = -MAX_INITIALIZER_LINES = 30 -SHOW_USED_FILES = YES -SHOW_DIRECTORIES = YES -FILE_VERSION_FILTER = -#--------------------------------------------------------------------------- -# configuration options related to warning and progress messages -#--------------------------------------------------------------------------- -QUIET = NO -WARNINGS = YES -WARN_IF_UNDOCUMENTED = YES -WARN_IF_DOC_ERROR = YES -WARN_NO_PARAMDOC = NO -WARN_FORMAT = "$file:$line: $text" -WARN_LOGFILE = -#--------------------------------------------------------------------------- -# configuration options related to the input files -#--------------------------------------------------------------------------- -INPUT = src \ - README \ - INSTALL \ - TODO \ - AUTHORS \ - mainpage.doxygen \ - WengoPhoneCodeConventions.txt \ - COPYING \ - ChangeLog -FILE_PATTERNS = *.c \ - *.cc \ - *.cxx \ - *.cpp \ - *.c++ \ - *.d \ - *.java \ - *.ii \ - *.ixx \ - *.ipp \ - *.i++ \ - *.inl \ - *.h \ - *.hh \ - *.hxx \ - *.hpp \ - *.h++ \ - *.idl \ - *.odl \ - *.cs \ - *.php \ - *.php3 \ - *.inc \ - *.m \ - *.mm \ - *.dox -RECURSIVE = YES -EXCLUDE = -EXCLUDE_SYMLINKS = NO -EXCLUDE_PATTERNS = -EXAMPLE_PATH = . -EXAMPLE_PATTERNS = * -EXAMPLE_RECURSIVE = NO -IMAGE_PATH = -INPUT_FILTER = -FILTER_PATTERNS = -FILTER_SOURCE_FILES = NO -#--------------------------------------------------------------------------- -# configuration options related to source browsing -#--------------------------------------------------------------------------- -SOURCE_BROWSER = NO -INLINE_SOURCES = NO -STRIP_CODE_COMMENTS = YES -REFERENCED_BY_RELATION = NO -REFERENCES_RELATION = NO -USE_HTAGS = NO -VERBATIM_HEADERS = YES -#--------------------------------------------------------------------------- -# configuration options related to the alphabetical class index -#--------------------------------------------------------------------------- -ALPHABETICAL_INDEX = NO -COLS_IN_ALPHA_INDEX = 5 -IGNORE_PREFIX = -#--------------------------------------------------------------------------- -# configuration options related to the HTML output -#--------------------------------------------------------------------------- -GENERATE_HTML = YES -HTML_OUTPUT = html -HTML_FILE_EXTENSION = .html -HTML_HEADER = -HTML_FOOTER = -HTML_STYLESHEET = -HTML_ALIGN_MEMBERS = YES -GENERATE_HTMLHELP = NO -CHM_FILE = -HHC_LOCATION = -GENERATE_CHI = NO -BINARY_TOC = NO -TOC_EXPAND = NO -DISABLE_INDEX = NO -ENUM_VALUES_PER_LINE = 4 -GENERATE_TREEVIEW = NO -TREEVIEW_WIDTH = 250 -#--------------------------------------------------------------------------- -# configuration options related to the LaTeX output -#--------------------------------------------------------------------------- -GENERATE_LATEX = NO -LATEX_OUTPUT = latex -LATEX_CMD_NAME = latex -MAKEINDEX_CMD_NAME = makeindex -COMPACT_LATEX = NO -PAPER_TYPE = a4wide -EXTRA_PACKAGES = -LATEX_HEADER = -PDF_HYPERLINKS = NO -USE_PDFLATEX = NO -LATEX_BATCHMODE = NO -LATEX_HIDE_INDICES = NO -#--------------------------------------------------------------------------- -# configuration options related to the RTF output -#--------------------------------------------------------------------------- -GENERATE_RTF = NO -RTF_OUTPUT = rtf -COMPACT_RTF = NO -RTF_HYPERLINKS = NO -RTF_STYLESHEET_FILE = -RTF_EXTENSIONS_FILE = -#--------------------------------------------------------------------------- -# configuration options related to the man page output -#--------------------------------------------------------------------------- -GENERATE_MAN = NO -MAN_OUTPUT = man -MAN_EXTENSION = .3 -MAN_LINKS = NO -#--------------------------------------------------------------------------- -# configuration options related to the XML output -#--------------------------------------------------------------------------- -GENERATE_XML = NO -XML_OUTPUT = xml -XML_SCHEMA = -XML_DTD = -XML_PROGRAMLISTING = YES -#--------------------------------------------------------------------------- -# configuration options for the AutoGen Definitions output -#--------------------------------------------------------------------------- -GENERATE_AUTOGEN_DEF = NO -#--------------------------------------------------------------------------- -# configuration options related to the Perl module output -#--------------------------------------------------------------------------- -GENERATE_PERLMOD = NO -PERLMOD_LATEX = NO -PERLMOD_PRETTY = YES -PERLMOD_MAKEVAR_PREFIX = -#--------------------------------------------------------------------------- -# Configuration options related to the preprocessor -#--------------------------------------------------------------------------- -ENABLE_PREPROCESSING = YES -MACRO_EXPANSION = NO -EXPAND_ONLY_PREDEF = NO -SEARCH_INCLUDES = YES -INCLUDE_PATH = -INCLUDE_FILE_PATTERNS = -PREDEFINED = -EXPAND_AS_DEFINED = -SKIP_FUNCTION_MACROS = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to external references -#--------------------------------------------------------------------------- -TAGFILES = -GENERATE_TAGFILE = -ALLEXTERNALS = NO -EXTERNAL_GROUPS = YES -PERL_PATH = /usr/bin/perl -#--------------------------------------------------------------------------- -# Configuration options related to the dot tool -#--------------------------------------------------------------------------- -CLASS_DIAGRAMS = YES -HIDE_UNDOC_RELATIONS = YES -HAVE_DOT = NO -CLASS_GRAPH = YES -COLLABORATION_GRAPH = YES -GROUP_GRAPHS = YES -UML_LOOK = NO -TEMPLATE_RELATIONS = NO -INCLUDE_GRAPH = YES -INCLUDED_BY_GRAPH = YES -CALL_GRAPH = NO -GRAPHICAL_HIERARCHY = YES -DIRECTORY_GRAPH = YES -DOT_IMAGE_FORMAT = png -DOT_PATH = -DOTFILE_DIRS = -MAX_DOT_GRAPH_WIDTH = 1024 -MAX_DOT_GRAPH_HEIGHT = 1024 -MAX_DOT_GRAPH_DEPTH = 1000 -DOT_TRANSPARENT = NO -DOT_MULTI_TARGETS = NO -GENERATE_LEGEND = YES -DOT_CLEANUP = YES -#--------------------------------------------------------------------------- -# Configuration::additions related to the search engine -#--------------------------------------------------------------------------- -SEARCHENGINE = NO diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/include/Command.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/include/Command.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/include/Command.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/include/Command.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,295 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWCOMMAND_H -#define OWCOMMAND_H - -#include "Listener.h" - -#include - -#include - -class WengoPhone; -class CWengoPhone; - -#ifdef XPCOM_DLL - #ifdef BUILD_XPCOM_DLL - #define API DLLEXPORT - #else - #define API DLLIMPORT - #endif -#else - #define API -#endif - -/** - * Commands to send to WengoPhone. - * - * @author Tanguy Krotoff - */ -class API Command { -public: - - /** - * Command constructor. - * - * @param applicationPath where the application lies - * (ex: C:/Program Files/WengoPhone/) - * @param configPath where the application configuration files lies - * (ex: C:/Documents and Settings/WengoPhone/) - */ - Command(const std::string & configFilesPath, const std::string & configPath); - - ~Command(); - - /** - * Starts the model thread + the SIP stack. - * - * To do before everything else. - */ - void start(); - - /** - * HTTP proxy settings to use for all the HTTP requests. - * - * @param hostname HTTP proxy hostname - * @param port HTTP proxy port number - * @param login HTTP proxy login (can be empty) - * @param password HTTP proxy password (can be empty) - */ - void setHttpProxySettings(const std::string & hostname, unsigned port, - const std::string & login, const std::string & password); - - /** - * Terminates the model thread + the SIP stack. - */ - void terminate(); - - /** - * Adds a Wengo account. - * - * @param login Wengo account login - * @param password Wengo account password - * @param autoLogin if true login the user automatically (save it to the file) - */ - void addWengoAccount(const std::string & login, const std::string & password, bool autoLogin); - - /** - * @name Listener Methods - * @{ - */ - - /** - * @see Listener - */ - void addListener(Listener * listener); - - /** - * @see Listener - */ - bool removeListener(Listener * listener); - - /** - * @see Listener - */ - void removeAllListeners(); - - /** @} */ - - /** - * @name Call Methods - * @{ - */ - - /** An error occured while creating a phone call. */ - static const int CallIdError = -1; - - /** - * Makes a call given a phone number. - * - * Creates a new phone call with a new call id (increased each time). - * - * Warning! - * Be sure to receive PhoneLineState::LineOk before to call this method. - * - * @param phoneNumber phone number to call - * @param lineId phone line id - * @return the phone call id (callId) or CallIdError if an error occured - */ - int makeCall(const std::string & phoneNumber, int lineId); - - /** - * Hang up (raccrocher). - * - * Can correspond to reject or close call depending on PhoneCallState. - * - * @param callId phone call id - */ - void hangUp(int callId); - - /** - * Used to determine if hang up is possible. - * - * @param callId phone call id - * @returns true if it is possible to hang up the phone, false instead. - */ - bool canHangUp(int callId) const; - - /** - * Pick up (decrocher). - * - * Corresponds to accept call. - * - * @param callId phone call id - */ - void pickUp(int callId); - - /** - * Used to determine if it is possible to pick up the phone. - * - * @param callId phone call id - * @returns true if it is possible to pick up the phone, false instead. - */ - bool canPickUp(int callId) const; - - /** @} */ - - /** - * @name Presence Methods - * @{ - */ - - /** - * Subscribes for the presence state of somebody. - * - * Warning! - * Be sure to receive PhoneLineState::LineOk before to call this method. - * - * @param contactId person I want to see - */ - void subscribeToPresenceOf(const std::string & contactId); - - /** - * Sets my presence status. - * - * Warning! - * Be sure to receive PhoneLineState::LineOk before to call this method. - * - * @param note personnalized status string ("I'm under the shower"), used only with PresenceUserDefined - */ - void publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note); - - /** @} */ - - /** - * @name Chat Methods - * @{ - */ - - /** - * Sends a chat message. - * - * Warning! - * Be sure to receive PhoneLineState::LineOk before to call this method. - * - * @param contactId message receiver - * @param message message to send - * @return message id - */ - int sendChatMessage(const std::string & contactId, const std::string & message); - - /** @} */ - - /** - * @name Sound Mixer Configuration - * @{ - */ - - /** - * Sets the microphone volume. - * - * @param volume new input volume (0 to 100) - */ - void setInputVolume(int volume); - - /** - * Gets the input (microphone) volume. - * - * @return the input volume (0 to 100), -1 if an error occured - */ - int getInputVolume() const; - - /** - * Sets the master or wave out volume. - * - * @param volume new output volume (0 to 100) - */ - void setOutputVolume(int volume); - - /** - * Gets the output (master or wave out) volume. - * - * @return the output volume (0 to 100), -1 if an error occured - */ - int getOutputVolume() const; - - /** @} */ - - /** - * @name SMS Methods - * @{ - */ - - /** - * Sends a SMS to a given phone number. - * - * Warning! - * phoneNumber and message should be UTF-8 encoded. - * Using Qt4, sendSMS() should be called as followed: - *
-	 * sendSMS(phoneComboBox->currentText().toUtf8().constData(),
-	 *         smsText->toPlainText().toUtf8().constData());
-	 * 
- * For Qt4, check QString::toUtf8() and QByteArray::constData() - * - * @param phoneNumber phone number that will receive the SMS - * @param message SMS message - * @return SMS id - */ - int sendSMS(const std::string & phoneNumber, const std::string & message); - - /** @} */ - - /** - * Sends a DTMF to a given phone call. - * - * @param callId phone call id to send a DTMF - * @param tone DTMF tone to send - */ - void playTone(int callId, EnumTone::Tone tone); - -private: - - WengoPhone * _wengoPhone; - - CWengoPhone * _cWengoPhone; -}; - -#endif //OWCOMMAND_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/include/Listener.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/include/Listener.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/include/Listener.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/include/Listener.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,117 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWLISTENER_H -#define OWLISTENER_H - -#include - -#include -#include -#include - -#include -#include - -#include - -/** - * Events notification from WengoPhone. - * - * @author Tanguy Krotoff - */ -class Listener : Interface { -public: - - /** - * Login procedure is done, event with the procedure result. - * - * @param state login procedure result - * @param login Wengo login used - * @param password Wengo password used - */ - virtual void wengoLoginStateChangedEvent(EnumSipLoginState::SipLoginState state, const std::string & login, const std::string & password) = 0; - - /** - * The state of the phone line has changed. - * - * @param state new phone line state - * @param lineId phone line id - * @param param for future use - */ - virtual void phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state, int lineId, void * param) = 0; - - /** - * The state of the phone call has changed. - * - * @param state new phone call state - * @param lineId phone line id associated with this phone call - * @param callId phone call id - * @param sipAddress caller/callee SIP address (can be empty) - * @param userName caller/callee username (can be empty) - * @param displayName caller/callee display name (can be empty) - * @param param for future use - */ - virtual void phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state, int lineId, int callId, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) = 0; - - /** - * Presence status of a buddy has changed. - * - * @param state new buddy presence status - * @param note user presence defined (state = PresenceUserDefined) - * @param sipAddress buddy SIP address (can be empty) - * @param userName buddy username (can be empty) - * @param displayName buddy display name (can be empty) - * @param param for future use - */ - virtual void presenceStateChangedEvent(EnumPresenceState::PresenceState state, const std::string & note, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) = 0; - - /** - * Chat message received callback. - * - * @see presenceStateChangedEvent - * @param message message received - */ - virtual void chatMessageReceivedEvent(const std::string & message, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) = 0; - - /** - * Callback to check if the SMS was received or not. - * - * @param smsId SMS id - * @param state SMS state (ok or error) - */ - virtual void smsStatusEvent(int smsId, EnumSmsState::SmsState state) = 0; - - /** - * A login/password is needed for the HTTP proxy. - * - * @param hostname HTTP proxy server hostname detected - * @param port HTTP proxy server port detected - * @see Command::setHttpProxySettings() - */ - //virtual void httpProxySettingsNeededEvent(const std::string & hostname, unsigned port)/* = 0*/ { } -}; - -#endif //OWLISTENER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/Command.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/Command.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/Command.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/Command.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,253 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include - -#include "XPCOMWengoPhone.h" -#include "XPCOMPhoneLine.h" -#include "XPCOMPhoneCall.h" -#include "XPCOMFactory.h" -#include "XPCOMIMHandler.h" -#include "XPCOMSms.h" -#include "ListenerList.h" - -#include - -#include -#include -#include - -#include -#include -#include - -#include - -#if defined(CC_MSVC) - #include -#endif - -#ifdef PHAPIWRAPPER - #include -#elif defined(SIPXWRAPPER) - #include - #include -#elif defined (MULTIIMWRAPPER) - #include - #include - #include -#else - #include - #include -#endif - -Command::Command(const std::string & configFilesPath, const std::string & configPath) { - -#ifdef CC_MSVC - new MemoryDump("WengoPhoneNG", String::fromUnsignedLongLong(WengoPhoneBuildId::getSvnRevision().c_str())); -#endif - - //Graphical interface implementation - PFactory::setFactory(new XPCOMFactory()); - - //SIP implementation - SipWrapperFactory * sipFactory = NULL; - - //IM implementation - IMWrapperFactory * imFactory = NULL; - -#ifdef SIPXWRAPPER - sipFactory = new SipXFactory(); - imFactory = new NullIMFactory(); -#elif defined(PHAPIWRAPPER) - PhApiFactory * phApiFactory = new PhApiFactory(); - sipFactory = phApiFactory; - imFactory = phApiFactory; -#elif defined(MULTIIMWRAPPER) - PhApiFactory * phApiFactory = new PhApiFactory(); - GaimIMFactory * gaimIMFactory = new GaimIMFactory(); - sipFactory = phApiFactory; - imFactory = new MultiIMFactory(*phApiFactory, *gaimIMFactory); -#else - sipFactory = new NullSipFactory(); - imFactory = new NullIMFactory(); -#endif - SipWrapperFactory::setFactory(sipFactory); - IMWrapperFactory::setFactory(imFactory); - - /*WengoPhone::CONFIG_FILES_PATH = configFilesPath; - - //Codec plugin path (phspeexplugin and phamrplugin) - ConfigManager::getInstance().getCurrentConfig().set(Config::CODEC_PLUGIN_PATH, - WengoPhone::getConfigFilesPath() + "../extensions/{debaffee-a972-4d8a-b426-8029170f2a89}/libraries/");*/ - - _wengoPhone = new WengoPhone(); - _cWengoPhone = new CWengoPhone(*_wengoPhone); -} - -Command::~Command() { - delete _wengoPhone; - delete _cWengoPhone; -} - -void Command::start() { - //Starts the model component thread - _cWengoPhone->start(); -} - -void Command::setHttpProxySettings(const std::string & hostname, unsigned port, - const std::string & login, const std::string & password) { - - /*WengoPhone::HTTP_PROXY_HOSTNAME = hostname; - WengoPhone::HTTP_PROXY_PORT = port;*/ -} - -void Command::terminate() { - _cWengoPhone->terminate(); -} - -void Command::addWengoAccount(const std::string & login, const std::string & password, bool autoLogin) { - //_cWengoPhone->addWengoAccount(login, password, autoLogin); -} - -void Command::addListener(Listener * listener) { - ListenerList & listenerList = ListenerList::getInstance(); - listenerList += listener; -} - -bool Command::removeListener(Listener * listener) { - ListenerList & listenerList = ListenerList::getInstance(); - return listenerList -= listener; -} - -void Command::removeAllListeners() { - ListenerList & listenerList = ListenerList::getInstance(); - listenerList.clear(); -} - -int Command::makeCall(const std::string & phoneNumber, int lineId) { - PhoneLineList & phoneLineList = PhoneLineList::getInstance(); - for (unsigned i = 0; i < phoneLineList.size(); i++) { - if (i == (lineId - 1)) { - XPCOMPhoneLine * phoneLine = phoneLineList[i]; - return phoneLine->makeCall(phoneNumber); - } - } - - return CallIdError; -} - -void Command::hangUp(int callId) { - PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; - if (phoneCall) { - phoneCall->hangUp(); - } -} - -bool Command::canHangUp(int callId) const { - PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; - if (phoneCall) { - return phoneCall->canHangUp(); - } - - return false; -} - -void Command::pickUp(int callId) { - PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; - if (phoneCall) { - phoneCall->pickUp(); - } -} - -bool Command::canPickUp(int callId) const { - PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; - if (phoneCall) { - return phoneCall->canPickUp(); - } - - return false; -} - -void Command::subscribeToPresenceOf(const std::string & contactId) { - XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); - imHandler.subscribeToPresenceOf(contactId); -} - -void Command::publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { - XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); - imHandler.publishMyPresence(state, note); -} - -int Command::sendChatMessage(const std::string & sipAddress, const std::string & message) { - XPCOMIMHandler & imHandler = XPCOMIMHandler::getInstance(); - return imHandler.sendChatMessage(sipAddress, message); -} - -void Command::setInputVolume(int volume) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - VolumeControl volumeControl(config.getAudioInputDeviceName(), VolumeControl::DeviceTypeInput); - volumeControl.setLevel(volume); -} - -void Command::setOutputVolume(int volume) { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - VolumeControl volumeControl(config.getAudioOutputDeviceName(), VolumeControl::DeviceTypeOutput); - volumeControl.setLevel(volume); -} - -int Command::getInputVolume() const { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - try { - VolumeControl volumeControl(config.getAudioInputDeviceName(), VolumeControl::DeviceTypeInput); - return volumeControl.getLevel(); - } catch (Exception & e) { - return -1; - } -} - -int Command::getOutputVolume() const { - Config & config = ConfigManager::getInstance().getCurrentConfig(); - try { - VolumeControl volumeControl(config.getAudioOutputDeviceName(), VolumeControl::DeviceTypeOutput); - return volumeControl.getLevel(); - } catch (Exception & e) { - return -1; - } -} - -int Command::sendSMS(const std::string & phoneNumber, const std::string & message) { - if (XPCOMSms::sms) { - return XPCOMSms::sms->sendSMS(phoneNumber, message); - } - return -1; -} - -void Command::playTone(int callId, EnumTone::Tone tone) { - PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - XPCOMPhoneCall * phoneCall = phoneCallMap[callId]; - if (phoneCall) { - phoneCall->playTone(tone); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/ListenerList.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/ListenerList.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/ListenerList.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/ListenerList.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWLISTENERLIST_H -#define OWLISTENERLIST_H - -#include - -#include -#include - -/** - * @author Tanguy Krotoff - */ -class ListenerList : NonCopyable, public List { -public: - - /** Singleton. */ - static ListenerList & getInstance() { - static ListenerList listenerList; - - return listenerList; - } - -private: - - ListenerList() { } -}; - -#endif //OWLISTENERLIST_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMFactory.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMFactory.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMFactory.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMFactory.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,113 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMFACTORY_H -#define OWXPCOMFACTORY_H - -#include "XPCOMWengoPhone.h" -#include "XPCOMUserProfile.h" -#include "XPCOMPhoneLine.h" -#include "XPCOMPhoneCall.h" -#include "XPCOMSms.h" - -#include -#include -#include -#include - -PFactory * PFactory::_factory = 0; - -class XPCOMFactory : public PFactory { -public: - - XPCOMFactory() { - } - - ~XPCOMFactory() { - } - - PWengoPhone * createPresentationWengoPhone(CWengoPhone & cWengoPhone) { - static XPCOMWengoPhone xpcomWengoPhone(&cWengoPhone); - return &xpcomWengoPhone; - } - - PUserProfile * createPresentationUserProfile(CUserProfile & cUserProfile) { - XPCOMUserProfile * xpcomUserProfile = new XPCOMUserProfile(cUserProfile); - return xpcomUserProfile; - } - - PUserProfileHandler * createPresentationUserProfileHandler(CUserProfileHandler & cUserProfileHandler) { - return NULL; - } - - PPhoneLine * createPresentationPhoneLine(CPhoneLine & cPhoneLine) { - XPCOMPhoneLine * xpcomPhoneLine = new XPCOMPhoneLine(cPhoneLine); - return xpcomPhoneLine; - } - - PPhoneCall * createPresentationPhoneCall(CPhoneCall & cPhoneCall) { - XPCOMPhoneCall * xpcomPhoneCall = new XPCOMPhoneCall(cPhoneCall); - return xpcomPhoneCall; - } - - PContactList * createPresentationContactList(CContactList & cContactList) { - return NULL; - } - - PWenboxPlugin * createPresentationWenboxPlugin(CWenboxPlugin & cWenboxPlugin) { - return NULL; - } - - PChatHandler * createPresentationChatHandler(CChatHandler & cChatHandler) { - return NULL; - } - - PSms * createPresentationSms(CSms & cSms) { - XPCOMSms * xpcomSms = new XPCOMSms(cSms); - return xpcomSms; - } - - PSoftUpdate * createPresentationSoftUpdate(CSoftUpdate & cSoftUpdate) { - return NULL; - } - - PHistory * createPresentationHistory(CHistory & cHistory) { - return NULL; - } - - PSubscribe * createPresentationSubscribe(CSubscribe & cSubscribe) { - return NULL; - } - - PWsDirectory * createPresentationWsDirectory(CWsDirectory & cWsDirectory) { - return NULL; - } - - int exec() { - return true; - } - - void processEvents() { } - - void reset() { } - -private: -}; - -#endif //OWXPCOMFACTORY_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,120 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMIMHandler.h" - -#include "ListenerList.h" - -#include -#include -#include -#include -#include -#include -#include -#include - -#include - -#include - -void XPCOMIMHandler::connected() { - if (!_account) { - _account = new IMAccount(_wengoLogin, _wengoPassword, EnumIMProtocol::IMProtocolSIPSIMPLE); - } - - if (!_connect) { - _connect = IMWrapperFactory::getFactory().createIMConnect(*_account); - } - - if (!_chat) { - _chat = IMWrapperFactory::getFactory().createIMChat(*_account); - _chatSession = new IMChatSession(*_chat); - _chatSession->messageReceivedEvent += - boost::bind(&XPCOMIMHandler::messageReceivedEventHandler, this, _1, _2, _3); - } - - if (!_presence) { - _presence = IMWrapperFactory::getFactory().createIMPresence(*_account); - _presence->presenceStateChangedEvent += - boost::bind(&XPCOMIMHandler::presenceStateChangedEventHandler, this, _1, _2, _3, _4); - } -} - -void XPCOMIMHandler::messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message) { - SipAddress sipUri(from.getContactId()); - std::string sipAddress = sipUri.getSipAddress(); - std::string userName = sipUri.getUserName(); - std::string displayName = sipUri.getDisplayName(); - - ListenerList & listenerList = ListenerList::getInstance(); - - for (unsigned i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - listener->chatMessageReceivedEvent(message, sipAddress, userName, displayName, NULL); - } -} - -void XPCOMIMHandler::presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, - const std::string & note, const std::string & from) { - - SipAddress sipUri(from); - std::string sipAddress = sipUri.getSipAddress(); - std::string userName = sipUri.getUserName(); - std::string displayName = sipUri.getDisplayName(); - - ListenerList & listenerList = ListenerList::getInstance(); - - for (unsigned i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - listener->presenceStateChangedEvent(state, note, sipAddress, userName, displayName, NULL); - } -} - -void XPCOMIMHandler::subscribeToPresenceOf(const std::string & sipAddress) { - if (!_presence) { - LOG_DEBUG("cannot call subscribeToPresenceOf(): _presence is NULL"); - return; - } - - _presence->subscribeToPresenceOf(sipAddress); -} - -void XPCOMIMHandler::publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note) { - if (!_presence) { - LOG_DEBUG("cannot call publishMyPresence(): _presence is NULL"); - return; - } - - _presence->changeMyPresence(state); -} - -int XPCOMIMHandler::sendChatMessage(const std::string & sipAddress, const std::string & message) { - if (!_chatSession) { - LOG_DEBUG("cannot call sendMessage(): _chatSession is NULL"); - return 0; - } - - _chatSession->removeAllIMContact(); - _chatSession->addIMContact(IMContact(*_account, sipAddress)); - _chatSession->sendMessage(message); - - return 1; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMIMHandler.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,85 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMIMHANDLER_H -#define OWXPCOMIMHANDLER_H - -#include - -#include - -#include - -#include - -class IMAccount; -class IMContact; -class IMConnect; -class IMChat; -class IMChatSession; -class IMPresence; - -class XPCOMIMHandler : NonCopyable { -public: - - /** Singleton. */ - static XPCOMIMHandler & getInstance() { - static XPCOMIMHandler imHandler; - - return imHandler; - } - - XPCOMIMHandler() { - _account = NULL; - _connect = NULL; - _chat = NULL; - _presence = NULL; - } - - void setWengoLoginPassword(const std::string & wengoLogin, const std::string & wengoPassword) { - _wengoLogin = wengoLogin; - _wengoPassword = wengoPassword; - } - - void connected(); - - void subscribeToPresenceOf(const std::string & sipAddress); - - void publishMyPresence(EnumPresenceState::PresenceState state, const std::string & note); - - int sendChatMessage(const std::string & sipAddress, const std::string & message); - -private: - - void messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message); - - void presenceStateChangedEventHandler(IMPresence & sender, EnumPresenceState::PresenceState state, - const std::string & note, const std::string & from); - - std::string _wengoLogin; - std::string _wengoPassword; - - IMAccount * _account; - IMConnect * _connect; - IMChat * _chat; - IMChatSession * _chatSession; - IMPresence * _presence; -}; - -#endif //OWXPCOMIMHANDLER_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,64 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMPhoneCall.h" - -#include -#include "ListenerList.h" - -#include - -#include - -XPCOMPhoneCall::XPCOMPhoneCall(CPhoneCall & cPhoneCall) - : _cPhoneCall(cPhoneCall) { -} - -void XPCOMPhoneCall::phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state) { - - /*PhoneCallMap & phoneCallMap = PhoneCallMap::getInstance(); - phoneCallMap[callId] = this; - - ListenerList & listenerList = ListenerList::getInstance(); - for (unsigned i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - listener->phoneCallStateChangedEvent(state, lineId, callId, sipAddress, userName, displayName, NULL); - }*/ -} - -void XPCOMPhoneCall::hangUp() { - _cPhoneCall.hangUp(); -} - -bool XPCOMPhoneCall::canHangUp() const { - return _cPhoneCall.canHangUp(); -} - -void XPCOMPhoneCall::pickUp() { - _cPhoneCall.pickUp(); -} - -bool XPCOMPhoneCall::canPickUp() const { - return _cPhoneCall.canPickUp(); -} - -void XPCOMPhoneCall::playTone(EnumTone::Tone tone) { - _cPhoneCall.playTone(tone); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneCall.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,80 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMPHONECALL_H -#define OWXPCOMPHONECALL_H - -#include - -#include - -#include - -#include - -#include - -class CPhoneCall; - -class XPCOMPhoneCall : public PPhoneCall { -public: - - XPCOMPhoneCall(CPhoneCall & cPhoneCall); - - void updatePresentation() { } - - void hangUp(); - - bool canHangUp() const; - - void pickUp(); - - bool canPickUp() const; - - void playTone(EnumTone::Tone tone); - -private: - - void phoneCallStateChangedEvent(EnumPhoneCallState::PhoneCallState state); - - void videoFrameReceived(piximage * remoteVideoFrame, piximage * localVideoFrame) { } - - void updatePresentationThreadSafe() { } - - void initThreadSafe() { } - - CPhoneCall & _cPhoneCall; -}; - -class PhoneCallMap : NonCopyable, public std::map { -public: - - /** Singleton. */ - static PhoneCallMap & getInstance() { - static PhoneCallMap phoneCallMap; - - return phoneCallMap; - } - -private: - - PhoneCallMap() { } -}; - -#endif //OWXPCOMPHONECALL_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,46 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMPhoneLine.h" - -#include -#include "ListenerList.h" -#include "XPCOMIMHandler.h" - -#include - -#include - -XPCOMPhoneLine::XPCOMPhoneLine(CPhoneLine & cPhoneLine) - : _cPhoneLine(cPhoneLine) { - PhoneLineList::getInstance().add(this); -} - -int XPCOMPhoneLine::makeCall(const std::string & phoneNumber) { - return _cPhoneLine.makeCall(phoneNumber); -} - -void XPCOMPhoneLine::phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state) { - /*ListenerList & listenerList = ListenerList::getInstance(); - for (unsigned i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - listener->phoneLineStateChangedEvent(state, lineId, NULL); - }*/ -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMPhoneLine.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,69 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMPHONELINE_H -#define OWXPCOMPHONELINE_H - -#include - -#include -#include - -#include - -class CPhoneLine; - -class XPCOMPhoneLine : public PPhoneLine { -public: - - XPCOMPhoneLine(CPhoneLine & cPhoneLine); - - void phoneLineStateChangedEvent(EnumPhoneLineState::PhoneLineState state); - - void updatePresentation() { } - - int makeCall(const std::string & phoneNumber); - -private: - - void updatePresentationThreadSafe() { } - - void initThreadSafe() { } - - void phoneLineStateChangedEventThreadSafe(EnumPhoneLineState::PhoneLineState state) { } - - CPhoneLine & _cPhoneLine; -}; - -class PhoneLineList : public List, NonCopyable { -public: - - /** Singleton. */ - static PhoneLineList & getInstance() { - static PhoneLineList phoneLineList; - - return phoneLineList; - } - -private: - - PhoneLineList() { } -}; - -#endif //OWXPCOMPHONELINE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,49 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMSms.h" - -#include -#include "ListenerList.h" - -#include -#include -#include - -XPCOMSms * XPCOMSms::sms = NULL; - -XPCOMSms::XPCOMSms(CSms & cSms) - : _cSms(cSms) { - - sms = this; - _cSms.smsStatusEvent += boost::bind(&XPCOMSms::smsStatusEventHandler, this, _1, _2, _3); -} - -int XPCOMSms::sendSMS(const std::string & phoneNumber, const std::string & message) { - return _cSms.sendSMS(phoneNumber, message); -} - -void XPCOMSms::smsStatusEventHandler(Sms & sender, int smsId, EnumSmsState::SmsState state) { - ListenerList & listenerList = ListenerList::getInstance(); - for (unsigned i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - listener->smsStatusEvent(smsId, state); - } -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMSms.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,51 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMSMS_H -#define OWXPCOMSMS_H - -#include - -#include - -#include - -class XPCOMSms : public PSms { -public: - - static XPCOMSms * sms; - - XPCOMSms(CSms & cSms); - - int sendSMS(const std::string & phoneNumber, const std::string & message); - - void updatePresentation() { } - -private: - - void updatePresentationThreadSafe() { } - - void initThreadSafe() { } - - void smsStatusEventHandler(Sms & sender, int smsId, EnumSmsState::SmsState state); - - CSms & _cSms; -}; - -#endif //OWXPCOMSMS_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,108 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMUserProfile.h" - -#include -#include "ListenerList.h" -#include "XPCOMIMHandler.h" - -#include - -#include - -CUserProfile * XPCOMUserProfile::_cWengoPhone = NULL; - -XPCOMUserProfile::XPCOMUserProfile(CUserProfile * cWengoPhone) { - _cWengoPhone = cWengoPhone; -} - -CUserProfile & XPCOMUserProfile::getCUserProfile() { - if (!_cWengoPhone) { - LOG_FATAL("XPCOMWengoPhone::XPCOMWengoPhone() must be call first"); - } - return *_cWengoPhone; -} - -void XPCOMUserProfile::loginStateChangedEventHandler(SipAccount & sender, EnumSipLoginState::SipLoginState state) { - ListenerList & listenerList = ListenerList::getInstance(); - for (int i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - switch (state) { - case WengoPhone::LoginOk: - XPCOMIMHandler::getInstance().setWengoLoginPassword(login, password); - listener->wengoLoginStateChangedEvent(Listener::LoginOk, login, password); - break; - - case WengoPhone::LoginPasswordError: - listener->wengoLoginStateChangedEvent(Listener::LoginPasswordError, login, password); - break; - - case WengoPhone::LoginNetworkError: - listener->wengoLoginStateChangedEvent(Listener::LoginNetworkError, login, password); - break; - - case WengoPhone::LoginNoAccount: - listener->wengoLoginStateChangedEvent(Listener::LoginNoAccount, login, password); - break; - - default: - LOG_FATAL("unknown state=" + String::fromNumber(state)); - }; - - } -} - -void XPCOMUserProfile::networkDiscoveryStateChangedEventHandler(SipAccount & sender, SipAccount::NetworkDiscoveryState state) { -} - -void XPCOMUserProfile::authorizationRequestEventHandler(PresenceHandler & sender, const IMContact & imContact, const std::string & message) { -} - -/* -void XPCOMWengoPhone::wengoLoginStateChangedEvent(WengoPhone::LoginState state, const std::string & login, const std::string & password) { - ListenerList & listenerList = ListenerList::getInstance(); - for (int i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - switch (state) { - case WengoPhone::LoginOk: - XPCOMIMHandler::getInstance().setWengoLoginPassword(login, password); - listener->wengoLoginStateChangedEvent(Listener::LoginOk, login, password); - break; - - case WengoPhone::LoginPasswordError: - listener->wengoLoginStateChangedEvent(Listener::LoginPasswordError, login, password); - break; - - case WengoPhone::LoginNetworkError: - listener->wengoLoginStateChangedEvent(Listener::LoginNetworkError, login, password); - break; - - case WengoPhone::LoginNoAccount: - listener->wengoLoginStateChangedEvent(Listener::LoginNoAccount, login, password); - break; - - default: - LOG_FATAL("unknown state=" + String::fromNumber(state)); - }; - } -} -*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMUserProfile.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,55 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMUSERPROFILE_H -#define OWXPCOMUSERPROFILE_H - -#include - -class CUserProfile; -class Listener; - -class XPCOMUserProfile : public PUserProfile { -public: - - XPCOMUserProfile(CUserProfile * cUserProfile); - - static CWengoPhone & getCUserProfile(); - - void loginStateChangedEventHandler(SipAccount & sender, - EnumSipLoginState::SipLoginState state) { } - - void networkDiscoveryStateChangedEventHandler(SipAccount & sender, - SipAccount::NetworkDiscoveryState state) { } - - void authorizationRequestEventHandler(PresenceHandler & sender, - const IMContact & imContact, const std::string & message) { } - - void updatePresentation() { } - -private: - - void updatePresentationThreadSafe() { } - - void initThreadSafe() { } - - static CUserProfile * _cUserProfile; -}; - -#endif //OWXPCOMUSERPROFILE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,72 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "XPCOMWengoPhone.h" - -#include -#include "ListenerList.h" -#include "XPCOMIMHandler.h" - -#include - -#include - -CWengoPhone * XPCOMWengoPhone::_cWengoPhone = NULL; - -XPCOMWengoPhone::XPCOMWengoPhone(CWengoPhone * cWengoPhone) { - _cWengoPhone = cWengoPhone; -} - -CWengoPhone & XPCOMWengoPhone::getCWengoPhone() { - if (!_cWengoPhone) { - LOG_FATAL("XPCOMWengoPhone::XPCOMWengoPhone() must be call first"); - } - return *_cWengoPhone; -} - -/* -void XPCOMWengoPhone::wengoLoginStateChangedEvent(WengoPhone::LoginState state, const std::string & login, const std::string & password) { - ListenerList & listenerList = ListenerList::getInstance(); - for (int i = 0; i < listenerList.size(); i++) { - Listener * listener = listenerList[i]; - - switch (state) { - case WengoPhone::LoginOk: - XPCOMIMHandler::getInstance().setWengoLoginPassword(login, password); - listener->wengoLoginStateChangedEvent(Listener::LoginOk, login, password); - break; - - case WengoPhone::LoginPasswordError: - listener->wengoLoginStateChangedEvent(Listener::LoginPasswordError, login, password); - break; - - case WengoPhone::LoginNetworkError: - listener->wengoLoginStateChangedEvent(Listener::LoginNetworkError, login, password); - break; - - case WengoPhone::LoginNoAccount: - listener->wengoLoginStateChangedEvent(Listener::LoginNoAccount, login, password); - break; - - default: - LOG_FATAL("unknown state=" + String::fromNumber(state)); - }; - } -} -*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/src/XPCOMWengoPhone.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,48 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWXPCOMWENGOPHONE_H -#define OWXPCOMWENGOPHONE_H - -#include - -class CWengoPhone; -class Listener; - -class XPCOMWengoPhone : public PWengoPhone { -public: - - XPCOMWengoPhone(CWengoPhone * cWengoPhone); - - static CWengoPhone & getCWengoPhone(); - - void showHistory() { } - - void updatePresentation() { } - -private: - - void updatePresentationThreadSafe() { } - - void initThreadSafe() { } - - static CWengoPhone * _cWengoPhone; -}; - -#endif //OWXPCOMWENGOPHONE_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/main.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,37 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MainWindow.h" - -#include - -#include - -int main(int argc, char * argv[]) { - QApplication * app = new QApplication(argc, argv); - - QMainWindow mainWindow; - - MainWindow * window = new MainWindow(); - mainWindow.setCentralWidget(window->getWidget()); - - mainWindow.show(); - - return app->exec(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.cpp qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,306 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "MainWindow.h" - -#include -#include - -#include -#include - -#include -#include - -#include - -#include -using namespace std; - -class QtListener : public Listener { -public: - - QtListener(MainWindow & mainWindow); - - void wengoLoginStateChangedEvent(LoginState state, const std::string & login, const std::string & password); - - void phoneLineStateChangedEvent(PhoneLineState state, int lineId, void * param); - - void phoneCallStateChangedEvent(PhoneCallState state, int lineId, int callId, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param); - - void presenceStateChangedEvent(PresenceState state, const std::string & note, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param); - - void chatMessageReceivedEvent(const std::string & message, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param); - - void loggerMessageAddedEvent(const std::string & message); - -private: - - MainWindow & _mainWindow; -}; - - -QtListener::QtListener(MainWindow & mainWindow) - : _mainWindow(mainWindow) { -} - -void QtListener::wengoLoginStateChangedEvent(LoginState state, const std::string & login, const std::string & password) { - switch (state) { - case LoginNetworkError: - _mainWindow.addLogMessage("LoginNetworkError"); - break; - - case LoginPasswordError: - _mainWindow.addLogMessage("LoginPasswordError"); - break; - - case LoginOk: - _mainWindow.addLogMessage("LoginOk"); - break; - - case LoginNoAccount: - _mainWindow.addLogMessage("LoginNoAccount"); - break; - - default: - LOG_FATAL("unknown login state"); - } -} - -void QtListener::phoneLineStateChangedEvent(PhoneLineState state, int lineId, void * param) { - _mainWindow._currentLineId = lineId; - - switch (state) { - case LineProxyError: - _mainWindow.addLogMessage("LineProxyError"); - break; - - case LineServerError: - _mainWindow.addLogMessage("LineServerError"); - break; - - case LineTimeout: - _mainWindow.addLogMessage("LineTimeout"); - break; - - case LineOk: - _mainWindow.addLogMessage("LineOk"); - - //Presence - _mainWindow._command->subscribeToPresenceOf("annefleur"); - _mainWindow._command->subscribeToPresenceOf("dbitton_office"); - _mainWindow._command->subscribeToPresenceOf("guirec_office"); - _mainWindow._command->subscribeToPresenceOf("dbitton_office"); - _mainWindow._command->subscribeToPresenceOf("antesoft"); - _mainWindow._command->subscribeToPresenceOf("tanguy-krotoff"); - break; - - case LineClosed: - _mainWindow.addLogMessage("LineClosed"); - delete _mainWindow._command; - _mainWindow._command = NULL; - break; - - default: - LOG_FATAL("unknown phone line state"); - } -} - -void QtListener::phoneCallStateChangedEvent(PhoneCallState state, int lineId, int callId, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) { - - _mainWindow._currentLineId = lineId; - _mainWindow._currentCallId = callId; - - switch (state) { - case CallIncoming: - _mainWindow.addLogMessage("CallIncoming: " + userName + " " + displayName); - break; - - case CallOk: - _mainWindow.addLogMessage("CallOk"); - break; - - case CallError: - _mainWindow.addLogMessage("CallError"); - break; - - case CallResumeOk: - _mainWindow.addLogMessage("CallResumeOk"); - break; - - case CallDialing: - _mainWindow.addLogMessage("CallDialing"); - break; - - case CallRinging: - _mainWindow.addLogMessage("CallRinging"); - break; - - case CallClosed: - _mainWindow.addLogMessage("CallClosed"); - break; - - case CallHoldOk: - _mainWindow.addLogMessage("CallHoldOk"); - break; - - default: - LOG_FATAL("unknown phone call state"); - } -} - -void QtListener::presenceStateChangedEvent(PresenceState state, const std::string & note, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) { - - switch(state) { - case PresenceOnline: - _mainWindow.addLogMessage("PresenceOnline: " + userName); - break; - - case PresenceOffline: - _mainWindow.addLogMessage("PresenceOffline: " + userName); - break; - - case PresenceAway: - _mainWindow.addLogMessage("PresenceAway: " + userName); - break; - - case PresenceDoNotDisturb: - _mainWindow.addLogMessage("PresenceDoNotDisturb: " + userName); - break; - - case PresenceUserDefined: - _mainWindow.addLogMessage("PresenceUserDefined: " + userName); - break; - - case PresenceUnknown: - _mainWindow.addLogMessage("PresenceUnknown: " + userName); - break; - - default: - LOG_FATAL("unknown presence state"); - } -} - -void QtListener::chatMessageReceivedEvent(const std::string & message, - const std::string & sipAddress, const std::string & userName, const std::string & displayName, - void * param) { - - _mainWindow.addLogMessage(message + " " + sipAddress); -} - -void QtListener::loggerMessageAddedEvent(const std::string & message) { -} - - -MainWindow::MainWindow() { - _mainWindow = WidgetFactory::create("MainWindow.ui", NULL); - - _makeCallButton = Object::findChild(_mainWindow, "makeCallButton"); - connect(_makeCallButton, SIGNAL(clicked()), SLOT(makeCallButtonClicked())); - - _hangUpButton = Object::findChild(_mainWindow, "hangUpButton"); - connect(_hangUpButton, SIGNAL(clicked()), SLOT(hangUpButtonClicked())); - - _acceptCallButton = Object::findChild(_mainWindow, "acceptCallButton"); - connect(_acceptCallButton, SIGNAL(clicked()), SLOT(acceptCallButtonClicked())); - - _phoneNumber = Object::findChild(_mainWindow, "phoneNumber"); - connect(_phoneNumber, SIGNAL(returnPressed()), SLOT(makeCallButtonClicked())); - - _sendChatMessageButton = Object::findChild(_mainWindow, "sendChatMessageButton"); - connect(_sendChatMessageButton, SIGNAL(clicked()), SLOT(sendChatMessageButtonClicked())); - - _chatMessage = Object::findChild(_mainWindow, "chatMessage"); - connect(_chatMessage, SIGNAL(returnPressed()), SLOT(sendChatMessageButtonClicked())); - - _commandStartButton = Object::findChild(_mainWindow, "commandStartButton"); - connect(_commandStartButton, SIGNAL(clicked()), SLOT(commandStartButtonClicked())); - - _commandTerminateButton = Object::findChild(_mainWindow, "commandTerminateButton"); - connect(_commandTerminateButton, SIGNAL(clicked()), SLOT(commandTerminateButtonClicked())); - - _command = NULL; - commandStartButtonClicked(); -} - -void MainWindow::addLogMessage(const std::string & message) { - typedef PostEvent1 MyPostEvent; - MyPostEvent * event = new MyPostEvent(boost::bind(&MainWindow::addLogMessageThreadSafe, this, _1), message); - postEvent(event); -} - -void MainWindow::addLogMessageThreadSafe(std::string message) { - static QListWidget * listWidget = Object::findChild(_mainWindow, "listWidget"); - - listWidget->addItem(message.c_str()); - listWidget->scrollToItem(listWidget->item(listWidget->count() - 1)); -} - -void MainWindow::makeCallButtonClicked() { - string number = _phoneNumber->text().toStdString(); - if (!number.empty()) { - _command->makeCall(number, _currentLineId); - } -} - -void MainWindow::hangUpButtonClicked() { - _command->hangUp(_currentCallId); -} - -void MainWindow::acceptCallButtonClicked() { - _command->pickUp(_currentCallId); -} - -void MainWindow::sendChatMessageButtonClicked() { - string message = _chatMessage->text().toStdString(); - string number = _phoneNumber->text().toStdString(); - if (!number.empty()) { - _command->sendChatMessage(number, message); - } -} - -void MainWindow::commandStartButtonClicked() { - static QtListener * listener = new QtListener(*this); - - //QString configDir = QDir::homePath() + QDir::separator() + QString("Jrme") + QDir::separator(); - QString configDir; - - _command = new Command(configDir.toStdString()); - _command->start(); - _command->addListener(listener); - addLogMessage("Command::start()"); -} - -void MainWindow::commandTerminateButtonClicked() { - if (_command) { - _command->terminate(); - } - - addLogMessage("Command::terminate()"); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.h qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWMAINWINDOW_H -#define OWMAINWINDOW_H - -#include - -#include - -class QWidget; -class QPushButton; -class QLineEdit; -class Command; -class QtListener; - -class MainWindow : public QObjectThreadSafe { - Q_OBJECT - - friend class QtListener; -public: - - MainWindow(); - - QWidget * getWidget() const { - return _mainWindow; - } - - void addLogMessage(const std::string & message); - -private Q_SLOTS: - - void makeCallButtonClicked(); - - void hangUpButtonClicked(); - - void acceptCallButtonClicked(); - - void sendChatMessageButtonClicked(); - - void commandStartButtonClicked(); - - void commandTerminateButtonClicked(); - -private: - - void initThreadSafe() { } - - void addLogMessageThreadSafe(std::string message); - - QWidget * _mainWindow; - - QPushButton * _makeCallButton; - - QPushButton * _hangUpButton; - - QPushButton * _acceptCallButton; - - QPushButton * _rejectCallButton; - - QLineEdit * _phoneNumber; - - QPushButton * _sendChatMessageButton; - - QLineEdit * _chatMessage; - - QPushButton * _commandStartButton; - - QPushButton * _commandTerminateButton; - - Command * _command; - - int _currentCallId; - - int _currentLineId; -}; - -#endif //OWMAINWINDOW_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.ui qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.ui --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.ui 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/presentation/xpcom/tests/MainWindow.ui 1970-01-01 00:00:00.000000000 +0000 @@ -1,91 +0,0 @@ - - - - - MainWindow - - - - 0 - 0 - 301 - 365 - - - - MainWindow - - - - 9 - - - 6 - - - - - Command::terminate() - - - - - - - Command::start() - - - - - - - - - - Accept Call - - - - - - - 0 - - - 6 - - - - - - - - Send Chat Message - - - - - - - - - - - - Make Call - - - - - - - Hang Up - - - - - - - - - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/WengoPhoneBuildId.cpp qutecom-2.2+dfsg1/wengophone/src/WengoPhoneBuildId.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/WengoPhoneBuildId.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/WengoPhoneBuildId.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,101 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoPhoneBuildId.h" - -#include -#include - -#include -#if !defined(OS_MACOSX) && defined(OWSOUND_PORTAUDIO_SUPPORT) - #include -#endif -#include -#include -extern "C" { -#include -#if defined (IMWRAPPER_BACKEND_MULTI) - #include - #include -#endif -} - -#define stringize2(x) #x -#define stringize(x) stringize2(x) - -const unsigned long long WengoPhoneBuildId::getBuildId() { - return DD_BUILDID; -} - -const char * WengoPhoneBuildId::getVersion() { - return stringize(DD_VERSION); -} - -const char * WengoPhoneBuildId::getSvnRevision() { - return stringize(DD_REVISION); -} - -const char * WengoPhoneBuildId::getSoftphoneName() { - return stringize(DD_SOFTPHONE_NAME); -} - -const char * WengoPhoneBuildId::getBoostVersion() { - static std::string version(BOOST_LIB_VERSION); - return version.c_str(); -} - -const char * WengoPhoneBuildId::getPurpleVersion() { -#if defined (IMWRAPPER_BACKEND_MULTI) - return purple_core_get_version(); -#endif - return ""; -} - -const char * WengoPhoneBuildId::getGLibVersion() { -#if defined (IMWRAPPER_BACKEND_MULTI) - static std::string version(String::fromNumber(GLIB_MAJOR_VERSION) + "." + - String::fromNumber(GLIB_MINOR_VERSION) + "." + - String::fromNumber(GLIB_MICRO_VERSION)); - return version.c_str(); -#endif - return ""; -} - -const char * WengoPhoneBuildId::getCurlVersion() { - return curl_version(); -} - -const char * WengoPhoneBuildId::getPortaudioVersion() { -#if !defined(OS_MACOSX) && defined(OWSOUND_PORTAUDIO_SUPPORT) - return Pa_GetVersionText(); -#endif - return ""; -} - -const char * WengoPhoneBuildId::getAvcodecVersion() { - static std::string version(String::fromNumber(avcodec_version())); - return version.c_str(); -} - -const char * WengoPhoneBuildId::getTinyXmlVersion() { - static std::string version(String::fromNumber(TIXML_MAJOR_VERSION) + "." + - String::fromNumber(TIXML_MINOR_VERSION) + "." + - String::fromNumber(TIXML_PATCH_VERSION)); - return version.c_str(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/WengoPhoneBuildId.h qutecom-2.2+dfsg1/wengophone/src/WengoPhoneBuildId.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/src/WengoPhoneBuildId.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/src/WengoPhoneBuildId.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,112 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef OWWENGOPHONEBUILDID_H -#define OWWENGOPHONEBUILDID_H - -/** - * Identifies uniquely a revision of WengoPhone. - * - * @author Tanguy Krotoff - */ -class WengoPhoneBuildId { -public: - - /** - * Build id is the WengoPhone compilation date/time (e.g 2005/12/07 - 18:18:09) - * - * This is a unique id for each release. - * It permits WengoPhone to check if a more recent version of itself exist. - * Format: year/month/day hour:minutes:seconds - * - * Do not modify this to a string, keep it as a number! - */ - static const unsigned long long getBuildId(); - - /** - * Version name (e.g "1.2.1") - * Human readable representation of the build id. - * - * This is a unique string for each release. - */ - static const char * getVersion(); - - /** - * Revision number (subversion revision). - * - * Check console command 'svnversion -n': - * - *
-	 * The version number will be a single number if the working
-	 * copy is single revision, unmodified, not switched and with
-	 * an URL that matches the TRAIL_URL argument.  If the working
-	 * copy is unusual the version number will be more complex:
-	 *
-	 * 4123:4168     mixed revision working copy
-	 * 4168M         modified working copy
-	 * 4123S         switched working copy
-	 * 4123:4168MS   mixed revision, modified, switched working copy
-	 *
-	 * If invoked on a directory that is not a working copy, an
-	 * exported directory say, the program will output 'exported'.
-	 * 
- */ - static const char * getSvnRevision(); - - /** - * Softphone name when connecting on the Wengo platform. - * WL_TAG - */ - static const char * getSoftphoneName(); - - /** - * Boost version number. - * - * Cannot be named BOOST_VERSION because of a define inside Boost. - */ - static const char * getBoostVersion(); - - /** LibPurple version number. */ - static const char * getPurpleVersion(); - - /** GLib version number. */ - static const char * getGLibVersion(); - - /** cURL version number. */ - static const char * getCurlVersion(); - - /** PortAudio version number. */ - static const char * getPortaudioVersion(); - - /** FFmpeg' libavcodec version number. */ - static const char * getAvcodecVersion(); - - /** TinyXML version number. */ - static const char * getTinyXmlVersion(); - -private: - - /** Avoid copying of this object. */ - - WengoPhoneBuildId() { } - WengoPhoneBuildId(const WengoPhoneBuildId &); - WengoPhoneBuildId& operator=(const WengoPhoneBuildId &); -}; - -#endif //OWWENGOPHONEBUILDID_H diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/ContactListTest.h qutecom-2.2+dfsg1/wengophone/tests/ContactListTest.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/ContactListTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/ContactListTest.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,94 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#ifndef CONTACTLISTTEST_H -#define CONTACTLISTTEST_H - -#include -#include -#include - -#include -using namespace std; - -#include -using boost::unit_test_framework::test_suite; -using boost::unit_test_framework::test_case; - -class ContactListTest { -public: - - ContactListTest() { - } - - void testContactGroup() { - const string groupName = "test group"; - ContactGroup group(groupName); - - BOOST_CHECK(group.toString() == groupName); - } - - void testContactList() { - const string groupName1 = "test group 1"; - const string groupName2 = "test group 2"; - ContactGroup group1(groupName1); - ContactGroup group2(groupName2); - ContactList list; - - list.addContactGroup(&group1); - BOOST_CHECK(list.size() == 1); - BOOST_CHECK(list[0] == group1); - - list.addContactGroup(&group2); - BOOST_CHECK(list.size() == 2); - BOOST_CHECK(list[0] == group1); - BOOST_CHECK(list[1] == group2); - - BOOST_CHECK(*list[groupName1] == group1); - BOOST_CHECK(*list[groupName2] == group2); - - list.removeContactGroup(&group1); - BOOST_CHECK(list.size() == 1); - BOOST_CHECK(list[0] == group2); - - list.removeContactGroup(&group1); - BOOST_CHECK(list.size() == 1); - - list.removeContactGroup(&group2); - BOOST_CHECK(list.size() == 0); - } - -private: -}; - - -class ContactListTestSuite : public test_suite { -public: - - ContactListTestSuite() : test_suite("ContactListTestSuite") { - boost::shared_ptr instance(new ContactListTest()); - - test_case * testContactGroup = BOOST_CLASS_TEST_CASE(&ContactListTest::testContactGroup, instance); - test_case * testContactList = BOOST_CLASS_TEST_CASE(&ContactListTest::testContactList, instance); - - add(testContactGroup); - add(testContactList); - } -}; - -#endif //CONTACTLISTTEST_H \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/main.cpp qutecom-2.2+dfsg1/wengophone/tests/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,30 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ -#include - -#include "ContactListTest.h" - -test_suite * init_unit_test_suite(int argc, char * argv[]) { - test_suite * test = BOOST_TEST_SUITE("libwengophone test suite"); - - test->add(new ContactListTestSuite()); - - return test; -} - diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp qutecom-2.2+dfsg1/wengophone/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/networkdiscovery-test/NetworkDiscoveryTest.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,146 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include -#include -#include -#include -#include -#include - -#include - -#if defined(CC_MSVC) - #include -#endif - -#include -#include -using namespace std; - -WengoPhone * wengoPhone = NULL; - -void loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state) { - switch (state) { - case SipAccount::LoginStateConnected: - LOG_DEBUG(sender.getUsername() + " is connected"); - break; - case SipAccount::LoginStateDisconnected: - LOG_DEBUG(sender.getUsername() + " has been disconnected"); - break; - case SipAccount::LoginStateNetworkError: - LOG_DEBUG("a network error occured while attempting to connect " + sender.getUsername()); - break; - case SipAccount::LoginStatePasswordError: - LOG_DEBUG("wrong login/password for " + sender.getUsername()); - break; - case SipAccount::LoginStateReady: - LOG_DEBUG(sender.getUsername() + " is ready to connect"); - break; - default: - LOG_FATAL("this state is unknown"); - } -} - -void noAccountAvailableEventHandler(UserProfile & sender) { - sender.addSipAccount("jerome.leleu@wengo.fr", "b1234b", true); -} - -void proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort) { - string url = proxyUrl; - int port = proxyPort; - string login; - string password; - string input; - - cout << "Proxy settings needed for " << proxyUrl << ":" << proxyPort << endl; - cout << "Is proxy URL and proxy port valid? (y, n)" << endl; - cin >> input; - if ((input == "n") || (input == "N")) { - cout << "Please enter proxy url: "; - cin >> url; - cout << "Please enter proxy port: "; - cin >> port; - } - cout << "Please enter proxy login: "; - cin >> login; - cout << "Please enter proxy password: "; - cin >> password; - - sender.setProxySettings(url, port, login, password); -} - -void wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, - const std::string & proxyLogin, const std::string proxyPassword) { - string url = proxyUrl; - int port = proxyPort; - string login; - string password; - string input; - - cout << "Wrong proxy login/password. Please enter again parameter for " << proxyUrl << ":" << proxyPort << endl; - cout << "Is proxy URL and proxy port valid? (y, n)" << endl; - cin >> input; - if ((input == "n") || (input == "N")) { - cout << "Please enter proxy url: "; - cin >> url; - cout << "Please enter proxy port: "; - cin >> port; - } - cout << "Please enter proxy login: "; - cin >> login; - cout << "Please enter proxy password: "; - cin >> password; - - sender.setProxySettings(url, port, login, password); -} - -int main(int argc, char * argv[]) { - -#if defined(CC_MSVC) - new MemoryDump("WengoPhoneNG"); -#endif - - //IM implementation - IMWrapperFactory * imFactory = NULL; - - //SIP implementation - SipWrapperFactory * sipFactory = NULL; - - PhApiFactory * phApiFactory = new PhApiFactory(); - sipFactory = phApiFactory; - imFactory = phApiFactory; - - SipWrapperFactory::setFactory(sipFactory); - IMWrapperFactory::setFactory(imFactory); - - wengoPhone = new WengoPhone(); - - UserProfile & mProfile = wengoPhone->getCurrentUserProfile(); - mProfile.loginStateChangedEvent += &loginStateChangedEventHandler; - mProfile.noAccountAvailableEvent += &noAccountAvailableEventHandler; - mProfile.proxyNeedsAuthenticationEvent += &proxyNeedsAuthenticationEventHandler; - mProfile.wrongProxyAuthenticationEvent += &wrongProxyAuthenticationEventHandler; - - wengoPhone->start(); - - wengoPhone->join(); - - return EXIT_SUCCESS; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/AddIMAccountCommand.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/AddIMAccountCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/AddIMAccountCommand.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/AddIMAccountCommand.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,86 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef ADDIMACCOUNTCOMMAND_H -#define ADDIMACCOUNTCOMMAND_H - -#include "Command.h" - -#include - -#include - -using namespace std; - -class AddIMAccountCommand : public Command { -public: - - AddIMAccountCommand(WengoPhone & wengoPhone) - : Command(wengoPhone) {} - - virtual ~AddIMAccountCommand() {} - - void execute() { - unsigned protocol; - string login; - string password; - - cout << "Adding an IMAccount: " << endl; - cout << "Please enter the number of the desired protocol: " << endl; - cout << "\t1: msn" << endl; - cout << "\t2: yahoo!" << endl; - cout << "\t3: jabber" << endl; - cout << endl; - cin >> protocol; - cout << "Enter your login: "; - cin >> login; - cout << "Enter your password: "; - cin >> password; - - switch (protocol) { - case 1: - _wengoPhone.addIMAccount(IMAccount(login, password, - EnumIMProtocol::IMProtocolMSN)); - break; - case 2: - _wengoPhone.addIMAccount(IMAccount(login, password, - EnumIMProtocol::IMProtocolYahoo)); - break; - case 3: - _wengoPhone.addIMAccount(IMAccount(login, password, - EnumIMProtocol::IMProtocolJabber)); - break; - - default: - cout << "Unknown protocol" << endl; - } - } - - const string & name() const { - static string commandName = "addim"; - return commandName; - } - - const string & desc() const { - static string commandDesc = "Add an IMAccount"; - return commandDesc; - } -}; - -#endif /*ADDIMACCOUNTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/AddWengoAccountCommand.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/AddWengoAccountCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/AddWengoAccountCommand.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/AddWengoAccountCommand.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,67 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef ADDWENGOACCOUNTCOMMAND_H -#define ADDWENGOACCOUNTCOMMAND_H - -#include "Command.h" - -#include - -#include - -using namespace std; - -class AddWengoAccountCommand : public Command { -public: - - AddWengoAccountCommand(WengoPhone & wengoPhone) - : Command(wengoPhone) {} - - virtual ~AddWengoAccountCommand() {} - - void execute() { - string login; - string password; - - cout << "Adding a Wengo account: " << endl; - cout << "Please enter the Wengo login: "; - cin >> login; - cout << "Enter the Wengo password: "; - cin >> password; - - _wengoPhone.addSipAccount(login, password, true); - } - - /** - * @return the Command name. - */ - const string & name() const { - static string commandName = "addsip"; - return commandName; - } - - const string & desc() const { - static string commandDesc = "Add a Wengo account"; - return commandDesc; - } - -}; - -#endif /*ADDWENGOACCOUNTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/Command.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/Command.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/Command.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/Command.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,63 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef COMMAND_H -#define COMMAND_H - -#include - -class WengoPhone; - -class Command { -public: - - Command(WengoPhone & wengoPhone) - : _wengoPhone(wengoPhone) {} - - virtual ~Command() {} - - /** - * @return true if this Command class can handle the command. - */ - virtual bool canHandle(const std::string & command) const { - return (command == name()); - } - - /** - * Execute the command. - */ - virtual void execute() = 0; - - /** - * @return the Command name. - */ - virtual const std::string & name() const = 0; - - /** - * @return a description. - */ - virtual const std::string & desc() const = 0; - -protected: - - WengoPhone & _wengoPhone; - -}; - -#endif /*COMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/main.cpp qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/main.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,26 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoPhoneIMWrapperTest.h" - -int main(int argc, char **argv) { - WengoPhoneIMWrapperTest imWrapperTest; - - return imWrapperTest.run(); -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/QuitCommand.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/QuitCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/QuitCommand.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/QuitCommand.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,60 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef QUITCOMMAND_H -#define QUITCOMMAND_H - -#include "Command.h" - -#include - -#include - -using namespace std; - -class QuitCommand : public Command { -public: - - QuitCommand(WengoPhone & wengoPhone, WengoPhoneIMWrapperTest & wengoPhoneIMWrapperTest) - : Command(wengoPhone), _wengoPhoneIMWrapperTest(wengoPhoneIMWrapperTest) {} - - virtual ~QuitCommand() {} - - void execute() { - _wengoPhone.terminate(); - _wengoPhoneIMWrapperTest.quit(); - } - - const string & name() const { - static string commandName = "quit"; - return commandName; - } - - const string & desc() const { - static string commandDesc = "Quit the application"; - return commandDesc; - } - -private: - - WengoPhoneIMWrapperTest & _wengoPhoneIMWrapperTest; - -}; - -#endif /*QUITCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/TalkToIMContactCommand.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/TalkToIMContactCommand.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/TalkToIMContactCommand.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/TalkToIMContactCommand.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,160 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef TALKTOIMCONTACTCOMMAND_H -#define TALKTOIMCONTACTCOMMAND_H - -#include "Command.h" - -#include -#include -#include -#include -#include - -#include - -using namespace std; - -class TalkToIMContactCommand : public Command { -public: - - TalkToIMContactCommand(WengoPhone & wengoPhone) - : Command(wengoPhone) {} - - virtual ~TalkToIMContactCommand() {} - - void execute() { - IMAccountHandler & imAccountHandler = _wengoPhone.getIMAccountHandler(); - unsigned account, i; - IMAccountHandler::const_iterator it; - string contactId; - - cout << "Choose the IMAccount to use: " << endl; - for (it = imAccountHandler.begin(), i = 0 ; it != imAccountHandler.end() ; it++, i++) { - cout << i << " - " << (*it).getLogin() << endl; - } - cin >> account; - - if (account > imAccountHandler.size()) { - cout << "Wrong number" << endl; - return; - } - - it = imAccountHandler.begin(); - for (unsigned j = 0 ; j < account ; j++) { - it++; - } - - _imAccount = new IMAccount(*it); - - IMContactSet imContactSet; - string command; - char buffer[512]; - cout << "Add contacts to the chat. Type 'start' to start the chat: " << endl; - while (command != "start") { - - cout << "contact id: "; - cin.getline(buffer, sizeof(buffer)); - command = string(buffer); - - if (!command.empty() && command != "start") - { - imContactSet.insert(IMContact(*_imAccount, command)); - } - } - - _chatFinished = false; - _wengoPhone.getChatHandler().newIMChatSessionCreatedEvent += - boost::bind(&TalkToIMContactCommand::newIMChatSessionCreatedEventHandler, this, _1, _2); - _wengoPhone.getChatHandler().createSession(*_imAccount, imContactSet); - - while (!_chatFinished) { - Thread::msleep(100); - } - } - - const string & name() const { - static string commandName = "talk"; - return commandName; - } - - const string & desc() const { - static string commandDesc = "Talk to an IMContact"; - return commandDesc; - } - - void newIMChatSessionCreatedEventHandler(ChatHandler & chatHandler, IMChatSession & imChatSession) { - string contactId; - string command; - char buffer[512]; - - imChatSession.messageReceivedEvent += - boost::bind(&TalkToIMContactCommand::messageReceivedEventHandler, this, _1, _2, _3); - imChatSession.statusMessageReceivedEvent += - boost::bind(&TalkToIMContactCommand::statusMessageReceivedEventHandler, this, _1, _2, _3); - - cout << "Commands are: quit, add" << endl; - - //while (command != "quit") { - // cout << "> "; - // cin.getline(buffer, sizeof(buffer)); - // command = string(buffer); - - // if (command == "add") { - // cout << "Please enter the contact id to talk to: "; - // cin >> contactId; - // - // imChatSession.addIMContact(IMContact(*_imAccount, contactId)); - - // continue; - // } - - // if (command != "quit") { - // imChatSession.sendMessage(command); - // } - //} - //_chatFinished = true; - } - - void messageReceivedEventHandler(IMChatSession & sender, const IMContact & from, const std::string & message) { - cout << "Message received from " << from.getContactId() << ": " << message << endl; - } - - void statusMessageReceivedEventHandler(IMChatSession & sender, IMChat::StatusMessage status, const std::string & message) { - cout << "** Status message: " << (int)status << " " << message << endl; - } - - void contactAddedEventHandler(IMChatSession & sender, const IMContact & imContact) { - cout << "** Contact added to IMChatSession: " << imContact.getContactId() << endl; - } - - void contactRemovedEventHandler(IMChatSession & sender, const IMContact & imContact) { - cout << "** Contact removed from IMChatSession: " << imContact.getContactId() << endl; - } - -private: - - IMAccount * _imAccount; - - bool _chatFinished; - -}; - -#endif /*TALKTOIMCONTACTCOMMAND_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.cpp qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.cpp 1970-01-01 00:00:00.000000000 +0000 @@ -1,202 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#include "WengoPhoneIMWrapperTest.h" - -#include "AddWengoAccountCommand.h" -#include "AddIMAccountCommand.h" -#include "TalkToIMContactCommand.h" -#include "QuitCommand.h" - -#include -#include -#include -#include -#include -#include -#include - -#include - -#include -#include -using namespace std; - -WengoPhoneIMWrapperTest::WengoPhoneIMWrapperTest() { - _running = true; -} - -WengoPhoneIMWrapperTest::~WengoPhoneIMWrapperTest() { - for (CommandList::const_iterator it = _commands.begin() ; it != _commands.end() ; it++) { - delete (*it); - } -} - -void WengoPhoneIMWrapperTest::loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state) { - switch (state) { - case SipAccount::LoginStateConnected: - LOG_DEBUG(sender.getUsername() + " is connected"); - break; - case SipAccount::LoginStateDisconnected: - LOG_DEBUG(sender.getUsername() + " has been disconnected"); - break; - case SipAccount::LoginStateNetworkError: - LOG_DEBUG("a network error occured while attempting to connect " + sender.getUsername()); - break; - case SipAccount::LoginStatePasswordError: - LOG_DEBUG("wrong login/password for " + sender.getUsername()); - break; - case SipAccount::LoginStateReady: - LOG_DEBUG(sender.getUsername() + " is ready to connect"); - break; - default: - LOG_FATAL("this state is unknown"); - } -} - -void WengoPhoneIMWrapperTest::noAccountAvailableEventHandler(WengoPhone & sender) { -} - -void WengoPhoneIMWrapperTest::proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort) { - string url = proxyUrl; - int port = proxyPort; - string login; - string password; - string input; - - cout << "Proxy settings needed for " << proxyUrl << ":" << proxyPort << endl; - cout << "Is proxy URL and proxy port valid? (y, n)" << endl; - cin >> input; - if ((input == "n") || (input == "N")) { - cout << "Please enter proxy url: "; - cin >> url; - cout << "Please enter proxy port: "; - cin >> port; - } - cout << "Please enter proxy login: "; - cin >> login; - cout << "Please enter proxy password: "; - cin >> password; - - sender.setProxySettings(url, port, login, password); -} - -void WengoPhoneIMWrapperTest::wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, - const std::string & proxyLogin, const std::string proxyPassword) { - string url = proxyUrl; - int port = proxyPort; - string login; - string password; - string input; - - cout << "Wrong proxy login/password. Please enter again parameter for " << proxyUrl << ":" << proxyPort << endl; - cout << "Is proxy URL and proxy port valid? (y, n)" << endl; - cin >> input; - if ((input == "n") || (input == "N")) { - cout << "Please enter proxy url: "; - cin >> url; - cout << "Please enter proxy port: "; - cin >> port; - } - cout << "Please enter proxy login: "; - cin >> login; - cout << "Please enter proxy password: "; - cin >> password; - - sender.setProxySettings(url, port, login, password); -} - -void WengoPhoneIMWrapperTest::newIMAccountAddedEventHandler(WengoPhone & sender, IMAccount & imAccount) { - sender.getConnectHandler().connect(imAccount); -} - -void WengoPhoneIMWrapperTest::initWrappers() { - //IM implementation - IMWrapperFactory * imFactory = NULL; - - //SIP implementation - SipWrapperFactory * sipFactory = NULL; - - - PhApiFactory * phApiFactory = new PhApiFactory(); - sipFactory = phApiFactory; - //imFactory = phApiFactory; - imFactory = new GaimIMFactory(); - - SipWrapperFactory::setFactory(sipFactory); - IMWrapperFactory::setFactory(imFactory); -} - -void WengoPhoneIMWrapperTest::initCommands(WengoPhone & wengoPhone) { - _commands.push_back(new AddWengoAccountCommand(wengoPhone)); - _commands.push_back(new AddIMAccountCommand(wengoPhone)); - _commands.push_back(new TalkToIMContactCommand(wengoPhone)); - _commands.push_back(new QuitCommand(wengoPhone, *this)); -} - -int WengoPhoneIMWrapperTest::run() { - string command; - - initWrappers(); - - WengoPhone * wengoPhone = new WengoPhone(); - - initCommands(*wengoPhone); - - wengoPhone->loginStateChangedEvent += - boost::bind(&WengoPhoneIMWrapperTest::loginStateChangedEventHandler, this, _1, _2); - wengoPhone->noAccountAvailableEvent += - boost::bind(&WengoPhoneIMWrapperTest::noAccountAvailableEventHandler, this, _1); - wengoPhone->proxyNeedsAuthenticationEvent += - boost::bind(&WengoPhoneIMWrapperTest::proxyNeedsAuthenticationEventHandler, this, _1, _2, _3); - wengoPhone->wrongProxyAuthenticationEvent += - boost::bind(&WengoPhoneIMWrapperTest::wrongProxyAuthenticationEventHandler, this, _1, _2, _3, _4, _5); - wengoPhone->newIMAccountAddedEvent += - boost::bind(&WengoPhoneIMWrapperTest::newIMAccountAddedEventHandler, this, _1, _2); - - wengoPhone->start(); - - while (_running) { - displayMenu(); - cout << "Enter the desired command: "; - cin >> command; - - CommandList::const_iterator it = _commands.begin(); - - while ((it != _commands.end()) && !(*it)->canHandle(command)) { - it++; - } - - if (it != _commands.end()) { - (*it)->execute(); - } else { - cout << "Command not recognized" << endl; - } - } - - return EXIT_SUCCESS; -} - -void WengoPhoneIMWrapperTest::displayMenu() const { - cout << endl << endl << endl << endl << endl; - for (CommandList::const_iterator it = _commands.begin() ; it != _commands.end() ; it++) { - cout << "- " << (*it)->name() << ": " << (*it)->desc() << endl; - } - cout << endl; -} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.h qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.h --- qutecom-2.2~rc3.hg643~dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone/tests/wengophoneimwrapper-test/WengoPhoneIMWrapperTest.h 1970-01-01 00:00:00.000000000 +0000 @@ -1,74 +0,0 @@ -/* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo - * - * 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., 59 Temple Place, Suite 330, Boston, MA 02111-1307 USA - */ - -#ifndef WENGOPHONEIMWRAPPERTEST_H -#define WENGOPHONEIMWRAPPERTEST_H - -#include - -#include -#include - -class WengoPhone; -class Command; -class IMAccount; - -class WengoPhoneIMWrapperTest { -public: - - WengoPhoneIMWrapperTest(); - - ~WengoPhoneIMWrapperTest(); - - /** - * Entry point of this class. - */ - int run(); - - void quit() { - _running = false; - } - -private: - - void loginStateChangedEventHandler(SipAccount & sender, SipAccount::LoginState state); - - void noAccountAvailableEventHandler(WengoPhone & sender); - - void proxyNeedsAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort); - - void wrongProxyAuthenticationEventHandler(SipAccount & sender, const std::string & proxyUrl, unsigned proxyPort, - const std::string & proxyLogin, const std::string proxyPassword); - - void newIMAccountAddedEventHandler(WengoPhone & sender, IMAccount & imAccount); - - void initWrappers(); - - void initCommands(WengoPhone & wengoPhone); - - void displayMenu() const; - - bool _running; - - typedef std::vector< Command * > CommandList; - CommandList _commands; - -}; - -#endif /*WENGOPHONEIMWRAPPERTEST_H*/ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wengophone_lang.bat qutecom-2.2+dfsg1/wengophone_lang.bat --- qutecom-2.2~rc3.hg643~dfsg1/wengophone_lang.bat 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wengophone_lang.bat 1970-01-01 00:00:00.000000000 +0000 @@ -1,4 +0,0 @@ -qmake -project -o lang.pro -lupdate lang.pro -lrelease wengophone\src\presentation\qt\lang\qtwengophone_en.ts -lrelease wengophone\src\presentation\qt\lang\qtwengophone_fr.ts \ No newline at end of file diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/base64.c qutecom-2.2+dfsg1/wifo/eXosip/src/base64.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/base64.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/base64.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo SIP stack - * Copyright (C) 2007 Wengo + * Open QuteCom SIP stack + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/eXosip2.h qutecom-2.2+dfsg1/wifo/eXosip/src/eXosip2.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/eXosip2.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/eXosip2.h 2010-10-18 12:50:12.000000000 +0000 @@ -73,7 +73,7 @@ #endif -#define EXOSIP_VERSION "eXosip/0.1(wengophone)" +#define EXOSIP_VERSION "eXosip/0.1(qutecom)" #define DEFAULT_PTIME_VALUE "20" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/jresponse.c qutecom-2.2+dfsg1/wifo/eXosip/src/jresponse.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/jresponse.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/jresponse.c 2010-10-18 12:50:12.000000000 +0000 @@ -486,7 +486,7 @@ return -1; } -/* eeeeeeekkk! should be OUT of wengophone! */ +/* eeeeeeekkk! should be OUT of qutecom! */ /* if (300<=code<=399) */ /* { */ /* /\* Should add contact fields *\/ */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/ow_osip/ow_osip.c qutecom-2.2+dfsg1/wifo/eXosip/src/ow_osip/ow_osip.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/ow_osip/ow_osip.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/ow_osip/ow_osip.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/ow_osip/ow_osip.h qutecom-2.2+dfsg1/wifo/eXosip/src/ow_osip/ow_osip.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/ow_osip/ow_osip.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/ow_osip/ow_osip.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -21,7 +21,7 @@ * @file ow_osip.h * * This should help to get less differences between - * the Wengo version and the original one, in order to + * the QuteCom version and the original one, in order to * submit a patch to the project maintainer. */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/owsip_account.c qutecom-2.2+dfsg1/wifo/eXosip/src/owsip_account.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/src/owsip_account.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/src/owsip_account.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo SIP stack - * Copyright (C) 2007 Wengo + * Open QuteCom SIP stack + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/transport_manager/transport_manager.c qutecom-2.2+dfsg1/wifo/eXosip/transport_manager/transport_manager.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/transport_manager/transport_manager.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/transport_manager/transport_manager.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/transport_manager/transport_manager.h qutecom-2.2+dfsg1/wifo/eXosip/transport_manager/transport_manager.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/eXosip/transport_manager/transport_manager.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/eXosip/transport_manager/transport_manager.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/libosip2/src/osip2/ict_fsm.c qutecom-2.2+dfsg1/wifo/libosip2/src/osip2/ict_fsm.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/libosip2/src/osip2/ict_fsm.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/libosip2/src/osip2/ict_fsm.c 2010-10-18 12:50:12.000000000 +0000 @@ -291,7 +291,7 @@ osip_route_t *route; osip_route_t *orig_route; - // Wengo : use the record-routes contained in the latest response instead of the original ones + // QuteCom : use the record-routes contained in the latest response instead of the original ones while (!osip_list_eol (&ict->last_response->record_routes, pos)) { orig_route = diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/include/netlib.h qutecom-2.2+dfsg1/wifo/netlib/include/netlib.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/include/netlib.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/include/netlib.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/bugfix.h qutecom-2.2+dfsg1/wifo/netlib/src/bugfix.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/bugfix.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/bugfix.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib.cpp qutecom-2.2+dfsg1/wifo/netlib/src/netlib.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/netlib.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -415,21 +415,21 @@ } else { raddr.sin_addr.s_addr = inet_addr(itf); } - raddr.sin_port = htons((short)port); + raddr.sin_port = htons((unsigned short)port); raddr.sin_family = AF_INET; - if ((localsock = socket(PF_INET, SOCK_DGRAM, 0)) == -1) { - NETLIB_LOG_ERROR(make_error_string("is_local_udp_port_used : socket")); + if ((localsock = socket(PF_INET, SOCK_STREAM, 0)) == -1) { + NETLIB_LOG_ERROR(make_error_string("is_local_tcp_port_used : socket")); return NETLIB_TRUE; } if (allow_address_reuse(localsock) < 0) { - NETLIB_LOG_ERROR(make_error_string("is_local_udp_port_used : setsockopt")); + NETLIB_LOG_ERROR(make_error_string("is_local_tcp_port_used : setsockopt")); closesocket(localsock); return NETLIB_TRUE; } if (bind(localsock, (struct sockaddr *)&raddr, sizeof (raddr)) < 0) { - NETLIB_LOG_ERROR(make_error_string("is_local_udp_port_used : bind")); + NETLIB_LOG_ERROR(make_error_string("is_local_tcp_port_used : bind")); closesocket(localsock); return NETLIB_TRUE; } @@ -540,7 +540,7 @@ "Call-ID: %d\r\n" "Contact: \r\n" "CSeq: %d REGISTER\r\n" - "X-Wengo-Ping: network test\r\n" + "X-QuteCom-Ping: network test\r\n" "Content-Length: 0\r\n\r\n", sip_realm, /* request uri */ bound_ip, /* via ip */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib_util.cpp qutecom-2.2+dfsg1/wifo/netlib/src/netlib_util.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib_util.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/netlib_util.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib_util.h qutecom-2.2+dfsg1/wifo/netlib/src/netlib_util.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/netlib_util.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/netlib_util.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/strndup.c qutecom-2.2+dfsg1/wifo/netlib/src/strndup.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/strndup.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/strndup.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/strndup.h qutecom-2.2+dfsg1/wifo/netlib/src/strndup.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/src/strndup.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/src/strndup.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/tests/testnetlib.cpp qutecom-2.2+dfsg1/wifo/netlib/tests/testnetlib.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/netlib/tests/testnetlib.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/netlib/tests/testnetlib.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owcommon.h qutecom-2.2+dfsg1/wifo/owbase/include/owcommon.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owcommon.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/include/owcommon.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owlibc.h qutecom-2.2+dfsg1/wifo/owbase/include/owlibc.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owlibc.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/include/owlibc.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owlist.h qutecom-2.2+dfsg1/wifo/owbase/include/owlist.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owlist.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/include/owlist.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owqueue.h qutecom-2.2+dfsg1/wifo/owbase/include/owqueue.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/include/owqueue.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/include/owqueue.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/src/owlist.c qutecom-2.2+dfsg1/wifo/owbase/src/owlist.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/src/owlist.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/src/owlist.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/src/owqueue.c qutecom-2.2+dfsg1/wifo/owbase/src/owqueue.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owbase/src/owqueue.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owbase/src/owqueue.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/doc/how_to_implement.html qutecom-2.2+dfsg1/wifo/owsl/doc/how_to_implement.html --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/doc/how_to_implement.html 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/doc/how_to_implement.html 2010-10-18 12:50:12.000000000 +0000 @@ -24,7 +24,7 @@

API

-

OWSL has a BSD-like socket API.

+

OWSL has a BSD-like socket API.

The difference with the BSD socket is the management of socket type: many implementations can exist and owsl_socket_type has an API to register the prefered implementations. On socket creation OWSL choose an implementation among the registered ones which match with the type parameters.

OWSL extends the BSD socket API with features like callback, socket name...

The component owsl_address is a tool to manage addresses. With this component, an application can use IPv6 and IPv4 transparently.

diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/include/owsl_common.h qutecom-2.2+dfsg1/wifo/owsl/include/owsl_common.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/include/owsl_common.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/include/owsl_common.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/include/owsl.h qutecom-2.2+dfsg1/wifo/owsl/include/owsl.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/include/owsl.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/include/owsl.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_address.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_address.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_address.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_address.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_asynchronous.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_asynchronous.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_asynchronous.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_asynchronous.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_monitor.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_monitor.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_monitor.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_monitor.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_openssl.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_openssl.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_openssl.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_openssl.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_socket.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_socket.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_socket.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_socket.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_socket_type.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_socket_type.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_socket_type.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_socket_type.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_system_socket.c qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_system_socket.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/core/owsl_system_socket.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/core/owsl_system_socket.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/owsl_internal.h qutecom-2.2+dfsg1/wifo/owsl/src/owsl_internal.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/owsl_internal.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/owsl_internal.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_base.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_base.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_base.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_base.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_base.h qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_base.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_base.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_base.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_tcp.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_tcp.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_tcp.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_tcp.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_tls.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_tls.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_tls.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_tls.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_udp.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_udp.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_udp.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_udp.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.h qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uoh_common.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uohs.c qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uohs.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/owsl/src/protocols/owsl_uohs.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/owsl/src/protocols/owsl_uohs.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo Socket Library - * Copyright (C) 2007 Wengo + * Open QuteCom Socket Library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/CMakeLists.txt qutecom-2.2+dfsg1/wifo/phapi/CMakeLists.txt --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/CMakeLists.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/CMakeLists.txt 2010-10-18 12:50:12.000000000 +0000 @@ -78,16 +78,16 @@ ) endif (PHAPI_CODEC_ILBC_SUPPORT) -SET(WENGOPHONE_UA "qutecom/rev-${SVN_REVISION}-trunk") +SET(QUTECOM_UA "qutecom/rev-${SVN_REVISION}-trunk") CONFIGURE_FILE(${CMAKE_CURRENT_SOURCE_DIR}/config-phapi.h.in ${CMAKE_CURRENT_BINARY_DIR}/config-phapi.h) #if (MSVC) # ow_add_private_definitions( -# -DWENGOPHONE_UA="""qutecom/rev${SVN_REVISION}/trunk/""" +# -DQUTECOM_UA="""qutecom/rev${SVN_REVISION}/trunk/""" # ) #else (MSVC) # ow_add_private_definitions( -# -DWENGOPHONE_UA='"qutecom/rev${SVN_REVISION}/trunk/"' +# -DQUTECOM_UA='"qutecom/rev${SVN_REVISION}/trunk/"' # ) #endif (MSVC) @@ -99,8 +99,8 @@ # PH_FORCE_16KHZ : activate FORCED 16 KHZ SAMPLING # SUBVERSION_REVISION : grab the svn revision number -# WENGOPHONE_UA : set the wengophone user agent. It should -# be later changed to "Wengophone NG" +# QUTECOM_UA : set the qutecom user agent. It should +# be later changed to "QuteCom NG" ow_add_sources( aec2.cpp diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/config-phapi.h.in qutecom-2.2+dfsg1/wifo/phapi/config-phapi.h.in --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/config-phapi.h.in 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/config-phapi.h.in 2010-10-18 12:50:12.000000000 +0000 @@ -1 +1 @@ -#define WENGOPHONE_UA "@WENGOPHONE_UA@" +#define QUTECOM_UA "@QUTECOM_UA@" diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/docs/How_To_Use_RTCP_report.txt qutecom-2.2+dfsg1/wifo/phapi/docs/How_To_Use_RTCP_report.txt --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/docs/How_To_Use_RTCP_report.txt 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/docs/How_To_Use_RTCP_report.txt 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ If you find bug,feel free to mail to me. -@author: ThaiHuynh Nghia nghia.th@wengo.fr +@author: ThaiHuynh Nghia nghia.th@qutecom.fr Guide to using RTCP report: 1) You have to define RTCP and QOS_DEBUG_ENABLE before building the source code for ORTP lib, PHAPI lib and your GUI. @@ -45,4 +45,4 @@ From callback function callProgress,go to case phINCALL,then call sqlite_rtcp_prepare_db();phrtcp_report_begin() In the end, for outgoing and incoming call, you need go to case phCALLCLOSED in cb callProgress, then call phrtcp_report_end();sqlite_rtcp_close_db(); -5)After that you can go to your main folder where you put your project to see wengo.db ( i will change the name of db later ) \ No newline at end of file +5)After that you can go to your main folder where you put your project to see qutecom.db ( i will change the name of db later ) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/nortel.c qutecom-2.2+dfsg1/wifo/phapi/nortel.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/nortel.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/nortel.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/nortel.h qutecom-2.2+dfsg1/wifo/phapi/nortel.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/nortel.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/nortel.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter.c qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter.h qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter_internal.h qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter_internal.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_adapter_internal.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/owpl_adapter_internal.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2006 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_log.c qutecom-2.2+dfsg1/wifo/phapi/owpl_log.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_log.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/owpl_log.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_log.h qutecom-2.2+dfsg1/wifo/phapi/owpl_log.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/owpl_log.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/owpl_log.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi.c qutecom-2.2+dfsg1/wifo/phapi/phapi.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phapi.c 2010-10-18 12:50:12.000000000 +0000 @@ -235,9 +235,9 @@ owplInit ( const int asyncCallbackMode, - short udpPort, - short tcpPort, - short tlsPort, + unsigned short udpPort, + unsigned short tcpPort, + unsigned short tlsPort, const char* szBindToAddr, const int bUserSequentialPorts ) @@ -283,7 +283,7 @@ } { - const char * ua = WENGOPHONE_UA; + const char * ua = QUTECOM_UA; eXosip_set_user_agent(ua); } diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi.h qutecom-2.2+dfsg1/wifo/phapi/phapi.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phapi.h 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ /* -*- Mode: C; tab-width:8; c-basic-offset:2; -*-' * * PhApi, a voice over Internet library - * Copyright (C) 2006 Wengo + * Copyright (C) 2010 Mbdsys * * 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 @@ -277,9 +277,9 @@ */ MY_DLLEXPORT OWPL_RESULT owplInit( const int asyncCallbackMode, - short udpPort, - short tcpPort, - short tlsPort, + unsigned short udpPort, + unsigned short tcpPort, + unsigned short tlsPort, const char* szBindToAddr, const int bUserSequentialPorts); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi-old.c qutecom-2.2+dfsg1/wifo/phapi/phapi-old.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phapi-old.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phapi-old.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phapi phone api * -* Copyright (C) 2006 WENGO SAS +* Copyright (C) 2010 Mbdsys * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phaudiodriver.c qutecom-2.2+dfsg1/wifo/phapi/phaudiodriver.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phaudiodriver.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phaudiodriver.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* The phaudiodriver module implements abstract audio device interface for phapi Copyright (C) 2004 Vadim Lebedev - Copyright (C) 2006 Wengo SAS + Copyright (C) 2010 Mbdsys SAS this module is free software; you can redistribute it and/or modify it under the terms of the GNU General Public License as published by diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phaudiodriver.h qutecom-2.2+dfsg1/wifo/phapi/phaudiodriver.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phaudiodriver.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phaudiodriver.h 2010-10-18 12:50:12.000000000 +0000 @@ -43,7 +43,7 @@ * In the %recording %stream (mic => network) phapi is responsible for echo * cancellation. * - * @see http://dev.openwengo.com/trac/openwengo/trac.fcgi/wiki/PhApiAudio + * @see http://dev.openqutecom.com/trac/openqutecom/trac.fcgi/wiki/PhApiAudio * */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-avcodec-wrapper.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-avcodec-wrapper.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-avcodec-wrapper.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-avcodec-wrapper.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-avcodec-wrapper.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-avcodec-wrapper.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-avcodec-wrapper.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-avcodec-wrapper.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -19,7 +19,7 @@ /* * Support for H263 in phapi * - * @author David Ferlier + * @author David Ferlier * */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263flv1.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263flv1.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263flv1.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263flv1.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -19,7 +19,7 @@ /* * Support for H263 in phapi * - * @author David Ferlier + * @author David Ferlier * */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263flv1.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263flv1.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263flv1.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263flv1.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263plus.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263plus.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263plus.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263plus.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263plus.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263plus.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h263plus.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h263plus.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h264.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-h264.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h264.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h264.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h264.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-h264.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-h264.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-h264.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-mpeg4.c qutecom-2.2+dfsg1/wifo/phapi/phcodec-mpeg4.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-mpeg4.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-mpeg4.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,5 +1,5 @@ /* - * Copyright (C) 2005 Wengo SAS + * Copyright (C) 2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -19,7 +19,7 @@ /** * MPEG4 encoder for phapi * - * @author David Ferlier + * @author David Ferlier * */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-mpeg4.h qutecom-2.2+dfsg1/wifo/phapi/phcodec-mpeg4.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phcodec-mpeg4.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phcodec-mpeg4.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005 David Ferlier + * Copyright (C) 2005 David Ferlier * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phglobal.h qutecom-2.2+dfsg1/wifo/phapi/phglobal.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phglobal.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phglobal.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2006 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phlog.c qutecom-2.2+dfsg1/wifo/phapi/phlog.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phlog.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phlog.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ /* * phlog - logger for phapi * - * Copyright (C) 2006 Wengo SAS - * Author: Mathieu Stute + * Copyright (C) 2010 Mbdsys SAS + * Author: Mathieu Stute * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phlog.h qutecom-2.2+dfsg1/wifo/phapi/phlog.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phlog.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phlog.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ /* * phlog - logger for phapi * - * Copyright (C) 2006 Wengo SAS - * Author: Mathieu Stute + * Copyright (C) 2010 Mbdsys SAS + * Author: Mathieu Stute * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-alsa.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-alsa.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-alsa.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-alsa.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* -*- Mode: C; tab-width:8; c-basic-offset:8; -*- * * Copyright (C) 2004 Vadim Lebedev - * Copyright (C) 2006-2007 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -14,7 +14,7 @@ * GNU General Public License for more details. * * You should have received a copy of the GNU General Public - * License along with wengophone; if not, write to the Free Software + * License along with qutecom; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * * @@ -47,7 +47,7 @@ * The phmedia-alsa module implements interface to ALSA devices for phapi * * @see http://www.linuxjournal.com/article/6735 for an introduction to ALSA - * @see http://dev.openwengo.com/trac/openwengo/trac.fcgi/wiki/PhApiAudio [PHAPI] + * @see http://dev.openqutecom.com/trac/openqutecom/trac.fcgi/wiki/PhApiAudio [PHAPI] * @see http://www.alsa-project.org/ [ALSA] * * The data transferred to/from the ALSA driver is organized in three levels: @@ -76,7 +76,7 @@ * - The silence threshold and silence length: See ::SILENCE_THRESHOLD * * The fundamental requirement for the flow comes from the codecs, which emits - * and requires data at a specific rate. Wengophone's codecs has a sampling + * and requires data at a specific rate. QuteCom's codecs has a sampling * rate of 16 000 frames per second. This requirement is embodied in the * parameters chunk_size and sample_rate to the open() function. * @@ -115,7 +115,7 @@ #include "phlog.h" #include "owpl_log.h" -/** Preferred # channels (1-2). Wengophone always uses mono internally. */ +/** Preferred # channels (1-2). QuteCom always uses mono internally. */ const int DEFAULT_CHANNELS = 1; /** Size of hw buffer (periods). */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-arts.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-arts.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-arts.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-arts.c 2010-10-18 12:50:12.000000000 +0000 @@ -41,7 +41,7 @@ #include /* - * @author David Ferlier + * @author David Ferlier * * arts driver for phapi * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio.c 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005-2007 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify @@ -890,7 +890,7 @@ { mblk_t *mp; char level; - int pt_bck; // JULIEN WENGO + int pt_bck; // JULIEN QUTECOM /* calculate level in dBov */ level = find_level(stream->cngi.long_mean_pwr); @@ -901,13 +901,13 @@ } DBG_DYNA_AUDIO("PHMEDIA:send CNG %d\n", level); /* send CNG packet */ - // JULIEN WENGO - rtp_session_create_specific_payload_packet doesn't exist anymore + // JULIEN QUTECOM - rtp_session_create_specific_payload_packet doesn't exist anymore //mp = rtp_session_create_specific_payload_packet(stream->ms.rtp_session, RTP_FIXED_HEADER_SIZE, stream->cngi.cng_pt, &level, 1); pt_bck = stream->ms.rtp_session->snd.pt; stream->ms.rtp_session->snd.pt = stream->cngi.cng_pt; mp = rtp_session_create_packet(stream->ms.rtp_session, RTP_FIXED_HEADER_SIZE, &level, 1); stream->ms.rtp_session->snd.pt = pt_bck; - // JULIEN WENGO + // JULIEN QUTECOM if (mp != NULL) { @@ -1191,7 +1191,7 @@ if (codedlen) { //This is a HACK to accept g711 frames with variable sizes - //Done in order to accept audio flow from the Wengo flash + //Done in order to accept audio flow from the QuteCom flash //application * if (!strncmp(codec->mime, "PCMU", 4) || !strncmp(codec->mime, "PCMA", 4)) @@ -1685,7 +1685,7 @@ mblk_t *m; int msgsize; - /* JULIEN WENGO + /* JULIEN QUTECOM rtp_session_set_markbit(stream->ms.rtp_session, 1); rtp_session_send_with_ts(stream->ms.rtp_session, data_out_enc, enclen, stream->ms.txtstamp); rtp_session_set_markbit(stream->ms.rtp_session, 0); @@ -2656,14 +2656,14 @@ rtp_session_signal_disconnect_by_callback(stream->ms.rtp_session, "cng_packet", (RtpCallback)ph_on_cng_packet); - // WENGO + // QUTECOM //ortp_set_debug_file("oRTP", stdout); ortp_set_log_file(stdout); //ortp_global_stats_display(); //ortp_session_stats_display(stream->ms.rtp_session); rtp_stats_display(&stream->ms.rtp_session->rtp.stats, "Session statistics"); - // WENGO + // QUTECOM //ortp_set_debug_file("oRTP", NULL); ortp_set_log_file(NULL); { @@ -2682,7 +2682,7 @@ } } - // Wengo Julien - Add OWSL support + // QuteCom Julien - Add OWSL support if(stream->ms.rtp_session->rtp.tr) { ph_rtp_transport_data_t *user_data = stream->ms.rtp_session->rtp.tr->data; @@ -3069,7 +3069,7 @@ rtp_session_enable_adaptive_jitter_compensation(session, 1); rtp_session_set_jitter_compensation(session, sp->jitter); - // Julien Wengo - Set external transport functions to the ORTP session + // Julien QuteCom - Set external transport functions to the ORTP session //rtp_session_set_local_addr(session, "0.0.0.0", sp->localport); //rtp_session_set_remote_addr(session, sp->remoteaddr,sp->remoteport); { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-esd.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-esd.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-esd.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-esd.c 2010-10-18 12:50:12.000000000 +0000 @@ -38,7 +38,7 @@ #include /* - * @author David Ferlier + * @author David Ferlier * * esd driver for phapi * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-file.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-file.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-file.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-file.c 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ * The phmedia-audio-file module implements interface to a file audio driver * It is especially usefull to mimic phapi's networking behaviour on a machine that has no soundcard * - * Copyright (C) 2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-null.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-null.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-audio-null.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-audio-null.c 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ * The phmedia-audio-null module implements interface to a null audio driver * * Copyright (C) 2004 Vadim Lebedev - * Copyright (C) 2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia.c qutecom-2.2+dfsg1/wifo/phapi/phmedia.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005-2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * Copyright (C) 2004 Vadim Lebedev * Copyright (C) 2002,2003 Aymeric Moizard * diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-coreaudio.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-coreaudio.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-coreaudio.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-coreaudio.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,8 +1,8 @@ /* * The phmedia-coreaudio module implements interface to a coreaudio driver * - * Copyright (C) 2006 WENGO SAS - * @author Philippe Bernery + * Copyright (C) 2010 Mbdsys + * @author Philippe Bernery * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia.h qutecom-2.2+dfsg1/wifo/phapi/phmedia.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2005-2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-oss.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-oss.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-oss.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-oss.c 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ * The phmedia-oss module implements interface to OSS audio devices for phapi * * Copyright (C) 2004 Vadim Lebedev - * Copyright (C) 2004-2007 WENGO SAS + * Copyright (C) 2004-2007 QUTECOM SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-portaudio.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-portaudio.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-portaudio.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-portaudio.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * The phmedia-alsa module implements interface to ALSA audio devices for phapi * - * Copyright (C) 2005-2007 WENGO SAS + * Copyright (C) 2010 Mbdsys * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video-bwcontrol.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-video-bwcontrol.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video-bwcontrol.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-video-bwcontrol.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia video bandwidth control * - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -258,7 +258,7 @@ d_rate = bws2->rate; /* -// TODO: Wengo - use the new RTCP api +// TODO: QuteCom - use the new RTCP api pos = osip_list_size(&stream->rr_sent_q); rr = (rtcp_t *) osip_list_get(&stream->rr_sent_q, pos-1); diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-video.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-video.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer (video part) * - * Copyright (C) 2005-2006 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify @@ -20,8 +20,8 @@ */ /** - * @author Jerome Wagner - * @author David Ferlier + * @author Jerome Wagner + * @author David Ferlier */ #define _WIN32_WINNT 0x5000 @@ -503,7 +503,7 @@ video_session->rtp.max_rq_size = 4096; - // Julien Wengo - Set external transport functions to the ORTP session + // Julien QuteCom - Set external transport functions to the ORTP session //rtp_session_set_local_addr(session, "0.0.0.0", sp->localport); //rtp_session_set_remote_addr(session, sp->remoteaddr,sp->remoteport); { @@ -724,7 +724,7 @@ if (sp->videoconfig == PHAPI_VIDEO_LINE_AUTOMATIC) { -// TODO : WENGO - replace phapi RTCP +// TODO : QUTECOM - replace phapi RTCP /* /\* Place callbacks for RRs *\/ */ /* video_session->rtcp_rr_sent_cb = ph_video_rtcp_rr_sent; */ /* video_session->rtcp_rr_received_cb = ph_video_rtcp_rr_received; */ @@ -1124,13 +1124,13 @@ ph_media_video_free_processing_buffers(stream); - // WENGO + // QUTECOM ortp_set_log_file(stdout); //ortp_session_stats_display(stream->ms.rtp_session); rtp_stats_display(&stream->ms.rtp_session->rtp.stats, "Session statistics"); ortp_set_log_file(NULL); - // Wengo Julien - Add OWSL support + // QuteCom Julien - Add OWSL support if (stream->ms.rtp_session->rtp.tr) { ph_rtp_transport_data_t *user_data = stream->ms.rtp_session->rtp.tr->data; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video-control.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-video-control.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-video-control.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-video-control.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia video control * - * Copyright (C) 2005 Wengo SAS + * Copyright (C) 2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -17,7 +17,7 @@ * License along with dpkg; if not, write to the Free Software * Foundation, Inc., 675 Mass Ave, Cambridge, MA 02139, USA. * - * @author David Ferlier + * @author David Ferlier * */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-winmm.c qutecom-2.2+dfsg1/wifo/phapi/phmedia-winmm.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phmedia-winmm.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phmedia-winmm.c 2010-10-18 12:50:12.000000000 +0000 @@ -2,7 +2,7 @@ * The phmedia-winmm module implements interface to winmm audio devices for phapi * * Copyright (C) 2004 Vadim Lebedev - * Copyright (C) 2004-2006 WENGO SAS + * Copyright (C) 2004-2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phrecorder.c qutecom-2.2+dfsg1/wifo/phapi/phrecorder.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phrecorder.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phrecorder.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phmedia - Phone Api media streamer * - * Copyright (C) 2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phrecorder.h qutecom-2.2+dfsg1/wifo/phapi/phrecorder.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phrecorder.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phrecorder.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phrecorder - Phone Api media recorder * - * Copyright (C) 2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phresample.c qutecom-2.2+dfsg1/wifo/phapi/phresample.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phresample.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phresample.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phresample Audio data resampling * - * Copyright (C) 2006, 2007 WENGO SAS + * Copyright (C) 2010 Mbdsys * Copyright (C) 2004 Vadim Lebedev * * This is free software; you can redistribute it and/or modify diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phresample.h qutecom-2.2+dfsg1/wifo/phapi/phresample.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/phresample.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/phresample.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * phresample Audio data resampling * - * Copyright (C) 2006 WENGO SAS + * Copyright (C) 2010 Mbdsys * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/pyphapi.c qutecom-2.2+dfsg1/wifo/phapi/pyphapi.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/pyphapi.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/pyphapi.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,7 +1,7 @@ /* * C/Python wrapper for phapi * - * Copyright (C) 2005-2007 Wengo SAS + * Copyright (C) 2005-2010 Mbdsys SAS * * This is free software; you can redistribute it and/or modify * it under the terms of the GNU General Public License as @@ -19,8 +19,8 @@ */ /** - * @author David Ferlier - * @author Mathieu Stute + * @author David Ferlier + * @author Mathieu Stute */ /** diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/main.cpp qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/main.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/main.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/main.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -27,4 +27,4 @@ test->add(new PhApiLineTestSuite()); return test; -} \ No newline at end of file +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/PhApiLineTest.h qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/PhApiLineTest.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/PhApiLineTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/PhApiLineTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -47,4 +47,4 @@ } }; -#endif /* PHAPILINETEST_H */ \ No newline at end of file +#endif /* PHAPILINETEST_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/PhApiTest.h qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/PhApiTest.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/boost_unit_test/PhApiTest.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/boost_unit_test/PhApiTest.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -375,4 +375,4 @@ } }; -#endif /* PHAPITEST_H */ \ No newline at end of file +#endif /* PHAPITEST_H */ diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/client/PhApiTest.c qutecom-2.2+dfsg1/wifo/phapi/test/client/PhApiTest.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/client/PhApiTest.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/client/PhApiTest.c 2010-10-18 12:50:12.000000000 +0000 @@ -304,14 +304,14 @@ char * calleeURI [ACCOUNT_MAX] ; adapter [0] = NULL ; - domainName [0] = "voip.wengo.fr" ; + domainName [0] = "voip.qutecom.fr" ; proxyIp [0] = "213.91.9.206" ; transport [0] = OWPL_TRANSPORT_UDP ; userId [0] = "user" ; userPassword [0] = "sip_password" ; userDisplayName [0] = "name" ; userStatus [0] = "online" ; - calleeURI [0] = "sip:333@voip.wengo.fr" ; + calleeURI [0] = "sip:333@voip.qutecom.fr" ; for (account = 0 ; account < ACCOUNT_MAX ; account ++) { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/miniuadrvr.py qutecom-2.2+dfsg1/wifo/phapi/test/miniua/miniuadrvr.py --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/miniuadrvr.py 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/miniua/miniuadrvr.py 2010-10-18 12:50:12.000000000 +0000 @@ -469,10 +469,10 @@ id="wx_mbdsys_6" pw="mbdsys_6" m = Miniua() - m.auta(id, id, pw, "len1.host.wengo.fr") - vl = m.addVline(id, "len1.host.wengo.fr", "proxy1.host.wengo.fr", 3600) + m.auta(id, id, pw, "len1.host.qutecom.fr") + vl = m.addVline(id, "len1.host.qutecom.fr", "proxy1.host.qutecom.fr", 3600) print "VL=",vl - cid = m.placeCall(vl, "0686444487@len1.host.wengo.fr") + cid = m.placeCall(vl, "0686444487@len1.host.qutecom.fr") print "CID=", cid time.sleep(5) m.hangup(cid) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/miniuatests.py qutecom-2.2+dfsg1/wifo/phapi/test/miniua/miniuatests.py --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/miniuatests.py 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/miniua/miniuatests.py 2010-10-18 12:50:12.000000000 +0000 @@ -530,8 +530,8 @@ # ID1 = USERID1 = "wx_mbdsys_6" # PWD1 = "mbdsys_6" -# REGISTRAR1="len1.host.wengo.fr" -# PROXY1="proxy1.host.wengo.fr" +# REGISTRAR1="len1.host.qutecom.fr" +# PROXY1="proxy1.host.qutecom.fr" m.auta(USERNAME1, USERID1, PWD1, REALM1) diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/mltest.sh qutecom-2.2+dfsg1/wifo/phapi/test/miniua/mltest.sh --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/miniua/mltest.sh 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/miniua/mltest.sh 2010-10-18 12:50:12.000000000 +0000 @@ -1,13 +1,13 @@ USERNAME=wx_mbdsys_6 USERID=wx_mbdsys_6 -REALM=len1.host.wengo.fr -REGISTRAR=len1.host.wengo.fr -PROXY=proxy1.host.wengo.fr +REALM=len1.host.qutecom.fr +REGISTRAR=len1.host.qutecom.fr +PROXY=proxy1.host.qutecom.fr PASSWD=$1 MINIUA=test/bin/miniua LOCALUSER=vad HOST=192.168.10.13 -PHONE=0686444487@len1.host.wengo.fr +PHONE=0686444487@len1.host.qutecom.fr PCUSER=vad@192.168.10.23 $MINIUA -verbose < -e.g: phapi_register_test.py test@voip.wengo.fr myPassword +e.g: phapi_register_test.py test@voip.qutecom.fr myPassword """ OWPL_RESULT_SUCCESS = 0 @@ -38,7 +38,7 @@ """ @return the login and the sip server extracted from the fullId. - e.g: "test@voip.wengo.fr" will return "test", "voip.wengo.fr" + e.g: "test@voip.qutecom.fr" will return "test", "voip.qutecom.fr" """ split = fullId.split("@") return split[0], split[1] diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/vs2005_gui/PhAPITest.cpp qutecom-2.2+dfsg1/wifo/phapi/test/vs2005_gui/PhAPITest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/test/vs2005_gui/PhAPITest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/test/vs2005_gui/PhAPITest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -194,8 +194,8 @@ void RegisterNewLine() { int n = 200; - phAddAuthInfo("wx_wengo_9","wx_wengo_9", "testwengo", NULL, "voip.wengo.fr"); - owplLineAdd("wx_wengo_9","wx_wengo_9","voip.wengo.fr", "213.91.9.210", 3500, &gVline); + phAddAuthInfo("wx_qutecom_9","wx_qutecom_9", "testqutecom", NULL, "voip.qutecom.fr"); + owplLineAdd("wx_qutecom_9","wx_qutecom_9","voip.qutecom.fr", "213.91.9.210", 3500, &gVline); owplLineSetOpts(gVline, OWPL_LINE_OPT_REG_TIMEOUT, &n); owplLineRegister(gVline, 1); } @@ -277,7 +277,7 @@ } else if (VK_NUMPAD2== LOWORD(wParam)) { owplCallCreate(gVline, &gCall); - owplCallConnect(gCall,"sip:333@voip.wengo.fr", OWPL_STREAM_AUDIO ); + owplCallConnect(gCall,"sip:333@voip.qutecom.fr", OWPL_STREAM_AUDIO ); } else if (VK_NUMPAD3== LOWORD(wParam)) { owplCallDisconnect(gCall); @@ -286,7 +286,7 @@ owplPresencePublish(gVline, 1, "Some status message", 0); } else if (VK_NUMPAD5== LOWORD(wParam)) { - owplPresenceSubscribe(gVline, "sip:minhpq@voip.wengo.fr", 0, &i); + owplPresenceSubscribe(gVline, "sip:minhpq@voip.qutecom.fr", 0, &i); } else if (VK_NUMPAD8== LOWORD(wParam)) { int retVal = -1; diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/wlm.c qutecom-2.2+dfsg1/wifo/phapi/wlm.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/wlm.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/wlm.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * Open Wengo phone library - * Copyright (C) 2007 Wengo + * Open QuteCom phone library + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/wlm.h qutecom-2.2+dfsg1/wifo/phapi/wlm.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi/wlm.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi/wlm.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* * PhApi, a voice over Internet library - * Copyright (C) 2007 Wengo + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/comparator.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/comparator.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/comparator.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/comparator.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mappinglist.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mappinglist.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mappinglist.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mappinglist.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mystdio.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mystdio.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mystdio.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mystdio.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mystring.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mystring.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/mystring.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/mystring.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/phapiutildll.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/phapiutildll.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/phapiutildll.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/phapiutildll.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2007 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/util.h qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/util.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/include/phapi-util/util.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/include/phapi-util/util.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/comparator.c qutecom-2.2+dfsg1/wifo/phapi-util/src/comparator.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/comparator.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/src/comparator.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/mappinglist.c qutecom-2.2+dfsg1/wifo/phapi-util/src/mappinglist.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/mappinglist.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/src/mappinglist.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/util.c qutecom-2.2+dfsg1/wifo/phapi-util/src/util.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/phapi-util/src/util.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/phapi-util/src/util.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/sVoIP/include/svoip.h qutecom-2.2+dfsg1/wifo/sVoIP/include/svoip.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/sVoIP/include/svoip.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/sVoIP/include/svoip.h 2010-10-18 12:50:12.000000000 +0000 @@ -94,7 +94,7 @@ */ extern sVoIP_ErrorCode sVoIP_SIPHandleBYE(CID _cid, const char* _packetSIP, size_t _len); -/* ************************ Simple API for wengo ****************************** */ +/* ************************ Simple API for qutecom ****************************** */ /** * call it to modify INVITE sdp body diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/sVoIP/sVoIP/sVoIP.vcproj qutecom-2.2+dfsg1/wifo/sVoIP/sVoIP/sVoIP.vcproj --- qutecom-2.2~rc3.hg643~dfsg1/wifo/sVoIP/sVoIP/sVoIP.vcproj 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/sVoIP/sVoIP/sVoIP.vcproj 2010-10-18 12:50:12.000000000 +0000 @@ -18,9 +18,9 @@ ConfigurationType="0"> + BuildCommandLine="F:\qutecom\go.bat" + ReBuildCommandLine="F:\qutecom\rebuild.bat" + CleanCommandLine="F:\qutecom\clean.bat"/> + BuildCommandLine="F:\qutecom\realgo.bat" + ReBuildCommandLine="F:\qutecom\rebuild_release.bat" + CleanCommandLine="F:\qutecom\clean.bat"/> diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-commons.h qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-commons.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-commons.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-commons.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-parser.h qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-parser.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-parser.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-parser.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-plugin.h qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-plugin.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-plugin.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-plugin.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2005 Wengo +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-session.h qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-session.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-session.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-session.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2005 Wengo +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-transfer.h qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-transfer.h --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-transfer.h 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/include/sfp-plugin/sfp-transfer.h 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-parser.c qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-parser.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-parser.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-parser.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-plugin.c qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-plugin.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-plugin.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-plugin.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-transfer.c qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-transfer.c --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-transfer.c 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/src/sfp-transfer.c 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* -* WengoPhone, a voice over Internet phone -* Copyright (C) 2004-2005 Wengo +* QuteCom, a voice over Internet phone +* Copyright (C) 2010 Mbdsys * * 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 diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/test/vs2005_gui/SFPTest.cpp qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/test/vs2005_gui/SFPTest.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/sfp-plugin/test/vs2005_gui/SFPTest.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/sfp-plugin/test/vs2005_gui/SFPTest.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -180,15 +180,15 @@ } -void RegisterNewLine(int wx_wengo) +void RegisterNewLine(int wx_qutecom) { int n = 200; - if(wx_wengo == 1) { - phAddAuthInfo("sfp01","sfp01", "sfp01", NULL, "voip.wengo.fr"); - owplLineAdd("sfp01","sfp01","voip.wengo.fr", "80.118.132.87:5061", 3500, &gVline); - } else if(wx_wengo == 10) { - phAddAuthInfo("sfp10","sfp10", "sfp10", NULL, "voip.wengo.fr"); - owplLineAdd("sfp10","sfp10","voip.wengo.fr", "80.118.132.87:5061", 3500, &gVline); + if(wx_qutecom == 1) { + phAddAuthInfo("sfp01","sfp01", "sfp01", NULL, "voip.qutecom.fr"); + owplLineAdd("sfp01","sfp01","voip.qutecom.fr", "80.118.132.87:5061", 3500, &gVline); + } else if(wx_qutecom == 10) { + phAddAuthInfo("sfp10","sfp10", "sfp10", NULL, "voip.qutecom.fr"); + owplLineAdd("sfp10","sfp10","voip.qutecom.fr", "80.118.132.87:5061", 3500, &gVline); } owplLineSetOpts(gVline, OWPL_LINE_OPT_REG_TIMEOUT, &n); owplLineRegister(gVline, 1); @@ -441,7 +441,7 @@ } else if (VK_NUMPAD4== LOWORD(wParam)) { int retVal = -1; - int i = owplPluginCallFunction(&retVal, "SFPPlugin", "sfp_send_file", "%d%s%s%s%s%s", gVline, "sip:sfp10@voip.wengo.fr", "C:\\test01.txt", "test01.txt", "TXT", "26476544"); + int i = owplPluginCallFunction(&retVal, "SFPPlugin", "sfp_send_file", "%d%s%s%s%s%s", gVline, "sip:sfp10@voip.qutecom.fr", "C:\\test01.txt", "test01.txt", "TXT", "26476544"); gCall = retVal; } else if (VK_NUMPAD5== LOWORD(wParam)) { @@ -450,7 +450,7 @@ } else if (VK_NUMPAD6== LOWORD(wParam)) { int retVal = -1; - int i = owplPluginCallFunction(&retVal, "SFPPlugin", "sfp_send_file", "%d%s%s%s%s%s", gVline, "sip:sfp01@voip.wengo.fr", "C:\\test10.txt", "test10.txt", "TXT", "26476544"); + int i = owplPluginCallFunction(&retVal, "SFPPlugin", "sfp_send_file", "%d%s%s%s%s%s", gVline, "sip:sfp01@voip.qutecom.fr", "C:\\test10.txt", "test10.txt", "TXT", "26476544"); gCall = retVal; } else if (VK_NUMPAD7== LOWORD(wParam)) { diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/phCallbacks.cpp qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/phCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/phCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/phCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -1,6 +1,6 @@ /* - * WengoPhone, a voice over Internet phone - * Copyright (C) 2004-2005 Wengo + * QuteCom, a voice over Internet phone + * Copyright (C) 2010 Mbdsys * * 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 @@ -84,4 +84,4 @@ void onNotify(const char * event, const char * from, const char * content) { -} \ No newline at end of file +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/sfpCallbacks.cpp qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/sfpCallbacks.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/sfpCallbacks.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/sfpCallbacks.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -25,11 +25,11 @@ transferResumed }; -static void set_callid_for_wxwengouser(const char * username, int call_id){ +static void set_callid_for_wxqutecomuser(const char * username, int call_id){ users_to_callids[username[9]] = call_id; } -static void set_callid_from_wxwengouser_uri(const char * uri, int call_id){ +static void set_callid_from_wxqutecomuser_uri(const char * uri, int call_id){ users_to_callids[uri[14]] = call_id; } @@ -38,7 +38,7 @@ */ void inviteToTransfer(int cid, char * uri, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_from_wxwengouser_uri(uri, cid); + set_callid_from_wxqutecomuser_uri(uri, cid); printf(" * Inviting %s to get the file %s (TYPE, %s bytes)\n> ", uri, short_filename, file_size); } @@ -48,7 +48,7 @@ */ void newIncomingFile(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "accept", sizeof(step)); @@ -60,7 +60,7 @@ */ void waitingForAnswer(int cid, char * uri){ //g_callId = cid; - set_callid_from_wxwengouser_uri(uri, cid); + set_callid_from_wxqutecomuser_uri(uri, cid); printf(" * Waiting for %s to accept the file\n> ", uri); } @@ -81,7 +81,7 @@ */ void transferCancelledByPeer(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -93,7 +93,7 @@ */ void sendingFileBegin(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); printf(" * The file %s (TYPE, %s) is being sent to %s\n> ", short_filename, file_size, username); } @@ -103,7 +103,7 @@ */ void transferClosed(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -115,7 +115,7 @@ */ void transferClosedByPeer(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -127,7 +127,7 @@ */ void transferFromPeerFinished(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -139,7 +139,7 @@ */ void transferToPeerFinished(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -150,7 +150,7 @@ */ void transferFromPeerFailed(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -161,7 +161,7 @@ */ void transferToPeerFailed(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -173,7 +173,7 @@ */ void transferFromPeerStopped(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -185,7 +185,7 @@ */ void transferToPeerStopped(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); strncpy(step, "send", sizeof(step)); @@ -204,7 +204,7 @@ void transferPausedByPeer(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); printf(" * The user %s paused the transfer of the file %s (TYPE, %s)\n> ", username, short_filename, file_size); } @@ -212,7 +212,7 @@ void transferPaused(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); printf(" * You paused the transfer of the file %s (TYPE, %s) to/from %s\n> ", short_filename, file_size, username); } @@ -220,7 +220,7 @@ void transferResumedByPeer(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); printf(" * The user %s resumed the transfer of the file %s (TYPE, %s)\n> ", username, short_filename, file_size); } @@ -228,7 +228,7 @@ void transferResumed(int cid, char * username, char * short_filename, char * file_type, char * file_size){ //g_callId = cid; - set_callid_for_wxwengouser(username, cid); + set_callid_for_wxqutecomuser(username, cid); printf(" * You resumed the transfer of the file %s (TYPE, %s) to/from %s\n> ", short_filename, file_size, username); -} \ No newline at end of file +} diff -Nru qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/WifoPluginsConsole.cpp qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/WifoPluginsConsole.cpp --- qutecom-2.2~rc3.hg643~dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/WifoPluginsConsole.cpp 2010-08-31 09:07:50.000000000 +0000 +++ qutecom-2.2+dfsg1/wifo/wifo-plugins/test/WifoPluginsConsole/WifoPluginsConsole.cpp 2010-10-18 12:50:12.000000000 +0000 @@ -36,12 +36,12 @@ int vlid = -1; int g_callId = -1; char SipDomain[200] = ""; -int wx_wengo = 1; +int wx_qutecom = 1; char step[16]; int users_to_callids[9] = {-1,-1,-1,-1,-1,-1,-1,-1,-1}; // ---------- -static int get_callid_from_wxwengo_user(const char * username){ +static int get_callid_from_wxqutecom_user(const char * username){ return users_to_callids[username[9]]; } @@ -105,21 +105,21 @@ phTerminate(); strncpy(_proxy, "192.168.4.58:4060", sizeof(_proxy)); - snprintf(_display_name, sizeof(_display_name), "%s%d", "wx_wengo_", wx_wengo); - //if(wx_wengo == 1) strncpy(_display_name, "wx_wengo_1", sizeof(_display_name)); - //if(wx_wengo == 2) strncpy(_display_name, "wx_wengo_2", sizeof(_display_name)); - strncpy( _passwd, "testwengo", sizeof(_passwd)); - strncpy( _domain, "voip.wengo.fr", sizeof(_domain)); - snprintf(_username, sizeof(_username), "%s%d", "wx_wengo_", wx_wengo); - //if(wx_wengo == 1) strncpy(_username, "wx_wengo_1", sizeof(_username)); - //if(wx_wengo == 2) strncpy(_username, "wx_wengo_2", sizeof(_username)); - strncpy(_server, "voip.wengo.fr", sizeof(_server)); + snprintf(_display_name, sizeof(_display_name), "%s%d", "wx_qutecom_", wx_qutecom); + //if(wx_qutecom == 1) strncpy(_display_name, "wx_qutecom_1", sizeof(_display_name)); + //if(wx_qutecom == 2) strncpy(_display_name, "wx_qutecom_2", sizeof(_display_name)); + strncpy( _passwd, "testqutecom", sizeof(_passwd)); + strncpy( _domain, "voip.qutecom.fr", sizeof(_domain)); + snprintf(_username, sizeof(_username), "%s%d", "wx_qutecom_", wx_qutecom); + //if(wx_qutecom == 1) strncpy(_username, "wx_qutecom_1", sizeof(_username)); + //if(wx_qutecom == 2) strncpy(_username, "wx_qutecom_2", sizeof(_username)); + strncpy(_server, "voip.qutecom.fr", sizeof(_server)); memset(&phcfg, 0, sizeof(phcfg)); strcpy(phcfg.local_rtp_port, "10601"); - snprintf(phcfg.sipport, sizeof(phcfg.sipport), "%s%d", "506", wx_wengo); - //if(wx_wengo == 1) strcpy(phcfg.sipport, "5061"); - //if(wx_wengo == 2) strcpy(phcfg.sipport, "5062"); + snprintf(phcfg.sipport, sizeof(phcfg.sipport), "%s%d", "506", wx_qutecom); + //if(wx_qutecom == 1) strcpy(phcfg.sipport, "5061"); + //if(wx_qutecom == 2) strcpy(phcfg.sipport, "5062"); strcpy(phcfg.nattype, "none"); strcpy(phcfg.audio_dev,"IN=0 OUT=0"); phcfg.asyncmode = 0; @@ -172,8 +172,8 @@ return FALSE; } - //if(wx_wengo == 2) strncpy(_dest, "wx_wengo_1", sizeof(_dest)); - //if(wx_wengo == 1) strncpy(_dest, "wx_wengo_2", sizeof(_dest)); + //if(wx_qutecom == 2) strncpy(_dest, "wx_qutecom_1", sizeof(_dest)); + //if(wx_qutecom == 1) strncpy(_dest, "wx_qutecom_2", sizeof(_dest)); if (!strstr(_dest, "@") && !strstr("sip:", _dest)) { sprintf(tmp, "sip:%s@%s", _dest, SipDomain); @@ -199,7 +199,7 @@ return FALSE; } - if((call_id = get_callid_from_wxwengo_user(user)) > 0){ + if((call_id = get_callid_from_wxqutecom_user(user)) > 0){ sfp_receive_file(call_id, argument); //strncpy(step, "cancel", sizeof(step)); @@ -212,7 +212,7 @@ return FALSE; } - if((call_id = get_callid_from_wxwengo_user(argument)) > 0){ + if((call_id = get_callid_from_wxqutecom_user(argument)) > 0){ sfp_cancel_transfer(call_id); } @@ -225,7 +225,7 @@ return FALSE; } - if((call_id = get_callid_from_wxwengo_user(argument)) > 0){ + if((call_id = get_callid_from_wxqutecom_user(argument)) > 0){ sfp_pause_transfer(call_id); } }else if(strequals(command, "resume")){ @@ -235,7 +235,7 @@ return FALSE; } - if((call_id = get_callid_from_wxwengo_user(argument)) > 0){ + if((call_id = get_callid_from_wxqutecom_user(argument)) > 0){ sfp_resume_transfer(call_id); } }else{ @@ -279,10 +279,10 @@ } strncpy(step, "start", sizeof(step)); - wx_wengo = atoi(argv[1]); + wx_qutecom = atoi(argv[1]); - printf("Using wx_wengo_%d\n\n", wx_wengo); + printf("Using wx_qutecom_%d\n\n", wx_qutecom); // register or quit while(strequals(step, "start")){